




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、基于51單片機的簡易計算器制作一:設計任務本系統(tǒng)選用AT89C52單片機為主控機。通過擴展必要的外圍接口電路,實現(xiàn)對計算器的設計,具體設計如下:(1)由于設計的計算器要進行四則運算,為了得到較好的顯示效果,經(jīng)綜合分析后,最后采用LED 顯示數(shù)據(jù)和結(jié)果。(2)采用鍵盤輸入方式,鍵盤包括數(shù)字鍵(09)、符號鍵(+、-、×、÷)、清除鍵(onc)和等號鍵(=),故只需要16 個按鍵即可,設計中采用集成的計算鍵盤。(3)在執(zhí)行過程中,開機顯示零,等待鍵入數(shù)值,當鍵入數(shù)字,通過LED顯示出來,當鍵入+、-、*、/運算符,計算器在內(nèi)部執(zhí)行數(shù)值轉(zhuǎn)換和存儲,并等待再次鍵入數(shù)值,當再鍵入數(shù)值
2、后將顯示鍵入的數(shù)值,按等號就會在LED上輸出運算結(jié)果。(4)錯誤提示:當計算器執(zhí)行過程中有錯誤時,會在LCD上顯示相應的提示,如:當輸入的數(shù)值或計算得到的結(jié)果大于計算器的表示范圍時,計算器會在LED上提示八個0;當除數(shù)為0時,計算器會在LED上會提示八個負號。設計要求:分別對鍵盤輸入檢測模塊;LED顯示模塊;算術(shù)運算模塊;錯誤處理及提示模塊進行設計,并用Visio畫系統(tǒng)方框圖,keil與protues仿真分析其設計結(jié)果。2 硬件設計單片機最小系統(tǒng)CPU:AT89C52 顯示模塊:兩個4位7段共陰極數(shù)碼管輸入模塊:4*4矩陣鍵盤1. 電路圖電路圖說明 本電路圖采用AT89C52作為中處理器,以4
3、*4矩陣鍵盤掃描輸入,用兩個74HC573(鎖存器)控制分別控制數(shù)碼管的位于段,并以動態(tài)顯示的方式顯示鍵盤輸入結(jié)果及運算結(jié)果。為編程方便,以一個一位共陰極數(shù)碼管顯示負號。三,程序設計#include<reg52.h>#define Lint long int #define uint unsigned int #define uchar unsigned charsbit dula=P26; /鎖存器段選sbit wela=P27;sbit display_g=P20; /負號段選sbit display_w=P21; /負號位選 uchar code table=0x3f,0x0
4、6,0x5b,0x4f, /0,1,2,3 0x66,0x6d,0x7d,0x07, /4,5,6,7 0x7f,0x6f,/0x77,0x7c, /8,9 /0x39,0x5e,0x79,0x71 ; /數(shù)碼管段碼表uchar code table1=0x7f,0xbf,0xdf,0xef, 0xf7,0xfb,0xfd,0xfe ; /數(shù)碼管位碼表/*定義全局變量*/Lint store2=0; /存取按鍵值和結(jié)果的數(shù)組uchar flag_op=0; /+,-,*,/操作符標志符uchar flag_order=0; /輸入數(shù)的順序標志符uchar flag_equal=0; /等于號標
5、志符uchar key=16; /按鍵值/*延時函數(shù)*/void delay(uint x) uint i,j;for(i=x;i>0;i-)for(j=110;j>0;j-);/*顯示函數(shù)*/void display(Lint temp)uint buf1,buf2,i=0;buf1=temp/10000000;if(buf1>=10|temp<-9999999)/數(shù)據(jù)溢出,顯示錯誤00000000display_w=1;/關(guān)負號位選dula=1;P0=0x3f;dula=0;P0=0xff;wela=1;P0=0x00;wela=0;delay(1);else if
6、(temp<0&&temp>=-99999999) /顯示負數(shù)display_w=0;/開負號位選temp=-temp;dobuf2=temp%10;dula=1;P0=tablebuf2;dula=0;P0=0xff;wela=1;P0=table1i;wela=0;i+;P0=0x00;temp=temp/10;delay(1);while(temp!=0);elsedisplay_w=1;/關(guān)負號位選dodula=1;buf2=temp%10;P0=tablebuf2;dula=0;P0=0xff;wela=1;P0=table1i;wela=0;i+;P0=
7、0x00;temp=temp/10;delay(1);while(temp!=0);/*鍵盤掃描函數(shù)*/uchar KeyScan()uchar temp;P3=0xfe;/掃描第一行temp=P3;temp=temp&0xf0;if(temp!=0xf0)delay(5);P3=0xfe;temp=P3;temp=temp&0xf0;if(temp!=0xf0)switch(temp)case 0xe0:key=0;break;case 0xd0:key=1;break;case 0xb0:key=2;break;case 0x70:key=3;break;while(tem
8、p!=0xf0)/等待按鍵被釋放temp=P3;temp=temp&0xf0;P3=0xfd;/掃描第二行temp=P3;temp=temp&0xf0;if(temp!=0xf0)delay(5);P3=0xfd;temp=P3;temp=temp&0xf0;if(temp!=0xf0)switch(temp)case 0xe0:key=4;break;case 0xd0:key=5;break;case 0xb0:key=6;break;case 0x70:key=7;break;while(temp!=0xf0)/等待按鍵釋放temp=P3;temp=temp&am
9、p;0xf0;P3=0xfb;/掃描第二行temp=P3;temp=temp&0xf0;if(temp!=0xf0)delay(5);P3=0xfb;temp=P3;temp=temp&0xf0;if(temp!=0xf0)switch(temp)case 0xe0:key=8;break;case 0xd0:key=9;break;case 0xb0:key=10;flag_order=1;flag_op=1;break;/+case 0x70:key=11;flag_order=1;flag_op=2;break;/-while(temp!=0xf0)/等待按鍵釋放temp
10、=P3;temp=temp&0xf0;P3=0xf7;/掃描第四行temp=P3;temp=temp&0xf0;if(temp!=0xf0)delay(5);P3=0xf7;temp=P3;temp=temp&0xf0;if(temp!=0xf0)switch(temp)case 0xe0:key=12;flag_order=1;flag_op=3;break; /*case 0xd0:key=13;flag_order=1;flag_op=4;break; /case 0xb0:key=14;break;case 0x70:key=15;flag_equal=1;br
11、eak; /=while(temp!=0xf0) /等待按鍵釋放temp=P3;temp=temp&0xf0;return key;/*運算函數(shù)*/void YunSuan()if(flag_equal=1)switch(flag_op)case 1:/加法運算 store0=store0+store1; flag_op=0; flag_order=0;store1=0;/輸入的第二個數(shù)清零 break;case 2:/減法運算store0=store0-store1;flag_op=0;flag_order=0;store1=0;/輸入的第二個數(shù)清零 break;case 3: /乘
12、法運算store0=store0*store1; flag_op=0; flag_order=0;store1=0;/輸入的第二個數(shù)清零 break;case 4:/除法運算 store0=store0/store1; /計算結(jié)果,存入第一個數(shù) flag_op=0;/操作符清零flag_order=0;/輸入順序標識符清零,顯示結(jié)果store1=0;/輸入的第二個數(shù)清零 break; flag_equal=0; /*主函數(shù)*/void main()while(1)display_g=1;/開負號段選key=KeyScan();/鍵盤掃描if(key>=0&&key<=9)/如果key在0到9之間,證明鍵盤按下的是數(shù)值if(storeflag_order<10000000)st
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 加油站污水處理合同樣本
- 醫(yī)生解聘合同標準文本
- 住宅送車位合同標準文本
- 出國勞務采購合同范例
- 光伏回購合同樣本
- 辦酒席費用合同標準文本
- 分包居間合同標準文本
- 信用擔保借款合同樣本你
- 前臺桌子合同標準文本
- 勞務合同樣本 退休人員
- 諾如病毒感染診斷和治療
- 卡壓不銹鋼管的施工組織方案
- 2022山東大學出版社校園招聘16人上岸筆試歷年難、易錯點考題附帶參考答案與詳解
- 10kV環(huán)網(wǎng)柜技術(shù)規(guī)范書
- 試劑售后承諾書
- 小學校本課程-生活中的陌生人教學課件設計
- 榆陽區(qū)可可蓋煤礦礦山地質(zhì)環(huán)境保護與土地復墾方案
- 滬教版三年級下冊數(shù)學第二單元 用兩位數(shù)乘除 測試卷及參考答案【培優(yōu)a卷】
- 中小型病理技術(shù)團隊崗位設置及績效分配現(xiàn)狀分析
- 防護棚驗收表
- 磁粉檢測試題庫
評論
0/150
提交評論