單片機(jī)與液晶顯示器的接口及應(yīng)用
摘 要:在介紹圖形點(diǎn)陣式液晶顯示模塊gtg240128的結(jié)構(gòu)和功能的基礎(chǔ)上,討論了其與at89c55單片機(jī)的硬件接口電路和接口軟件編程方法,并給出了寫(xiě)指令、寫(xiě)數(shù)據(jù)、初始化和漢字顯示等通用程序。 引言 液晶顯示器(lcd)具有工作電壓低、微功耗、顯示信息量大和接口方便等優(yōu)點(diǎn),現(xiàn)在已被廣泛應(yīng)用于計(jì)算機(jī)和數(shù)字式儀表等領(lǐng)域,成為測(cè)量結(jié)果顯示和人機(jī)對(duì)話的重要工具。液晶顯示器按其功能可分為三類(lèi):筆段式液晶顯示器、字符點(diǎn)陣式液晶顯示器和圖形點(diǎn)陣式液晶顯示器。前兩種可顯示數(shù)字、字符和符號(hào)等,而圖形點(diǎn)陣式液晶顯示器還可以顯示漢字和任意圖形,達(dá)到圖文并茂的效果,其應(yīng)用越來(lái)越廣泛。本文在介紹以t6963c為控制器的gtg240128液晶顯示模塊的結(jié)構(gòu)和功能的基礎(chǔ)上,討論了其與at89c55單片機(jī)的硬件接口電路及接口軟件編程方法。 ?。纾簦纾玻矗埃保玻敢壕э@示模塊 1 模塊特點(diǎn) ?。纾簦纾玻矗埃保玻笀D形點(diǎn)陣式液晶顯示器的點(diǎn)陣的大小為240×128,帶背光功能。內(nèi)置1片t6963c液晶顯示控制器和5片ks0086驅(qū)動(dòng)器。該液晶顯示模塊具有如下特點(diǎn)。 ●?。肝徊⑿锌偩€接口,能直接與80系列的微處理器相連; ● 可以顯示數(shù)字、字母、漢字和圖形等; ● 具有128種5×8點(diǎn)陣的asci字符字模庫(kù)cgrom; ● 具有64kb的顯示存儲(chǔ)器(可被劃分為文本顯示區(qū)、圖形顯示區(qū)、文本屬性區(qū)和自定義字符庫(kù)區(qū)),并允許mcu隨時(shí)訪問(wèn); ● 可用圖形方式、文本方式以及圖形和文本合成方式顯示?! 。病∧K接口引腳功能 ?。纾簦纾玻矗埃保玻敢壕э@示模塊與微處理器的接口共有21個(gè)引腳,各引腳功能如表1所示。 ?。场∧K指令集簡(jiǎn)介 gtg240128液晶顯示模塊使用了硬件初始化設(shè)置,使得其指令功能集中于顯示功能的設(shè)置上,從而加強(qiáng)了顯示能力。該模塊的指令可帶一個(gè)或兩個(gè)參數(shù),也可不帶參數(shù)。若指令中含有參數(shù),則參數(shù)必須在指令之前輸入。在每次數(shù)據(jù)或指令的寫(xiě)入操作和數(shù)據(jù)的讀取操作之前都要進(jìn)行狀態(tài)字檢測(cè),只有在不“忙”的狀態(tài)下,mcu對(duì)模塊的操作才有效。其狀態(tài)位由低位到高位的含義如表2所示。 在mcu寫(xiě)指令或一次讀/寫(xiě)數(shù)據(jù)時(shí),s0和s1要同時(shí)有效;當(dāng)mcu使用自動(dòng)讀/寫(xiě)功能時(shí),s2和s3將取代s0和s1作為忙標(biāo)志位,此時(shí)mcu就要判別它是否有效;s6是考察t6963c屏讀或屏拷貝指令執(zhí)行情況的標(biāo)志位;s5和s7表示模塊內(nèi)部的運(yùn)行狀態(tài),一般不用。 與at89c55的接口電路 gtg240128與at89c55的接口有直接訪問(wèn)和間接訪問(wèn)兩種方式。直接訪問(wèn)方式就是把顯示器模塊作為存儲(chǔ)器或i/o設(shè)備直接掛在單片機(jī)總線上;間接訪問(wèn)方式就是把顯示器模塊與單片機(jī)的某個(gè)i/o接口連接,單片機(jī)通過(guò)對(duì)該i/o口的操作間接實(shí)現(xiàn)對(duì)模塊的控制。本文采用直接訪問(wèn)方式,硬件連接電路如圖1所示?! ∫壕э@示器模塊的數(shù)據(jù)線接在at89c55的數(shù)據(jù)總線上,片選信號(hào)由地址線a7和a0提供,寄存器選擇信號(hào)由地址線a7和a1提供(指令通道地址為0xf1,數(shù)據(jù)通道地址為0xf3),讀和寫(xiě)操作由at89c55的讀寫(xiě)操作信號(hào)控制;模塊vo端所接的電位器用來(lái)調(diào)節(jié)液晶顯示器的對(duì)比度?! ≤浖O(shè)計(jì) 軟件采用keil c51語(yǔ)言開(kāi)發(fā),主要包括三個(gè)部分:第一部分是寫(xiě)指令和寫(xiě)數(shù)據(jù)等面向液晶顯示模塊硬件的驅(qū)動(dòng)程序;第二部分包括液晶顯示模塊初始化和清屏等通用子程序;第三部分是漢字、字符和圖形的顯示程序。 ?。薄?xiě)指令、寫(xiě)數(shù)據(jù)子程序 這部分是液晶顯示模塊的驅(qū)動(dòng)程序,所有對(duì)液晶顯示模塊的操作都是通過(guò)調(diào)用這部分程序?qū)崿F(xiàn)的。液晶顯示模塊的指令通道地址為0xf1,數(shù)據(jù)通道的地址為0xf3,具體驅(qū)動(dòng)程序如下?! 。#洌澹妫椋睿濉。欤悖洌撸悖恚洹。埃妫薄。K指令通道地址 ?。#洌澹妫椋睿濉。欤悖洌撸洌幔簦帷。埃妫场。K數(shù)據(jù)通道地址 ?。瘜?xiě)指令子程序 ?。觯铮椋洹。鳎颍椋簦澹撸欤悖洌撸悖恚洌ǎ酰睿螅椋纾睿澹洹。悖瑁幔颉。悖恚洌 。 。鳎瑁椋欤濉。ǎǎ穑猓簦澹郏欤悖洌撸悖恚洌荩Γ常。剑常?; ?。穑猓簦澹郏欤悖洌撸悖恚洌荩剑悖恚?; ?。 。瘜?xiě)數(shù)據(jù)子程序 void?。鳎颍椋簦澹撸欤悖洌撸洌幔簦幔ǎ酰睿螅椋纾睿澹洹。悖瑁幔颉。洌幔簦 。 。鳎瑁椋欤濉。ǎǎ穑猓簦澹郏欤悖洌撸悖恚洌荩Γ常。剑常?; ?。穑猓簦澹郏欤悖洌撸洌幔簦幔荩剑洌幔?; ?。 。病〕跏蓟映绦?/p>