基于單片機(jī)的數(shù)字計(jì)算器_第1頁(yè)
基于單片機(jī)的數(shù)字計(jì)算器_第2頁(yè)
基于單片機(jī)的數(shù)字計(jì)算器_第3頁(yè)
基于單片機(jī)的數(shù)字計(jì)算器_第4頁(yè)
基于單片機(jī)的數(shù)字計(jì)算器_第5頁(yè)
已閱讀5頁(yè),還剩13頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、燕山大學(xué)課 程 設(shè) 計(jì) 說(shuō) 明 書(shū)題目: 基于單片機(jī)的數(shù)字計(jì)算器 學(xué)院(系): 里仁自動(dòng)化系 年級(jí)專業(yè):10級(jí)自動(dòng)化5學(xué) 號(hào): 7 學(xué)生: 王然 指導(dǎo)教師: 劍鳴教師職稱: 副教授 燕山大學(xué)課程設(shè)計(jì)(論文)任務(wù)書(shū)院(系): 里仁學(xué)院 基層教學(xué)單位: 自動(dòng)化系 學(xué) 號(hào)7學(xué)生王然專業(yè)(班級(jí))自動(dòng)化5設(shè)計(jì)題目基于單片機(jī)的數(shù)字計(jì)算器設(shè)計(jì)技術(shù)參數(shù)1、據(jù)設(shè)計(jì)方案,應(yīng)用所學(xué)過(guò)的計(jì)算機(jī)控制、計(jì)算機(jī)原理、單片機(jī)原理等課程,選擇控制變量和被控參數(shù),檢測(cè)與轉(zhuǎn)換器件、控制器和執(zhí)行器的選擇。2、應(yīng)用所學(xué)過(guò)的單片機(jī)原理等課程,選擇計(jì)算機(jī)控制系統(tǒng)的控制器的類型,并對(duì)控制參數(shù)進(jìn)行整定。設(shè)計(jì)要求1說(shuō)明書(shū)一份。2說(shuō)明書(shū)封面與容需

2、一致(打印或本人手抄)。3完成電路圖一。4鼓勵(lì)學(xué)生進(jìn)行創(chuàng)造性的設(shè)計(jì)和發(fā)明。工作量1、 閱讀相關(guān)教科書(shū)、查資料。2、 說(shuō)明書(shū)一份,不少于6000字(如打印用小四號(hào)字)。3、 電路圖為A3圖紙一。工作計(jì)劃第一周:選定題目、查資料、閱讀相關(guān)教科書(shū)。第二周:設(shè)計(jì)單片機(jī)控制系統(tǒng)(包括硬件、軟件、外圍電路)、完成設(shè)計(jì)說(shuō)明書(shū)、畫(huà)電路圖、進(jìn)行成績(jī)考核。參考資料反饋控制理論、工廠電器、半導(dǎo)體變流技術(shù)、電力拖動(dòng)與自動(dòng)化、電子技術(shù)、計(jì)算機(jī)控制、制圖、計(jì)算機(jī)原理、單片機(jī)原理與應(yīng)用、電力電子技術(shù)、計(jì)算機(jī)操作系統(tǒng)、計(jì)算機(jī)控制系統(tǒng)等課程教課書(shū)與相關(guān)專業(yè)報(bào)紙、雜志和論文。指導(dǎo)教師簽字基層教學(xué)單位主任簽字說(shuō)明:此表一式四份,學(xué)

3、生、指導(dǎo)教師、基層教學(xué)單位、系部各一份。2013年 6 月 22 日 燕山大學(xué)課程設(shè)計(jì)評(píng)審意見(jiàn)表指導(dǎo)教師評(píng)語(yǔ):成績(jī):指導(dǎo)教師:2013年 7 月 5 日答辯小組評(píng)語(yǔ):成績(jī):評(píng)閱人:2013年7月 5 日課程設(shè)計(jì)總成績(jī):答辯小組成員簽字:2013年 7 月5 日18 / 18摘要本設(shè)計(jì)是基于51系列的單片機(jī)進(jìn)行的數(shù)字計(jì)算器系統(tǒng)設(shè)計(jì),可以完成計(jì)算器的鍵盤(pán)輸入,進(jìn)行加、減、乘、除3位無(wú)符號(hào)數(shù)字的簡(jiǎn)單四則運(yùn)算,并在LED上相應(yīng)的顯示結(jié)果。設(shè)計(jì)過(guò)程在硬件與軟件方面進(jìn)行同步設(shè)計(jì)。硬件方面從功能考慮,首先選擇部存儲(chǔ)資源豐富的AT89C51單片機(jī),輸入采用4×4矩陣鍵盤(pán)。顯示采用5位7段共陰極LED

