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