本帖最后由 人人學(xué)會單片機 于 2020-12-30 11:29 編輯
- #include "all.h"
- u8 xdata LCD1602_Write_Buffer1[16];
- u8 xdata LCD1602_Write_Buffer2[16];
- u8 code LCD1602_5x8[8]={0x08,0x00,0x07,0x08,0x08,0x08,0x08,0x07};
- u8 xdata LCD1602_Write_Cursor_Add;
- void LCD1602_Delay(u8 len)
- {
- u8 idata i;
- while(len--)
- {
- i=15;
- while(i--);
- }
- }
- void LCD1602_Write_Add(u8 Add) //寫地址命令
- {
- LCD1602_RS=0;
- LCD1602_E=0;
- LCD1602_Delay(10);
- LCD1602_E=1;
- HC595_Write_Buffer[0]=Add;
- HC595_Write_Buffer[1]=0;
- HC595_Write_Data_Drive();
- LCD1602_E=0;
- }
- void LCD1602_Write_Dat(u8 Dat) //寫內(nèi)容
- {
- LCD1602_RS=1;
- LCD1602_E=0;
- LCD1602_Delay(10);
- LCD1602_E=1;
- HC595_Write_Buffer[0]=Dat;
- HC595_Write_Buffer[1]=0;
- HC595_Write_Data_Drive();
- LCD1602_E=0;
- }
- void LCD1602_Init()
- {
- u8 i;
- P4M0&=0x9f;
- P4M1&=0x9f;//P4.6 P4.5 準雙向口模式
- LCD1602_Write_Add(0x38);
- LCD1602_Delay(250);
- LCD1602_Write_Add(0x01);
- LCD1602_Delay(250);
- LCD1602_Write_Add(0x02);
- LCD1602_Delay(250);
- LCD1602_Write_Add(0x06);
- LCD1602_Delay(250);
- LCD1602_Write_Add(0x0C);
- LCD1602_Delay(250);
- LCD1602_Write_Add(0x14);
- LCD1602_Delay(250);
- LCD1602_Write_Add(0x40);//自定義存儲空間起始地址
- for(i=0;i<8;i++)
- {
- LCD1602_Write_Dat(LCD1602_5x8[i]);
- }
- }
- void LCD1602_Display_Ser()
- {
- u8 i;
- LCD1602_Write_Add(0x80);
- for(i=0;i<16;i++)
- {
- LCD1602_Write_Dat(LCD1602_Write_Buffer1[i]);
- }
- LCD1602_Write_Add(0xC0);
- for(i=0;i<16;i++)
- {
- LCD1602_Write_Dat(LCD1602_Write_Buffer2[i]);
- }
- switch(LCD1602_Write_Cursor_Add)
- {
- case 0:LCD1602_Write_Add(0x0C);break;//不顯示也不閃爍光標
- case 1:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0xCa);break;
- case 2:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0xCd);break;
- case 3:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0xC7);break;
- case 4:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0xC4);break;
- case 5:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0xC1);break;
- case 6:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0xCf);break;
- case 7:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0x89);break;
- case 8:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0x86);break;
- case 9:LCD1602_Write_Add(0x0F);LCD1602_Write_Add(0x83);break;
- }
- }
復(fù)制代碼
一、以上代碼,主函數(shù)大循環(huán)前面初始化P4IO口為準雙向口
二、主函數(shù)大循環(huán)前面需要初始化LCD1602_Init();
三、我們是使用595轉(zhuǎn)換給LCD的D0~D7。你們可以直接用P2口賦值給LCD。
四、主函數(shù)每500ms 調(diào)用LCD1602_Display_Ser()函數(shù)。實現(xiàn)數(shù)據(jù)每半秒刷新一次即可。省掉讀忙的過程。
五、兩個LCD1602_Write_Buffer[];數(shù)組,分別是上下兩行的顯存。其他地方有需要,就往里面丟ASCII值就可以了。比如0x30+5.液晶顯示數(shù)字5
六、以上代碼由《人人學(xué)會單片機》視頻教程原創(chuàng)書寫。其他地方引用請注明出處!
15 03 18 04 LCD1602 背面電阻更改圖.jpg (173.01 KB, 下載次數(shù): 89)
下載附件
2020-12-30 11:27 上傳
15 03 18 03 LCD1602初始化時序圖.png (247.54 KB, 下載次數(shù): 84)
下載附件
2020-12-30 11:27 上傳
15 03 18 02 ASCII與GB2312漢字碼表.zip
(6.89 MB, 下載次數(shù): 14)
2020-12-30 11:27 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
15 03 18 02 ASCII美國標準信息交換碼.jpg (367.46 KB, 下載次數(shù): 70)
下載附件
2020-12-30 11:27 上傳
15 03 18 01 LCD1602詳細中文資料 適合V1.2版本的開發(fā)板.pdf
(1.66 MB, 下載次數(shù): 28)
2020-12-30 11:27 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
不好意思 忘記上傳資料文檔了。
一、LCD1602詳細中文資料
二、ASCII與GB2312漢字碼表
三、LCD1602初始化時序圖
四、背面電阻修改圖
|