4、靜態(tài)顯示。軟件方面從分析計(jì)算器功能、流程圖設(shè)計(jì),再到程序的編寫(xiě)進(jìn)行系統(tǒng)設(shè)計(jì)。編程語(yǔ)言方面從程序總體設(shè)計(jì)以與高效性和功能性對(duì)C語(yǔ)言和匯編語(yǔ)言進(jìn)行比較分析,針對(duì)計(jì)算器四則運(yùn)算算法特別是乘法和除法運(yùn)算的實(shí)現(xiàn),最終選用全球編譯效率最高的KEIL公司的Vision3軟件,采用匯編語(yǔ)言進(jìn)行編程,并用proteus仿真。關(guān)鍵詞:?jiǎn)纹瑱C(jī) 計(jì)算器 AT89c51鍵盤(pán)目 錄第一章方案設(shè)計(jì)61.1單片機(jī)系統(tǒng)開(kāi)發(fā)與應(yīng)用工程實(shí)習(xí)計(jì)報(bào)告61.2 系統(tǒng)分析6第二章系統(tǒng)的硬件設(shè)計(jì)72.1 主控制器72. 2 鍵盤(pán)電路122. 3 其他電路設(shè)計(jì)13第三章系統(tǒng)的軟件設(shè)計(jì)143. 1 主程序153. 2讀鍵子程序設(shè)計(jì)163. 3

5、定時(shí)查鍵的程序設(shè)計(jì)163.4 LED顯示程序設(shè)計(jì)163.5 數(shù)字送顯示緩沖程序設(shè)計(jì)17第四章系統(tǒng)的測(cè)試174.1 Keil C51單片機(jī)軟件開(kāi)發(fā)系統(tǒng)174.2 proteus的操作184.3 軟件的可靠性設(shè)計(jì)18參考文獻(xiàn)19第一章 方案設(shè)計(jì)1.1單片機(jī)系統(tǒng)開(kāi)發(fā)與應(yīng)用工程實(shí)習(xí)計(jì)報(bào)告1. 設(shè)計(jì)要求 本次課程設(shè)計(jì),我選擇的課題是單片機(jī)數(shù)字計(jì)算器設(shè)計(jì),設(shè)計(jì)任務(wù)為: 1.擴(kuò)展4*4鍵盤(pán),其中10個(gè)數(shù)字,5個(gè)功能鍵,1個(gè)清零2.使用五位數(shù)碼管接口電路3.完成十進(jìn)制的四則運(yùn)算(加、減、乘、除); 4.實(shí)現(xiàn)低于三位小于255數(shù)字的連續(xù)運(yùn)算;5.使用keil C軟件編寫(xiě)程序; 6.最后用ptoteus仿真;7.

6、具有較強(qiáng)的抗干擾能力;8.體積小、功耗低,便于嵌入其他系統(tǒng)。 2. 項(xiàng)目要求基于 AT89c51 單片機(jī)的簡(jiǎn)易計(jì)算器,采用 12MHZ 晶振。設(shè)計(jì)要求如下: (1) 計(jì)算器至少能正常顯示 8 位數(shù)。 (2) 卡機(jī)時(shí),顯示 0。第一次按下時(shí),顯示 D1;第二次按下時(shí),顯示 D1D2。 (3) 計(jì)算器能對(duì)整數(shù)進(jìn)行簡(jiǎn)單的加、減、乘、除四則運(yùn)算,在做除法時(shí)能自動(dòng)舍去 小數(shù)部分。 (4) 運(yùn)算結(jié)果超過(guò)可顯示的位數(shù)時(shí)能進(jìn)行出錯(cuò)提示。1.2 系統(tǒng)分析1.總體設(shè)計(jì)計(jì)算器以 AT89C51 單片機(jī)為核心芯片,通過(guò)掃描鍵盤(pán)來(lái)得到數(shù)據(jù),另外通過(guò) CPU 將得到的數(shù)據(jù)按要求進(jìn)行運(yùn)算并將結(jié)果送到顯示電路進(jìn)行顯示。2.

7、框圖設(shè)計(jì)基于 AT89C51 單片機(jī)的簡(jiǎn)易計(jì)算器由電源電路、單片機(jī)主控電路、按鍵電路、顯示電路和復(fù)位電路幾部分組成,框圖組成如圖 2-1 所示。圖 2.1基于 AT89C51 單片機(jī)的簡(jiǎn)易計(jì)算器系統(tǒng)框圖3. 知識(shí)點(diǎn)本項(xiàng)目需要通過(guò)學(xué)習(xí)和查閱資料,掌握和了解如下知識(shí):電源原理與設(shè)計(jì)。 單片機(jī)復(fù)位電路工作原理與設(shè)計(jì)。單片機(jī)晶振電路工作原理與設(shè)計(jì)。按鍵電路的設(shè)計(jì)。 驅(qū)動(dòng)電路的設(shè)計(jì)。 七段數(shù)碼管的特性與使用。AT89C51 單片機(jī)引腳。單片機(jī)C語(yǔ)言與程序設(shè)計(jì)。第二章 系統(tǒng)的硬件設(shè)計(jì)2.1 主控制器 1.單片機(jī)簡(jiǎn)介在該課程設(shè)計(jì)中,主要用到一個(gè)AT89c51芯片和串接的五個(gè)74LS164芯片。作為該設(shè)計(jì)的主

8、要部分。下面將對(duì)這兩個(gè)芯片原理與功能做已詳細(xì)介紹和說(shuō)明。圖 2.1 AT89c51芯片芯片AT89c51的外形結(jié)構(gòu)和引腳圖如2.1所示。AT89C51是一種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器(FPEROMFalsh Programmable and 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à)廉的方

9、案。(1)主要特性:8051 CPU與MCS-51 兼容4K字節(jié)可編程FLASH存儲(chǔ)器(壽命:1000寫(xiě)/擦循環(huán))全靜態(tài)工作:0Hz-24KHz三級(jí)程序存儲(chǔ)器鎖定128*8位部RAM2條可編程I/O線兩個(gè)16位定時(shí)器/計(jì)數(shù)器5個(gè)中斷源可編程串行通道低功耗的閑置和掉電模式片振蕩器和時(shí)鐘電路(2)管腳說(shuō)明:VCC:供電電壓(圖中未畫(huà)出)GND:接地。 P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門(mén)電流。當(dāng)P1口的管腳第一次寫(xiě)1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0 口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí)

10、,P0輸出原碼,此時(shí)P0外部必須被拉高。 P1口:P1口是一個(gè)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門(mén)電流。P1口管腳寫(xiě)入1后,被部上拉為高,可用作輸入,P1口被外部下拉為低電平時(shí),將輸出電流,這是由于部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。 P2口:P2口為一個(gè)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門(mén)電流,當(dāng)P2口被寫(xiě)“1”時(shí),其管腳被部上拉電阻拉高,且作為輸入。并因此作為輸入時(shí),P2口的管腳被外部拉低,將輸出電流。這是由于部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址

11、的高八位。在給出地址“1”時(shí),它利用部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2口輸出其特殊功能寄存器的容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。P3口:P3口管腳是8個(gè)帶部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門(mén)電流。當(dāng)P3口寫(xiě)入“1”后,它們被部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流(ILL)這是由于上拉的緣故。P3口也可作為AT89C51的一些特殊功能口,如下表所示:口管腳備選功能P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 /INT0(外部中斷0)P3.3 /INT1(外部中斷1)P3.4

12、 T0(記時(shí)器0外部輸入)P3.5 T1(記時(shí)器1外部輸入)P3.6 /WR(外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)P3.7 /RD(外部數(shù)據(jù)存儲(chǔ)器讀選通)P3口同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。 RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。因此它可用作對(duì)外部輸出的脈沖或用于定時(shí)目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲(chǔ)器時(shí),將跳過(guò)一個(gè)ALE脈沖。如想禁止ALE輸出

13、可在SFR8EH地址上置0。此時(shí), ALE只有在執(zhí)行MOVX,MOVC指令時(shí)才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ALE禁止,置位無(wú)效。 /PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。但在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。 /EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有部程序存儲(chǔ)器。注意加密方式1時(shí),/EA將部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。 XTAL1

14、:反向振蕩放大器的輸入與部時(shí)鐘工作電路的輸入。 XTAL2:來(lái)自反向振蕩器的輸出引腳。2.芯片74LS164介紹74LS164是一個(gè)串入并出的8位移位寄存器,它常用于單片機(jī)系統(tǒng)中,下面介紹一下這個(gè)元件的基本知識(shí)。74LS164外部結(jié)構(gòu)和引腳如圖22所示:圖2.2 74LS164引腳圖(1)主要特性:· 串行輸入帶鎖存 · 時(shí)鐘輸入,串行輸入帶緩沖 · 異步清除 · 最高時(shí)鐘頻率可高達(dá)36Mhz · 功耗:10mW/bit · 74系列工作溫度:0C到70C · Vcc最高電壓:7V · 輸入最高電壓:7V 

15、3; 最大輸出驅(qū)動(dòng)能力:高電平:0.4mA ; 低電平:8mA (2)引腳功能:在單片機(jī)系統(tǒng)中, 如果并行口的IO資源不夠,而串行口又沒(méi)有其他的作用, 那么我們可以用74LS164來(lái)擴(kuò)展并行IO口,節(jié)約單片機(jī)資源。74LS164是一個(gè)串行輸入并行輸出的移位寄存器。并帶有清除端。Q0Q7并行輸出端A,B串行輸入端MR 清除端,為0時(shí),輸出清零CP 時(shí)鐘輸入端3. 復(fù)位、時(shí)鐘電路設(shè)計(jì)MCS-51單片機(jī)芯片部有一個(gè)用于構(gòu)成振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別是此放大器的輸入端和輸出端。當(dāng)使用部振蕩電路時(shí),XTAL1.XTAL2引腳外接石英晶體和微調(diào)電容,如圖33所示,圖中C2.C

16、3大小一般為30PF。還加了復(fù)位/備用電源引腳的接線方法,任何單片機(jī)在工作之前都要進(jìn)行復(fù)位,以便CPU以與其他功能部件都處于一個(gè)確定的初始化狀態(tài),并從這個(gè)狀態(tài)開(kāi)始工作,也就是程序開(kāi)始執(zhí)行之前,單片機(jī)做好準(zhǔn)備工作。如何進(jìn)行復(fù)位呢?只用在單片機(jī)的RST引腳上保持兩個(gè)機(jī)器周期(24個(gè)時(shí)鐘周期)的高電平即可對(duì)單片機(jī)實(shí)現(xiàn)復(fù)位操作。當(dāng)主電源Vcc發(fā)生掉電或者是電壓降低到電平規(guī)定值時(shí),VPD上外接的備用電源自動(dòng)啟用,為單片機(jī)部RAM提供電源,以保護(hù)片RAM中的信息不丟失,使系統(tǒng)在恢復(fù)電后能正常運(yùn)行。圖 2.3復(fù)位電路和時(shí)鐘電路2.2 鍵盤(pán)電路鍵盤(pán)可分為兩類:編碼鍵盤(pán)和非編碼鍵盤(pán)。編碼鍵盤(pán)是較多按鍵(20個(gè)以

17、上)和專用驅(qū)動(dòng)芯片的組合,當(dāng)按下某個(gè)按鍵時(shí),它能夠處理按鍵抖動(dòng)、連擊等問(wèn)題,直接輸出按鍵的編碼,無(wú)需系統(tǒng)軟件干預(yù)。通用計(jì)算機(jī)使用的標(biāo)準(zhǔn)鍵盤(pán)就是編碼鍵盤(pán)。在智能儀器中,使用并行接口芯片8279或串行接口芯片HD7279均可以組成編碼鍵盤(pán),同時(shí)還可以兼顧數(shù)碼管的顯示驅(qū)動(dòng),其相關(guān)的接口電路和接口軟件均可在芯片資料中得到。當(dāng)系統(tǒng)功能比較復(fù)雜,按鍵數(shù)量很多時(shí),采用編碼鍵盤(pán)可以簡(jiǎn)化軟件設(shè)計(jì)。但大多數(shù)智能儀器和電子產(chǎn)品的按鍵數(shù)目都不太多(20個(gè)以),為了降低成本和簡(jiǎn)化電路通常采用非編碼鍵盤(pán)。非編碼鍵盤(pán)的接口電路有設(shè)計(jì)者根據(jù)需要自行決定,按鍵信息通過(guò)接口軟件來(lái)獲取。 本課題需要的是16個(gè)按鍵,故選擇用非編碼鍵

