ARM課程設(shè)計(jì)-LCD顯示24_第1頁
ARM課程設(shè)計(jì)-LCD顯示24_第2頁
ARM課程設(shè)計(jì)-LCD顯示24_第3頁
ARM課程設(shè)計(jì)-LCD顯示24_第4頁
ARM課程設(shè)計(jì)-LCD顯示24_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 西 安 工 業(yè) 大 學(xué) 課 程 設(shè) 計(jì) 報(bào) 告 PAGE 21 嵌入式系統(tǒng)開發(fā)與應(yīng)用用課程設(shè)計(jì) 班 級: 學(xué) 號: XXXXXXXXXX 姓 名: XXX 指導(dǎo)老老師: 郭軍團(tuán)團(tuán) 計(jì)算機(jī)科學(xué)與技技術(shù)系 2012年11月15日TOC o 1-3 h u HYPERLINK l _Toc10918 前言 PAGEREF _Toc10918 16。 HYPERLINK l _Toc1411 1.系統(tǒng)設(shè)計(jì) PAGEREF _Toc1411 1V。 HYPERLINK l _Toc28595 1.1涉及的軟硬件簡簡介 PAGEREF _Toc28595 1a。 HYPERLINK l _Toc9401

2、 1.1.1 Proteus 7.8簡介 PAGEREF _Toc9401 1O。 HYPERLINK l _Toc16146 1.1.2 RVDS簡簡介 PAGEREF _Toc16146 1f。 HYPERLINK l _Toc18233 1.1.3 芯片LPC2106簡簡介 PAGEREF _Toc18233 18。 HYPERLINK l _Toc24287 1.2.1 LCD特特點(diǎn) PAGEREF _Toc24287 2O。 HYPERLINK l _Toc9868 1.2.2 LCD顯顯示簡介 PAGEREF _Toc9868 3g。 HYPERLINK l _Toc1753 1.

3、2.3 LCD顯顯示流程圖 PAGEREF _Toc1753 3g。 HYPERLINK l _Toc22121 1.2.4 LCD相相關(guān)參數(shù) PAGEREF _Toc22121 4x。 HYPERLINK l _Toc4866 1.3 Proteus仿仿真電路 PAGEREF _Toc4866 8Z。 HYPERLINK l _Toc9547 1.3.1 Proteus仿仿真元件清單 PAGEREF _Toc9547 8G。 HYPERLINK l _Toc30822 1.3.2 Proteus仿仿真電路圖截圖 PAGEREF _Toc30822 88。 HYPERLINK l _Toc31

4、390 1.4 程序序代碼分模塊介紹紹 PAGEREF _Toc31390 8Q。 HYPERLINK l _Toc29963 2.實(shí)驗(yàn)(測試)結(jié)果果 PAGEREF _Toc29963 18S。 HYPERLINK l _Toc26487 3.總結(jié) PAGEREF _Toc26487 19j。 HYPERLINK l _Toc31819 參考文獻(xiàn) PAGEREF _Toc31819 20Q。 HYPERLINK l _Toc1526 后附資料 PAGEREF _Toc1526 21A。前言近年來,隨著計(jì)算機(jī)技技術(shù)及集成電路技技術(shù)的發(fā)展,嵌入入式技術(shù)日漸普及及,在通訊、網(wǎng)絡(luò)絡(luò)、工控、醫(yī)療、電子

5、等領(lǐng)域發(fā)揮揮著越來越重要的的作用。嵌入式系系統(tǒng)無疑成為當(dāng)前前最熱門最有發(fā)展展前途的IT應(yīng)用用領(lǐng)域之一。V。液晶顯示器以其微功耗耗、體積小、顯示示內(nèi)容豐富、超薄薄輕巧的諸多優(yōu)點(diǎn)點(diǎn),在袖珍式儀表表和低功耗應(yīng)用系系統(tǒng)中得到越來越越廣泛的應(yīng)用。通通過顯示器同步顯顯示元器件的狀態(tài)態(tài)可以更深刻地理理解控制的原理。5。通過Proteus模模擬ARM7芯片片設(shè)計(jì),可以增強(qiáng)強(qiáng)我們的自學(xué)能力力和思考能力,掌掌握科學(xué)研究的方方法,提高信息檢檢索的能力以及獲獲取與時(shí)俱進(jìn)知識(shí)識(shí)的能力。同時(shí),使使我們深刻學(xué)習(xí)了了ARM的相關(guān)知知識(shí),增強(qiáng)對實(shí)際際電路的感性認(rèn)識(shí)識(shí),提高了分析問問題,處理問題的的能力。0。運(yùn)用Keil編譯C語

6、語言,連接生成Hex文文件和Axf文件件。使用PROTEUS 7.8SP2仿仿真,選用ARM7 LPC2106 芯片和LCD1602,導(dǎo)導(dǎo)入Hex或文件件,然后進(jìn)行軟件件仿真調(diào)試。P。1.系統(tǒng)設(shè)計(jì) 1.1涉及的的軟硬件簡介 設(shè)計(jì)中軟件主要要用到了模型仿真真軟件Proteus和和編譯套件RVDS(RealView Development Suite),硬硬件主要采用了NXP公公司的LPC2106微微控制器。X。 1.1.1 Proteus 7.8簡介Proteus軟件是是英國Labcenter electronics公公司出版的EDA工工具軟件。它不僅僅具有其它EDA工工具軟件的仿真功功能,還能

