單片機(jī)數(shù)字計(jì)算器軟硬件方案說(shuō)明書(shū)_第1頁(yè)
單片機(jī)數(shù)字計(jì)算器軟硬件方案說(shuō)明書(shū)_第2頁(yè)
單片機(jī)數(shù)字計(jì)算器軟硬件方案說(shuō)明書(shū)_第3頁(yè)
單片機(jī)數(shù)字計(jì)算器軟硬件方案說(shuō)明書(shū)_第4頁(yè)
單片機(jī)數(shù)字計(jì)算器軟硬件方案說(shuō)明書(shū)_第5頁(yè)
已閱讀5頁(yè),還剩23頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、個(gè)人資料整理 僅限學(xué)習(xí)使用設(shè)計(jì)題目:?jiǎn)纹瑱C(jī)數(shù)字計(jì)算器硬軟件設(shè)計(jì)摘要本設(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é)果。 b5E2RGbCAP設(shè)計(jì)過(guò)程在硬件與軟件方面進(jìn)行同步設(shè)計(jì)。硬件方面從功能 考慮,首先選擇內(nèi)部存儲(chǔ)資源豐富的 AT89C51單片機(jī),輸入采用 4X4矩陣鍵盤(pán)。顯示采用5位7段共陰極LED靜態(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)算算法特別是乘法 和

2、除法運(yùn)算的實(shí)現(xiàn),最終選用全球編譯效率最高的KEIL公司的n Vision3軟件,采用匯編語(yǔ)言進(jìn)行編程,并用proteus仿真。plEanqFDPw引言簡(jiǎn)易計(jì)算器的原理與設(shè)計(jì)是單片機(jī)課程設(shè)計(jì)課題中的一個(gè)。在 完成理論學(xué)習(xí)和必要的實(shí)驗(yàn)后,我們掌握了單片機(jī)的基本原理以 及編程和各種基本功能的應(yīng)用,但對(duì)單片機(jī)的硬件實(shí)際應(yīng)用設(shè)計(jì) 和單片機(jī)完整的用戶(hù)程序設(shè)計(jì)還不清楚,實(shí)際動(dòng)手能力不夠,因 此對(duì)該課程進(jìn)行一次課程設(shè)計(jì)是有必要的。DXDiTa9E3d單片機(jī)課程設(shè)計(jì)既要讓學(xué)生鞏固課本學(xué)到的理論,還要讓 學(xué)生學(xué)習(xí)單片機(jī)硬件電路設(shè)計(jì)和用戶(hù)程序設(shè)計(jì),使所學(xué)的知識(shí)更 深一層的理解,數(shù)字計(jì)算器原理與硬軟件的課程設(shè)計(jì)主要是

3、通過(guò) 學(xué)生獨(dú)立設(shè)計(jì)方案并自己動(dòng)手用計(jì)算機(jī)電路設(shè)計(jì)軟件,編寫(xiě)和調(diào) 試,最后仿真用戶(hù)程序,來(lái)加深對(duì)單片機(jī)的認(rèn)識(shí),充分發(fā)揮學(xué)生 的個(gè)人創(chuàng)新能力,并提高學(xué)生對(duì)單片機(jī)的興趣,同時(shí)學(xué)習(xí)查閱資 料、參考資料的方法。RTCrpUDGiT關(guān)鍵詞:?jiǎn)纹瑱C(jī)計(jì)算器 AT89c51芯片74LS164目錄摘要 01引言01第一章設(shè)計(jì)任務(wù)和要求031.1 設(shè)計(jì)要求1.2 設(shè)計(jì)方案的確定第二章單片機(jī)簡(jiǎn)要原理 032.1 AT89c51 介紹2.2 芯片74LS16份紹第三章硬件設(shè)計(jì) 083.1 鍵盤(pán)電路的設(shè)計(jì)3.2 顯示電路的設(shè)計(jì)3.3 其他電路設(shè)計(jì)第四章軟件設(shè)計(jì) 114.1 主程序的設(shè)計(jì)4.2 顯示、讀鍵模塊的設(shè)計(jì)4.3

4、其他內(nèi)容說(shuō)明4.4 源程序代碼第五章調(diào)試與仿真235.1 Keil C51單片機(jī)軟件開(kāi)發(fā)系統(tǒng)5.2 proteus 的操作第六章總結(jié) 24心得體會(huì) 25參考文獻(xiàn) 26第一章設(shè)計(jì)任務(wù)和要求1.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 .具有較強(qiáng)的抗干擾能力;8 .體積小、功耗低,便于嵌入其他系統(tǒng)。1.2設(shè)計(jì)方案的確

