電子技術(shù)綜合設(shè)計(jì)二設(shè)計(jì)報(bào)告(點(diǎn)陣計(jì)算器)_第1頁
電子技術(shù)綜合設(shè)計(jì)二設(shè)計(jì)報(bào)告(點(diǎn)陣計(jì)算器)_第2頁
電子技術(shù)綜合設(shè)計(jì)二設(shè)計(jì)報(bào)告(點(diǎn)陣計(jì)算器)_第3頁
電子技術(shù)綜合設(shè)計(jì)二設(shè)計(jì)報(bào)告(點(diǎn)陣計(jì)算器)_第4頁
電子技術(shù)綜合設(shè)計(jì)二設(shè)計(jì)報(bào)告(點(diǎn)陣計(jì)算器)_第5頁
已閱讀5頁,還剩20頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、二一六二一七 學(xué)年 第 一 學(xué)期信息科學(xué)與工程學(xué)院電子技術(shù)綜合設(shè)計(jì)(二)課程設(shè)計(jì)報(bào)告 班 級: 姓 名: 學(xué) 號: 指導(dǎo)教師: 二一六年十二月一日1、課程設(shè)計(jì)內(nèi)容及要求:蜂鳴計(jì)算器設(shè)計(jì)利用普中科技HC6800-ES V2.0單片機(jī)開發(fā)板設(shè)計(jì)一款帶蜂鳴器的電子計(jì)算器。主要使用開發(fā)板上的數(shù)碼管、LED點(diǎn)陣、矩陣鍵盤、蜂鳴器等模塊功能。開發(fā)板配有光盤,里面有各個(gè)模塊的使用說明和程序范例可供參考。設(shè)計(jì)要求:1) 每2位同學(xué)分工協(xié)作。2) 上電開機(jī)或者復(fù)位鍵按下之后,2個(gè)4位數(shù)碼管分別自動顯示2個(gè)同學(xué)學(xué)號的后4位。3) 定義矩陣鍵盤的S1-S9代表數(shù)字按鍵1-9,鍵盤S10代表數(shù)字按鍵0,鍵盤S11-S

2、16分別代表按鍵+、-、=、C,其中C按鍵為計(jì)算器清零按鍵,按下C鍵計(jì)算器開始新的計(jì)算。4) 計(jì)算器計(jì)算過程中,用LED點(diǎn)陣顯示+、-、運(yùn)算符號,用8位數(shù)碼管顯示鍵入的數(shù)字和運(yùn)算的結(jié)果。鍵入時(shí)依次顯示并自動移位,例如18+9=27,先鍵入1,顯示1,再鍵入8,1自動左移一位顯示18,鍵入+,LED點(diǎn)陣顯示+,鍵入9,數(shù)碼管之前顯示的18消失并重新顯示為9,鍵入=,數(shù)碼管顯示運(yùn)算結(jié)果27。5) 為這16個(gè)矩陣鍵盤的按鍵分配不同的蜂鳴器頻率,使得按下不同的按鍵蜂鳴器響聲不同,便于識別按鍵。6) 按鍵應(yīng)具有一定的消除抖動功能。7) 所有單片機(jī)程序代碼都用C語言編寫,并燒寫到單片機(jī)中上電自動運(yùn)行。報(bào)告

3、要求: (1) 在報(bào)告中應(yīng)對蜂鳴計(jì)算器系統(tǒng)的設(shè)計(jì)思想、設(shè)計(jì)方法用文字詳細(xì)說明。 (2) 在報(bào)告中應(yīng)有完整的程序清單(必需加注釋)。 (3) 在報(bào)告中應(yīng)有完整的程序流程框圖。(4) 在報(bào)告中應(yīng)有專門的段落說明2位同學(xué)各自的工作內(nèi)容。2個(gè)同學(xué)合寫一個(gè)報(bào)告即可,但封面要有2位同學(xué)的名字和學(xué)號、班級。 (5) 談?wù)勛约和ㄟ^這次設(shè)計(jì)實(shí)踐的收獲和體會。 2、課程考核方式考查要求:提交課程設(shè)計(jì)報(bào)告,設(shè)計(jì)報(bào)告內(nèi)容包括設(shè)計(jì)任務(wù),設(shè)計(jì)要求,軟件設(shè)計(jì),程序結(jié)果描述。1) 每2位同學(xué)合作完成題目的基本功能。包括設(shè)計(jì)報(bào)告和程序清單(帶注釋),運(yùn)行結(jié)果及有關(guān)運(yùn)行說明。2) 程序檢查及功能演示。分優(yōu)、良、中、及格、不及格

