單片機與液晶顯示器的接口應用介紹
引言
本文引用地址:http://dyxdggzs.com/article/172654.htm液晶顯示器(LCD)具有工作電壓低、微功耗、顯示信息量大和接口方便等優(yōu)點(diǎn),現在已被廣泛應用于計算機和數字式儀表等領(lǐng)域,成為測量結果顯示和人機對話(huà)的重要工具。液晶顯示器按其功能可分為三類(lèi):筆段式液晶顯示器、字符點(diǎn)陣式液晶顯示器和圖形點(diǎn)陣式液晶顯示器。前兩種可顯示數字、字符和符號等,而圖形點(diǎn)陣式液晶顯示器還可以顯示漢字和任意圖形,達到圖文并茂的效果,其應用越來(lái)越廣泛。
?。牵裕牵玻矗埃保玻敢壕э@示模塊:
?。薄∧K特點(diǎn)
?。牵裕牵玻矗埃保玻笀D形點(diǎn)陣式液晶顯示器的點(diǎn)陣的大小為240×128,帶背光功能。內置1片T6963C液晶顯示控制器和5片KS0086驅動(dòng)器。該液晶顯示模塊具有如下特點(diǎn)。
●?。肝徊⑿锌偩€(xiàn)接口,能直接與80系列的微處理器相連;
● 可以顯示數字、字母、漢字和圖形等;
● 具有128種5×8點(diǎn)陣的ASCI字符字模庫CGROM;
● 具有64kb的顯示存儲器(可被劃分為文本顯示區、圖形顯示區、文本屬性區和自定義字符庫區),并允許MCU隨時(shí)訪(fǎng)問(wèn);
● 可用圖形方式、文本方式以及圖形和文本合成方式顯示。
?。病∧K接口引腳功能
?。牵裕牵玻矗埃保玻敢壕э@示模塊與微處理器的接口共有21個(gè)引腳,各引腳功能如表1所示。
?。场∧K指令集簡(jiǎn)介
?。牵裕牵玻矗埃保玻敢壕э@示模塊使用了硬件初始化設置,使得其指令功能集中于顯示功能的設置上,從而加強了顯示能力。該模塊的指令可帶一個(gè)或兩個(gè)參數,也可不帶參數。若指令中含有參數,則參數必須在指令之前輸入。在每次數據或指令的寫(xiě)入操作和數據的讀取操作之前都要進(jìn)行狀態(tài)字檢測,只有在不“忙”的狀態(tài)下,MCU對模塊的操作才有效。其狀態(tài)位由低位到高位的含義如表2所示。
在MCU寫(xiě)指令或一次讀/寫(xiě)數據時(shí),S0和S1要同時(shí)有效;當MCU使用自動(dòng)讀/寫(xiě)功能時(shí),S2和S3將取代S0和S1作為忙標志位,此時(shí)MCU就要判別它是否有效;S6是考察T6963C屏讀或屏拷貝指令執行情況的標志位;S5和S7表示模塊內部的運行狀態(tài),一般不用。
與AT89C55的接口電路
?。牵裕牵玻矗埃保玻概cAT89C55的接口有直接訪(fǎng)問(wèn)和間接訪(fǎng)問(wèn)兩種方式。直接訪(fǎng)問(wèn)方式就是把顯示器模塊作為存儲器或I/O設備直接掛在單片機總線(xiàn)上;間接訪(fǎng)問(wèn)方式就是把顯示器模塊與單片機的某個(gè)I/O接口連接,單片機通過(guò)對該I/O口的操作間接實(shí)現對模塊的控制。本文采用直接訪(fǎng)問(wèn)方式,硬件連接電路如圖1所示。
液晶顯示器模塊的數據線(xiàn)接在AT89C55的數據總線(xiàn)上,片選信號由地址線(xiàn)A7和A0提供,寄存器選擇信號由地址線(xiàn)A7和A1提供(指令通道地址為0xf1,數據通道地址為0xf3),讀和寫(xiě)操作由AT89C55的讀寫(xiě)操作信號控制;模塊Vo端所接的電位器用來(lái)調節液晶顯示器的對比度。
軟件設計
軟件采用Keil?。茫担闭Z(yǔ)言開(kāi)發(fā),主要包括三個(gè)部分:第一部分是寫(xiě)指令和寫(xiě)數據等面向液晶顯示模塊硬件的驅動(dòng)程序;第二部分包括液晶顯示模塊初始化和清屏等通用子程序;第三部分是漢字、字符和圖形的顯示程序。
?。薄?xiě)指令、寫(xiě)數據子程序
這部分是液晶顯示模塊的驅動(dòng)程序,所有對液晶顯示模塊的操作都是通過(guò)調用這部分程序實(shí)現的。液晶顯示模塊的指令通道地址為0xf1,數據通道的地址為0xf3,具體驅動(dòng)程序如下。
?。#洌澹妫椋睿濉。蹋茫模撸茫恚洹。埃妫薄。K指令通道地址
?。#洌澹妫椋睿濉。蹋茫模撸模幔簦帷。埃妫场。K數據通道地址
?。瘜?xiě)指令子程序
?。觯铮椋洹。祝颍椋簦澹撸蹋茫模撸茫恚洌ǎ酰睿螅椋纾睿澹洹。悖瑁幔颉。悖恚洌?/p>
?。?/p>
?。鳎瑁椋欤濉。ǎǎ校拢伲裕牛郏蹋茫模撸茫恚洌荩Γ常。剑常?;
?。校拢伲裕牛郏蹋茫模撸茫恚洌荩剑悖恚?;
?。?/p>
?。瘜?xiě)數據子程序
?。觯铮椋洹。祝颍椋簦澹撸蹋茫模撸模幔簦幔ǎ酰睿螅椋纾睿澹洹。悖瑁幔颉。洌幔簦?/p>
?。?/p>
?。鳎瑁椋欤濉。ǎǎ校拢伲裕牛郏蹋茫模撸茫恚洌荩Γ常。剑常?;
?。校拢伲裕牛郏蹋茫模撸模幔簦幔荩剑洌幔?;
?。?/p>
?。病〕跏蓟映绦?/p>
這部分程序是液晶顯示模塊進(jìn)行顯示之前的必要工作,包括設置文本頁(yè)首地址、圖形頁(yè)首地址、文本頁(yè)地址、圖形頁(yè)地址、初始化和清屏等子程序。本文中把液晶顯示模塊的顯示存儲器分為16個(gè)文本頁(yè)和6個(gè)圖形頁(yè)。文本頁(yè)的起止地址為0x0000~0x1fff;圖形頁(yè)的起止地址為0x2000~0x7fff。
?。O定文本頁(yè)首地址子程序
?。觯铮椋洹。裕澹簦撸龋铮恚澹撸粒洌洌颍澹螅螅ǎ酰睿螅椋纾睿澹洹。悖瑁幔颉。簦穑幔纾澹?/p>
?。?/p>
?。祝颍椋簦澹撸蹋茫模撸模幔簦幔ǎ埃?;
?。祝颍椋簦澹撸蹋茫模撸模幔簦幔ǎ簦穑幔纾澹埃埃玻?;
?。祝颍椋簦澹撸蹋茫模撸茫恚洌ǎ埃矗埃?;?。?/p>
?。O定圖形頁(yè)首地址子程序
?。觯铮椋洹。牵颍幔穑瑁撸龋铮恚澹撸粒洌洌颍澹螅螅ǎ酰睿螅椋纾睿澹洹。悖瑁幔颉。纾穑幔纾澹?/p>
?。?/p>
?。纾穑幔纾澹健。?;
?。祝颍椋簦澹撸蹋茫模撸模幔簦幔ǎ埃?;
?。祝颍椋簦澹撸蹋茫模撸模幔簦幔ǎ纾穑幔纾澹埃保埃?;
?。祝颍椋簦澹撸蹋茫模撸茫恚洌ǎ埃矗玻?;?。?/p>
?。O定文本頁(yè)地址子程序
?。觯铮椋洹。裕澹簦撸粒洌洌颍澹螅螅ǎ酰睿螅椋纾睿澹洹。悖瑁幔颉。?,?。酰睿螅椋纾睿澹洹。悖瑁幔颉。?/p>
?。?/p>
?。澹簦澹颍睢。酰睿螅椋纾睿澹洹。悖瑁幔颉。簦澹簦穑幔纾?;
?。酰睿螅椋纾睿澹洹。椋睿簟。?;
?。剑常玻簦澹簦穑幔纾澹埃埃玻埃?;
?。祝颍椋簦澹撸蹋茫模撸模幔簦幔ǎΓ埃妫妫?;
?。祝颍椋簦澹撸蹋茫模撸模幔簦幔ǎ玻担叮?;
?。祝颍椋簦澹撸蹋茫模撸茫恚洌ǎ埃玻矗?;
?。?/span>
評論