5、定按照1.1的設(shè)計(jì)要求,本課題需要使用數(shù)碼管顯示和擴(kuò)展4*4鍵盤(pán),由于實(shí)驗(yàn)箱的硬件電路已經(jīng)固定,故選擇串行靜態(tài)顯示和 用P1 口擴(kuò)展4*4鍵盤(pán),擴(kuò)展的4*4鍵盤(pán)定義十個(gè)數(shù)字鍵,六個(gè)功 能鍵,使用串行靜態(tài)顯示顯示運(yùn)算結(jié)果。5PCzVD7HxA主程序進(jìn)行初始化,采用定時(shí)器0進(jìn)行查鍵,每次按鍵后調(diào) 用顯示子程序。第二章單片機(jī)簡(jiǎn)要原理在該課程設(shè)計(jì)中,主要用到一個(gè) AT89c51芯片和申接的五個(gè) 74LS164芯片。作為該設(shè)計(jì)的主要部分。下面將對(duì)這兩個(gè)芯片原 理及功能做已詳細(xì)介紹和說(shuō)明。jLBHrnAILg2.1AT89c51 介紹INT, NT., T, To EA/VPRESET RD WRgH M

6、 M ft- 1 3 4 5 6 7<4*4411 2 2 rjz2 22 pppppppp ppppppp PRXDTX史ALE爐 PSEN2 AT89C5 1芯片外形結(jié)構(gòu)和引腳分布圖芯片AT89c51的外形結(jié)構(gòu)和引腳圖如21所示。AT89C5是一 種帶4K字節(jié)閃爍可編程可擦除只讀存儲(chǔ)器FPEROMFalsh Programmable and Erasable Read Only Memory ) 的彳氐電壓, 高 性能CMOS8微處理器,俗稱(chēng)單片機(jī)。該器件采用 ATMEL密度非 易失存儲(chǔ)器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的 MCS-5指令集和輸出管 腳相兼容。由于將多功能 8位CP網(wǎng)閃爍存儲(chǔ)

7、器組合在單個(gè)芯片 中,ATMELAT89C5是一種高效微控制器,為很多嵌入式控制系 統(tǒng)提供了 一種靈活性高且價(jià)廉的方案。XHAQX74J0X1 .主要特性:8051 CPU 與 MCS-51 兼容4K字節(jié)可編程FLASH存儲(chǔ)器(壽命:1000寫(xiě)/擦循環(huán)全 靜 態(tài) 工 作 :0Hz-24KHz三級(jí)程序存儲(chǔ)器保密鎖定128*8位內(nèi)部RAM32條可編程I/O線兩個(gè)16位定時(shí)器/計(jì)數(shù)器5個(gè)中斷源 可編程串行通道低功耗的閑置和掉電模式 LDAYtRyKfE 片內(nèi)振蕩器和時(shí)鐘電路2 .管腳說(shuō)明VCC:供電電壓 圖中未畫(huà)出)GND:接地。P0口: P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O 口,每腳可 吸收8TTL

8、門(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í),P0輸出原碼,止匕時(shí) P0外部必須被拉高。P1 口: P1 口是一個(gè)內(nèi)部提供上拉電 阻的8位雙向I/O 口,P1 口緩沖器能接收輸出4TTL門(mén)電流。P1 口管腳寫(xiě)入1后,被內(nèi)部上拉為高,可用作輸入, P1 口被外部下拉為低電平時(shí),將輸出電流,這是由于內(nèi) 部上拉的緣故。在FLASH編程和校驗(yàn)時(shí),P1 口作為第八 位地址接收。P2 口: P2 口為一個(gè)內(nèi)部上拉電阻的8位雙向 I/O 口,P2口緩沖器可接收

9、,輸出4個(gè)TTL門(mén)電流,當(dāng)P2口 被寫(xiě)“1時(shí),其管腳被內(nèi)部上拉電阻拉高,且作為輸入。 并因此作為輸入時(shí),P2 口的管腳被外部拉低,將輸出電 流。這是由于內(nèi)部上拉的緣故。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2 口輸出地址的高八位。在給出地址“1時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫(xiě)時(shí),P2 口輸出其特殊功能寄存器的內(nèi)容。P2口在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。 P3口: P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O 口,可 接收輸出4個(gè)TTL門(mén)電流。當(dāng)P3口寫(xiě)入“1后,它們被內(nèi)部 上拉為高電平,并用作輸入。作為輸入,由于外部下拉

