- #include"reg51.h"//51單片機頭文件
- /*相關引腳的定義*///該部分可以自己去定義,我是學習51單片機時選擇普中單片機開發板。
- sbit rs=P2^6; //命令/數據選擇
- sbit rw=P2^5; //讀寫口
- sbit e=P2^7; //鎖存控制
- sbit tou=P2^4;
- /*函數聲明*/
- void LCD1602_SetArea(unsigned char X,unsigned char Y);
- void LCD1602_ShowChar(unsigned char X,unsigned char Y,unsigned char Char);
- void LCD1602_ShowString(unsigned char X,unsigned char Y,unsigned char *String);
- //void LCD1602_ShowArray(unsigned char X,unsigned char Y,unsigned char *Array,unsigned char Count);
- //void LCD1602_ShowNumber_Integer(unsigned char X,unsigned char Y,int IntegerNumber,unsigned char Count);
- void InitLCD();
- /*延遲函數的定義*/
- void DELAY_nUS(unsigned int Time)
- {
- while(--Time);
- }
- void DELAY_nMS(unsigned int time)
- {
- unsigned int i,j;
- for(i=0;i<time;i++)
- for(j=0;j<939;j++);
- }
- //向LCD寫一命令
- void wcode(unsigned char t)
- {
- rs=0; // 寫的是命令
- rw=0; // 寫狀態
- e=1; //使能
- P0=t; //寫入命令
- DELAY_nMS(2); //等待寫入,如果時間太短,會導致液晶無法顯示
- e=0; //數據的鎖定
- }
- //向LCD寫一數據
- void wdata(unsigned char t)
- {
- rs=1; // 寫的是數據
- rw=0; // 寫狀態
- e=1; //使能
- P0=t; //寫入數據
- DELAY_nMS(2); //等待寫入,如果時間太短,會導致液晶無法顯示
- e=0; //數據的鎖定
- }
- //LCD設置坐標位置
- void LCD1602_SetArea(unsigned char X,unsigned char Y)
- {
- switch(Y)
- {
- case 0: wcode(0x80 + X); break;
- case 1: wcode(0xC0 + X); break;
- default:break;
- }
- }
- //LCD顯示字符
- void LCD1602_ShowChar(unsigned char X,unsigned char Y,unsigned char Char)
- {
- LCD1602_SetArea(X,Y); // 設置顯示坐標
- wdata(Char); // 顯示指定字符
- }
- //LCD顯示字符串
- void LCD1602_ShowString(unsigned char X,unsigned char Y,unsigned char *String)
- {
- LCD1602_SetArea(X,Y); // 設置顯示坐標
- while(*String)
- {
- wdata(*String);
- String++;
- }
- }
- //LCD初始化
- void InitLCD()
- {
- wcode(0x01); //清屏
- wcode(0x06); //輸入方式控制,增量光標不移位
- wcode(0x0e); //顯示開關控制
- wcode(0x38); //功能設定:設置16x2顯示,5x7顯示,8位數據接口
- }
- /*******************************************************************************
- * 函 數 名 : main()
- * 函數功能 :主函數
- * 輸 入 : 無
- * 輸 出 : 無
- *******************************************************************************/
- void main()
- {
- InitLCD();
- LCD1602_ShowString(0,0,"hello world");
- while(tou);
- wcode(0x01); //清屏
- }
復制代碼
我這有個lcd1602的代碼,你可以參考參考,還有你那個寫入數據和使能太快了,可能會出錯 |