




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
單片機(jī)課程設(shè)計(jì)報(bào)告簡易計(jì)算器姓 名:班 級:學(xué) 號:指導(dǎo)老師:日 期:華南農(nóng)業(yè)大學(xué)工程學(xué)院摘要:本設(shè)計(jì)是基于 51系列的單片機(jī)進(jìn)行的十進(jìn)制計(jì)算器系統(tǒng)設(shè)計(jì),可以完成計(jì)算器的鍵盤輸入,進(jìn)行加、減、乘、除3位無符號數(shù)字的簡單四則運(yùn)算,并在LED上相應(yīng)的顯示結(jié)果。設(shè)計(jì)過程在硬件與軟件方面進(jìn)行同步設(shè)計(jì)。硬件方面從功能考慮,首先選擇內(nèi)部存儲(chǔ)資源豐富的AT89C51單片機(jī),輸入采用4×4矩陣鍵盤。顯示采用3位7段共陰極LED動(dòng)態(tài)顯示。軟件方面從分析計(jì)算器功能、流程圖設(shè)計(jì),再到程序的編寫進(jìn)行系統(tǒng)設(shè)計(jì)。編程語言方面從程序總體設(shè)計(jì)以及高效性和功能性對C語言和匯編語言進(jìn)行比較分析,針對計(jì)算器四則運(yùn)算算法特別是乘法和除法運(yùn)算的實(shí)現(xiàn)。關(guān)鍵字:單片機(jī)、簡易計(jì)算器、匯編語言、功能模塊1/16目 錄一、系統(tǒng)設(shè)計(jì)要求 41.1基本要求41.2發(fā)揮部分4二、系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn) 43.1系統(tǒng)硬件的基本組成部分 43.2主要單元電路的設(shè)計(jì) 5三、系統(tǒng)軟件設(shè)計(jì)6四、系統(tǒng)測試14五、總結(jié)14致謝15參考文獻(xiàn)152/16一、系統(tǒng)設(shè)計(jì)要求1.1基本要求在課程設(shè)計(jì)時(shí),三人一組,老師在動(dòng)員大會(huì)上主要指明設(shè)計(jì)思路,啟發(fā)學(xué)生獨(dú)立設(shè)計(jì)的思路。功能要求主要如下:<1)鍵盤輸入;<2)數(shù)值顯示;<3)加、減運(yùn)算<此次只要求加減);(4>對錯(cuò)誤的控制及提示。在十進(jìn)制加減法計(jì)算中:輸入范圍為<1~99),該程序輸入兩個(gè)定點(diǎn)數(shù),每個(gè)2位,輸出3位;A為加,B為減,C為等于,輸出為3位計(jì)算結(jié)果。數(shù)據(jù)輸入采用規(guī)范化輸入,即必須輸入2個(gè)數(shù)才算完成一個(gè)運(yùn)算數(shù)的輸入,兩個(gè)運(yùn)算數(shù)之間輸入運(yùn)算符A或者B,輸入完成按C顯示計(jì)算結(jié)果。1.2發(fā)揮部分可以選擇擴(kuò)張更多功能,如乘法,除法,三角函數(shù)等,使這簡易計(jì)算器功能更全面。二、系統(tǒng)的硬件設(shè)計(jì)與實(shí)現(xiàn)2.1系統(tǒng)硬件的基本組成部分8086CPU,單片機(jī)實(shí)驗(yàn)箱鍵盤模塊 <0-9,a-f),LED數(shù)碼管等。單片機(jī)最小系統(tǒng)就是支持主芯片正常工作的最小電路部分,包括主控芯片、復(fù)位電路和晶振電路。主控芯片選取 74LS164芯片,因其具有良好的性能及穩(wěn)定性,價(jià)格便宜應(yīng)用方便。晶振選取11.0592MHz,晶振旁電容選取 22pF。采用按鍵復(fù)位電路,電阻分別選取 560Ω和10K,電容選取10μF。1、鍵盤接口電路計(jì)算器所需按鍵有:數(shù)字鍵:“0”“1”“2”“3”“4”“5”“6”“7”“8”“9”功能鍵:“A<+)”“B(—>”“C(*>”“D(/>”“E(=>”鍵盤共計(jì)15個(gè)按鍵,其中 15個(gè)按鍵采用到,采用 4*4矩陣鍵盤,鍵盤的行和列之間都有公共端相連,四行和四列的 8個(gè)公共端分別接 P1.0~P1.7,這樣掃描P1口就可以完成對矩陣鍵盤的掃描,通過對 16個(gè)按鍵進(jìn)行編碼,從而得到鍵盤的口地址,對比 P1口的掃描結(jié)果和各按鍵的地址,我們就可以得到是哪個(gè)鍵按下,從而完成鍵盤掃描的功能。3/162、數(shù)碼管顯示電路采用6位數(shù)碼管對計(jì)算數(shù)據(jù)和結(jié)果的顯示,這里選取共陽數(shù)碼管,利用 NPN三極管對數(shù)碼管進(jìn)行驅(qū)動(dòng),為了節(jié)省 I/O資源,采取動(dòng)態(tài)顯示的方法來顯示計(jì)算數(shù)據(jù)及結(jié)果,動(dòng)態(tài)掃描。為了實(shí)現(xiàn)數(shù)碼管的動(dòng)態(tài)顯示, P2口輸出顯示值,通過 P2口的二進(jìn)制代碼送到數(shù)碼管進(jìn)行顯示。P3.0~P3.5用來作為位選端,控制哪幾位數(shù)碼管進(jìn)行顯示。比如當(dāng)P3.2為高電平時(shí),其他位全給 0,具體的在軟件中會(huì)有說明。此時(shí)就將掃描的數(shù)據(jù)送給指定數(shù)碼管顯示。2.2主要單元電路的設(shè)計(jì)設(shè)計(jì)的思路是:首先利用程序不斷掃描鍵盤是不是有輸入,如果沒有就一直掃描,如果有就停止掃描,完成輸入,利用匯編的程序核對輸入鍵的數(shù)值,通過調(diào)用子程序完成數(shù)據(jù)的儲(chǔ)存或者是加減的運(yùn)算。運(yùn)算完成后將運(yùn)算的結(jié)果儲(chǔ)存并顯示到LED顯示器上。4/16三、系統(tǒng)軟件設(shè)計(jì)設(shè)計(jì)總體流程圖,分模塊編寫程序開始輸入六個(gè)數(shù)字或符號R1*10+R2=R2R4*10+R5=R4R3是加號?R2+R4NR3是減號?R2-R4NR3是乘號?R2*R4NR2/R4顯示結(jié)果結(jié)束5/16鍵盤掃描流程圖:開始初始化地址參數(shù)輸出列掃描信號列掃描信號移位按照行列計(jì)算鍵值讀入行信號是查表得鍵碼該列有鍵輸入?否否等待按鍵釋放四列掃描完?是返回 返回6/16程序源代碼:Z8279 EQU 212HD8279 EQU 210HLEDMOD EQU 00000000B 。左邊輸入,八位顯示,外部譯碼八位顯示DATASEGMENTDATA1DB0,0,0,0,0 。第一個(gè)數(shù)據(jù)<作為被減數(shù))DATA2DB0,0,0,0,0 。第二個(gè)數(shù)據(jù)<作為減數(shù))DATAENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART:PUSH CSPOP DSPUSH CSPOP ESMOV DX,Z8279MOV AL,LEDMODOUT DX,AL---------------------------------------------------------MOV DX,Z8279 。清FIFORAM寄存器MOV AL,0D1HOUT DX,ALKAISHI: MOVSI,OFFSETDATA1MOVBX,10Q1: MOVBYTEPTR[SI+BX-1],'0' 。數(shù)據(jù)區(qū)清零DECBXJNZQ1CALL SHURU 。讀 取 第 一 個(gè) 字符。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。MOV[SI],AL 。存入第一個(gè)字符MOVBX,1CALLDISPLCALL SHURU 。 輸 入 第 二 個(gè) 字符。。。。。。。。。。。。。。。。。。。。。。。CMPAL,'0'JBT1MOVBL,BYTEPTR[SI]MOVBYTEPTR[SI],ALMOVBYTEPTR[SI+1],BLMOVBX,2CALLDISPLCALLSHURU7/16T1: PUSHAX 。存入運(yùn)算符MOVDX,Z8279MOVAL,0D1HOUTDX,ALWAIIT6:IN AL,DXMOV BL,ALAND AL,80HCMP AL,80HJE WAIIT6CALLSHURU 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。MOVSI,OFFSETDATA2MOVBYTEPTR[SI],AL 。輸入第三個(gè)字符MOVBX,1CALLDISPLCALLSHURU 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。CMPAL,'='JZT99 。計(jì)算跳轉(zhuǎn)MOVBL,BYTEPTR[SI] 。輸入第四個(gè)字符MOVBYTEPTR[SI],ALMOVBYTEPTR[SI+1],BLMOVBX,2CALLDISPLCALLSHURU 。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。T99: JMPJISUAN--------------------------------------------------------------SHURUPROC 。輸入函數(shù)MOV DX,Z8279MOV AL,0C2HOUT DX,AL 。置空FIFO寄存器WAIIT:NOPIN AL,DXMOV BL,ALAND AL,80H8/16CMP AL,80HJE WAIIT 。FIFO正在清除期間則跳轉(zhuǎn)等待MOV AL,BLAND AL,0FHCMP AL,00HJE WAIIT 。無鍵按下則等待MOV AL,40H 。寫讀FIFORAM命令字OUT DX,ALMOV DX,D8279 。讀入FIFORAM 內(nèi)容IN AL,DXNOPCMPAL,11JNZT101MOV DX,Z8279MOV AL,0D1HOUT DX,AL 。置空FIFO寄存器WAIIT1:IN AL,DXMOV BL,ALAND AL,80HCMP AL,80HJE WAIIT1JMPKAISHIT101:LEABX,LEEXLATRETSHURUENDPDISPL PROC 。顯示子功能PUSHBXMOV DX,Z8279MOV AL,0D1HOUT DX,AL 。置空FIFO寄存器WAIIT4:IN AL,DXMOV BL,ALAND AL,80HCMP AL,80HJE WAIIT4POPBXMOVAL,40HOUTDX,ALMOVDX,D8279MOVAL,[SI+4]9/16CMPAL,'E'JNZDSI8MOVAL,79HOUTDX,ALJMPDSI9DSI8: MOVAL,[SI+BX-1]CMPAL,'0'JADSI0DECBXJNZDSI8MOVAL,3FH 。顯示0OUTDX,ALRETDSI0:MOVCX,BXMOVBX,0DSI2:MOVAL,[SI+BX]SUBAL,30HPUSHBXLEABX,TABLEXLATOUTDX,ALPOPBXCMPBX,1JNZT119OUTDX,ALOUTDX,ALT119: INCBXCMPCX,BXJZT103JMPDSI2T103:MOVAL,[SI+4]CMPAL,'-'JNZDSI9MOVAL,40HOUTDX,AL。顯示-號DSI9:RETDISPL ENDP。計(jì)算區(qū)...................................................................................................10/16JISUAN:MOVSI,OFFSETDATA1MOVDI,OFFSETDATA2SUBBYTEPTR[SI],30HSUBBYTEPTR[DI],30HSUBBYTEPTR[SI+1],30HSUBBYTEPTR[DI+1],30HMOVDL,10MOVAL,BYTEPTR[SI+1]MULDLADDAL,[SI]MOVBL,ALMOVAL,[DI+1]MULDLADDAL,[DI]XCHGAL,BL 。AL被減數(shù),BL減數(shù)POPCX 。彈出運(yùn)算符CMPCL,'+'JZJIACMPCL,'-'JZJIANCMPCL,'*'JZCHENGJMPCHUCHU: AADCMPBL,0JNZT20MOV SI,OFFSETDATA1MOV BYTEPTR[SI+4],'E' 。除數(shù)為零MOVBX,5CALLDISPLJMPKAISHIT20:DIVBLMOVAH,0 。余數(shù)置0JMPXIANSHIJIA: ADDAL,BLJMPXIANSHIJIAN: CMPAL,BLJNBN1XCHGAL,BLMOVBYTEPTR[SI+4],'-'11/16N1:SUBAL,BLJMPXIANSHICHENG: MULBLJMPXIANSHIXIANSHI:MOVCX,1000MOVDX,0DIVCXADDAX,30HMOV[SI+3],ALMOVAX,DXMOVCL,100DIVCLADDAL,30HMOV[SI+2],ALMOVAL,AHMOVAH,0MOVCL,10DIVCLADDAL,30HADDAH,30HMOV[SI+1],ALMOV[SI],AHMOVBX,5。顯示結(jié)果CALLDISPLJMPKAISHILEE:DB37H,34H,31H,30HDB00H,00H,00H,00HDB38H,35H,32H,00HDB00H,00H,00H,00HDB00H,00H,00H,00HDB00H,00H,00H,00HDB00H,00H,00H,00HDB00H,00H,00H,00HDB39H,36H,33H,'='DB00H,00H,00H,00HDB'+','-','*','/'DB00H,00H,00H,00HDB00H,00H,00H,00HDB00H,00H,00H,00HDB00H,00H,00H,00H12/16DB 00H,00H,00H,00HTABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FHCODEENDSEND START13/16四、系統(tǒng)測試:首先賦予顯示緩沖初始值‘0000’,并把數(shù)據(jù)存儲(chǔ)單元清零。2.主程序調(diào)用鍵盤掃描子程序,判斷鍵值,是數(shù)字第一次直接賦予23H單元,如是第二次輸入數(shù)字,則把第一次值乘十后與第二次值相加,結(jié)果存儲(chǔ)到23H單元,并R4計(jì)數(shù)2次,表示已輸入兩位,掃描鍵值時(shí)就不再賦值和顯示。等待運(yùn)算符號的按下,按下等于號就直接計(jì)算并顯示,如加減就 R5加一并把R4清零,表示可以輸入下一操作數(shù),與第一次相同,并等待等于鍵按下。清零鍵則不管在任何情況下都清零,相當(dāng)于軟復(fù)位。在掃描完鍵盤后,調(diào)用數(shù)據(jù)顯示轉(zhuǎn)換子程序把值轉(zhuǎn)
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- DB31/T 965-2022電站鍋爐安全、節(jié)能和環(huán)保管理基本要求
- DB31/T 343-2019汽車快修企業(yè)技術(shù)條件
- DB31/T 1244-2020冷卻塔節(jié)能降噪改造技術(shù)指南
- DB31/T 1190.1-2019蔬菜病蟲害綠色防控技術(shù)規(guī)范第1部分:誘蟲板(黃色)
- DB31/T 1128-2019再生骨料混凝土技術(shù)要求
- DB31/T 1064-2017公共汽(電)車客流采集技術(shù)和應(yīng)用規(guī)范
- DB31/ 969-2016軌道交通用預(yù)制混凝土襯砌管片單位產(chǎn)品能源消耗限額
- CAB 1021-2013汽車用真空吸塵器
- 網(wǎng)絡(luò)設(shè)備維修實(shí)操能力測試考核試卷
- 2024年食品分離機(jī)械投資申請報(bào)告代可行性研究報(bào)告
- 壓縮空氣系統(tǒng)風(fēng)險(xiǎn)評估方案報(bào)告
- 三級安全教育登記表
- 部編版小學(xué)語文三年級下冊《我不能失信》課件PPT(公開課)
- 水稻加工項(xiàng)目可行性研究報(bào)告(范文)
- 家庭教育方式綜合測驗(yàn)
- 律師會(huì)見筆錄范本
- 浙教版科學(xué)電學(xué)基礎(chǔ)知識總結(jié)
- T/CEC 164-2018 火力發(fā)電廠智能化技術(shù)導(dǎo)則_(高清-最新版)
- 抹機(jī)水MSDS 安全資料表
- 醫(yī)院感染管理組織框架
- 特殊平行四邊形課件
評論
0/150
提交評論