7、仿真單單片機(jī)及外圍器件件。它是目前最好好的仿真單片機(jī)及及外圍器件的工具具。雖然目前國內(nèi)內(nèi)推廣剛起步,但但已受到單片機(jī)愛愛好者、從事單片片機(jī)教學(xué)的教師、致力于單片機(jī)開開發(fā)應(yīng)用的科技工工作者的青睞。Proteus是是世界上著名的EDA工工具(仿真軟件),從原理圖布圖圖、代碼調(diào)試到單單片機(jī)與外圍電路路協(xié)同仿真,一鍵鍵切換到PCB設(shè)設(shè)計(jì),真正實(shí)現(xiàn)了了從概念到產(chǎn)品的的完整設(shè)計(jì)。是目目前世界上唯一將將電路仿真軟件、PCB設(shè)計(jì)軟件件和虛擬模型仿真真軟件三合一的設(shè)設(shè)計(jì)平臺(tái),其處理理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等等

8、。在編譯方面,它它也支持IAR、Keil和MPLAB等等多種編譯器。B。在Proteus繪制制好原理圖后,調(diào)調(diào)入已編譯好的目目標(biāo)代碼文件:*.hex(或者者*.axf),可可以在Proteus的的原理圖中看到模模擬的實(shí)物運(yùn)行狀狀態(tài)和過程。Proteus不不僅可將許多單片片機(jī)實(shí)例功能形象象化,也可將許多多單片機(jī)實(shí)例運(yùn)行行過程形象化。前前者可在相當(dāng)程度度上得到實(shí)物演示示實(shí)驗(yàn)的效果,后后者則是實(shí)物演示示實(shí)驗(yàn)難以達(dá)到的的效果。它的元器器件、連接線路等等卻和傳統(tǒng)的單片片機(jī)實(shí)驗(yàn)硬件高度度對應(yīng)。這在相當(dāng)當(dāng)程度上替代了傳傳統(tǒng)的單片機(jī)實(shí)驗(yàn)驗(yàn)教學(xué)的功能,例例:元器件選擇、電路連接、電路路檢測、電路修改改、軟件調(diào)試

9、、運(yùn)運(yùn)行結(jié)果等。9。 1.1.2 RVDS簡簡介RealView Development Suite(RVDS)是是ARM公司繼SDT與與ADS1.2之之后主推的新一代代開發(fā)工具。RVDS集集成的RVCT是是業(yè)內(nèi)公認(rèn)的能夠夠支持所有ARM處處理器,并提供最最好的執(zhí)行性能的的編譯器。RealView Developer Suite 支支持所有 ARM 系列核心,并與與眾多第三方實(shí)時(shí)時(shí)操作系統(tǒng)及工具具商合作簡化開發(fā)發(fā)流程。8。RVDS包含有四個(gè)模模塊: (1)IDE:RVDS中中集成了Eclipse IDE,用于代代碼的編輯和管理理。支持語句高亮亮和多顏色顯示,以以工程的方式管理理代碼,支持第三三

10、方Eclipse功功能插件。 O。(2)RVCT:RVCT是是業(yè)界最優(yōu)秀的編編譯器,支持全系系列的ARM和XSCALE架架構(gòu),支持匯編、C和C+。 h。(3)RVD:是RVDS中中的調(diào)試軟件,功功能強(qiáng)大,支持Flash燒燒寫和多核調(diào)試,支支持多種調(diào)試手段段,快速錯(cuò)誤定位位。 1。(4)RVISS:是是指令集仿真器,支支持外設(shè)虛擬,可可以使軟件開發(fā)和和硬件開發(fā)同步進(jìn)進(jìn)行,同時(shí)可以分分析代碼性能,加加快軟件開發(fā)速度度。L。RVDS具有代碼小執(zhí)執(zhí)行效率高、支持Linux操操作系統(tǒng)、調(diào)試功能強(qiáng)大、可可虛擬外設(shè)等優(yōu)點(diǎn),同時(shí)還具有有內(nèi)容豐富的在線線文檔。m。 1.1.3 芯芯片LPC2106簡簡介LPC2

11、106/2105/2104 包含含一個(gè)支持仿真的的ARM7TDMI-S CPU、與與片內(nèi)存儲(chǔ)器控制制器接口的ARM7 局部總線、與中中斷控制器接口的的AMBA高性能能總線(AHB)和和連接片內(nèi)外設(shè)功功能的VLSI外外設(shè)總線(VPB ,ARMAMBA 總線的兼容超集集)。LPC2106/2105/2104 將ARM7TDMI-S配置為小端(little-endian )字節(jié)順序。 o。AHB外設(shè)分配了2M 字節(jié)的地址范圍圍,它位于 4G字字節(jié)ARM存儲(chǔ)器器空間的最頂端。每每個(gè) AHB外設(shè)設(shè)都分配了16k 字節(jié)的地址空間間。LPC2106/2105/2104 的外設(shè)功能(中中斷控制器除外)都都連接

12、到VPB 總線。AHB到到VPB 的橋接接將VPB 總線線與AHB總線相相連。VPB 外外設(shè)也分配了2M 字節(jié)的地址范圍圍,從3.5GB 地址點(diǎn)開始。每每個(gè)VPB 外設(shè)設(shè)在VPB 地址址空間內(nèi)都分配了了16k 字節(jié)地地址空間。 G。它擁有以下特性:ARM7TDMI-S處處理器 128k字節(jié)片內(nèi)Flash程程序存儲(chǔ)器,具有有ISP 和IAP 功能。 f。Flash編程時(shí)間:1ms 可編程程512 字節(jié),扇扇區(qū)擦除或整片擦擦除只需400ms 。 m。64/32/16K 字節(jié)靜態(tài)RAM(LPC2106/2105/2104) M。向量中斷控制器 仿真跟蹤模塊,支持實(shí)實(shí)時(shí)跟蹤 RealMonitor模模

13、塊支持實(shí)時(shí)調(diào)試試 標(biāo)準(zhǔn)ARM測試/ 調(diào)調(diào)試接口,兼容現(xiàn)現(xiàn)有工具 極小封裝:TQFP48 (77mm2) 雙UART,其中一個(gè)個(gè)帶有完全的調(diào)制制解調(diào)器接口 I2C 串行接口 SPI 串行接口 兩個(gè)定時(shí)器,分別具有有4 路捕獲/ 比較通道 多達(dá)6 路輸出的PWM 單元 實(shí)時(shí)時(shí)鐘 看門狗定時(shí)器 通用I/O 口 CPU 操作頻率可達(dá)達(dá)60MHz 雙電源 CPU 操作電壓范范圍:1.65V1.95V(1.8V 8.3%) W。I/O 電壓范圍:3.0V3.6V(3.3V 10%) 兩個(gè)低功耗模式:空閑閑和掉電 通過外部中斷將處理器器從掉電模式中喚喚醒 外設(shè)功能可單獨(dú)使能/ 禁止,實(shí)現(xiàn)功功耗最優(yōu)化 片內(nèi)晶

14、振的操作頻率范范圍:10MHz25MHz 片內(nèi)PLL 允許CPU 以最大速度運(yùn)行行,可以在超過整整個(gè)晶振操作頻率率范圍的情況下使使用。3。由于擁有以上特性,LPC2106適適用于nternet 網(wǎng)關(guān)、串行通信信協(xié)議轉(zhuǎn)換器、訪訪問控制、工業(yè)控控制、醫(yī)療設(shè)備及及其它各種類型的的應(yīng)用。x。 1.2 LCD顯顯示原理和初始化化流程圖 1.2.1 LCD特特點(diǎn)在日常生活中,我們對對液晶顯示器并不不陌生。液晶顯示示模塊已作為很多多電子產(chǎn)品的通過過器件,如在計(jì)算算器、萬用表、電電子表及很多家用用電子產(chǎn)品中都可可以看到,顯示的的主要是數(shù)字、專專用符號和圖形。在在單片機(jī)的人機(jī)交交流界面中,一般般的輸出方式有以以

15、下幾種:發(fā)光管管、LED數(shù)碼管管、液晶顯示器。發(fā)發(fā)光管和LED數(shù)數(shù)碼管比較常用,軟軟硬件都比較簡單單,在前面章節(jié)已已經(jīng)介紹過,在此此不作介紹,本章章重點(diǎn)介紹字符型型液晶顯示器的應(yīng)應(yīng)用。 i。在單片機(jī)系統(tǒng)中應(yīng)用晶晶液顯示器作為輸輸出器件有以下幾幾個(gè)優(yōu)點(diǎn):顯示質(zhì)量高由于液晶顯示器每一個(gè)個(gè)點(diǎn)在收到信號后后就一直保持那種種色彩和亮度,恒恒定發(fā)光,而不像像陰極射線管顯示示器(CRT)那那樣需要不斷刷新新新亮點(diǎn)。因此,液液晶顯示器畫質(zhì)高高且不會(huì)閃爍。s。數(shù)字式接口液晶顯示器都是數(shù)字式式的,和單片機(jī)系系統(tǒng)的接口更加簡簡單可靠,操作更更加方便。C。體積小、重量輕液晶顯示器通過顯示屏屏上的電極控制液液晶分子狀態(tài)

16、來達(dá)達(dá)到顯示的目的,在在重量上比相同顯顯示面積的傳統(tǒng)顯顯示器要輕得多。I。功耗低相對而言,液晶顯示器器的功耗主要消耗耗在其內(nèi)部的電極極和驅(qū)動(dòng)IC上,因因而耗電量比其它它顯示器要少得多多。7。 1.2.2 LCD顯顯示簡介 液晶顯示原理液晶顯示的原理是利用用液晶的物理特性性,通過電壓對其其顯示區(qū)域進(jìn)行控控制,有電就有顯顯示,這樣即可以以顯示出圖形。液液晶顯示器具有厚厚度薄、適用于大大規(guī)模集成電路直直接驅(qū)動(dòng)、易于實(shí)實(shí)現(xiàn)全彩色顯示的的特點(diǎn),目前已經(jīng)經(jīng)被廣泛應(yīng)用在便便攜式電腦、數(shù)字字?jǐn)z像機(jī)、PDA移移動(dòng)通信工具等眾眾多領(lǐng)域。e。 液晶顯示器的分類液晶顯示的分類方法有有很多種,通常可可按其顯示方式分分為

17、段式、字符式式、點(diǎn)陣式等。除除了黑白顯示外,液液晶顯示器還有多多灰度有彩色顯示示等。如果根據(jù)驅(qū)驅(qū)動(dòng)方式來分,可可以分為靜態(tài)驅(qū)動(dòng)動(dòng)(Static)、單純矩陣驅(qū)動(dòng)(Simple Matrix)和和主動(dòng)矩陣驅(qū)動(dòng)(Active Matrix)三三種。s。液晶顯示器各種圖形的的顯示原理:線段的顯示點(diǎn)陣圖形式液晶由MN個(gè)顯示單元組組成,假設(shè)LCD顯顯示屏有64行,每每行有128列,每每8列對應(yīng)1字節(jié)節(jié)的8位,即每行行由16字節(jié),共共168=128個(gè)個(gè)點(diǎn)組成,屏上6416個(gè)顯示單元元與顯示RAM區(qū)區(qū)1024字節(jié)相相對應(yīng),每一字節(jié)節(jié)的內(nèi)容和顯示屏屏上相應(yīng)位置的亮亮暗對應(yīng)。例如屏屏的第一行的亮暗暗由RAM區(qū)的0

