基于單片機(jī)的整數(shù)的加減乘除運(yùn)算計(jì)算器設(shè)計(jì)畢業(yè)論文_第1頁(yè)
基于單片機(jī)的整數(shù)的加減乘除運(yùn)算計(jì)算器設(shè)計(jì)畢業(yè)論文_第2頁(yè)
基于單片機(jī)的整數(shù)的加減乘除運(yùn)算計(jì)算器設(shè)計(jì)畢業(yè)論文_第3頁(yè)
基于單片機(jī)的整數(shù)的加減乘除運(yùn)算計(jì)算器設(shè)計(jì)畢業(yè)論文_第4頁(yè)
基于單片機(jī)的整數(shù)的加減乘除運(yùn)算計(jì)算器設(shè)計(jì)畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩16頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

畢業(yè)設(shè)計(jì)課題基于單片機(jī)的整數(shù)的加減乘除運(yùn)算計(jì)算器設(shè)計(jì)學(xué)生姓名學(xué)號(hào)專業(yè)機(jī)電一體化班級(jí)院(系)機(jī)械與電子信息工程學(xué)院指導(dǎo)教師職稱2014目錄摘要1Abstract1設(shè)計(jì)要求21方案22系統(tǒng)和主要功能2計(jì)算器的硬件設(shè)計(jì)31.1位數(shù)碼管動(dòng)態(tài)顯電路31.2LED數(shù)碼顯示器41.38255接口芯片41.4數(shù)碼管顯示模塊51.5按鍵模塊61.64×4矩陣鍵盤識(shí)別處理電路7計(jì)算器的軟件設(shè)計(jì)72.1主程序流程及模塊設(shè)計(jì)82.2總程序模塊9調(diào)試結(jié)果及分析10參考文獻(xiàn)11附錄一:總體原理圖12附錄二:總程序13致謝14PAGE摘要近年來(lái)隨著科技的飛速發(fā)展,單片機(jī)的應(yīng)用正在不斷深入,同時(shí)帶動(dòng)傳統(tǒng)控制檢測(cè)技術(shù)日益更新。在實(shí)時(shí)檢測(cè)和自動(dòng)控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往作為一個(gè)核心部件來(lái)使用,但僅單片機(jī)方面的知識(shí)是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu)、軟硬件結(jié)合,來(lái)加以完善。因此,單片機(jī)的應(yīng)用已經(jīng)越來(lái)越貼近生活,用單片機(jī)來(lái)實(shí)現(xiàn)一些電子設(shè)計(jì)也變得容易起來(lái)。計(jì)算器在人們的日常中是比較的常見(jiàn)的電子產(chǎn)品之一??墒撬€在發(fā)展之中,以后必將出現(xiàn)功能更加強(qiáng)大的計(jì)算器,基于這樣的理念,本次設(shè)計(jì)是用單片機(jī)來(lái)設(shè)計(jì)的計(jì)算器。該設(shè)計(jì)系統(tǒng)是以AT89C51為單片機(jī),P0口作為輸入端,外接4X4的鍵盤。通過(guò)鍵盤掃描來(lái)對(duì)輸入數(shù)的控制,在P1口、P2口接了驅(qū)動(dòng)電路,用來(lái)保證LED的工作正常。計(jì)算器將完成的功能有加,減,乘,除等功能。關(guān)鍵詞:計(jì)算器,單片機(jī),LCD,矩陣鍵盤Abstract

Withtherapiddevelopmentofscienceandtechnologyinrecentyears,theapplicationofSCMisthedeepeningandpromotethetraditionalcontrollingdetectiontechnologiesthatareincreasinglyupdated.Inreal-timedetectionandautomaticcontrolofmicrocomputerapplicationsystem,themicrocontrollerisoftenusedasacorecomponenttouse,butonlytheknowledgeofthemicrocontrollerisnotenough,andshouldbebasedonthespecifichardwarearchitecture,hardwareandsoftwarecombinationtomakeitThedesignsystemisbasedonAT89C51microcontroller,P0portasinput,external4X4keyboard.InP1,P2mouthisconnectedwiththedrivecircuittoensurethenormalworkofLED.Thecalculatorwillcompleteadd,subtract,multiply,divideandotherfunction.