4、如為不及格,下學(xué)期需進(jìn)行重修。3) 課程設(shè)計(jì)報(bào)告,正規(guī)書寫打印,否則不計(jì)成績。4) 設(shè)計(jì)報(bào)告禁止雷同,驗(yàn)收時(shí)每位同學(xué)現(xiàn)場演示設(shè)計(jì)結(jié)果,指導(dǎo)老師隨時(shí)針對電路設(shè)計(jì)、程序調(diào)試、代碼功能等各個(gè)方面進(jìn)行提問。5) 驗(yàn)收時(shí)回收開發(fā)板及全部附屬設(shè)備,以備下一級同學(xué)使用,請不要損壞開發(fā)板設(shè)備。3、報(bào)告正文(1)設(shè)計(jì)思想:計(jì)算器計(jì)算過程中,用LED點(diǎn)陣顯示+、-、運(yùn)算符號,用8位數(shù)碼管顯示鍵入的數(shù)字和運(yùn)算的結(jié)果。鍵入時(shí)依次顯示并自動移位,例如18+9=27,先鍵入1,顯示1,再鍵入8,1自動左移一位顯示18,鍵入+,LED點(diǎn)陣顯示+,鍵入9,數(shù)碼管之前顯示的18消失并重新顯示為9,鍵入=27。數(shù)碼管顯示鍵入的數(shù)

5、字和結(jié)果0;LED點(diǎn)陣顯示加減乘除符號;44矩陣鍵盤分別代表按鍵:按鍵S0S9代表數(shù)字按鍵1-9,按鍵S10代表數(shù)字按鍵0,按鍵S11-S16代表 +、C,其中C按鍵為計(jì)算器清零按鍵;這16個(gè)矩陣鍵盤的按鍵分配不同的蜂鳴器頻率,使得其按下時(shí)有不同的聲音以便分別。(2)設(shè)計(jì)方法:89C52單片機(jī)數(shù)碼管LED點(diǎn)陣矩陣鍵盤蜂鳴器編寫一段程序,在上電之后或按復(fù)位鍵之后2個(gè)4位數(shù)碼管分別自動顯示2個(gè)同學(xué)學(xué)號的后4位。通過矩陣鍵盤,LED點(diǎn)陣,數(shù)碼管完成計(jì)算器功能。數(shù)字及結(jié)果在數(shù)碼管上顯示,、在LED點(diǎn)陣上顯示,C鍵為清零鍵,每個(gè)按鍵對應(yīng)不同的音頻。(3)程序流程圖:89C52單片機(jī):C89C52有40個(gè)

6、引腳,4個(gè)8位并行I/O口,1個(gè)全雙工異步串行口,同時(shí)內(nèi)含5個(gè)中斷源,2個(gè)優(yōu)先級,2個(gè)16位定時(shí)/計(jì)數(shù)器。STC89C52的存儲器系統(tǒng)由4K的程序存儲器(ROM),和128B的數(shù)據(jù)存儲器(RAM)組成。STC89C52引腳圖:數(shù)碼管:這類數(shù)碼管可以分為共陽極與共陰極兩種,共陽極就是把所有LED的陽極連接到共同接點(diǎn)com,而每個(gè)LED的陰極分別為a、b、c、d、e、f、g及dp(小數(shù)點(diǎn));共陰極則是把所有LED的陰極連接到共同接點(diǎn)com,而每個(gè)LED的陽極分別為a、b、c、d、e、f、g及dp(小數(shù)點(diǎn)),如下圖所示。圖中的8個(gè)LED分別與上面那個(gè)圖中的ADP各段相對應(yīng),通過控制各個(gè)LED的亮滅來