18、盤(pán),為了減少所占用的端口,由P1口采用4*4矩陣式鍵盤(pán)。具體電路連接如圖2.4所示圖2.4 4*4鍵盤(pán)輸入當(dāng)系統(tǒng)需要顯示少量數(shù)據(jù)時(shí),采用LED數(shù)碼管進(jìn)行顯示是一種經(jīng)濟(jì)實(shí)用的方法。數(shù)碼管顯示有靜態(tài)顯示和動(dòng)態(tài)顯示兩種方法。為了減少端口的使用,故選擇靜態(tài)顯示。電路如下圖32所示:圖2.5五位數(shù)碼管顯示2.3 其他電路設(shè)計(jì)多位數(shù)碼管電路顯示的驅(qū)動(dòng)電路LED數(shù)碼管顯示塊是由發(fā)光二極管顯示字段的顯示器件。在單片機(jī)應(yīng)用常使用七段LED。這種顯示塊有共陰極和共陽(yáng)極兩種,如圖是它的管腳配置,本設(shè)計(jì)采用的是共陰極接法。單片機(jī)應(yīng)用中只有一位的的數(shù)字顯示是不常見(jiàn)的,即要同時(shí)驅(qū)動(dòng)多個(gè)數(shù)碼管顯示,就必須要同時(shí)讓多個(gè)數(shù)碼管

19、加上各自不同的選片段,這個(gè)屬于靜態(tài)顯示。所謂靜態(tài)顯示,就是每一個(gè)顯示器,都要占用單獨(dú)的具有封鎖功能的I/O接口用于筆畫(huà)字段形代碼,單片機(jī)只要把顯示的字形代碼發(fā)送到接口電路,直到要顯示新的數(shù)據(jù)時(shí),再發(fā)送新的字形碼,因此,使用這種方法單片機(jī)中CPU的開(kāi)銷小,可以提高單獨(dú)鎖存的I/O接口電路很多,這里以常用的串并轉(zhuǎn)化電路74LS164為例介紹一種常用靜態(tài)顯示電路。74ls164Q1.Q874ls164Q1.Q874ls164Q1.Q874ls164Q1.Q874ls164Q1.Q8TXDRXD89C51H.AH.AH.AH.AH.A圖 2.7 五位數(shù)碼管靜態(tài)顯示接法如圖2.7所示,5片74LS164

20、首尾相串,而時(shí)鐘端接在一起,這樣,當(dāng)輸入8個(gè)脈沖時(shí),從單片機(jī)RXD端輸出的數(shù)據(jù)就進(jìn)入到第一個(gè)74LS164中了,當(dāng)?shù)诙€(gè)8個(gè)脈沖到來(lái)時(shí),這個(gè)數(shù)據(jù)就進(jìn)入了第二個(gè)片74LS164,新的數(shù)據(jù)則進(jìn)入了第一個(gè)74LS164。這樣,當(dāng)?shù)谖鍌€(gè)脈沖完成后,首次送出的數(shù)據(jù)被送入到最左面的74LS164中,其他數(shù)據(jù)依次出現(xiàn)在第一、第二、第三、第四片74LS164中。入口:把要顯示的數(shù)分別放在顯示緩沖區(qū)60H-64H共五個(gè)單元中,并且分別對(duì)應(yīng)五個(gè)數(shù)碼管LED1-LED4。出口:將預(yù)置在顯示緩沖區(qū)中的五個(gè)數(shù)組成相應(yīng)的現(xiàn)實(shí)字形碼,然后輸出到顯示器中顯示。第三章系統(tǒng)的軟件設(shè)計(jì)在數(shù)字計(jì)算器的軟件設(shè)計(jì)規(guī)劃要求下,簡(jiǎn)易計(jì)算器的

