《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 看單片機如何控制LCD模塊
看單片機如何控制LCD模塊
摘要: 一般來說,LCD模塊的控制都是通過MCU對LCD模塊的內部寄存器、顯存進行操作來最終完成的;在此我們設計了三個基本的時序控制程序,分別是:寫寄存器函數(LCD_RegWrite)數據寫函數(LCD_DataWrite)數據讀
關鍵詞: 51單片機 LCD 單片機
Abstract:
Key words :

一般來說,LCD 模塊的控制都是通過 MCU 對 LCD 模塊的內部寄存器、顯存進行操作來最終完成的;在此我們設計了三個基本的時序控制程序,分別是:
寫寄存器函數(LCD_RegWrite)
數據寫函數(LCD_DataWrite)
數據讀函數(LCD_DataRead)
這三個函數需要嚴格的按照 LCD 所要求的時序來編寫,下面可以看看 MzL02 模塊時序圖:
 

圖 3.2 MzL02 模塊的 6800 時序示意
注意:上圖是該模塊的控制 IC 資料中的原版時序圖,其實有些示意不是太穩妥(少標出了RW 線信號的要求),或者說是不太嚴謹,不過這些不作討論,請看分析即可;而 EP 的有效觸發沿在圖中很有可能示意有誤,實測為上升沿。圖中 CS1B(CS2)的信號即為片選 CS,RS 即為數據/寄存器的選擇端口 A0 信號,E 為 EP;當作寫入寄存器數據操作時,首先要將 A0 置低,以通知 LCD 模塊即將進行的是對寄存器的操作;而 RW 線需要置低,以示即將要進行的是寫入的操作;然后片選 CS 信號置低,裝載數據至總線,然后在 EP 線上產生一個上升沿以觸發 LCD 模塊將總線上的數據最終載入;在前面的操作完成后一般都會將各個信號線的狀態恢復。而數據(顯存)寫入、數據讀出的操作時序也比較類似,這里就不多作介紹,直接參考例程即可。
//=======================================================
// 函數: void LCD_RegWrite(unsigned char Command)
// 描述: 寫一個字節的數據至 LCD 中的控制寄存器當中
// 參數: Command 寫入的數據,低八位有效(byte)
// 返回: 無
//======================================================
void LCD_RegWrite(unsigned char Command)
{
LCD_A0 = 0; //A0 置低,示意進行寄存器操作
LCD_RW = 0; //RW 置低,示意進行寫入操作
LCD_EP = 0; //EP 先置低,以便后面產生跳變沿
LCD_CS = 0; //片選 CS 置低
DAT_PORT = Command; //裝載數據置總線
LCD_EP = 1; //產生有效的跳變沿
LCD_CS = 1; //片選置高
}
數據寫入以及讀出的函數源碼如下:
//==========================================================
// 函數: void LCD_DataWrite(unsigned char Dat)
// 描述: 寫一個字節的顯示數據至 LCD 中的顯示緩沖 RAM 當中
// 參數: Data 寫入的數據
// 返回: 無
//==========================================================
void LCD_DataWrite(unsigned char Dat)
{
LCD_A0 = 1; //A0 置高,示意進行顯存數據操作
LCD_RW = 0; //RW 置低,示意進行寫入操作
LCD_EP = 0; //EP 先置低,以便后面產生跳變沿
LCD_CS = 0; //片選 CS 置低
DAT_PORT = Dat; //裝載數據置總線
LCD_EP = 1; //產生有效的跳變沿
LCD_CS = 1; //片選置高
}
//=========================================================
// 函數: unsigned char LCD_DataRead(void)
// 描述: 從 LCD 中的顯示緩沖 RAM 當中讀一個字節的顯示數據
// 參數: 無
// 返回: 讀出的數據,
//==========================================================
unsigned char LCD_DataRead(void)
{
unsigned char Read_Data;
DAT_PORT = 0xff; //51 的端口想要輸入前,要先給端口全置 1
LCD_A0 = 1; //A0 置高,示意進行顯存數據操作
LCD_RW = 1; //RW 置高,示意進行讀出操作
LCD_EP = 0; //EP 先置低,以便后面產生跳變沿
LCD_CS = 0; //片選 CS 置低
LCD_EP = 1; //產生有效的跳變沿
LCD_EP = 0;
Read_Data = DAT_PORT; //讀出數據
LCD_CS = 1; //片選置高
return Read_Data; //返回讀到的數據
}
以上便是要介紹的最基本的時序操作程序,它們幾乎是整個 LCD 驅動程序當中與底層硬件打交道的代碼了,這樣的話,當要改變驅動 LCD 的 MCU 端口時或者換用別的 MCU 來驅動 LCD 時,基本上只需要在這些代碼里作一下修改即可。
關于讀 LCD 狀態
而在一般的 LCD 模塊當中,還有一個功能同樣重要,就是讀 LCD 狀態;可以通過此操作獲取當前 LCD 模塊的忙狀態以及一些相關的狀態信息,當 LCD 模塊正處于忙狀態時,則不宜對它進行數據的寫入或讀出操作(有很多較老式的 LCD 控制器規定在忙的狀態下時不允許寫入或讀出數據)。
所以在很多 LCD 的驅動程序當中,會在寄存器寫入、數據寫入/讀出的操作前加入讀取 LCD狀態并判別忙狀態的代碼;這點可以參考網上流傳的很多 LCD 驅動程序。不過,對于 MzL02這樣的較新出的 LCD 控制器來說,已經對忙狀態不是很在乎了,或者說影響已經很小甚至沒有了;所以我們在前面的代碼當中并沒有加入這樣的代碼。至于有沒有必要加讀狀態判忙的代碼,要視具體的 LCD 控制器而定。
關于時序的時間要求
時序的一個非常重要的數據就是類似上圖中標出的tAS88之類的時間長短要求,只是上圖中并沒有標出它們的具體最大最小值要求而已;但在編寫這類的時序接口程序時它們還是非常重要的,當然還要看 MCU 的端口操作速度以及 MCU 的指令執行速度。打個比方,有的時序里就會有要求某些信號的電平保持最小寬度,而如果 MCU 的指令執行速度以及端口操作速度非常快的話,就需要酌情在連續操作端口的代碼之間加入適量的延時(通用用空操作來代替,具體多少個多少時長視具體的 MCU 以及 LCD 控制器而定)以保證該信號的脈沖寬度滿足要求。

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
国内精品久久久久影院色| 亚洲精品久久久一区二区三区| 欧美大片免费观看| 久久夜色精品亚洲噜噜国产mv| 欧美一区二区三区婷婷月色| 亚洲一区久久久| 亚洲天堂成人| 亚洲视频播放| 亚洲一区二区成人| 亚洲综合三区| 亚洲免费在线视频| 亚洲女同精品视频| 亚洲永久精品大片| 亚洲欧美一区二区激情| 亚洲欧美日韩一区二区三区在线观看 | 久久久天天操| 久久亚洲春色中文字幕| 久久视频精品在线| 久久婷婷国产综合国色天香| 久久亚洲风情| 美玉足脚交一区二区三区图片| 欧美va天堂在线| 欧美日韩国产经典色站一区二区三区| 欧美精选午夜久久久乱码6080| 欧美激情欧美狂野欧美精品| 欧美精品三级| 欧美视频中文字幕在线| 国产精品免费一区二区三区观看 | 这里只有精品视频在线| 亚洲欧美欧美一区二区三区| 性欧美长视频| 亚洲黄网站黄| 99在线观看免费视频精品观看| 亚洲一级片在线观看| 午夜久久久久| 久久久综合网| 欧美精品福利| 久久精品在线免费观看| 91久久线看在观草草青青| 亚洲精品欧美极品| 一区二区三欧美| 午夜精品区一区二区三| 久久久久久高潮国产精品视| 免费欧美在线视频| 国产精品v日韩精品v欧美精品网站| 国产精品欧美日韩久久| 国产亚洲va综合人人澡精品| 亚洲缚视频在线观看| 99re热这里只有精品视频| 午夜精品久久| 亚洲另类自拍| 久久99伊人| 欧美成人国产| 国产精品国产三级国产专播品爱网| 国产精品影片在线观看| 亚洲二区三区四区| 亚洲一区二区不卡免费| 亚洲电影视频在线| 亚洲无限av看| 久久欧美肥婆一二区| 欧美日韩亚洲综合一区| 国产亚洲欧美aaaa| 亚洲精品小视频| 欧美一区二区三区日韩| 日韩一级大片| 久久久久在线观看| 欧美日韩综合一区| 黄色成人免费网站| 一区二区日韩| 亚洲欧洲在线视频| 午夜日韩av| 欧美日韩成人| 黄色影院成人| 亚洲女女女同性video| 日韩亚洲视频在线| 久久久精品一区| 欧美日韩影院| 亚洲国产黄色| 久久国产成人| 午夜激情综合网| 欧美精品久久天天躁| 国产一区二区你懂的| 亚洲免费不卡| 亚洲国产精品一区二区第一页| 亚洲欧美日韩在线综合| 欧美韩日一区二区| 国产一区视频在线观看免费| 99国产精品私拍| 最新亚洲一区| 久久精品一本| 国产精品久久久久久久久搜平片 | 亚洲电影有码| 欧美一区亚洲一区| 欧美视频精品一区| 亚洲日本免费电影| 久久精品视频在线播放| 香蕉久久夜色精品国产| 欧美日韩免费高清| 亚洲黄色大片| 亚洲国产精品一区二区www在线| 久久精品99国产精品| 国产精品美女久久久久av超清 | 久久久www成人免费无遮挡大片| 国产精品国产三级国产专区53| 亚洲精品久久嫩草网站秘色| 91久久黄色| 老牛影视一区二区三区| 国产在线视频欧美| 午夜精品久久久久久久99热浪潮| 亚洲一区免费视频| 欧美日韩亚洲精品内裤| 亚洲伦理中文字幕| 日韩系列在线| 欧美日韩成人一区二区三区| 亚洲国产精品一区二区第一页| 亚洲午夜电影| 亚洲欧美综合国产精品一区| 亚洲免费视频一区二区| 欧美巨乳在线| 亚洲另类春色国产| 一区二区免费看| 欧美日韩国产综合久久| 亚洲人成毛片在线播放女女| 亚洲精选一区二区| 欧美福利精品| 亚洲欧洲一区二区三区| 亚洲免费福利视频| 欧美日韩123| 亚洲精品偷拍| 亚洲一二三区在线| 国产精品狠色婷| 亚洲制服丝袜在线| 欧美一区高清| 国产在线欧美| 亚洲国产欧美日韩| 欧美成人精精品一区二区频| 亚洲黄色天堂| 亚洲视频在线观看网站| 欧美日韩综合视频| 亚洲图片你懂的| 久久国产精品网站| 永久免费精品影视网站| 日韩视频中文| 欧美性猛交xxxx免费看久久久| 亚洲午夜未删减在线观看| 91久久精品国产91性色| 欧美日韩调教| 在线观看福利一区| 99re6热在线精品视频播放速度 | 欧美日韩精品高清| 99精品国产一区二区青青牛奶| 亚洲在线成人| 国产一区二区三区视频在线观看| 亚洲第一色中文字幕| 女同一区二区| 中文日韩在线| 久久米奇亚洲| 亚洲精品字幕| 久久成人国产| 亚洲激情在线观看视频免费| 亚洲欧美在线高清| 激情欧美日韩一区| 一区二区三区回区在观看免费视频| 国产精品美女xx| 亚洲国产裸拍裸体视频在线观看乱了| 欧美女同在线视频| 亚洲影视综合| 欧美大片一区二区| 亚洲一区日本| 欧美成人高清视频| 亚洲一二三区视频在线观看| 噜噜爱69成人精品| 国产精品99久久久久久人| 久久麻豆一区二区| 99ri日韩精品视频| 老司机亚洲精品| 亚洲婷婷综合久久一本伊一区| 久久综合电影一区| 一区二区三区高清不卡| 久久天天躁狠狠躁夜夜av| 日韩网站在线| 久久久久成人精品免费播放动漫| 日韩午夜高潮| 久久综合九色综合久99| 亚洲视频在线观看一区| 欧美黄色aaaa| 欧美伊人久久久久久久久影院| 欧美日韩国产综合一区二区| 性欧美18~19sex高清播放| 欧美久久影院| 久久精品国产99国产精品| 欧美日韩亚洲一区二| 亚洲国产精品一区二区久| 国产精品亚洲美女av网站| 亚洲伦理在线观看| 韩国一区二区三区在线观看| 亚洲免费视频在线观看| 亚洲日韩中文字幕在线播放| 久久午夜羞羞影院免费观看| 亚洲一区二区免费在线|