單片機控制的LCD漢字顯示電路設計(獨家完整版)_第1頁
單片機控制的LCD漢字顯示電路設計(獨家完整版)_第2頁
單片機控制的LCD漢字顯示電路設計(獨家完整版)_第3頁
單片機控制的LCD漢字顯示電路設計(獨家完整版)_第4頁
單片機控制的LCD漢字顯示電路設計(獨家完整版)_第5頁
已閱讀5頁,還剩40頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、單片機控制的LCD漢字顯示電路設計 摘 要近年來,隨著電子行業(yè)的發(fā)展,單片機的應用越來越廣泛,基于單片機的電子電路的設計也越來越多。所以,單片機在電子教學中越來越普遍。本設計介紹的是以ATMEGA8單片機為核心的液晶顯示屏控制系統(tǒng)。該設計詳細闡述了其工作原理、基本功能框圖、主要設計方法及工作流程。本設計提出了一種能實時控制顯示內容的基于單片機的液晶顯示屏控制系統(tǒng)設計方案,給出了該單片機的硬件電路和軟件程序,最終顯示出漢字的結果。具體方法是首先設計并焊接出一個AVR單片機開發(fā)板,基于此開發(fā)板設計出LCD模塊顯示電路。之后,編寫LCD模塊初始化程序和顯示程序。最后下載程序到單片機,LCD顯示出漢字

2、。關鍵詞: Atmega8 控制 LCD12864 顯示 Title The control circuit design of the dot-matrix liquid crystal display controlled by the microprocessor AbstractIn recent years, with the development of the electronics industry, the application of the Microcontroller Unit is becoming more and more widely, also, there

3、 is more and more electronic circuit design based on the Microcontroller Unit. Therefore, the Microcontroller Unit using in the electronic teaching is becoming more common.This design introduces the liquid crystal display control system based on the ATMEGA8 microcontroller. This design elaborated on

4、 its working principle, the basic functional block diagram, main design methods and working process. This design puts forward to a design scheme based on the Microcontroller Unit, which can control the showing content of the LCD screen controlling system at the real time. The specific method is 

5、;that, firstly we should design and weld into an AVR Microcontroller development board and then design a LCD module display circuit based on the development board. After that, write the LCD module initialization program and displaying program. At last, download the program to the MCU, and the LCD wi

6、ll show the Chinese characters.Keywords ATMEGA8 control LCD12864 displaying目次摘 要IAbstractII目次III1概述11.1課題背景11.2設計要求11.3 LCD簡介及發(fā)展11.4 AVR單片機22方案論證22.1方案一22.2方案二32.3方案三33主要模塊簡介33.1 ATMEGA8簡介33.2 LCD12864模塊簡介43.2.1 KXM12864主要技術參數(shù)和性能43.2.2 KXM12864外形尺寸圖53.2.3 KXM12864液晶顯示指令系統(tǒng)63.2.4 12864液晶顯示動態(tài)指標及術語74硬件設

7、計94.1設計流程圖及設計思路94.2各模塊電路設計104.2.1電源電路104.2.2 LCD12864模塊控制電路114.2.3 RS232電平轉換電路124.2.4 時鐘電路134.3硬件焊接與調試144.4方案擴展145軟件設計165.1 LCD12864模塊初始化流程16165.2部分程序代碼175.2.1軟件延時175.2.2 端口輸出函數(shù)185.2.3 寫數(shù)據(jù)函數(shù)185.2.4 寫指令函數(shù)195.2.5 初始化函數(shù)205.2.6 顯示函數(shù)205.3程序調試中的注意問題236實物與實測效果展示276.1實物展示276.2實測效果展示28結論29感言30致謝31參考文獻32附錄A33

8、硬件原理圖(基于protel99se)33附錄B34程序代碼34附錄C40元器件規(guī)格清單40IV1概述自20世紀以來,電子行業(yè)發(fā)生著翻天覆地的變化。電子行業(yè)的發(fā)展推動著社會的發(fā)展,因此,世界各國也大力發(fā)展電子行業(yè)。其中,在電子行業(yè)中,顯示器產業(yè)是其中尤為重要的產業(yè)之一。然而,在顯示器產業(yè)中,LCD技術是最重要的技術之一。 眾所周知,單片機像是電子行業(yè)中發(fā)揮著巨大作用的精靈。它的能耗小、價格低廉,在簡單的電子實驗方面的應用非常廣泛,在教育教學中深受廣大電子教育工作者的喜愛。1.1課題背景在電子行業(yè)中,LCD已被公認為是媒體時代的關鍵器件,它的低功耗、體積小、易于實現(xiàn)畫面顯示及優(yōu)良的全色顯示性能等

