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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

10、力。通過這次課程設(shè)計使我得到了一次用專業(yè)知識、專業(yè)技能分析和解決問 題全面系統(tǒng)的鍛煉。使我們在單片機(jī)的基本原理、單片機(jī)應(yīng)用系統(tǒng)開發(fā)過程,以及在常用 編程設(shè)計思路技巧(特別是匯編語言)的掌握方面都能向前邁了一大步,為日后成為合格 的應(yīng)用型人才打下良好的基礎(chǔ)。七、指導(dǎo)老師評語及得分:簽名: 年 月 日附件:源程序;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é)果負(fù)號位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 ;置無鍵標(biāo)志 RET KP1:LCALL DELY ;去抖 LCALL KAP ;再次掃描鍵盤 JNZ KP2 ;轉(zhuǎn)識鍵碼程序 SETB PSW.5 ;置無鍵標(biāo)志 RET KP2:CLR PSW.5 ;置有鍵操作標(biāo)志 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 ;對應(yīng)的行碼+對應(yīng)的列碼=鍵碼 PUSH ACC ;保護(hù)已經(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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論