基于ATC單片機簡易計算器的設計_第1頁
基于ATC單片機簡易計算器的設計_第2頁
基于ATC單片機簡易計算器的設計_第3頁
基于ATC單片機簡易計算器的設計_第4頁
基于ATC單片機簡易計算器的設計_第5頁
已閱讀5頁,還剩11頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、計算機科學與技術系 硬件課程設計實驗基于AT89C51單片機簡易計算器的設計【摘 要】單片機的出現(xiàn)是計算機制造技術高速發(fā)展的產物,它是嵌入式控制系統(tǒng)的核心,如今,它已廣泛的應用到我們生活的各個領域,電子、科技、通信、汽車、工業(yè)等。本設計是基于51系列單片機來進行的數(shù)字計算器系統(tǒng)設計,可以完成計算器的鍵盤輸入,進行加、減、乘、除六位數(shù)范圍內的基本四則運算,并在LCD上顯示相應的結果。設計電路采用AT89C51單片機為主要控制電路,利用MM74C922作為計算器4*4鍵盤的掃描IC讀取鍵盤上的輸入。顯示采用字符LCD靜態(tài)顯示。軟件方面使用C語言編程,并用PROTUES仿真?!娟P鍵詞】 硬件課程設計

2、 簡單計算器 單片機 LCD 【正 文】 一、總體設計根據(jù)功能和指標要求,本系統(tǒng)選用MCS-51系列單片機為主控機。通過擴展必要的外圍接口電路,實現(xiàn)對計算器的設計。具體設計如下:(1)由于要設計的是簡單的計算器,可以進行四則運算,為了得到較好的顯示效果,采用LCD 顯示數(shù)據(jù)和結果。(2)另外鍵盤包括數(shù)字鍵(09)、符號鍵(+、-、×、÷)、清除鍵和等號鍵,故只需要16 個按鍵即可,設計中采用集成的計算鍵盤。(3)執(zhí)行過程:開機顯示零,等待鍵入數(shù)值,當鍵入數(shù)字,通過LCD顯示出來,當鍵入+、-、*、/運算符,計算器在內部執(zhí)行數(shù)值轉換和存儲,并等待再次鍵入數(shù)值,當再鍵入數(shù)值后將

3、顯示鍵入的數(shù)值,按等號就會在LCD上輸出運算結果。(4)錯誤提示:當計算器執(zhí)行過程中有錯誤時,會在LCD上顯示相應的提示,如:當輸入的數(shù)值或計算得到的結果大于計算器的表示范圍時,計算器會在LCD上提示溢出;當除數(shù)為0時,計算器會在LCD上提示錯誤。系統(tǒng)模塊圖:二、硬件設計(一)、總體硬件設計本設計選用AT89C51單片機為主控單元。 顯示部分:采用LCD靜態(tài)顯示。按鍵部分:采用4*4鍵盤;利用MM74C922為4*4的鍵盤掃描IC,讀取輸入的鍵值??傮w設計效果如下圖:(二)、鍵盤接口電路計算器輸入數(shù)字和其他功能按鍵要用到很多按鍵,如果采用獨立按鍵的方式,在這種情況下,編程會很簡單,但是會占用大

4、量的I/O 口資源,因此在很多情況下都不采用這種方式,而是采用矩陣鍵盤的方案。矩陣鍵盤采用四條I/O 線作為行線,四條I/O 線作為列線組成鍵盤,在行線和列線的每個交叉點上設置一個按鍵。這樣鍵盤上按鍵的個數(shù)就為4×4個。這種行列式鍵盤結構能有效地提高單片機系統(tǒng)中I/O 口的利用率。矩陣鍵盤的工作原理:計算器的鍵盤布局如圖2所示:一般有16個鍵組成,在單片機中正好可以用一個P口實現(xiàn)16個按鍵功能,這種形式在單片機系統(tǒng)中也最常用。圖 2 矩陣鍵盤布局圖矩陣鍵盤內部電路圖如圖3所示:為了進一步節(jié)省單片機I/O口資源,我們在設計中使用了MM74C922芯片。MM74C922是一款4*4鍵盤掃