9、特點,使其在現(xiàn)代社會中得到了廣泛的應用。可以說,LCD是本世紀初最有活力的電子產品之一。與此同時,單片機的應用領域也非常廣泛,大到導彈的導航裝置,飛機上各種儀表的控制,小到廣泛使用的智能IC卡,比如學校中使用的校園一卡通等,這些都離不開單片機。因此,通過使用單片機可以使我們完成很多令我們意想不到的事情。所以,本著理論與實踐相結合的原則,本設計以單片機為核心控制器件控制LCD顯示模塊,通過硬件和軟件的共同配合實現(xiàn)在128×64點陣液晶屏上顯示漢字、字符等的功能,本系統(tǒng)由ATMEGA8單片機和點陣式液晶顯示屏模塊構成。1.2設計要求系統(tǒng)硬件設計:系統(tǒng)選用ATMEGA8單片機作為主控和處理

10、設備,LCD12864模塊作為輸出設備。系統(tǒng)軟件設計:微控制器處理和LCD模塊顯示部分的程序設計。1.3 LCD簡介及發(fā)展液晶顯示器是一種采用了液晶控制透光度技術來實現(xiàn)色彩的顯示器。眾所周知,即使長時間觀看LCD顯示屏幕也不會對眼睛造成傷害,這主要是因為LCD顯示器沒有輻射,畫面圖像很穩(wěn)定。LCD 可分為段位式LCD、字符式LCD 和點陣式LCD。其中,段位式LCD 和字符式LCD 只能用于字符和數(shù)字的簡單顯示,不能滿足圖形曲線和漢字顯示的要求;而點陣式LCD 不僅可以顯示字符、數(shù)字,還可以顯示各種圖形、曲線及漢字,并且可以實現(xiàn)屏幕上下左右滾動、動畫、分區(qū)開窗口、反轉、閃爍等功能,用途十分廣泛

11、。奧地利植物學家F·Reinetzer在一百多年前發(fā)現(xiàn)了液晶。然而,到20世紀60年代,液晶才逐漸被人類關注。1961年, F·Heimeier發(fā)現(xiàn)了液晶的動態(tài)散射相變等一系列的液晶電光效應。由此,美國RCA公司成功研制了一系列數(shù)字、字符的顯示器件以及液晶顯示的鐘表、駕駛臺顯示器等實用產品。1968年,日本當時正在興起開發(fā)電子產品的產業(yè),將大規(guī)模集成電路與液晶相結合,開發(fā)了一系列電子產品。從此,日本電子產業(yè)蓬勃發(fā)展,這也是日本微電子產業(yè)聞名世界的起因?,F(xiàn)代液晶顯示模塊具有低電壓、微功耗、易彩色化、被動顯示等特點, 是主流的顯示技術之一。1.4 AVR單片機1997年,ATM

12、EL發(fā)揮自己的技術特長,研發(fā)出了全新配置,采用精簡指令集的新型單片機,即AVR單片機。其中,ATMEGA8是ATMEL 公司在2002年第一季度推出的一款新型高檔單片機。與MCS-51單片機不同的是,AVR 單片機采用Harvard結構,在前一條指令執(zhí)行的時候就取出下一條指令,而且它的程序存儲器和數(shù)據(jù)存儲器是分開組織和尋址的。AVR單片機內部有三種不同性能和用途的存儲器Flash、EEPROM和RAM。2方案論證2.1方案一根據(jù)本課題內容,本設計擬采用MCS-51單片機控制液晶顯示器顯示漢字。MCS-51型號的單片機我曾在單片機原理、接口及應用的必修課中學習過,對該型號單片機的結構和如何控制都

13、比較熟悉。本次課題設計需要+5V電源為單片機及液晶顯示器提供電壓,所以,需要設計一個直流穩(wěn)壓電源來提供所需的+5V電壓。結合模擬電子技術基礎所學知識,我了解到,直流穩(wěn)壓電源又分為線性穩(wěn)壓電源和開關型穩(wěn)壓電源。然而,對于穩(wěn)定性要求不高的電子電路,整流、濾波后的直流電壓即可以作為供電電壓。而且我們曾在模擬電子技術中學習過整流、濾波電路的理論知識,還曾做過一個基于整流、濾波電路的直流穩(wěn)壓電源的實物,所以電源電路設計擬采用三端口穩(wěn)壓器7805及整流橋電路來搭建電路以獲得+5V電壓。本次設計要求采用點陣式液晶顯示器,我想用LCD1602作為顯示設備。2.2方案二當我查閱了有關資料,我就發(fā)現(xiàn)了另一型號的單

14、片機,即AVR單片機。結合所學的有關51系列單片機的知識以及對AVR單片機資料的查閱,我了解到,相比之下,AVR單片機比51系列單片機具有更加優(yōu)良的性能。最重要的是,AVR單片機能夠更高效的執(zhí)行程序代碼。而且,我認為,既然已經學習過MCS-51系列的單片機,有了單片機的使用的基礎,就應該舉一反三,所以,我決定挑戰(zhàn)性地使用AVR單片機來完成本次畢業(yè)設計。ATmega8L單片機我曾在以前的開放性試驗中接觸過,了解到該型號單片機芯片內部集成了較大容量的存儲器和豐富的硬件接口電路,適合于本次畢業(yè)設計。而且,AVR單片機的價格又與低檔單片機的價格相差不大。所以考慮到以上幾點,我決定對方案一進行改進,確定

