版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課程設(shè)計(jì)題目名稱簡(jiǎn)易計(jì)算器設(shè)計(jì)課程名稱單片機(jī)原理及應(yīng)用學(xué)生姓名班級(jí)學(xué)號(hào)2018年6月20日日錄一設(shè)計(jì)目的2二總體設(shè)計(jì)及功能介紹2三硬件仿真圖3四主程序流程圖4五程序源代碼4六課程設(shè)計(jì)體會(huì)17一設(shè)計(jì)目的本設(shè)計(jì)是基于51系列單片機(jī)來(lái)進(jìn)行的簡(jiǎn)單數(shù)字計(jì)算器設(shè)計(jì),可以完成計(jì)算器的鍵盤輸入,進(jìn)行加、減、乘、除六位整數(shù)數(shù)范圍內(nèi)的基本四則運(yùn)算,并在LED上顯示相應(yīng)的結(jié)果。軟件方面使用C語(yǔ)言編程,并用PROTUE防真。二總體設(shè)計(jì)及功能介紹根據(jù)功能和指標(biāo)要求,本系統(tǒng)選用MCS-5K列單片機(jī)為主控機(jī),實(shí)現(xiàn)對(duì)計(jì)算器的設(shè)計(jì)。具體設(shè)計(jì)及功能如下:由于要設(shè)計(jì)的是簡(jiǎn)單的計(jì)算器,可以進(jìn)行四則運(yùn)算,為了得到較好的顯示效果,采用L
2、ED顯示數(shù)據(jù)和結(jié)果;另外鍵盤包括數(shù)字鍵(09)、符號(hào)鍵(+、-、+)、清除鍵和等號(hào)鍵,故只需要16個(gè)按鍵即可,設(shè)計(jì)中采用集成的計(jì)算鍵盤;執(zhí)行過(guò)程:開(kāi)機(jī)顯示零,等待鍵入數(shù)值,當(dāng)鍵入數(shù)字,通過(guò)LED顯示出來(lái),當(dāng)鍵入+、-、*、/運(yùn)算符,計(jì)算器在內(nèi)部執(zhí)行數(shù)值轉(zhuǎn)換和存儲(chǔ),并等待再次鍵入數(shù)值,當(dāng)再鍵入數(shù)值后將顯示鍵入的數(shù)值,按等號(hào)就會(huì)在LED上輸出運(yùn)算結(jié)果。三硬件仿真圖硬件部分比較簡(jiǎn)單,當(dāng)鍵盤按鍵按下時(shí)它的那一行、那一列的端口為低電平。因此,只要掃描行、列端口是否都為低電平就可以確定是哪個(gè)鍵被按下。四主程序流程圖朝閽t曼藪lE0顯a:jT"""Siff1讀取疑碼_JTY_F
3、、r臬否阿拉伯?dāng)?shù)字;-f一,Y_J_,處理保存操作符'處理1熄滅數(shù)碼管I_/|_)一、I顯示|標(biāo)記操作數(shù)1結(jié)束111"-11 1-4A是否操作符:.)、¥是洋號(hào)»,»N1計(jì)算結(jié)果并顯示1|1J£I等匍N,C俱接下11,二N攵Y叱、1/矍舌0V唾一、A-程序的主要思想是:將按鍵抽象為字符,然后就是對(duì)字符的處理。將操作數(shù)分別轉(zhuǎn)化為字符串存儲(chǔ),操作符存儲(chǔ)為字符形式。然后調(diào)用compute()函數(shù)進(jìn)行計(jì)算并返回結(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í)函數(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)化為字符并作為輸出'$','#'分別表示清零鍵和沒(méi)有鍵按下*;ucharkeyscan()(ucharskey;/*掃描鍵盤第1行*;P1=0xfe;while(P1&0xf0)!=0xf0
6、)(delay(3);while(P1&0xf0)!=0xf0)(switch(P1)/*按鍵值標(biāo)記變量*/*有按鍵按下*/*去抖動(dòng)延時(shí)*/*仍有鍵按下*/*識(shí)別按鍵并賦值*/case0xee:skey='7'break;case0xde:skey='8'break;case0xbe:skey='9'break;case0x7e:skey='/'break;default:skey='#'*/)while(P1&0xf0)!=0xf0)/*等待按鍵松開(kāi);)/*掃描鍵盤第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鍵盤輸入字符*/*運(yùn)算符*/*goto語(yǔ)句定位標(biāo)簽*/*初始化*/*初始化*/(ckey=keyscan();/*讀取鍵盤*/if(ckey!='#')/*isdigit函數(shù),字符是阿拉伯?dāng)?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)到開(kāi)始*/if(ckey='$')gotoinit;else(buf(value);disp();elseif(ckey='$')gotoinit;disp();/*運(yùn)算函數(shù)輸入:操作數(shù)和操作符輸出:計(jì)算結(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;/*更新顯示緩存輸入:無(wú)符號(hào)整數(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;六課程設(shè)計(jì)體會(huì)接到這個(gè)課題以后,我先是學(xué)習(xí)了PROTEU軟件的使用,按照題目所要求來(lái)進(jìn)行分析,設(shè)計(jì),連接電路圖,調(diào)試,最終完成計(jì)算器的仿真。接到題目后,我先是分析了題目中所涉及到的知識(shí)以及器件,然后按照分析,到圖書(shū)館和互聯(lián)網(wǎng)上搜索了相關(guān)的內(nèi)容,按照自己的構(gòu)想和圖書(shū)資料的提示,我初步設(shè)計(jì)了計(jì)算器的原理結(jié)構(gòu),然后進(jìn)行反復(fù)驗(yàn)證實(shí)驗(yàn),完善了設(shè)計(jì),然后通過(guò)學(xué)習(xí)PROTEUS件,讓我很輕松的就掌握了如何在軟件中建立原件,連線,并進(jìn)行編程,調(diào)試,仿真等工作。軟件的強(qiáng)大功能使得在連接電路圖時(shí)很順利,程序編譯階段,通過(guò)提示的錯(cuò)誤,我也進(jìn)行了修改,聽(tīng)取同學(xué)的建議,最終無(wú)錯(cuò)誤,并對(duì)所設(shè)計(jì)的計(jì)算器電路進(jìn)行了仿真。最終順利的實(shí)現(xiàn)了任務(wù)要求的所有功能,并且電路設(shè)計(jì)簡(jiǎn)單易讀,構(gòu)造巧妙,計(jì)算速度快。本次課程設(shè)計(jì)中,另我最難忘的是編程環(huán)節(jié),真的是很難,開(kāi)始的時(shí)候感覺(jué)自己啥也不會(huì),然后決定重新學(xué)習(xí)課本,但是編程不像課本習(xí)題那樣簡(jiǎn)單的幾行來(lái)實(shí)現(xiàn)簡(jiǎn)單的功能,本次任務(wù)是實(shí)現(xiàn)一個(gè)簡(jiǎn)易功能的計(jì)算器,雖然只有加減乘除四則運(yùn)算,但是編程過(guò)程中卻用到了
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- JJF 2162-2024縫隙、面差測(cè)量?jī)x校準(zhǔn)規(guī)范
- 2024年商業(yè)用地租賃權(quán)轉(zhuǎn)授權(quán)合同
- 2024年學(xué)校服裝供應(yīng)合同
- 2024年度工程變更與居間服務(wù)合同
- 我們身體課件教學(xué)課件
- 2024北京市車指標(biāo)租賃期間保險(xiǎn)服務(wù)合同
- 2024年大型活動(dòng)策劃與執(zhí)行服務(wù)合同
- 2024的保安服務(wù)委托合同范文
- 2024年度衛(wèi)星通信服務(wù)與租賃合同
- 2024年建筑工程水電施工合同
- GB/T 42455.2-2024智慧城市建筑及居住區(qū)第2部分:智慧社區(qū)評(píng)價(jià)
- 2024年認(rèn)證行業(yè)法律法規(guī)及認(rèn)證基礎(chǔ)知識(shí)
- YYT 0653-2017 血液分析儀行業(yè)標(biāo)準(zhǔn)
- 刑事受害人授權(quán)委托書(shū)范本
- 《文明上網(wǎng)健康成長(zhǎng)》的主題班會(huì)
- 框架結(jié)構(gòu)冬季施工方案
- 畢業(yè)設(shè)計(jì)(論文)汽車照明系統(tǒng)常見(jiàn)故障診斷與排除
- 人工智能技術(shù)在電氣自動(dòng)化控制中的應(yīng)用分析
- 醫(yī)療技術(shù)臨床應(yīng)用及新技術(shù)新項(xiàng)目管理制度考核試題及答案
- 裝配式擋土墻施工方案(完整版)
- 防炫(AG工藝)玻璃屏項(xiàng)目可行性研究報(bào)告模版
評(píng)論
0/150
提交評(píng)論