5、描IC,它可檢測到與之相連的4*4鍵盤的按鍵輸入,并通過數(shù)據(jù)輸出口將按鍵相應的編碼輸出。其引腳圖如圖4所示:圖4 MM94C22硬件圖MM74C922引腳說明:(1) Y1Y4(腳1腳4):44鍵盤第一列至第四。(2) X1X4(腳11、10、8、7):44鍵盤第一行至第四行。(3) DOA DOD(Dataout AD,腳1417):按鍵之BCD碼輸出,其中DOA為LSB,DOD為MSB。(4) VCC(腳18):電源腳,+3V+15V。ab126計算公式大全(5) GND(腳9):接地管腳。新藝圖庫(6) OSC(Oscillator,腳5):鍵盤掃描電路之頻率所需外加電容的連引腳。(7)

6、 KBM(Keyboard Mask,腳6):內部消除開關彈跳電路所外加電容的引腳。(8) OE(Output Enable,腳13):芯片致能腳,接低電位可使芯片致能。(9) DA(Data Available,腳12):數(shù)據(jù)有效輸出腳。任一按鍵按下時,此腳位會輸出高電位,按鍵釋放后此腳又會恢復為低電位。MM74C922對各按鍵的響應如下表所示:如下圖5所示,在本設計中,計算器輸入鍵盤的4條行線、列線分別連接到MM74C922的X1-X4、Y1-Y4引腳,MM74C922的數(shù)據(jù)輸出口與單片機的P2口相連,MM74C922的DA引腳經過一個非門連接到單片機的/INT0腳,當MM74C922檢測

7、到鍵盤輸入時,DA產生高電平,與之相連的/INT0檢測到低電平,給單片機一個中斷,單片機從P2口的低四位讀入鍵盤上按下的鍵的值。圖5 鍵盤接口電路圖 (三)、LCD顯示模塊本設計采用LCD液晶顯示器來顯示輸出數(shù)據(jù)。通過D0-D7引腳向LCD寫指令字或寫數(shù)據(jù)以使LCD實現(xiàn)不同的功能或顯示相應數(shù)據(jù)。圖6 LCD 模塊(四)運算模塊(單片機控制)MCS-51 單片機是在一塊芯片中集成了CPU、RAM、ROM、定時器/計數(shù)器和多功能I/O等一臺計算機所需要的基本功能部件。如果按功能劃分,它由如下功能部件組成,即微處理器(CPU)、數(shù)據(jù)存儲器(RAM)、程序存儲器(ROM/EPROM)、并行I/O 口、

8、串行口、定時器/計數(shù)器、中斷系統(tǒng)及特殊功能寄存器(SFR)。單片機是靠程序運行的,并且可以修改。通過不同的程序實現(xiàn)不同的功能,尤其是特殊的獨特的一些功能,通過使用單片機編寫的程序可以實現(xiàn)高智能,高效率,以及高可靠性!因此我們采用單片機作為計算器的主要功能部件,可以很快地實現(xiàn)運算功能。三、軟件設計現(xiàn)實生活中人們熟知的計算器,其功能主要如下:1、 鍵盤輸入;2、 數(shù)值顯示;3、 加、減、乘、除四則運算;4、 對錯誤的控制及提示;針對上述功能,計算器軟件程序要完成以下模塊的設計:1、 鍵盤輸入檢測模塊2、 LCD顯示模塊;3、 算術運算模塊4、 錯誤處理及提示模塊。系統(tǒng)總流程圖開始初始化參數(shù)初始化L

9、CD顯示有鍵輸入?讀取鍵碼LCD顯示數(shù)字鍵清零鍵功能鍵狀態(tài)清零輸入數(shù)值數(shù)值送顯示緩沖YN等待數(shù)值輸入結果送顯示緩沖根據(jù)上次功能鍵和輸入的數(shù)據(jù)計算結果本次功能鍵?等待數(shù)值輸入結果送顯示緩沖等待數(shù)值輸入結果送顯示緩沖分塊程序設計1、 鍵盤輸入檢測程序設計有鍵按下時,單片機響應外部中斷0,轉入外部中斷0中斷處理函數(shù),在中斷處理函數(shù)中完成對按鍵的判斷,以進行下一步的程序處理。/*外部中斷0處理函數(shù)*/void INT_0(void) interrupt 0 using 0key=translate(P2&0x0f);if(key<='9'&&key>

10、='0') /判斷按下的鍵是否為數(shù)值num=num*10+(key-'0');if (operators>0)y=num;iny=1;elsex=num;if(num<134217728&&num>-134217728) /當前數(shù)值是否超出限定范圍display(num);elsedataoverflow();elseswitch(key)case 'c':x=0;y=0;num=0;iny=0;operators=0;display(num);break;case '=':arithmetic(

11、);iny=0;operators=0;num=0;break;case '+': if (operators)arithmetic();operators=1;num=0;break;case '-': if (operators)arithmetic();operators=2;num=0;break;case '*': if (operators)arithmetic();operators=3;num=0;break;case '/':if (operators)arithmetic();operators=4;num=0

