同樣我們創(chuàng)建好“l(fā)cd.c”和“l(fā)cd.h”,然后添加進工程文件中。“l(fā)cd.c”的代碼集合了所有宋老師為我們寫好的各種常用函數(shù)。
1.lcd.c的代碼
#include #include /* 等待液晶準備好 */ void LcdWaitReady() { unsigned char sta; LCD1602_DB = 0xFF; LCD1602_RS = 0; LCD1602_RW = 1; do { LCD1602_E = 1; sta = LCD1602_DB;//讀取狀態(tài)字 LCD1602_E = 0; } while (sta & 0x80); //bit7等于1表示液晶正忙,重復檢測直到其等于0為止 } /* 向LCD1602液晶寫入一字節(jié)命令,cmd-待寫入命令值 */ void LcdWriteCmd(unsigned char cmd) { LcdWaitReady(); LCD1602_RS = 0; LCD1602_RW = 0; LCD1602_DB = cmd; LCD1602_E = 1; LCD1602_E = 0; } /* 向LCD1602液晶寫入一字節(jié)數(shù)據(jù),dat-待寫入數(shù)據(jù)值 */ void LcdWriteDat(unsigned char dat) { LcdWaitReady(); LCD1602_RS = 1; LCD1602_RW = 0; LCD1602_DB = dat; LCD1602_E = 1; LCD1602_E = 0; } /* 設置顯示RAM起始地址,亦即光標位置,(x,y)-對應屏幕上的字符坐標 */ void LcdSetCursor(unsigned char x, unsigned char y) { unsigned char addr; if (y == 0) //由輸入的屏幕坐標計算顯示RAM的地址 addr = 0x00 + x; //第一行字符地址從0x00起始 else addr = 0x40 + x; //第二行字符地址從0x40起始 LcdWriteCmd(addr | 0x80);//設置RAM地址 } /* 在液晶上顯示字符串,(x,y)-對應屏幕上的起始坐標,str-字符串指針 */ void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str) { LcdSetCursor(x, y); //設置起始地址 while (*str != '