15、使用單片機ATmega8L。相比而言,方案二在方案一的基礎上做了很大的改進,方案二無論是在實現(xiàn)的難易程度,還是在性能的優(yōu)越程度上都比方案一更佳。2.3方案三經過查閱有關點陣式液晶顯示器的資料,我發(fā)現(xiàn)了另一類型的點陣式液晶顯示器即LCD12864模塊,該模塊自帶中文字庫,如果使用該模塊來完成本次設計將會更易控制,也會使程序更加精簡。當LCD工作在并行工作狀態(tài)時, LCD1602會占用了CPU的很多引腳,這會降低系統(tǒng)的性價比。而LCD12864模塊不同,它僅使用幾根數(shù)據(jù)線,就可以完成數(shù)據(jù)的通信。所以,我決定采用LCD12864模塊即KXM12864作為本設計的顯示設備。3主要模塊簡介3.1 ATM

16、EGA8簡介Atmega8 的數(shù)據(jù)吞吐率高達 1MIPS/MHz,可以減緩系統(tǒng)在功耗和處理速度之間的矛盾。芯片圖:圖3.1 ATMEGA8芯片圖由上圖可知,該芯片有PORTB、PORTC和PORTD三個I/O口。其中,PD0、PD1為串行口復用腳,PD2、PD3為外部中斷輸入復用引腳,PD4、PD5為定時器輸入復用引腳。PC0PC5為模數(shù)轉換輸入復用引腳,PC6為復位復用引腳。PB6、PB7為外部時鐘信號輸入復用引腳。AVCC為端口A與A/D轉換器的電源,不用ADC時,應將其接VCC。AREF為模擬基準輸入復用引腳,不使用,則懸空。表一 ATmega8的端口引腳配置DDRXnPORTXnPUD

17、(SFIOR中)I/O上拉電阻說明00X輸入關閉高阻態(tài)010輸入打開被外部電路拉低時輸出電流011輸入關閉高阻態(tài)10X輸出關閉輸出低電平(漏電流)11X輸出關閉輸出高電平(源電流)DDRX為端口方向寄存器,當DDRX的某一位置1時,相應端口的引腳作為輸出使用。PORTX為端口數(shù)據(jù)寄存器,當引腳作為輸出使用時,PORTX的數(shù)據(jù)由相應引腳輸出。3.2 LCD12864模塊簡介 3.2.1 KXM12864主要技術參數(shù)和性能本設計采用帶中文字庫的圖形點陣液晶顯示器模塊,即使用KXM12864作為顯示設備。該顯示器模塊是一種圖形點陣式液晶顯示器,能顯示4行8列(16*16點陣)共32個漢字,也可以顯示

18、字符、圖形等。它主要由行驅動器和列驅動器組成,分辨率為128*64,指的是橫向有128個點,縱向有64個點。它含有國標一級、二級簡體中文字庫。內部有8192個漢字,所以,常用的漢字在該字庫中均能找到。它還含有16*8個ASCII碼字符。其電源電壓寬為+3.0+6.5V,即工作電壓在此范圍之間。工作溫度為-20 +70,當超過其工作溫度,液晶模塊則會反應很慢,或者顯示錯誤。3.2.2 KXM12864外形尺寸圖了解KXM12864的外形尺寸,可以在做產品時更好地規(guī)劃設計產品的布局。3.2.3 KXM12864液晶顯示指令系統(tǒng)根據(jù)該指令表,可以對該LCD顯示模塊進行初始化操作。其中,當RS=0,R

19、W=1,功能設定控制字為30H,如果設置D、C、B均為1,則顯示狀態(tài)開關控制字為0FH,清除屏幕控制字為01H,模式設置控制字為06H。當MCU向該模塊寫資料時,應當使RS=1,RW=0。這樣,就可以向該模塊寫入指令和數(shù)據(jù)。之后,即可顯示漢字。3.2.4 12864液晶顯示動態(tài)指標及術語表二 并行接口模塊說明: 管腳號管腳名稱電平管腳功能描述1VSS0V電源地2VCC+5V電源正3V0-對比度(亮度)調整4RS(CS)H/LRS=“H”,表示DB7DB0為顯示數(shù)據(jù)RS=“L”,表示DB7DB0為顯示指令數(shù)據(jù)5R/W(SID)H/LR/W=“H”,E=“H”,數(shù)據(jù)被讀到DB7DB0R/

20、W=“L”,E=“HL”, DB7DB0的數(shù)據(jù)被寫到IR或DR6E(SCLK)H/L使能信號7DB0H/L三態(tài)數(shù)據(jù)線8DB1H/L三態(tài)數(shù)據(jù)線9DB2H/L三態(tài)數(shù)據(jù)線10DB3H/L三態(tài)數(shù)據(jù)線11DB4H/L三態(tài)數(shù)據(jù)線12DB5H/L三態(tài)數(shù)據(jù)線13DB6H/L三態(tài)數(shù)據(jù)線14DB7H/L三態(tài)數(shù)據(jù)線15PSBH/LH:8位或4位并口方式,L:串口方式(見注釋)16NC-空腳17RESETH/L復位端18NC-LCD驅動電壓輸出端19BLAVDD背光源正端(+5V)20BLKKVSS背光源負端*注釋:如在實際應用中僅使用并口通訊模式,可將PSB接固定高電平,也可以將模塊上的J8和“VCC”用焊錫短接。

