技术资料

1602程序

时间:2018-09-11 来源:admin浏览次数:95

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
 
sbit RS = P3^0;
sbit RW = P3^7;
sbit E = P3^4;
sbit BF = P1^7;
 
code uchar BUFFER1[16]={"Hello Every One!"}; 
code uchar BUFFER2[16]={"Temperature:00.0"};
 
 
delay(uchar t)
{
  uchar n;
 while(t--)
 {
   for(n=0;n<124;n++);
 }
}
 
/*===RS=0,RW=0,E=1,使模块工作并准备接收控制指令(复位)===*/
ENABLE_1602()
{
  RS=0;
 RW=0;
 E=0;
 WAIT();
 E=1;
}
 
 
/*====读BF的值,必须判断模块是否“忙”(BF=1)
//----如果"不忙”(BF=0)才可以进行各种操作====*/
WAET()
{
  do
 {
  P0=0xff;
  RS=0;
  RW=1;
  E=0;
 WAIT();
  WAIT();
   WAIT();
  E=1;
 }while(BF==1); 
}
 
 
INT_1602()
{
  ENABLE_1602();
 P0=0x01;  //清屏
 ENABLE_1602();
 P0=0x38;  //工作方式设置
 ENABLE_1602();
 P0=0x0e;  //显示状态设置
 ENABLE_1602();
 P0=0x06;  //输入方式设置
 ENABLE_1602();
 P0=0x0f;  //开显示,关光标设置
}
 
/*====RS=1,RW=0,E=1,写显示数据到模块指令===*/
WRITER()
{
  RS=1;
 RW=0;
 E=0;
 WAIT();
 E=1;
}
 
 
main()
{
  uchar i,j;
 INT_1602();
 P0=0x80;  //1000 0000 ,设定DPTRAM地址为00H,实际是设定从显示屏的第一位开始显示
 ENABLE_1602();
 for(i=0;i<15;i++)
 {
   P0=BUFFER1[i];
  WRITER();
  delay(200);
 }
 
 P0=0xc0;  //1100 0000 ,设定设定DPTRAM地址为40H,实际是设定从显示屏的第17位开始显示
 ENABLE_1602();
 for(j=0;j<15;j++)
 {
   P0=BUFFER2[j];
  WRITER();
  delay(200);
 }
 
 ENABLE_1602();
 P0=0x01;  //清屏
 delay(200); 
}
 
本文标签: