創(chuàng)新性實驗結(jié)題報告——簡易計算器_第1頁
創(chuàng)新性實驗結(jié)題報告——簡易計算器_第2頁
創(chuàng)新性實驗結(jié)題報告——簡易計算器_第3頁
創(chuàng)新性實驗結(jié)題報告——簡易計算器_第4頁
創(chuàng)新性實驗結(jié)題報告——簡易計算器_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 山東科技大學電工電子實驗教學中心創(chuàng)新性實驗結(jié)題報告課程名稱 單片機原理及應用 實驗項目名稱 簡易計算器 姓名 *學號 * 手機 * Email * 專 業(yè) * 班級 * 指導教師及職稱 *開課學期 2011 至2012 學年 2 學期提交時間 2011 年 1 月 5 日一、實驗摘要通過對51單片機匯編指令、STC89C52RC單片機片上各功能模塊、常用外部可編程芯片的學習和應用訓練,進一步熟悉51單片機匯編程序設(shè)計,串行總線接口程序設(shè)計以及外部可編程芯片的使用方法。學習創(chuàng)新性實驗報告的撰寫方法。二、實驗目的1、基于STC89C52RC單片機設(shè)計制作簡易計算器,能完成絕對值小于100的有符號

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

3、由于要設(shè)計的是簡單的計算器,可以進行四則運算,為了得到較好的顯示效果,采用LED 顯示數(shù)據(jù)和結(jié)果。(2)另外鍵盤包括數(shù)字鍵(09)、符號鍵(+、-、×、÷)、清除鍵和等號鍵,故只需要16 個按鍵即可,設(shè)計中采用集成的計算鍵盤。(3)執(zhí)行過程:開機顯示零,等待鍵入數(shù)值,當鍵入數(shù)字,通過LED顯示出來,當鍵入+、-、*、/運算符,計算器在內(nèi)部執(zhí)行數(shù)值轉(zhuǎn)換和存儲,并等待再次鍵入數(shù)值,當再鍵入數(shù)值后將顯示鍵入的數(shù)值,按等號就會在LED上輸出運算結(jié)果。 系統(tǒng)模塊圖:2、實驗內(nèi)容(一)、總體硬件設(shè)計本設(shè)計選用AT89C52單片機為主控單元。 顯示部分:采用六位LED動態(tài)數(shù)碼管顯示。按鍵

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

5、管腳實現(xiàn)16個按鍵功能,這種形式在單片機系統(tǒng)中也最常用。矩陣鍵盤布局圖:矩陣鍵盤內(nèi)部電路圖如下圖所示:(三)、LED顯示模塊本設(shè)計采用LED數(shù)碼顯示來顯示輸出數(shù)據(jù)。通過D0-D7引腳向LED寫指令字或?qū)憯?shù)據(jù)以使LED實現(xiàn)不同的功能或顯示相應數(shù)據(jù)。(四)運算模塊(單片機控制)MCS-51 單片機是在一塊芯片中集成了CPU、RAM、ROM、定時器/計數(shù)器和多功能I/O等一臺計算機所需要的基本功能部件。如果按功能劃分,它由如下功能部件組成,即微處理器(CPU)、數(shù)據(jù)存儲器(RAM)、程序存儲器(ROM/EPROM)、并行I/O 口、串行口、定時器/計數(shù)器、中斷系統(tǒng)及特殊功能寄存器(SFR)。單片機是

6、靠程序運行的,并且可以修改。通過不同的程序?qū)崿F(xiàn)不同的功能,尤其是特殊的獨特的一些功能,通過使用單片機編寫的程序可以實現(xiàn)高智能,高效率,以及高可靠性!因此我們采用單片機作為計算器的主要功能部件,可以很快地實現(xiàn)運算功能。3、實驗步驟 總流程圖:開始初始化參數(shù)初始化LED顯示有鍵輸入?讀取鍵碼LED顯示數(shù)字鍵清零鍵功能鍵狀態(tài)清零輸入數(shù)值數(shù)值送顯示緩沖YN等待數(shù)值輸入結(jié)果送顯示緩沖根據(jù)上次功能鍵和輸入的數(shù)據(jù)計算結(jié)果本次功能鍵?等待數(shù)值輸入結(jié)果送顯示緩沖等待數(shù)值輸入結(jié)果送顯示緩沖詳細算術(shù)運算程序設(shè)計流程圖:五、實驗結(jié)果與分析1、實驗現(xiàn)象、數(shù)據(jù)記錄 經(jīng)過反復測試調(diào)整,該計算器可簡單進行100以內(nèi)的加減乘除

7、計算,以及清零功能,結(jié)果能保留小數(shù)點后一位,能顯示計算結(jié)果的正負,完成了實驗要求。 測試結(jié)果記錄: (1) 加法運算:64+37= (2) 減法運算:1286= (3) 乘法運算:99*99=(4) 除法運算:65/21=2、對實驗現(xiàn)象、數(shù)據(jù)及觀察結(jié)果的分析與討論: 該實驗達到了實驗的基本要求,但是需要改進和提高的還有很多,設(shè)計的計算器能進行100以內(nèi)的加減乘除計算,以及清零功能,結(jié)果能保留小數(shù)點后一位,能顯示計算結(jié)果的正負,但是只能進行兩個操作數(shù)的操作,而不能進行連續(xù)計算,比如連加、連乘,并且不能進行有符號數(shù)的計算,即輸入的兩個操作數(shù)必須是正號的,也不能輸入帶小數(shù)點的操作數(shù),對此,我會課下繼

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

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

10、力。通過這次課程設(shè)計使我得到了一次用專業(yè)知識、專業(yè)技能分析和解決問 題全面系統(tǒng)的鍛煉。使我們在單片機的基本原理、單片機應用系統(tǒng)開發(fā)過程,以及在常用 編程設(shè)計思路技巧(特別是匯編語言)的掌握方面都能向前邁了一大步,為日后成為合格 的應用型人才打下良好的基礎(chǔ)。七、指導老師評語及得分:簽名: 年 月 日附件:源程序;P0接位選,P1接段選YS EQU 20H;第一個數(shù)十位 YG EQU 21H;第一個數(shù)個位 ERS EQU 22H;第二個數(shù)十位 EG EQU 23H;第二個數(shù)個位 YI EQU 24HER EQU 25HJF EQU 26H;結(jié)果負號位JQ EQU 27H ;結(jié)果千位JBA EQU

11、28H;結(jié)果百位JS EQU 29H;結(jié)果十位JG EQU 30H;結(jié)果個位JX EQU 31H;結(jié)果小數(shù)位JG1 EQU 32HORG 0000HMAIN: MOV 20H,#00H MOV 21H,#00H MOV 22H,#00H MOV 23H,#00H MOV 24H,#00H MOV 25H,#00H MOV 26H,#0C0H MOV 27H,#00H MOV 28H,#00H MOV 29H,#00H MOV 30H,#00H MOV 31H,#00H MOV 32H,#00H ONE1: CLR C ACALL KEYSCAN JB PSW.5,ONE1 CJNE A,#11

12、,ONE11 SJMP MAINONE11:CJNE A,#10,ONE12 SJMP ONE1ONE12:JNC ONE1 MOV 21H,A ACALL DELAY ONE2: ACALL XS1 ACALL KEYSCAN JB PSW.5,ONE2 CJNE A,#11,ONE22 SJMP MAINONE22:CJNE A,#10,ONE23 SJMP ONE2ONE23:JNC ONE31 MOV 20H,21H MOV 21H,A ACALL DELAY ONE3: ACALL XS2 ACALL KEYSCAN JB PSW.5,ONE3 CJNE A,#11,ONE33 SJ

13、MP MAINONE33:CJNE A,#10,ONE30 ACALL DELAY ACALL XS1 SJMP ONE3ONE30:JC ONE3ONE31: MOV R5,A ;R5為符號位,表示加或減或乘或除ONE4: ACALL XS2 ACALL KEYSCAN JB PSW.5,ONE4 CJNE A,#11,ONE44 SJMP MAINONE44:CJNE A,#10,ONE45 SJMP ONE4ONE45:JNC ONE4 MOV 23H,A ACALL DELAY ONE5: ACALL XS4 ACALL KEYSCAN JB PSW.5,ONE5 CJNE A,#11

14、,ONE55 LJMP MAINONE55:CJNE A,#10,ONE56 SJMP ONE66ONE56:JNC ONE5 MOV 22H,23H MOV 23H,A ACALL DELAY ONE6: ACALL XS5 ACALL KEYSCAN JB PSW.5,ONE6 CJNE A,#11,ONE66 LJMP MAINONE66:CJNE A,#10,ONE6 ACALL GNONE61:ACALL KEYSCAN JB PSW.5,ONE60 LJMP MAINONE60:ACALL XS3 SJMP ONE61 ;*KEYSCAN:LCALL KAP ;掃描鍵子程序 JNZ

15、 KP1 SETB PSW.5 ;置無鍵標志 RET KP1:LCALL DELY ;去抖 LCALL KAP ;再次掃描鍵盤 JNZ KP2 ;轉(zhuǎn)識鍵碼程序 SETB PSW.5 ;置無鍵標志 RET KP2:CLR PSW.5 ;置有鍵操作標志 MOV R0,#0FEH ;逐列掃描初始值 MOV R4,#00H ;0列加數(shù) KP4: MOV A,R0 MOV P0,A ;送列掃描信號 MOV A,P2 ;回讀行信號 JB ACC.0,L1 ;不是第一行,轉(zhuǎn)第二行 MOV A,#00H ;是第一行,行嗎=0 AJMP KP5 L1:;JB ACC.1,L2 ;不是第二行,轉(zhuǎn)第三行 JB AC

16、C.1,NEXT MOV A,#08H ;是第二行,行碼=8 AJMP KP5 KP5:ADD A,R4 ;對應的行碼+對應的列碼=鍵碼 PUSH ACC ;保護已經(jīng)得到的鍵碼 KP3:LCALL DELY LCALL KAP ;繼續(xù)掃描 JNZ KP3 ;A值不等于0,表示手未松開! POP ACC ;A值等于0,手已經(jīng)松開,彈回鍵碼! RETNEXT:INC R4 ;下一列列碼加1 MOV A,R0 JNB ACC.7,KEYSCAN ;列到最后列了嗎? RL A MOV R0,A ;下一列 AJMP KP4 ;掃描下一列 KAP:MOV A,#00H ;全掃描字(列) MOV P0,A

17、;送全掃描字 MOV A,P2 ;回讀行信息 CPL A ANL A,#0FH ;得到A值,=0,無鍵;0,有鍵 RETDELY:MOV R6,#14H ;去抖! DL:MOV R7,#0FFH DJNZ R7,$ DJNZ R6,DL RET;*計算加減乘除GN: MOV A,20H MOV B,#10 MUL AB ADD A,21H MOV 24H,A ;*得到第一個數(shù) MOV A,22H MOV B,#10 MUL AB ADD A,23H MOV 25H,A ;*得到第二個數(shù) MOV A,R5J0: CJNE A,#12,J1 SJMP JIA LJMP XS3 RETJ1: CJN

18、E A,#13,J2 SJMP JIAN LJMP XS3 RETJ2: CJNE A,#14,J3 SJMP CHENG LJMP XS3 RETJ3: LJMP CHU LJMP XS3 RETJIA: MOV A,24H ADD A,25H MOV JG1,A LJMP AAAA RETJIAN:MOV A,24H CLR C SUBB A,25H MOV JG1,A JNC JIAN1 MOV JF,#0BFH MOV A,#255 CLR C SUBB A,32H INC A MOV JG1,A LJMP AAAAJIAN1:RETCHENG:CLR C ;個位與個位相乘 MOV A

