




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、 山東科技大學電工電子實驗教學中心創(chuàng)新性實驗結題報告課程名稱 單片機原理及應用 實驗項目名稱 簡易計算器 姓名 *學號 * 手機 * Email * 專 業(yè) * 班級 * 指導教師及職稱 *開課學期 2011 至2012 學年 2 學期提交時間 2011 年 1 月 5 日一、實驗摘要通過對51單片機匯編指令、STC89C52RC單片機片上各功能模塊、常用外部可編程芯片的學習和應用訓練,進一步熟悉51單片機匯編程序設計,串行總線接口程序設計以及外部可編程芯片的使用方法。學習創(chuàng)新性實驗報告的撰寫方法。二、實驗目的1、基于STC89C52RC單片機設計制作簡易計算器,能完成絕對值小于100的有符號
2、整數的加減乘除四則運算,運算結果均保留小數點后一位。 2、要求有加、減、乘、除、負號、歸零、等號鍵。 3、利用6位LED顯示參加運算的數據和運算結果,顯示運算結果超限提示,消隱未使用位。 4、鼓勵進行探索??稍诹私鈱嶒炇移鞑牟⒛軐崿F題目基本要求的情況下,對題目進行創(chuàng)新設計。三、實驗場地及儀器、設備和材料1、實驗場地:J11-3242、實驗儀器、設備和材料:PC兼容機一臺、8051單片機實驗箱一臺、2*8鍵盤一個、6個共陰極的數碼管、連線若干四、實驗內容1、實驗原理:根據功能和指標要求,本系統選用MCS-51系列單片機為主控機。通過擴展必要的外圍接口電路,實現對計算器的設計。具體設計如下:(1)
3、由于要設計的是簡單的計算器,可以進行四則運算,為了得到較好的顯示效果,采用LED 顯示數據和結果。(2)另外鍵盤包括數字鍵(09)、符號鍵(+、-、×、÷)、清除鍵和等號鍵,故只需要16 個按鍵即可,設計中采用集成的計算鍵盤。(3)執(zhí)行過程:開機顯示零,等待鍵入數值,當鍵入數字,通過LED顯示出來,當鍵入+、-、*、/運算符,計算器在內部執(zhí)行數值轉換和存儲,并等待再次鍵入數值,當再鍵入數值后將顯示鍵入的數值,按等號就會在LED上輸出運算結果。 系統模塊圖:2、實驗內容(一)、總體硬件設計本設計選用AT89C52單片機為主控單元。 顯示部分:采用六位LED動態(tài)數碼管顯示。按鍵
4、部分:采用2*8鍵盤;利用2*8的鍵盤掃描子程序,讀取輸入的鍵值。(二)、鍵盤接口電路計算器輸入數字和其他功能按鍵要用到很多按鍵,如果采用獨立按鍵的方式,在這種情況下,編程會很簡單,但是會占用大量的I/O 口資源,因此在很多情況下都不采用這種方式,而是采用矩陣鍵盤的方案。矩陣鍵盤采用兩條I/O 線作為行線,八條I/O 線作為列線組成鍵盤,在行線和列線的每個交叉點上設置一個按鍵。這樣鍵盤上按鍵的個數就為2×8個。這種行列式鍵盤結構能有效地提高單片機系統中I/O 口的利用率。矩陣鍵盤的工作原理:計算器的鍵盤布局如圖2所示:一般有16個鍵組成,在單片機中正好可以用一個P口和另一個P口的兩個
5、管腳實現16個按鍵功能,這種形式在單片機系統中也最常用。矩陣鍵盤布局圖:矩陣鍵盤內部電路圖如下圖所示:(三)、LED顯示模塊本設計采用LED數碼顯示來顯示輸出數據。通過D0-D7引腳向LED寫指令字或寫數據以使LED實現不同的功能或顯示相應數據。(四)運算模塊(單片機控制)MCS-51 單片機是在一塊芯片中集成了CPU、RAM、ROM、定時器/計數器和多功能I/O等一臺計算機所需要的基本功能部件。如果按功能劃分,它由如下功能部件組成,即微處理器(CPU)、數據存儲器(RAM)、程序存儲器(ROM/EPROM)、并行I/O 口、串行口、定時器/計數器、中斷系統及特殊功能寄存器(SFR)。單片機是
6、靠程序運行的,并且可以修改。通過不同的程序實現不同的功能,尤其是特殊的獨特的一些功能,通過使用單片機編寫的程序可以實現高智能,高效率,以及高可靠性!因此我們采用單片機作為計算器的主要功能部件,可以很快地實現運算功能。3、實驗步驟 總流程圖:開始初始化參數初始化LED顯示有鍵輸入?讀取鍵碼LED顯示數字鍵清零鍵功能鍵狀態(tài)清零輸入數值數值送顯示緩沖YN等待數值輸入結果送顯示緩沖根據上次功能鍵和輸入的數據計算結果本次功能鍵?等待數值輸入結果送顯示緩沖等待數值輸入結果送顯示緩沖詳細算術運算程序設計流程圖:五、實驗結果與分析1、實驗現象、數據記錄 經過反復測試調整,該計算器可簡單進行100以內的加減乘除
7、計算,以及清零功能,結果能保留小數點后一位,能顯示計算結果的正負,完成了實驗要求。 測試結果記錄: (1) 加法運算:64+37= (2) 減法運算:1286= (3) 乘法運算:99*99=(4) 除法運算:65/21=2、對實驗現象、數據及觀察結果的分析與討論: 該實驗達到了實驗的基本要求,但是需要改進和提高的還有很多,設計的計算器能進行100以內的加減乘除計算,以及清零功能,結果能保留小數點后一位,能顯示計算結果的正負,但是只能進行兩個操作數的操作,而不能進行連續(xù)計算,比如連加、連乘,并且不能進行有符號數的計算,即輸入的兩個操作數必須是正號的,也不能輸入帶小數點的操作數,對此,我會課下繼
8、續(xù)對它進行研究改進,爭取做出具有更多功能的更先進的計算器。3、關鍵點: 實驗過程中由于對單片機的了解的不徹底,想法太簡單遇到了很多的阻礙,開始只是簡單的覺得只有顯示和鍵盤這兩個模塊不了解,很難弄,其余的部分只是簡單的加減乘除,幾句簡單程序就行,結果后來在四位數的顯示上出了問題,跟本就不是簡單的結果除以1000得出千位,于是又重新編制計算部分,后來在同學的幫助下做出了覺得很正確的程序,不過試驗還是失敗,最后從頭重來,一步步研究,一步步計算,終于顯示出了正確結果,該程序的邏輯性很強,每個細節(jié)都要考慮到,需要一遍遍測試顯示結果,知道得出最終正確的答案。六、實驗結論課程設計是培養(yǎng)學生綜合運用所學知識,
9、發(fā)現,提出,分析和解決實際問題,鍛煉實踐 能力的重要環(huán)節(jié),是對學生實際工作能力的具體訓練和考察過程.隨著科學技術發(fā)展的日 新日異,單片機已經成為當今計算機應用中空前活躍的領域, 在生活中可以說得是無處 不在。因此作為二十一世紀的大學來說掌握單片機的開發(fā)技術是十分重要的。 回顧起此次單片機課程設計,我仍感慨頗多,的確,從選題到定稿,從理論到實踐, 可以說得是苦多于甜,但是可以學到很多很多的的東西。通過這次課程設計使我懂得了理 論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐 相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和 獨立思考的能
10、力。通過這次課程設計使我得到了一次用專業(yè)知識、專業(yè)技能分析和解決問 題全面系統的鍛煉。使我們在單片機的基本原理、單片機應用系統開發(fā)過程,以及在常用 編程設計思路技巧(特別是匯編語言)的掌握方面都能向前邁了一大步,為日后成為合格 的應用型人才打下良好的基礎。七、指導老師評語及得分:簽名: 年 月 日附件:源程序;P0接位選,P1接段選YS EQU 20H;第一個數十位 YG EQU 21H;第一個數個位 ERS EQU 22H;第二個數十位 EG EQU 23H;第二個數個位 YI EQU 24HER EQU 25HJF EQU 26H;結果負號位JQ EQU 27H ;結果千位JBA EQU
11、28H;結果百位JS EQU 29H;結果十位JG EQU 30H;結果個位JX EQU 31H;結果小數位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 ;轉識鍵碼程序 SETB PSW.5 ;置無鍵標志 RET KP2:CLR PSW.5 ;置有鍵操作標志 MOV R0,#0FEH ;逐列掃描初始值 MOV R4,#00H ;0列加數 KP4: MOV A,R0 MOV P0,A ;送列掃描信號 MOV A,P2 ;回讀行信號 JB ACC.0,L1 ;不是第一行,轉第二行 MOV A,#00H ;是第一行,行嗎=0 AJMP KP5 L1:;JB ACC.1,L2 ;不是第二行,轉第三行 JB AC
16、C.1,NEXT MOV A,#08H ;是第二行,行碼=8 AJMP KP5 KP5:ADD A,R4 ;對應的行碼+對應的列碼=鍵碼 PUSH ACC ;保護已經得到的鍵碼 KP3:LCALL DELY LCALL KAP ;繼續(xù)掃描 JNZ KP3 ;A值不等于0,表示手未松開! POP ACC ;A值等于0,手已經松開,彈回鍵碼! 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 ;*得到第一個數 MOV A,22H MOV B,#10 MUL AB ADD A,23H MOV 25H,A ;*得到第二個數 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 ;余數 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 ;小數 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 ;顯示輸入的第一個數 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 ;顯示輸入的第二個數 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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025-2030年中國食品級磷酸鹽行業(yè)投資規(guī)劃及發(fā)展前景研究報告
- 2025-2030年中國雕塑工藝品行業(yè)發(fā)展趨勢及投資戰(zhàn)略研究報告
- 2025-2030年中國金屬酸洗行業(yè)發(fā)展趨勢及前景調研分析報告
- 2025-2030年中國辣椒紅色素市場運行態(tài)勢及投資戰(zhàn)略研究報告
- 2025年河北建筑安全員考試題庫
- 2025-2030年中國花露水運行趨勢及發(fā)展前景分析報告
- 2025-2030年中國磷酸二氫鉀行業(yè)運營狀況及發(fā)展趨勢分析報告
- 2025-2030年中國男士香水行業(yè)運營狀況及投資策略研究報告
- 唐山職業(yè)技術學院《國際人才管理》2023-2024學年第二學期期末試卷
- 2025人教版一年級下冊數學教學進度表
- DeepSeek教案寫作指令
- 休學復學申請書
- 2025年四川司法警官職業(yè)學院高職單招職業(yè)適應性測試近5年常考版參考題庫含答案解析
- 新建污水處理廠工程EPC總承包投標方案(技術標)
- 山東省德州市2024-2025學年高三上學期1月期末生物試題(有答案)
- 本人報廢車輛委托書
- 雙減政策與五項管理解讀
- 2025年道德與法治小學六年級下冊教學計劃(含進度表)
- 過橋資金操作流程
- 貨物學 課件1.2貨物的特性
評論
0/150
提交評論