#include sbit LCD_RS=P1^0;//定義接腳 sbit LCD_RW=P1^1; sbit LCD_E=P1^2; #define LCD_Data P2 void WriteDataLCD(char WDLCD); void WriteCommandLCD(char WCLCD); void LCDInit(void); void ChangeCursor(char X,char Y); void DisplayListChar(char code *DData); void delay_us(unsigned int t); char code Str1[] = "Hello!!!"; //欲顯示於LCD之字串 char code Str2[] = "How are you."; //主程式開始 void main(void) { LCDInit(); //LCM初始化 DisplayListChar(Str1); WriteCommandLCD(0x80+0x40); //控制游標移到第二行開頭,0x80是游標位址控制命令, 0x40為第二行開頭位址 DisplayListChar(Str2); while(1); } void delay_us(unsigned int t) { while(t--); } //寫資料到LCD副程式 void WriteDataLCD(char WDLCD) { LCD_Data = WDLCD; LCD_RS = 1; LCD_RW = 0; LCD_E = 1; //產生負緣 delay_us(100); //延遲等訊號穩定 LCD_E = 0; delay_us(100); //延遲等訊號處裡完畢 } //寫指令到LCD副程式 void WriteCommandLCD(char WCLCD) //BuysC為0時忽略忙檢測 { LCD_Data = WCLCD; LCD_RS = 0; LCD_RW = 0; LCD_E = 1; delay_us(100); //延遲等訊號穩定 LCD_E = 0; delay_us(100); //延遲等訊號處裡完畢 } void LCDInit(void) //LCM初始化 { WriteCommandLCD(0x38); // 設定LCD介面8位元,2行,5*7字型 WriteCommandLCD(0x06); // 設定寫資料至LCD時,顯示不要動,游標向右移動 WriteCommandLCD(0x0F); // 設定螢幕顯示及游標閃爍 WriteCommandLCD(0x01); // 清除顯示器 delay_us(5000); } //顯示一串字串 void DisplayListChar(char code *DData) { char x; x=0; while (DData[x]!=0) //若到達字串尾則退出 { WriteDataLCD(DData[x]); //顯示單個字 x++; //指到下一個字 } }