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