12、;break;2、 LCD顯示程序設計利用LCD靜態(tài)顯示,通過程序向LCD寫指令字或數(shù)據(jù)使LCD完成不同功能或顯示相應數(shù)據(jù)。/*LCD初始化函數(shù)*/void init_LCM()write_com(0x30);write_com(0x30);write_com(0x30);write_com(0x38);write_com(0x08);write_com(0x01);write_com(0x06);write_com(0x0e);/*LCD寫數(shù)據(jù)函數(shù)*/void write_data(char ddata)RS=1;/*寫指令*/R_W=0;EN=1;/*使能信號開*/P1=ddata;/*將

13、數(shù)據(jù)送入p1口*/EN=0;/*使能信號關*/check_BF();/*LCD寫指令函數(shù)*/void write_com(char command) RS=0;/*寫指令*/R_W=0;EN=1;/*使能信號開*/P1=command;/*將數(shù)據(jù)送入p1口*/EN=0;/*使能信號關*/check_BF();/*LCD檢查忙碌函數(shù)*/void check_BF()char i,x=0x80;P1=0xff;while(x&0x80)RS=0;R_W=1;EN=1;x=P1;EN=0;for (i=0;i<10;i+);EN=0;/*關閉使能信號*/*LCD清屏函數(shù)*/void c

14、learLCD()write_com(0x01);/*LCD顯示函數(shù)*/void display(long a)long temp,b,c=-1;int lenth=1,i,j;clearLCD();if(a<0)a=a*c;write_data('-'); temp=a;while(temp=temp/10)!=0)lenth+;for(i=lenth;i>0;i-)b=1;for(j=0;j<i-1;j+)b=b*10;write_data(0x30+a/b);a=a%b;3、 算術運算程序設計開始運算符是?加乘減除除數(shù)為0?運算結果溢出?錯誤信息送顯示緩

15、沖數(shù)值送顯示緩沖YYNN4、 錯誤處理及提示程序設計/*除數(shù)為處理函數(shù)*/void dealerror()int i=0;clearLCD();for(i=0;i<5;i+)write_data(errori);/*數(shù)值溢出處理函數(shù)*/void dataoverflow()int i=0;clearLCD();for(i=0;i<8;i+)write_data(overflowi);四、聯(lián)機調試在聯(lián)機調試的過程中,一開始沒有做數(shù)值溢出方面的控制,導致LCD顯示的輸入數(shù)據(jù)或計算結果與實際不相符。后來經過計算得到有符號長整型的表示范圍為-21474836482147483647,遂取2

16、的30次方1073741824為本計算器的最大表示范圍,以此來控制數(shù)值溢出,修改后,LCD顯示正確。五、總結課程設計是培養(yǎng)我們綜合運用所學知識,發(fā)現(xiàn)、提出、分析和解決實際問題,鍛煉實踐能力的重要環(huán)節(jié),是對我們實際工作能力的具體訓練和考察過程。隨著科學技術發(fā)展的日新日異,單片機已經成為當今計算機應用中空前活躍的領域, 在生活中可以說得是無處不在。因此作為計算機專業(yè)的學生來說掌握單片機的開發(fā)技術是十分重要的。 我們的題目是基于單片機設計簡易計算器,對于我們這些實踐中的新手來說,這是一次考驗。這次課程設計我們學到很多很多的東西,學會了怎么在遇到問題時去解決問題。不僅鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識,掌握了一種系統(tǒng)的研究方法,可以進行一些簡單的編程。通過這次課程設計使我懂

溫馨提示

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

評論

0/150

提交評論