10、 為低電平,P3口將輸出電流ILL )這是由于上拉的緣 故。P3口也可作為AT89C51的一些特殊功能口,如下表所示:口管腳備選 :功能P3.0RXD<串行輸入口)P3.1TXD<串行輸出 1口)P3.2/INT0<外部中斷0)P3.3/INT1 <外部中斷1)P3.4T0< 記時(shí)器 0外部輸入)P3.5T1< 記時(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/PR

11、OG :當(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輸出可在SFR8EH地址上置0。此 時(shí),ALE只有在執(zhí)行MOVX , MOVC指令時(shí)才起作用。 另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀 態(tài) ALE 禁 止, 置 位 無(wú) 效。/PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存 儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次 /PS

12、EN有效。但在訪問(wèn) 外部數(shù)據(jù)存儲(chǔ)器時(shí),這兩次有效的/PSEN信號(hào)將不出現(xiàn)。 /EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存 儲(chǔ)器0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。注 意加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持 高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源VPP) 。 XTAL1 :反向 振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。 XTAL2 :來(lái)自反向振蕩器的輸出引腳。Zzz6ZB2Ltk2.2芯片74LS164介紹74LS16隹一個(gè)用入并出的8位移位寄存器,他常用于單片機(jī) 系統(tǒng)中,下面結(jié)束一下這個(gè)元件的基本

13、知識(shí)。74LS164外部結(jié)構(gòu) 和引腳如圖2 2所小:dvzfvkwMII1 .主要特性: 申行輸入帶鎖存 時(shí)鐘輸入,串行輸入帶緩沖 異步消除 最高時(shí)鐘頻率可高達(dá)36Mhz 功耗:10mW/bit 74系列工作溫度:0C to 70C Vcc最高電壓:7V 輸入最高電壓:7V 最大輸出驅(qū)動(dòng)能力:高電平:一0.4mA。低電平:8mA2.引腳功能:在單片機(jī)系統(tǒng)中,如果并行口的IO資源不夠,而用行口又沒(méi)有其他的作用,那么我們可以用74LS16俅擴(kuò)展并行IO口,節(jié)約單片機(jī)資源。74LS1641一個(gè)串行輸入并行輸出的移位寄存 器。并帶有清除端。rqyn14ZNXI其中,Q0-Q7并行輸出端;A,B用行輸入

14、端;MR清除 端,為0時(shí),輸出清零。;CP時(shí)鐘輸入端。EmxvxOtOco第三章硬件設(shè)計(jì)簡(jiǎn)易數(shù)字計(jì)算器系統(tǒng)硬件設(shè)計(jì)主要包括:鍵盤(pán)電路,顯示電 路以及其他輔助電路。下面分別進(jìn)行設(shè)計(jì)。3.1 鍵盤(pán)電路的設(shè)計(jì)鍵盤(pán)可分為兩類(lèi):編碼鍵盤(pán)和非編碼鍵盤(pán)。編碼鍵盤(pán)是較多按鍵<20個(gè)以上)和專(zhuān)用驅(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)的接口電路和接口軟 件均可在芯片資料中得到。

15、當(dāng)系統(tǒng)功能比較復(fù)雜,按鍵數(shù) 量很多時(shí),采用編碼鍵盤(pán)可以簡(jiǎn)化軟件設(shè)計(jì)。但大多數(shù)智能儀器和電子產(chǎn)品的按鍵數(shù)目都不太多<20個(gè)以?xún)?nèi)),為了降低成本和簡(jiǎn)化電路通常采用非編碼鍵盤(pán)。非編碼鍵盤(pán)的 接口電路有設(shè)計(jì)者根據(jù)需要自行決定,按鍵信息通過(guò)接口軟件來(lái)獲取。 SixE2yXPq5本課題需要的是16個(gè)按鍵,故選擇用非編碼鍵盤(pán),為了減少所占用的端口,由P1 口采用4*4矩陣式鍵盤(pán)。具體電路連接如圖3 1所小6e wM yi rQFL10KoSW-PE4.SVJ.pESW-PESW-PB4-SW-PESW-PBSW-PB+-o SWPB-oSW-PB-oSW-PBSW-PB圖31 4*4鍵盤(pán)輸入3.2 顯

