版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
...wd......wd......wd...單片機控制的LCD漢字顯示電路設計摘要近年來,隨著電子行業(yè)的開展,單片機的應用越來越廣泛,基于單片機的電子電路的設計也越來越多。所以,單片機在電子教學中越來越普遍。本設計介紹的是以ATMEGA8單片機為核心的液晶顯示屏控制系統(tǒng)。該設計詳細闡述了其工作原理、基本功能框圖、主要設計方法及工作流程。本設計提出了一種能實時控制顯示內容的基于單片機的液晶顯示屏控制系統(tǒng)設計方案,給出了該單片機的硬件電路和軟件程序,最終顯示出漢字的結果。具體方法是首先設計并焊接出一個AVR單片機開發(fā)板,基于此開發(fā)板設計出LCD模塊顯示電路。之后,編寫LCD模塊初始化程序和顯示程序。最后下載程序到單片機,LCD顯示出漢字。關鍵詞:Atmega8控制LCD12864顯示TitleThecontrolcircuitdesignofthedot-matrixliquidcrystaldisplaycontrolledbythemicroprocessorAbstractInrecentyears,withthedevelopmentoftheelectronicsindustry,theapplicationoftheMicrocontrollerUnitisbecomingmoreandmorewidely,also,thereismoreandmoreelectroniccircuitdesignbasedontheMicrocontrollerUnit.Therefore,theMicrocontrollerUnitusingintheelectronicteachingisbecomingmorecommon.ThisdesignintroducestheliquidcrystaldisplaycontrolsystembasedontheATMEGA8microcontroller.Thisdesignelaboratedonitsworkingprinciple,thebasicfunctionalblockdiagram,maindesignmethodsandworkingprocess.ThisdesignputsforwardtoadesignschemebasedontheMicrocontrollerUnit,whichcancontroltheshowingcontentoftheLCDscreencontrollingsystemattherealtime.Thespecificmethodis
that,firstlyweshoulddesignandweldintoanAVRMicrocontrollerdevelopmentboardandthendesignaLCDmoduledisplaycircuitbasedonthedevelopmentboard.Afterthat,writetheLCDmoduleinitializationprogramanddisplayingprogram.Atlast,downloadtheprogramtotheMCU,andtheLCDwillshowtheChinesecharacters.KeywordsATMEGA8controlLCD12864displaying目次摘要 IAbstract II目次 III1概述 11.1課題背景 11.2設計要求 11.3LCD簡介及開展 11.4AVR單片機 22方案論證 22.1方案一 22.2方案二 32.3方案三 33主要模塊簡介 33.1ATMEGA8簡介 33.2LCD12864模塊簡介 43.2.1KXM12864主要技術參數(shù)和性能 43.2.2KXM12864外形尺寸圖 53.2.3KXM12864液晶顯示指令系統(tǒng) 63.2.412864液晶顯示動態(tài)指標及術語 74硬件設計 94.1設計流程圖及設計思路 94.2各模塊電路設計 104.2.1電源電路 104.2.2LCD12864模塊控制電路 114.2.3RS232電平轉換電路 124.2.4時鐘電路 134.3硬件焊接與調試 144.4方案擴展 145軟件設計 165.1LCD12864模塊初始化流程 16 165.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附錄A 33硬件原理圖〔基于protel99se〕 33附錄B 34程序代碼 34附錄C 40元器件規(guī)格清單 401概述自20世紀以來,電子行業(yè)發(fā)生著翻天覆地的變化。電子行業(yè)的開展推動著社會的開展,因此,世界各國也大力開展電子行業(yè)。其中,在電子行業(yè)中,顯示器產(chǎn)業(yè)是其中尤為重要的產(chǎn)業(yè)之一。然而,在顯示器產(chǎn)業(yè)中,LCD技術是最重要的技術之一。眾所周知,單片機像是電子行業(yè)中發(fā)揮著巨大作用的精靈。它的能耗小、價格低廉,在簡單的電子實驗方面的應用非常廣泛,在教育教學中深受廣闊電子教育工作者的喜愛。1.1課題背景在電子行業(yè)中,LCD已被公認為是媒體時代的關鍵器件,它的低功耗、體積小、易于實現(xiàn)畫面顯示及優(yōu)良的全色顯示性能等特點,使其在現(xiàn)代社會中得到了廣泛的應用??梢哉f,LCD是本世紀初最有活力的電子產(chǎn)品之一。與此同時,單片機的應用領域也非常廣泛,大到導彈的導航裝置,飛機上各種儀表的控制,小到廣泛使用的智能IC卡,比方學校中使用的校園一卡通等,這些都離不開單片機。因此,通過使用單片機可以使我們完成很多令我們意想不到的事情。所以,本著理論與實踐相結合的原那么,本設計以單片機為核心控制器件控制LCD顯示模塊,通過硬件和軟件的共同配合實現(xiàn)在128×64點陣液晶屏上顯示漢字、字符等的功能,本系統(tǒng)由ATMEGA8單片機和點陣式液晶顯示屏模塊構成。1.2設計要求系統(tǒng)硬件設計:系統(tǒng)選用ATMEGA8單片機作為主控和處理設備,LCD12864模塊作為輸出設備。系統(tǒng)軟件設計:微控制器處理和LCD模塊顯示局部的程序設計。1.3LCD簡介及開展液晶顯示器是一種采用了液晶控制透光度技術來實現(xiàn)色彩的顯示器。眾所周知,即使長時間觀看LCD顯示屏幕也不會對眼睛造成傷害,這主要是因為LCD顯示器沒有輻射,畫面圖像很穩(wěn)定。LCD可分為段位式LCD、字符式LCD和點陣式LCD。其中,段位式LCD和字符式LCD只能用于字符和數(shù)字的簡單顯示,不能滿足圖形曲線和漢字顯示的要求;而點陣式LCD不僅可以顯示字符、數(shù)字,還可以顯示各種圖形、曲線及漢字,并且可以實現(xiàn)屏幕上下左右滾動、動畫、分區(qū)開窗口、反轉、閃爍等功能,用途十分廣泛。奧地利植物學家F·Reinetzer在一百多年前發(fā)現(xiàn)了液晶。然而,到20世紀60年代,液晶才逐漸被人類關注。1961年,F(xiàn)·Heimeier發(fā)現(xiàn)了液晶的動態(tài)散射相變等一系列的液晶電光效應。由此,美國RCA公司成功研制了一系列數(shù)字、字符的顯示器件以及液晶顯示的鐘表、駕駛臺顯示器等實用產(chǎn)品。1968年,日本當時正在興起開發(fā)電子產(chǎn)品的產(chǎn)業(yè),將大規(guī)模集成電路與液晶相結合,開發(fā)了一系列電子產(chǎn)品。從此,日本電子產(chǎn)業(yè)蓬勃開展,這也是日本微電子產(chǎn)業(yè)聞名世界的起因?,F(xiàn)代液晶顯示模塊具有低電壓、微功耗、易彩色化、被動顯示等特點,是主流的顯示技術之一。1.4AVR單片機1997年,ATMEL發(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型號的單片機我曾在單片機原理、接口及應用的必修課中學習過,對該型號單片機的構造和如何控制都比較熟悉。本次課題設計需要+5V電源為單片機及液晶顯示器提供電壓,所以,需要設計一個直流穩(wěn)壓電源來提供所需的+5V電壓。結合模擬電子技術根基所學知識,我了解到,直流穩(wěn)壓電源又分為線性穩(wěn)壓電源和開關型穩(wěn)壓電源。然而,對于穩(wěn)定性要求不高的電子電路,整流、濾波后的直流電壓即可以作為供電電壓。而且我們曾在模擬電子技術中學習過整流、濾波電路的理論知識,還曾做過一個基于整流、濾波電路的直流穩(wěn)壓電源的實物,所以電源電路設計擬采用三端口穩(wěn)壓器7805及整流橋電路來搭建電路以獲得+5V電壓。本次設計要求采用點陣式液晶顯示器,我想用LCD1602作為顯示設備。2.2方案二當我查閱了有關資料,我就發(fā)現(xiàn)了另一型號的單片機,即AVR單片機。結合所學的有關51系列單片機的知識以及對AVR單片機資料的查閱,我了解到,相比之下,AVR單片機比51系列單片機具有更加優(yōu)良的性能。最重要的是,AVR單片機能夠更高效的執(zhí)行程序代碼。而且,我認為,既然已經(jīng)學習過MCS-51系列的單片機,有了單片機的使用的根基,就應該舉一反三,所以,我決定挑戰(zhàn)性地使用AVR單片機來完成本次畢業(yè)設計。ATmega8L單片機我曾在以前的開放性試驗中接觸過,了解到該型號單片機芯片內部集成了較大容量的存儲器和豐富的硬件接口電路,適合于本次畢業(yè)設計。而且,AVR單片機的價格又與低檔單片機的價格相差不大。所以考慮到以上幾點,我決定對方案一進展改進,確定使用單片機ATmega8L。相比而言,方案二在方案一的根基上做了很大的改進,方案二無論是在實現(xiàn)的難易程度,還是在性能的優(yōu)越程度上都比方案一更佳。2.3方案三經(jīng)過查閱有關點陣式液晶顯示器的資料,我發(fā)現(xiàn)了另一類型的點陣式液晶顯示器即LCD12864模塊,該模塊自帶中文字庫,如果使用該模塊來完成本次設計將會更易控制,也會使程序更加精簡。當LCD工作在并行工作狀態(tài)時,LCD1602會占用了CPU的很多引腳,這會降低系統(tǒng)的性價比。而LCD12864模塊不同,它僅使用幾根數(shù)據(jù)線,就可以完成數(shù)據(jù)的通信。所以,我決定采用LCD12864模塊即KXM12864作為本設計的顯示設備。3主要模塊簡介3.1ATMEGA8簡介Atmega8的數(shù)據(jù)吞吐率高達1MIPS/MHz,可以減緩系統(tǒng)在功耗和處理速度之間的矛盾。芯片圖:圖3.1ATMEGA8芯片圖由上圖可知,該芯片有PORTB、PORTC和PORTD三個I/O口。其中,PD0、PD1為串行口復用腳,PD2、PD3為外部中斷輸入復用引腳,PD4、PD5為定時器輸入復用引腳。PC0~PC5為模數(shù)轉換輸入復用引腳,PC6為復位復用引腳。PB6、PB7為外部時鐘信號輸入復用引腳。AVCC為端口A與A/D轉換器的電源,不用ADC時,應將其接VCC。AREF為模擬基準輸入復用引腳,不使用,那么懸空。表一ATmega8的端口引腳配置DDRXnPORTXnPUD(SFIOR中)I/O上拉電阻說明00X輸入關閉高阻態(tài)010輸入翻開被外部電路拉低時輸出電流011輸入關閉高阻態(tài)10X輸出關閉輸出低電平〔漏電流〕11X輸出關閉輸出高電平〔源電流〕DDRX為端口方向存放器,當DDRX的某一位置1時,相應端口的引腳作為輸出使用。PORTX為端口數(shù)據(jù)存放器,當引腳作為輸出使用時,PORTX的數(shù)據(jù)由相應引腳輸出。3.2LCD12864模塊簡介3.2.1KXM12864主要技術參數(shù)和性能本設計采用帶中文字庫的圖形點陣液晶顯示器模塊,即使用KXM12864作為顯示設備。該顯示器模塊是一種圖形點陣式液晶顯示器,能顯示4行8列〔16*16點陣〕共32個漢字,也可以顯示字符、圖形等。它主要由行驅動器和列驅動器組成,分辨率為128*64,指的是橫向有128個點,縱向有64個點。它含有國標一級、二級簡體中文字庫。內部有8192個漢字,所以,常用的漢字在該字庫中均能找到。它還含有16*8個ASCII碼字符。其電源電壓寬為+3.0~+6.5V,即工作電壓在此范圍之間。工作溫度為-20℃~+70℃,當超過其工作溫度,液晶模塊那么會反響很慢,或者顯示錯誤。3.2.2KXM12864外形尺寸圖了解KXM12864的外形尺寸,可以在做產(chǎn)品時更好地規(guī)劃設計產(chǎn)品的布局。3.2.3KXM12864液晶顯示指令系統(tǒng)根據(jù)該指令表,可以對該LCD顯示模塊進展初始化操作。其中,當RS=0,RW=1,功能設定控制字為30H,如果設置D、C、B均為1,那么顯示狀態(tài)開關控制字為0FH,去除屏幕控制字為01H,模式設置控制字為06H。當MCU向該模塊寫資料時,應當使RS=1,RW=0。這樣,就可以向該模塊寫入指令和數(shù)據(jù)。之后,即可顯示漢字。3.2.412864液晶顯示動態(tài)指標及術語表二并行接口模塊說明:管腳號管腳名稱電平管腳功能描述1VSS0V電源地2VCC+5V電源正3V0-比照度〔亮度〕調整4RS(CS〕H/LRS=“H〞,表示DB7——DB0為顯示數(shù)據(jù)RS=“L〞,表示DB7——DB0為顯示指令數(shù)據(jù)5R/W(SID)H/LR/W=“H〞,E=“H〞,數(shù)據(jù)被讀到DB7——DB0R/W=“L〞,E=“H→L〞,DB7——DB0的數(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〞用焊錫短接。圖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.2.1〔b〕直流穩(wěn)壓電源電路圖本設計首先需要設計一個+5V的直流穩(wěn)壓電源。如上圖所示,220V電源經(jīng)過變壓器降壓后,又經(jīng)過整流器整流,再經(jīng)三端口穩(wěn)壓器7805穩(wěn)壓,產(chǎn)生+5V電壓,給整個電路提供5v的直流電壓。其中通過對焊接好的硬件用萬用表進展測試,測得從變壓器端經(jīng)變壓后的交流電壓為+9.36V,再經(jīng)整流橋電路整流得到方向不變、大小隨時間變化的脈動電壓,再經(jīng)濾波電容C1濾去其交流分量,得到比較平滑的直流電壓。其中,C1的值取得大一些,有利于減小輸出端的波紋電壓。之后,經(jīng)三端口穩(wěn)壓器7805穩(wěn)壓后得到更加穩(wěn)定的直流電壓。最后,使用C2來防止發(fā)生意外跳變時,電壓輸出產(chǎn)生大的跳變,以此提高電源抗瞬間脈沖沖擊干擾的能力。4.2.2LCD12864模塊控制電路圖4.2.2LCD控制模塊電路圖如上圖所示,采用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ù)較為快捷且簡單易控,所以本設計是基于8位并行端口設計,因此,直接接VCC高電平;第16引腳,懸空;第17引腳為復位端,接高電平VCC;第18引腳,不接;第19、20引腳分別為背光源正和背光源負,因此,分別接電源正VCC和電源地。4.2.3RS232電平轉換電路圖4.2.3〔a〕RS232電平轉換電路MAX232芯片可將PC機的RS-232標準串口設計的單電源電平轉換為+5v單電源電平。RS232電平為-10~+10V,單片機電平為TTL電平為0~5V。要實現(xiàn)上位機與下位機之間的串行通信,必須通過MAX232進展電平轉換,因為PC機串口采用的是RS232電平,而單片機采用的卻是TTL電平,如果不進展電平轉換,單片機跟PC機的串口就不能進展直接通信。如上圖所示,從RS232端口輸出的信號經(jīng)過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的晶振后,就可以構成自激振蕩器并產(chǎn)生振蕩時鐘脈沖。其中,電容C_JT1和電容C_JT2起著穩(wěn)定振蕩頻率、快速起振的作用。4.3硬件焊接與調試本設計中的重點是AVR單片機實驗板的制作。其中,ATMEGA8的焊接是十分重要的。因為該芯片是貼片式芯片,而且引腳數(shù)目較多,且引腳間距很小,所以不很容易焊接。對于ATMEGA8的焊接,必須使用尖頭烙鐵,且焊接溫度設定在270°C左右。焊接完成后,必須要檢測各引腳是否焊接正確、有無虛焊等。具體方法是,先使用放大鏡檢查引腳焊接有無虛焊、連焊,再用萬用表的電阻檔檢查相鄰引腳是否短路。檢測方法為將量程開關撥至電阻檔上,再將萬用表的兩個表筆分別放在兩引腳上,如果短路,那么會發(fā)出蜂鳴的響聲,否那么,為不短路。最后,進展通電檢查,使用PROGISP軟件對芯片進展查空,如果結果為查空成功,那么說明芯片焊接正常。最后,就是LCD12864模塊的焊接。該模塊一共有20個引腳,分別按照電路圖的連接逐個進展焊接。設計中,我在焊接ATMEGA8芯片時,將芯片的兩個引腳短路,但經(jīng)檢查后將多余的錫去除,最后芯片焊接正常。按照上面的電路圖,再逐一進展焊接,之后,硬件焊接完成。最后一步是進展硬件調試,我在調試中又發(fā)現(xiàn)了虛焊與短路的問題,一是ATMEGA8相鄰兩個管腳連在了一起,后經(jīng)烙鐵撥離后正常;二是LCD的兩個引腳虛焊,致使LCD插電后不亮。最后找到對應的引腳,重新焊接后正常。我認為,在焊接過程中最容易出現(xiàn)虛焊和短路的現(xiàn)象,所以在焊接時需要認真、細心。同時,也要有技巧性的焊接。比方,對焊錫的使用,使用焊錫的多少要適當,太多容易短路,太少容易虛焊。為防止短路,還可以用烙鐵在焊接處涂抹適量的松香,以到達絕緣的目的。但是,建議在檢測沒有短路之后再涂抹松香,否那么,如果出現(xiàn)問題,那么不容易修改。4.4方案擴展方案擴展系統(tǒng)框圖:圖4.4方案擴展系統(tǒng)框圖此擴展方案是在原來的設計的根基上參加按鍵模塊。通過把按鍵直接與單片機I/O口連接,可以使單片機根據(jù)檢測按下的不同的按鍵來顯示不同的效果。具體做法是,編寫按鍵掃描程序,判斷哪個鍵按下,同時,要編寫按鍵消抖程序,以防錯判。之后,編寫程序根據(jù)按下的鍵來執(zhí)行相應的特殊的顯示效果,如滾動、閃爍等顯示效果。5軟件設計5.1LCD12864模塊初始化流程POWERON上電POWERON上電延時>37msRESETLOW→HIGHFUNCTIONSET功能設定控制字30HRSR/WDB7DB6DB5DB4DB3DB2DB1DB0000011X0XX延時>100usFUNCTIONSET功能設定控制字30HRSR/WDB7DB6DB5DB4DB3DB2DB1DB0000011X0XX延時>37usDISPLAYON/OFFCONTROL顯示開/關控制字0FHRSR/WDB7DB6DB5DB4DB3DB2DB1DB00000001DCB延時>100usDISPLAYCLEAR去除屏幕控制字:01HRSDISPLAYCLEAR去除屏幕控制字:01HRSR/WDB7DB6DB5DB4DB3DB2DB1DB00000000001延時>10msENTRYMODELSET進入模式設置控制字:06HRSR/WDB7DB6DB5DB4DB3DB2DB1DB000000001I/DSINITIALIZATIONEND初始化完畢5.2局部程序代碼5.2.1軟件延時延時程序是本設計中很重要的一局部,因為延時時間的長短不僅能決定該LCD模塊能否成功初始化,還決定了人眼能不能看到穩(wěn)定的顯示。在本設計中有兩個延時程序,以滿足不同延時時間的需要。而且,第二個延時程序的延時時間比第一個延時程序延時時間長。voiddelay1(unsignedintt){unsignedintj;for(;t>0;t--)for(j=19;j>0;j--);}voiddelay2(unsignedintt){unsignedintj;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ù)使用。voidwrite(unsignedcharz){if((z&0x01)==0x01)PORTC|=0x08;//0000,1000PC3=1elsePORTC&=0xf7;//1111,0111PC3=0if((z&0x02)==0x02)PORTC|=0x10;//0001,0000PC4=1elsePORTC&=0xef;//1110,1111PC4=0if((z&0x04)==0x04)PORTC|=0x20;//0010,0000PC5=1elsePORTC&=0xdf;//1101,1111PC5=0if((z&0x08)==0x08)PORTB|=0x01;//0000,0001PB0=1elsePORTB&=0xfe;//1111,1110PB0=0if((z&0x10)==0x10)PORTB|=0x02;//0000,0010PB1=1elsePORTB&=0xfd;//1111,1101PB1=0if((z&0x20)==0x20)PORTB|=0x04;//0000,0100PB2=1elsePORTB&=0xfb;//1111,1011PB2=0if((z&0x40)==0x40)PORTB|=0x08;//0000,1000PB3=1elsePORTB&=0xf7;//1011,1111PB3=0if((z&0x80)==0x80)PORTB|=0x10;//0001,0000PB4=1elsePORTB&=0xef;//1110,1111PB4=0}5.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為低電平,指令書寫完成。voidwrite_12864dat(unsignedchara){PORTC|=0x01;//0000,0001rs=1PC0=1寫數(shù)據(jù)PORTC&=0xfd;//1111,1101rw=0PC1=0PORTC&=0xfb;//1111,1011e=0PC2=0delay1(1);write(a);PORTC|=0x04;//0000,0100e=1PC2=1delay1(10);PORTC&=0xfb;//1111,1011e=0PC2=0delay1(2);PORTC|=0x02;//0000,0010rw=1PC1=1PORTC&=0xfe;//1111,1110rs=0PC0=0}5.2.4寫指令函數(shù)由3.2.4中的8位并行時序圖及RS、RW功能設定示意圖知,RS為低電平時,表示寫指令。當RW為低電平時,表示MPU寫資料到模塊。當E為低電平時,延時一會兒,向I/O口準備數(shù)據(jù),到E為高電平時,沒有變化。再當E為高電平后,延時一會兒,令E為低電平,那么數(shù)據(jù)寫入完全。最后使RW為高電平,RS為低電平,指令書寫完成。voidwrite_12864com(unsignedcharb){PORTC&=0xfe;//1111,1110rs=0PC0=0寫指令PORTC&=0xfd;//1111,1101rw=0PC1=0PORTC&=0xfb;//1111,1011e=0PC2=0delay1(1);write(b);PORTC|=0x04;//0000,0100e=1PC2=1delay1(10);PORTC&=0xfb;//1111,1011e=0PC2=0delay1(2);PORTC|=0x02;//0000,0010rw=1PC1=0PORTC&=0xfe;//1111,1110rs=0PC0=0}5.2.5初始化函數(shù)要使LCD12864模塊顯示漢字,必須對該模塊進展初始化。由圖5.1初始化流程圖可知,先翻開電源,等待大于40ms,再進展復位操作。本設計是直接將復位端接高電平。之后寫入控制字,進展功能設定。接著延時等待,再進展顯示開關控制字設定,其中D=1、整體顯示ON,C=1、游標ON,B=1、游標位置ON。之后,進展清屏設置。最后,進展模式選擇設置,初始化過程完畢。voidinitinal(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);//模式設置06Hdelay1(10);}5.2.6顯示函數(shù)RAM在液晶中的地址為80H~9FH,地址指針自動加一,將漢字地址送入寫指令和寫數(shù)據(jù)函數(shù),即可顯示漢字。本顯示函數(shù)功能是顯示一首古詩?鋤禾?。voiddisplay(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_12864dat(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_12864dat(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);delay2(20);write_12864dat(0x2e);//“。〞delay2(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);delay2(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);//“粒〞write_12864dat(0xa3);delay2(20);write_12864dat(0xc1);//“粒〞write_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);//“。〞delay2(40);}5.3程序調試中的注意問題1、數(shù)據(jù)類型要正確,頭文件要包含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卻不能顯示漢字。5、值得提出的是,當硬件焊接完成,程序編寫完成后,將程序下載到單片機上時,LCD并沒有出現(xiàn)預期的結果,即并沒有顯示漢字。這時,當初步檢查了程序和硬件焊接均無誤后,繼續(xù)下載程序,但仍然不顯示漢字。所以,就用了一個測試函數(shù)來測試該單片機是否焊接正確。該函數(shù)為:Voidtest(void){DDRB=0XFF;DDRC=0XFF;PORTC|=0x08;//0000,1000PC3=1//PORTC&=0xf7;//1111,0111PC3=0PORTC|=0x10;//0001,0000PC4=1//PORTC&=0xef;//1110,1111PC4=0PORTC|=0x20;//0010,0000PC5=1//PORTC&=0xdf;//1101,1111PC5=0PORTB|=0x01;//0000,0001PB0=1//PORTB&=0xfe;//1111,1110PB0=0PORTB|=0x02;//0000,0010PB1=1//PORTB&=0xfd;//1111,1101PB1=0PORTB|=0x04;//0000,0100PB2=1//PORTB&=0xfb;//1111,1011PB2=0PORTB|=0x08;//0000,1000PB3=1//PORTB&=0xf7;//1011,1111PB3=0PORTB|=0x10;//0001,0000PB4=1//PORTB&=0xef;//1110,1111PB4=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引腳相連了,經(jīng)過撥離后,執(zhí)行該函數(shù),并進展硬件檢測,得出結果ATMEGA8焊接最終正常。再次進展下載程序,但LCD仍然沒有顯示漢字。之后,又進展了對RS,RW,E引腳的檢測。檢測函數(shù)為:Voidtest2(void){DDRB=0XFF;DDRC=0XFF;PORTC|=0x01;//0000,0001rs=1PC0=1PORTC&=0xfd;//1111,1101rw=0PC1=0PORTC&=0xfb;//1111,1011e=0PC2=0PORTC&=0xfe;//1111,1110rs=0PC0=0PORTC|=0x02;//0000,0010rw=1PC1=0PORTC|=0x04;//0000,0100e=1PC2=1}檢測方法同上,檢測結果為焊接正確。鑒于以上檢測,那么對initial函數(shù)進展檢測。由于initial函數(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ù)為:Voidtest3(void){DDRB=0XFF;DDRC=0XFF;Write_12864com(0x30);}voidwrite_12864com(unsignedcharb){PORTC&=0xfe;//1111,1110rs=0PC0=0PORTC&=0xfd;//1111,1101rw=0PC1=0PORTC&=0xfb;//1111,1011e=0PC2=0delay1(1);/*PORTC|=0x04;//0000,0100e=1PC2=1delay1(10);PORTC&=0xfb;//1111,1011e=0PC2=0delay1(2);PORTC|=0x02;//0000,0010rw=1PC1=0PORTC&=0xfe;//1111,1110rs=0PC0=0*/}如果上述函數(shù)正確執(zhí)行,那么使用萬用表測得的結果應為:PC0=0、PC1=0、PC2=0、PC3=0、PC4=0、PC5=0、PB0=0、PB1=1、PB2=1、PB3=0、PB4=0。然而,發(fā)現(xiàn)測得的結果與預期結果不同,所以發(fā)現(xiàn)了問題。經(jīng)仔細檢查程序,發(fā)現(xiàn)將write函數(shù)中的‘&’寫成了‘&&’,導致程序編譯時正確,但將程序寫入芯片時,LCD卻不能顯示漢字。經(jīng)過改正后,重新向ATMEGA8中下載程序,結果LCD顯示出漢字,程序調試成功。6實物與實測效果展示6.1實物展示圖6.1(a)硬件實物圖圖6.1〔b〕AVR開發(fā)板實物圖6.2實測效果展示圖6.2顯示漢字結論本設計主要是設計一個微處理器控制的點陣式液晶顯示器的控制電路。所以,經(jīng)過認真分析和結合以前所學知識,我采用ATMEGA8作為MPU來控制KXM12864模塊顯示漢字。在本次設計中,經(jīng)過屢次調試與檢錯,最終實現(xiàn)了顯示漢字的功能。本設計要實現(xiàn)的功能并不復雜。簡而言之,就是使用一個單片機來控制LCD液晶模塊顯示漢字。然而,我認為本設計較為復雜之處就是硬件電路的焊接。其中最重要的就是ATMEGA8芯片的焊接,由于該芯片是貼片式的,以前接觸較少,所以焊接時發(fā)生了短路及虛焊等錯誤。其次就是LCD模塊的20個引腳的焊接,由于這些引腳相鄰間隔小,導致焊接出現(xiàn)短路情況。然而,經(jīng)過改正,焊接正常。之后,就是AVR開發(fā)板的其它電路元件的焊接,由于之前做過焊接的實驗,所以,這局部焊接較熟練。最后,就是軟件設計,該局部采用C語言設計,由于實現(xiàn)功能較為簡單,因此,設計時也較易完成??陀^地說,本設計較為容易,雖然實現(xiàn)了最基本的顯示漢字的功能,但并沒有更多的展示出單片機對LCD模塊控制的效果。這樣,本設計給人的感覺較為單一,不能豐富多彩的展示單片機對LCD模塊控制的優(yōu)勢。所以,為了更多地展示出單片機的強大功能,可以給單片機增加輸入設備如按鍵等,增加文字和字符的顯示效果,如滾動、閃爍等。這樣可以根據(jù)按鍵按下的鍵來顯示相應的效果。同時,還需要編寫相應的程序來實現(xiàn)這些效果。感言當我的硬件焊接完成,同時軟件調試成功,當將程序下載到單片機上,LCD模塊顯示出漢字時,我覺得很有成就感。因為,終于憑借著自己的努力,我完成了本次畢業(yè)設計的實物制作局部。雖然,這個過程中出現(xiàn)了這樣或那樣的問題,但是經(jīng)過認真分析和改正都順利地解決了。畢業(yè)設計接近尾聲,我感觸很多?;叵氘敵酰攧偪吹疆厴I(yè)設計題目時,我有一些迷茫,不知從何處開場做起。但是,當詢問了指導教師后,我對該題目有了初步的認識。之后,就結合以前所學知識,對該設計進展認真分析。最后確定使用ATMEGA8單片機作為微控制器來控制KXM12864模塊顯示漢字來詮釋本課題。當我真正開場硬件設計圖的設計時,發(fā)現(xiàn)我對Protel99se軟件的使用已經(jīng)生疏。所以,我又重新查看了有關該軟件使用的資料。之后,發(fā)現(xiàn)本設計就是對各科知識的綜合應用,其中主要使用了模擬電子技術和單片機原理方面的知識。當電路圖設計出之后,就是對電路板的焊接。雖然,在以前的課程中都做過焊接的實驗,但是由于動手能力不強,對于硬件焊接,仍然比較困難。但在教師的幫助下,我最終完成了硬件的焊接工作。接著就是編寫程序,由于要實現(xiàn)的功能較為簡單,所以,這一局部很快就完成了。但是當我將程序下載到單片機時,那么沒有出現(xiàn)預期的結果。所以就開場對硬件和軟件進展調試,最終發(fā)現(xiàn)設計的硬件和軟件方面均存在問題。改正后,那么出現(xiàn)了正確的結果。因此,我認為,其實按部就班地做設計并不困難,困難的是當沒有出現(xiàn)預期結果時怎樣找到用來發(fā)現(xiàn)問題、分析問題和解決問題的方法。比方,在程序編寫中測試函數(shù)的編寫和測試,這就是我用來發(fā)現(xiàn)問題的方法。經(jīng)過本設計,我更加明白了發(fā)現(xiàn)問題、分析問題和解決問題重要性。同時,經(jīng)過本設計,提高了我的動手能力和編程能力,使我對軟件和硬件的結合有了更進一步的理解。還有,這次畢業(yè)設計,鍛煉了我的耐心,使我明白了當設計沒有到達預期結果時,應該沉著、冷靜地檢查、分析、調試,不能急躁。只有這樣,才能最快速地發(fā)現(xiàn)和解決問題、完成設計。所以,綜上所述,我從本次畢業(yè)設計中受益匪淺。致謝畢業(yè)設計完成了,我感觸很多。首先,感謝我的畢業(yè)設計的指導教師的指導。在本次設計中,指導教師給予了我很大的幫助。從硬件的焊接到軟件的調試。首先,是AVR單片機開發(fā)板的焊接,在該開發(fā)板設計過程中,教師給予我們很多指導。從芯片的選擇到具體的電路的設計,還有開發(fā)板的元件和電路布局等,教師都給予了我們很多建議。同時,我也感謝我的同學,在本次設計中,由于我和幾位同學使用的單片機一樣,所以在單片機開發(fā)板上有些不懂的問題,我就問同學,他們都認真給我解答。當然,對于本次畢業(yè)設計的順利完成,我還要感謝我親愛的母校,感謝學校能給我們提供做設計的實驗室,能讓我們更好地完成設計。要想完成一個畢業(yè)設計,需要大學四年的知識的綜合應用。比方,本次畢業(yè)設計用到了模擬電子技術、數(shù)字電子技術、電路分析、單片機原理、C語言程序設計、Protel軟件的使用等方面的專業(yè)知識。這些知識的獲得都來源于我的這些專業(yè)課程的教師們。所以,我很感謝我親愛的教師們對我們的辛勤的培養(yǎng)。正是因為有了教師們的辛勤培養(yǎng),才有了我現(xiàn)在所掌握的專業(yè)知識,才可以使我能夠順利完成本次畢業(yè)設計。不僅如此,教師們在教會我們知識的同時,還以身作那么地教會了我們對待學問的態(tài)度。教師們的言傳身教使我們懂得了更多的學習和做人方面的道理。這些不僅催促著我在以后的學習中,更加努力地學習專業(yè)知識,還成為了我以后人生道路上的指路明燈,指引著我將來能更好、更穩(wěn)地前行。所以,在此,我想我親愛的教師們表達我深深的敬意。參考文獻[1]肖看,李群芳.單片機原理、接口及應用[M].北京:清華大學出版社,2010.9.[2]沈文,Eaglelee,詹衛(wèi)前.AVR單片機C語言開發(fā)入門指導[M].北京:清華大學出版社,2003.[3]童詩白,華成英.模擬電子技術根基[M].北京:高等教育出版社,2006.5.[4]楊志毅.直流穩(wěn)壓電源中電容器的作用[J].河南科技,1988年11期.[5]王聰敏,李少娟等.直流穩(wěn)壓電源的設計[J].西安郵電學院學報,2011年11月.[6]李維諟,郭強,周云仙.液晶顯示應用手冊[M].北京:電子工業(yè)出版社,2002.[7]谷樹忠,閆勝利.Protel2004實用教程:原理圖與PCB設計[M].北京:電子工業(yè)出版社,2005.[8]郭強.點陣式液晶顯示器[J].電子技術應用,1989年12期.[9]李長林.AVR單片機應用設計[M].北京:電子工業(yè)出版社,2005.9.[10]金鐘夫.AVRATmega128單片機C程序設計與實踐[M].北京:北京航空航天大學出版社,2008.[11]丁化成.AVR單片機應用設計[M].北京:北京航空航天大學出版社,2002.5.[12]劉永智,楊開愚等.液晶顯示技術[M].成都:電子科技大學出版社,2000.[13]周明德.微機原理和應用計算機系統(tǒng)[M].北京:清華大學出版社,2007.附錄A硬件原理圖〔基于protel99se〕附錄B程序代碼#include<iom8v.h>#include<macros.h>voiddelay1(unsignedintt){unsignedintj;for(;t>0;t--)for(j=19;j>0;j--);}voiddelay2(unsignedintt){unsignedintj;for(;t>0;t--)for(j=6425;j>0;j--);}voidwrite(unsignedcharz){if((z&0x01)==0x01)PORTC|=0x08;//0000,1000elsePORTC&=0xf7;//1111,0111if((z&0x02)==0x02)PORTC|=0x10;elsePORTC&=0xef;//1110,1111if((z&0x04)==0x04)PORTC|=0x20;//0010,0000elsePORTC&=0xdf;//1101,1111if((z&0x08)==0x08)PORTB|=0x01;elsePORTB&=0xfe;//1111,1110if((z&0x10)==0x10)PORTB|=0x02;//0000,0010elsePORTB&=0xfd;//1111,1101,if((z&0x20)==0x20)PORTB|=0x04;elsePORTB&=0xfb;//1111,1011,if((z&0x40)==0x40)PORTB|=0x08;//,0100,0000elsePORTB&=0xf7;//1011,1111,if((z&0x80)==0x80)PORTB|=0x10;elsePORTB&=0xef;//1110,1111,}voidwrite_12864dat(unsignedchara){PORTC|=0x01;//0000,0001,rs=1PORTC&=0xfd;//1111,1101,rw=0
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025水電承包合同的示例文本
- 2025珠海市塑料交易所PVC貨物交割合同范本
- 2024年度四川省公共營養(yǎng)師之四級營養(yǎng)師模擬預測參考題庫及答案
- 2024財務公司行業(yè)分析報告
- 2025FIDIC合同條件與國際工程合同
- 鐵水罐項目可行性研究報告
- 中國八寶粥行業(yè)市場發(fā)展現(xiàn)狀及前景趨勢與投資分析研究報告(2024-2030版)
- 關于編制釩鐵生產(chǎn)建設項目可行性研究報告編制說明
- 2025柜臺租賃合同范本介紹
- 2025年中國旅游景點市場運行態(tài)勢及投資戰(zhàn)略咨詢研究報告
- 2024-2025學年高一地理新教材必修1配套課件 第6章 第4節(jié) 地理信息技術在防災減災中的應用
- 電梯維護保養(yǎng)分包合同
- 10以內連加減口算練習題完整版139
- 2022-2023學年廣東省廣州市海珠區(qū)六年級(上)期末英語試卷(含答案)
- 2024至2030年中國瀝青攪拌站行業(yè)市場現(xiàn)狀調研及市場需求潛力報告
- 《平凡的世界》整本書閱讀指導教學設計基礎模塊上冊
- 2024政務服務綜合窗口人員能力與服務規(guī)范考試試題
- (高清版)AQ 2002-2018 煉鐵安全規(guī)程
- 虛擬現(xiàn)實與增強現(xiàn)實
- 08J933-1體育場地與設施(一)
- 生豬屠宰獸醫(yī)衛(wèi)生檢驗人員理論考試題庫及答案
評論
0/150
提交評論