1. 程式人生 > >lcd 1602晶體顯示合解

lcd 1602晶體顯示合解

第一個部分

(可以結合著看加以理解)

一、學習目的 

學會如何使用一個新的模組:
  • 從硬體上獲得介面的瞭解;
  • 檢視晶片的資料手冊,瞭解介面的使用方法
  • 寫程式時要遵循 硬體電路 –> 硬體介面 –> 軟體程式設計 這三個部分

二、LCD1602原理 
1、只能顯示ASCII碼 
1602 = 16個字元/行 * 2行 = 畫素 16*2

2、分析時序圖 
(1)寫操作(微控制器至HD44780) 
這裡寫圖片描述 
描述: 
首先要對暫存器的選擇和讀、寫操作選擇進行配置。RS是暫存器選擇,RS = 1對資料進行操作;RS = 0對指令進行操作。 
接著對讀寫操作選擇進行配置,RW = 0 寫操作。 
開啟使能端,輸入使能訊號 E = 1。 
資料匯流排,對DB0~DB7賦值,進行資料的傳輸

【注】如果先開啟使能,再進行其他配置的話,有可能傳輸的資料不是自己想要的。

(2)讀操作(HD44780至微控制器) 
這裡寫圖片描述(描述同上)

3、顯示模組的指令集 
根據自己的顯示需要進行相應的配置 
這裡寫圖片描述 
這裡寫圖片描述 
這裡寫圖片描述 
這裡寫圖片描述 
這裡寫圖片描述

4、顯示的位置設定DDRAM 
這裡寫圖片描述 
顯示在第一行某一列的資料可以寫命令:0x80 | 0x** 
顯示在第二行某一列的資料可以寫命令:0x80 | 0x40 | 0x** = 0xC0 | 0x** 
0x80是因為在設定DDRAM地址時,DB7固定是為1的。

三、LCD1602寫入自己的字元及顯示漢字 
1、由於LCD是外部裝置,處理速度比CPU速度慢,向LCD寫入命令到完成功能需要一定的時間,在這個過程中,LCD處於忙狀態,不能向LCD寫入新的內容。LCD是否處於忙狀態可以通過讀忙標誌命令來了解。 
用state = LCDPORT來讀取IO埠的狀態,將state & 0x80來判斷LCD是否處於忙狀態,若IO口bit7為1,則表示LCD處於忙狀態,反之則空閒。

2、要讓LCD1602顯示自定義字元,就得用到CGRAM指令,CGROM字碼表實際只有8個位元組可供使用,writecom(0x40)表示將要在CGRAM中寫入資料,設定字型檔CGRAM地址命令是0100 0000. 
1602能儲存8個自定義字元(即8個位元組的使用),這8個自定義字元儲存空間的首地址分別是:0X40,0X48,0X50,0X58,0X60,0X68,0X70,0X78。 
使用時讀取自定義字元的地址即為0X40-0X78 對應為 00H-07H。一個地址(如00H)存放1B的一個字元(1B = 8bit,一個字元由8個0x**組成)    
以0x40來說,它的儲存空間如圖所示: 
這裡寫圖片描述

如果使用5*7字元的話,那麼最左3位和最後一行的資料實際上是沒用的,通常置0。 
這裡寫圖片描述

 
這樣我們就得到每個地址需要寫入的資料: 
地址 : 資料 
0x40 : 0x16 
0x41 : 0x09 

0x42 : 0x08 其他類推。將這8個數據寫入到對應地址即可。(有紅格子的即為1,白格子即為0)

第二個部分


一、lcd1602概念

(1)lcd1602指顯示內容為16*2(可顯示兩行),每行可6個位元組的液晶顯示模組。

(2)CGRAM是使用者自定義的字元圖形儲存區,可以定義8個自定義字元。

(3)將顯示模式設定為“16*2顯示.



二、LCD顯示字元三個注意點

① 待顯示字元ASCII標準碼產生

② 液晶顯示模式的設定

③ 字元顯示位置的指定


三、LCD顯示資料的位置選擇

若想在00H(第一行第一列)上顯示資料,必須將00H加上0x80H(指令傳送0x80);若想在第二行第五列顯示資料,則地址確定的指令為80H + 40H + 4 = C4H,其他以此類推。



四、LCD1602的硬體連線


①  JPBG直接連線電源,第3引腳的可調電位器的兩端一定要連線電源和地。

②  P2.0、P2.1、P2.2分別是RS(資料命令選擇端)、R/W(讀寫控制位)和E(LCD使能端)三個控制位,P0.0~P0.7是8個數據介面線。

●RS:高電平(RS = 1)代表傳輸資料,低電平(RS = 0)代表傳輸命令。

●R/W:R/W = 1為讀指令,R/W = 0為寫指令。


五、1602LCD的自定義字元

從CGRAM表上可以看到,在表的最左側是一列可以允許使用者自定義的CGRAM,從上往下看共16個,實際上只有8個位元組可以自定義。設定CGRAM地址的命令如下:


也就是說當我們想自定義字元,從這個指令可以看出指令資料的高兩位已經固定為01,只有後面6位是地址資料,而這6位中的高3位就代表這8個自定義字元,最後3位是字模資料的8個地址。例如第一個自定義字元的字模地址為01000000 —— 01000111。


六、LCD1602程式示例