16、示電路的設(shè)計(jì)當(dāng)系統(tǒng)需要顯示少量數(shù)據(jù)時(shí),采用LE限碼管進(jìn)行顯示是種經(jīng)濟(jì)實(shí)用的方法。數(shù)碼管顯示有靜態(tài)顯示和動(dòng)態(tài)顯示兩種方法。為了減少端口的使用,故選擇靜態(tài)顯示。電路如下圖32所圖3 2五位數(shù)碼管顯示12 / 25LE嗷碼管顯示塊是由發(fā)光二極管 顯示字段的顯示器件。在單片機(jī)應(yīng)用 中通常使用七段LED這種顯示塊有共 陰極和共陽(yáng)極兩種,如圖是它的管腳 配置,本設(shè)計(jì)采用的是共陰極接法。 y6V3ALoS893.3 其他電路設(shè)計(jì)1.復(fù)位、時(shí)鐘電路設(shè)計(jì)MCS-5律片機(jī)芯片內(nèi)部有一個(gè)用于構(gòu)成振蕩器的高增益反相 放大器,引腳XTAL和XTAL分別是此放大器的輸入端和輸出端。 M2ub6vSTnP當(dāng)使用內(nèi)部振蕩電路

17、時(shí),XTAL1.XTALZI腳外接石英晶體和 微調(diào)電容,如圖3-3所示,圖中C2.C認(rèn)小一般為30PF。還加了 復(fù)位/備用電源引腳的接線方法,任何單片機(jī)在工作之前都要進(jìn) 行復(fù)位,以便CP以及其他功能部件都處于一個(gè)確定的初始化狀 態(tài),并從這個(gè)狀態(tài)開(kāi)始工作,也就是程序開(kāi)始執(zhí)行之前,單片機(jī) 做好準(zhǔn)備工作。如何進(jìn)行復(fù)位呢?只用在單片機(jī)的RSEI腳上保持兩個(gè)機(jī)器周期24個(gè)時(shí)鐘周期)的高電平即可對(duì)單片機(jī)實(shí)現(xiàn)復(fù) 位操作。0YujCfmUCw當(dāng)主電源Vcc發(fā)生掉電或者是電壓降低到電平規(guī)定值時(shí),VPD上外接的備用電源自動(dòng)啟用,為單片機(jī)內(nèi)部RAMI供電源,以保護(hù)片內(nèi)RA呻的信息不丟失,使系統(tǒng)在恢復(fù)上電后能正常運(yùn)行

18、。 eUts8ZQVRdRSTVSSXTAL1XTAL2圖3.3復(fù)位電路和時(shí)鐘電路2.多位數(shù)碼管電路顯示的驅(qū)動(dòng)電路單片機(jī)應(yīng)用中只有一位的的數(shù)字顯示是不常見(jiàn)的,即要同時(shí)驅(qū)動(dòng)多個(gè)數(shù)碼管顯示,就必須要同時(shí)讓多個(gè)數(shù)碼管加上各自不同 的選片段,這個(gè)屬于靜態(tài)顯示。sQsAEJkW5T所謂靜態(tài)顯示,就是每一個(gè)顯示器,都要占用單獨(dú)的具有封鎖功能的I/O接口用于筆畫(huà)字段形代碼,單片機(jī)只要把顯示的字 形代碼發(fā)送到接口電路,直到要顯示新的數(shù)據(jù)時(shí),再發(fā)送新的字 形碼,因此,使用這種方法單片機(jī)中CPU勺開(kāi)銷(xiāo)小,可以提高單 獨(dú)鎖存的I/O接口電路很多,這里以常用的串并轉(zhuǎn)化電路 74LS164 為例介紹一種常用靜態(tài)顯示電路

19、。GMsIasNXkATIrRGchYzg圖3.4五位數(shù)碼管靜態(tài)顯示接法如圖3.4所示,5片74LS164ml相串,而時(shí)鐘端接在一起, 這樣,當(dāng)輸入8個(gè)脈沖時(shí),從單片機(jī)RX端輸出的數(shù)據(jù)就進(jìn)入到第 一個(gè)74LS16好了,當(dāng)?shù)诙€(gè)8個(gè)脈沖到來(lái)時(shí),這個(gè)數(shù)據(jù)就進(jìn)入了 第二個(gè)片74LS164,新的數(shù)據(jù)則進(jìn)入了第一個(gè)74LS164這樣,當(dāng) 第五個(gè)脈沖完成后,首次送出的數(shù)據(jù)被送入到最左面的74LS164中,其他數(shù)據(jù)依次出現(xiàn)在第一、第二、第三、第四片 74LS164 中。入口:把要顯示的數(shù)分別放在顯示緩沖區(qū) 60H-64哄五個(gè)單 元中,并且分別對(duì)應(yīng)五個(gè)數(shù)碼管LED1-LED4出口:蔣預(yù)置在顯 示緩沖區(qū)中的五個(gè)

