




已閱讀5頁,還剩35頁未讀, 繼續免費閱讀
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
小車電子產品顯示系統畢業論文1 緒論 目前,科學技術處于不斷的發展當中,電子產品日益更新,已經成為我們生活中必不可少的一部分,不論是日常生活還是工業應用等等,都已經與電子技術緊密的聯系在一起。從瓦特發明蒸汽機開始,世界技術已經進入到了一個新的時期,伴隨著第一臺計算機的出世,科學技術就有了一個飛躍,伴隨著科學技術的提高,而顯示技術也應用廣泛起來,從而提高了人民的生活水平。而今,隨著信息社會的發展,在工業應用方面,顯示系統也已經廣泛的應用于各個領域。諸如溫度檢測的顯示系統、智能儀表的顯示系統等服務于社會的各行各業。在主控硬件開發方面,ARM微控制器已被廣泛應用。ARM(Advanced RISC Machines)微處理器是Acorn計算機有限公司面向低預算市場設計的第一款RISC微處理器,更早稱作Acorn RISC Machine。ARM處理器本身是32位設計,但也配備16位指令集。一般來講,比等價32位代碼節省達35,卻能保留32位系統的所有優勢,具有很高的性價比。ARM處理器是一種性能高、成本低的微處理器,具有很高的實用性,ARM的Jazelle技術使Java加速得到比基于軟件的Java虛擬機 (JVM)高得多的性能,和同等的非Java加速核相比功耗降低80。同時ARM處理器的CPU功能上增加DSP指令集提供增強的16位和32位算術運算能力,提高了性能和靈活性。而且ARM還提供兩個前沿特性來輔助帶深嵌入處理器的高集成SoC器件的調試,它們是嵌入式ICE-RT邏輯和嵌入式跟蹤宏核(ETMS)系列。由于一系列的優點使得ARM微處理器具有很高的市場占有率,使得ARM處理器得以被廣泛的應用于生活和科研中1。在軟件開發方面,IAR軟件是一款主流的開發集成環境軟件,其中IAR為所有ARM開發者帶來很大的益處,IAR Systems為所有使用ARM MCU的開發者提供了業界最領先的集成開發環境:IAR Embedded Workbench for ARM; 它支持很多知名公司的微處理器。它帶有高度優化的C/C+編譯器和先進的C-SPY調試器。此外,JTAG硬件調試工具IAR J-Link也幫助成千上萬的開發者解決了在使用ARM MCU進行開發過程中的許多問題,使得用戶能夠在IAR Embedded Workbench for ARM軟件中進行全面的開發和調試。全球很多著名的公司都在使用IAR SYSTEMS提供的開發工具,用以開發最前沿的科技產品,從手機應用系統到航天航空、消費電子及工業制造等等2。目前的顯示系統,在各個領域都有廣泛的應用,尤其是在一些公共場合,像室外液晶顯示,機場航班動態信息顯示,證券交易、金融信息顯示港口、車站旅客引導信息顯示,體育場館信息顯示道路交通信息顯示,調度指揮中心信息顯示,電力調度、車輛動態跟蹤、車輛調度管理,郵政、電信、商場購物中心等服務領域的業務宣傳及信息顯示,這些足以證明,顯示系統在我們當今的生活中變得越來越重要。圖1 整體框圖2 系統設計ARM控制器(LM3S811)外 部數 據數據接 收數據處 理中斷處 理內部數 據數據處 理數據傳 輸12864顯示器2.1 整體設計本設計是以德州儀器半導體技術有限公司LM3S811為主控芯片,12864LCD為顯示模塊及其他外圍電路共同工作,實現對歡迎詞及外部數據的實時顯示。首先,控制器從傳感器采集到各參數的數據,數據經過初步處理,在液晶上分為4行同步顯示出來。由于主控芯片可以工作在中斷方式,如果有串行中斷到來,控制器會利用中斷與主控制芯片進行通信,把數據傳送到顯示器,實現了數據的實時顯示。2.2 顯示模塊選擇1602 液晶顯示器采用57點陣,可以顯示2行,每行16個字。1602液晶模塊內部的字符發生存儲器(CGROM)已經存儲了160個不同的點陣字符圖形,這些字符有:阿拉伯數字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A”3。 12864LCD 顯示器 (LCD) 具有功耗低、體積小、重量輕、超薄等,其它顯示器無法比擬的優點,近年來被廣泛用于單片機控制和微控制器控制的智能儀器、儀表和低功耗電子產品中。LCD主要分為段位式LCD、字符式LCD和點陣式LCD三種,其中段位式 LCD和字符式LCD只能用于字符和數字的簡單的顯示,而不能滿足圖形曲線和漢字顯示的要求,在很多方面有很大的弊端;而點陣式LCD不僅可以顯示字符、數字,還可以顯示各種圖形、曲線和漢字,像12864TH點陣式液晶顯示模塊就可以顯示漢字、圖片,還可以顯示自定義字符,是1602所不具有的功能4。 由于本設計需要顯示漢字、圖形等,用1602顯示模塊及其他簡易的顯示器已經不能滿足本設計的需求,因此本文選用了12864(12864)LCD顯示器,它是128(列)64(行)點陣的 LCD 顯示模塊。在該系統中,通過LM3S811微控制器輸入輸出接口,利用C語言編程控制輸入輸出端口的高低電平,根據時序,以實現對LCD的控制,使得所需顯示的數據以及功能得以在LCD顯示模塊上顯示。3 硬件設計3.1 元件的創建 由于在Protel5畫圖時庫中沒有找到LM3S811和12864的元件,因此在畫原理圖的過程中,自己創建了元件如圖2: 圖2 LM3S811原理圖圖2為LM3S811元件,在創建的過程中,把管腳標識放在外面,影響原理圖的連接及效果,如果要把管腳標識放在里面,需要對管腳的屬性進行調整,在protel里面的操作為:點擊Place選擇Pins,雙擊放置的管腳,根據管腳需要的標識改動name,管教的標號number,再根據上下左右需要選擇Orientatic(如左邊管腳選擇180,右邊0,上下分別為90和270),最終得到了LM3S811元件如圖。希望能給以后的元件制作帶來一些借鑒。圖3則是12864元件圖,共有20個引腳,經歷了LM3S811的創建,此12864就方便了很多,其引腳功能后面有描述。 圖3 12864原理圖3.2 主控芯片LM3S811LM3S811有48個引腳,其大部分引腳具有復用功能,如LM3S811用作JTAG的五個管腳,同時也可以作為GPIO使用,這是LM3S811的一個缺點,但同時也是它的一個優點,由于JTAG被用來下載(燒寫)程序使用,再用作GPIO可能會使得芯片鎖死,這是它的缺點;但同時,它有防鎖死的措施,如果使用者細心加上防鎖死程序,或者在不需要使用太多GPIO的情況下,可以盡量不用這五個管腳,如果需要,那么在加上防鎖死程序后,就有五個GPIO管腳可以復用,這是它的一大優點。在LM3S811中,有很多功能模塊,比如串口,可以應用在調試過程中,一個USB虛擬串口和一個實際串口,通過串口調試器的調試,在電腦上可以看到輸入輸出的結果,同時對照硬件的工作情況,可以更直觀得到運行結果。在本設計中,定時器是必不可少的一部分,因為在小車的運動中,需要顯示其運動總時間。LM3S811支持多種定時模式,主要有以下三種,32-位定時器模式、16-位定時器模式、16-位輸入捕獲模式。LM3S811的功能模塊很多,其中主要有JTAG、UART(串口)、PWM(脈沖寬度調制)、Timer(定時器)、ADC(模數轉換)等等,在LM3S811的DATASHEET里面有詳細解釋。本設計主要使用GPIO端口為主,通過模擬同步串行時序來對顯示模塊進行控制。3.2.1 LM3S811申請在設計的過程中,通過LM3S811的熟悉,同時也了解了其生產廠家Ti公司的情況,該公司提供給大學生免費的LM3S811芯片,登錄,進行信息注冊,得到公司的認可后,進行登錄,再對樣片進行選擇,通過審核,公司就會發貨給我們。公司發貨給我的通知單:圖4 LM3S811申請圖3.2.2 GPIO(通用輸入輸出端口)LM3S8116中有五個GPIO端口,分別為PORTA、PORTB、PORTC、PORTD及PORTE。其中各個端口所擁有的引腳數不相同,PE口具有兩個引腳,在不作通用輸入輸出用時,此兩個引腳作為脈沖編碼調制使用,而PA口有六個管腳,在不作為GPIO使用時,它是作為SSI和UART兩個功能模塊使用的。在LM3S811芯片的引腳中,很多都具有復用功能,這也是的芯片的可用性有了很大的提高。在作為通用輸入輸出端口時,其中的PB7及PC0PC3一般不要使用,因為此五個引腳通常是用于JTAG的,它是用作燒寫程序的,一旦被使用,可能芯片在執行命令時會出現無法估計的錯誤,導致把芯片鎖死,無法再次使用。3.3 顯示模塊12864LCD本設計使用的是TH12864顯示模塊,如圖3所示。TH12864 液晶顯示模塊是128 64點陣的漢字圖形型液晶顯示模塊,可顯示中文漢字及字符,且內含圖形庫,可顯示自定義字符,內置國標GB2312碼簡體中文字庫(1616 點陣)、128個字符(816 點陣)及64256 點陣顯示RAM(GDRAM)。與外部 CPU 接口采用并行或串行兩種控制方式。其中TH12864的供電電源有3.3V和5V的,在本設計中使用的是3.3V。其引腳說明如下7:在本小車顯示系統的設計中共使用了6條12864管腳與LM3S811進行連接,其12864 表1 12864引腳說明 引腳名稱方向說明 1 VSS -GND(0V) 2 VDD - Supply Voltage For Logic(+3.3V) 3 V0 -Supply Voltage For LCD 4 RS(CS) 0H:Data L:Instruction Code 5 R/W(SID) 0H:Read L:Write 6 E(SCLK) 0Enable Signal7-14 DB0-DB7 |數據0-數據7 15 PSB 0H:Parallel Mode L:Serial Mode 16 NC -空腳 17 /RST 0Reset signal 低電平有效 18 NC -空腳 19 LEDA -背光電源正極(LED+3.3V) 20 LEDK -背光電源負極(LED-0V)的引腳為1、2、4、5、6、15,其中1、2兩條分別是接地和電源(3.3V);4引腳在串行狀態下為12864的芯片選擇端,控制12864到底是使用還是禁止,高電平有效,并行狀態下為12864的數據、命令選擇端,高電平為數據端,低電平為命令端;5引腳在串行狀態下12864的數據傳送端,并行狀態下為讀寫控制端,高電平讀,低電平寫;6引腳串行狀態下為12864的同步時鐘引腳,并行狀態下為信號使能端;15引腳為設置12864為并行還是串行模式,高電平為并行,低電平為串行,在本設計中使用串行模式,低電平有效。3.4供電部分圖5 電源原理圖 圖5是TLV1117供電電源的原理圖,由于常用穩壓電源為5V,而LM3S811主控芯片與12864顯示模塊所需的供電電壓為3.3V,所以需要供電電源對電壓進行轉換,以匹配兩者所需的不同電壓值。通過TLV1117給芯片供電,使得電路得以正常運行。3.5 其他外設LED:圖6是發光二極管與主控芯片的連接,發光二極管作為LM3S811的一個外圍設備,在設計調試的過程中起著很重要的作用,在給LM3S811的36引腳(PWM5)高電平的時候,發光二極管導通,開始發光,在36引腳為低電平時截止,二極管熄滅。發光二極管在調試程序的時候起著很重要的作用,在沒有完成顯示系統的連接時,可以根據LED的閃光來調試程序。需要注意的是:需要將JP3的跳線接上,保證硬件電路的接通,很多人容易忽略這一點。 圖6 LED原理圖 圖7 按鍵原理圖按鍵:圖7按鍵與LM3S811的連接,在LM3S811中,按鍵是必不可少的一部分,按鍵可以作為防鎖死和普通的按鍵使用。由于LM3S811的JTAG管腳可以與GPIO復用,所以可能導致JTAG的五個管腳被作為GPIO使用,致使程序跑死后,下一次無法繼續使用該芯片,所以有了防鎖死程序,在這種情況下,鎖死了以后需要進行解鎖,就可以按下按鍵,使得JTAG處于等待中,進而可以繼續使用。另外,此按鍵在作為JTAG使用完后,可以作為普通按鍵使用,比如在時間程序中,按下鍵以后開始計時,再次按鍵,則停止計時。此按鍵與LM3S811連接時,在按鍵無效時,43(PB5)引腳為高電平時,按鍵處于斷開狀態;在按鍵有效時,43引腳為低電平時,按鍵導通。3.6 芯片連接本設計使用德州儀器有限公司的LM3S811控制芯片作為控制器 , 該控制器有功能很齊全的調試解決方案,內部有串行線JTAG調試端口 (SWJ-DP)、Flash 修補和斷點(FPB)單元,用于實現斷點操作、數據觀察點和觸發(DWT)單元,用于執行觀察點、觸發源和系統性能分析、儀表跟蹤宏單元(ITM)用于支持printf 型調試、跟蹤端口接口單元(TPIU)用作跟蹤端口分析儀的橋接8。TH12864 液晶顯示器與外部 CPU接口有兩種控制方式,本設計采用的是串行方式, 因此利用控制器的GPIOB端口作為與TH12864連接的接口,用PB2與12864的4(12864的串行片選端)引腳進行連接,對顯示模塊是否工作進行選擇;PB4與12864的5(串行數據傳輸端)引腳進行連接;PB6控制時鐘,與12864的6引腳進行連接,控制12864傳輸每個字符為多少個脈沖;12864的第15引腳為選擇串行或者是并行工作方式,與主控芯片LM3S811的地線進行連接,使其置為低電平,為串行工作方式。另外,主控芯片可以從外部傳感器獲得數據,通過LM3S811的控制讀取,處理,傳送,最終可以同內部數據一樣得以在顯示模塊上顯示出來。LM3S811與TH12864的接線如圖8所示。 圖8 LM3S811與12864連接圖LM3S81112864PB2PB4PB6RS/CSR/W/SIDE/SCLK外部數據PD2、圖9 芯片連接框圖 與此同時,12864顯示模塊的3、18、19、20引腳也在顯示系統中起著很 重要的作用,其中19、20引腳分別為12864模塊的背光電源正負極,19引腳連接到LM3S811的電源,20引腳接地,使得顯示模塊得以亮起來。圖9為芯片連接框圖。4 軟件設計4.1 IAR軟件IAR是全球領先的嵌入式系統開發工具和服務供應商。IAR Systems成立于1983年,到目前為止,已經有27年的歷史,它所提供的產品和服務涉及到嵌入式系統的設計、開發和測試的每一個階段,包括帶有C/C+的編譯器和調試器的集成開發環境、實時操作系統、硬件仿真器等。IAR Systems公司總部在北歐的瑞典,在美國、日本、巴西、中國等國家設有分公司,他最著名的、被廣泛應用的產品是C編譯器-IAR Embedded Workbench,它支持很多知名公司的微處理器。全球很多著名的公司都在使用IAR SYSTEMS提供的開發工具,用以開發最前沿的科技產品,從手機應用系統到航天航空、消費電子及工業制造等等。2003年6月,IAR Systems傳入中國,在中國成立辦事處;2007年5月,成立了愛亞軟件技術咨詢(上海)有限公司,加強了對中國辦事處及部分東亞國家的產品銷售和技術支持,至此,國內開始正式引用該軟件9。4.1.1 IAR的下載(1) 登陸IAR公司的網站:。(2) 點擊“下載”,出現下載版本選擇界面如圖11所示,由于IAR EWARM試用版有:30天功能無限制版本、32K代碼限制版本,32K代碼限制版的優點是在使用時間上無限制。點擊ARM一欄32K限制版,出現軟件下載確認頁面點擊左下角的“continue”,出現注冊信息頁面,輸入注冊信息。注意需在“Chip manufacture”中選擇“Texsas instruments”圖10 EWARM 下載版本選擇 (3) 填完全部選項后,點擊“Submit Registion”,會出現注冊成功的頁面如圖11:圖11 注冊成功頁面提示(4) 稍過一會,可收到IAR系統發出的確認郵件,點擊頁面中的鏈接,在彈出的頁面中,獲得IAR提供的試用版序列號和密鑰,如圖12,點擊頁面中的“Download from”中的鏈接便可下載安裝程序。圖12 EWARM 提供的序列號及密鑰4.1.2 IAR安裝(1) 下載完IAR開發軟件,找到安裝文件,雙擊安裝程序“EWARM-KS-WEB-5501”,啟動安裝。(2) 在安裝頁面中,點擊Install IAR Embedded workbench,開始安裝。在安裝過程中,需要輸入試用版序列號和密鑰在下載過程中得到,輸入完成后,點擊Next繼續安裝。(3) 安裝完成后,點擊Finish,結束安裝。4.1.3 IAR文件的創建、使用(1) 先創建一個工程文件目錄,用來存放工作區文件、工程文件及源文件10。以時間顯示為例,存放于D:qclshijian目錄下。(2) 啟動IAR EWARM(3) 創建“shijian”項目 打開IAR EWARM,在工作區內新建項目:1) 點擊“project”,選擇“Creat new project”。2)默認選擇ARM和Empty project,創建一個基于ARM得空項目。3)保存項目,設置其名稱為shijian.ewp。(4) 創建文件組 項目創建完成后,在項目中添加三個文件組lib、src、startup,用于存放不同類型的源文件。1) 右擊項目名稱,點擊“add”,選擇“add group”,在彈出的add group對話框中輸入文件組的名稱,如圖13:圖13添加文件組名稱2) 向文件組中添加文件,右擊文件組名,單擊“add”,選擇“add files”,添加所需文件,比如lib文件組中的driverlib.a,是任何一個項目中必不可少的,路徑為:C:stellarisWaredriverlibewarmExe。如圖14:圖14 添加文件driverlib.a另一個必不可少的文件為startup_ewarm.c,需添加在startup文件組下,其路徑為C:stellarisWareboardsek-lm3s9b92hello。此文件需復制到新項目的文件夾下,再添加到startup文件組 3) 在本例中,直接向源程序添加“shijian.c”及其它程序,添加完成后,如圖15所示:圖15 項目主頁面 (5) 項目屬性設置 在完成前兩步之后,對項目進行設置,右擊“shijian-Debug”,彈出如圖16窗口:圖16 項目屬性設置窗口 1) 通用選項設置 點擊General Options選項,在Target選項下,點擊Device,在右側選擇Texas Insruments、LM3S811。 2) C/C+編譯器設置點擊Preprocessor選項卡,添加Include文件目錄,如圖17所示:添加C:stellarisWaredriverlib、C:stellarisWareinc等。圖17 C/C+ Compiler設置 3) Output Converter設置 在Output選項卡中,勾中General additional output,在output format里選擇binary,再勾中override default。這樣在編譯時會自動生成二進制文件shijian.bin,方便下載。 4) Linker選項設置 勾中override default,在選擇添加D:qclshijianLM3S811.icf。在List選項中選擇generate linker map file,生成MAP文件。 5) Debugger選項設置 在setup里面的driver選項選擇LMFTDI;在download下勾中verify download和use flash load。 6) LMI FTDI 設置 在Interface下選擇JTAG,在JTAG里選擇100KHz。(6) 編譯、下載 若代碼經過調試、編譯沒有問題,可以下載仿真,編譯調試界面如圖18:圖18 編譯調試4.2 控制顯示在顯示系統中,我們通過主控芯片LM3S811對12864顯示模塊進行控制,通過12864顯示模塊對主控芯片的命令進行讀取,得到需要顯示的數據或者指令,對所需顯示的數據進行顯示。12864液晶顯示模塊的每一個字符分為三個字節進行傳送,其串行傳送過程如圖19: 圖19 串行時序圖 串行數據傳送分三個字節完成: 第一個字節:串口控制格式為 11111ABC A為數據傳送方向控制:H表示數據從LCD到MCU,L表示數據從MCU到LCD B為數據類型選擇:H表示數據時顯示數據,L表示數據是控制指令 C固定為0 第二個字節: 8位數據的低4位格式為 DDDD0000 第三個字節: 8位數據的高4位DDDD0000 在本設計中使用了如上的串行傳送方式,每一個數據分三個字節進行傳送,其中第一個字節的前五位與最后一位為固定的1或0,第六位控制數據的傳送方向,第七位對傳送的數據類型進行選擇;第二個字節開始對具體數據進行傳送,首先傳送的是數據的高四位,經過第二個字節的傳送,就完成了對數據的高四位的傳送,第三個字節就對數據的第四位進行了傳送,至此,一個完整的數據得以傳送成功。 以下是對幾個基本的在設計中用到的具體指令集的介紹11: (1) 清除顯示CODE: RW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLLLH 功能:清楚顯示屏幕,把DDRAM位址計數器調整為“ 00H”(2) 顯示狀態 開/關CODERW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLHDCB功能:D=1:整體顯示ON C=1:游標ON B=1:游標位置ON(3) 功能設定CODERW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLHDLX0 REXX 功能:DL=1(必須設為1)RE=1:擴充指令集動作 RE=0:基本指令集動作(4) 位址歸位CODERW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLLHX功能:把DDRAM位址計數器調整為“00H”,游標回原點,該功能不影響顯示DDRAM(5) 反白選擇CODERW RS DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0LLLLLLLHR1R0功能:選擇4行中任意一行作反白顯示,并可以決定反白的與否。其中R1R0為00是表示第一行反白與否,01表示第二行的反白與否,依此類推。下面是一段字符傳送程序,即一個字符是如何分為三個字節傳送的:void Send(uchar type,uchar transdata)uchar firstbyte = 0xf8;/synchronizing bit stringuchar temp;uchar i,j = 3; if(type) firstbyte |= 0x02; GPIOPinWrite(cy_PORT, cyCS, 0xFF); GPIOPinWrite(cy_PORT, cyCLK, 0x00); while(j 0) if(j = 3) temp = firstbyte; /Synchronizing bit string else if(j = 2) temp = transdata&0xf0; /1st byte = Higher Data else temp = (transdata 0;i-)if(temp & 0x80) GPIOPinWrite(cy_PORT, cySID, 0xFF); else GPIOPinWrite(cy_PORT, cySID, 0x00); GPIOPinWrite(cy_PORT, cyCLK, 0xFF); temp = 1; GPIOPinWrite(cy_PORT, cyCLK, 0x00);if(j = 3) SysCtlDelay(600 * (TheSysClock/ 3000000); / 延時約600us else SysCtlDelay(200 * (TheSysClock/ 3000000); / 延時約200us j-; GPIOPinWrite(cy_PORT, cySID, 0x00); GPIOPinWrite(cy_PORT, cyCS, 0x00);4.2.1 漢字顯示在12864顯示模塊中,帶有中文字庫,可以顯示漢字,下面的程序就是漢字顯示的主程序,它顯示的是8行漢字,由于12864顯示模塊為128*64,即可以顯示四行漢字,每行可以顯示八個漢字,所以通過循環顯示,每次顯示四行,完成八行漢字的顯示。void main(void) jtagWait(); / 防止JTAG失效,重要! clockInit(); / 時鐘初始化:晶振,6MHz /初始化指針數組 ptr0 = h0; ptr1 = h1; ptr2 = h2; ptr3 = h3; ptr4 = h4; ptr5 = h5;ptr6 = h6;Ini_Lcd(); / 初始化液晶 unsigned char tmp; for(;) tcnt+; if(tcnt = 0x02) Disp_HZ(0x80,ptrd1,8); Disp_HZ(0x90,ptrd2,8); Disp_HZ(0x88,ptrd3,8); Disp_HZ(0x98,ptrd4,8); tmp = d4; d4+; if(d4 = 7) d4 = 0; d1 = d2; d2 = d3; d3 = tmp; tcnt = 0; SysCtlDelay(1000 * (TheSysClock/ 3000); / 延時約1000ms 4.2.2 圖片顯示 12864顯示模塊可以顯示圖片,由于在顯示圖片的過程中,需要根據圖片的內容來控制128*64個點的每個點的高低電平,從而達到顯示圖片的效果,在這里我非常感謝曉奇提供的液晶顯示字模提取系統,給予了我很大的方便,在實現顯示延大校徽的時候,通過圖形編輯器對圖片進行處理處理,先用魔棒對圖片部分進行選擇,再根據需要調整圖片的飽和度、色度以及黑白、銳化等,最終使用曉奇提供的液晶顯示字模提取工具對圖片進行字模提取,在圖片編輯和提取的過程中,需要注意的是圖片的大小必須是128*64的,在提取的界面中,參數書設定為128*64,才可以得到正確的顯示內容,否則會出現顯示器顯示出來為亂碼的情況,如圖20是字模提取的顯示結果: 圖20 提取的圖片 4.2.3 按鍵中斷控制時間顯示 在小車顯示系統的設計中,根據需要,對時間的顯示是必不可少的一部分內容,其中要對總時間顯示。在時間顯示中,需要用到的功能主要為定時器,在定時的過程中,把秒轉換成我們平時所見的時分秒的形式,由于是小車時間顯示,所以需要在小車啟動的時候,開始計時,在小車停止的時候,停止計時。所以就需要設置按鍵,在按下鍵時,開始計時,再次按鍵時,停止計時,在三次按鍵時,由于對變量eiTi進行清零處理,因此從零開始再計時。從而達到可以計出每次小車運行的總時間。如下是按鍵計時的流程圖和部分源程序:t=1啟 動 動GPIO中斷處理停止t=0if(t=0) t=1;if(t=1) t=0;按 鍵計 時圖21 按鍵計時void GPIO_Port_B_ISR(void) unsigned char ucVal; unsigned long ulStatus; ulStatus = GPIOPinIntStatus(KEY_PORT, true); /讀取中斷狀態 GPIOPinIntClear(KEY_PORT, ulStatus); /清除中斷狀態,重要 if (ulStatus & KEY_PIN) /如果KEY的中斷狀態有效 SysCtlDelay(10 * (TheSysClock /3000); /延時約10ms,消除按鍵抖動 while (GPIOPinRead(KEY_PORT, KEY_PIN) = 0x00) ; SysCtlDelay(10 * (TheSysClock /3000); /延時約10ms,消除松鍵抖動 if(t=0) t=1; TimerLoadSet(TIMER0_BASE, TIMER_A, 60000); /定時1s TimerEnable(TIMER0_BASE, TIMER_A); /使能Timer計數 GPIOPinWrite(LED_PORT, LED_PIN, 0xFF);/點亮LED,定時開始 eiTi=0; /三次按鍵后時間清零 else if(t=1) t=0; 進入程序for定 時1S按 鍵中斷處理eiTi+否是eiTi換算為時分秒的形式顯 示 按 鍵停 止 圖22 時間顯示流程 在啟動程序之后,對GPIO、定時器、中斷進行一系列的設置,再通過for循環顯示出小車運行的總時間,再通過處理使得時間以x時x分x秒的形式顯示出來。進入for循環之后,第一次按鍵之后,設置定時器定時為1秒,即每隔一秒進入中斷一次,變量eiTi將增加1,LED將翻轉一次,計時器開始計時。流程圖見圖22:/ 計算并顯示 eiHo=eiTi / 3600; n=eiTi %3600; eiMi=n/60; eiSe=n%60; Disp_HZ(0x88,cstr,8); sprintf(cbuf, 時間:%dS,%d , eiTi,i); sprintf(cstr, 時鐘%2d時%2d分%2d秒 ,eiHo,eiMi,eiSe); Disp_HZ(0x98,cbuf,8); i+; void Timer0A_ISR(void) unsigned char ucVal; unsigned long ulStatus; ulStatus = TimerIntStatus(TIMER0_BASE, true); / 獲取當前中斷狀態 TimerIntClear(TIMER0_BASE, ulStatus); /清除全部中斷狀態 if (ulStatus & TIMER_TIMA_TIMEOUT) /如果是超時中斷 ucVal = GPIOPinRead(LED_PORT, LED_PIN); /反轉LED GPIOPinWrite(LED_PORT, LED_PIN, ucVal); +eiTi; 4.2.4 “小車狀態”動態顯示在實現顯示的過程中,我做了“小車狀態”的動態顯示,由于一個漢字要占兩個字節,因此在編寫程序的過程中,需要一次移位兩個字節,如果只移一位,顯示出的結果是亂碼。下面是實現動態顯示的過程:首先把第一個漢字的兩個字節賦給兩個臨時變量,然后把第二個漢字的兩個字節按高低字節放入第一個漢字原占的單元中,第三個漢字放入第二個漢字的單元中,依此類推,直到最后一個放入倒數第二個漢字的單元中,再把第一個漢字的兩個臨時變量中的內容放入最后一個漢字原來占的單元中,至此完成了第一個循環,如此一直下去,則可完成漢字的動態(循環往左)顯示。 if(i%10=0) psl=strlen(cstr1); ctemp=cstr10; ctemp1=cstr11; for(j=0;jpsl-2;) cstr1j=cstr1j+2; cstr1j+1=cstr1j+3; j=j+2; if(j=psl-3) cstr1j=ctemp; cstr1j+1=ctemp1; Disp_HZ(0x80,cstr1,8); 4.2.5 串口實現控制LED亮滅串口是LM3S811的一個功能模塊,它可以通過串口調試器對程序進行調試。在調試的過程中需要設定它的參數:其中有:波特率一般為9600、數據長度為8位、1個停止位、無奇偶校驗、FIFO禁能、無中斷。選擇串口一般為COM2、COM4、COM6等,在使用它進行調試時,先打開串口,再在輸入欄里輸入on+回車或Off+回車,觀察LED的亮滅情況。源程序見附錄1: 4.2.6 防JTAG失效程序程序:void jtagWait(void) SysCtlPeriEnable(KEY_PERIPH); GPIOPinTypeIn(KEY_PORT, KEY_PIN); if (GPIOPinRead(KEY_PORT, KEY_PIN) = 0x00) for (;); SysCtlPeriDisable(KEY_PERIPH); 在LM3S811芯片中,JTAG是作為下載(燒寫)程序來使用的,同時,它的五個管腳也可以與GPIO復用,如果這五個管腳作為GPIO進行使用了,那么可能會使得這五個管腳上有高低電平不斷存在,在進行新的程序燒寫的時候,可能會與原來的高低電平沖突,這樣一來會導致芯片無法進行下一次燒寫操作,永久性的無法使用。因此,在寫LM3S811的程序時,需要在每個程序的最前面寫上jtagWait()這一句就解決了上面的麻煩,有了這個程序,在每次系統上電以后,如果沒有按下JTAG鍵,系統就會執行以前有的程序,不影響正常運行;如果需要下載入新的程序,則只需要按下JTAG鍵,程序就會進入死循環,等待下一次程序的的下載。4.2.7 顯示系統總體流程圖延大校徽前進(后退)顯示個人信息時間顯示歡迎詞準備按鍵圖23是所要顯示的整體框圖,詳細程序見附錄3。否按鍵啟動小車(總時間)是否是按鍵 圖23 整體顯示流程5 調試 5.1 硬件調試完成LM3S811與12864的連接后,發現顯示器不能顯示,因此為了使得顯示模塊得以顯示,在顯示模塊3、18引腳間接了一個電阻,其電阻大小與顯示模塊的顯示的具體情況經試驗得出下表:表2 阻值變化與背光情況阻值大小背光情況 2K 灰棕色 清晰度差 7K 深藍色帶灰 清晰度一般 10K 深藍色 清晰度適中 20K 藍色 清晰度差 36K 藍色 光強 清晰度一般由此可見,選擇阻值為10k的阻值為最好。在硬件電路的焊接過程中,需要注意的是所使用的電路板縱向導通的,如果沒有注意到的話,可能導致最終所焊接電路會短路。在硬件電路焊接完畢后,需要使用萬用表對所焊電路進行檢查,電路是否導通,或者電路是否短路等。從LM3S811帶仿真器的開發板上往不帶仿真器的最小系統開發板上移植程序
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學生視角下圖書館藏書更新對閱讀推廣活動的優化策略論文
- 初中歷史教學中學生歷史思維能力培養研究論文
- 節能制度與管理制度
- 英維克檔案管理制度
- 茶飲店員工管理制度
- 觀眾對綠色劇院演藝的感知
- 評估工作總結
- 《樹和喜鵲》課件
- 財務與會計之非流動負債知識答題(一)
- 湖南省株洲市醴陵市2024-2025學年七年級下學期期末能力測試練習數學試卷(含答案)
- 2025年特種設備安全考試題庫特種設備安全管理人員法規應用試卷
- 普法試題及答案初中
- 中控崗位考試題及答案
- 商鋪退押金協議書
- 碘對比劑護理應用與安全管理
- 2025-2030年中國航空密封件行業市場現狀供需分析及投資評估規劃分析研究報告
- 知識產權租賃協議書
- GB 45673-2025危險化學品企業安全生產標準化通用規范
- 醫院培訓課件:《新生兒早期基本保健專家共識(2020)解讀》
- 山東開放大學招聘真題2024
- 《治療癲癇藥物》課件
評論
0/150
提交評論