PIC單片機與液晶顯示模塊DMF5001N的接口應(yīng)用
DMF5001N圖形液晶顯示模塊由一塊160×128點陣單屏結(jié)構(gòu)的液晶顯示器件、兩片T6961B、兩片T6A39、一片T6963C及其8KRAM以及配套電路組成。T6963C有一內(nèi)置字符器CGROM,共有128個5×7點陣ASCII字符;它有64K的顯示RAM,用戶可在其中方便地設(shè)置文本、圖形和用戶自定義的顯示數(shù)據(jù)緩沖區(qū)。從而DMF5001N不僅可顯示漢字,還可顯示ASCII字符和各種曲線;它可以選擇文本與圖形之間的邏輯“與”、“或”、“異或”等組合,可以實現(xiàn)反顯、閃爍、滾屏、翻頁及動畫等多種顯示功能,還具有多種光標(biāo)顯示功能。因此可將它與單片機連接構(gòu)成功能強、結(jié)構(gòu)簡單、人機界面友好的各種智能儀表和控制系統(tǒng)。
PIC16F877是PIC系列單片機中的中級產(chǎn)品。它采用的是14位的RISC指令系統(tǒng),在保持低價的前提下增加了A/D、內(nèi)部EEPROM存儲器、比較輸出、捕捉輸入、PWM輸出、I2C和SPI接口、異步串行通訊(USART)、模擬電壓比較器、LCD驅(qū)動、FLASH程序存儲器等許多功能,廣泛應(yīng)用于各種電子產(chǎn)品中。
1.硬件設(shè)計
內(nèi)置T6963C控制器的液晶顯示模塊與計算機的接口時序為In-te18080時序??刹捎弥苯釉L問方式或間接訪問方式。本例采用間接訪問方式,即通過并行I/O口PORTD間接對模塊進(jìn)行控制。模塊共有20個引腳,其接口電路如上圖所示。需要注意的是,液晶顯示驅(qū)動電源Vee要求在-15~-20V之間,液晶對比度控制電壓Vcont-VCC也要求在-15~-20V之間,LCD才能正常工作。NC引腳未用。
2.軟件設(shè)計
T6963C接口的工作時序如上圖所示。T6963C的狀態(tài)標(biāo)志字有8位,它們是:STAO:指令讀、寫狀態(tài),1:準(zhǔn)備好,0:忙;STAl:指令讀、寫狀態(tài),l:準(zhǔn)備好,0:忙;STA2:數(shù)據(jù)自動讀狀態(tài),1:準(zhǔn)備好,0:忙;STA3:數(shù)據(jù)自動寫狀態(tài),1:準(zhǔn)備好,0:忙;STA4:未用;STA5:控制器運行檢測可靠性,1:出錯,0:正確;STA6:屏讀/拷貝出錯狀態(tài),1:出錯,0:正確;STA7:閃爍狀態(tài)檢測,1:正常顯示,0:關(guān)顯示。在CPU一次讀或?qū)懼噶罴皵?shù)據(jù)時,STA0和STA1要同時有效,即“準(zhǔn)備好”狀態(tài);當(dāng)CPU讀寫數(shù)組時,STA2或STA3取代STA0和STA1作為忙標(biāo)志位;STA6標(biāo)志是T6963C屏讀或拷貝指令的標(biāo)志位;STA5和STA7表示控制器內(nèi)部運行狀態(tài)。T6963C與DMF5001N之間的聯(lián)絡(luò)、實際應(yīng)用中所有的指令傳輸和數(shù)據(jù)傳輸之間都采用狀態(tài)字檢測。要編寫正確有效的指令,必須遵循圖3所示的參數(shù)/指令傳輸流程。
(1)基本子程序按照上圖所示的參數(shù)/指令傳輸流程圖,單片機在訪問T6963C的過程中,要用到LCD基本子程序。
判斷STA2、STA3、STA5、STA6、STA7的子程序與判斷STA0、1的子程序相類似,只是分別判斷temp的第2、3、5、6、7位。
(2)清零子程序T6963C的硬件復(fù)位功能僅是對內(nèi)部邏輯電路的初始化,但在開機后,LCD顯示緩沖區(qū)的內(nèi)容是隨機狀態(tài)。所以,T6963C首先要求對顯示緩沖區(qū)初始化,清零過程是向全部存儲單元寫入00H,該數(shù)據(jù)在圖形方式下為不顯示狀態(tài)數(shù)據(jù),在文本方式下正好是空格的字符代碼。初始化的清零過程應(yīng)用了自動寫指令。清零子程序見本刊網(wǎng)站。
(3)初始化子程序在使用LCD模塊之前,必須首先調(diào)用這個子程序,以完成對LCD屏幕的初始化,具體程序見本刊網(wǎng)站。
(4)在LCD上顯示漢字和ASCII碼字符的方法以下所用到的漢字字模數(shù)據(jù)是利用清華蓬遠(yuǎn)公司提供的漢字字模提取程序PICK-HzB.EXE建立的。漢字字模排列格式為第1~16字節(jié)為漢字左半部分自上而下排列的字模數(shù)據(jù);第17~32字節(jié)為漢字右半部分自上而下排列的字模數(shù)據(jù)。
對于DMF5001N來說有兩種方法顯示漢字。一是在文本方式下顯示漢字,用CGRAM建立漢字庫,編寫漢字代碼使用時將每一個漢字的16×16點陣的字模數(shù)據(jù)32字節(jié),按結(jié)構(gòu)(左上部、左下部、右上部、右下部)分成8個字節(jié)一組,共4組,每一組定義一個字符代碼,字符代碼的選擇范圍在80H~FFH之間,由漢字字模數(shù)組在CGRAM中的16位地址中的其中8位(AD3~AD10)形成的;在所要顯示漢字的位置,把這4個字符代碼寫入漢字結(jié)構(gòu)所對應(yīng)的位置上,即可顯示出完整的漢字;顯然,在文本方式下顯示漢字比較麻煩,而且個數(shù)也有限。二是在圖形方式下顯示漢字,在單片機的ROM中開辟一個存儲區(qū)域?qū)iT存放漢字的點陣字模數(shù)據(jù),再以圖形方式逐字節(jié)的寫入(在PIC系列單片機中是用addwFPCL、retlwOXxx等指令來實現(xiàn)的),從而在LCD顯示屏上得到漢字的圖形。該方法的特點是能夠在任意位置上顯示漢字而不受字符行的限制,并且漢字量不受LCD模塊內(nèi)CGRAM的限制。此外LCD模塊內(nèi)部有一字符發(fā)生器CGROM,該字符庫有128種字符,其代碼為00H~7FH,可直接提?。ù藭r應(yīng)注意在初始化時要使顯示方式中的字符發(fā)生器選擇位CG=0)。字符“W”和圖形方式下“北”字的顯示程序見本刊網(wǎng)站。
調(diào)試過程中應(yīng)特別注意的問題:首先是要進(jìn)行正確的初始化;再者單片機訪問LCD時要與模塊的接口時序配合好,比如在間接訪問方式中,對模塊進(jìn)行寫操作時,要用軟件指令在模塊的WR的反引腳有一個上升沿的信號脈沖。