20、數(shù)組成相應(yīng)的現(xiàn)實(shí)字形碼,然后輸出到顯示器 中顯示。7EqZcWLZNX第四章軟件設(shè)計(jì)在數(shù)字計(jì)算器的軟件規(guī)劃要求下,簡(jiǎn)易計(jì)算器的程序 主要包括以下功能模塊:<1)主模塊,為系統(tǒng)的初始化。<2)顯示與讀鍵模塊,分為顯示子程序,判鍵程序段、運(yùn)算操作子程序等部分;lzq7IGf02E4.1 主程序的設(shè)計(jì)zvpgeqJIhk圖41主程序流程圖主程序主要是用來(lái)進(jìn)行初始化的,調(diào)用其他子程序,清空各個(gè)標(biāo)志位,清空緩存區(qū),讀取鍵碼,判斷功能,在LEDt作出回應(yīng),主程序流程圖如圖41所示。NrpoJac3v1<1)數(shù)字送顯示緩沖程序設(shè)計(jì)簡(jiǎn)易計(jì)算器所顯示的數(shù)值最大位三位。要顯示數(shù)值,先判斷 數(shù)值大

21、小和位數(shù),如果是超過(guò)三位或大于 255,將不顯示數(shù)字。個(gè)人資料整理 僅限學(xué)習(xí)使用可重新輸入數(shù)字,再次計(jì)算。1nowfTG4KI(2)運(yùn)算程序的設(shè)計(jì)首先初始化參數(shù),送LE。氐位顯示0',高位不顯示。然后掃 描鍵盤(pán)看是否有鍵輸入,若有,讀取鍵他。判斷鍵他是數(shù)字鍵、 清零鍵還是功能鍵,是數(shù)值鍵則送LEDS示并保存數(shù)值,是清零 鍵則做清零處理,是功能鍵則又判斷是 手還是運(yùn)算鍵,若是 = 則計(jì)算最后結(jié)果并送LEDS示,若是運(yùn)算鍵則保存相對(duì)運(yùn)算程序 的首地址。fjnFLDa5Zo4.2 顯示、讀鍵模塊的設(shè)計(jì)1. LED顯示程序設(shè)計(jì)LELS示器由七段發(fā)光二極管組成,排列成 8字形狀,因此 也稱(chēng)為七段

22、LELS示器。為了顯示數(shù)字或符號(hào),要為L(zhǎng)ELS示器提 供代碼,即字形代碼。七段發(fā)光二極管,再加上一個(gè)小數(shù)點(diǎn)位, 共計(jì)8段,因此提供的字形代碼的長(zhǎng)度正好是一個(gè)字節(jié)。簡(jiǎn)易計(jì) 算器用到的數(shù)字09的共陰極字形代碼如下表:tfnNhnE6e5顯示字型gfedcba段碼001111113fh1000011006h210110115bh310011114fh4110011066h511011016dh611111017dh7000011107h811111117fh911011116fh2.讀鍵子程序設(shè)計(jì)為了實(shí)現(xiàn)鍵盤(pán)的數(shù)據(jù)輸入功能和命令處理功能,每個(gè)鍵都有 其處理子程序,為此每個(gè)鍵都對(duì)應(yīng)一個(gè)碼 鍵碼。為了得

23、到被按鍵的鍵例, HbmVN777sLV7l4jRB8Hs現(xiàn)使用行掃描法識(shí)別按鍵。其程序框圖如圖 4-2:初始化地址參數(shù)圖42計(jì)算鍵值子程序流程圖4.3 其他內(nèi)容說(shuō)明1 .定時(shí)查鍵的程序設(shè)計(jì)進(jìn)入定時(shí)器0的中斷程序后,首先重新付初值,然后調(diào)用讀 鍵程序,如果有鍵按下,則判斷按鍵是否與上次按鍵相同,如果 相同則判斷按鍵相應(yīng)位是否為一,如果不為一,說(shuō)明這不是持續(xù) 按鍵導(dǎo)致的按鍵相應(yīng),并且進(jìn)行相應(yīng)的程序。如果不是則退出中 斷程序。831CPA59W9讀鍵程序使用的是反轉(zhuǎn)法讀鍵,不管鍵盤(pán)矩陣的規(guī)模大小, 均進(jìn)行兩次讀鍵。第一次所有行線均輸出低電平,從所有讀入鍵 盤(pán)信息 列信息);第二次所有列線均輸出低電