KEYWORDS:calculator,MCU,LCD,Matrixkeyboard設(shè)計(jì)要求該計(jì)算器4*4矩陣鍵盤的16個(gè)按鍵分別代表不同的功能,包括0到9這10個(gè)數(shù)字和加,減,乘,除,等于,復(fù)位這6個(gè)功能鍵。開(kāi)機(jī)啟動(dòng),第四位數(shù)碼管小數(shù)點(diǎn)亮,8位數(shù)碼管的前四位顯示前面輸入的加數(shù),被減數(shù),被除數(shù),乘數(shù),后四位用于顯示后輸入的加數(shù),減數(shù),乘數(shù),除數(shù),復(fù)位鍵用于計(jì)算器恢復(fù)初始化,當(dāng)輸入加數(shù)和被加數(shù)時(shí),顯示器上顯示的數(shù)字像平時(shí)用的計(jì)算器輸入一樣,即:每輸入一個(gè)數(shù)字,原來(lái)顯示的數(shù)字要往左移,當(dāng)輸入出錯(cuò)時(shí)(例如除數(shù)為零),調(diào)用報(bào)錯(cuò)子程序,數(shù)碼管顯示“ERROR”。方案操作顯示設(shè)備顯示設(shè)備采用八片七段共陰極LED顯示器,共設(shè)臵16個(gè)鍵,其中數(shù)字鍵0~9共十個(gè),接下來(lái)依次是加號(hào)鍵、減號(hào)鍵、乘號(hào)、除號(hào)、等于號(hào)、復(fù)位鍵?!扒宄I”表示程序初始化,為下次輸入準(zhǔn)備。程序?qū)崿F(xiàn)功能a.十進(jìn)制加減乘除計(jì)算:輸入范圍為(1~999),結(jié)果可以顯示7位,計(jì)算結(jié)果可以精確到小數(shù)點(diǎn)后4位;b.計(jì)算機(jī)復(fù)位功能:復(fù)位均為清零重啟,任何時(shí)候按下復(fù)位將重新開(kāi)c.報(bào)錯(cuò)子程序是當(dāng)系統(tǒng)計(jì)算出錯(cuò)時(shí)候,控制數(shù)碼管自動(dòng)顯示“ERROR”,然后系統(tǒng)自動(dòng)復(fù)位。系統(tǒng)的主要功能該系統(tǒng)使用了1塊STC89C52RC單片機(jī),主要性能有:1.4KByte程序存儲(chǔ)器,存儲(chǔ)量更大2.工作頻率從靜態(tài)到33MHz,更加靈活3.32根IO端口,方便使用4.內(nèi)臵兩個(gè)16位定時(shí)計(jì)數(shù)器,利用單片機(jī)周期工作,方便控制且可靠性高5.包含了全雙工串行接口,方便與電腦或其它終端通信6.內(nèi)臵看門狗,防止程序跑丟,在外界環(huán)境突變時(shí)可自行復(fù)位繼續(xù)工作第一章計(jì)算器的硬件設(shè)計(jì)1.1位數(shù)碼管動(dòng)態(tài)顯示電路硬件電路如下圖所示:1.2LED數(shù)碼顯示器LED數(shù)碼管的g~a七個(gè)發(fā)光二極管因加正電壓而發(fā)亮,因加零電壓如上圖,a,b,c,d,e,f,g,h控制數(shù)碼管的段,1,2,3,4,5,6,7,而不以發(fā)亮,不同亮暗的組合就能形成不同的字形,這種組合稱之為字行碼,字行碼見(jiàn)下表:動(dòng)態(tài)掃描方法動(dòng)態(tài)接口采用各數(shù)碼管循環(huán)輪流顯示的方法,當(dāng)循環(huán)顯示頻率較高時(shí),利用人眼的暫留特性,看不出閃爍顯示現(xiàn)象,這種顯示需要一個(gè)接口完成字形碼的輸出(字形選擇),另一接口完成各數(shù)碼管的輪流點(diǎn)亮(數(shù)位選擇)。(1)在進(jìn)行數(shù)碼顯示的時(shí)候,要對(duì)顯示單元開(kāi)辟8個(gè)顯示緩沖區(qū),每個(gè)顯示緩沖區(qū)裝有顯示的不同數(shù)據(jù)即可。(2)對(duì)于顯示的字形碼數(shù)據(jù)我們采用查表方法來(lái)完成。系統(tǒng)板上硬件連線(1)把“單片機(jī)系統(tǒng)”區(qū)域中的P2.0-P2.7用8芯排線連接到“動(dòng)態(tài)數(shù)碼顯示”區(qū)域中的a-h(huán)端口上;(2)把“單片機(jī)系統(tǒng)”區(qū)域中的P1.7-P1.0用8芯排線連接到“動(dòng)態(tài)數(shù)碼顯示”區(qū)域中的1-8端口上;1.34×4矩陣鍵盤識(shí)別處理電路每個(gè)按鍵有它的行值和列值,行值和列值的組合就是這個(gè)按鍵的碼。矩陣的行線和列線分別通過(guò)兩并行接口和CPU通信。每個(gè)按鍵的狀態(tài)同樣需變成數(shù)字量“0”和“1”,開(kāi)關(guān)的一端(列線)通過(guò)電阻接VCC,而接地是通過(guò)程序輸出數(shù)字“0”實(shí)現(xiàn)的。鍵盤處理程序的任務(wù)是:確定有無(wú)鍵按下,判斷哪一個(gè)鍵按下,鍵的功能是什么;還要消除按鍵在閉合或斷開(kāi)時(shí)的抖動(dòng)。兩個(gè)并行口中,一個(gè)輸出掃描碼,使按鍵逐行動(dòng)態(tài)接地,另一個(gè)并行口輸入按鍵狀態(tài),由行掃描值和回饋信號(hào)共同形成鍵編碼而識(shí)別按鍵,通過(guò)軟件查表,查出該鍵的功能。鍵盤功能表如圖鍵盤硬件電路如下:如圖所示鍵盤硬件電路,用排線將行的1~4和單片的P0.0~P0.3連起來(lái),列的5~8和單片機(jī)的P0.4~P0.7連接。:第二章?lián)尨鹌鞯能浖O(shè)計(jì)2.1總體系統(tǒng)流程圖如下:2.2模塊介紹該計(jì)程計(jì)價(jià)系統(tǒng)的軟件設(shè)計(jì)分為以下幾個(gè)模塊:(1)主程序模塊主程序主要完成初始化、檢查有無(wú)按鍵按下、計(jì)算求答、以及調(diào)用顯示等等。(主程序如電子版文檔所示)(2)鍵盤掃描及識(shí)別子程序鍵盤采用查詢的方式,放在主程序中,當(dāng)沒(méi)有按鍵按下的時(shí)候,單片機(jī)循環(huán)主程序,一旦有按鍵按下,便轉(zhuǎn)向相應(yīng)的子程序處理,處理結(jié)束再返回。(3)顯示子程序采用動(dòng)態(tài)顯示,一位一位的輪流顯示各顯示管。,所以只須用P2口控制段,P1口的低位控制其位。(4)計(jì)算程序根據(jù)輸入的符號(hào)采取不同的算法,當(dāng)然也是本程序的關(guān)鍵所在。對(duì)應(yīng)輸入數(shù)值,計(jì)算出輸入量,供顯示子程序使用,而對(duì)符號(hào)量則根據(jù)前次和后次的數(shù)值計(jì)算其結(jié)果。(5)報(bào)錯(cuò)子程序當(dāng)系統(tǒng)計(jì)算出錯(cuò)時(shí)候,控制數(shù)碼管自動(dòng)顯示“ERROR”,然后系統(tǒng)自動(dòng)復(fù)位。2.2總程序模塊#include<reg52.h>#include<intrins.h>#defineLintlongint#defineuintunsignedint#defineucharunsignedcharsbitled=P2^3;sbitSCK_595=P2^0;sbitDS_595=P2^1;sbitRCK_595=P2^2;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//數(shù)碼管段碼表/****************定義全局變量*******************/Lintstore[2]={0};//存取按鍵值和結(jié)果的數(shù)組ucharflag_op=0;//+,-,*,/操作符標(biāo)志符ucharflag_order=0;//輸入數(shù)的順序標(biāo)志符ucharflag_equal=0;//等于號(hào)標(biāo)志符ucharkey=16;//按鍵值/*****************延時(shí)函數(shù)*********************/voiddelay(uintx){uinti,j;for(i=x;i>0;i--)for(j=110;j>0;j--);/*****************595寫函數(shù)********************/voidwrite_595(ucharwrdat)uchari;SCK_595=0;RCK_595=0;for(i=0;i<8;i++){DS_595=wrdat&0x80;wrdat<<=1;SCK_595=0;_nop_();_nop_();SCK_595=1;_nop_();_nop_();SCK_595=0;}RCK_595=0;_nop_();_nop_();RCK_595=1;_nop_();_nop_();RCK_595=0;}/****************顯示函數(shù)*********************/voiddisplay(Linttemp){uintbuf1,buf2,i=0;buf1=temp/10000000;if(buf1>=10||temp<-9999999)//數(shù)據(jù)溢出,顯示錯(cuò)誤00000000{led=0;P2=(P2&0x0f)|0x80;for(i=0;i<8;i++){write_595(table[14]);P2=P2+0x10;}}elseif(temp<0&&temp>=-99999999)//顯示負(fù)數(shù){led=1;P2=0x70;do{buf2=temp%10;P2=P2+0x10;write_595(table[buf2]);delay(4);temp=temp/10;}while(temp!=0)switch(flag_op){case1://加法運(yùn)算store[0]=store[0]+store[1];flag_op=0;flag_order=0;store[1]=0;//輸入的第二個(gè)數(shù)清零break;case2://減法運(yùn)算store[0]=store[0]-store[1];flag_op=0;flag_order=0;store[1]=0;//輸入的第二個(gè)數(shù)清零break;case3://乘法運(yùn)算store[0]=store[0]*store[1];flag_op=0;flag_order=0;store[1]=0;//輸入的第二個(gè)數(shù)清零break;case4://除法運(yùn)算store[0]=store[0]/store[1];//計(jì)算結(jié)果,存入第一個(gè)數(shù)flag_op=0;//操作符清零flag_order=0;//輸入順序標(biāo)識(shí)符清零,顯示結(jié)果store[1]=0;//輸入的第二個(gè)數(shù)清零break;}flag_equal=0;}}/*****************主函數(shù)*****************/voidmain(){while(1){key=KeyScan();//鍵盤掃描if(key>=0&&key<=9)//如果key在0到9之間,證明鍵盤按下的是數(shù)值{if(store[flag_order]<10000000){store[flag_order]=store[flag_order]*10+key;}key=16;}if(key==14)//如果key為14時(shí),證明鍵盤按下的是CE鍵{P2=(P2&0x0f)|0x80;write_595(table[0]);store[0]=0;//數(shù)據(jù)清零store[1]=0;flag_op=0;flag_order=0;flag_equal=0;key=16;}YunSuan();display(store[flag_order]);}}第三章調(diào)試結(jié)果及分析本設(shè)計(jì)主要是在編寫的程序編譯通過(guò)后,用下載軟件將編寫的程序下載到實(shí)驗(yàn)開(kāi)發(fā)板上,驗(yàn)證結(jié)果是否滿足設(shè)計(jì)要求。主要通過(guò)按鍵部分進(jìn)行控制,通過(guò)數(shù)碼管和LED燈部分進(jìn)行觀察。經(jīng)驗(yàn)證,開(kāi)機(jī)啟動(dòng)后,第四位數(shù)碼管小數(shù)點(diǎn)亮,8位數(shù)碼管的前四位顯示前面輸入的加數(shù),被減數(shù),被除數(shù),乘數(shù),后四位用于顯示后輸入的加數(shù),減數(shù),乘數(shù),除數(shù),復(fù)位鍵用于計(jì)算器恢復(fù)初始化,當(dāng)輸入加數(shù)和被加數(shù)時(shí),顯示器上顯示的,只有開(kāi)始按下數(shù)字后才有效,能夠準(zhǔn)確的對(duì)整數(shù)進(jìn)行計(jì)算,滿足設(shè)計(jì)要求。參考文獻(xiàn)[1]何立民.《MCS-51系列單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)》,北航版,1991年2月[2]謝嘉奎.《電子線路(非線性部分第四版)》,高等教育出版社,2008年6月[3]劉桂敏.單片機(jī)系統(tǒng)中復(fù)合鍵和一鍵多功能的設(shè)計(jì)[J],遼寧科技大學(xué)學(xué)報(bào),2011年3月[4]胡漢才.《單片機(jī)原理及其接口設(shè)計(jì)》,清華大學(xué)出版社,1997年6月[5]劉杰,梁華國(guó).矩陣式靜態(tài)編碼鍵盤及其接口電路[J],阜陽(yáng)師范學(xué)院學(xué)報(bào)(自然科學(xué)版),2004年4月[6]張紅,于平,程文播.基于單片機(jī)控制的LED點(diǎn)陣顯示屏系統(tǒng)[J],微計(jì)算機(jī)信息,2009年6月[7]徐瑋.51單片機(jī)綜合學(xué)習(xí)系統(tǒng)——1602字符型液晶顯示篇[J],電子制作,2008年8月[8]王效華、張?jiān)伱?《單片機(jī)原理及應(yīng)用》,北京交通大學(xué)出版社,2007年3月[9]趙亮.單片機(jī)從入門到精通系列講座——矩陣鍵盤應(yīng)用[J],電子制作,2008年7月[10]胡花.《單片機(jī)原理及應(yīng)用技術(shù)》,江西高校出版社2008年7月[11]彭偉.《單片機(jī)C語(yǔ)言程序設(shè)計(jì)實(shí)訓(xùn)100例》,電子工業(yè)出版社,2009年2月[12]王東峰,王會(huì)良,董冠強(qiáng).《單片機(jī)C語(yǔ)言應(yīng)用100例》,電子工業(yè)出版社,2009年6月[13]陳洪財(cái).《單片機(jī)C語(yǔ)言和匯編語(yǔ)言使用開(kāi)發(fā)技術(shù)》,哈爾濱工程大學(xué)出版社,2008年1月附錄一:總體原理圖總體原理圖如圖所示:附錄二:總程序#include<reg52.h>#include<intrins.h>#defineLintlongint#defineuintunsignedint#defineucharunsignedcharsbitled=P2^3;sbitSCK_595=P2^0;sbitDS_595=P2^1;sbitRCK_595=P2^2;ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//數(shù)碼管段碼表/****************定義全局變量*******************/Lintstore[2]={0};//存取按鍵值和結(jié)果的數(shù)組ucharflag_op=0;//+,-,*,/操作符標(biāo)志符ucharflag_order=0;//輸入數(shù)的順序標(biāo)志符ucharflag_equal=0;//等于號(hào)標(biāo)志符ucharkey=16;//按鍵值/*****************延時(shí)函數(shù)*********************/voiddelay(uintx){uinti,j;for(i=x;i>0;i--)for(j=110;j>0;j--);/*****************595寫函數(shù)********************/voidwrite_595(ucharwrdat)uchari;SCK_595=0;RCK_595=0;for(i=0;i<8;i++){DS_595=wrdat&0x80;wrdat<<=1;SCK_595=0;_nop_();_nop_();SCK_595=1;_nop_();_nop_();SCK_595=0;}RCK_595=0;_nop_();_nop_();RCK_595=1;_nop_();_nop_();RCK_595=0;}/****************顯示函數(shù)*********************/voiddisplay(Linttemp){uintbuf1,buf2,i=0;buf1=temp/10000000;if(buf1>=10||temp<-9999999)//數(shù)據(jù)溢出,顯示錯(cuò)誤00000000{led=0;P2=(P2&0x0f)|0x80;for(i=0;i<8;i++){write_595(table[14]);P2=P2+0x10;}}elseif(temp<0&&temp>=-99999999)//顯示負(fù)數(shù){led=1;P2=0x70;do{buf2=temp%10;P2=P2+0x10;write_595(table[buf2]);delay(4);temp=temp/10;}while(temp!=0)switch(flag_op){case1://加法運(yùn)算store[0]=store[0]+store[1];flag_op=0;flag_order=0;store[1]=0;//輸入的第二個(gè)數(shù)清零break;case2://減法運(yùn)算store[0]=store[0]-store[1];flag_op=0;flag_order=0;store[1]=0;//輸入的第二個(gè)數(shù)清零break;case3://乘法運(yùn)算store[0]=store[0]*store[1];flag_op=0;flag_order=0;store[1]=0;//輸入的第二個(gè)數(shù)清零break;case4://除法運(yùn)算st

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論