21、圖3.2.4(a) 8位并行連接時序圖圖3.2.4 (b) RS、RW功能設定示意圖4硬件設計4.1設計流程圖及設計思路晶振變壓器ATMEGA8SWITCHMPMAX232PC機整流器7805JUMPJUMPLCD12864圖4.1硬件電路框圖本設計的設計流程如上圖所示,首先要設計出一個+5V的直流穩(wěn)壓電源為該電路提供+5V電壓。之后,通過一個RS232電平轉換電路來實現(xiàn)PC機電平到單片機電平的轉換。最后,通過對ATMEGA8編寫程序來控制LCD12864模塊顯示漢字。其中,該單片機的時鐘信號是通過內部振蕩方式獲得。4.2各模塊電路設計4.2.1電源電路圖4.2.1(a) 直流穩(wěn)壓電路原理圖4

22、.2.1(b) 直流穩(wěn)壓電源電路圖本設計首先需要設計一個+5V的直流穩(wěn)壓電源。如上圖所示,220V電源經過變壓器降壓后,又經過整流器整流,再經三端口穩(wěn)壓器7805穩(wěn)壓,產生+5V電壓,給整個電路提供5v的直流電壓。其中通過對焊接好的硬件用萬用表進行測試,測得從變壓器端經變壓后的交流電壓為+9.36V,再經整流橋電路整流得到方向不變、大小隨時間變化的脈動電壓,再經濾波電容C1濾去其交流分量,得到比較平滑的直流電壓。其中,C1的值取得大一些,有利于減小輸出端的波紋電壓。之后,經三端口穩(wěn)壓器7805穩(wěn)壓后得到更加穩(wěn)定的直流電壓。最后,使用C2來防止發(fā)生意外跳變時,電壓輸出產生大的跳變,以此提高電源抗

23、瞬間脈沖沖擊干擾的能力。 4.2.2 LCD12864模塊控制電路圖4.2.2 LCD控制模塊電路圖如上圖所示,采用ATMEGA8對LCD12864模塊進行控制,其中,LCD12864模塊使用的是KXM12864,根據(jù)該型號液晶顯示器的特點,設計如下。該液晶顯示器共有20個引腳,由3.2.4中的表二知,LCD12864第1引腳VSS應接電源地;第2引腳接電源正VCC;第3引腳為對比度調整,在此可不接;第4、5、6引腳為控制信號直接接單片機的I/O口;從第7引腳到第14引腳為LCD的三態(tài)數(shù)據(jù)線,直接接單片機的I/O口;第15引腳為模式控制引腳,因為并行端口傳送數(shù)據(jù)較為快捷且簡單易控,所以本設計是

24、基于8位并行端口設計,因此,直接接VCC高電平;第16引腳,懸空;第17引腳為復位端,接高電平VCC;第18引腳,不接;第19、20引腳分別為背光源正和背光源負,因此,分別接電源正VCC和電源地。4.2.3 RS232電平轉換電路圖4.2.3 (a)RS232電平轉換電路MAX232芯片可將PC機的RS-232標準串口設計的單電源電平轉換為+5v單電源電平。RS232電平為-10+10V,單片機電平為TTL電平為05V。要實現(xiàn)上位機與下位機之間的串行通信,必須通過MAX232進行電平轉換,因為PC機串口采用的是RS232電平,而單片機采用的卻是TTL電平,如果不進行電平轉換,單片機跟PC機的串

25、口就不能進行直接通信。如上圖所示,從RS232端口輸出的信號經過MAX232芯片進行轉換,最后從T_I1和R_O1輸出信號進過ADC3和ADC4模數(shù)轉換成+5V的TTL電平到達ATMEGA8芯片。MAX232的芯片圖及管腳圖如下所示:圖4.2.3 (b)MAX232芯片圖及管腳圖4.2.4 時鐘電路圖4.2.4 時鐘電路圖該單片機時鐘信號是通過內部振蕩方式獲得,在引腳XTAL1和XTAL2上外接一個8MHz的晶振,即可構成內部振蕩方式。當外接一個8MHz的晶振后,就可以構成自激振蕩器并產生振蕩時鐘脈沖。其中,電容C_JT1和電容C_JT2起著穩(wěn)定振蕩頻率、快速起振的作用。4.3硬件焊接與調試本

