![單片機(jī)課程設(shè)計簡易計算器設(shè)計_第1頁](http://file4.renrendoc.com/view11/M00/01/15/wKhkGWWjZlmAZgahAAB8jGG1YHA192.jpg)
![單片機(jī)課程設(shè)計簡易計算器設(shè)計_第2頁](http://file4.renrendoc.com/view11/M00/01/15/wKhkGWWjZlmAZgahAAB8jGG1YHA1922.jpg)
![單片機(jī)課程設(shè)計簡易計算器設(shè)計_第3頁](http://file4.renrendoc.com/view11/M00/01/15/wKhkGWWjZlmAZgahAAB8jGG1YHA1923.jpg)
![單片機(jī)課程設(shè)計簡易計算器設(shè)計_第4頁](http://file4.renrendoc.com/view11/M00/01/15/wKhkGWWjZlmAZgahAAB8jGG1YHA1924.jpg)
![單片機(jī)課程設(shè)計簡易計算器設(shè)計_第5頁](http://file4.renrendoc.com/view11/M00/01/15/wKhkGWWjZlmAZgahAAB8jGG1YHA1925.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
參考文獻(xiàn)參考文獻(xiàn)[1]張毅剛,劉杰.MCS51單片機(jī)原理及應(yīng)用[M].哈爾濱:哈爾濱工業(yè)大學(xué)出版社,2008[2]高峰.單片微型計算機(jī)原理與接口技術(shù)[M].北京:科技出版社,2007[3]胡漢才.單片機(jī)原理及其接口技術(shù)[M].北京:清華大學(xué)出版社,2004[4]譚浩強(qiáng).C語言程序設(shè)計[M].北京:清華大學(xué)出版社,2005[5]王忠民.微型計算機(jī)原理[M].西安:西安電子科技大學(xué)出版社,2003[6]沈美明,溫冬嬋.IBM-PC匯編語言程序設(shè)計[M].北京:清華大學(xué)出版社,2001xxxxxx大學(xué)課程設(shè)計報告附錄附錄I程序源代碼/******簡單計算器試驗:用A,B,C,D,E,F分別表示+,-,*,/運(yùn)算******/#include<reg51.h>#include<stdio.h>#include<math.h>#defineucharunsignedchar#defineuintunsignedintuchartable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//八段碼uinttablenum[]={1,10,100,1000};ucharxdata*p1=0x08001;//定義鍵盤行地址ucharxdata*p2=0x08002;//定義鍵盤列地址ucharxdata*q1=0x08002;//定義位碼輸出地址ucharxdata*q2=0x08004;//定義段碼輸出地址uintnum;//鍵盤按鍵uinty1,y2;//延時程序所用變量uintshu;uintkey;//標(biāo)記數(shù)字鍵uinta;//記錄按鍵按下的次數(shù)uintnumber1[4];//存放數(shù)字uintnumber2[4];//存放數(shù)字uintnum1;uintnum2;uintdelay(uinty1);//延時函數(shù)voidkeyscan();//鍵盤掃描函數(shù)voiddisplay(intb);//鍵盤顯示函數(shù)voidmain(){intnumber;inti;key=0;a=0;*q1=0x00;//數(shù)碼管不顯示while(1){*p1=0xff;if((*p1&0x0f)!=0x0f)//判斷是否有按鍵按下{keyscan();if(key==0&&num>=0&&num<10)//按下第一個數(shù)字鍵{number1[0]=num;//把按鍵數(shù)值存放在數(shù)組number1[0]中display(1);key++;}elseif(key==1){if(num<10)//此時按下的按鍵為0-9數(shù)字鍵{a++;if(a>3)display(20);//出現(xiàn)越界顯示ERRORelse{number1[a]=num;display(a+1);}}elseif(num==15)//按下清屏鍵{display(15);a=0;key=0;}elseif(num>9&&num<14)//按下的按鍵為加或減或乘或除{num2=0;for(i=0;i<=a;i++){num2+=number1[i]*tablenum[a-i];}delay(5);display(num);//顯示是什么運(yùn)算shu=num;//把按下的鍵值傳遞給變量shua=0;key=0;}elseif(num==14)//此時按下的按鍵為E等于按鍵{*q1=0x00;for(i=0;i<=a;i++){num1+=number1[i]*tablenum[a-i];}switch(shu)//判斷運(yùn)算后做相應(yīng)的運(yùn)算{case10:num2+=num1;break;case11:num2-=num1;break;case12:num2*=num1;break;case13:if(num1>0)num2/=num1;elsenum2=-1;break;}if(num2>9999||num2<0)//判斷運(yùn)算是否產(chǎn)生越界display(20);//越界則顯示ERRORelse//沒越界顯示相應(yīng)結(jié)果{a=0;key=4;for(i=3;i>=0;i--){number2[i]=(num2-(num2%tablenum[i]))/tablenum[i];num2-=number2[i]*tablenum[i];if(a==0&&number2[i]==0)key--;elseif(number2[i]!=0)a++;}for(i=0;i<key;i++){number1[key-1-i]=number2[i];}display(key);}key=0;a=0;}}}if(num==15)//按下清屏鍵{display(15);a=0;key=0;}}}/***********************************************************************/uintdelay(uinty1) //延時函數(shù){for(;y1>0;y1--)for(y2=100;y2>0;y2--);}/**********************************************************************/voidkeyscan()//鍵盤掃描函數(shù){*p2=0xfb;//左數(shù)第四列switch(*p1){case0x0e:num=13;break;//下數(shù)第一行dcase0x0d:num=12;break;//下數(shù)第二行ccase0x0b:num=11;break;//下數(shù)第三行bcase0x07:num=10;break;//下數(shù)第四行a}*p2=0xf7;//左數(shù)第三列switch(*p1){case0x0e:num=14;break;//ecase0x0d:num=3;break;//3case0x0b:num=6;break;//6case0x07:num=9;break;//9}*p2=0xef;//左數(shù)第二列switch(*p1){case0x0e:num=15;break;//fcase0x0d:num=2;break;//2case0x0b:num=5;break;//5case0x07:num=8;break;//8}*p2=0xdf;//左數(shù)第一列switch(*p1){case0x0e:num=0;break;//0case0x0d:num=1;break;//1case0x0b:num=4;break;//4case0x07:num=7;break;//7}delay(5);}/**********************************************************************/voiddisplay(intb)//數(shù)碼管顯示函數(shù){inti;intnumber;num1=0;*q1=0x00;if(b<=4)//此時按下的按鍵為0-D鍵正常顯示{while((*p1&0x0f)!=0x0f);delay(5);while((*p1&0x0f)==0x0f){for(i=b;i>0;i--){*q1=0x01<<i-1;number=number1[b-i];*q2=table[number];delay(1);}}}elseif(b==20)//出現(xiàn)越界情況顯示ERROR{while((*p1&0x0f)!=0x0f);delay(5);while((*p1&0x0f)==0x0f){*q1=0x01;*q2=table[10];delay(1);*q1=0x02;*q2=table[0];delay(1);*q1=0x04;*q2=table[10];delay(1);*q1=0x08;*q2=table[10];delay(1);*q1=0x10;*q2=table[14];delay(1);}a=0;key=0;}elseif(b==15)//此時按下F清數(shù)碼管顯示鍵{while((*p1&0x0f)!=0x0f);//判斷是否按下按鍵*q1=0x00;delay(5);while((*p1&0x0f)==0x0f);delay(5);a=0;key=0;}elseif(b>9&&b<14)//按下的按鍵為加或減或乘或除{while((*p1&0x0f)!=0x0f);delay(5);while((*p1&0x0f)==0x0f){*q1=0x01;*q2=table[b];delay(1);}}}附錄II硬件電路附錄III元件清單UsedPartTypeDesignatorFootprint======================================16MHZY1120pFC2122pFC3130pFC1174F32U7DIP-14174HC138U2DIP-16174LS245U4DIP-20274LS374U3U5DIP-2018051U1DIP-401BDMU61MC1413U84RES2R1R2R3R424SW-PBS1S2S3S4S5S6S7S8S9S10S11
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 動漫服務(wù)合同范本
- 冷庫收購羊合同范例
- 計算機(jī)駐場維護(hù)服務(wù)合同范本
- 人員借調(diào)服務(wù)合同范本
- 2025年中國變頻發(fā)電機(jī)行業(yè)市場發(fā)展監(jiān)測及投資戰(zhàn)略咨詢報告
- 保定小學(xué)勞務(wù)合同范本
- 個人出售合同范本
- 供銷食品合同范例
- 2025年度城市公園場地租賃使用合同范本
- 2025年度建筑工地建筑垃圾買賣及環(huán)保處理一體化合同范本
- 基于單片機(jī)的交通燈控制系統(tǒng)設(shè)計畢業(yè)論文
- 2024年執(zhí)業(yè)醫(yī)師考試-醫(yī)師定期考核(口腔)筆試參考題庫含答案
- 中國律師學(xué) 課件 陳衛(wèi)東 第10-17章 律師收費(fèi)制度-律師非訴訟業(yè)務(wù)(二)
- (高清版)TDT 1040-2013 土地整治項目制圖規(guī)范
- 中國移動行測測評題及答案
- 精神科患者服藥依從性健康宣教
- 設(shè)備維保的維修流程與指導(dǎo)手冊
- 急性腎小球腎炎病人護(hù)理課件
- 招標(biāo)代理服務(wù)的關(guān)鍵流程與難點解析
- GB/T 5465.2-2023電氣設(shè)備用圖形符號第2部分:圖形符號
- 《三國演義》中的佛教文化:以黃承兒為例
評論
0/150
提交評論