![單片機如何根據(jù)LCD時序圖來寫底層驅動_第1頁](http://file4.renrendoc.com/view/e0402a142620e13956f54f3017fa60a6/e0402a142620e13956f54f3017fa60a61.gif)
![單片機如何根據(jù)LCD時序圖來寫底層驅動_第2頁](http://file4.renrendoc.com/view/e0402a142620e13956f54f3017fa60a6/e0402a142620e13956f54f3017fa60a62.gif)
![單片機如何根據(jù)LCD時序圖來寫底層驅動_第3頁](http://file4.renrendoc.com/view/e0402a142620e13956f54f3017fa60a6/e0402a142620e13956f54f3017fa60a63.gif)
![單片機如何根據(jù)LCD時序圖來寫底層驅動_第4頁](http://file4.renrendoc.com/view/e0402a142620e13956f54f3017fa60a6/e0402a142620e13956f54f3017fa60a64.gif)
下載本文檔
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、一般來說,LCD模塊的控制都是通過MCU對LCD模塊的內部寄存器、顯存進行操作來最終完成的;在此我們設計了三個基本的時序控制程序,分別是:寫寄存器函數(shù)(LCD_RegWrite)數(shù)據(jù)寫函數(shù)(LCD_DataWrite)數(shù)據(jù)讀函數(shù)(LCD_DataRead)RSCS1B(CS2=1)o.yvuL:這三個函數(shù)需要嚴格的按照LCD所要求的時序來編寫,下面可以看看MzL02模塊時序圖:DBOtoDB7(WriteDBOtuCB7(Read;圖3.2MzL02模塊的6800時序示意注意:上圖是該模塊的控制IC資料中的原版時序圖,其實有些示意不是太穩(wěn)妥(少標出了RW線信號的要求),或者說是不太嚴謹,不過這
2、些不作討論,請看分析即可;而EP的有效觸發(fā)沿在圖中很有可能示意有誤,實測為上升沿。圖中CS1B(CS2)的信號即為片選CS,RS即為數(shù)據(jù)/寄存器的選擇端口A0信號,E為EP;當作寫入寄存器數(shù)據(jù)操作時,首先要將A0置低,以通知LCD模塊即將進行的是對寄存器的操作;而RW線需要置低,以示即將要進行的是寫入的操作;然后片選CS信號置低,裝載數(shù)據(jù)至總線,然后在EP線上產生一個上升沿以觸發(fā)LCD模塊將總線上的數(shù)據(jù)最終載入;在前面的操作完成后一般都會將各個信號線的狀態(tài)恢復。而數(shù)據(jù)(顯存)寫入、數(shù)據(jù)讀出的操作時序也比較類似,這里就不多作介紹,直接參考例程即可。/=/函數(shù):voidLCD_RegWrite(u
3、nsignedcharCommand)/描述:寫一個字節(jié)的數(shù)據(jù)至LCD中的控制寄存器當中/參數(shù):Command寫入的數(shù)據(jù),低八位有效(byte)/返回:無/=voidLCD_RegWrite(unsignedcharCommand)LCD_A0=0;/A0置低,示意進行寄存器操作LCD_RW=0;/RW置低,示意進行寫入操作LCD_EP=0;/EP先置低,以便后面產生跳變沿LCD_CS=0;/片選CS置低DAT_PORT=Command;/裝載數(shù)據(jù)置總線LCD_EP=1;/產生有效的跳變沿LCD_CS=1;/片選置高數(shù)據(jù)寫入以及讀出的函數(shù)源碼如下:/=/函數(shù):voidLCD_DataWrite
4、(unsignedcharDat)/描述:寫一個字節(jié)的顯示數(shù)據(jù)至LCD中的顯示緩沖RAM當中/參數(shù):Data寫入的數(shù)據(jù)/返回:無/=voidLCD_DataWrite(unsignedcharDat)LCD_A0=1;/A0置高,示意進行顯存數(shù)據(jù)操作LCD_RW=0;/RW置低,示意進行寫入操作LCD_EP=0;/EP先置低,以便后面產生跳變沿LCD_CS=0;/片選CS置低DAT_PORT=Dat;/裝載數(shù)據(jù)置總線LCD_EP=1;/產生有效的跳變沿LCD_CS=1;/片選置高/=/函數(shù):unsignedcharLCD_DataRead(void)/描述:從LCD中的顯示緩沖RAM當中讀一個
5、字節(jié)的顯示數(shù)據(jù)/參數(shù):無/返回:讀出的數(shù)據(jù),/=unsignedcharLCD_DataRead(void)unsignedcharRead_Data;DAT_PORT=0 xff;/51的端口想要輸入前,要先給端口全置1LCD_A0=1;/A0置高,示意進行顯存數(shù)據(jù)操作LCD_RW=1;/RW置高,示意進行讀出操作LCD_EP=0;/EP先置低,以便后面產生跳變沿LCD_CS=0;/片選CS置低LCD_EP=1;/產生有效的跳變沿LCD_EP=0;Read_Data=DAT_PORT;/讀出數(shù)據(jù)LCD_CS=1;/片選置高returnRead_Data;/返回讀到的數(shù)據(jù)以上便是要介紹的最基本
6、的時序操作程序,它們幾乎是整個LCD驅動程序當中與底層硬件打交道的代碼了,這樣的話,當要改變驅動LCD的MCU端口時或者換用別的MCU來驅動LCD時,基本上只需要在這些代碼里作一下修改即可。關于讀LCD狀態(tài)而在一般的LCD模塊當中,還有一個功能同樣重要,就是讀LCD狀態(tài);可以通過此操作獲取當前LCD模塊的忙狀態(tài)以及一些相關的狀態(tài)信息,當LCD模塊正處于忙狀態(tài)時,則不宜對它進行數(shù)據(jù)的寫入或讀出操作(有很多較老式的LCD控制器規(guī)定在忙的狀態(tài)下時不允許寫入或讀出數(shù)據(jù))。所以在很多LCD的驅動程序當中,會在寄存器寫入、數(shù)據(jù)寫入/讀出的操作前加入讀取LCD狀態(tài)并判別忙狀態(tài)的代碼;這點可以參考網上流傳的很
7、多LCD驅動程序。不過,對于MzL02這樣的較新出的LCD控制器來說,已經對忙狀態(tài)不是很在乎了,或者說影響已經很小甚至沒有了;所以我們在前面的代碼當中并沒有加入這樣的代碼。至于有沒有必要加讀狀態(tài)判忙的代碼,要視具體的LCD控制器而定。關于時序的時間要求時序的一個非常重要的數(shù)據(jù)就是類似上圖中標出的tAS88之類的時間長短要求,只是上圖中并沒有標出它們的具體最大最小值要求而已;但在編寫這類的時序接口程序時它們還是非常重要的,當然還要看MCU的端口操作速度以及MCU的指令執(zhí)行速度。打個比方,有的時序里就會有要求某些信號的電平保持最小寬度,而如果MCU的指令執(zhí)行速度以及端口操作速度非常快的話,就需要酌情在連續(xù)操作端口的代碼之間加入適量的延時(通用用空操作來代替,具體多少個多少時長視具體的MCU
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房地產抵押協(xié)議書
- 人工機械合同協(xié)議書
- 裝修工程補充合同年
- 2025年玉樹貨運資格證考題
- 2025年揚州下載貨運從業(yè)資格證模擬考試題
- 2025年山西貨運資格考試答案
- 電商和快遞合作合同(2篇)
- 西北師范大學圖書館
- 社區(qū)服務活動總結
- 總經理辦公室工作計劃
- 江蘇省招標中心有限公司招聘筆試沖刺題2025
- 綜采工作面過空巷安全技術措施
- 云南省麗江市2025屆高三上學期復習統(tǒng)一檢測試題 物理 含解析
- 建材材料合作合同范例
- 2025年集體經濟發(fā)展計劃
- 病歷書寫規(guī)范細則(2024年版)
- 2024-2025學年人教版八年級上冊地理期末測試卷(二)(含答案)
- 做賬實操-牙科診所的賬務處理
- 雙方共同買車合同范例
- 汽車智能制造技術課件
- 中醫(yī)外治法課件
評論
0/150
提交評論