18、00H00FH的16字字節(jié)的內(nèi)容決定,當(dāng)當(dāng)(000H)=FFH時(shí),則屏屏幕的左上角顯示示一條短亮線,長長度為8個(gè)點(diǎn);當(dāng)當(dāng)(3FFH)=FFH時(shí),則屏屏幕的右下角顯示示一條短亮線;當(dāng)當(dāng)(000H)=FFH,(001H)=00H,(002H)=00H,(00EH)=00H,(00FH)=00H時(shí),則在在屏幕的頂部顯示示一條由8段亮線線和8條暗線組成成的虛線。這就是是LCD顯示的基基本原理。X。字符的顯示用LCD顯示一個(gè)字符符時(shí)比較復(fù)雜,因因?yàn)橐粋€(gè)字符由68或88點(diǎn)陣陣組成,既要找到到和顯示屏幕上某某幾個(gè)位置對應(yīng)的的顯示RAM區(qū)的的8字節(jié),還要使使每字節(jié)的不同位位為“1”,其它它的為“0”,為為“1

19、”的點(diǎn)亮,為為“0”的不亮。這這樣一來就組成某某個(gè)字符。但由于于內(nèi)帶字符發(fā)生器器的控制器來說,顯顯示字符就比較簡簡單了,可以讓控控制器工作在文本本方式,根據(jù)在LCD上上開始顯示的行列列號及每行的列數(shù)數(shù)找出顯示RAM對對應(yīng)的地址,設(shè)立立光標(biāo),在此送上上該字符對應(yīng)的代代碼即可。S。漢字的顯示漢字的顯示一般采用圖圖形的方式,事先先從微機(jī)中提取要要顯示的漢字的點(diǎn)點(diǎn)陣碼(一般用字字模提取軟件),每每個(gè)漢字占32B,分分左右兩半,各占占16B,左邊為為1、3、5右邊為2、4、6根據(jù)在LCD上上開始顯示的行列列號及每行的列數(shù)數(shù)可找出顯示RAM對對應(yīng)的地址,設(shè)立立光標(biāo),送上要顯顯示的漢字的第一一字節(jié),光標(biāo)位置

20、置加1,送第二個(gè)個(gè)字節(jié),換行按列列對齊,送第三個(gè)個(gè)字節(jié)直到32B顯顯示完就可以LCD上上得到一個(gè)完整漢漢字。y。1.2.3 LCD顯顯示流程圖LCD顯示流程圖如下下圖所示:1.2.4 LCD相相關(guān)參數(shù)1602LCD的基本本參數(shù)及引腳功能能1602LCD分為帶帶背光和不帶背光光兩種,基控制器器大部分為HD44780,帶帶背光的比不帶背背光的厚,是否帶帶背光在應(yīng)用中并并無差別,兩者尺尺寸差別如下圖所所示:X。1602LCD主要技技術(shù)參數(shù):顯示容量:162個(gè)字符芯片工作電壓:4.55.5V工作電流:2.0mA(5.0V)模塊最佳工作電壓:5.0V字符尺寸:2.954.35(WH)mm引腳功能說明16

21、02LCD采用標(biāo)標(biāo)準(zhǔn)的14腳(無無背光)或16腳腳(帶背光)接口口,各引腳接口說說明如下表所示:s。編號符號引腳說明編號符號引腳說明1VSS電源地9D2數(shù)據(jù)2VDD電源正極10D3數(shù)據(jù)3VL液晶顯示偏壓11D4數(shù)據(jù)4RS數(shù)據(jù)/命令選擇12D5數(shù)據(jù)5R/W讀/寫選擇13D6數(shù)據(jù)6E使能信號14D7數(shù)據(jù)7D0數(shù)據(jù)15BLA背光源正極8D1數(shù)據(jù)16BLK背光源負(fù)極第1腳:VSS為地電電源。第2腳:VDD接5V正正電源。第3腳:VL為液晶顯顯示器對比度調(diào)整整端,接正電源時(shí)時(shí)對比度最弱,接接地時(shí)對比度最高高,對比度過高時(shí)時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通通過一個(gè)10K的的電位器調(diào)整對比比度。6。第4腳:RS

22、為寄存器器選擇,高電平時(shí)時(shí)選擇數(shù)據(jù)寄存器器、低電平時(shí)選擇擇指令寄存器。S。第5腳:R/W為讀寫寫信號線,高電平平時(shí)進(jìn)行讀操作,低低電平時(shí)進(jìn)行寫操操作。當(dāng)RS和R/W共同為低電平平時(shí)可以寫入指令令或者顯示地址,當(dāng)當(dāng)RS為低電平R/W為高電平時(shí)可可以讀忙信號,當(dāng)當(dāng)RS為高電平R/W為低電平時(shí)可可以寫入數(shù)據(jù)。K。第6腳:E端為使能端端,當(dāng)E端由高電電平跳變成低電平平時(shí),液晶模塊執(zhí)執(zhí)行命令。j。第714腳:D0D7為8位雙向向數(shù)據(jù)線。第15腳:背光源正極極。第16腳:背光源負(fù)極極。1602LCD的指令令說明及時(shí)序1602液晶模塊內(nèi)部部的控制器共有11條條控制指令,如下下表所示:序號指令RSR/WD7D