24、平,從所有行線 讀入鍵盤(pán)信息 行信息)。將兩次讀鍵信息進(jìn)行組合就可以得到 按鍵的特征編碼,然后通過(guò)查表得到按鍵的順序編碼。將各特征 編碼按希望的順序排成一張表,然后用當(dāng)前讀得的特征碼來(lái)查 表。當(dāng)表中有該特征碼時(shí),它的位置就是對(duì)應(yīng)的順序編碼;當(dāng)表 中沒(méi)有該特征碼時(shí),說(shuō)明這是一個(gè)沒(méi)有定義的鍵碼,與沒(méi)有按鍵 0FFH)同等看待。mZkklkzaaP數(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ì)功能鍵的程序段

25、進(jìn)行相應(yīng)的設(shè)計(jì)。如果功能鍵 +、-, *, /)第一次被按下,則置相應(yīng)的標(biāo)志位為一,并且將運(yùn)算鍵響 應(yīng)標(biāo)志位置一,清空第二個(gè)操作數(shù)的緩存區(qū),為輸入操作數(shù)做準(zhǔn) 備,如果是第二次按下則先調(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)備。AVktR43bpw如果是'C'鍵按下,則先判斷運(yùn)算鍵響應(yīng)位是否為一,如果 不為一,則清空第一個(gè)操作數(shù),否則清空第二個(gè)操作數(shù)。ORjBnOwcEd如果是'=6按下,則調(diào)用運(yùn)算操作子程序。2 .軟件的可靠性設(shè)計(jì)提高本儀器的可靠性措施主要有:<

26、1)為防止程序跑飛,軟件中設(shè)置了軟件陷阱< 2)為防止鍵盤(pán)抖動(dòng)造成按鍵錯(cuò)誤,采取了軟件防< 3)為了保證結(jié)果的正確性,結(jié)果溢出時(shí)顯示錯(cuò)誤代碼 04.4 源程序代碼DBUFEQU30HTEMPEQU40HYJ EQU50Ho結(jié)果存放YJ1EQU51H。中間結(jié)果存放GONG EQU52H。功能鍵存放DINBIT0B0H。P3.0CLKBIT0B1H。P3.1ORG00HSTART:MOVR3,#00初始化顯小為空MOVGONG,#0MOV30H,#10HMOV31H,#10HMOV32H,#10HMOV33H,#10HMOV34H,#10HMLOOP:CALLDISP。PA剛顯示子程序

27、WAIT:CALLTESTKEY。判斷后無(wú)按鍵JZWAITCALLGETKEY。讀鍵按鍵個(gè)數(shù)判斷是否數(shù)字轉(zhuǎn)數(shù)字鍵處理INC R3CJNE A,#0,NEXT1鍵LJMP E1NEXT1: CJNE A,#1,NEXT2LJMP E1NEXT2: CJNE A,#2,NEXT3 LJMP E1NEXT3: CJNE A,#3,NEXT4 LJMP E1NEXT4: CJNE A,#4,NEXT5 LJMP E1NEXT5: CJNE A,#5,NEXT6 LJMP E1NEXT6: CJNE A,#6,NEXT7 LJMP E1NEXT7: CJNE A,#7,NEXT8 LJMP E1NEXT

28、8: CJNE A,#8,NEXT9 LJMP E1NEXT9: CJNE A,#9,NEXT1028 / 25LJMPE1NEXT10:CJNEA,#10,NEXT11LJMPE2NEXT11:CJNEA,#11,NEXT12LJMPE2NEXT12:CJNEA,#12, NEXT13LJMPE2NEXT13:CJNEA,#13,NEXT14LJMPE2NEXT14:CJNEA,#14,NEXT15LJMPE2NEXT15:LJMPE3E1:CJNER3,#1,N1LJMPE11N1:CJNER3,#2,N2LJMPE12判斷是否功能鍵。轉(zhuǎn)功能鍵處理判斷是否清除鍵。判斷第幾次按鍵。為第一個(gè)數(shù)

29、字0為第二個(gè)數(shù)字N2: CJNE R3,#3,N3LJMP E13N3: LJMP E3E11: MOV R4,A MOV緩存MOV MOV LJMPE12: MOV R7,AMOV MOV MUL 十位數(shù)ADD MOV MOV 緩存MOV MOV LJMPE13: MOV R7,AMOV MOV MUL JB ADD JBMOVMOV 送顯示緩存MOV MOV LJMPE3:MOVMOVMOV34H,A33H,#10H 32H,#10H MLOOPB,#10 A,R4 ABA,R7 R4,A 32H,#10H33H,34H 34H,R7 MLOOPB,#10 A,R4 AB OV,E3 A,

