版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、 成績: 存檔資料 通 大 學(xué)華 東 交 書報(bào) 告 課 程 設(shè) 計(jì) 所屬課程名稱 單片機(jī)原理及應(yīng)用 題 目 院 電 氣 學(xué) 院 (系) 班 電氣化14 - 班 級(jí) 學(xué) 號(hào) 學(xué)生姓名 指導(dǎo)教師 輔導(dǎo)教師 2016年 12 月 30 日 任務(wù)書)論文(課程設(shè)計(jì) 電氣 學(xué) 院 電氣工程 專 業(yè) 14 級(jí)( )班 一、課程設(shè)計(jì)(論文)題目 填寫所選題目 二、課程設(shè)計(jì)(論文)工作自 2016 年 12 月 26 日起至 2016 年 12 月 30 日止。 三、課程設(shè)計(jì)(論文)內(nèi)容要求: 1本課程設(shè)計(jì)的目的 )使學(xué)生掌握系統(tǒng)單片機(jī)各功能模塊的基本工作原理; (1 )培養(yǎng)學(xué)生單片機(jī)硬件電路設(shè)計(jì)的基本思路和
2、方法; (2 3)使學(xué)生掌握系統(tǒng)調(diào)試的方法;( 4)培養(yǎng)學(xué)生分析、解決問題的能力;( 5)提高學(xué)生的科技論文寫作能力。( 2課程設(shè)計(jì)的任務(wù)及要求 1)基本要求: )分析所設(shè)計(jì)系統(tǒng)各功能模塊的工作原理;(1 ;(2)選用合適的器件(芯片) 3)提出系統(tǒng)的設(shè)計(jì)方案(要有電路原理圖);( )對所設(shè)計(jì)電路進(jìn)行仿真調(diào)試。(4 (5)所設(shè)計(jì)系統(tǒng)的具體功能要求:(此處填寫自已所選題目任務(wù)書中的系統(tǒng)功能要求) 2)提高要求: 在基本要求達(dá)到后,可進(jìn)行創(chuàng)新設(shè)計(jì),如改善電路性能,在實(shí)驗(yàn)板上調(diào)試等。 )課程設(shè)計(jì)論文編寫要求3 要按照書稿的規(guī)格謄寫課設(shè)論文)1( 論文包括目錄、緒論、正文、小結(jié)、參考文獻(xiàn)、附錄等)2(
3、 ,硬件原理圖等正文中要有程序設(shè)計(jì)思路的闡述,程序流程圖)3( 課設(shè)論文裝訂按學(xué)校的統(tǒng)一要求完成 )(4 )課設(shè)考核: 4 從以下幾方面來考查: )出勤情況及任務(wù)的飽滿程度; (1 2)設(shè)計(jì)任務(wù)的難易程度;( )完成課設(shè)任務(wù)情況;(3 )動(dòng)手調(diào)試能力;(4 (5)論文撰寫的原理分析、設(shè)計(jì)思路以及論述的層次性、條理性、格式的規(guī)范性; )課程設(shè)計(jì)進(jìn)度安排5 地點(diǎn) 天數(shù) 內(nèi)容 圖書館 構(gòu)思及收集資料 1 程序設(shè)計(jì)與調(diào)試 3 實(shí)驗(yàn)室 撰寫論文 1 教室 學(xué)生簽名: 2016 年 12月 26 日 評(píng)審意見論文)課程設(shè)計(jì)( ); )、差( ):優(yōu)( 、良( )、中( )、一般(1)任務(wù)難易及完成情況 ;
4、 、差( )、一般( )、中( ) ) (2)完成調(diào)試能力評(píng)價(jià) :優(yōu)()、良( ;、差( )、中( )、一般( ) (3)論文撰寫水平評(píng)價(jià) :優(yōu)()、良( ) ); 、一般()、差( ) :優(yōu)( 、良( )、中( ) (4)論文格式規(guī)范性評(píng)價(jià) ; )、中( )、一般( 、差(、良( (5)考勤及任務(wù)飽滿情況 :優(yōu)( ) ) 評(píng)閱人: 2017 年1 月 7 日 單片機(jī)課程設(shè)計(jì)報(bào)告 目錄 1、摘 要-2 2、設(shè)計(jì)任務(wù)和要求-2 3、單片機(jī)簡要原理-3 3.1 AT89C51的介紹-3 3.2 單片機(jī)最小系統(tǒng)-8 七段共陽極數(shù)碼管-9 33 .、硬件設(shè)計(jì)-9 4 4.1 鍵盤電路的設(shè)計(jì)-9 4.2
5、 顯示電路的設(shè)計(jì)-11 5、 軟件設(shè)計(jì)-12 5.1 系統(tǒng)設(shè)計(jì)-12 5.2 顯示與按鍵設(shè)計(jì)-14 6、 系統(tǒng)調(diào)試.-22 6.1系統(tǒng)初始狀態(tài)的調(diào)試-22 6.2鍵盤輸入功能的調(diào)試-23 6.3系統(tǒng)運(yùn)算功能的調(diào)試-25 7、心得體會(huì)-26 參考文獻(xiàn)-29 附錄 系統(tǒng)硬件電路圖-29 1 單片機(jī)課程設(shè)計(jì)報(bào)告 - 1、摘要 近年來隨著科技的飛速發(fā)展,單片機(jī)的應(yīng)用正在不斷深入,同時(shí) 帶動(dòng)傳統(tǒng)控制檢測技術(shù)日益更新。在實(shí)時(shí)檢測和自動(dòng)控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往作為一個(gè)核心部件來使用,僅單片機(jī)方面知識(shí)是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu)軟硬件結(jié)合,加以完善。 本設(shè)計(jì)是實(shí)現(xiàn)兩位數(shù)的加減運(yùn)算的簡易計(jì)算器,實(shí)現(xiàn)
6、鍵盤輸入,由七段LED數(shù)碼管輸出;程序都是根據(jù)教材內(nèi)和網(wǎng)絡(luò)中的程序參考編寫而成,在功能上還并不十分完善,限制也較多。本設(shè)計(jì)重在設(shè)計(jì)構(gòu)思,使得我們用專業(yè)知識(shí)、專業(yè)技能分析和解決問題,通過設(shè)計(jì)使得我們對所學(xué)知識(shí)徹底鞏固。 2、設(shè)計(jì)任務(wù)和要求 本次課程設(shè)計(jì),我選題是單片機(jī)十進(jìn)制加法計(jì)算器軟設(shè)計(jì) ,設(shè)計(jì)任務(wù)為: 設(shè)計(jì)一鍵盤顯示裝置,鍵盤上除需定義10個(gè)十進(jìn)制數(shù)字鍵外還要相應(yīng)的功能鍵,其它鍵不定義無響應(yīng)。利用此系統(tǒng)可分別可輸入十進(jìn)制被加數(shù)與加數(shù),實(shí)現(xiàn)兩數(shù)相加并將結(jié)果以十進(jìn)制形式顯示出來。(擴(kuò)展:多位10進(jìn)制數(shù)相加) 本課程設(shè)計(jì)的十進(jìn)制加法計(jì)算器的計(jì)算范圍為0255,計(jì)算結(jié)果全為整數(shù),計(jì)算結(jié)果溢出結(jié)果不顯
7、示。 2 單片機(jī)課程設(shè)計(jì)報(bào)告 1、加法:三位加法,計(jì)算結(jié)果超過255溢出不顯示 2、減法:三位減法,計(jì)算結(jié)果若小于零溢出不顯示 3、乘法:三位數(shù)乘法 4、除法:整數(shù)除法 5、有清零功能 3、 單片機(jī)簡要原理 在該課程設(shè)計(jì)中,主要用到一個(gè)AT89C51芯片和串接的共陰數(shù)碼管。作為該設(shè)計(jì)的主要部分,下面將對它們的原理及功能做詳細(xì)介紹和說明。 3.1 AT89C51的介紹: 圖一 AT89C51外形結(jié)構(gòu)和引腳分布圖 芯片AT89C51的外形結(jié)構(gòu)和引腳圖如圖一所示。AT89C51是一種帶4K3 單片機(jī)課程設(shè)計(jì)報(bào)告 字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROMFalsh Programmable and
8、 Erasable Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機(jī)。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。 其功能特性描述:AT89C51單片機(jī)在電子行業(yè)中有著廣泛的應(yīng)用。AT89C52具有以下標(biāo)準(zhǔn)功能: 8k字節(jié)Flash,256字節(jié)RAM, 32 位I/O 口線,看門狗定時(shí)器,2 個(gè)數(shù)據(jù)指針,三個(gè)16 位 定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級(jí)中斷結(jié)構(gòu),
9、全雙工串行口, 片內(nèi)晶振及時(shí)鐘電路,8 位微控制器 8K 字節(jié)在系統(tǒng)可編程 Flash ROM。 P0 口:P0口是一個(gè)8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏 輯電平。對P0端口寫“1”時(shí),引腳用作高阻抗輸入端用。 在訪問外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),P0口被分時(shí)轉(zhuǎn)換地址(低8 位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。 在Flash 編程時(shí),P0 口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要求外接上拉電阻。 P1 口:P1 口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,P1 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對P1 端口寫“1”時(shí),內(nèi)部上拉電
10、阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),4 單片機(jī)課程設(shè)計(jì)報(bào)告 因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(IIL)。 此外,P1.0和P1.2分別作定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(P1.0/T2)和時(shí)器/計(jì)數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體如下表所示。在flash編程和校驗(yàn)時(shí),P1口接收低8位地址字節(jié)。 P1端口引腳號(hào)第二功能: P1.0 T2(定時(shí)器/計(jì)數(shù)器T2的外部計(jì)數(shù)輸入),時(shí)鐘輸出 P1.1 T2EX(定時(shí)器/計(jì)數(shù)器T2的捕捉/重載觸發(fā)信號(hào)和方向控制) P2 口:P2 是一個(gè)帶有內(nèi)部上拉電阻的8 位雙向I/O 口,P2 的輸出緩沖級(jí)可驅(qū)動(dòng)(吸
11、收或輸出電流)4 個(gè)TTL邏輯門電路。對端口P2 寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(IIL)。 在訪問外部程序存儲(chǔ)器或16 位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX DPTR 指令)時(shí),P2 口送出高8 位地址數(shù)據(jù)。在訪問8 位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行MOVX RI 指令)時(shí),P2 口輸出P2 鎖存器的內(nèi)容。 Flash 編程或校驗(yàn)時(shí),P2亦接收高位地址和一些控制信號(hào)。 P3 口:P3 口是一組帶有內(nèi)部上拉電阻的8 位雙向I/O 口。P3 口輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè)TT
12、L 邏輯門電路。對P3 口寫入“1”時(shí),它們被內(nèi)部上拉電阻拉高并可作為輸入端口。此時(shí),被外部拉低的P3 口將用上拉電阻輸出電流(IIL)。 5 單片機(jī)課程設(shè)計(jì)報(bào)告 P3 口還接收一些用于Flash 閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。 P3 口除了作為一般的I/O 口線外,更重要的用途是它的第二功能。 P3口亦作為AT89C52特殊功能(第二功能)使用,如下所示。 在flash編程和校驗(yàn)時(shí),P3口也接收一些控制信號(hào)。 P3端口引腳第二功能: P3.0 RXD(串行輸入口) P3.1 TXD(串行輸出口) P3.2 INTO(外中斷0) P3.3 INT1(外中斷1) P3.4 TO(定時(shí)/計(jì)數(shù)
13、器0) P3.5 T1(定時(shí)/計(jì)數(shù)器1) P3.6 WR(外部數(shù)據(jù)存儲(chǔ)器寫選通) P3.7 RD(外部數(shù)據(jù)存儲(chǔ)器讀選通) RST復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上高電平將是單片機(jī)復(fù)位。 ALE/PROG當(dāng)訪問外部程序存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的脈沖信號(hào),因此它可對外輸出時(shí)鐘或用于定時(shí)目的。要注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè)ALE脈沖。對FLASH存儲(chǔ)器編程期間,該引腳還用于輸入編程脈6 單片機(jī)課程設(shè)計(jì)報(bào)告 沖(PROG)。 如有必要,可通過對特殊功能寄存器(S
14、FR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條MOVX和MOVC指令才能將ALE激活。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE禁止位無效。 PSEN程序儲(chǔ)存允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89C52由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN有效,即輸出兩個(gè)脈沖,在此期間,當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器,將跳過兩次PSEN信號(hào)。 EA/VPP外部訪問允許,欲使CPU僅訪問外部程序存儲(chǔ)器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。 如E
15、A端為高電平(接Vcc端),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器的指令。 FLASH存儲(chǔ)器編程時(shí),該引腳加上+12V的編程允許電源Vpp,當(dāng)然這必須是該器件是使用12V編程電壓Vpp。 引腳使用說明: I/O端口的編程實(shí)際上就是根據(jù)應(yīng)用電路的具體功能和要求對I/O寄存器進(jìn)行編程。具體步驟如下: l. 根據(jù)實(shí)際電路的要求,選擇要使用哪些I/O端口。 2. 初始化端口的數(shù)據(jù)輸出寄存器,應(yīng)避免端口作為輸出時(shí)的開始階段出現(xiàn)不確定狀態(tài),影響外圍電路正常工作。 7 單片機(jī)課程設(shè)計(jì)報(bào)告 3. 根據(jù)外圍電路功能,確定PO端口的方向,初始化端口的數(shù)據(jù)方向寄存器。對于用作輸入的端口可以不考慮方向初始化,因?yàn)镻O的復(fù)位缺省值
16、為輸入。 4. 用作輸入的PO管腳,需上拉電阻。 5. 最后對I/O端口進(jìn)行輸出(寫數(shù)據(jù)輸出寄存器)和輸入(讀端口)編程,完成對外圍電路的相應(yīng)功能。 3.2 單片機(jī)最小系統(tǒng) 單片機(jī)最小系統(tǒng)就是支持主芯片正常工作的最小部分,包括主控 芯片、復(fù)位電路和晶振電路。 (一) 復(fù)位電路 復(fù)位電路 圖二 本設(shè)計(jì)采用上電與手動(dòng)復(fù)位電路,電阻分別選取100和10K,電 容選取10uF,系統(tǒng)一上電,芯片就復(fù)位,或者中途按按鍵也可以進(jìn)行復(fù)位。 (二) 晶振電路 8 單片機(jī)課程設(shè)計(jì)報(bào)告 晶振電路 圖三 晶振電路是單片機(jī)的心臟,它用于產(chǎn)生單片機(jī)工作所需要的時(shí)鐘信 。11.0592MHz,晶振旁電容選取30pF號(hào)。單片
17、機(jī)的晶振選取 七段共陽極數(shù)碼管3.3 七段共陽數(shù)碼管圖四 a,b,c,d,e,f,g圖為七段共陽數(shù)碼管的引腳圖,從左到右數(shù)碼管的段碼分別為 ,低電平時(shí)點(diǎn)亮,最右邊為位選端。和小數(shù)點(diǎn)dp 4、硬件設(shè)計(jì) 顯示電路以鍵盤電路, 簡易數(shù)字計(jì)算器系統(tǒng)硬件設(shè)計(jì)主要包括: 及其他輔助電路。下面分別進(jìn)行設(shè)計(jì)。 鍵盤電路的設(shè)計(jì)4.1 9 單片機(jī)課程設(shè)計(jì)報(bào)告 鍵盤可分為兩類:編碼鍵盤和非編碼鍵盤。編碼鍵盤是較多按鍵(20個(gè)以上)和專用驅(qū)動(dòng)芯片的組合,當(dāng)按下某個(gè)按鍵時(shí),它能夠處理按鍵抖動(dòng)、連擊等問題,直接輸出按鍵的編碼,無需系統(tǒng)軟件干預(yù)。通用計(jì)算機(jī)使用的標(biāo)準(zhǔn)鍵盤就是編碼鍵盤。當(dāng)系統(tǒng)功能比較復(fù)雜,按鍵數(shù)量很多時(shí),采用
18、編碼鍵盤可以簡化軟件設(shè)計(jì)。但大多數(shù)智能儀器和電子產(chǎn)品的按鍵數(shù)目都不太多(20個(gè)以內(nèi)),為了降低成本和簡化電路通常采用非編碼鍵盤。非編碼鍵盤的接口電路有設(shè)計(jì)者根據(jù)需要自行決定,按鍵信息通過接口軟件來獲取。本課題需要的是16個(gè)按鍵,故選擇用非編碼鍵盤。 計(jì)算器輸入數(shù)字和其他功能按鍵要用到很多按鍵,如果采用獨(dú)立按鍵的方式,在這種情況下,編程會(huì)很簡單,但是會(huì)占用大量的I/O 口資源,因此在很多情況下都不采用這種方式,而是采用矩陣鍵盤的方案。矩陣鍵盤采用四條I/O 線作為行線,四條I/O 線作為列線組成鍵盤,在行線和列線的每個(gè)交叉點(diǎn)上設(shè)置一個(gè)按鍵。這樣鍵盤上按鍵的個(gè)數(shù)就為44個(gè)。這種行列式鍵盤結(jié)構(gòu)能有效
19、地提高單片機(jī)系統(tǒng)中I/O 口的利用率。 矩陣鍵盤的工作原理:計(jì)算器的鍵盤布局如圖五所示:一般有16個(gè)鍵組成,在單片機(jī)中正好可以用一個(gè)P口實(shí)現(xiàn)16個(gè)按鍵功能,這種形式在單片機(jī)系統(tǒng)中也最常用。 具體電路連接如圖五所示: 10 單片機(jī)課程設(shè)計(jì)報(bào)告 鍵盤接口電路 4*4 圖五 4.2 顯示電路的設(shè)計(jì)數(shù)碼管進(jìn)行顯示是一種經(jīng)當(dāng)系統(tǒng)需要顯示少量數(shù)據(jù)時(shí),采用LED為了減數(shù)碼管顯示有靜態(tài)顯示和動(dòng)態(tài)顯示兩種方法。濟(jì)實(shí)用的方法。 電路如下圖六所示: 少端口的使用,故選擇動(dòng)態(tài)顯示。11 單片機(jī)課程設(shè)計(jì)報(bào)告 三位數(shù)碼管的顯示電路 圖六 軟件設(shè)計(jì)5、 簡易計(jì)算器的程序主要在十進(jìn)制加法計(jì)算器的軟件規(guī)劃要求下,顯示 2) 包
20、括以下功能模塊:(1)主模塊,為系統(tǒng)的初始化。(顯示子程序等部分;分為判鍵程序段、運(yùn)算操作子程序、與讀鍵模塊, 系統(tǒng)設(shè)計(jì)5.1 系統(tǒng)模塊圖 (一)12 單片機(jī)課程設(shè)計(jì)報(bào)告 晶振電路 單片機(jī) LED 矩陣按鍵電路運(yùn)算法則指示燈 復(fù)位電路 顯示電路 系統(tǒng)模塊圖 圖七 顯示電路、矩陣按鍵電路此系統(tǒng)包括晶振電路、復(fù)位電路、LED 和運(yùn)運(yùn)算法則指示燈以及單片機(jī)。其中通過輸入鍵盤模塊將數(shù)字09”輸入單片機(jī)進(jìn)行運(yùn)算;運(yùn)算模塊分別根/”、“、-”、“*算符號(hào)“+”顯示模塊將運(yùn)算后的數(shù)值通過動(dòng)據(jù)輸入的運(yùn)算符進(jìn)行加減乘除運(yùn)算; 態(tài)掃描使之在數(shù)碼管上輸出。 系統(tǒng)總流程圖 (二)清空各個(gè)標(biāo)主程序主要是用來進(jìn)行初始化的
21、,調(diào)用其他子程序,上作出回應(yīng),主程志位,清空緩存區(qū),讀取鍵碼,判斷功能,在LED 序流程圖如圖六所示。 數(shù)字送顯示緩沖程序設(shè)計(jì)1)(簡易計(jì)算器所顯示的數(shù)值最大位三位。要顯示數(shù)值,先判斷數(shù)值,將不顯示數(shù)字??芍匦螺敶笮『臀粩?shù),如果是超過三位或大于255 入數(shù)字,再次計(jì)算。 運(yùn)算程序的設(shè)計(jì))(213 單片機(jī)課程設(shè)計(jì)報(bào)告 首先初始化參數(shù),送LED三位顯示“0”,其它位不顯示。然后掃描鍵盤看是否有鍵輸入,若有,讀取鍵碼。判斷鍵碼是數(shù)字鍵、清零鍵還是功能鍵,是數(shù)值鍵則送LED顯示并保存數(shù)值,是清零鍵則做清零處理,是功能鍵則又判斷是“=”還是運(yùn)算鍵,若是“=”則計(jì)算最后結(jié)果并送LED顯示,若是運(yùn)算鍵則保存
22、相對運(yùn)算程序的首地址。 5.2 顯示與按鍵設(shè)計(jì) (一) LED顯示程序設(shè)計(jì) LED顯示器由七段發(fā)光二極管組成,排列成8字形狀,因此也稱為七段LED顯示器。為了顯示數(shù)字或符號(hào),要為LED顯示器提供代碼,即字形代碼。七段發(fā)光二極管,再加上一個(gè)小數(shù)點(diǎn)位,共計(jì)8段,因此提供的字形代碼的長度正好是一個(gè)字節(jié)。簡易計(jì)算器用到的數(shù)字09的共陽極字形代碼如下表: gfedcba段碼 顯示字型 0111100c0h11 0f9h10001001 0a4h11101201 0b0h11010113 99h00141101 92h00111115 82h16111101 0f8h10001701 80h1111111
23、8 90h11110911 共陽極數(shù)碼管段碼對照表表一 (二) 讀鍵子程序設(shè)計(jì) 14 單片機(jī)課程設(shè)計(jì)報(bào)告 為了實(shí)現(xiàn)鍵盤的數(shù)據(jù)輸入功能和命令處理功能,每個(gè)鍵都有其處理子程序,為此每個(gè)鍵都對應(yīng)一個(gè)碼鍵碼。為了得到被按鍵的鍵碼,現(xiàn)使用行掃描法識(shí)別按鍵。其程序框圖如圖八: 讀鍵程序使用的是反轉(zhuǎn)法讀鍵,不管鍵盤矩陣的規(guī)模大小,均進(jìn)行兩次讀鍵。第一次所有列線均輸出低電平,從所有讀入鍵盤信息(行信息);第二次所有行線均輸出低電平,從所有行線讀入鍵盤信息(列信息)。將兩次讀鍵信息進(jìn)行組合就可以得到按鍵的特征編碼,然后通過查表得到按鍵的順序編碼。將各特征編碼按希望的順序排成一張表,然后用當(dāng)前讀得的特征碼來查表。
24、當(dāng)表中有該特征碼時(shí),它的位置就是對應(yīng)的順序編碼;當(dāng)表中沒有該特征碼時(shí),說明這是一個(gè)沒有定義的鍵碼,與沒有按鍵(0FFH)同等看待。 (三) 流程圖 15 單片機(jī)課程設(shè)計(jì)報(bào)告 計(jì)算鍵值子程序流程圖 圖八 (四)源程序 RESULT EQU 60H RESULT1 EQU 61H EQU 62H FUNCTIONKEY ORG 00H R3,#0 START: MOV MOV FUNCTIONKEY,#0 MOV 32H,#00H MOV 33H,#00H MOV 34H,#00H 調(diào)顯示子程序CALL DISP ;MLOOP: ;判斷有無按鍵CALL WAIT: TESTKEY JZ WAIT
25、讀鍵CALL GETKEY ; 16 單片機(jī)課程設(shè)計(jì)報(bào)告 INC R3 ;按鍵個(gè)數(shù) CJNE A,#0,NEXT1 ;判斷是否數(shù)字鍵 LJMP E1 ;轉(zhuǎn)數(shù)字鍵處理 NEXT1: CJNE A,#1,NEXT2 LJMP E1 CJNE A,#2,NEXT3 NEXT2: LJMP E1 CJNE A,#3,NEXT4 NEXT3: LJMP E1 CJNE A,#4,NEXT5 NEXT4: LJMP E1 CJNE A,#5,NEXT6 NEXT5: LJMP E1 CJNE A,#6,NEXT7 NEXT6: LJMP E1 CJNE A,#7,NEXT8 NEXT7: LJMP E1
26、CJNE A,#8,NEXT9 NEXT8: LJMP E1 CJNE A,#9,NEXT10 NEXT9: LJMP E1 CJNE A,#10,NEXT11 ;NEXT10: 判斷是否功能鍵 ;轉(zhuǎn)功能鍵處理 LJMP E2 A,#11,NEXT12 NEXT11: CJNE LJMP E2 A,#12, NEXT13 NEXT12: CJNE E2 LJMP A,#13,NEXT14 NEXT13: CJNE E2 LJMP A,#14,NEXT15 NEXT14: CJNE E2 LJMP ;判斷是否清除鍵 NEXT15: LJMP E3 ;判斷第幾次按鍵E1: R3,#1,N1 CJN
27、E 為第一個(gè)數(shù)字LJMP E11 ; R3,#2,N2 N1: CJNE ;為第二個(gè)數(shù)字 LJMP E12 CJNE R3,#3,N3 N2: ; LJMP E13 為第三個(gè)數(shù)字 ;第四個(gè)數(shù)字轉(zhuǎn)溢出 N3: LJMP E3 ;R4,A 輸入值暫存R4 E11: MOV ;MOV 34H,A 輸入值送顯示緩存 MOV 33H,#00H MOV 32H,#00H ; LJMP MLOOP 等待再次輸入 17 單片機(jī)課程設(shè)計(jì)報(bào)告 E12: MOV R7,A ;個(gè)位數(shù)暫存R7 MOV B,#10 MOV A,R4 MUL AB ;十位數(shù) ADD A,R7 MOV R4,A ;輸入值存R4 MOV 32
28、H,#00H ;輸入值送顯示緩存 MOV 33H,34H MOV 34H,R7 LJMP MLOOP R7,A MOV E13: MOV B,#10 MOV A,R4 MUL AB OV,E3 ; JB 輸入溢出 ADD A,R7 ;輸入溢出 JB CY,E3 MOV R4,A ;輸入值送顯示緩存 MOV 32H,33H MOV 33H,34H MOV 34H,R7 MLOOP LJMP ;按鍵次數(shù)清零MOV R3,#0 E3: ; MOV R4,#0 輸入值清零 ;計(jì)算結(jié)果清零MOV RESULT,#0 ; 功能鍵設(shè)為零 MOV FUNCTIONKEY,#0 ;顯示清空MOV 32H,#00
29、H MOV 33H,#00H 34H,#00H MOV MLOOP LJMP MOV 34H,#00H E2: MOV 33H,#00H MOV 32H,#00H ;MOV R0,FUNCTIONKEY 與上次功能鍵交換 MOV FUNCTIONKEY,A MOV A,R0 ; CJNE 判斷功能鍵A,#10,N21 尻 JIA LJMP A,#11,N22 N21: CJNE 尻 JIAN LJMP A,#12,N23 N22: CJNE ;* LJMP CHENG A,#13,N24 N23: CJNE 18 單片機(jī)課程設(shè)計(jì)報(bào)告 LJMP CHU ;/ CJNE N24: A,#0,N25
30、 LJMP FIRST ;首次按功能鍵 LJMP N25: DEN ;= LJMP N4: E3 MOV RESULT,R4 ;FIRST: 輸入值送結(jié)果 MOV R3,#0 ;按鍵次數(shù)清零 LJMP DISP1 ;結(jié)果處理 MOV A,RESULT ;上次結(jié)果送累加器 JIA: ADD A,R4 ;上次結(jié)果加輸入值 JB ;溢出 CY,N4 ;存本次結(jié)果MOV RESULT,A ; MOV R3,#0 按鍵次數(shù)清零 DISP1 LJMP A,RESULT JIAN: MOV ; 上次結(jié)果減輸入值 SUBB A,R4 CY,N4 ; JB 負(fù)數(shù)溢出 MOV RESULT,A MOV R3,#0
31、 DISP1 LJMP A,RESULT CHENG: MOV MOV B,A MOV A,R4 ;上次結(jié)果乘輸入值 MUL AB ; 溢出 OV,N4 JB MOV RESULT,A DISP1 LJMP A,R4 CHU: MOV MOV B,A MOV A,RESULT AB DIV ;上次結(jié)果除輸入值 MOV RESULT,A MOV R3,#0 DISP1 LJMP R3,#0 DEN: MOV DISP1 LJMP B,#10 MOV DISP1: ;結(jié)果送累加器 A,RESULT MOV ;結(jié)果除 AB DIV 10 ; RESULT1,A MOV 暫存商 ;取個(gè)位數(shù) MOV A
32、,B ; 個(gè)位數(shù)送顯示緩存 MOV 34H,A A,RESULT1 MOV ; JZ DISP11 結(jié)果是否為一位數(shù) 19 單片機(jī)課程設(shè)計(jì)報(bào)告 MOV B,#10 MOV A,RESULT1 DIV AB MOV RESULT1,A MOV A,B MOV 33H,A ;十位送顯示緩存 MOV A,RESULT1 JZ DISP11 ;結(jié)果是否為二位數(shù) MOV 32H,A ;百位數(shù)送顯示緩存 DISP11: LJMP MLOOP DISP: MOV R0,#34H DIR1: MOV DPTR,#SEGTAB MOV A,R0 MOVC A,A+DPTR MOV P0,A CJNE R0,#3
33、4H,DIR2 SETB P2.0 LCALL D1MS CLR P2.0 DEC R0 SJMP DIR1 DIR2: CJNE R0,#33H,DIR3 SETB P2.1 CALL D1MS CLR P2.1 DEC R0 SJMP DIR1 DIR3: SETB P2.2 CALL D1MS CLR P2.2 RET D1MS: MOV R7,#02H DMS: MOV R6,#0F0H DJNZ R6,$ DJNZ R7,DMS RET SEGTAB: DB 0C0H, 0F9H, 0A4H, 0B0H DB 99H, 92H, 82H, 0F8H DB 80H, 90H, 88H,
34、 83H DB 0C6H, 0A1H, 86H, 8EH TESTKEY:ACALL DISP 20 單片機(jī)課程設(shè)計(jì)報(bào)告 MOV P1,#0FH ;讀入鍵狀態(tài) MOV A,P1 CPL A ANL A,#0FH ;高四位不用 RET KEYTABLE: DB 0EEH,0EDH,0DDH,0BDH ;鍵碼定義 DB 0EBH,0DBH,0BBH,0E7H DB 0D7H,0B7H,0DEH,0BEH DB 07EH,07DH,07BH,077H GETKEY: MOV R6,#10 ;讀鍵子程序 ACALL DELAY MOV P1,#0FH MOV A,P1 CJNE A,0FH,K12 L
35、JMP MLOOP K12: MOV B,A MOV P1,#0EFH MOV A,P1 CJNE A,#0EFH,K13 MOV P1,#0DFH MOV A,P1 CJNE A,#0DFH,K13 MOV P1,#0BFH MOV A,P1 CJNE A,#0BFH,K13 MOV P1,#07FH MOV A,P1 CJNE A,#07FH,K13 LJMP MLOOP K13: ANL A,#0F0H ORL A,B MOV B,A MOV R1,#16 MOV R2,#0 MOV DPTR,#KEYTABLE K14: MOV A,R2 MOVC A,A+DPTR CJNE A,B,
36、K16 MOV P1,#0FH K15: MOV A,P1 CJNE A,#0FH,K15 MOV R6,#10 21 單片機(jī)課程設(shè)計(jì)報(bào)告 ACALL DELAY MOV A,R2 RET K16: INC R2 DJNZ R1,K14 AJMP MLOOP ;10ms延時(shí)子程序 DELAY: MOV R7,#10 TS1: MOV R6,#0FFH NOP TS2: NOP R6,TS2 DJNZ R7,TS1 DJNZ RET END 6系統(tǒng)調(diào)試 6.1系統(tǒng)初始狀態(tài)的調(diào)試 系統(tǒng)初始狀態(tài)時(shí),2個(gè)LED顯示器顯示“0”,運(yùn)算法則指示燈全滅。調(diào)試 結(jié)果如圖9所示。 22 單片機(jī)課程設(shè)計(jì)報(bào)告 9
37、系統(tǒng)初始狀態(tài)調(diào)試結(jié)果圖 鍵盤輸入功能的調(diào)試6.2顯示電路和運(yùn)算法則指示電路分LED9“”,、*、8通過鍵盤分別輸入“”“” 所示。11別顯示相應(yīng)的結(jié)果。調(diào)試結(jié)果如圖23 單片機(jī)課程設(shè)計(jì)報(bào)告 8”(a)輸入“ ”*(b)輸入“24 單片機(jī)課程設(shè)計(jì)報(bào)告 ”輸入“9(c) 10 鍵盤輸入功能調(diào)試結(jié)果圖 6.3系統(tǒng)運(yùn)算功能的調(diào)試LED,并通過”可得到運(yùn)算結(jié)果“=72”后,點(diǎn)擊“”“”當(dāng)輸入“8、*、9 所示。11顯示電路顯示。調(diào)試結(jié)果如圖25 單片機(jī)課程設(shè)計(jì)報(bào)告 系統(tǒng)運(yùn)算功能調(diào)試結(jié)果11 圖 、心得體會(huì)7單片機(jī)課程設(shè)計(jì)終于結(jié)束了,通過緊張的工作,完成了我的設(shè)計(jì) 十進(jìn)制加法計(jì)算器??偟膩碚f,這次課程設(shè)計(jì)是比較成功的。-任務(wù)當(dāng)然,這其中也經(jīng)歷了許多坎坷,但是在我的堅(jiān)持不懈下,在老師的細(xì)心指導(dǎo)下,在同學(xué)們的熱情幫助下,最終克服了種種困難,取得了 成功。起初我還想從老師所給的四個(gè)單片機(jī)課程設(shè)計(jì)題目中選擇一題, 所以就決定利用自己所學(xué)的后來發(fā)覺自己自己對計(jì)算器挺感興趣的,但由于以前從未做過像這種軟硬件相單片機(jī)知識(shí)自己做一個(gè)計(jì)算器。所以我請教了好幾個(gè)有參加電子競賽的同學(xué)并且在網(wǎng)上結(jié)合的設(shè)計(jì),2
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- pcr技術(shù)課件簡短
- 教案對數(shù)函數(shù)及其性質(zhì)
- 玉溪師范學(xué)院《通信原理》2022-2023學(xué)年第一學(xué)期期末試卷
- 玉溪師范學(xué)院《數(shù)學(xué)課件設(shè)計(jì)與制作》2021-2022學(xué)年第一學(xué)期期末試卷
- 五下語文第1課教學(xué)課件教學(xué)課件教學(xué)
- 兒童畫課件教學(xué)
- 2024年苯甲醇項(xiàng)目成效分析報(bào)告
- 《說說委屈的事》心理健康教學(xué)設(shè)計(jì)
- 倉庫主管協(xié)議書
- 采購談判記錄 合同條款范本
- 非外資獨(dú)資或外資控股企業(yè)書面聲明
- 2023上海外國語大學(xué)三亞附屬中學(xué)第一次招聘19人筆試備考題庫及答案解析
- 2022年春期2064國開電大??啤豆芾韺W(xué)基礎(chǔ)》紙質(zhì)形成性考核冊答案
- 水稻收獲技術(shù)
- 機(jī)械加工初步報(bào)價(jià)自動(dòng)計(jì)算(含各種工時(shí)費(fèi))
- 《1.3 數(shù)據(jù)科學(xué)與大數(shù)據(jù)》課件(人教中圖版)
- 中醫(yī)兒科學(xué) 泄瀉
- YY/T 0471.2-2004接觸性創(chuàng)面敷料試驗(yàn)方法 第2部分:透氣膜敷料水蒸氣透過率
- GB/T 18690.3-2002農(nóng)業(yè)灌溉設(shè)備過濾器自動(dòng)清洗網(wǎng)式過濾器
- PythonNumPy教學(xué)講解課件
- 正高級(jí)會(huì)計(jì)師答辯面試資料
評(píng)論
0/150
提交評(píng)論