基于msc51單片機實現(xiàn)的四位4乘4矩陣鍵盤計算器的C語言程序及其PROTUES電路和仿真_第1頁
基于msc51單片機實現(xiàn)的四位4乘4矩陣鍵盤計算器的C語言程序及其PROTUES電路和仿真_第2頁
基于msc51單片機實現(xiàn)的四位4乘4矩陣鍵盤計算器的C語言程序及其PROTUES電路和仿真_第3頁
基于msc51單片機實現(xiàn)的四位4乘4矩陣鍵盤計算器的C語言程序及其PROTUES電路和仿真_第4頁
基于msc51單片機實現(xiàn)的四位4乘4矩陣鍵盤計算器的C語言程序及其PROTUES電路和仿真_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、單片機原理及接口技術課程設計報告設計題目: 計算器設計 學 號: 100230205 姓 名: 費博文 指導教師: 張揚 信息與電氣工程學院二零一三年七月計算器設計單片機體積小,功耗小,價格低,用途靈活,無處不在,屬專用計算機。是一種特殊器件,需經(jīng)過專門學習方能掌握應用,應用中要設計專用的硬件和軟件。近年來,單片機以其體積小、價格廉、面向控制等獨特優(yōu)點,在各種工業(yè)控制、儀器儀表、設備、產(chǎn)品的自動化、智能化方面獲得了廣泛的應用。與此同時,單片機應用系統(tǒng)的可靠性成為人們越來越關注的重要課題。影響可靠性的因素是多方面的,如構成系統(tǒng)的元器件本身的可靠性、系統(tǒng)本身各部分之間的相互耦合因素等。其中系統(tǒng)的抗

2、干擾性能是系統(tǒng)可靠性的重要指標。數(shù)學是科技進步的重要工具,數(shù)據(jù)的運算也隨著科技的進步越發(fā)變得繁瑣復雜,計算器的出現(xiàn)可以大大解放人在設計計算過程中的工作量,使計算的精度、速度得到改善,通過msc51單片機,矩陣鍵盤和LED數(shù)碼管可以實現(xiàn)簡單的四位數(shù)的四則運算和顯示,并當運算結果超出范圍時予以報錯。注:這一部分主要描述題目的背景和意義,對設計所采取的主要方法做一下簡要描述。字數(shù)不要太多,300-500字。另注:本文要當做模板使用,不要隨意更改字體、字號、行間距等,學會使用格式刷。文中給出的各項內容都要在大家的報告中體現(xiàn),可采用填空的方式使用本模板。1. 設計任務結合實際情況,基于AT89C51單片

3、機設計一個計算器。該系統(tǒng)應滿足的功能要求為:(1) 實現(xiàn)簡單的四位十進制數(shù)字的四則運算;(2) 按鍵輸入數(shù)字,運算法則;(3) LED數(shù)碼管移位顯示每次輸入的數(shù)據(jù)和運算結果;(4) 當運算結果超出范圍時實現(xiàn)報錯。 主要硬件設備:AT89C51單片機、LED數(shù)碼管、矩陣鍵盤。注:這一部分需要寫明系統(tǒng)功能需求,用到的主要硬件(參考實驗箱的說明書)。2. 整體方案設計計算器以AT89C51單片機作為整個系統(tǒng)的控制核心,應用其強大的I/O功能和計算速度,構成整個計算器。通過矩陣鍵盤輸入運算數(shù)據(jù)和符號,送入單片機進行數(shù)據(jù)處理。經(jīng)單片機運算后判斷是否超出要求的運算范圍,控制LED數(shù)碼管的輸出原理圖如圖2-

4、1所示。圖2-1 基于單片機的變頻調速恒壓供水系統(tǒng)原理圖本系統(tǒng)硬件主要由矩陣鍵盤、I/O輸入輸出、顯示系統(tǒng)等幾部分組成。各模塊的主要功能如下:(1)矩陣鍵盤將十六進制編碼的數(shù)字傳入單片機。(2) 單片機掃描鍵盤信號并接收,對輸入的鍵盤信號進行處理(3) LED以動態(tài)掃描的方式移位顯示每次輸入的數(shù)據(jù)和最后的運算結果。系統(tǒng)的整體設計方案設計圖如圖2-2所示。圖2-2 系統(tǒng)的整體方案設計圖注:文中出現(xiàn)的所有框圖、流程圖都要用VISIO畫,不允許從文檔中裁剪然后粘貼。要注意圖的格式,圖中的文字大小不要大于正文,圖題用五號宋體,居中。3. 系統(tǒng)硬件電路設計3.1 時鐘電路本設計采用外部時鐘方式,使用外部