26、設計中的重點是AVR單片機實驗板的制作。其中,ATMEGA8的焊接是十分重要的。因為該芯片是貼片式芯片,而且引腳數(shù)目較多,且引腳間距很小,所以不很容易焊接。對于ATMEGA8的焊接,必須使用尖頭烙鐵,且焊接溫度設定在270°C左右。焊接完成后,必須要檢測各引腳是否焊接正確、有無虛焊等。具體方法是,先使用放大鏡檢查引腳焊接有無虛焊、連焊,再用萬用表的電阻檔檢查相鄰引腳是否短路。檢測方法為將量程開關撥至電阻檔上,再將萬用表的兩個表筆分別放在兩引腳上,如果短路,則會發(fā)出蜂鳴的響聲,否則,為不短路。最后,進行通電檢查,使用PROGISP軟件對芯片進行查空,如果結果為查空成功,則表明芯片焊接正

27、常。最后,就是LCD12864模塊的焊接。該模塊一共有20個引腳,分別按照電路圖的連接逐個進行焊接。設計中,我在焊接ATMEGA8芯片時,將芯片的兩個引腳短路,但經檢查后將多余的錫去除,最后芯片焊接正常。按照上面的電路圖,再逐一進行焊接,之后,硬件焊接完成。最后一步是進行硬件調試,我在調試中又發(fā)現(xiàn)了虛焊與短路的問題,一是ATMEGA8相鄰兩個管腳連在了一起,后經烙鐵撥離后正常;二是LCD的兩個引腳虛焊,致使LCD插電后不亮。最后找到對應的引腳,重新焊接后正常。我認為,在焊接過程中最容易出現(xiàn)虛焊和短路的現(xiàn)象,所以在焊接時需要認真、細心。同時,也要有技巧性的焊接。比如,對焊錫的使用,使用焊錫的多少

28、要適當,太多容易短路,太少容易虛焊。為防止短路,還可以用烙鐵在焊接處涂抹適量的松香,以達到絕緣的目的。但是,建議在檢測沒有短路之后再涂抹松香,否則,如果出現(xiàn)問題,則不容易修改。4.4方案擴展方案擴展系統(tǒng)框圖:圖4.4 方案擴展系統(tǒng)框圖此擴展方案是在原來的設計的基礎上加入按鍵模塊。通過把按鍵直接與單片機I/O口連接,可以使單片機根據(jù)檢測按下的不同的按鍵來顯示不同的效果。具體做法是,編寫按鍵掃描程序,判斷哪個鍵按下,同時,要編寫按鍵消抖程序,以防錯判。之后,編寫程序根據(jù)按下的鍵來執(zhí)行相應的特殊的顯示效果,如滾動、閃爍等顯示效果。5軟件設計 5.1 LCD12864模塊初始化流程POWER ON 上

29、電延時>37msRESET LOWHIGHFUNCTION SET 功能設定 控制字 30HRSR/WDB7DB6DB5DB4DB3DB2DB1DB0000011X0XX延時>100usFUNCTION SET 功能設定 控制字 30HRSR/WDB7DB6DB5DB4DB3DB2DB1DB0000011X0XX延時>37usDISPLAY ON/OFF CONTROL 顯示開/關 控制字0FHRSR/WDB7DB6DB5DB4DB3DB2DB1DB00000001DCB延時>100usDISPLAY CLEAR 清除屏幕 控制字:01HRSR/WDB7DB6DB5DB

30、4DB3DB2DB1DB00000000001延時>10msENTRY MODEL SET 進入模式設置 控制字:06HRSR/WDB7DB6DB5DB4DB3DB2DB1DB000000001I/DSINITIALIZATION END 初始化結束圖5.1 LCD12864初始化流程圖5.2部分程序代碼5.2.1軟件延時延時程序是本設計中很重要的一部分,因為延時時間的長短不僅能決定該LCD模塊能否成功初始化,還決定了人眼能不能看到穩(wěn)定的顯示。在本設計中有兩個延時程序,以滿足不同延時時間的需要。而且,第二個延時程序的延時時間比第一個延時程序延時時間長。void delay1(unsign

31、ed int t)unsigned int j;for( ;t>0;t-)for (j=19;j>0;j-);void delay2(unsigned int t)unsigned int j;for( ;t>0;t-)for (j=6425;j>0;j-);5.2.2 端口輸出函數(shù) 由于本設計中從ATMEGA8單片機中的I/O口輸出數(shù)據(jù)時沒有使用某個整體的I/O口,只是使用了其中某個I/O口的一部分。所以傳送地址數(shù)據(jù)時,不能整體傳送,只能逐位傳送。而本設計中,又需多次使用數(shù)據(jù)傳送。所以為了簡便起見,則寫了一個從I/O口輸出8位數(shù)據(jù)的write函數(shù),以供傳送數(shù)據(jù)使用。v

32、oid write(unsigned char z) if (z&0x01)=0x01)PORTC|=0x08;/0000,1000 PC3=1else PORTC&=0xf7;/1111,0111 PC3=0if (z&0x02)=0x02)PORTC|=0x10;/0001,0000 PC4=1else PORTC&=0xef;/1110,1111 PC4=0if (z&0x04)=0x04)PORTC|=0x20;/0010,0000 PC5=1else PORTC&=0xdf;/1101,1111 PC5=0if (z&0x08)