23、6D5D4D3D2D1D01清顯示00000000012光標(biāo)返回000000001*3置輸入模式00000001I/DS4顯示開/關(guān)控制0000001DCB5光標(biāo)或字符移位000001S/CR/L*6置功能00001DLNF*7置字符發(fā)生存貯器地址址0001字符發(fā)生存貯器地址8置數(shù)據(jù)存貯器地址001顯示數(shù)據(jù)存貯器地址9讀忙標(biāo)志或地址01BF計(jì)數(shù)器地址10寫數(shù)到CGRAM或DDRAM)10要寫的數(shù)據(jù)內(nèi)容11從CGRAM或DDRAM讀讀數(shù)11讀出的數(shù)據(jù)內(nèi)容1602液晶模塊的讀讀寫操作、屏幕和和光標(biāo)的操作都是是通過指令編程來來實(shí)現(xiàn)的。(說明明:1為高電平、0為低電平)J。指令1:清顯示,指令令碼01

24、H,光標(biāo)標(biāo)復(fù)位到地址00H位位置。指令2:光標(biāo)復(fù)位,光光標(biāo)返回到地址00H。指令3:光標(biāo)和顯示模模式設(shè)置 I/D:光標(biāo)移動(dòng)方向,高高電平右移,低電電平左移 S:屏屏幕上所有文字是是否左移或者右移移。高電平表示有有效,低電平則無無效。Z。指令4:顯示開關(guān)控制制。 D:控制整整體顯示的開與關(guān)關(guān),高電平表示開開顯示,低電平表表示關(guān)顯示 C:控制光標(biāo)的開與與關(guān),高電平表示示有光標(biāo),低電平平表示無光標(biāo) B:控制光標(biāo)是否閃閃爍,高電平閃爍爍,低電平不閃爍爍。T。指令5:光標(biāo)或顯示移移位 S/C:高高電平時(shí)移動(dòng)顯示示的文字,低電平平時(shí)移動(dòng)光標(biāo)。f。指令6:功能設(shè)置命令令 DL:高電平平時(shí)為4位總線,低低電平

25、時(shí)為8位總總線 N:低電平平時(shí)為單行顯示,高高電平時(shí)雙行顯示示 F: 低電平平時(shí)顯示5x7的的點(diǎn)陣字符,高電電平時(shí)顯示5x10的的點(diǎn)陣字符。L。指令7:字符發(fā)生器RAM地地址設(shè)置。指令8:DDRAM地地址設(shè)置。指令9:讀忙信號和光光標(biāo)地址 BF:為忙標(biāo)志位,高高電平表示忙,此此時(shí)模塊不能接收收命令或者數(shù)據(jù),如如果為低電平表示示不忙。D。指令10:寫數(shù)據(jù)。指令11:讀數(shù)據(jù)。 與HD44780相兼兼容的芯片時(shí)序表表如下所示:讀狀態(tài)輸入RS=L,R/W=H,E=H輸出D0D7=狀態(tài)字寫指令輸入RS=L,R/W=L,D0D7=指令碼,E=高脈沖輸出無讀數(shù)據(jù)輸入RS=H,R/W=H,E=H輸出D0D7=

26、數(shù)據(jù)寫數(shù)據(jù)輸入RS=H,R/W=L,D0D7=數(shù)據(jù),E=高脈沖輸出無讀寫操作時(shí)序如下圖所所示:讀操作時(shí)序圖寫操作時(shí)序圖1602LCD的RAM地地址映射及標(biāo)準(zhǔn)字字庫表液晶顯示模塊是一個(gè)慢慢顯示器件,所以以在執(zhí)行每條指令令之前一定要確認(rèn)認(rèn)模塊的忙標(biāo)志為為低電平,表示不不忙,否則此指令令失效。要顯示字字符時(shí)要先輸入顯顯示字符地址,也也就是告訴模塊在在哪里顯示字符,下圖所示為1602的內(nèi)部顯示地址。W。例如第二行第一個(gè)字符符的地址是40H,那那么是否直接寫入入40H就可以將將光標(biāo)定位在第二二行第一個(gè)字符的的位置呢?這樣不不行,因?yàn)閷懭腼@顯示地址時(shí)要求最最高位D7恒定為為高電平1所以實(shí)實(shí)際寫入的數(shù)據(jù)應(yīng)應(yīng)

27、該是B(40H)+B(80H)=B(C0H)。C。在對液晶模塊的初始化化中要先設(shè)置其顯顯示模式,在液晶晶模塊顯示字符時(shí)時(shí)光標(biāo)是自動(dòng)右移移的,無需人工干干預(yù)。每次輸入指指令前都要判斷液液晶模塊是否處于于忙的狀態(tài)。X。1602液晶模塊內(nèi)部部的字符發(fā)生存儲(chǔ)儲(chǔ)器(CGROM)已已經(jīng)存儲(chǔ)了160個(gè)個(gè)不同的點(diǎn)陣字符符圖形,如圖10-58所示,這些些字符有:阿拉伯伯?dāng)?shù)字、英文字母母的大小寫、常用用的符號、和日文文假名等,每一個(gè)個(gè)字符都有一個(gè)固固定的代碼,比如如大寫的英文字母母“A”的代碼是B(41H),顯顯示時(shí)模塊把地址址41H中的點(diǎn)陣陣字符圖形顯示出出來,我們就能看看到字母“A”j。1602LCD的一般般

