51單片機 1602液晶顯示靜態(tài)字符
#include
#defineLCD1602_DBP0
typedefunsignedcharuchar;
typedefunsignedintuint;
typedefunsignedlongulong;
sbitLCD1602_RS=P1^0;
sbitLCD1602_RW=P1^1;
sbitLCD1602_E=P1^5;
voidinitLCD1602();
voidLCDShowStr(uchari,ucharj,uchar*pCh);
voidLCDWaitRdy();
voidLCDWrCmd(ucharcmd);
voidLCDWrData(uchardat);
voidLCDSetCursor(uchari,ucharj);
voidmain(){
initLCD1602();
LCDShowStr(0,1,"Helloworld!");
LCDShowStr(1,1,"ChasingWaves");
while(1);
}
voidLCDWaitRdy(){
ucharstate;
LCD1602_DB=0xFF;//使數(shù)據(jù)總線處于高電平
LCD1602_RS=0;//選擇命令模式
LCD1602_RW=1;//選擇讀
do{
LCD1602_E=1;//開啟液晶讀寫使能
state=LCD1602_DB;//從數(shù)據(jù)總線上讀取狀態(tài)字
LCD1602_E=0;//關(guān)閉液晶讀寫使能
}while(state&0x80);//重復(fù)直到bit7==0為止(不忙了)
}
voidLCDWrCmd(ucharcmd){
LCDWaitRdy();
LCD1602_RS=0;
LCD1602_RW=0;
LCD1602_DB=cmd;
LCD1602_E=1;
LCD1602_E=0;
}
voidLCDWrData(uchardat){
LCDWaitRdy();
LCD1602_RS=1;
LCD1602_RW=0;
LCD1602_DB=dat;
LCD1602_E=1;
LCD1602_E=0;
}
voidLCDSetCursor(uchari,ucharj){
ucharaddr=(i==0?j:0x40+j);
LCDWrCmd(addr|0x80);
}
voidLCDShowStr(uchari,ucharj,uchar*pch){
LCDSetCursor(i,j);
while(*pch!='