(用LCD1602做個(gè)溫度顯示裝置)
51單片機(jī)-溫度測(cè)量在LCD1602顯示(圖+代碼)--問(wèn)題歸納與復(fù)盤11 贊同 · 0 評(píng)論文章

LCD1602液晶顯示模塊
原理部分


引腳說(shuō)明
第4引腳: 低電平選擇指令寄存器(即在哪個(gè)位置顯示(共32個(gè)位置))
高電平選擇數(shù)據(jù)寄存器(即顯示什么字符);


80H+地址碼=指令碼
省略的地方留給整屏左/移動(dòng)


eg: A對(duì)應(yīng) 0x41

·時(shí)序圖分析
BD0--BD7 (8位數(shù)據(jù))雙向數(shù)據(jù)總線,通常是P0。然后向P0的8個(gè)引腳寫命令和數(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,所以單片機(jī)延時(shí)應(yīng)大于25ns,可寫1ms

時(shí)序圖(配置 寫命令/寫數(shù)據(jù) 函數(shù))


·輸入指令前
通常輸入指令前要判斷液晶模塊是否處于忙狀態(tài)。(可不用判斷,因?yàn)閱纹瑱C(jī)執(zhí)行速度與1602寫入速度有差別, 1602寫入速度>單片機(jī)執(zhí)行速度,所以寫入之前 上一次數(shù)據(jù)已經(jīng)處理完)
DDRAM:顯示數(shù)據(jù)RAM,用來(lái)寄存待顯示的字符代碼,共80字節(jié)

DDRAM地址和屏幕對(duì)應(yīng)關(guān)系

RAM地址映射圖
寫入顯示地址是最高位D7恒為高電平,所以要+80H
·原理圖


·清屏指令

·模式設(shè)置指令(光標(biāo)移動(dòng)方向/滾動(dòng)顯示)

DB1:I/D DB1=0 寫入數(shù)據(jù)后光標(biāo)左移;DB1=0 寫入數(shù)據(jù)后光標(biāo)右移
DB0:S 可用于滾動(dòng)顯示
·顯示開關(guān)控制指令(顯示、光標(biāo)、光標(biāo)閃動(dòng))

·功能設(shè)定指令(總線位數(shù)、顯示行數(shù)、57 / 5*10)


總結(jié)圖


·DATAPINS
1、初始化之前需要編寫‘寫命令操作’。
對(duì)于WriteCom(),由前面知道,寫操作需要RW為低電平即‘0’,并且通過(guò)使RS為低電平即‘0’來(lái)選擇命令寄存器,才能寫入命令到DATAPINS。另外,每次命令輸入DATAPINS就位后,令使能信號(hào)產(chǎn)生一個(gè)下降沿,將DATAPINS的命令寫進(jìn)LCD1602

2.‘寫數(shù)據(jù)操作’也類似,不同之處是RS為高電平即‘1’選擇數(shù)據(jù)寄存器,將數(shù)據(jù)寫入DATAPINS,其他都一樣。

·初始化函數(shù)


仿真部分
1、proteus中的LCD1602,并不是叫這個(gè)名知,而是叫LM016L
2、ADC0808芯片的CLOCK端加的脈沖頻率最好為500K(聽其他大神這樣說(shuō)的)