21、程序主要包括以下幾個(gè)功能模塊:(1)主模塊,為系統(tǒng)的初始化;(2)顯示與讀鍵模塊,分為顯示子程序,判鍵程序段、運(yùn)算操作子程序等部分。3.1 主程序初始化參數(shù)清零鍵LED顯示輸入數(shù)值讀取鍵值狀態(tài)清零數(shù)值送顯示緩存開(kāi)始按鍵輸入?分析鍵值數(shù)字鍵等待數(shù)值輸入結(jié)果送顯示緩存保存結(jié)果和功能鍵根據(jù)上次功能鍵和輸入的數(shù)據(jù)計(jì)算結(jié)果功能鍵否是是數(shù)字鍵是清零鍵是功能鍵圖4.1 主程序流程圖主程序主要是用來(lái)進(jìn)行初始化的,調(diào)用其他子程序,清空各個(gè)標(biāo)志位,清空緩存區(qū),讀取鍵碼,判斷功能,在LED上作出回應(yīng),主程序流程圖如圖41所示。3. 2讀鍵子程序設(shè)計(jì)為了實(shí)現(xiàn)鍵盤(pán)的數(shù)據(jù)輸入功能和命令處理功能,每個(gè)鍵都有其處理子程序,為

22、此每個(gè)鍵都對(duì)應(yīng)一個(gè)碼鍵碼。為了得到被按鍵的鍵碼,現(xiàn)使用行掃描法識(shí)別按鍵。 3. 3 定時(shí)查鍵的程序設(shè)計(jì)進(jìn)入定時(shí)器0的中斷程序后,首先重新賦初值,然后調(diào)用讀鍵程序,如果有鍵按下,則判斷按鍵是否與上次按鍵一樣,如果一樣則判斷按鍵相應(yīng)位是否為一,如果不為一,說(shuō)明這不是持續(xù)按鍵導(dǎo)致的按鍵相應(yīng),并且進(jìn)行相應(yīng)的程序。如果不是則退出中斷程序。讀鍵程序使用的是反轉(zhuǎn)法讀鍵,不管鍵盤(pán)矩陣的規(guī)模大小,均進(jìn)行兩次讀鍵。第一次所有行線均輸出低電平,從所有讀入鍵盤(pán)信息(列信息);第二次所有列線均輸出低電平,從所有行線讀入鍵盤(pán)信息(行信息)。將兩次讀鍵信息進(jìn)行組合就可以得到按鍵的特征編碼,然后通過(guò)查表得到按鍵的順序編碼。將

23、各特征編碼按希望的順序排成一表,然后用當(dāng)前讀得的特征碼來(lái)查表。當(dāng)表中有該特征碼時(shí),它的位置就是對(duì)應(yīng)的順序編碼;當(dāng)表中沒(méi)有該特征碼時(shí),說(shuō)明這是一個(gè)沒(méi)有定義的鍵碼,與沒(méi)有按鍵(0FFH)同等看待。數(shù)字鍵按下則將相應(yīng)的數(shù)字送入緩存區(qū),功能鍵按下則執(zhí)行相應(yīng)的程序。首先對(duì)數(shù)字鍵的程序段進(jìn)行相應(yīng)的設(shè)計(jì),如果運(yùn)算鍵(、,*,/)響應(yīng)標(biāo)志不為一,則將輸入的數(shù)字送入第一個(gè)操作數(shù)緩存區(qū),并且清空所有響應(yīng)位。否則送入第二個(gè)操作數(shù)緩存區(qū)。其次對(duì)功能鍵的程序段進(jìn)行相應(yīng)的設(shè)計(jì)。如果功能鍵(、,*,/)第一次被按下,則置相應(yīng)的標(biāo)志位為一,并且將運(yùn)算鍵響應(yīng)標(biāo)志位置一,清空第二個(gè)操作數(shù)的緩存區(qū),為輸入操作數(shù)做準(zhǔn)備,如果是第二次