7、顯示數(shù)字。LED點(diǎn)陣:矩陣鍵盤:首先辨別鍵盤中有無鍵按下,有單片機(jī)I/O口向鍵盤送全掃描字,然后讀入行線狀態(tài)來判斷。方法是:向行線輸出全掃描字00H,把全部列線置為低電平,然后將列線的電平狀態(tài)讀入累加器A中。如果有按鍵按下,總會有一根行線電平被拉至低電平從而使行線不全為1。判斷鍵盤中哪一個(gè)鍵被按下使通過將列線逐列置低電平后,檢查行輸入狀態(tài)來實(shí)現(xiàn)的。方法是:依次給列線送低電平,然后查所有行線狀態(tài),如果全為1,則所按下的鍵不在此列;如果不全為1,則所按下的鍵必在此列,而且是在與零電平行線相交的交點(diǎn)上的那個(gè)鍵。4、 程序清單:/* 實(shí) 驗(yàn) 名 : 計(jì)算器* 使用的IO : 數(shù)碼管使用P0,P2.2,

8、P2.3,P2.4 鍵盤使用P1 點(diǎn)陣使用p3.6,p3.5,p3.4 蜂鳴器使用p1.5* 實(shí)驗(yàn)效果 : * 注 意 :*/#include#include #include#include #define GPIO_DIG P0#define GPIO_KEY P1sbit Beep = P15 ;sbit LSA=P22;sbit LSB=P23;sbit LSC=P24;sbit SRCLK=P36;sbit RCLK=P35;sbit SER=P34;/-列選通控制-/unsigned char code TAB8 = 0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0x

9、fd,0xfe;/-點(diǎn)陣字碼-/unsigned char code CHARCODE48=0x20,0x20,0xf8,0x20,0x20,0x00,0x00,0x00, /加0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x00, /減0x88,0x50,0x20,0x50,0x88,0x00,0x00,0x00, /乘0x20,0x20,0xa8,0x20,0x20,0x00,0x00,0x00, /除;unsigned char code tone =115,102,91,86,77,68,61,57,50,45; /09按鍵音unsigned char cod

10、e DIG_CODE11=0x00,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x3f;/無顯示、1、2、3、4、5、6、7、8、9、0的顯示碼unsigned char KeyValue;/用來存放讀取到的鍵值unsigned long shu;/存放顯示的數(shù)unsigned char KeyState;/記錄按鍵的狀態(tài),0沒有,1有unsigned char DisplayData8;/用來存放要顯示的8位數(shù)的值void Delay10ms(); /延時(shí)10msvoid KeyDown(); /檢測按鍵函數(shù)void DigDisplay();

11、 /動態(tài)顯示函數(shù)void xianshi(unsigned long shu); /存入數(shù)void dian(unsigned int j); /點(diǎn)陣顯示void delay(unsigned int time); /延時(shí)void Hc595SendByte(unsigned char dat);/發(fā)送一個(gè)字節(jié)的數(shù)據(jù)void sound (unsigned char);/發(fā)聲函數(shù)void delay8us (unsigned char); /發(fā)聲函數(shù)配套延時(shí)函數(shù)/* 函 數(shù) 名 : main* 函數(shù)功能 : 主函數(shù)* 輸 入 : 無* 輸 出 : 無*/void main(void) unsi

12、gned char i,c,e;unsigned long num,a,b,d,n2,xuehao;xuehao=70057007; /顯示學(xué)號xianshi(xuehao);KeyState=0;init:num=n2=0;i=0,e=0;while(1)KeyDown(); if(KeyState=1&KeyValue10&i=0)/將第一個(gè)數(shù)存入num并顯示KeyState=0;switch(KeyValue)case(0):num=num*10+1;sound(0);break;case(1):num=num*10+2;sound(1); break;case(2):num=num*1

13、0+3;sound(2); break;case(3):num=num*10+4;sound(3); break;case(4):num=num*10+5;sound(4); break;case(5):num=num*10+6;sound(5); break;case(6):num=num*10+7;sound(6); break;case(7):num=num*10+8;sound(7); break;case(8):num=num*10+9;sound(8); break;case(9):num=num*10+0;sound(9); break;xianshi(num);if(KeySt

14、ate=1&KeyValue10&i=1)KeyState=0;switch(KeyValue) /將第一個(gè)數(shù)存入n2并顯示case(0):n2=n2*10+1;sound(0); break;case(1):n2=n2*10+2;sound(1); break;case(2):n2=n2*10+3;sound(2); break;case(3):n2=n2*10+4;sound(3); break;case(4):n2=n2*10+5;sound(4); break;case(5):n2=n2*10+6;sound(5); break;case(6):n2=n2*10+7;sound(6);

15、 break;case(7):n2=n2*10+8;sound(7); break;case(8):n2=n2*10+9;sound(8); break;case(9):n2=n2*10+0;sound(9); break;xianshi(n2);else if(KeyState=1&KeyValuea)d=b-a;e=1; else d=a-b; break;/ 計(jì)算減法case(12):d=a*b; break;/計(jì)算減法case(13):d=a/b; break;/計(jì)算除法 xianshi(d); /顯示結(jié)果else if(KeyState=1&KeyValue=15)/復(fù)位goto i