5、振蕩器產(chǎn)生脈沖信號,采用12MHz的石英晶體振蕩器,結構如圖3-1。圖3-1 時鐘電路和復位電路3.2 復位電路 本設計采用按鍵手動電平復位電路,通過RST端經(jīng)電阻與電源Vcc接通而實現(xiàn),結構如圖3-1。 3.3 數(shù)碼管顯示電路本設計所用數(shù)碼管顯示電路采用4位紅色共陰極數(shù)碼管接上拉電阻實現(xiàn),其結構如圖3-2。圖3-2數(shù)碼管顯示電路 3.4 鍵盤輸入電路本設計采用4*4矩陣鍵盤實現(xiàn)數(shù)據(jù)和運算法則的輸入。按鍵設置在行、列線的交點上,行列線分別連接的按鍵開關的兩端,并通過上來電阻街道+5V上。無按鍵按下時,行、列線均處于高電平,當有按鍵按下是,相對應的行和列電平為低電平。此特點也用于單片機I/O口對

6、矩陣鍵盤的掃描。矩陣鍵盤和單片機的連接如圖3-2所示。圖3-2 矩陣鍵盤與單片機的連接圖注:以上各部分按照電路功能模塊化介紹器件選型、器件特性、電路設計思路、電路功能等,要注意與第2小節(jié)中的整體方案設計圖相對應。文中出現(xiàn)的電路原理圖同樣不能從資料中裁剪,可從自己設計的Proteus圖中拷貝。4. 系統(tǒng)程序設計4.1 主程序流程圖單片機控制I/O口循環(huán)掃描鍵盤狀態(tài),當檢測到有按鍵按下時,將按鍵信號輸入單片機,處理并輸出顯示,若無按鍵按下,則保持前一個數(shù)據(jù)的顯示狀態(tài)。系統(tǒng)主程序流程圖如圖4-1所示。圖4-1 主程序流程圖4.2 鍵盤掃描子程序流程圖先檢測是否有按鍵按下,當有按鍵按下時,逐行檢測每一

7、行的列狀態(tài),將準確的鍵盤信號輸入單片機。鍵盤掃描流程圖如圖4-2所示。圖4-2 鍵盤掃描流程圖4.3 按鍵處理輸出顯示子程序流程圖輸出的子程序包括運算數(shù)的輸出和結果輸出,當有數(shù)字鍵按下,之前的數(shù)字左移一位,最新按下的數(shù)字顯示在第一位,當有符號鍵按下,屏幕清零,當有等號鍵按下,判斷運算結果是否符合要求,若符合要求,輸出結果,不符合要求,輸出報錯提示。輸出顯示子程序流程圖如圖4-3所示。圖4-3按鍵處理顯示輸出子程序流程圖5. 系統(tǒng)調試這一部分分為Proteus軟件仿真調試和硬件調試兩部分,分別給出調試過程、調試時應注意的問題,分析遇到的問題及問題的解決方法,Proteus調試可截屏運行結果圖形并

8、加以分析。5.1 Proteus軟件仿真調試5.2 硬件調試6. 程序清單#include #include #include #include #include unsigned char key_scan(); void delay10ms(); unsigned char key_free(); void display(); void display1(unsigned int number1); void display2(unsigned int number2); void display3(unsigned int number3); void display4(unsigne

9、d int number4); void display_result(); void delay(unsigned int time); void key_deal(); void display_error(); void caculate(); void put_offleds(); unsigned char numbertable=0x3F,0x06,0x5B,0x4F,0x66,0x6d,0x7D,0x07,0x7f,0x6f;/1至9的共陰顯示段碼 unsigned char errortable=0x86;/報錯時使用的段碼 unsigned char weitable=0xf

10、e,0xfd,0xfb,0xf7; /共陰數(shù)碼管位選 unsigned int temp,temp1,temp2,number1,number2,number3,number4,a1,a2,a3,a4,b1,b2,b3,b4,c1,c2,c3,c4,way,k,k1,waytest,result_test; unsigned int Result;result1,result2,result3,result4,E_test; unsigned char key; void main() while(1) key_scan(); key_free(); key_deal(); /新的顯示函數(shù) v

