| 
初级会员 主题
回帖0
积分50
阅读权限10
注册时间2014-10-5
最后登录1970-1-1
在线时间 小时
 
 | 
 
| &#include <reg52.h> sbit RS = P2^0;   //H=data数据 L="command命令";
 sbit RW = P2^1;   //H=read读; L="write写";
 sbit E= P2^2;   //input enable输入允许使能;
 sbit PSB= P2^3;   //H=并口; L="串口";
 sbit RST= P2^4;   //Reset Signal复位信号-低电平有效
 sbit busy=P0^7;   //lcd busy bit
 #define uChar8 unsigned char
 #define uint16 unsigned int
 uChar8 code TAB1[]="hello   "
 uChar8 code TAB2[]="hello   "
 uChar8 code TAB3[]="hello   "
 uChar8 code TAB4[]="hello   "
 void DelayMS (uint16)
 {
 uint16 t,j;
 for(t=0;t<250;t++)
 for(j=0;j<250;j++)
 ;
 }
 void DectBusyBit(void)//判忙
 {
 P0=0xff;
 RS=0;
 RW=1;
 E =1;
 while(P0 & 0X80); //如果液晶是忙的 让程序停到这里
 DelayMS(5);
 E =0;
 }
 void LCD_WrCom(uChar8 com)
 {
 DectBusyBit();
 RS=0;
 RW=0;
 E=1;
 P0=com;
 DelayMS(1);
 E=0;
 }
 void LCD_WrDat(uChar8 dat)
 {
 DectBusyBit();
 RS=1;
 RW=0;
 E=1;
 P0=dat;
 DelayMS(1);
 E=0;
 }
 void LCD_Init(void)
 {
 LCD_WrCom(0x30);//8位数据 基本指令
 DelayMS(5);
 LCD_WrCom(0x0c);//开显示,光标不显示也不反白
 DelayMS(5);
 LCD_WrCom(0x01);//清屏
 }
 void LCD_WrAddr(uChar8 x,uChar8 y)
 {
 uChar8 uX.uXY;
 if(1==x)
 {
 uX=0x80;
 }
 else if(2==x)
 {
 uX=0x90;
 }
 else if(3==x)
 {
 uX=0x88;
 }
 else if(4==x)
 {
 uX=0x98;
 }
 uXY = uX+y;
 LCD_WrCom(uXY);
 }
 void main (void)
 {
 uChar8 i =0;
 DelayMS(5);
 LCD_Init(); //初始化
 DelayMS(5);
 while(1)
 {
 LCD_WrAddr(1,1);//第一行第一列
 i=0;
 while(TAB1[i] != '\0')
 {
 LCD_WrDat(TAB1[i]);
 i++;
 DelayMS(5);
 }
 LCD_WrAddr(2,1);//第二行第一列
 i=0;
 while(TAB2[i] != '\0')
 {
 LCD_WrDat(TAB2[i]);
 i++;
 DelayMS(5);
 }
 LCD_WrAddr(3,1);//第三行第一列
 i=0;
 while(TAB3[i] != '\0')
 {
 LCD_WrDat(TAB3[i]);
 i++;
 DelayMS(5);
 }
 LCD_WrAddr(4,1);//第四行第一列
 i=0;
 while(TAB4[i] != '\0')
 {
 LCD_WrDat(TAB4[i]);
 i++;
 DelayMS(5);
 }
 while(1);
 }
 }
 
 
 | 
 |