33、=0x08)PORTB|=0x01;/0000,0001 PB0=1else PORTB&=0xfe;/1111,1110 PB0=0if (z&0x10)=0x10)PORTB|=0x02;/0000,0010 PB1=1else PORTB&=0xfd;/1111,1101 PB1=0if (z&0x20)=0x20)PORTB|=0x04;/0000,0100 PB2=1else PORTB&=0xfb;/1111,1011 PB2=0if (z&0x40)=0x40)PORTB|=0x08;/0000,1000 PB3=1else POR

34、TB&=0xf7;/1011,1111 PB3=0if (z&0x80)=0x80)PORTB|=0x10;/0001,0000 PB4=1else PORTB&=0xef;/1110,1111 PB4=05.2.3 寫數(shù)據(jù)函數(shù)由3.2.4中的8位并行時序圖及RS、RW功能設定示意圖知,RS為高電平時,表示寫數(shù)據(jù)。當RW為低電平時,表示MPU寫資料到模塊。當E為低電平時,延時一會兒,向I/O口準備數(shù)據(jù),到E為高電平時,沒有變化。再當E為高電平后,延時一會兒,令E為低電平,則數(shù)據(jù)寫入完全。最后使RW為高電平,RS為低電平,指令書寫完成。void write_12864da

35、t(unsigned char a)PORTC|=0x01;/0000,0001 rs=1 PC0=1 寫數(shù)據(jù)PORTC&=0xfd;/1111,1101 rw=0 PC1=0PORTC&=0xfb;/1111,1011 e=0 PC2=0delay1(1);write(a);PORTC|=0x04;/0000,0100 e=1 PC2=1delay1(10);PORTC&=0xfb;/1111,1011 e=0 PC2=0delay1(2);PORTC|=0x02;/0000,0010 rw=1 PC1=1PORTC&=0xfe;/1111,1110 rs=0

36、 PC0=05.2.4 寫指令函數(shù)由3.2.4中的8位并行時序圖及RS、RW功能設定示意圖知,RS為低電平時,表示寫指令。當RW為低電平時,表示MPU寫資料到模塊。當E為低電平時,延時一會兒,向I/O口準備數(shù)據(jù),到E為高電平時,沒有變化。再當E為高電平后,延時一會兒,令E為低電平,則數(shù)據(jù)寫入完全。最后使RW為高電平,RS為低電平,指令書寫完成。void write_12864com(unsigned char b)PORTC&=0xfe;/1111,1110 rs=0 PC0=0 寫指令PORTC&=0xfd;/1111,1101 rw=0 PC1=0PORTC&=0x

37、fb;/1111,1011 e=0 PC2=0delay1(1);write(b);PORTC|=0x04;/0000,0100 e=1 PC2=1delay1(10);PORTC&=0xfb;/1111,1011 e=0 PC2=0delay1(2);PORTC|=0x02;/0000,0010 rw=1 PC1=0PORTC&=0xfe;/1111,1110 rs=0 PC0=05.2.5 初始化函數(shù)要使LCD12864模塊顯示漢字,必須對該模塊進行初始化。由圖5.1初始化流程圖可知,先打開電源,等待大于40ms,再進行復位操作。本設計是直接將復位端接高電平。之后寫入控制字

38、,進行功能設定。接著延時等待,再進行顯示開關控制字設定,其中D=1、整體顯示ON,C=1、游標ON,B=1、游標位置ON。之后,進行清屏設置。最后,進行模式選擇設置,初始化過程結束。void initinal(void)delay2(20);write_12864com(0x30);/寫控制字30Hdelay1(4);write_12864com(0x30);/寫控制字30Hdelay1(4);write_12864com(0x0f);/ DCB均為一delay1(4);write_12864com(0x01);/清屏設置01Hdelay2(20);write_12864com(0x06);/

39、模式設置06Hdelay1(10);5.2.6 顯示函數(shù)RAM在液晶中的地址為80H9FH,地址指針自動加一,將漢字地址送入寫指令和寫數(shù)據(jù)函數(shù),即可顯示漢字。本顯示函數(shù)功能是顯示一首古詩鋤禾。void display(void)write_12864com(0x80);/ RAM區(qū)首地址,第一行首地址write_12864dat(0xb0);/ “ ”write_12864dat(0xa0);delay2(20);write_12864dat(0xb3);/ “鋤”write_12864dat(0xfa);delay2(20);write_12864dat(0xba);/ “禾”write_1

40、2864dat(0xcc);delay2(20);write_12864dat(0xc8);/ “日”write_12864dat(0xd5);delay2(20);write_12864dat(0xb5);/ “當”write_12864dat(0xb1);delay2(20);write_12864dat(0xce);/ “午”write_12864dat(0xe7);delay2(20);write_12864dat(0x2c);/ “,”delay2(40);write_12864com(0x90);/第二行首地址write_12864dat(0xb0);/ “ ”write_1286