28、初始化(復(fù)位)過過程延時(shí)15mS寫指令38H(不檢測測忙信號)延時(shí)5mS寫指令38H(不檢測測忙信號)延時(shí)5mS寫指令38H(不檢測測忙信號)以后每次寫指令、讀/寫數(shù)據(jù)操作均需需要檢測忙信號寫指令38H:顯示模模式設(shè)置寫指令08H:顯示關(guān)關(guān)閉寫指令01H:顯示清清屏寫指令06H:顯示光光標(biāo)移動(dòng)設(shè)置寫指令0CH:顯示開開及光標(biāo)設(shè)置 1.3 Proteus仿仿真電路 使用Proteus進(jìn)進(jìn)行仿真電路設(shè)計(jì)計(jì),下面依次介紹紹仿真細(xì)節(jié)。 1.3.1 Proteus仿仿真元件清單元件名稱規(guī)格型號單位數(shù)量ARM7芯片LPC2106片1LCD1602LM016L個(gè)1瓷片電容CAP-ELEC個(gè)1電源+3.3V個(gè)

29、1電源+1.8V個(gè)1電阻10K歐姆只2 1.3.2 Proteus仿仿真電路圖截圖 1.4 程序代碼分模模塊介紹實(shí)驗(yàn)的C語言程序代碼碼如下所示(附注注釋):/main.c/*e。* File: main.c* 功能:向LCD輸輸出HelloWorld*/Q。#include config.h#define rs (18)#define rw (19)#define en (110)#define busy (17)uint8 txt=HelloWorld;/*b。* 名稱:ChkBusy()* 功能:檢查總線是是否忙*/8。void ChkBusy()IODIR=0 x700;while(1)

30、IOCLR=rs;IOSET=rw;IOSET=en;if(!(IOPIN & busy)break;IOCLR=en;IODIR=0 x7ff;/*5。* 名稱:WrOp()* 功能:寫函數(shù)*/n。void WrOp(uint8 dat)ChkBusy();IOCLR=rs;/全部清零IOCLR=rw;IOCLR=0 xff;/先清零IOSET=dat;/再送數(shù)IOSET=en;IOCLR=en;/*z。* 名稱:WrDat()* 功能:寫數(shù)據(jù)函數(shù)數(shù)*/n。void WrDat(uint8 dat)ChkBusy();IOSET=rs;IOCLR=rw;IOCLR=0 xff;/先清零IOS

31、ET=dat;/再送數(shù)IOSET=en;IOCLR=en;/*g。* 名稱:lcd_init()* 功能:lcd初始始化函數(shù)*/1。void lcd_init(void)WrOp(0 x38);WrOp(0 x06);/光標(biāo)加1WrOp(0 x0c);/開顯示/*L。* 名稱:DisText()* 功能:顯示文本函函數(shù)*/M。void DisText(uint8 addr,uint8 *p)h。WrOp(addr);while(*p !=0)WrDat(*(p+);/*J。* 名稱:main()* 功能:顯示文本*/b。int main(void) lcd_init();IODIR=0 x7f

32、f;/設(shè)置為輸出出IOCLR=0 x7ff;DisText(0 x86,txt);while(1);/LPC2106.h/* External Interrupts */* 外部中斷控制寄寄存器 */#define EXTINT (*(volatile unsigned char *) 0 xE01FC140)/外部中斷標(biāo)標(biāo)志寄存器l。#define EXTWAKE (*(volatile unsigned char *) 0 xE01FC144)/外部中斷喚喚醒,是否從處理理器掉電中喚醒F。/* SMemory mapping control. */* 內(nèi)存remap控控制寄存器 */#de

33、fine MEMMAP (*(volatile unsigned long *) 0 xE01FC040)/選擇讀取向向量的不同地址9。/* Phase Locked Loop (PLL) */* PLL控制寄存存器 */#define PLLCON (*(volatile unsigned char *) 0 xE01FC080)/PLL控制制位保持寄存器g。#define PLLCFG (*(volatile unsigned char *) 0 xE01FC084)/PLL配置置值保持寄存器o。#define PLLSTAT (*(volatile unsigned short*) 0

34、xE01FC088)/控制和配置置信息讀回寄存器器c。#define PLLFEED (*(volatile unsigned char *) 0 xE01FC08C)/使能控制和和配置V。/* Power Control */* 功率控制寄存器器 */#define PCON (*(volatile unsigned char *) 0 xE01FC0C0)/功率控制(空閑模式或掉電電模式)M。#define PCONP (*(volatile unsigned long *) 0 xE01FC0C4)/外設(shè)功率控控制G。/* VPB Divider */* VLSI外設(shè)總總線(VPB)分分

35、頻寄存器 */#define VPBDIV (*(volatile unsigned char *) 0 xE01FC100)/VPB時(shí)鐘鐘設(shè)置R。/* Memory Accelerator Module (MAM) */V。/* 存儲(chǔ)器加速模塊塊 */#define MAMCR (*(volatile unsigned char *) 0 xE01FC000)/控制a。#define MAMTIM (*(volatile unsigned char *) 0 xE01FC004)/定時(shí)控制J。/* Vectored Interrupt Controller (VIC) */k。/* 向量中斷

36、控制器器(VIC)的特特殊寄存器 */#define VICIRQStatus (*(volatile unsigned long *) 0 xFFFFF000)/IRQ狀態(tài)態(tài)n。#define VICFIQStatus (*(volatile unsigned long *) 0 xFFFFF004)/FIQ狀態(tài)態(tài)z。#define VICRawIntr (*(volatile unsigned long *) 0 xFFFFF008)/所有中斷的的狀態(tài)9。#define VICIntSelect (*(volatile unsigned long *) 0 xFFFFF00C)/中斷選擇8

37、。#define VICIntEnable (*(volatile unsigned long *) 0 xFFFFF010)/中斷使能4。#define VICIntEnClr (*(volatile unsigned long *) 0 xFFFFF014)/中斷使能清清零W。#define VICSoftInt (*(volatile unsigned long *) 0 xFFFFF018)/軟件中斷x。#define VICSoftIntClear (*(volatile unsigned long *) 0 xFFFFF01C)/軟件中斷清清零4。#define VICProtec

38、tion (*(volatile unsigned long *) 0 xFFFFF020)/保護(hù)使能2。#define VICVectAddr (*(volatile unsigned long *) 0 xFFFFF030)/向量地址W。#define VICDefVectAddr (*(volatile unsigned long *) 0 xFFFFF034)/默認(rèn)地址q。#define VICVectAddr0 (*(volatile unsigned long *) 0 xFFFFF100)/向量地址X。#define VICVectAddr1 (*(volatile unsign

39、ed long *) 0 xFFFFF104)s。#define VICVectAddr2 (*(volatile unsigned long *) 0 xFFFFF108)K。#define VICVectAddr3 (*(volatile unsigned long *) 0 xFFFFF10C)J。#define VICVectAddr4 (*(volatile unsigned long *) 0 xFFFFF110)g。#define VICVectAddr5 (*(volatile unsigned long *) 0 xFFFFF114)V。#define VICVectAddr