11、oid display() display1(number1); delay(6); display2(number2); delay(6); display3(number3); delay(6); display4(number4); delay(6); void display1(unsigned int number1) P2= weitable3;P1=numbertablenumber1; void display2(unsigned int number2) P2= weitable2;P1=numbertablenumber2; void display3(unsigned i

12、nt number3) P2= weitable1;P1=numbertablenumber3; void display4(unsigned int number4) P2= weitable0;P1=numbertablenumber4; /結果顯示程序 void display_result() display1(result1); delay(6); display2(result2); delay(6); display3(result3); delay(6); display4(result4); delay(6); /定義延時程序 void delay(unsigned int

13、time) unsigned int i,j;for(i=time;i0;i-) for(j=112;j0;j-); /按鍵掃描子程序 unsigned char key_scan() P0=0x0f; /對所有行置高電平,列全為低電平/P0=0xff;temp1=P0;if(temp1!=0x0f) /如果有按鍵按下 /put_offleds(); /delay(3);temp1=P0; /延時消抖if(temp1!=0x0f) P0=0xf0; /翻轉掃描列狀態(tài) /P0=0xff; temp2=P0; if(temp1=0x0e) /若第一行有按鍵按下 k=0; /鍵盤按下動作標記 swi

14、tch(temp2) case 0xe0: /第一列有人按下 key=7;break; case 0xd0: /第二列有人按下 key=8;break; case 0xb0: /若第三列有人按下 key=9;break; case 0x70: /若第四列有人按下 key=/;break; else if (temp1=0x0d) /若第二行有按鍵按下 k=0; /鍵盤按下動作標記 switch(temp2) case 0xe0: /第一列有人按下 key=4;break; case 0xd0: /第二列有人按下 key=5;break; case 0xb0: /若第三列有人按下 key=6;b

15、reak; case 0x70: /若第四列有人按下 key=*;break; else if(temp1=0x0b) /若第三行有按鍵按下 k=0;/鍵盤按下動作標記 switch(temp2) case 0xe0: /第一列有人按下 key=1;break; case 0xd0: /第二列有人按下 key=2;break; case 0xb0: /若第三列有人按下 key=3;break; case 0x70: /若第四列有人按下 key=-;break; else if (temp1=0x07) /若第4行有按鍵按下 k=0; /鍵盤按下動作標記 switch(temp2) case 0

16、xe0: /第一列有人按下 key=.;break; case 0xd0: /第二列有人按下 key=0;break; case 0xb0: /若第三列有人按下 key=;break; case 0x70: /若第四列有人按下 key=+;break; k+=1; return key; /延時程序 void delay10ms() unsigned char i,j; for(i=0;i25;i+) for(j=0;j9) /報錯標記 Result=0x79; break;case -: /減法運算 Result=Number1-Number2; if(Number1Number2) Res

17、ult=0x79; /報錯標記 break;/考慮溢出設計case *: /乘法運算 Result=Number1*Number2; if(a4*b4!=0|a3*b3!=0) /報錯標記 Result=0x79; break;case /:/除法運算 Result=Number1/Number2; if(Number1Number2) Result=0x79; /報錯標記break; default:Result=Number1;break; result4=Result/1000; result3=Result%1000/100; result2=Result%100/10; result

18、1=Result%10; /定義關閉數(shù)碼管函數(shù) void put_offleds() P1=0x00; P2=0xff; 注:以上程序清單的格式不能更改,采用Courier New字體,5號大小,背景色不能缺,注意排列整齊、注釋等。本部分對整個設計過程進行總結說明,對取得的成果進行簡單評價,對存在的問題給出以后的展望或解決辦法。其他格式說明以下主要對文中出現(xiàn)的圖、表以及公式格式給出相關示例,請大家按照如下格式編排。對圖的格式要進行設置,首先設置其版式為“嵌入型”,然后將圖和圖下面的圖號及圖題居中排列,如圖2-1所示。圖2-1 水罐液位控制結構圖XXXX。XXX如表2-1所示。表2-1 XXX材料名稱化學成分()力學性能CMnCr其他抗拉強度b/N/mm2屈服強度s/N/mm2彈性模量E/N/mm2伸長率/布氏硬度/HBS對于文中出現(xiàn)的所有公式,要求必須用公式編輯器進行編輯

溫馨提示

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

評論

0/150

提交評論