版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、單片機原理與接口技術(shù)課程設(shè)計報告設(shè)計題目: 計算器設(shè)計 信息與電氣工程學(xué)院二零一三年七月20 / 20計算器設(shè)計單片機體積小,功耗小,價格低,用途靈活,無處不在,屬專用計算機。是一種特殊器件,需經(jīng)過專門學(xué)習(xí)方能掌握應(yīng)用,應(yīng)用中要設(shè)計專用的硬件和軟件。近年來,單片機以其體積小、價格廉、面向控制等獨特優(yōu)點,在各種工業(yè)控制、儀器儀表、設(shè)備、產(chǎn)品的自動化、智能化方面獲得了廣泛的應(yīng)用。與此同時,單片機應(yīng)用系統(tǒng)的可靠性成為人們越來越關(guān)注的重要課題。影響可靠性的因素是多方面的,如構(gòu)成系統(tǒng)的元器件本身的可靠性、系統(tǒng)本身各部分之間的相互耦合因素等。其中系統(tǒng)的抗干擾性能是系統(tǒng)可靠性的重要指標。數(shù)學(xué)是科技進步的重要
2、工具,數(shù)據(jù)的運算也隨著科技的進步越發(fā)變得繁瑣復(fù)雜,計算器的出現(xiàn)可以大大解放人在設(shè)計計算過程中的工作量,使計算的精度、速度得到改善,通過msc51單片機,矩陣鍵盤和LED數(shù)碼管可以實現(xiàn)簡單的四位數(shù)的四則運算和顯示,并當(dāng)運算結(jié)果超出圍時予以報錯。注:這一部分主要描述題目的背景和意義,對設(shè)計所采取的主要方法做一下簡要描述。字數(shù)不要太多,300-500字。另注:本文要當(dāng)做模板使用,不要隨意更改字體、字號、行間距等,學(xué)會使用格式刷。文中給出的各項容都要在大家的報告中體現(xiàn),可采用填空的方式使用本模板。1. 設(shè)計任務(wù)結(jié)合實際情況,基于AT89C51單片機設(shè)計一個計算器。該系統(tǒng)應(yīng)滿足的功能要求為:(1) 實現(xiàn)
3、簡單的四位十進制數(shù)字的四則運算;(2) 按鍵輸入數(shù)字,運算法則;(3) LED數(shù)碼管移位顯示每次輸入的數(shù)據(jù)和運算結(jié)果;(4) 當(dāng)運算結(jié)果超出圍時實現(xiàn)報錯。 主要硬件設(shè)備:AT89C51單片機、LED數(shù)碼管、矩陣鍵盤。注:這一部分需要寫明系統(tǒng)功能需求,用到的主要硬件(參考實驗箱的說明書)。2. 整體方案設(shè)計計算器以AT89C51單片機作為整個系統(tǒng)的控制核心,應(yīng)用其強大的I/O功能和計算速度,構(gòu)成整個計算器。通過矩陣鍵盤輸入運算數(shù)據(jù)和符號,送入單片機進行數(shù)據(jù)處理。經(jīng)單片機運算后判斷是否超出要求的運算圍,控制LED數(shù)碼管的輸出原理圖如圖2-1所示。圖2-1 基于單片機的變頻調(diào)速恒壓供水系統(tǒng)原理圖本系
4、統(tǒng)硬件主要由矩陣鍵盤、I/O輸入輸出、顯示系統(tǒng)等幾部分組成。各模塊的主要功能如下:(1)矩陣鍵盤將十六進制編碼的數(shù)字傳入單片機。(2) 單片機掃描鍵盤信號并接收,對輸入的鍵盤信號進行處理(3) LED以動態(tài)掃描的方式移位顯示每次輸入的數(shù)據(jù)和最后的運算結(jié)果。系統(tǒng)的整體設(shè)計方案設(shè)計圖如圖2-2所示。圖2-2 系統(tǒng)的整體方案設(shè)計圖注:文中出現(xiàn)的所有框圖、流程圖都要用VISIO畫,不允許從文檔中裁剪然后粘貼。要注意圖的格式,圖中的文字大小不要大于正文,圖題用五號宋體,居中。3. 系統(tǒng)硬件電路設(shè)計3.1 時鐘電路本設(shè)計采用外部時鐘方式,使用外部振蕩器產(chǎn)生脈沖信號,采用12MHz的石英晶體振蕩器,結(jié)構(gòu)如圖
5、3-1。圖3-1 時鐘電路和復(fù)位電路3.2 復(fù)位電路 本設(shè)計采用按鍵手動電平復(fù)位電路,通過RST端經(jīng)電阻與電源Vcc接通而實現(xiàn),結(jié)構(gòu)如圖3-1。3.3 數(shù)碼管顯示電路本設(shè)計所用數(shù)碼管顯示電路采用4位紅色共陰極數(shù)碼管接上拉電阻實現(xiàn),其結(jié)構(gòu)如圖3-2。圖3-2數(shù)碼管顯示電路 3.4 鍵盤輸入電路本設(shè)計采用4*4矩陣鍵盤實現(xiàn)數(shù)據(jù)和運算法則的輸入。按鍵設(shè)置在行、列線的交點上,行列線分別連接的按鍵開關(guān)的兩端,并通過上來電阻街道+5V上。無按鍵按下時,行、列線均處于高電平,當(dāng)有按鍵按下是,相對應(yīng)的行和列電平為低電平。此特點也用于單片機I/O口對矩陣鍵盤的掃描。矩陣鍵盤和單片機的連接如圖3-2所示。圖3-2
6、 矩陣鍵盤與單片機的連接圖注:以上各部分按照電路功能模塊化介紹器件選型、器件特性、電路設(shè)計思路、電路功能等,要注意與第2小節(jié)中的整體方案設(shè)計圖相對應(yīng)。文中出現(xiàn)的電路原理圖同樣不能從資料中裁剪,可從自己設(shè)計的Proteus圖中拷貝。4. 系統(tǒng)程序設(shè)計4.1 主程序流程圖單片機控制I/O口循環(huán)掃描鍵盤狀態(tài),當(dāng)檢測到有按鍵按下時,將按鍵信號輸入單片機,處理并輸出顯示,若無按鍵按下,則保持前一個數(shù)據(jù)的顯示狀態(tài)。系統(tǒng)主程序流程圖如圖4-1所示。圖4-1 主程序流程圖4.2 鍵盤掃描子程序流程圖先檢測是否有按鍵按下,當(dāng)有按鍵按下時,逐行檢測每一行的列狀態(tài),將準確的鍵盤信號輸入單片機。鍵盤掃描流程圖如圖4-
7、2所示。圖4-2 鍵盤掃描流程圖4.3 按鍵處理輸出顯示子程序流程圖輸出的子程序包括運算數(shù)的輸出和結(jié)果輸出,當(dāng)有數(shù)字鍵按下,之前的數(shù)字左移一位,最新按下的數(shù)字顯示在第一位,當(dāng)有符號鍵按下,屏幕清零,當(dāng)有等號鍵按下,判斷運算結(jié)果是否符合要求,若符合要求,輸出結(jié)果,不符合要求,輸出報錯提示。輸出顯示子程序流程圖如圖4-3所示。圖4-3按鍵處理顯示輸出子程序流程圖5. 系統(tǒng)調(diào)試這一部分分為Proteus軟件仿真調(diào)試和硬件調(diào)試兩部分,分別給出調(diào)試過程、調(diào)試時應(yīng)注意的問題,分析遇到的問題與問題的解決方法,Proteus調(diào)試可截屏運行結(jié)果圖形并加以分析。5.1 Proteus軟件仿真調(diào)試5.2 硬件調(diào)試6
8、. 程序清單#include <reg51.h> #include <math.h> #include <absacc.h> #include <string.h> #include<stdio.h> unsigned char key_scan(); void delay10ms(); unsigned char key_free(); void display(); void display1(unsigned int number1); void display2(unsigned int number2); void disp
9、lay3(unsigned int number3); void display4(unsigned 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 err
10、ortable=0x86;/報錯時使用的段碼 unsigned char weitable=0xfe,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
11、(1) key_scan(); key_free(); key_deal(); /新的顯示函數(shù) void 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= weitable
12、2;P1=numbertablenumber2; void display3(unsigned int 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(res
13、ult4); delay(6); /定義延時程序 void delay(unsigned int time) unsigned int i,j;for(i=time;i>0;i-) for(j=112;j>0;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; /翻轉(zhuǎn)掃描列狀態(tài) /P0=0xf
14、f; temp2=P0; if(temp1=0x0e) /若第一行有按鍵按下 k=0; /鍵盤按下動作標記 switch(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;br
15、eak; case 0xd0: /第二列有人按下 key=5;break; case 0xb0: /若第三列有人按下 key=6;break; 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=&
16、#39;-'break; else if (temp1=0x07) /若第4行有按鍵按下 k=0; /鍵盤按下動作標記 switch(temp2) case 0xe0: /第一列有人按下 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; fo
17、r(i=0;i<25;i+) for(j=0;j<80;j+) /延時1ms /等待按鍵釋放 unsigned char key_free() key=key_scan(); P0=0x0F; /所有行置高電平 /P0=0xff; temp=P0;while(temp!=0x0F) /如果仍有鍵按下 temp=P0; ; return(key);/返回鍵值/按鍵處理程序void key_deal() /對按下次數(shù)初始化 if(key='.') /如果是清零符號 number1=0; number2=0; number3=0; number4=0; /k=0; dis
18、play(); waytest=0; result_test=0; E_test=0; /嵌入顯示程序 if(key!='+'&&key!='-'&&key!='*'&&key!='/'&&key!='.'&&key!='=') /如果key是數(shù)字 /*if(E_test=1) number1=0; number2=0; number3=0; number4=0; E_test=0; */ if(k=1) number4
19、=number3; number3=number2; /移位顯示 number2=number1;/number1=key; /k1=k; number1=key; /*if(k=5) display_error(); */ display(); /嵌入顯示程序 if(key='+'|key='-'|key='*'|key='/') /如果key是運算符 way=key; if(waytest!=1) a1=number1; a2=number2; a3=number3; a4=number4; waytest=1; number
20、1=0; number2=0; number3=0; number4=0; display(); /k=0; /記錄運算法則 /合成第一個運算數(shù)字賦值給number1并對number清零 if(key='=') E_test=1; / k=0; if(waytest=1)/對第二個數(shù)進行賦值并對number清零 b1=number1; b2=number2; b3=number3; b4=number4; caculate(); /調(diào)用運算程序if(Result!=0x79) display_result();else display_error(); void display
21、_error() /定義報錯顯示程序 P2=weitable1; P1=0x79; /新的運算子程序 void caculate() unsigned int Number1,Number2; Number1=a1+(a2*10)+(a3*100)+(a4*1000); Number2=b1+(b2*10)+(b3*100)+(b4*1000); switch(way) case '+': /加號運算 Result=Number1+Number2; if(a4+b4>9) /報錯標記 Result=0x79; break;case '-': /減法運算 R
22、esult=Number1-Number2; if(Number1<Number2) Result=0x79; /報錯標記 break;/考慮溢出設(shè)計case '*': /乘法運算 Result=Number1*Number2; if(a4*b4!=0|a3*b3!=0) /報錯標記 Result=0x79; break;case '/':/除法運算 Result=Number1/Number2; if(Number1<Number2) Result=0x79; /報錯標記break; default:Result=Number1;break; result4=Result/1000
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生產(chǎn)現(xiàn)場管理手冊
- 珠寶設(shè)計制作合同
- 毛染整工藝品質(zhì)提升策略
- 2024版專業(yè)標準化版本技術(shù)服務(wù)合同
- 2024版網(wǎng)站從事電子商務(wù)活動合同
- 2024版重慶市蠶繭養(yǎng)殖訂購合同(參考文本)
- 采油工程課程設(shè)計(共10篇)
- 附二醫(yī)院危險化學(xué)藥品管理制度重要性(34篇)
- 特種設(shè)備培訓(xùn)教育制度重要性(34篇)
- 2024年安全生產(chǎn)目標管理與考核制度范文(四篇)
- 全國教育科學(xué)規(guī)劃課題重要事項變更申請審批表
- (完整word版)建筑勞務(wù)公司項目部工作管理制度
- 一年級安全教育PPT經(jīng)典實用
- 二年級上冊數(shù)學(xué)應(yīng)用題100道
- 佳能EOS600D使用說明
- 勝利油田生產(chǎn)安全事故問責(zé)制暫行規(guī)定
- 信息化項目建設(shè)管理難點分析與對策
- 建筑裝飾工程施工組織設(shè)計方案(完整版)
- 上海版高中二年級第二學(xué)期《棱柱的體積》說課稿
- 臨床營養(yǎng)科工作流程(基本診療路徑)
- 鹽城內(nèi)河港市區(qū)港區(qū)步鳳作業(yè)區(qū)碼頭工程環(huán)境影響評價
評論
0/150
提交評論