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