40、6 (*(volatile unsigned long *) 0 xFFFFF118)O。#define VICVectAddr7 (*(volatile unsigned long *) 0 xFFFFF11C)M。#define VICVectAddr8 (*(volatile unsigned long *) 0 xFFFFF120)3。#define VICVectAddr9 (*(volatile unsigned long *) 0 xFFFFF124)v。#define VICVectAddr10 (*(volatile unsigned long *) 0 xFFFFF128)

41、o。#define VICVectAddr11 (*(volatile unsigned long *) 0 xFFFFF12C)M。#define VICVectAddr12 (*(volatile unsigned long *) 0 xFFFFF130)w。#define VICVectAddr13 (*(volatile unsigned long *) 0 xFFFFF134)k。#define VICVectAddr14 (*(volatile unsigned long *) 0 xFFFFF138)G。#define VICVectAddr15 (*(volatile unsi

42、gned long *) 0 xFFFFF13C)o。#define VICVectCntl0 (*(volatile unsigned long *) 0 xFFFFF200)/向量控制M。#define VICVectCntl1 (*(volatile unsigned long *) 0 xFFFFF204)2。#define VICVectCntl2 (*(volatile unsigned long *) 0 xFFFFF208)y。#define VICVectCntl3 (*(volatile unsigned long *) 0 xFFFFF20C)B。#define VICV

43、ectCntl4 (*(volatile unsigned long *) 0 xFFFFF210)9。#define VICVectCntl5 (*(volatile unsigned long *) 0 xFFFFF214)4。#define VICVectCntl6 (*(volatile unsigned long *) 0 xFFFFF218)2。#define VICVectCntl7 (*(volatile unsigned long *) 0 xFFFFF21C)g。#define VICVectCntl8 (*(volatile unsigned long *) 0 xFFF

44、FF220)3。#define VICVectCntl9 (*(volatile unsigned long *) 0 xFFFFF224)h。#define VICVectCntl10 (*(volatile unsigned long *) 0 xFFFFF228)y。#define VICVectCntl11 (*(volatile unsigned long *) 0 xFFFFF22C)Z。#define VICVectCntl12 (*(volatile unsigned long *) 0 xFFFFF230)0。#define VICVectCntl13 (*(volatile

45、 unsigned long *) 0 xFFFFF234)h。#define VICVectCntl14 (*(volatile unsigned long *) 0 xFFFFF238)U。#define VICVectCntl15 (*(volatile unsigned long *) 0 xFFFFF23C)H。/* General Purpose Input/Output (GPIO) */3。/* 通用并行IO口口的特殊寄存器 */#define IOPIN (*(volatile unsigned long *) 0 xE)G。#define IOSET (*(volatile

46、 unsigned long *) 0 xE)s。#define IODIR (*(volatile unsigned long *) 0 xE)1。#define IOCLR (*(volatile unsigned long *) 0 xEC)0。/* Pin Connect Block */* 管腳連接模塊控控制寄存器 */#define PINSEL0 (*(volatile unsigned long *) 0 xE002C000)l。#define PINSEL1 (*(volatile unsigned long *) 0 xE002C004)z。/* Universal Asy

47、nchronous Receiver Transmitter 0 (UART0) */h。/* 通用異步串行口口0(UART0)的特殊寄存器 */#define U0RBR (*(volatile unsigned char *) 0 xE000C000)9。#define U0THR (*(volatile unsigned char *) 0 xE000C000)Y。#define U0IER (*(volatile unsigned char *) 0 xE000C004)y。#define U0IIR (*(volatile unsigned char *) 0 xE000C008)Z

48、。#define U0FCR (*(volatile unsigned char *) 0 xE000C008)V。#define U0LCR (*(volatile unsigned char *) 0 xE000C00C)r。#define U0LSR (*(volatile unsigned char *) 0 xE000C014)4。#define U0SCR (*(volatile unsigned char *) 0 xE000C01C)6。#define U0DLL (*(volatile unsigned char *) 0 xE000C000)A。#define U0DLM

