LCD1602液晶顯示

whalefall發表於2018-04-22

一、學習目的 
學會如何使用一個新的模組:

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

二、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)

相關文章