嵌入式系統原理及應用 課程設計報告
目錄 引言 第一章硬件介紹 1.1單片機介紹 1.2 設計所用開發板的介紹 1.3 LCD1602的原理及其應用 1.3.1開發板硬件連接關系 1.3.2液晶屏LCD1602的功能及應用 1.3.31602LCD的指令說明及時序 1.3.4 1602LCD的RAM地址映射及標準字庫表 1.4開發板矩陣鍵盤原理及應用 第二章設計思路、仿真及調試 2.1 設計方法 2.2 硬件簡介 2.3 軟件設計 2.3.1 矩陣鍵盤 2.3.2 LCD1602 第三章設計結果 第四章設計總結 附錄
引言目前單片機滲透到我們生活的各個領域,幾乎很難找到哪個領域沒有單片機的蹤跡。導彈的導航裝置,飛機上各種儀表的控制,計算機的網絡通訊與數據傳輸,工業自動化過程的實時控制和數據處理,廣泛使用的各種智能IC卡,民用豪華轎車的安全保障系統,錄像機、攝像機、全自動洗衣機的控制,以及程控玩具、電子寵物等等,這些都離不開單片機。更不用說自動控制領域的機器人、智能儀表、醫療器械了。因此,單片機的學習、開發與應用將造就一批計算機應用與智能化控制的科學家、工程師。單片機廣泛應用于儀器儀表、家用電器、醫用設備、航空航天、專用設備的智能化管理及過程控制等領域,大致可分如下幾個范疇: (1)在智能儀器儀表上的應用 (2)在工業控制中的應用 (3)在家用電器中的應用 (4)在計算機網絡和通信領域中的應用 (5)單片機在醫用設備領域中的應用 (6)在各種大型電器中的模塊化應用 (7)單片機在汽車設備領域中的應用 此外,單片機在工商,金融,科研、教育,國防航空航天等領域都有著十分廣泛的用途。 隨著智能化的逐步提高,單片機在我們生活中得到了越來越廣泛的應用,其是一種集成在電路芯片,是采用超大規模集成電路技術把具有數據處理能力的中央處理器CPU、隨機存儲器RAM、只讀存儲器ROM、多種I/O口和中斷系統、定時器/計時器等功能(可能還包括顯示驅動電路、脈寬調制電路、模擬多路轉換器、A/D轉換器等電路)集成到一塊硅片上構成的一個小而完善的計算機系統。本設計要制作的就是單片機于生活中最為常見的異種應用——簡易計算器。本簡易計算器是在普中HC6800 V3.0開發板的基礎上,利用開發板上已有的資源設計開發的,本開發板上有著相對豐富的硬件資源,可以較好的完成一些設計。 本設計所用的單片機為STC90C516RD+,具體的設計要求如下:通過矩陣鍵盤檢測按下的數字和運算符號,在LCD1602液晶顯示屏上面顯示運算的結果,在第一行上顯示輸入的計算式,為左對齊;在第二行顯示等于號以及最后的運算結果,為了較好的顯示效果和使用的效果,第二行的計算結果顯示設計為右對齊。這樣在LCD1602的顯示屏上可以有較好的顯示效果,計算效果比較分明。 總體上來說,作為本嵌入式原理課程的設計作業,本設計的實現難度不大。
第一章硬件介紹如上所述,本課程的課程設計是在普中的單片機開發板上面完成的,可以直接使用開發板上面的硬件設計,相對于普通的硬件設計而言,省去了很多硬件設計上面的過程和時間,提高了本設計的效率,加快了設計的流程。但在相應的軟件設計之前,我們需要對開發板的硬件設計有著清楚的了解,以免在設計過程中出現一些不必要的麻煩和錯誤,影響設計進度。下面開始即對開發板的硬件連接做一些詳細而必要的介紹。 1.1單片機介紹 單片微型計算機簡稱單片機,是典型的嵌入式微控制器(Microcontroller Unit),常用英文字母的縮寫MCU表示單片機,它最早是被用在工業控制領域。單片機由芯片內僅有CPU的專用處理器發展而來。最早的設計理念是通過將大量外圍設備和CPU集成在一個芯片中,使計算機系統更小,更容易集成進復雜的而對體積要求嚴格的控制設備當中。INTEL的Z80是最早按照這種思想設計出的處理器,從此以后,單片機和專用處理器的發展便分道揚鑣。 本設計所使用的單片機為STC的STC90C516RD。根據STC官方的介紹,本單片機有著以下特點: STC90C516RD+系列單片機是宏晶科技推出的新一代超高速/低功耗的單片機,指令代碼完全兼容傳統8051單片機,12時鐘/機器周期和6時鐘/機器周期可任意選擇,內部集成MAX810專用復位電路,時鐘頻率在12MHz以下時,復位腳可直接接地。 1.增強型6 時鐘/ 機器周期,12 時鐘/ 機器周期 8051 CPU 2.工作電壓:5.5V - 3.8V(5V 單片機)/3.8V - 2.4V(3V 單片機) 3.工作頻率范圍:0-40MHz,相當于普通8051的 0~80MHz. 4.用戶應用程序空間 4K/6K/7K/8K/10K/12K/13K/16K/32K/40K/48K/56K/ 61K/字節 5.片上集成 1280字節/512/256字節 RAM 6.通用I/O口(35/39 個),復位后為: P1/P2/P3/P4 是準雙向口/ 弱上拉(普通8051 傳統I/O 口)P0口是開漏輸出,作為總線擴展用時,不用加上拉電阻,作為I/O 口用時,需加上拉電阻。 7.ISP(在系統可編程)/IAP(在應用可編程),無需專用編程器 / 仿真器可通過串口(P3.0/P3.1)直接下載用戶程序,8K 程序3 - 5 秒即可完成一片 8.EEPROM 功能 9.看門狗 10.內部集成MAX810專用復位電路,外部晶體12M以下時,可省外部復位電路,復位腳可直接接地。 11.共3個16位定時器/計數器,其中定時器0還可以當成2個8位定時器使用 12.外部中斷4路,下降沿中斷或低電平觸發中斷,Power Down模式可由外部中斷低電平觸發中斷方式喚醒 13.通用異步串行口(UART),還可用定時器軟件實現多個UART 14.工作溫度范圍:0-75℃/-40-+85℃ 15.封裝:LQFP-44,PDIP-40,PLCC-44 1.2 設計所用開發板的介紹 本課程設計是在開發板普中HC6800 V3.0基礎上完成的,開發板的外觀圖如圖1.1所示。本開發板在硬件上配置了以下硬件: 1.五線四相步進電機 2.16*16點陣 3.LCD1602液晶顯示屏 4.1個靜態數碼管+8個動態數碼管 5.四線雙極性步進電機 6.4*4矩陣鍵盤+8個獨立按鍵 7.TFT彩屏/12864/19264 8.RS485通信 9.繼電器 10.蜂鳴器 11.AD/DA/光敏/熱敏 12.18B20溫度傳感器 13.紅外 14.三色交通燈 本實驗將在開發板現有的硬件基礎上設計一個簡易的計算器,按照設計要求,我們將會用到開發板上外接的LCD1602液晶顯示屏、矩陣鍵盤。因為設計周期的限制,將不加其他的功能,比如蜂鳴器等。 開發板單片機部分的連接關系如下圖所所示: 圖1.1設計所用開發板 圖1.2開發板MCU的硬件連接
1.3LCD1602的原理及其應用 1.3.1開發板硬件連接關系 開發板上LCD1602這一部分的硬件連接原理圖如圖1.1所示。 圖1.3開發板LCD1602的硬件連接關系 可見,本開發板上LCD1602的硬件連接設計相對于常見的電路設計而言,并沒有什么相對特殊的地方,可以碩士比較常見的設計。液晶屏的數據端口與單片機的P0口相連接,VCC和GND端口均有設計連接。此外通過調節變阻器RJ6可以調節液晶顯示屏的圖像對比度。 圖1.4調節圖像對比度 1.3.2液晶屏LCD1602的功能及應用 LCD1602已很普遍了,具體介紹我就不多說了,市面上字符液晶絕大多數是基于HD44780液晶芯片的,控制原理是完全相同的,因此HD44780寫的控制程序可以很方便地應用于市面上大部分的字符型液晶。字符型LCD通常有14條引腳線或16條引腳線的LCD,多出來的2條線是背光電源線VCC(15腳)和地線GND(16腳),其控制原理與14腳的LCD完全一樣。 LCD1602采用標準的14腳(無背光)或16腳(帶背光)接口,本設計所用的LCD1602為帶有背光的16腳。其中各引腳接口說明如表1-1所示: 表1-1 LCD1602各引腳功能 編號 | 符號 | 引腳說明 | 編號 | 符號 | 引腳說明 | 1 | VSS | 電源地 | 9 | D2 | 數據 | 2 | VDD | 電源正極 | 10 | D3 | 數據 | 3 | VL | 液晶顯示偏壓 | 11 | D4 | 數據 | 4 | RS | 數據/命令選擇 | 12 | D5 | 數據 | 5 | R/W | 讀/寫選擇 | 13 | D6 | 數據 | 6 | E | 使能信號 | 14 | D7 | 數據 | 7 | D0 | 數據 | 15 | BLA | 背光源正極 | 8 | D1 | 數據 | 16 | BLK | 背光源負極 |
第1腳:VSS為地電源。 第2腳:VDD接5V正電源。 第3腳:VL為液晶顯示器對比度調整端,接正電源時對比度最弱,接地時對比度最高,對比度過高時會產生“鬼影”,使用時可以通過一個10K的電位器調整對比度。 第4腳:RS為寄存器選擇,高電平時選擇數據寄存器、低電平時選擇指令寄存器。 第5腳:R/W為讀寫信號線,高電平時進行讀操作,低電平時進行寫操作。當RS和R/W共同為低電平時可以寫入指令或者顯示地址,當RS為低電平R/W為高電平時可以讀忙信號,當RS為高電平R/W為低電平時可以寫入數據。 第6腳:E端為使能端,當E端由高電平跳變成低電平時,液晶模塊執行命令。 第7~14腳:D0~D7為8位雙向數據線。 第15腳:背光源正極。 第16腳:背光源負極。 1.3.31602LCD的指令說明及時序 1602液晶模塊內部的控制器共有11條控制指令,如表1-2所示: 表1-2控制命令表 序號 | 指令 | RS | R/W | D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | 1 | 清顯示 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 2 | 光標返回 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | * | 3 | 置輸入模式 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | I/D | S | 4 | 顯示開/關控制 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | D | C | B | 5 | 光標或字符移位 | 0 | 0 | 0 | 0 | 0 | 1 | S/C | R/L | * | * | 6 | 置功能 | 0 | 0 | 0 | 0 | 1 | DL | N | F | * | * | 7 | 置字符發生存貯器地址 | 0 | 0 | 0 | 1 | 字符發生存貯器地址 | 8 | 置數據存貯器地址 | 0 | 0 | 1 | 顯示數據存貯器地址 | 9 | 讀忙標志或地址 | 0 | 1 | BF | 計數器地址 | 10 | 寫數到CGRAM或DDRAM) | 1 | 0 | 要寫的數據內容 | 11 | 從CGRAM或DDRAM讀數 | 1 | 1 | 讀出的數據內容 |
1602液晶模塊的讀寫操作、屏幕和光標的操作都是通過指令編程來實現的。(說明:1為高電平、0為低電平) 指令1:清顯示,指令碼01H,光標復位到地址00H位置。 指令2:光標復位,光標返回到地址00H。 指令3:光標和顯示模式設置 I/D:光標移動方向,高電平右移,低電平左移 S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。 指令4:顯示開關控制。 D:控制整體顯示的開與關,高電平表示開顯示,低電平表示關顯示 C:控制光標的開與關,高電平表示有光標,低電平表示無光標 B:控制光標是否閃爍,高電平閃爍,低電平不閃爍。 指令5:光標或顯示移位 S/C:高電平時移動顯示的文字,低電平時移動光標。 指令6:功能設置命令 DL:高電平時為4位總線,低電平時為8位總線 N:低電平時為單行顯示,高電平時雙行顯示 F: 低電平時顯示5x7的點陣字符,高電平時顯示5x10的點陣字符。 指令7:字符發生器RAM地址設置。 指令8:DDRAM地址設置。 指令9:讀忙信號和光標地址 BF:為忙標志位,高電平表示忙,此時模塊不能接收命令或者數據,如果為低電平表示不忙。 指令10:寫數據。 指令11:讀數據。 讀寫操作時序如圖1.5的a、b所示: a.LCD1602讀寫操作時序 b.LCD1602讀寫操作時序 圖1.6 LCD1602讀寫操作時序 1.3.4 1602LCD的RAM地址映射及標準字庫表 液晶顯示模塊是一個慢顯示器件,所以在執行每條指令之前一定要確認模塊的忙標志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,圖1.5是1602的內部顯示地址。 圖1.6 1602LCD內部顯示地址 例如第二行第一個字符的地址是40H,那么是否直接寫入40H就可以將光標定位在第二行第一個字符的位置呢?這樣不行,因為寫入顯示地址時要求最高位D7恒定為高電平1所以實際寫入的數據應該是01000000B(40H)+10000000B(80H)=11000000B(C0H)。 在對液晶模塊的初始化中要先設置其顯示模式,在液晶模塊顯示字符時光標是自動右移的,無需人工干預。每次輸入指令前都要判斷液晶模塊是否處于忙的狀態。 1602液晶模塊內部的字符發生存儲器(CGROM)已經存儲了160個不同的點陣字符圖形,如圖10-58所示,這些字符有:阿拉伯數字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時模塊把地址41H中的點陣字符圖形顯示出來,我們就能看到字母“A” 圖1.7字符代碼與圖形對應圖 1.4開發板矩陣鍵盤原理及應用 本設計需要使用開發板上面的按鍵完成數據的輸入,需要用到開發板上的4*4的矩陣鍵盤,以完成作為計算器的數字1~9以及+、—、*、/的輸入。本開發板的矩陣鍵盤的硬件連接關系如下圖所示。 圖1.8矩陣鍵盤的硬件連接關系 可見本開發板的硬件上,矩陣鍵盤通過和單片機的P11口連接,檢測按鍵的按下。 按鍵需要完成的是全部10個數字的輸入和運算符號的輸入,相應的按鍵分配情況如下表所示。 表1-3按鍵位置設計
矩陣鍵盤工作原理:由于按鍵沒有接地,4行4列正好占用8個I/O如果4行我們送 P3.0到P3.3送入0 1 1 1 然后去讀取 4列的值,如果P3.0的按鍵按下那么P3.4---P3.7的值等于 0 1 1 1,假如是第2個鍵按下的話那么讀回來的值是 1 0 1 1 ,如果第3個鍵按下去讀回來的值是 1 1 0 1 ,如果第4個鍵按下去讀回來的值是 1 1 1 0 ,如果沒有鍵按下去讀回來就是1 1 1 1。所以我們就根據讀回來的值來判斷按下去的是那個鍵。當然這是對P3.0這一行,因為矩陣鍵盤是掃描的,所以下次把P3.0 給1 P3.1 給0對第2行,陸續的第3 行第4行, 0111 1011 1101 1110 而每次都去從新掃描一遍列值列有4個值,以確定是那個鍵按下。無論何時任何一個時間有一個按鍵被按下就跳出循環。當然不可能有2個鍵剛好一起按下你的手沒有這么好的力度,就算有2個鍵一起按鍵,程序也有先后檢測的順序,只能檢測一個后面的檢測不到。 根據實驗資料上的表述,開發板在設計時,在使用矩陣鍵盤時需要按照以下要求操作:(1)拔下1602下面的JP165以及通過排線將JP8和JP4連接起來。效果如下圖所示。 圖1.9開發板準備工作 主要時由于其他的硬件連接的原因,需要拔下JP165。在原理圖中,JP165的連接如下所示:為了正常的使用矩陣鍵盤,我們按照開飯的設計拔下JP165,連接好相應的引腳。 圖1.10 JP165的硬件連接 第二章設計思路、仿真及調試2.1 設計方法 本電路設計采用STC90C516RD單片機為核心,利用晶振產生的時鐘脈沖信號,利用液晶屏LCD1602顯示計算及其時間信息,通過對STC90C516RD單片機的編程控制液晶屏LCD1602的顯示。顯示計算和簡易計算的信息同在LCD1602,通過按鍵切換選擇。外部的矩陣鍵盤作為簡易計算器的數值和計算方式的輸入。 2.2 硬件簡介 本系統以STC90C516RD單片機為核心,本系統選用12MHZ的晶振,,使得單片機有合理的運行速度。起振電容30pF對振蕩器的頻率高低、振蕩器的穩定性和起振的快速性影響較合適,復位電路為按鍵高電平復位。 圖2.1單片機復位電路設計 當復位按鍵按下之后,HRST接到高電平VCC。在按下復位健之前,三極管Q32TY時截止的。當HRST輸入高電平之后,三極管導通,LRST的信號引腳輸入高電平。完成對單片機的復位。 第三章設計結果通過在keil4中編譯通過,如圖3.1所示,將生成的.hex文件下載到開發板上的單片機內運行。 圖3.1程序編譯通過 在開發板上完成相應簡單的加減乘除運算效果如下所示: a.加法運算 b.減法運算 c.乘法運算d.除法運算 圖3.2設計效果 由于變量的內型決定了,當數據的位數過多時,程序的計算會出現一些錯誤,比如,當計算的位數過長時,會出現顯示結果亂碼,現象如圖3.3所示。 圖3.3液晶顯示屏顯示亂碼 從總體上來說,本設計基本實現了預期簡易計算器的功能,能夠實現一些簡單的加減乘除的運算。當數據過大時顯示的亂碼可能時數據類型的原因,也有可能是其他原因造成的,這里便不做具體深入的分析和探討。
第四章設計總結在用單片機實現簡易計算的設計中使用到了STC的單片機、LCD1602及其4*4鍵盤。STC的單片機是目前使用相對比較廣泛的51單片機,作為單片機的入門是一個非常合適的選擇,對于研究生階段來說,是一個比較熟悉的硬件了。4*4的矩陣鍵盤也是有用比較廣泛的硬件了,是一種比較常見的輸入方式,1602液晶顯示屏對于51單片機來說是比較合適的組合,雖然使用的功能比較有限,但是在51單片機的硬件條件下是比較好的選擇。 為了更好的使用體驗,之后可以加入蜂鳴器和其他模塊,當矩陣鍵盤的按鍵按下時,蜂鳴器發聲,提示按鍵按下,一定程度上可以降低計算器在使用過程中出現的誤操作。此外,也可以在現有的計算器的基礎上加上時鐘等其他功能,并通過按鍵進行狀態和功能的切換,比加上18B20溫度傳感器,檢測當時環境中的溫度,加入時鐘顯示當時的日期和時間等。 在設計過程中我通過在網上和圖書館查閱資料,收集了關于單片機和液晶屏LCD1602顯示方面的資料,通過對這些資料的學習,我了解了單片機的基本結構和單片機在生活和生產中所發揮的作用;液晶屏LCD1602的原理和使用。本次設計完成的主要工作和任務如下:對設計方案的理論研究,單片機的合理選型,軟件的編寫和調試以及設計報告的制作。通過設計簡易計算器的過程中我掌握了單片機的基本原理及其各種應用,對它的各種硬件接口與軟件設計方法有較深入的認識。
完整的Word格式文檔51黑下載地址(含源碼): |