41、4dat(0xa0);delay2(20);write_12864dat(0xba);/ “汗”write_12864dat(0xba);delay2(20);write_12864dat(0xb5);/ “滴”write_12864dat(0xce);delay2(20);write_12864dat(0xba);/ “禾”write_12864dat(0xcc);delay2(30);write_12864dat(0xcf);/ “下”write_12864dat(0xc2);delay2(20);write_12864dat(0xcd);/ “土”write_12864dat(0xc1)

42、;delay2(20);write_12864dat(0x2e);/ “?!眃elay2(40);write_12864com(0x88);/第三行首地址write_12864dat(0xb0);/ “ ”write_12864dat(0xa0);delay2(20);write_12864dat(0xcb);/ “誰”write_12864dat(0xad);delay2(20);write_12864dat(0xd6);/ “知”write_12864dat(0xaa);delay2(20);write_12864dat(0xc5);/ “盤”write_12864dat(0xcc);de

43、lay2(20);write_12864dat(0xd6);/ “中”write_12864dat(0xd0);delay2(20);write_12864dat(0xb2);/ “餐”write_12864dat(0xcd);delay2(20);write_12864dat(0x2c);/ “,”delay2(40);write_12864com(0x98);/第四行首地址write_12864dat(0xb0);/ “ ”write_12864dat(0xa0);delay2(20);write_12864dat(0xc1);/ “?!眞rite_12864dat(0xa3);delay

44、2(20);write_12864dat(0xc1);/ “?!眞rite_12864dat(0xa3);delay2(20);write_12864dat(0xbd);/ “皆”write_12864dat(0xd4);delay2(20);write_12864dat(0xd0);/ “辛”write_12864dat(0xc1);delay2(20);write_12864dat(0xbf);/ “苦”write_12864dat(0xe0);delay2(20);write_12864dat(0x2e);/ “?!眃elay2(40);5.3程序調試中的注意問題1、數(shù)據(jù)類型要正確,頭文

45、件要包含iom8v.h和macros.h。2、延時函數(shù)的使用。在初始化及顯示函數(shù)中,延時時間要適當長些,以正常穩(wěn)定地顯示漢字。所以,在編寫程序時,我編寫了兩個延時函數(shù),以供不同延時時間的需要。同時,在進行LCD顯示時,我發(fā)現(xiàn)每個漢字顯示時,同樣要較長時間的延時間隔,以達到觀察清晰的效果。3、PORTB和PORTC均為輸出,所以應將DDRX相應位設為1,即打開PORTB和PORTC端口。4、邏輯運算符號不能出錯,&表示按位與的運算,&&表示和運算。我在編寫程序時,將write函數(shù)中的&寫成了&&,導致程序編譯時正確,但將程序寫入芯片時,LCD卻不能

46、顯示漢字。5、值得提出的是,當硬件焊接完成,程序編寫完成后,將程序下載到單片機上時,LCD并沒有出現(xiàn)預期的結果,即并沒有顯示漢字。這時,當初步檢查了程序和硬件焊接均無誤后,繼續(xù)下載程序,但仍然不顯示漢字。所以,就用了一個測試函數(shù)來測試該單片機是否焊接正確。該函數(shù)為:Void test (void)DDRB=0XFF;DDRC=0XFF;PORTC|=0x08;/0000,1000 PC3=1/PORTC&=0xf7;/1111,0111 PC3=0PORTC|=0x10;/0001,0000 PC4=1/PORTC&=0xef;/1110,1111 PC4=0PORTC|=0x

47、20;/0010,0000 PC5=1/PORTC&=0xdf;/1101,1111 PC5=0PORTB|=0x01;/0000,0001 PB0=1/PORTB&=0xfe;/1111,1110 PB0=0PORTB|=0x02;/0000,0010 PB1=1/PORTB&=0xfd;/1111,1101 PB1=0PORTB|=0x04;/0000,0100 PB2=1/PORTB&=0xfb;/1111,1011 PB2=0PORTB|=0x08;/0000,1000 PB3=1/PORTB&=0xf7;/1011,1111 PB3=0PORT

48、B|=0x10;/0001,0000 PB4=1/PORTB&=0xef;/1110,1111 PB4=0執(zhí)行該函數(shù)后,用萬用表分別測試ATMEGA8的PC3、PC4、PC5、PB0、PB1、PB2、PB3、PB4是否均為高電平;之后再修改上述函數(shù)將相應端口的位置為0,再用萬用表分別測試ATMEGA8的PC3、PC4、PC5、PB0、PB1、PB2、PB3、PB4是否均為低電平。通過測試,發(fā)現(xiàn)將ATMEGA8的第23引腳和第24引腳相連了,經過撥離后,執(zhí)行該函數(shù),并進行硬件檢測,得出結果ATMEGA8焊接最終正常。再次進行下載程序,但LCD仍然沒有顯示漢字。之后,又進行了對RS,RW,