19、,21H MOV B,23H MUL AB MOV B,#10 DIV AB MOV JG,B MOV JS,A ;* MOV A,20H;十位與個位相乘 MOV B,23H MUL AB MOV B,#10 DIV AB MOV JBA,A MOV A,B ADDC A,JS CJNE A,#10,CH1 SJMP CH2 CH1: JC CH3CH2: CLR C SUBB A,#10 MOV JS,A MOV A,JBA INC A MOV JBA,A SJMP CH4CH3: MOV JS,A ;* CH4: MOV A,22H;個位與十位相乘 MOV B,21H MUL AB MOV

20、 B,#10 DIV AB ADDC A,JBA MOV JBA,A MOV A,B ADDC A,JS CJNE A,#10,CH5 SJMP CH6 CH5:JC CH7CH6:CLR C SUBB A,#10 MOV JS,A MOV A,JBA INC A MOV JBA,A SJMP CH8CH7: MOV JS,A;* CH8: MOV A,20H;十位與十位相乘 MOV B,22H MUL AB MOV B,#10 DIV AB MOV JQ,A MOV A,B ADDC A,JBA CJNE A,#10,CH9 SJMP CH10 CH9: JC CH11CH10:CLR C

21、SUBB A,#10 MOV JBA,A MOV A,JQ INC A MOV JQ,A SJMP CH12CH11:MOV JBA,A CH12:RET CHU: MOV A,24H MOV B,25H DIV AB MOV JG1,A MOV A,B ;余數(shù) MOV B,#10 MUL AB MOV B,25H DIV AB MOV A,B MOV B,#10 MUL AB MOV B,25H DIV AB MOV A,B CJNE A,#5,CHU2 CHU1:JNC CHU2 SJMP CHU3CHU2:INC A CHU3:MOV JX,A ;小數(shù) SJMP AAAA RETAAAA

22、:MOV A,JG1 MOV B,#10 DIV AB MOV JG,B ;得到JG1個位 MOV B,#10 DIV AB MOV JS,B ;得到JG1十位 MOV JBA,A ;得到JG1百位 RET ;*XS1: MOV A,21H MOVP1,#0FFH ;共陽 滅碼 MOVP0,#20H MOVDPTR,#TAB MOVCA,A+DPTR ;查出字形代碼 MOV P1,A ;送個位 ACALL DELAY RETXS2: MOV A,20H ;顯示輸入的第一個數(shù) MOVP1,#0FFH ;共陽 滅碼 MOVP0,#10H ;送位控信號 MOVDPTR,#TAB MOVCA,A+DP

23、TR ;查出字形代碼 MOV P1,A ;送十位 ACALLDELAY ;穩(wěn)定顯示信息 MOV A,21H MOVP1,#0FFH ;共陽 滅碼 MOVP0,#20H MOVDPTR,#TAB MOVCA,A+DPTR ;查出字形代碼 MOV P1,A ;送個位 ACALL DELAY RETXS4: MOV A,23H MOVP1,#0FFH ;共陽 滅碼 MOVP0,#20H MOVDPTR,#TAB MOVCA,A+DPTR ;查出字形代碼 MOV P1,A ;送個位 ACALL DELAY RETXS5: MOV A,22H ;顯示輸入的第二個數(shù) MOVP1,#0FFH ;共陽 滅碼 MOVP0,#10H ;送位控信號 MOVDPTR,#TAB MOVCA,A+DPTR;查出字形代碼 MOV P1,A ;送十位 ACALL DELAY ;穩(wěn)定顯示信息 MOV A,23H MOVP1,#0FFH ;共陽 滅碼 MOVP0,#20H MOVDPTR,#TAB MO

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論