![單片機簡易計算器課程設計_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/29/504c0598-b9ca-459a-87cb-47647b7773a8/504c0598-b9ca-459a-87cb-47647b7773a81.gif)
![單片機簡易計算器課程設計_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/29/504c0598-b9ca-459a-87cb-47647b7773a8/504c0598-b9ca-459a-87cb-47647b7773a82.gif)
![單片機簡易計算器課程設計_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/29/504c0598-b9ca-459a-87cb-47647b7773a8/504c0598-b9ca-459a-87cb-47647b7773a83.gif)
![單片機簡易計算器課程設計_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/29/504c0598-b9ca-459a-87cb-47647b7773a8/504c0598-b9ca-459a-87cb-47647b7773a84.gif)
![單片機簡易計算器課程設計_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/29/504c0598-b9ca-459a-87cb-47647b7773a8/504c0598-b9ca-459a-87cb-47647b7773a85.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、課程設計題目名稱簡易計算器設計課程名稱單片機原理及應用學生姓名班級學號2018年6月20日日錄一設計目的2二總體設計及功能介紹2三硬件仿真圖3四主程序流程圖4五程序源代碼4六課程設計體會17一設計目的本設計是基于51系列單片機來進行的簡單數(shù)字計算器設計,可以完成計算器的鍵盤輸入,進行加、減、乘、除六位整數(shù)數(shù)范圍內(nèi)的基本四則運算,并在LED上顯示相應的結(jié)果。軟件方面使用C語言編程,并用PROTUE防真。二總體設計及功能介紹根據(jù)功能和指標要求,本系統(tǒng)選用MCS-5K列單片機為主控機,實現(xiàn)對計算器的設計。具體設計及功能如下:由于要設計的是簡單的計算器,可以進行四則運算,為了得到較好的顯示效果,采用L
2、ED顯示數(shù)據(jù)和結(jié)果;另外鍵盤包括數(shù)字鍵(09)、符號鍵(+、-、+)、清除鍵和等號鍵,故只需要16個按鍵即可,設計中采用集成的計算鍵盤;執(zhí)行過程:開機顯示零,等待鍵入數(shù)值,當鍵入數(shù)字,通過LED顯示出來,當鍵入+、-、*、/運算符,計算器在內(nèi)部執(zhí)行數(shù)值轉(zhuǎn)換和存儲,并等待再次鍵入數(shù)值,當再鍵入數(shù)值后將顯示鍵入的數(shù)值,按等號就會在LED上輸出運算結(jié)果。三硬件仿真圖硬件部分比較簡單,當鍵盤按鍵按下時它的那一行、那一列的端口為低電平。因此,只要掃描行、列端口是否都為低電平就可以確定是哪個鍵被按下。四主程序流程圖朝閽t曼藪lE0顯a:jT"""Siff1讀取疑碼_JTY_F
3、、r臬否阿拉伯數(shù)字;-f一,Y_J_,處理保存操作符'處理1熄滅數(shù)碼管I_/|_)一、I顯示|標記操作數(shù)1結(jié)束111"-11 1-4A是否操作符:.)、¥是洋號»,»N1計算結(jié)果并顯示1|1J£I等匍N,C俱接下11,二N攵Y叱、1/矍舌0V唾一、A-程序的主要思想是:將按鍵抽象為字符,然后就是對字符的處理。將操作數(shù)分別轉(zhuǎn)化為字符串存儲,操作符存儲為字符形式。然后調(diào)用compute()函數(shù)進行計算并返回結(jié)果。具體程序及看注釋還有流程圖五程序源代碼#include<reg51.h>#include<intrins.h&g
4、t;#include<ctype.h>/*isdigit()函數(shù)*/#include<stdlib.h>/*atoi()函數(shù)*/#defineucharunsignedchar#defineuintunsignedintucharoperand19,operand29;/*操作數(shù)*/ucharoperator;/*操作符*/voiddelay(uint);ucharkeyscan();voiddisp(void);voidbuf(uintvalue);uintcompute(uintva1,uintva2,ucharoptor);ucharcodetable=0xc0,
5、0xf9,0xa4,0xb0,0x99,voiddelay(uintz)uintx,y;uchardbuf8=/*延時函數(shù)0x92,0x82,0xf8,0x80,0x90,0xff;10,10,10,10,10,10,10,10);*/*字符碼表/*顯示緩存*/*/for(x=z;x>0;x-)for(y=110;y>0;y-);)/*鍵盤掃描程序?qū)存I轉(zhuǎn)化為字符并作為輸出'$','#'分別表示清零鍵和沒有鍵按下*;ucharkeyscan()(ucharskey;/*掃描鍵盤第1行*;P1=0xfe;while(P1&0xf0)!=0xf0
6、)(delay(3);while(P1&0xf0)!=0xf0)(switch(P1)/*按鍵值標記變量*/*有按鍵按下*/*去抖動延時*/*仍有鍵按下*/*識別按鍵并賦值*/case0xee:skey='7'break;case0xde:skey='8'break;case0xbe:skey='9'break;case0x7e:skey='/'break;default:skey='#'*/)while(P1&0xf0)!=0xf0)/*等待按鍵松開;)/*掃描鍵盤第2行*/P1=0xfd;whi
7、le(P1&0xf0)!=0xf0)delay(3);while(P1&0xf0)!=0xf0)switch(P1)case0xed:skey='4'breakcase0xdd:skey='5'breakcase0xbd:skey='6'breakcase0x7d:skey='*'breakdefault:skey='#')while(P1&0xf0)!=0xf0);)/*掃描鍵盤第3行*/P1=0xfb;while(P1&0xf0)!=0xf0)delay(3);while(P1&
8、amp;0xf0)!=0xf0)(switch(P1)(case0xeb:skey='1'breakcase0xdb:skey='2'breakcase0xbb:skey='3'breakcase0x7b:skey='-'breakdefault:skey='#'while(P1&0xf0)!=0xf0);/*掃描鍵盤第4行*/P1=0xf7;while(P1&0xf0)!=0xf0)(delay(3);while(P1&0xf0)!=0xf0)(switch(P1)(case0xe7:sk
9、ey='$'breakcase0xd7:skey='0'breakcase0xb7:skey='='breakcase0x77:skey='+'breakdefault:skey='#'while(P1&0xf0)!=0xf0);returnskey;voidmain()(uintvaluel,value2,value;ucharckey,cutl=0,cut2=0;ucharoperator;uchari,bool=0;init:buf(0);disp();value=0;cut1=cut2=0;bool
10、=0;for(i=0;i<9;i+)(operand1i='0'operand2i='0')/*數(shù)值1,數(shù)彳12,結(jié)果*/*ckey鍵盤輸入字符*/*運算符*/*goto語句定位標簽*/*初始化*/*初始化*/(ckey=keyscan();/*讀取鍵盤*/if(ckey!='#')/*isdigit函數(shù),字符是阿拉伯數(shù)字返回非0值,否則返回0*/if(isdigit(ckey)switch(bool)case0:operand1cut1=ckey;operand1cut1+1='0'value1=atoi(operand1
11、);/*atoi函數(shù),將字符串轉(zhuǎn)化為,int整數(shù)*/cut1+;buf(value1);disp();break;case1:operand2cut2=ckey;operand2cut2+1='0'value2=atoi(operand2);cut2+;buf(value2);disp();break;default:break;elseif(ckey='+'|ckey='-'|ckey='*'|ckey='/')bool=1;operator=ckey;buf(0);dbuf7=10;disp();elseif(
12、ckey='=')value=compute(value1,value2,operator);buf(value);disp();(ckey=keyscan();/*如果有清零鍵按下跳轉(zhuǎn)到開始*/if(ckey='$')gotoinit;else(buf(value);disp();elseif(ckey='$')gotoinit;disp();/*運算函數(shù)輸入:操作數(shù)和操作符輸出:計算結(jié)果*/uintcompute(uintva1,uintva2,ucharoptor)(uintvalue;switch(optor)(breakbreak:br
13、eakbreak;case'+':value=va1+va2;case'-':value=va1-va2;case'*':value=va1*va2;case'/':value=va1/va2;default:break;returnvalue;/*更新顯示緩存輸入:無符號整數(shù)輸出:將輸入送入顯示緩存*voidbuf(uintval)(uchari;if(val=0)(dbuf7=0;i=6;elsefor(i=7;val>0;i-)(dbufi=val%10;val/=10;for(;i>0;i-)dbufi=10;
14、,*顯示函數(shù)*/voiddisp(void)(ucharbsel,n;bsel=0x01;for(n=0;n<8;n+)(P2=bsel;P0=tabledbufn;bsel=_crol_(bsel,1);delay(3);P0=0xff;六課程設計體會接到這個課題以后,我先是學習了PROTEU軟件的使用,按照題目所要求來進行分析,設計,連接電路圖,調(diào)試,最終完成計算器的仿真。接到題目后,我先是分析了題目中所涉及到的知識以及器件,然后按照分析,到圖書館和互聯(lián)網(wǎng)上搜索了相關(guān)的內(nèi)容,按照自己的構(gòu)想和圖書資料的提示,我初步設計了計算器的原理結(jié)構(gòu),然后進行反復驗證實驗,完善了設計,然后通過學習PROTEUS件,讓我很輕松的就掌握了如何在軟件中建立原件,連線,并進行編程,調(diào)試,仿真等工作。軟件的強大功能使得在連接電路圖時很順利,程序編譯階段,通過提示的錯誤,我也進行了修改,聽取同學的建議,最終無錯誤,并對所設計的計算器電路進行了仿真。最終順利的實現(xiàn)了任務要求的所有功能,并且電路設計簡單易讀,構(gòu)造巧妙,計算速度快。本次課程設計中,另我最難忘的是編程環(huán)節(jié),真的是很難,開始的時候感覺自己啥也不會,然后決定重新學習課本,但是編程不像課本習題那樣簡單的幾行來實現(xiàn)簡單的功能,本次任務是實現(xiàn)一個簡易功能的計算器,雖然只有加減乘除四則運算,但是編程過程中卻用到了
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年重油催化裂化催化劑項目發(fā)展計劃
- 2025年度企業(yè)并購重組咨詢顧問服務協(xié)議-@-1
- 2025年鈷粉系列項目發(fā)展計劃
- 家長參與小班教育的倡導計劃
- 實施有效反饋的工作方法計劃
- 文化演出活動的安保工作總結(jié)計劃
- 2025年高純四氧化三錳項目發(fā)展計劃
- 七年級下冊《相交線》課件與練習
- 汽車尾氣凈化催化轉(zhuǎn)化器安裝要求
- 2025年激光測距儀、測向儀項目合作計劃書
- 2022年RDA5807m+IIC收音機51單片機C程序上課講義
- 雅馬哈貼片機_修機_調(diào)機的經(jīng)驗之談1
- 全自動咖啡機基本結(jié)構(gòu)及原理教程課件
- 正負零以下基礎施工方案(44頁)
- 簡愛人物形象分析(課堂PPT)
- 義務教育《勞動》課程標準(2022年版)
- 2018年黑龍江統(tǒng)招專升本公共英語真題
- (完整版)小學生必背古詩300首帶拼音版本
- 大學物理光學答案
- 老撾10大經(jīng)濟特區(qū)
- 通用標準快裝接頭尺寸表
評論
0/150
提交評論