基于51單片機的簡易計算器設(shè)計_第1頁
基于51單片機的簡易計算器設(shè)計_第2頁
基于51單片機的簡易計算器設(shè)計_第3頁
基于51單片機的簡易計算器設(shè)計_第4頁
基于51單片機的簡易計算器設(shè)計_第5頁
已閱讀5頁,還剩10頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、2013 - 2014 學(xué)年_ _學(xué)期山東科技大學(xué)電工電子實驗教學(xué)中心創(chuàng)新性實驗研究報告實驗項目名稱 基于51單片機的簡易計算器設(shè)計2013年12 月 27 日一、實驗摘要通過對51單片機匯編指令、STC89C52RC單片機片上各功能模塊、> 用外部可編程芯片的學(xué)習和應(yīng)用訓(xùn)練, 進一步熟悉51單片機匯編程序設(shè)計, 串行總線接口程序設(shè)計以及外部可編程芯片的使用方法。學(xué)習創(chuàng)新性實驗報告的撰寫方法。、實驗?zāi)康?、基于STC89C52RC單片機設(shè)計制作簡易計算器,能完成絕對值小于 100的有符號整數(shù)的加減乘除四則運算,運算結(jié)果均保留小數(shù)點后一位。2、要求有加、減、乘、除、負號、歸零、等號鍵。3、

2、利用6位LED顯示參加運算的數(shù)據(jù)和運算結(jié)果,顯示運算結(jié)果超限 提示,消隱未使用位。4、鼓勵進行探索??稍诹私鈱嶒炇移鞑牟⒛軐崿F(xiàn)題目基本要求的情況 下,對題目進行創(chuàng)新設(shè)計三、實驗場地及儀器、設(shè)備和材料:1、實驗場地:J11-3242、實驗儀器、設(shè)備和材料:PC兼容機一臺、80C52單片機實驗箱一臺、2*8 鍵盤一個、6個共陽極的數(shù)碼管、連線若干四、實驗內(nèi)容 1、實驗原理根據(jù)功能和指標要求,本系統(tǒng)選用 MCS-51系列單片機為主控機。通過 擴展必要的外圍接口電路,實現(xiàn)對計算器的設(shè)計。具體設(shè)計如下:(1)由于要設(shè)計的是簡單的計算器,可以進行四則運算,為了得到較好的 顯示效果,采用LED顯示數(shù)據(jù)和結(jié)果

