版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、廣廉海譯大學(xué)微機(jī)原理與單片機(jī)課程設(shè)計(jì)課程設(shè)計(jì)報(bào)告基于51單片機(jī)的簡易計(jì)算器設(shè)計(jì)學(xué)生姓名卓國煥專業(yè)電子信息工程所在班級1141學(xué)號201411611136指導(dǎo)老師歐觸靈日期2016.10.31 2016.11.411單片機(jī)的出現(xiàn)是計(jì)算機(jī)制造技術(shù)高速發(fā)展的產(chǎn)物,它是嵌入式控制系統(tǒng)的核心,如今,它已廣泛的應(yīng)用到我們生活的各個(gè)領(lǐng)域,電 子、科技、通信、汽車、工業(yè)等。本設(shè)計(jì)是基于 51系列單片機(jī)來進(jìn)行 的簡單數(shù)字計(jì)算器設(shè)計(jì),可以完成計(jì)算器的鍵盤輸入,進(jìn)行加、減、 乘、除六位整數(shù)數(shù)范圍內(nèi)的基本四則運(yùn)算,并在 LEDh顯示相應(yīng)的結(jié) 果。軟件方面使用C語言編程,并用PROTUE仿真。
2、二、總體設(shè)計(jì)及功能介紹根據(jù)功能和指標(biāo)要求,本系統(tǒng)選用 MCS-5系列單片機(jī)為主控機(jī), 實(shí)現(xiàn)對計(jì)算器的設(shè)計(jì)。具體設(shè)計(jì)及功能如下:(1)由于要設(shè)計(jì)的是簡單的計(jì)算器,可以進(jìn)行四則運(yùn)算,為了得到較好的顯示效果,采用LED顯示數(shù)據(jù)和結(jié)果。(2)另外鍵盤包括數(shù)字鍵(09)、符號鍵(+、-、X、清除鍵和等號鍵,故只需要16個(gè)按鍵即可,設(shè)計(jì)中采用集成的計(jì)算 鍵盤。(3)執(zhí)行過程:開機(jī)顯示零,等待鍵入數(shù)值,當(dāng)鍵入數(shù)字,通過LEDS示出來,當(dāng)鍵入+、-、*、/運(yùn)算符,計(jì)算器在內(nèi)部執(zhí)行數(shù)值 轉(zhuǎn)換和存儲,并等待再次鍵入數(shù)值,當(dāng)再鍵入數(shù)值后將顯示鍵入的數(shù) 值,按等號就會在LEDh輸出運(yùn)算結(jié)果。(4)錯誤提示:當(dāng)計(jì)算器執(zhí)
3、行過程中有錯誤時(shí),會在 LED上顯示相應(yīng)的提示,如:當(dāng)輸入的數(shù)值或計(jì)算得到的結(jié)果大于計(jì)算器的表示 范圍時(shí),計(jì)算器會在LEDh顯示“ CUO” ,提示溢出。三、系統(tǒng)模塊組成框圖:輸入模塊51單片機(jī)運(yùn)算模塊LED顯示模二、硬件設(shè)計(jì)(一)、總體硬件設(shè)計(jì)本設(shè)計(jì)選用AT89C51單片機(jī)為主控單元。顯示部分:采用LED動 態(tài)顯示。按鍵部分:采用4*4集成計(jì)算鍵盤;總電路圖:10inLT_:ClCJd詔HC備Al fits?BbrTTflNCAP CAPtLfC CEY51AL KEmDMWlEALC LED-BLUEFS rasRgw SDUNCfA SPEAKERr-丄早PWJ31 M UVIIpuwi
4、a M iMHbPUEUlE PUVUHHIMkl令 BQSB.000B”H 00 sn0 0HPIETtJrmUF7aHPIMTThJPIJPIJ PIJ hrrurj-vra-1CTpasC=b*HEpaim(1) 4X4集成計(jì)算鍵盤PIOPUPI .2P13u 幟:“HH 丁7S9456123C円0FT?P4P1.5集成計(jì)算鍵盤本質(zhì)上是4X 4矩陣鍵盤,矩陣鍵盤采用四條I/O線作為行線,四條I/O線作為列線組成鍵盤,在行線和列線的每個(gè)交叉點(diǎn)上設(shè)置一個(gè)按鍵。這樣鍵盤上按鍵的個(gè)數(shù)就為4X4個(gè)。這種行列式鍵盤結(jié)構(gòu)能有效地提高單片機(jī)系統(tǒng)中I/O 口的利用率。矩陣鍵盤的工作原理:計(jì)算器的鍵盤布局如
5、圖2所示:一般有16個(gè)鍵組成,在單片機(jī)中正好可以用一個(gè)P口實(shí)現(xiàn)16個(gè)按鍵功能,這種形式在單片機(jī)系統(tǒng)中也最常用。矩陣鍵盤內(nèi)部電路圖如圖所示:11廠f 一1 at 11*U1O二 Q1fU1JaiBl(三)、LED顯示模塊如圖RP133PDs37P0 243SP0 3535P0.4634PiX石733PO.Ce-32、P0 7gPOJO3口霍強(qiáng)3SSLRESPAtK-eP1 1/T2EXP3.1ZrXDP1.2P3.2jNTOF1.3P3.3;IHT1PI .4P3.4/TOP1.5P3.5/T1P1.0P3.eAiVRP1.7P3.7/ATSCCfi2單片機(jī)最小系統(tǒng)C11nFJI1&XICRYS
6、TALISXTAL1XTAL2InFu辰C3-| gRSTluF民 1lOk20PSEN復(fù)位時(shí)單片機(jī)的初始化操作,只要給 RS引腳加上兩個(gè)機(jī)器周期以上的高電平信號,就可以使STC89C5單片機(jī)復(fù)位。本次采用的是12M晶振,按鈕復(fù)位電路。三、軟件設(shè)計(jì)現(xiàn)實(shí)生活中人們熟知的計(jì)算器,其功能主要如下:1、鍵盤輸入;2、數(shù)值顯示;3、加、減、乘、除四則運(yùn)算;針對上述功能,計(jì)算器軟件程序要完成以下程序的設(shè)計(jì):1、鍵盤輸入檢測程序2、LED顯示程序3、算術(shù)運(yùn)算程序1、程序流程圖系統(tǒng)總流程圖算術(shù)運(yùn)算程序流程圖2、程序清單#in clude#in clude#defi ne uchar un sig ned ch
7、ar#defi ne uint un sig ned int#defi ne ulong un sig ned longsbit wela=卩2人7; /定義端口sbit dula=卩2人6;31long in 1,i n2,out,x; int cn t,i,flag; ucharcodenum=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0 x79,0x71; /LED void delay( uint xms) /顯示字模,共陰 延時(shí)函數(shù)uint j;for(i=xms;i0;i-) for(
8、j=114;j0;j-);void dis play()uchar w1,w2,w3,w4,w5,w6,f=0; long y;if(x=0) /顯示六位計(jì)時(shí)數(shù)/顯示函數(shù)聲明if(x=1e6)P 0=0xff; wela=1;P 0=0xf7; wela=0; dula=1;P 0=nu m12; dula=0;dela y(2);P0=0xf; wela=1;P0=0xef; wela=0; dula=1;P0=0x3e; dula=0; delay(2);P0=0xff; wela=1;P0=0xdf; wela=0; dula=1;P0=nu m0; dula=0;delay(2);re
9、turn;w仁x%10;w2=x/10%10;w3=x/100%10;w4=x/1000%10;w5=x/10000%10;w6=x/100000%10; if(f=1|w6)f=1;P 0=0xff;wela=1;P 0=0xfe;wela=0;dula=1;P 0=nu mw6;dula=0;dela y(2);if(f=1|w5)f=1;P O=Oxff; wela=1;P 0=0xfd; wela=0; dula=1;P 0=nu mw5; dula=0;dela y(2);if(f=1|w4)f=1;P 0=0xff; wela=1;P 0=0xfb; wela=0; dula=1;
10、P 0=nu mw4; dula=0;dela y(2);if(f=1|w3)f=1;P O=Oxff; wela=1;P 0=0xf7; wela=O; dula=1;P 0=nu mw3; dula=0;dela y(2);if(f=1|w2)f=1;P 0=0xff; wela=1;P 0=0xef; wela=0; dula=1;P 0=nu mw2; dula=0;dela y(2);PO=Oxff; wela=1; PO=Oxdf; wela=O; dula=1;P O=nu mw1; dula=O;dela y(2); elsey=labs(x);if(y=1e5)P 0=0xf
11、f; wela=1;PO=Oxf7; wela=O; dula=1;P O=nu m12; dula=O;dela y(2);PO=Oxf; wela=1; PO=Oxef; wela=O; dula=1;PO=Ox3e; dula=O; delay(2);PO=Oxff; wela=1; PO=Oxdf; wela=O; dula=1; PO=nu mO; dula=O; dela y(2);return;w仁y%10;w2=y/10%10;w3=y/100%10;w4=y/1000%10;w5=y/10000%10; if(f=1|w5)if(f=O)PO=Oxff; wela=1;P O
12、=Oxfe; wela=O; dula=1;PO=Ox4O; dula=O; delay(2);f=1;P O=Oxff; wela=1;P O=Oxfd; wela=O; dula=1;P O=nu mw5; dula=O;dela y(2);if(f=1|w4)if(f=O)P O=Oxff; wela=1;P O=Oxfd; wela=O; dula=1;P0=0x40; dula=0; delay(2);f=1;P O=Oxff; wela=1;P O=Oxfb; wela=O; dula=1;P O=nu mw4; dula=O;dela y(2);if(f=1|w3)if(f=O)
13、P O=Oxff; wela=1;P O=Oxfb; wela=O; dula=1;P0=0x40; dula=O; delay(2);f=1; P O=Oxff; wela=1;P 0=0xf7; wela=O; dula=1;P 0=nu mw3; dula=0;dela y(2);if(f=1|w2)if(f=0)P 0=0xff; wela=1;P 0=0xf7; wela=0; dula=1;P0=0x40; dula=0; delay(2);f=1;PO=Oxff; wela=1;PO=Oxef; wela=O; dula=1;PO=nu mw2; dula=O;dela y(2)
14、;if(f=0)P 0=0xff; wela=1;P 0=0xef; wela=0; dula=1;P 0=0x40; dula=0; delay(2);P0=0xff; wela=1;P0=0xdf; wela=0; dula=1;P0=nu mw1; dula=0; delay(2);/鍵盤掃描函數(shù)void keysca n()uchar temp;P 1=0xfe; temp=P1; temp=te mp&0 xf0;if(te mp !=0xf0)delay(8); temp=P1;temp=te mp&0xf0; if(tem p!=0xf0) temp=P1; switch(te
15、mp) case 0xee: if(cnt6) cnt+; if(flag=0) in 1=i n1*10+7;x=in1; elsein 2=i n2*10+7;x=in2; break; case 0xde: if(cnt6)cnt+;if(flag=0) in 1=i n1*10+8;x=in1; elsein 2=i n2*10+8;x=i n2; break;case 0xbe: if(cnt6)cnt+;if(flag=0) in 1=i n1*10+9;x=in1; elsein 2=i n2*10+9;x=in2; break;case 0x7e: if(cnt!=0&flag
16、=0)cnt=O; flag=4;break;while(tem p!=OxfO)temp=P1; temp=te mp&OxfO;P1=Oxfd;temp=P1;temp=te mp&O xfO;if(te mp !=OxfO)delay(8);temp=P1;temp=te mp&OxfO;if(tem p!=OxfO)temp=P1;switch(te mp)case Oxed: if(cnt6)cnt+;if(flag=O)in 1=i n1*1O+4;x=in1; elsein 2=i n2*10+4;x=in2; break;case Oxdd: if(cnt6)cnt+;if(f
17、lag=0) in 1=i n1*10+5;x=in1; elsein 2=i n2*10+5; x=i n2;break;case Oxbd: if(cnt6)cnt+;if(flag=0) in 1=i n1*10+6;x=in1; elsein 2=i n2*10+6; x=in2; break;case 0x7d: if(cnt!=0&flag=O) cnt=0;flag=3;break;while(tem p!=0xf0)temp=P1;temp=te mp&0xf0;P1=0xfb;temp=P1;temp=te mp&0 xf0;if(te mp !=0xf0)delay(8);
18、 /消除抖動temp=P1;temp=te mp&0xf0;if(tem p!=0xf0)temp=P1;switch(te mp)case 0xeb:if(cnt6)cnt+;if(flag=0)in 1=i n1*10+1;x=in1; elsein2=in 2*10+1;x=in2;break;case 0xdb:if(cnt6)cnt+;if(flag=0)in 1=i n1*10+2;x=in1;elsein2=in 2*10+2; x=i n2;break;case 0xbb:if(cnt6)cnt+;if(flag=0)in 1=i n1*10+3;x=in1; elsein 2
19、=i n2*10+3; x=in2; break; case 0x7 b: if(cnt!=0&flag=0) cnt=0; flag=2; break; while(tem p!=0xf0)temp=P1; temp=te mp&0 xf0;P1=0xf7; temp=P1; temp=te mp&0xf0; if(te mp !=0xf0)證明有鍵按下,if語句是為了讓鍵盤松開delay(8); temp=P1; temp=te mp&0xf0; if(te mp !=0xf0)/temp=P1; switch(te mp) case 0xe7: cnt=0; in 1=0;in 2=0;
20、out=0; flag=0; x=0;break; case 0xd7: if(cnt6)cnt+;if(flag=0) in 1=i n1*10+0;x=in1; elsein 2=i n2*10+0;x=in2; break;case 0xb7:/如果得到符號位switch(flag)case 1:/out= in1+in2; break;case 2:/out= in 1-i n2; break;case 3:out=i n1*in2;/break;case 4:if(i n2)out=i n1/in2; break;x=out;in 1=0;in 2=0;cnt=0;flag=0;break;case 0x77:/除if(cnt!=0&flag=0) cnt=0;flag=1;break;while(tem p!=0xf0) /等待按鍵松開temp=P1; temp=te mp&OxfO;void main (),while(1) keysca n(); dis play();/主函數(shù)四、設(shè)計(jì)總結(jié)1、軟件調(diào)試在軟件調(diào)試的過程中,一開始沒有做數(shù)值溢出方面的控制, 導(dǎo)致LE顯示的輸入數(shù)據(jù)或計(jì)算結(jié)果與實(shí)際不相符。通過多次調(diào)試,軟件 能夠正常運(yùn)行,基本實(shí)現(xiàn)與其功能,通過矩陣鍵盤輸入第一個(gè)數(shù)據(jù)后, 按下所需運(yùn)算符號后,再次通過矩陣鍵盤輸入第二個(gè)數(shù)據(jù), 最后按下
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度高校教師高級職稱聘用協(xié)議5篇
- 2025年二手車買賣數(shù)據(jù)安全及隱私保護(hù)協(xié)議3篇
- 2025年度二零二五年度體育用品店租賃及銷售合同范本4篇
- 2025版美容美發(fā)店員工福利待遇與晉升管理合同4篇
- 對公金融產(chǎn)品的多場景創(chuàng)新研究
- 2025年度校園車位租賃及管理服務(wù)合同樣本3篇
- 2024水電工程設(shè)計(jì)與施工一體化合同范本3篇
- 2025年度專業(yè)廚房設(shè)備維修保養(yǎng)服務(wù)合同11篇
- 2025年度鋁扣板裝飾工程材料供應(yīng)合同范本3篇
- 個(gè)人借款用于二零二四年度創(chuàng)業(yè)投資合同3篇
- 工會換屆公示文件模板
- 江蘇省南京市協(xié)同體七校2024-2025學(xué)年高三上學(xué)期期中聯(lián)合考試英語試題答案
- 青島版二年級下冊三位數(shù)加減三位數(shù)豎式計(jì)算題200道及答案
- GB/T 12723-2024單位產(chǎn)品能源消耗限額編制通則
- GB/T 16288-2024塑料制品的標(biāo)志
- 麻風(fēng)病防治知識課件
- 干部職級晉升積分制管理辦法
- TSG ZF003-2011《爆破片裝置安全技術(shù)監(jiān)察規(guī)程》
- 2024年代理記賬工作總結(jié)6篇
- 電氣工程預(yù)算實(shí)例:清單與計(jì)價(jià)樣本
- VOC廢氣治理工程中電化學(xué)氧化技術(shù)的研究與應(yīng)用
評論
0/150
提交評論