49、(*(volatile unsigned char *) 0 xE000C004)V。/* Universal Asynchronous Receiver Transmitter 1 (UART1) */U。/* 通用異步串行口口1(UART1)的特殊寄存器 */#define U1RBR (*(volatile unsigned char *) 0 xE)d。#define U1THR (*(volatile unsigned char *) 0 xE)l。#define U1IER (*(volatile unsigned char *) 0 xE)4。#define U1IIR (*(v

50、olatile unsigned char *) 0 xE)l。#define U1FCR (*(volatile unsigned char *) 0 xE)D。#define U1LCR (*(volatile unsigned char *) 0 xEC)Z。#define U1MCR (*(volatile unsigned char *) 0 xE)d。#define U1LSR (*(volatile unsigned char *) 0 xE)v。#define U1MSR (*(volatile unsigned char *) 0 xE)n。#define U1SCR (*(

51、volatile unsigned char *) 0 xEC)J。#define U1DLL (*(volatile unsigned char *) 0 xE)e。#define U1DLM (*(volatile unsigned char *) 0 xE)2。/* I2C (8/16 bit data bus) */* 芯片間總線(I2C)的的特殊寄存器 */#define I2CONSET (*(volatile unsigned long *) 0 xE001C000)R。#define I2STAT (*(volatile unsigned long *) 0 xE001C004

52、)m。#define I2DAT (*(volatile unsigned long *) 0 xE001C008)1。#define I2ADR (*(volatile unsigned long *) 0 xE001C00C)p。#define I2SCLH (*(volatile unsigned long *) 0 xE001C010)j。#define I2SCLL (*(volatile unsigned long *) 0 xE001C014)F。#define I2CONCLR (*(volatile unsigned long *) 0 xE001C018)1。/* SPI

53、(Serial Peripheral Interface) */q。/* SPI總線接口口的特殊寄存器 */#define SPI_SPCR (*(volatile unsigned char *) 0 xE)H。#define SPI_SPSR (*(volatile unsigned char *) 0 xE)4。#define SPI_SPDR (*(volatile unsigned char *) 0 xE)h。#define SPI_SPCCR (*(volatile unsigned char *) 0 xEC)f。#define SPI_SPINT (*(volatile un

54、signed char *) 0 xEC)4。/* Timer 0 */* 定時(shí)器0的特殊殊寄存器 */#define T0IR (*(volatile unsigned long *) 0 xE)J。#define T0TCR (*(volatile unsigned long *) 0 xE)7。#define T0TC (*(volatile unsigned long *) 0 xE)d。#define T0PR (*(volatile unsigned long *) 0 xEC)o。#define T0PC (*(volatile unsigned long *) 0 xE)0。#

55、define T0MCR (*(volatile unsigned long *) 0 xE)R。#define T0MR0 (*(volatile unsigned long *) 0 xE)P。#define T0MR1 (*(volatile unsigned long *) 0 xEC)X。#define T0MR2 (*(volatile unsigned long *) 0 xE)c。#define T0MR3 (*(volatile unsigned long *) 0 xE)g。#define T0CCR (*(volatile unsigned long *) 0 xE)m。

56、#define T0CR0 (*(volatile unsigned long *) 0 xEC)I。#define T0CR1 (*(volatile unsigned long *) 0 xE)v。#define T0CR2 (*(volatile unsigned long *) 0 xE)u。#define T0CR3 (*(volatile unsigned long *) 0 xE)P。#define T0EMR (*(volatile unsigned long *) 0 xEC)U。/* Timer 1 */* 定時(shí)器1的特殊殊寄存器 */#define T1IR (*(vol

57、atile unsigned long *) 0 xE)V。#define T1TCR (*(volatile unsigned long *) 0 xE)Y。#define T1TC (*(volatile unsigned long *) 0 xE)4。#define T1PR (*(volatile unsigned long *) 0 xEC)F。#define T1PC (*(volatile unsigned long *) 0 xE)y。#define T1MCR (*(volatile unsigned long *) 0 xE)2。#define T1MR0 (*(volat

58、ile unsigned long *) 0 xE)1。#define T1MR1 (*(volatile unsigned long *) 0 xEC)2。#define T1MR2 (*(volatile unsigned long *) 0 xE)E。#define T1MR3 (*(volatile unsigned long *) 0 xE)7。#define T1CCR (*(volatile unsigned long *) 0 xE)D。#define T1CR0 (*(volatile unsigned long *) 0 xEC)U。#define T1CR1 (*(vol

59、atile unsigned long *) 0 xE)2。#define T1CR2 (*(volatile unsigned long *) 0 xE)v。#define T1CR3 (*(volatile unsigned long *) 0 xE)O。#define T1EMR (*(volatile unsigned long *) 0 xEC)8。/* Pulse Width Modulator (PWM) */J。/* 脈寬調(diào)制器的特特殊寄存器 */#define PWMIR (*(volatile unsigned long *) 0 xE)4。#define PWMTCR (

60、*(volatile unsigned long *) 0 xE)W。#define PWMTC (*(volatile unsigned long *) 0 xE)B。#define PWMPR (*(volatile unsigned long *) 0 xEC)A。#define PWMPC (*(volatile unsigned long *) 0 xE)O。#define PWMMCR (*(volatile unsigned long *) 0 xE)r。#define PWMMR0 (*(volatile unsigned long *) 0 xE)5。#define PWMM

溫馨提示

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

最新文檔

評論

0/150

提交評論