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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

8、加以分析。5.1 Proteus軟件仿真調(diào)試5.2 硬件調(diào)試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;/報(bào)錯(cuò)時(shí)使用的段碼 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; /結(jié)果顯示程序 void display_result() display1(result1); delay(6); display2(result2); delay(6); display3(result3); delay(6); display4(result4); delay(6); /定義延時(shí)程序 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; /對(duì)所有行置高電平,列全為低電平/P0=0xff;temp1=P0;if(temp1!=0x0f) /如果有按鍵按下 /put_offleds(); /delay(3);temp1=P0; /延時(shí)消抖if(temp1!=0x0f) P0=0xf0; /翻轉(zhuǎn)掃描列狀態(tài) /P0=0xff; temp2=P0; if(temp1=0x0e) /若第一行有按鍵按下 k=0; /鍵盤按下動(dòng)作標(biāo)記 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; /鍵盤按下動(dòng)作標(biāo)記 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;/鍵盤按下動(dòng)作標(biāo)記 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; /鍵盤按下動(dòng)作標(biāo)記 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; /延時(shí)程序 void delay10ms() unsigned char i,j; for(i=0;i25;i+) for(j=0;j9) /報(bào)錯(cuò)標(biāo)記 Result=0x79; break;case -: /減法運(yùn)算 Result=Number1-Number2; if(Number1Number2) Res

17、ult=0x79; /報(bào)錯(cuò)標(biāo)記 break;/考慮溢出設(shè)計(jì)case *: /乘法運(yùn)算 Result=Number1*Number2; if(a4*b4!=0|a3*b3!=0) /報(bào)錯(cuò)標(biāo)記 Result=0x79; break;case /:/除法運(yùn)算 Result=Number1/Number2; if(Number1Number2) Result=0x79; /報(bào)錯(cuò)標(biāo)記break; default:Result=Number1;break; result4=Result/1000; result3=Result%1000/100; result2=Result%100/10; result

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

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(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)論