30、R7 CY,E3 R4,A 32H,33H33H,34H 34H,R7 MLOOP R3,#0 R4,#0YJ,#0O為第三個(gè)數(shù)字 第四個(gè)數(shù)字轉(zhuǎn)溢出 ,輸入值暫存R4。輸入值送顯示O等待再次輸入 個(gè)位數(shù)暫存R7輸入值存R4 輸入值送顯示O輸入溢出O輸入溢出O輸入值按鍵次數(shù)清零輸入值清零計(jì)算結(jié)果清零MOVGONG,#0MOV30H,#10HMOV31H,#10HMOV32H,#10HMOV33H,#10HMOV34H,#10HLJMPMLOOPE2:MOV34H,#10HMOV33H,#10HMOV32H,#10HMOVR0,GONG交換MOVGONG,AMOVA,R0CJNEA,#10,N21

31、LJMPJIAN21:CJNE ,A,#11,N22LJMPJIANN22:CJNEA,#12,N23LJMPCHENGN23:CJNEA,#13,N24LJMPCHU /"功能鍵設(shè)為零 顯示清空與上次功能鍵判斷功能鍵6N24:CJNE A,#0,N25LJMPFIRST0首次按功能鍵N25:LJMP DEN。=N4:LJMPE3FIRST:MOV YJ,R4。輸入值送結(jié)果MOVR3,#0。按鍵次數(shù)清零LJMPDISP1。結(jié)果處理JIA:MOV A,YJ0上次結(jié)果送累加器ADDA,R40上次結(jié)果加輸入值JBCY,N40溢出MOVYJ,A。存本次結(jié)果MOVR3,#0。按鍵次數(shù)清零LJM

32、PDISP1JIAN:MOV A,YJSUBBA,R4O上次結(jié)果減輸入值JBCY,N4。負(fù)數(shù)溢出MOVYJ,AMOVR3,#0LJMPDISP1CHENG:MOV A,YJMOVB,AMOVA,R4MULAB。上次結(jié)果乘輸入值JBOV,N40溢出MOVYJ,ALJMPDISP1CHU:MOV A,R4MOVB,AMOVA,YJDIVAB。上次結(jié)果除輸入值MOVYJ,AMOVR3,#0LJMPDISP1DEN:MOV R3,#0LJMPDISP1DISP1:MOVB,#10MOVA,YJ0結(jié)果送累加器DIVAB0結(jié)果除10MOVYJ1,A0暫存wMOVA,B0取個(gè)位數(shù)MOV34H,A。個(gè)位數(shù)送顯

33、示緩存MOVA,YJ1JZDISP110結(jié)果是否為一位數(shù)MOVB,#10MOVA,YJ1DIVABMOVYJ1,AMOVA,BMOV33H,A0十位送顯示緩存MOVA,YJ1JZDISP110結(jié)果是否為二位數(shù)MOV32H,A0百位數(shù)送顯示緩存DISP11: LJMPMLOOPDISP: MOVR0,#DBUFo 顯小子程序MOVR1,#TEMP+4MOVR2,#5DP10: MOVDPTR,#SEGTABMOVA,R0MOVC A,A+DPTRMOVR1,AINCR0DECR1DJNZR2,DP10MOVR0,#TEMPMOVR1,#5DP12: MOVR2,#8MOVA,R0DP13: RL

34、CAMOVDIN,CCLRCLKSETBCLKDJNZR2,DP13INCR0DJNZ R1,DP12RETSEGTAB:DB 3FH,06H,5BH,4FH,66H,6DH。段碼定義DB7DH,07H,7FH,6FH,77H,7CHDB39H,5EH,79H,71H,00H,40HTESTKEY:MOVP1,#0FH。讀入鍵狀態(tài)MOVA,P1CPLAANLA,#0FH。高四位不用RETKEYTABLE:DB0DEH,0EDH,0DDH,0BDH 。鍵碼定DB0EBH,0DBH,0BBH,0E7HDB0D7H,0B7H,07EH,07DHDB07BH,077H,0BEH,0EEHGETKEY:

35、。讀鍵子程序MOVR6,#10ACALL DELAYMOVP1,#0FHMOVA,P1CJNE A,0FH,K12 LJMP MLOOPK12:MOVB,AMOVP1,#0EFHMOVA,P1CJNE A,#0EFH,K13MOVP1,#0DFHMOVA,P1CJNE A,#0DFH,K13MOVP1,#0BFHMOVA,P1CJNE A,#0BFH,K13MOVP1,#07FHMOVA,P1CJNE A,#07FH,K13 LJMP MLOOP K13: ANL A,#0F0H ORLA,BMOVB,AMOVR1,#16MOVR2,#0MOVDPTR,#KEYTABLEK14: MOVA,R

36、2MOVC A,A+DPTR CJNE A,B,K16 MOVP1,#0FHK15:MOVA,P1CJNE A,#0FH,K15 MOVR6,#10ACALL DELAY MOVA,R2RET K16: INCR2DJNZ R1,K14 AJMP MLOOP DELAY: MOVR7,#80延時(shí)子程序 DLOOP: DJNZ R7,DLOOP DJNZ R6,DLOOP RET END第五章調(diào)試與仿真下面用KEIL uVision與porteu妨真軟件介紹數(shù)字計(jì)算器的仿 真與調(diào)試。5. 1 Keil C51單片機(jī)軟件開(kāi)發(fā)系統(tǒng)1 .系統(tǒng)的整體結(jié)構(gòu)C51T具包的整體2構(gòu)中,其中uVision與Is

37、hell分別是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>。ABSfc件由OH5轉(zhuǎn)換成標(biāo)準(zhǔn)的He雙件,以供調(diào)試器 dScope5做tScope51使用進(jìn)行源代碼級(jí)調(diào)試,也可由仿真器使用 直接對(duì)目標(biāo)板進(jìn)行調(diào)試,也可以直接寫(xiě)入程序存貯器如EPROM中。2MiJTy0dTT2 .采用K

38、EIL開(kāi)發(fā)的89c51單片機(jī)應(yīng)用程序步驟:<1)在uVision集成開(kāi)發(fā)環(huán)境中創(chuàng)建新工程<Project ),擴(kuò) 展文件名為.UV2,并為該工程選定合適的單片機(jī)CP郵件<本設(shè)計(jì) 采用 ATMEL公司下的 AT89C5) giiSpiue7A(2>用uVision的文本編輯器編寫(xiě)源文件,可以是匯編文件 V.ASM,也可以使C®言文件 <擴(kuò)展名.C),并將該文件添加到工 程中去。一個(gè)工程文件可以包含多個(gè)文件,除了源程序文件外, 還可以是庫(kù)文件、頭文件應(yīng)文本說(shuō)明文件。uEh0U1Yfmh< 3)通過(guò)uVision 2 的相關(guān)選擇項(xiàng),配置編譯環(huán)境、連接定

39、位器以及DebugH試器的或能。< 4)對(duì)工程中的源文件進(jìn)行編譯連接,生成絕對(duì)目標(biāo)代碼和 可選的HEXC件,如果出現(xiàn)編譯連接錯(cuò)誤則返回到第 2步,修改源 文件中的錯(cuò)誤后重構(gòu)整個(gè)工程。IAg9qLsgBX< 5)對(duì)沒(méi)有語(yǔ)法錯(cuò)誤的程序進(jìn)行仿真調(diào)試,調(diào)試成功后將 HEX 文件寫(xiě)入到單片機(jī)應(yīng)用系統(tǒng)的RO流。5.2 proteus 的操作1 .硬件電路圖的接法操作(1>.放置選擇 <刪除)元器件(2>.移動(dòng)元器件(3>.縮放視圖(4>.連接導(dǎo)線(5>.仿真,調(diào)試2 .單片機(jī)系統(tǒng)PROTEUS計(jì)與仿真過(guò)程Proteus雖大的單片機(jī)系統(tǒng)設(shè)計(jì)與仿真功能,使它可成為單片機(jī)系統(tǒng)應(yīng)用開(kāi)發(fā)和改進(jìn)手段之一。全部過(guò)程都是在計(jì)算機(jī)上通過(guò)Proteu既完成的。具過(guò)程一般也可分為三步:WwghWvVhPE(1在ISIS平臺(tái)上進(jìn)行單片機(jī)系統(tǒng)電路設(shè)計(jì)、選擇元器件、接插件、連接電路和電氣檢測(cè)等。簡(jiǎn)稱(chēng) Proteu仙路設(shè)計(jì)。asfpsfpi4k(2在Keil平臺(tái)上進(jìn)行單片機(jī)系統(tǒng)程序設(shè)計(jì)、編輯、匯編編 譯、代碼級(jí)調(diào)試,最后生成目標(biāo)代碼文件*.

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論