24、按下則先調(diào)用運(yùn)算操作子程序,執(zhí)行上次按下的運(yùn)算鍵的運(yùn)算,置相應(yīng)的標(biāo)志位為一,并且將運(yùn)算鍵響應(yīng)標(biāo)志位置一,清空第二個(gè)操作數(shù)的緩存區(qū),為輸入操作數(shù)做準(zhǔn)備。如果是C鍵按下,則先判斷運(yùn)算鍵響應(yīng)位是否為一,如果不為一,則清空第一個(gè)操作數(shù),否則清空第二個(gè)操作數(shù)。如果是=鍵按下,則調(diào)用運(yùn)算操作子程序。3.4 LED顯示程序設(shè)計(jì)LED顯示器由七段發(fā)光二極管組成,排列成8字形狀,因此也稱為七段LED顯示器。為了顯示數(shù)字或符號(hào),要為L(zhǎng)ED顯示器提供代碼,即字形代碼。七段發(fā)光二極管,再加上一個(gè)小數(shù)點(diǎn)位,共計(jì)8段,因此提供的字形代碼的長(zhǎng)度正好是一個(gè)字節(jié)。簡(jiǎn)易計(jì)算器用到的數(shù)字09的共陰極字形代碼如下表:(表一) 計(jì)算器

25、數(shù)字09字形代碼顯示字型gfedcba段碼001111113fh1000011006h210110115bh310011114fh4110011066h511011016dh611111017dh7000011107h811111117fh911011116fh3.5 數(shù)字送顯示緩沖程序設(shè)計(jì)簡(jiǎn)易計(jì)算器所顯示的數(shù)值最大位三位。要顯示數(shù)值,先判斷數(shù)值大小和位數(shù),如果是超過(guò)三位或大于255,將不顯示數(shù)字。可重新輸入數(shù)字,再次計(jì)算。第四章 系統(tǒng)的測(cè)試下面用KEIL uVision與porteus仿真軟件介紹數(shù)字計(jì)算器的仿真與調(diào)試。4.1 Keil C51單片機(jī)軟件開(kāi)發(fā)系統(tǒng)1. 系統(tǒng)的整體結(jié)構(gòu)C51工具

26、包的整體結(jié)構(gòu)中,其中uVision與Ishell分別是C51 for Windows和for Dos的集成開(kāi)發(fā)環(huán)境(IDE),可以完成編輯、編譯、連接、調(diào)試、仿真等整個(gè)開(kāi)發(fā)流程。開(kāi)發(fā)人員可用IDE本身或其它編輯器編輯C或匯編源文件。然后分別由C51與A51編譯器編譯生成目標(biāo)文件(.OBJ)。目標(biāo)文件可由LIB51創(chuàng)建生成庫(kù)文件,也可以與庫(kù)文件一起經(jīng)L51連接定位生成絕對(duì)目標(biāo)文件(.ABS)。ABS文件由OH51轉(zhuǎn)換成標(biāo)準(zhǔn)的Hex文件,以供調(diào)試器dScope51或tScope51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫(xiě)入程序存貯器如EPROM中。2采用KEIL 開(kāi)發(fā)的89c51單片機(jī)應(yīng)用程序步驟:(1)在uVision 集成開(kāi)發(fā)環(huán)境中創(chuàng)建新項(xiàng)目(Project),擴(kuò)展文件名為.UV2,并為該項(xiàng)目選定合適的單片機(jī)CPU器件(本設(shè)計(jì)采用ATMEL 公司下的AT89C51)(2)用uVision 的文本編輯器編寫(xiě)源文件,可以是匯編文件(.ASM),也可

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論