完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
`//已用端口:P2.5,P2.6,P2.7,P3.2,P3.4,P0 #include #include /**********LCD_12864***************************/ #define uchar unsigned char #define unint unsigned int #define LCD_DATA P0 ***it LCD_RS=P2^6; ***it LCD_RW=P2^5; ***it LCD_EN=P2^7; ***it LCD_PSB=P3^2; ***it LCD_RES=P3^4; /***********延时xms************* void delay_xms(uint a) { uint i,j; for(i=a;i>0;i--) for(j=110;j>0;j--); } ******************************/ //******************************* /**************延时1ms***********/ void delay1ms() { unsigned char i,j; for(i=0;i<4;i++) for(j=0;j<33;j++);//(3j+2)*i=(3×33+2)×10=1010(微秒),可以认为是1毫秒 } /***********延时xms**************************/ void delay_xms(uchar n) { unsigned char i; for(i=0;i } /***************************************************** /*********判忙*****************/ bit check_busy() { bit busy; LCD_RS=0; LCD_RW=1; LCD_EN=1; delay_xms(2); busy=(bit)(LCD_DATA&0X80); LCD_EN=0; return busy; } //等待LCD空闲 void wait() { while(check_busy()); } //****************************** /*************写指令************/ void write_cmd(uchar cmd) { wait(); LCD_RS=0; LCD_RW=0; LCD_EN=0; delay_xms(2); LCD_DATA=cmd; LCD_EN=1; delay_xms(2); LCD_EN=0; } //******************************* /*************写数据***************/ void write_data(uchar dat) { wait(); LCD_RS=1; LCD_RW=0; LCD_EN=0; delay_xms(5); LCD_EN=1; LCD_DATA=dat; delay_xms(10); LCD_EN=0; } //************************************* /***********LCD_12864初始化*************/ void initial_12864() { delay_xms(40); LCD_PSB=1; delay_xms(1); LCD_RES=0; delay_xms(1); LCD_RES=(1); write_cmd(0x30);//基本指令 delay_xms(10); write_cmd(0x0c);//开显示,关光标 delay_xms(10); write_cmd(0x01);//清屏 delay_xms(10); } //************************************** /***********字符串写入地址**************/ void LCD_POS(uchar X, uchar Y) { uchar pos; if(X==0) {X=0x80;} if(X==1) {X=0x90;} if(X==2) {X=0x88;} if(X==3) {X=0x98;} pos=X+Y; write_cmd(pos); } //***************************************** /***************字符串写入显示**************/ unsigned char LCD_DISPLAY(uchar x, uchar y, uchar *DATA) { int i=0; LCD_POS(x,y); while(DATA!=' |