![基于單片機(jī)實(shí)現(xiàn)的四則運(yùn)算計(jì)算器_第1頁](http://file4.renrendoc.com/view/7e8921e14238663787e85a0ef1f6351e/7e8921e14238663787e85a0ef1f6351e1.gif)
![基于單片機(jī)實(shí)現(xiàn)的四則運(yùn)算計(jì)算器_第2頁](http://file4.renrendoc.com/view/7e8921e14238663787e85a0ef1f6351e/7e8921e14238663787e85a0ef1f6351e2.gif)
![基于單片機(jī)實(shí)現(xiàn)的四則運(yùn)算計(jì)算器_第3頁](http://file4.renrendoc.com/view/7e8921e14238663787e85a0ef1f6351e/7e8921e14238663787e85a0ef1f6351e3.gif)
![基于單片機(jī)實(shí)現(xiàn)的四則運(yùn)算計(jì)算器_第4頁](http://file4.renrendoc.com/view/7e8921e14238663787e85a0ef1f6351e/7e8921e14238663787e85a0ef1f6351e4.gif)
![基于單片機(jī)實(shí)現(xiàn)的四則運(yùn)算計(jì)算器_第5頁](http://file4.renrendoc.com/view/7e8921e14238663787e85a0ef1f6351e/7e8921e14238663787e85a0ef1f6351e5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
文檔從互聯(lián)網(wǎng)中收集,已重新修正排版,文檔從互聯(lián)網(wǎng)中收集,已重新修正排版,wold格式支持編輯,如有幫助歡迎下載支持。iwoidiwoid格式支持編輯,如有幫助歡迎下載支持。文檔從互聯(lián)網(wǎng)中收集,已重新修正排版,文檔從互聯(lián)網(wǎng)中收集,已重新修正排版,wold格式支持編輯,如有幫助歡迎下載支持。iwoidiwoid格式支持編輯,如有幫助歡迎下載支持?;趩纹瑱C(jī)實(shí)現(xiàn)的四則運(yùn)算計(jì)算器TOC\o"1-5"\h\z姓 名學(xué) 號:班 級:專業(yè)名稱:測控技術(shù)與儀器指導(dǎo)教師:東北大學(xué)2016年1月文檔從互聯(lián)網(wǎng)中收集,已重新修正排版,文檔從互聯(lián)網(wǎng)中收集,已重新修正排版,woid格式支持編輯,如有幫助歡迎下載支持。llWOldllWOld格式支持編輯,如有幫助歡迎下載支持。文檔從互聯(lián)網(wǎng)中收集,已重新修正排版,文檔從互聯(lián)網(wǎng)中收集,已重新修正排版,woid格式支持編輯,如有幫助歡迎下載支持。llWOldllWOld格式支持編輯,如有幫助歡迎下載支持。課程設(shè)計(jì)(論文)任務(wù)書課程設(shè)計(jì)(論文)題目:基于單片機(jī)實(shí)現(xiàn)的四則運(yùn)算計(jì)算器基本內(nèi)容和設(shè)計(jì)要求:1、主機(jī)的矩陣鍵盤輸入數(shù)和運(yùn)算符號,從機(jī)顯示運(yùn)算結(jié)果。2、主從單片機(jī)串行通信系統(tǒng),并在LCD上顯示運(yùn)算內(nèi)容及結(jié)果。3、計(jì)算結(jié)果超過十位數(shù)字則顯示錯(cuò)誤。4、運(yùn)算除法時(shí),結(jié)果只取整數(shù),不是四舍五入。5、有清零功能。#圖3.3鍵盤程序框圖開始后,掃描鍵盤,若沒有鍵按下則繼續(xù)掃描,有鍵按下,若為等號鍵則顯示結(jié)果然后結(jié)束,若不是看是否是計(jì)算符,不是計(jì)算符則讀入內(nèi)存然后led顯示,若是計(jì)算符讀進(jìn)內(nèi)存,等待輸入。
開始圖3.4運(yùn)算程序框圖運(yùn)算程序:先判斷運(yùn)算符,若為加或乘則要判斷運(yùn)算結(jié)果是否溢出,若溢出,則led顯示-1表示運(yùn)算錯(cuò)誤,若為除號,判斷除數(shù)是否為0,若為0,則led顯示-1表示運(yùn)算錯(cuò)誤,其他情況則可直接送至led顯示。第4章調(diào)試測試與實(shí)驗(yàn)分析計(jì)算器調(diào)試(1)問題:將已編好的程序用燒錄進(jìn)開發(fā)板后,發(fā)現(xiàn)開發(fā)板上LCD顯示屏只發(fā)光但是沒有任何數(shù)字。(2)分析:這種現(xiàn)象可能存在兩個(gè)問題:1)LCD顯示屏有問題2)程序存在錯(cuò)誤(3)解決方案:重新檢查開發(fā)板元器件,將開發(fā)版資料已給的1602液晶顯示程序燒錄開發(fā)板中,發(fā)現(xiàn)LCD仍然只發(fā)光不顯示任何東西,初步判定是LCD未調(diào)節(jié)好或者故障,經(jīng)檢測是LCD顯示字符的亮度未調(diào)節(jié)合適,拿螺絲刀調(diào)節(jié),LCD就能顯示字符。(4)再次檢測:再次將已編好的程序燒錄進(jìn)開發(fā)板,打開開發(fā)板電源,LCD上先顯示‘0'字符。矩陣鍵盤輸入’3*4'進(jìn)行計(jì)算,發(fā)現(xiàn)顯示屏上第一行顯示'3',第二行顯示‘4'和然后在鍵盤上輸入'=顯示屏上得出結(jié)果12。參考文獻(xiàn)[1]李小堅(jiān)郝曉麗.piotelDXP電路設(shè)計(jì)與制版實(shí)用教程[J].人民郵電出版社,2015,10.[2]張秋菊劉繼超.單片機(jī)應(yīng)用實(shí)訓(xùn)教程[J].化學(xué)工業(yè)出版社,2015,10.心得體會(huì)周二早上開始選課題的時(shí)候,感覺我們的能力不是很強(qiáng),所以想選一個(gè)簡單一點(diǎn)的題目,然后就選了一個(gè)四則運(yùn)算計(jì)算器,這個(gè)題目硬件上的確不難,但是軟件上卻令我們很困擾,很頭疼。周二下午寫計(jì)劃的時(shí)候,看到被老師打回來這么多份計(jì)劃,我們就想自己好好的寫一寫,可是還是改了兩遍,也用了一晚上的時(shí)間,但是這個(gè)計(jì)劃卻對我們之后幾天的工作有一個(gè)很好的指導(dǎo)。第二天學(xué)習(xí)protel,老師沒有怎么講,我們一開始也不會(huì)用,只能是哪里不會(huì)哪里百度,但是有的元件還是沒有找到,周四早上才知道原來資料里有單片機(jī)上的元件庫,于是把那個(gè)元件庫導(dǎo)入,畫圖便容易多了。我們硬件沒有什么東西,于是第三天下午便開始編程了,可是我們對著程序看了一下午也沒有什么頭緒,反而整得自己要發(fā)瘋了一樣,對課設(shè)也失去了信心。后來老師來檢查的時(shí)候告訴我們要一步一步的調(diào)試,不可能一口吃個(gè)大胖子,我們就把程序分開來調(diào)試,通過從圖書館借來的資料一步一步的來,程序中不懂的地方便查書或者通過網(wǎng)絡(luò)解決。這幾天的確是蠻痛苦的,天天早晨起來到教室里,一坐一天,感覺比上課累多了,可也有了自己的收獲,沒有老師指導(dǎo),需要的東西基本上要自己來查找,也鍛煉了自己的能力。實(shí)物的焊接也鍛煉了我們的動(dòng)手能力,課程設(shè)計(jì)對于我們的益處是很大的。也希望自己通過知識與實(shí)際的結(jié)合不斷的提高自己。
附錄程序清單LCD1602#include<ieg52.h>#defineLCD1602_DBP0sbitLCD1602_RS=PlA0;sbitLCD16O2_RW=P1A1;sbitLCD1602_E=P1A2;/*等待液晶準(zhǔn)備好*/voidLcdWaitReady()(unsignedcharsta;LCD1602_DB=OxFF;LCD1602_RS=0;LCD1602_RW=l;do{LCD1602_E=1;sta=LCD1602_DB;〃讀取狀態(tài)字LCD1602_E=0;}while(sta&0x80);//bit7等于1表示液晶正忙,重復(fù)檢測直到其等于0為止}/*向LCD1602液晶寫入一字節(jié)命令,cmd-待寫入命令值*/voidLcdWnteCmd(uiisignedcharcmd)(LcdWaitReadyO;LCD1602_RS=0;LCD1602_RW=0;LCD1602_DB=cmd;LCD1602_E=1;LCD1602_E=0;)/*向LCD1602液晶寫入一字節(jié)數(shù)據(jù),dat-待寫入數(shù)據(jù)值*/voidLcdWnteDat(unsignedchaidat)(LcdWaitReadyO;LCD1602_RS=l;LCD1602_RW=0;LCD1602_DB=dat;LCD1602_E=1;LCD1602_E=0;}/*設(shè)置顯示RAM起始地址,亦即光標(biāo)位置,(x,y)-對應(yīng)屏幕上的字符坐標(biāo)*/voidLcdSetCursoi(unsignedcharx,unsignedchary)(unsignedcharaddi;if(y=0)〃由輸入的屏幕坐標(biāo)計(jì)算顯示RAM的地址addf=0x00+x;〃第一行字符地址從0x00起始elseaddf=0x40+x;//第二行字符地址從0x40起始LcdWnteCmd(addi|0x80);〃設(shè)置RAM地址}/*在液晶上顯示字符串,(x,y)-對應(yīng)屏幕上的起始坐標(biāo),sti-字符串指針*/voidLcdShowStr(unsignedcharx,unsignedchary,unsignedchar*sti)(LcdSetCuisoi(x,y);〃設(shè)置起始地址while(*str?=!\0')〃連續(xù)寫入字符串?dāng)?shù)據(jù),直到檢測到結(jié)束符(LcdWnteDat(*str++);/*區(qū)域清除,清除從(x,y)坐標(biāo)起始的len個(gè)字符位*/voidLedAieaCleai(unsignedcharx,unsignedchaiy,unsignedchailen)LcdSetCuisor(x,y);〃設(shè)置起始地址while(len-) 〃連續(xù)寫入空格(LcdWnteDatC');)}/*整屏清除*/voidLcdFullClear()(LcdWiiteCmd(OxO1);}/*初始化1602液晶*/voidhiitLcd1602()(LcdWnteCmd(0x38);〃16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口LcdWiiteCmd(OxOC);〃顯示器開,光標(biāo)關(guān)閉LcdWnteCmd(0x06);〃文字不動(dòng),地址自動(dòng)十1LedWiiteCmd(0x01);〃清屏}矩陣鍵盤#include<ieg52.h>sbitKEYIN1=P2A4;sbitKEYIN2=P2A5;sbitKEYIN3=P2A6;sbitKEYIN4=P2A7;sbitKEYOUT1=P2A3;sbitKEYOUT2=P2A2;■ — 7sbitKEYOUT3=P2A1;sbitKEYOUT4=P2A0;unsignedcharcodeKeyCodeMap[4][4]={〃矩陣按鍵編號到標(biāo)準(zhǔn)鍵盤鍵碼的映射表{「2,3,0x26},〃數(shù)字鍵1、數(shù)字鍵2、數(shù)字鍵3、向上鍵{⑷,,5;6,0x25},//數(shù)字鍵4、數(shù)字鍵5、數(shù)字鍵6、向左鍵{7,8,9,0x28},//數(shù)字鍵7、數(shù)字鍵8、數(shù)字鍵9、向下鍵{10;OxlB.OxOD,0x27}〃數(shù)字鍵0、ESC鍵、回車鍵、向右鍵};unsignedcharpdataKeySta[4][4]={〃全部矩陣按鍵的當(dāng)前狀態(tài){1,1,1,1},{1,1,1,1},{1,1,1,1},{1,13,1}};externvoidReset();externvoidGetResultQ;externvoidNuniKeyAction(unsignedcharn);externvoidOpitKeyAction(unsignedchartype);externvoidLcdSliowStr(unsignedcharx,unsignedchary,unsignedchar*str);voidKeyAction(unsignedchaikeycode)(if((keycode>=O)&&(keycode<=9))(NuniKeyAction(keycode」0');}elseif(keycode=0x26)(OpitKeyAction(O);}elseif(keycode=0x28)OpitKeyAction(1);elseiffkeycode=0x25)OpitKeyAction(2);}elseif(keycode=0x27)(OprtKeyAction(3);}elseif(keycode=OxOD)(GetResultQ;}elseif(keycode=OxlB)(ResetQ;LcdShowSti(15,1,UOH);}}/*按鍵驅(qū)動(dòng)函數(shù),檢測按鍵動(dòng)作,調(diào)度相應(yīng)動(dòng)作函數(shù),需在主循環(huán)中調(diào)用*/voidKeyDiiverO(unsignedchari,j;staticunsignedcharpdatabackup[4][4]={〃按鍵值備份,保存前一次的值{1,1,1,1}, {1,1,1,1},{1,1,13});for(1=0;i<4;i十十)〃循環(huán)檢測4*4的矩陣按鍵(for(j=0;j<4;j++)if(backup。][j]!=KeySta[i][j]) 〃檢測按鍵動(dòng)作
if(backup[i][j]!=0)〃按鍵按下時(shí)執(zhí)行動(dòng)作if(backup[i][j]!=0)〃按鍵按下時(shí)執(zhí)行動(dòng)作KeyAction(KeyCodeMap[i]?;//調(diào)用按鍵動(dòng)作函數(shù))backup[i][j]=KeySta[i][j]; 〃刷新前一次的備份值}))}/*按鍵掃描函數(shù),需在定時(shí)中斷中調(diào)用,推薦調(diào)用間隔1ms*/voidKeyScanQ(unsignedchari;staticunsignedcharkeyout=0; 〃矩陣按鍵掃描輸出索引staticunsignedcharkeybuf[4][4]={〃矩陣按鍵掃描緩沖區(qū){OxFF,OxFF,OxFF,OxFF},{OxFF,OxFF,OxFF,OxFF},{OxFF,OxFF,OxFF,OxFF},{OxFF,OxFF,OxFF,OxFF});〃將一行的4個(gè)按鍵值移入緩沖區(qū)keybuf[keyout][0]=(keybuf[keyout][0]?1)|KEY_IN_1;keybuf[keyout][l]=(keybuf[keyout][1]?1)|KEY_IN_2;keybuf[keyout][2]=(keybuf[keyout][2]?1)|KEY_IN_3;keybuf[keyout][3]=(keybuf[keyout][3]?1)|KEY_IN_4;〃消抖后更新按鍵狀態(tài)for(i=0;i<4;i十十)〃每行4個(gè)按鍵,所以循環(huán)4次(if((keybuf[keyout][i]&OxOF)=0x00)(〃連續(xù)4次掃描值為0,即4*4ms內(nèi)都是按下狀態(tài)時(shí),可認(rèn)為按鍵已穩(wěn)定的按下KeySta[keyout][i]=0;)elseif((keybuf[keyout][i]&OxOF)=OxOF)(〃連續(xù)4次掃描值為1,即4*4ms內(nèi)都是彈起狀態(tài)時(shí),可認(rèn)為按鍵已穩(wěn)定的彈起KeySta[keyout][i]=1;))〃執(zhí)行下一次的掃描輸出keyout++; 〃輸出索引遞增keyout&=0x03;〃索引值加到4即歸零switch(keyout)〃根據(jù)索引,釋放當(dāng)前輸出引腳,拉低下次的輸出引腳(case0:KEY OUT 4=1;KEY OUT 1=0; break;KEY OUT 1 =1;KEY OUT 2=0; break;KEY OUT 2 =1;KEY OUT 3=0; break;KEY OUT 3 =1;KEY OUT 4=0; break;default:break;)}主函數(shù)#include<reg52.h>unsignedcharstep=0;unsignedchaioprt=0;signedlongnuml=0;signedlongnuni2=0;signedlongresult=0;unsignedchaiT0RH=0;unsignedchaiT0RL=0;voidConfigTuiieiO(uiisignedmtms);externvoidKeyScanQ;externvoidKeyDnvei();externvoidImtLcd16020;externvoidLcdSliowSti(unsignedcharx,unsignedchary,unsignedchar*str);externvoidLcdFullCleai();externvoidLcdAieaClear(unsignedcharx,unsignedchary,unsignedcharlen);voidmam()(EA=1; 〃開總中斷ConflgTimerO(l);〃配置TO定時(shí)1msIiutLcd1602();〃初始化液晶LcdShowStr(15,1,H0H);〃初始顯示一個(gè)數(shù)字0while(1)(KeyDnverO;〃調(diào)用按鍵驅(qū)動(dòng))}unsignedcharLongToStrmg(unsignedchai*str,signedlongdat)(signedchari=0;unsignedcharlen=0;unsignedcharbuff12];if(dat<0)(dat=-dat;*str++=len-H-;}do{buffi十十]=dat%10;dat/=10;}wlnle(dat>0);len+=i;wliile(i->0)(*str++=buf[i]+f0r;}*str='\0*;letumlen;}voidSliowOprt(unsignedchary,unsignedchartype)(switch(type)(case0:LcdShowSti(0,y,”十");break;LcdSliowStr(0,y,break;LcdSliowStr(0,yj*");break;LcdSliowStr(0,yj/”);break;default:break;}}voidReset()(numl=0;num2=0;step=0;LcdFullCleai();)voidNuniKeyAction(unsignedcharn)unsignedcharlen=0;unsignedcharsti[12];if(step>1)(ResetQ;}if(step=0)(numl=numl*10+n;len=LongToStiing(sti;numl);LcdShowSti(16-len,1,stij;}else(iium2=nuni2*10+n;len=LongToStnng(sti;num2);LcdShowSti(16-len,1,stij;}}voidOprtKeyAction(unsignedchartype)(unsignedcharlen;unsignedcharsti[12];if(step=0)(len=LongToStiing(sti;numl);LcdAreaClear(O.0,16-len);LcdShowStf(16-len,0,str);ShowOpit(l,type);LcdAreaClear(l,1,14);LcdShowSti(15,1,”0)opil=type;step=1;}}voidGetResult()(unsignedcharlen;unsignedcharsti[12];if(step=1)(step=2;switch(opit)(case0:result=nu
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年水電工程招投標(biāo)代理服務(wù)合同
- 2025年帶燈座項(xiàng)目投資可行性研究分析報(bào)告
- 制作度服務(wù)合同范例
- 2025年度綠色建筑項(xiàng)目施工資料審核承包合同范本
- 車輛出質(zhì)抵押合同范本
- 個(gè)人股東合作合同范本
- 2025年三相中頻電源行業(yè)深度研究分析報(bào)告
- 臨建混凝土勞務(wù)合同范本
- 2025年度工程合同風(fēng)險(xiǎn)預(yù)警與防控策略
- 加工彈簧合同范本
- 《工作場所安全使用化學(xué)品規(guī)定》
- 2022年菏澤醫(yī)學(xué)??茖W(xué)校單招綜合素質(zhì)考試筆試試題及答案解析
- 市政工程設(shè)施養(yǎng)護(hù)維修估算指標(biāo)
- 課堂嵌入式評價(jià)及其應(yīng)用
- 《管理學(xué)基礎(chǔ)》完整版課件全套ppt教程(最新)
- 短視頻:策劃+拍攝+制作+運(yùn)營課件(完整版)
- 基金會(huì)財(cái)務(wù)報(bào)表審計(jì)指引
- 藍(lán)色卡通風(fēng)好書推薦教育PPT模板
- 2022年江蘇省泰州市中考數(shù)學(xué)試題及答案解析
- 石家莊鐵道大學(xué)四方學(xué)院畢業(yè)設(shè)計(jì)46
- 智能化系統(tǒng)培訓(xùn)
評論
0/150
提交評論