3、。(2)另外鍵盤包括數(shù)字鍵(09)、符號鍵(+、-、又與、清除鍵和等 號鍵,故只需要16個按鍵即可,設(shè)計中采用集成的計算鍵盤。(3)執(zhí)行過程:開機顯示零,等待鍵入數(shù)值,當鍵入數(shù)字,通過 LED顯示 出來,當鍵入+、-、*、/運算符,計算器在內(nèi)部執(zhí)行數(shù)值轉(zhuǎn)換和存儲,并等 待再次鍵入數(shù)值,當再鍵入數(shù)值后將顯示鍵入的數(shù)值,按等號就會在LED上輸出運算結(jié)果。系統(tǒng)模塊圖:圖1系統(tǒng)方案圖2、實驗內(nèi)容(一)、總體硬件設(shè)計本設(shè)計選用AT89C5彈片機為主控單元。顯示部分:采用六位LED動 態(tài)數(shù)碼管顯示。按鍵部分:采用 2*8鍵盤;利用2*8的鍵盤掃描子程序,讀 取輸入的鍵值。(二)、鍵盤接口電路計算器輸入數(shù)字

4、和其他功能按鍵要用到很多按鍵,如果采用獨立按鍵的方式,在這種情況下,編程會很簡單,但是會占用大量的 I/O 口資源,因此 在很多情況下都不采用這種方式,而是采用矩陣鍵盤的方案。矩陣鍵盤采用 兩條I/O線作為行線,八條I/O線作為列線組成鍵盤,在行線和列線的每個 交叉點上設(shè)置一個按鍵。這樣鍵盤上按鍵的個數(shù)就為 2X 8個。這種行列式鍵 盤結(jié)構(gòu)能有效地提高單片機系統(tǒng)中I/O 口的利用率。矩陣鍵盤的工作原理:計算器的鍵盤布局如圖2所示:一般有16個鍵組成,在單片機中正好可 以用一個P口和另一個P口的兩個管腳實現(xiàn)16個按鍵功能,這種形式在單片機 系統(tǒng)中也最常用。矩陣鍵盤布局圖:矩陣鍵盤內(nèi)部電路圖如下圖

5、所示:(四)運算模塊(單片機控制)MCS-51單片機是在一塊芯片中集成了 CPU RAM ROM定時器/計數(shù)器 和多功能I/O等一臺計算機所需要的基本功能部件。如果按功能劃分,它由 如下功能部件組成,即微處理器(CPU、數(shù)據(jù)存儲器(RAM、程序存儲器 (ROM/EPROM并行I/O 口、串行口、定時器/計數(shù)器、中斷系統(tǒng)及特殊功 能寄存器(SFR 。單片機是靠程序運行的,并且可以修改。通過不同的程序?qū)崿F(xiàn)不同的功 能,尤其是特殊的獨特的一些功能,通過使用單片機編寫的程序可以實現(xiàn)高 智能,高效率,以及高可靠性!因此我們采用單片機作為計算器的主要功能 部件,可以很快地實現(xiàn)運算功能。3、實驗步驟 總流程

6、圖:LED顯示詳細算術(shù)運算程序設(shè)計流程圖:加乘降夠藪值送顯示緩沖五、實驗結(jié)果與分析1、實驗現(xiàn)象、數(shù)據(jù)記錄經(jīng)過反復(fù)測試調(diào)整,該計算器可簡單進行 100以內(nèi)的加減乘除計算,以及清零功 能,結(jié)果能保留小數(shù)點后一位,能顯示計算結(jié)果的正負,完成了實驗要求。測試結(jié)果記錄:加法運算:15+23=382、對實驗現(xiàn)象、數(shù)據(jù)及觀察結(jié)果的分析與討論:該實驗達到了實驗的基本要求,但是需要改進和提高的還有很多,設(shè)計的計算器能 進行100以內(nèi)的加減乘除計算,以及清零功能,結(jié)果能保留小數(shù)點后一位,能顯示計算 結(jié)果的正負,但是只能進行兩個操作數(shù)的操作,而不能進行連續(xù)計算,比如連加、連乘, 并且不能進行有符號數(shù)的計算,即輸入的

7、兩個操作數(shù)必須是正號的,也不能輸入帶小數(shù) 點的操作數(shù),對此,我會課下繼續(xù)對它進行研究改進,爭取做出具有更多功能的更先進 的計算器。3、關(guān)鍵點:實驗過程中由于對單片機的了解的不徹底,想法太簡單遇到了很多的阻礙,開始 只是簡單的覺得只有顯示和鍵盤這兩個模塊不了解,很難弄,其余的部分只是簡單的加 減乘除,幾句簡單程序就行,結(jié)果后來在四位數(shù)的顯示上出了問題,跟本就不是簡單的 結(jié)果除以1000得出千位,于是又重新編制計算部分,后來在同學(xué)的幫助下做出了覺得 很正確的程序,不過試驗還是失敗,最后從頭重來,一步步研究,一步步計算,終于顯 示出了正確結(jié)果,該程序的邏輯性很強,每個細節(jié)都要考慮到,需要一遍遍測試顯

8、示結(jié) 果,知道得出最終正確的答案。六、實驗結(jié)論課程設(shè)計是培養(yǎng)學(xué)生綜合運用所學(xué)知識,發(fā)現(xiàn),提出,分析和解決實際問題,鍛煉實踐 能力的重要環(huán)節(jié),是對學(xué)生實際工作能力的具體訓(xùn)練和考察過程.隨著科學(xué)技術(shù)發(fā)展的日新日異,單片機已經(jīng)成為當今計算機應(yīng)用中空前活躍的領(lǐng)域,在生活中可以說得是無處不在。因此作為二十一世紀的大學(xué)來說掌握單片機的開發(fā)技術(shù)是十分重要的。回顧起此次單片機課程設(shè)計,我仍感慨頗多,的確,從選題到定稿,從理論到實踐,可以說得是苦多于甜,但是可以學(xué)到很多很多的的東西。通過這次課程設(shè)計使我懂得了理論與實際相結(jié)合是很重要的,只有理論知識是遠遠不夠的,只有把所學(xué)的理論知識與實踐相結(jié)合起來,從理論中得出

9、結(jié)論,才能真正為社會服務(wù),從而提高自己的實際動手能力和獨立思考的能力。通過這次課程設(shè)計使我得到了一次用專業(yè)知識、專業(yè)技能分析和解決問題全面系統(tǒng)的鍛煉。使我們在單片機的基本原理、單片機應(yīng)用系統(tǒng)開發(fā)過程,以及在常用編 程設(shè)計思路技巧(特別是匯編語言)的掌握方面都能向前邁了一大步,為日后成為合格 的 應(yīng)用型人才打下良好的基礎(chǔ)。七、指導(dǎo)老師評語及得分:簽名:年 月 日附件:源程序等。YSEQU20H;第一個數(shù)十位JFEQU26H;結(jié)果負號位YGEQU21H;第一個數(shù)個位JQEQU27H;結(jié)果千位ERSEQU22H;第二個數(shù)十位JBAEQU28H;結(jié)果白位EGEQU23H;第二個數(shù)個位JSEQU29H;

10、結(jié)果十位YIEQU24HJGEQU30H;結(jié)果個位EREQU25HJXEQU31H;結(jié)果小數(shù)位MAIN: MOV20H,#00HONE31: MOV R5,A ;R5 為符號位,MOV21H,#00H減或乘或除MOV22H,#00HONE4: ACALL XS2MOV23H,#00HACALL KEYSCANMOV24H,#00HJB PSW.5,ONE4MOV25H,#00HCJNE A,#11,ONE44MOV26H,#0C0HSJMP MAINMOV27H,#00HONE44:CJNE A,#10,ONE45MOV28H,#00HSJMP ONE4MOV29H,#00HONE45:JNC

11、 ONE4MOV30H,#00HMOV 23H,AMOV31H,#00HACALL DELAYMOV32H,#00HONE5: ACALL XS4ONE1: CLR CACALLKEYSCANACALL KEYSCANJB PSW.5,ONE5JB PSW.5,ONE1CJNE A,#11,ONE55CJNEA,#11,ONE11LJMP MAINSJMP MAINONE55:CJNE A,#10,ONE56ONE11:CJNEA,#10,ONE12SJMP ONE66SJMP ONE1ONE56:JNC ONE5ONE12:JNCONE1MOV 22H,23HMOV21H,AMOV 23H,

12、AORGONE30:JC ONE30000HACALL DELAYACALL DELAY表不加或EQU 32HSJMP ONE3JG1ONE2: ACALL XS1ACALL KEYSCANONE6: ACALL XS5JB PSW.5,ONE2CJNE A,#11,ONE22SJMP MAINONE22:CJNE A,#10,ONE23SJMP ONE2ONE23:JNC ONE31MOV 20H,21HMOV 21H,AACALL DELAYJB PSW.5,ONE6 CJNE A,#11,ONE66 LJMP MAINONE66:CJNE A,#10,ONE6 ACALL GNONE61

13、:ACALL KEYSCAN JB PSW.5,ONE60 LJMP MAINONE60:ACALL XS3ACALL KEYSCANONE3: ACALL XS2 ACALL KEYSCAN JB PSW.5,ONE3 CJNE A,#11,ONE33 SJMP MAINONE33:CJNE A,#10,ONE30ACALL DELAYACALL XS1SJMP ONE61KEYSCAN:LCALL KAP ;掃描鍵子程序JNZ KP1SETBPSW.5 ;置無鍵標志RETKP1:LCALL DELY ;去抖LCALL KAP;再次掃描鍵盤JNZ KP2;轉(zhuǎn)識鍵碼程序SETBPSW.5 ;置

14、無鍵標志RETRET.* ;KP2:CLRPSW.5;置有鍵操作標志*計算加減乘除MOVR0,#0FEH;逐歹U掃描初始值GN: MOV A,20HMOVR4,#00H;0列加數(shù)MOV B,#10KP4:MUL ABMOVA,R0ADD A,21HMOVP0,A;送列掃描仿號MOV 24H,AMOVA,P2;回讀行信號;*得至個數(shù)JBACC.0,L1 ;不是A行,轉(zhuǎn)第二行MOV A,22HMOVA,#00H ;是 A行,行嗎=0MOV B,#10AJMPKP5MUL ABL1:JBACC.1,NEXT ;不是第二行,轉(zhuǎn)下一ADD A,23H列MOV 25H,AMOVA,#08H ;是第二行,行

15、碼二8;*得至 ij第二個數(shù)AJMPKP5MOV A,R5KP5:ADDA,R4;對應(yīng)的行碼+對應(yīng)的列碼=J0: CJNE A,#12,J1鍵碼SJMP JIAPUSHACC ;保護已經(jīng)得到的鍵碼LJMP XS3KP3:LCALLDELYRETLCALLKAP ;繼續(xù)掃描J1: CJNE A,#13,J2JNZKP3 ;A 值小等丁 0,表小手未SJMP JIAN松開!LJMP XS3POPACC ;A值等于0,手已經(jīng)松開,RET彈回鍵碼!J2: CJNE A,#14,J3RETSJMP CHENGNEXT:INCR4;下一列列碼加1LJMP XS3MOVA,R0RETJNBACC.7,KEY

16、SCAN;列到最后列J3: LJMP CHU了嗎?LJMP XS3RLARETMOVR0,A;下一列JIA: MOV A,24HAJMPKP4;掃而F 一列ADD A,25HKAP:MOVA,#00H;全掃描字(列)MOV JG1,AMOVP0,A;送全掃描字LJMP AAAAMOVA,P2;回讀行信息RETCPLAJIAN:MOV A,24HANLA,#0FH;得到 A 值,=0,CLR C無鍵;*0,有鍵SUBB A,25HRETMOV JG1,ADELY:MOVR6,#14H;去抖!JNC JIAN1DL:MOVR7,#0FFHMOV JF,#0BFHDJNZR7,$MOV A,#255

17、DJNZR6,DLCLR CSUBB A,32HINC AMOV JG1,AJIAN1: LJMP AAAARETCHENG:CLR C ;個位與個位相乘MOV A,21HMOV B,23HMUL ABMOV B,#10DIV ABMOV JG,BMOV JS,AMOV A,20H;十位與個位相乘MOV B,23HMUL ABMOV B,#10DIV ABMOV JBA,AMOV A,BADDC A,JSCJNE A,#10,CH1SJMP CH2CH1: JC CH3CH2: CLR CSUBB A,#10MOV JS,AMOV A,JBAINC AMOV JBA,ASJMP CH4CH3:

18、 MOV JS,ACH4: MOV A,22H;個位與十位相乘MOV B,21HMUL ABMOV B,#10DIV ABADDC A,JBAMOV JBA,AMOV A,BADDC A,JSCJNE A,#10,CH5SJMP CH6CH5:JC CH7CH6:CLR CSUBB A,#10MOV JS,AMOV A,JBAINC AMOV JBA,ASJMP CH8CH7: MOVJS,ACH8: MOV A,20H;十位與十位相乘MOV B,22HMUL ABMOV B,#10DIV ABMOV JQ,AMOV A,BADDC A,JBACJNE A,#10,CH9SJMP CH10CH

19、9: JC CH11CH10:CLR CSUBB A,#10MOV JBA,AMOV A,JQINC AMOV JQ,ASJMP CH12CH11:MOV JBA,ACH12:RETCHU: MOV A,24HMOV B,25HDIV ABMOV JG1,AMOV A,B ;余數(shù)MOV B,#10MUL ABMOV B,25HDIV ABMOV JX,A;小數(shù)SJMP AAAARETAAAA:MOV A,JG1MOV B,#10DIV ABMOV JG,B;得到JG1個位MOV B,#10MOVA,23HDIV ABMOVP1,#0FFH;共陽火碼MOV JS,B彳導(dǎo)至U JG1十位MOVP0

20、,#20HMOV JBA ,A;得到JG1百位MOVDPTR,#TABRETMOVCA,A+DPTR;查出字形代碼.* ;MOVP1,A;送個位XS1: MOVA,21HMOV P1,#0FFH洪陽火他ACALLRETDELAYMOV P0,#20H* ;MOV DPTR,#TABXS3: MOVP1,#0FFH;共陽火碼MOVCA,A+DPTR ;查出字形代碼MOVP0,#01H;送位控佶號MOV P1,A;送個位MOVA,JFACALLDELAYMOVP1,A;送負號位RETACALLDELAY ;穩(wěn)定顯示信息XS2: MOV A,20H ;顯示輸入的第一個數(shù)MOVP1,#0FFH;共陽火碼MOV P1,#0FFH洪陽火他MOV P0,#02HMOV P0,#10H;送位控佶號MOVA,JQMOV DPTR,#TABMOVDPTR,#TABMOVCA,A+DPTR ;查出字形代碼MOVCA,A+DPTR ;查出字形代碼MOV P1,A;0 位MOVP1,A ;送千位ACALLDELAY ;穩(wěn)定顯示信息ACALLDELAY ;穩(wěn)定顯示信息MOV A,21HMOVP1,#0FFH;共陽火碼MOV P1,#0FFH洪陽火他MOVP0,#04HMOV P0,#20HMOVA,JBAMOV DPTR,#TABMOVDPTR,#TABMOVCA,A+D

溫馨提示

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

最新文檔

評論

0/150

提交評論