(用LCD1602做個溫度顯示裝置)
51單片機-溫度測量在LCD1602顯示(圖+代碼)--問題歸納與復(fù)盤11 贊同 · 0 評論文章
LCD1602液晶顯示模塊
原理部分
引腳說明
第4引腳: 低電平選擇指令寄存器(即在哪個位置顯示(共32個位置))
高電平選擇數(shù)據(jù)寄存器(即顯示什么字符);
80H+地址碼=指令碼
省略的地方留給整屏左/移動
eg: A對應(yīng) 0x41
·時序圖分析
BD0--BD7 (8位數(shù)據(jù))雙向數(shù)據(jù)總線,通常是P0。然后向P0的8個引腳寫命令和數(shù)據(jù)
eg: #define DATAPINS P0
...
void lcd_write_com(unsigned char com)
{
...
DATAPINS=com;
}
void lcd_write_data(unsigned char dat)
{
....
DAPAPINS=dat;
}
上升沿/下跳沿最大25ns,所以單片機延時應(yīng)大于25ns,可寫1ms
時序圖(配置 寫命令/寫數(shù)據(jù) 函數(shù))
·輸入指令前
通常輸入指令前要判斷液晶模塊是否處于忙狀態(tài)。(可不用判斷,因為單片機執(zhí)行速度與1602寫入速度有差別, 1602寫入速度>單片機執(zhí)行速度,所以寫入之前 上一次數(shù)據(jù)已經(jīng)處理完)
DDRAM:顯示數(shù)據(jù)RAM,用來寄存待顯示的字符代碼,共80字節(jié)
DDRAM地址和屏幕對應(yīng)關(guān)系
RAM地址映射圖
寫入顯示地址是最高位D7恒為高電平,所以要+80H
·原理圖
·清屏指令
·模式設(shè)置指令(光標移動方向/滾動顯示)
DB1:I/D DB1=0 寫入數(shù)據(jù)后光標左移;DB1=0 寫入數(shù)據(jù)后光標右移
DB0:S 可用于滾動顯示
·顯示開關(guān)控制指令(顯示、光標、光標閃動)
·功能設(shè)定指令(總線位數(shù)、顯示行數(shù)、57 / 5*10)
總結(jié)圖
·DATAPINS
1、初始化之前需要編寫‘寫命令操作’。
對于WriteCom(),由前面知道,寫操作需要RW為低電平即‘0’,并且通過使RS為低電平即‘0’來選擇命令寄存器,才能寫入命令到DATAPINS。另外,每次命令輸入DATAPINS就位后,令使能信號產(chǎn)生一個下降沿,將DATAPINS的命令寫進LCD1602
2.‘寫數(shù)據(jù)操作’也類似,不同之處是RS為高電平即‘1’選擇數(shù)據(jù)寄存器,將數(shù)據(jù)寫入DATAPINS,其他都一樣。
·初始化函數(shù)
仿真部分
1、proteus中的LCD1602,并不是叫這個名知,而是叫LM016L
2、ADC0808芯片的CLOCK端加的脈沖頻率最好為500K(聽其他大神這樣說的)