49、E引腳的檢測。檢測函數(shù)為:Void test2(void)DDRB=0XFF;DDRC=0XFF;PORTC|=0x01;/0000,0001 rs=1 PC0=1PORTC&=0xfd;/1111,1101 rw=0 PC1=0PORTC&=0xfb;/1111,1011 e=0 PC2=0PORTC&=0xfe;/1111,1110 rs=0 PC0=0PORTC|=0x02;/0000,0010 rw=1 PC1=0PORTC|=0x04;/0000,0100 e=1 PC2=1檢測方法同上,檢測結果為焊接正確。鑒于以上檢測,則對initial函數(shù)進行檢測。由于i

50、nitial函數(shù)中先執(zhí)行延時函數(shù),之后執(zhí)行了write_12864com函數(shù),則進入write_12864com函數(shù)檢測,而該函數(shù)在執(zhí)行了RS=0,RW=0和E=0后,又執(zhí)行了延時函數(shù),上面已檢測過RS、RW、E均無焊接錯誤,且延時函數(shù)無誤,接著,執(zhí)行write函數(shù)。于是進行write函數(shù)檢測,檢測函數(shù)為:Void test3(void)DDRB=0XFF;DDRC=0XFF;Write_12864com(0x30);void write_12864com(unsigned char b)PORTC&=0xfe;/1111,1110 rs=0 PC0=0 PORTC&=0xfd

51、;/1111,1101 rw=0 PC1=0PORTC&=0xfb;/1111,1011 e=0 PC2=0delay1(1);/*PORTC|=0x04;/0000,0100 e=1 PC2=1delay1(10);PORTC&=0xfb;/1111,1011 e=0 PC2=0delay1(2);PORTC|=0x02;/0000,0010 rw=1 PC1=0PORTC&=0xfe;/1111,1110 rs=0 PC0=0*/如果上述函數(shù)正確執(zhí)行,則使用萬用表測得的結果應為:PC0=0、PC1=0、PC2=0、PC3=0、PC4=0、PC5=0、PB0=0、PB

52、1=1、PB2=1、PB3=0、PB4=0。然而,發(fā)現(xiàn)測得的結果與預期結果不同,所以發(fā)現(xiàn)了問題。經仔細檢查程序,發(fā)現(xiàn)將write函數(shù)中的&寫成了&&,導致程序編譯時正確,但將程序寫入芯片時,LCD卻不能顯示漢字。經過改正后,重新向ATMEGA8中下載程序,結果LCD顯示出漢字,程序調試成功。6實物與實測效果展示 6.1實物展示圖6.1(a) 硬件實物圖圖6.1(b) AVR開發(fā)板實物圖6.2實測效果展示 圖6.2 顯示漢字結論本設計主要是設計一個微處理器控制的點陣式液晶顯示器的控制電路。所以,經過認真分析和結合以前所學知識,我采用ATMEGA8作為MPU來控制KXM12

53、864模塊顯示漢字。在本次設計中,經過多次調試與檢錯,最終實現(xiàn)了顯示漢字的功能。本設計要實現(xiàn)的功能并不復雜。簡而言之,就是使用一個單片機來控制LCD液晶模塊顯示漢字。然而,我認為本設計較為復雜之處就是硬件電路的焊接。其中最重要的就是ATMEGA8芯片的焊接,由于該芯片是貼片式的,以前接觸較少,所以焊接時發(fā)生了短路及虛焊等錯誤。其次就是LCD模塊的20個引腳的焊接,由于這些引腳相鄰間隔小,導致焊接出現(xiàn)短路情況。然而,經過改正,焊接正常。之后,就是AVR開發(fā)板的其它電路元件的焊接,由于之前做過焊接的實驗,所以,這部分焊接較熟練。最后,就是軟件設計,該部分采用C語言設計,由于實現(xiàn)功能較為簡單,因此,

54、設計時也較易完成??陀^地說,本設計較為容易,雖然實現(xiàn)了最基本的顯示漢字的功能,但并沒有更多的展示出單片機對LCD模塊控制的效果。這樣,本設計給人的感覺較為單一,不能豐富多彩的展示單片機對LCD模塊控制的優(yōu)勢。所以,為了更多地展示出單片機的強大功能,可以給單片機增加輸入設備如按鍵等,增加文字和字符的顯示效果,如滾動、閃爍等。這樣可以根據(jù)按鍵按下的鍵來顯示相應的效果。同時,還需要編寫相應的程序來實現(xiàn)這些效果。感言當我的硬件焊接完成,同時軟件調試成功,當將程序下載到單片機上,LCD模塊顯示出漢字時,我覺得很有成就感。因為,終于憑借著自己的努力,我完成了本次畢業(yè)設計的實物制作部分。雖然,這個過程中出現(xiàn)了這樣或那樣的問題,但是經過認真分析和改正都順利地解決了。畢業(yè)設計接近尾聲,我感觸很多?;叵氘敵?,當剛看到畢業(yè)設計題目時,我有一些迷茫,不知從何處開始做起。但是,當詢問了指導老師后,我對該題目有了初步的認識。之后,就結合以前所學知識,對該設計進行認真分析。最后確定使用ATMEGA8單片機作為微控制器來控制KXM12864模塊顯示漢字來詮

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論