16、nit;DigDisplay();/* 函 數(shù) 名 : sound* 函數(shù)功能 : 使用蜂鳴器發(fā)出聲音* 輸 入 : 頻率* 輸 出 : 無*/void sound(unsigned char x) unsigned char i; for(i=0;i60;i+)/執(zhí)行60次 Beep=0;delay8us(tonex);/蜂鳴器動作 Beep=1;delay8us(tonex); /蜂鳴器不動作 /* 函 數(shù) 名 : delay8us* 函數(shù)功能 : 延時(shí)* 輸 入 : 時(shí)長* 輸 出 : 無*/void delay8us (unsigned char x) unsigned char i,

17、j; for(i=0;ix;i+) for(j=0;j1;j+);/* 函 數(shù) 名 : DigDisplay* 函數(shù)功能 : 使用數(shù)碼管顯示* 輸 入 : 無* 輸 出 : 無*/void DigDisplay()unsigned char i;unsigned int j;for(i=0;i8;i+)switch(i) /位選,選擇點(diǎn)亮的數(shù)碼管,case(0):LSA=0;LSB=0;LSC=0; break;/顯示第0位case(1):LSA=1;LSB=0;LSC=0; break;/顯示第1位case(2):LSA=0;LSB=1;LSC=0; break;/顯示第2位case(3):

18、LSA=1;LSB=1;LSC=0; break;/顯示第3位case(4):LSA=0;LSB=0;LSC=1; break;/顯示第4位case(5):LSA=1;LSB=0;LSC=1; break;/顯示第5位case(6):LSA=0;LSB=1;LSC=1; break;/顯示第6位case(7):LSA=1;LSB=1;LSC=1; break;/顯示第7位GPIO_DIG=DisplayDatai;/發(fā)送段碼j=10; /掃描間隔時(shí)間設(shè)定while(j-);GPIO_DIG=0x00;/消隱/* 函 數(shù) 名 : KeyDown* 函數(shù)功能 : 檢測有按鍵按下并讀取鍵值* 輸 入

19、 : 無* 輸 出 : 無*/void KeyDown(void)unsigned int a=0;GPIO_KEY=0x0f;if(GPIO_KEY!=0x0f) Delay10ms();a+;a=0;if(GPIO_KEY!=0x0f)KeyState=1;/有按鍵按下/測試列GPIO_KEY=0X0F;/ Delay10ms();switch(GPIO_KEY)case(0X07):KeyValue=0;break;case(0X0b):KeyValue=1;break;case(0X0d): KeyValue=2;break;case(0X0e):KeyValue=3;break;/d

20、efault:KeyValue=17;/檢測出錯(cuò)回復(fù)17意思是把數(shù)碼管全滅掉。/測試行GPIO_KEY=0XF0;Delay10ms();switch(GPIO_KEY)case(0X70):KeyValue=KeyValue;break;case(0Xb0):KeyValue=KeyValue+4;break;case(0Xd0): KeyValue=KeyValue+8;break;case(0Xe0):KeyValue=KeyValue+12;break;/default:KeyValue=17;while(a0;c-) for(b=38;b0;b-) for(a=130;a0;a-);

21、/* 函 數(shù) 名 : xianshi* 函數(shù)功能 : 將數(shù)字存入* 輸 入 : 數(shù)* 輸 出 : 無*/void xianshi(unsigned long shu) unsigned char i,j; for(i=0;i8;i+) j=shu%10;shu/=10;if(j=0&shu!=0) j=10;DisplayDatai=DIG_CODEj;/* 函數(shù)名 : delay* 函數(shù)功能 : 延時(shí)* 輸入 : 延時(shí)時(shí)長* 輸出 : 無*/void delay(unsigned int time) unsigned int i,j; for(i=0;itime;i+) for(j=0;j121;j+);/* 函數(shù)名 : Hc595SendByte(unsigned char dat)* 函數(shù)功能 : 想74H595發(fā)送一個(gè)字節(jié)的數(shù)據(jù)* 輸入 : 無* 輸出 : 無*/void Hc595SendByte(unsigned char dat)unsigned char a;SRCLK=0;RCLK=0;for(a=0;a7;dat=1;S

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論