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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論