電子系統(tǒng)課程設(shè)計(jì)17805638_第1頁(yè)
電子系統(tǒng)課程設(shè)計(jì)17805638_第2頁(yè)
電子系統(tǒng)課程設(shè)計(jì)17805638_第3頁(yè)
電子系統(tǒng)課程設(shè)計(jì)17805638_第4頁(yè)
電子系統(tǒng)課程設(shè)計(jì)17805638_第5頁(yè)
已閱讀5頁(yè),還剩33頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、電子系統(tǒng)課程設(shè)計(jì)設(shè)計(jì)題目: 基于 STC51 單片機(jī)的計(jì)算器學(xué)院:信息科學(xué)與技術(shù)學(xué)院 專業(yè):電子信息科學(xué)與技術(shù) 指導(dǎo)老師:余小平27小組成員:何鎮(zhèn)江200805020224/厶宋俊霖200805020212廖海波200805020210日期:2011年 11月、確定計(jì)算器完成的功能1. 整數(shù)加減乘除法。2. 小數(shù)的除法。3. 矩陣鍵盤輸入指令。4. 每按一次鍵蜂鳴器發(fā)聲一次。5. 計(jì)算結(jié)果顯示。、系統(tǒng)方案設(shè)計(jì)與論證使用單片機(jī) STC51 完成計(jì)算器的加減乘除法運(yùn)算,并且顯示結(jié) 果。1.各模塊方案設(shè)計(jì)1.1 單片機(jī)的選擇要求單片機(jī)完成簡(jiǎn)單的整數(shù)加減乘除法、處理 4*4 矩陣鍵盤的輸入數(shù)據(jù)、 控制

2、顯示器件顯示輸入的數(shù)據(jù)與運(yùn)算的結(jié)果、 控制蜂鳴 器的發(fā)音。根據(jù)單片機(jī)完成的功能對(duì)單片機(jī)的處理速度要求不高,且考慮到經(jīng)濟(jì)效益,決定使用 STC51 單片機(jī)。1.2 單片機(jī)最小系統(tǒng)1.2. 1晶振選擇24MHZ,使STC51單片機(jī)速度跟快,并且價(jià)格和 12MHZ 差不多。1.2. 2 為了防止單片機(jī)程序進(jìn)入死循環(huán)而出不來(lái),增加一個(gè)復(fù)位鍵。1.3 顯示器件的選擇方案一、使用 12864作為顯示設(shè)備, 但是考慮到計(jì)算器只要求顯示數(shù)字,使用 12864 太浪費(fèi),且價(jià)格比較貴,不予選用。方案二、使用 1602作為顯示設(shè)備。相比 12864 這個(gè)器件比較便宜,且能顯示數(shù)字和一些字符,能完成要求功能。方案三、

3、使用數(shù)碼管作為顯示設(shè)備。 數(shù)碼管能顯示數(shù)字和一些特殊字符,而且計(jì)算器要求的顯示器件能顯示數(shù)字和一些特殊字符。所以數(shù)碼管能完成我們的要求顯示要求,并且數(shù)碼管是最便宜的。綜上所述我們選擇性價(jià)比最高的數(shù)碼管作為顯示器件。1.4 輸入設(shè)備的選擇計(jì)算要求輸入的數(shù)據(jù)有), 共 16 個(gè)。輸入數(shù)據(jù)不0,1,2,3,4,5,6,7,8,9,*,/,+,-,=,clear多,最后選擇 4*4 的矩陣鍵盤作為輸入設(shè)備。1,5 聲音信號(hào)現(xiàn)實(shí)中使用的計(jì)算器每按下一次鍵盤,就會(huì)發(fā)出聲音。因此設(shè)計(jì)的計(jì)算器應(yīng)該要求每按下一次鍵盤就發(fā)聲一次。 發(fā)聲設(shè)備使用蜂鳴 器就能完成要求。三、實(shí)際電路的設(shè)計(jì) 1. 單片機(jī)最小系統(tǒng)與復(fù)位電

4、路1.1 單片機(jī)最小系統(tǒng)是指用最少的元器件組成的單片機(jī)可以工作的系統(tǒng)。1.2 31 腳(EA/VPP ,當(dāng)接高電平時(shí),單片機(jī)在復(fù)位后從內(nèi)部ROM勺0000H開始執(zhí)行;當(dāng)接低電平時(shí),復(fù)位后后直接從外部 ROM勺OOOOH開始執(zhí)行。我們只使用的單片機(jī)內(nèi)部的ROM區(qū),所以31腳(EANPP應(yīng)接高電平。1.3 復(fù)位電路:由電容串聯(lián)電阻構(gòu)成,由圖并結(jié)合”電容電壓不能突變的性質(zhì),可以知道,當(dāng)系統(tǒng)一上電,RST腳將會(huì)出現(xiàn)高電平,并且,這個(gè)高電平持續(xù)的時(shí)間由電路的 RC直來(lái)決定.典型的51單片機(jī)當(dāng)RST腳的高電平持續(xù)兩個(gè)機(jī)器周期以上就將復(fù)位,所以,適當(dāng)組合RC的取值就可以保證可靠的復(fù)位.R11DkCl22pi

5、C2U1 X1=,i4M,VTAI 1P03心1慣1員L1VTAI 0-PD 1/1PD 2詢2P 0,3WD3A 1 RLj0 CTPO .47/04PO引心PD .e/xcePD 7WD7no 1Pi.o/e P2 ly/eP2.2/A1DPSEN ALEP2.3/A11P2 .仙2PI.5/A(3tA,PI.6/A14PZ.7燉PMP3.0/RXD円.1P 3.1/rXDPI.2P3.1/(WTDPI.3ps.s/iifrTPI.4P 3ATQ円.5P3 為/nPl.eP 3,弓顧PI 7P3.719139STC5133_30 yj3 4=s2.蜂鳴器電路三極管主要是做驅(qū)動(dòng)用的。因?yàn)閱纹?/p>

6、機(jī)的10 口驅(qū)動(dòng)能力不夠讓蜂鳴器發(fā)出聲音,所以我們通過(guò)三極管放大驅(qū)動(dòng)電流,從而可以讓蜂鳴器發(fā)出聲音,你要是輸出高電平,三極管導(dǎo)通,集電極電流通過(guò)蜂鳴器讓蜂鳴器發(fā)出聲音,當(dāng)輸出低電平時(shí),三極管截止,沒(méi)有電流流過(guò)蜂鳴器,所以就不會(huì)發(fā)出聲音。PD,4Z/O4P0.5/O5 P0 6/ P0.7/07P2,0 懈P2 IjWP2.2/A10P2.3/A11P2. d1OO1K3 _I=L. d p Pl.4 /K4 =1o oKS*1_o owe=s=r 1K7 =s=*1pl.5yKBp 1K9-FpOO4K+0k- -o-*1pl-fl yK*-c=i- j o :ky11 po =*K-1_QO

7、1K QINQ -i=L* 10 C1pl.7丄R$T29P SEN31ALE 京K. pl-fl 1DT npiT 2ri ,uOi 1I加4rl .1P1.3ai a pl 4 5r I .Jn-i 且 pijs arl .*r01占、pl fl ?r 1.0a 1 pl-7 Sr 1 .o ai 7rl .(AIS9CS1四、系統(tǒng)軟件設(shè)計(jì)軟件流程:五、附件1.原理圖t卄X占ikP“aC1 C2早孔R(shí)1iri廠一r 一r 一r 一J IIII廠一r 一r 一r 一匸k M* I 範(fàn)JX K* 亦2.程序4ZQ1-WLlKlUixWUhju*RTPtFMTPZM 味宀mrHllur軸“l(fā)和心

8、kjjmhJMJinrP麗PJJITlf-iX-料止TW.TFIT11101Fmajjfill 上T7JLJPJJTnn jiF/*算器的設(shè)(簡(jiǎn)單版)*/*/*作品功能:能完成簡(jiǎn)單的整數(shù)加/*輸入最大能輸入五位數(shù)據(jù);且能正常的顯示五位數(shù)結(jié)果,超過(guò)五位結(jié)果不信任*/減乘除法,除法的小數(shù)位不顯示(舍去)*/*/*/制作時(shí)間: 2011 年 11 月 08 號(hào) */*/*/*所用頭文件 */#include #include #define uchar unsigned char#define uint unsigned int/*單片機(jī)各個(gè)口的定義 */#define key_data P1#de

9、fine duan P2sbitsbitsbit sbit sbit sbit sbitwei_1= P 3人3;wei_2= P 3人4;wei_3= P 3人5;wei_4= P 3人6;wei_5= P 3人7;wei_6= P 3人1;BEE P = P 39/*一些寄存器的設(shè)計(jì)*/uchar KeyNO;uchar duan_1;uchar x;uchar data data_count5=0,0,0,0,0;uchar data data_use5=0,0,0,0,0;uchar sCode,kCode,i1,k;/鍵盤值段選中間值 控制小數(shù)點(diǎn)的顯示只能用 09顯示數(shù)組 檢查鍵盤的

10、值所用寄存器uchar key_value=0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16;uchar key_count;long add,cut,multiply,divide,divide_1;/鍵盤值加減乘除的計(jì)算結(jié)果long data_qian5=0,0,0,0,0;/第一次輸入的結(jié)果,存入這里面long data_hou5=0,0,0,0,0;這里面long count1,count2;uchar key_control;/被加數(shù),乘數(shù),除數(shù),被減數(shù),放入uchar asd;uchar operation_select,operation_sele

11、ct_1;uchar mn; / 復(fù)位,控制只進(jìn)行除法運(yùn)算,一次完后必須/*/*函數(shù)的定義 */void Delay(uint masd);void display();void duan_selct();void Beep();void Keys_Scan();void key_decide();void jia();void jian();void cheng();void chu();void fuzhi();void keybord(uchar a); void DelayMS(uint ms);/*/*主函數(shù) */*/main()key_data=0X0F;P3=0XFF;EX0=1

12、;/IT0=0;/開外部中斷 0外部中斷0 選用電平觸發(fā)方式PX0=1;/外部中斷0 為高級(jí)中斷源wei_6=0;EA=1;/開總中斷BEEP=1;while(1)位 115 的值P1=0X0f;/data_count0=key_valueKeyNO;/display();/*/ /*/*/*函數(shù)功能:外部中斷 0 的終段服務(wù)函數(shù),外部中斷判斷按鍵*/*/*/void key_int() interrupt 0 /DelayMS(1);EA=0;BEEP=0;P1=0XF0;if(P1!=0XF0) /key_data=0xF0;Beep(); Keys_Scan(); P1=0XF0; wh

13、ile(P1!=0XF0); P1=0X0F; Delay(1); key_decide();BEEP=1;EA=1;/EA=1;/* 、/* 函數(shù)功能:確定每一個(gè)按鍵的功能(09 數(shù)值),10加;11減;12乘; 13除;14等于;15:清除 */*/ /*/ void key_decide()switch(key_valueKeyNO)case 0: keybord(0); break; case 1: keybord(1); break; case 2: keybord(2); break; case 3: keybord(3); break; case 4: keybord(4); b

14、reak; case 5: keybord(5); break; case 6: keybord(6); break; case 7: keybord(7); break; case 8: keybord(8); break; case 9: keybord(9); break; case 10: operation_select=1; if(key_control=0) asd=0;data_qian4=data_use4;data_qian3=data_use3;data_qian2=data_use2;data_qian1=data_use1;data_qian0=data_use0;

15、data_use0=0; data_use1=0; data_use2=0; data_use3=0; data_use4=0;key_control=1;else if(key_control=1)data_hou4=data_use4;data_hou3=data_use3;data_hou2=data_use2;data_hou1=data_use1;data_hou0=data_use0;if(operation_select_1=1) jia();else if(operation_select_1=2) jian();else if(operation_select_1=3) ch

16、eng();else if(operation_select_1=4) chu();operation_select_1=1; break;case 11:operation_select=2;if(key_control=0)asd=0;data_qian4=data_use4;data_qian3=data_use3;data_qian2=data_use2;data_qian1=data_use1;data_qian0=data_use0; data_use0=0; data_use1=0; data_use2=0; data_use3=0; data_use4=0;key_contro

17、l=1;else if(key_control=1)data_hou4=data_use4;data_hou3=data_use3;data_hou2=data_use2;data_hou1=data_use1;data_hou0=data_use0;if(operation_select_1=1) jia();else if(operation_select_1=2) jian();else if(operation_select_1=3) cheng();else if(operation_select_1=4) chu();operation_select_1=2; break; cas

18、e 12: operation_select=3;if(key_control=0)asd=0;data_qian4=data_use4;data_qian3=data_use3;data_qian2=data_use2;data_qian1=data_use1;data_qian0=data_use0; data_use0=0; data_use1=0; data_use2=0; data_use3=0; data_use4=0;key_control=1;else if(key_control=1)data_hou4=data_use4;data_hou3=data_use3;data_h

19、ou2=data_use2;data_hou1=data_use1;data_hou0=data_use0;if(operation_select_1=1) jia();else if(operation_select_1=2) jian();else if(operation_select_1=3) cheng();else if(operation_select_1=4) chu();operation_select_1=3; break;case 13: operation_select=4;if(key_control=0)asd=0;data_qian4=data_use4;data

20、_qian3=data_use3;data_qian2=data_use2;data_qian1=data_use1;data_qian0=data_use0;data_use0=0;data_use1=0;data_use2=0;data_use3=0;data_use4=0;key_control=1;mn=1;else if(key_control=1)data_hou4=data_use4;data_hou3=data_use3;data_hou2=data_use2;data_hou1=data_use1;data_hou0=data_use0; data_use4=0;data_u

21、se3=0;data_use2=0;data_use1=0;data_use0=0;if(operation_select_1=1) jia();else if(operation_select_1=2) jian();else if(operation_select_1=3) cheng();else if(operation_select_1=4) chu();operation_select_1=4;break;case 14: data_hou4=data_use4; data_hou3=data_use3; data_hou2=data_use2; data_hou1=data_us

22、e1; data_hou0=data_use0;if(operation_select=1) jia();else if(operation_select=2) jian();else if(operation_select=3) cheng();else if(operation_select=4) chu();data_use4=data_count0; data_use3=data_count1; data_use2=data_count2; data_use1=data_count3; data_use0=data_count4; key_control=0;break;case 15

23、: data_use4=0; data_use3=0; data_use2=0; data_use1=0; data_use0=0;data_count4=0; data_count1=0; data_count0=0;data_qian4=0; data_qian1=0; data_qian0=0;data_hou4=0; data_hou3=0; data_hou0=0;data_count3=0;data_qian3=0;data_count2=0;data_qian2=0;data_hou2=0; data_hou1=0;operation_select=0; asd=0;KeyNO=

24、0;duan_1=0;sCode=0;cut=0;kCode=0;i1=0; k=0;key_count=0;add=0;multiply=0;key_control=0; break;case 16: _nop_();break;default: _nop_();divide=0;x=0;/*/*函數(shù)功能 : 數(shù)碼管顯示 */*/*/void display()uchar i;for(i=0;i400;i+)/ wei_1=1;wei_2=0;wei_3=0;wei_4=0;wei_5=0; wei_1=0;wei_2=1;wei_3=1;wei_4=1;wei_5=1;個(gè)位 ,第一位 du

25、an_1=data_use0;duan_selct();if(x=1) duan = duan + 0x80;Delay(20);/wei_1=0;wei_2=1;wei_3=0;wei_4=0;wei_5=0;wei_1=1;wei_2=0;wei_3=1;wei_4=1;wei_5=1;十位,第二位duan_1=data_use1;duan_selct();if(x=2) duan = duan + 0x80;Delay(20);/ wei_1=0;wei_2=0;wei_3=1;wei_4=0;wei_5=0;wei_1=1;wei_2=1;wei_3=0;wei_4=1;wei_5=1

26、; 百位,第三位duan_1=data_use2;duan_selct();if(x=3) duan = duan + 0x80;Delay(20);/wei_1=0;wei_2=0;wei_3=0;wei_4=1;wei_5=0;/ 千位 ,第四位 wei_1=1;wei_2=1;wei_3=1;wei_4=0;wei_5=1; duan_1=data_use3;duan_selct();if(x=4) duan = duan + 0x80;Delay(20);/wei_1=0;wei_2=0;wei_3=0;wei_4=0;wei_5=1;/ 萬(wàn)位,第五位 wei_1=1;wei_2=1;

27、wei_3=1;wei_4=1;wei_5=0; duan_1=data_use4;duan_selct();if(x=5) duan = duan + 0x80;Delay(20);/*/函數(shù)功能 : 數(shù)碼管段選 */*/*/*/void duan_selct()switch(duan_1)case 0: duan=0xC0;break;case 1: duan=0xF9;break;case 2: duan=0xA4;break; case 3: duan=0xB0;break;case 4: duan=0x99;break;case 5: duan=0x92;break;case 6:

28、duan=0x82;break;case 7: duan=0xF8;break;case 8: duan=0x80;break;case 9: duan=0x90;break;/ case 10:duan=0x88;break;/ case 11:duan=0x83;break;/ case 12:duan=0xC6;break;/ case 13:duan=0xA1;break;/ case 14:duan=0x86;break;/ case 15:duan=0x8E;break;/ case 16:duan=0x00;break;default: duan=0x86; / 不可信的, /*

29、/如果計(jì)算結(jié)果超過(guò)五位,最高位顯示E,表示結(jié)果是/*/*函數(shù)功能:蜂鳴器 */*/*/void Beep()uint i; for(i=0;i1000;i+) BEEP =0;DelayMS(1);BEEP = 1;/*/*/*/*加減乘除運(yùn)算 */29/* 函數(shù)功能 : 賦值運(yùn)算 */*/ void fuzhi()data_qian0=data_count4; data_qian1=data_count3; data_qian2=data_count2; data_qian3=data_count1; data_qian4=data_count0; asd=0;data_use0=data_

30、count4;data_use1=data_count3;data_use2=data_count2;data_use3=data_count1;data_use4=data_count0;/*/*/函數(shù)功能 : 加法運(yùn)算 */*/void jia()count1=data_qian4*10000 data_qian1*10 + data_qian0*1;count2 =data_qian4*10000 data_hou1*10 + data_hou0*1;add = count1 + count2; data_count0=add/10000; data_count1=add/1000%10

31、; data_count2=add/100%10; data_count3=add%100/10; data_count4=add%10; fuzhi();+ data_qian3*1000+ data_hou3*1000+ data_qian2*100+ data_hou2*10033/*/*函數(shù)功能 : 減法運(yùn)算 */*/void jian() count1=data_qian4*10000 data_qian1*10 + data_qian0*1;count2 =data_hou4*10000 data_hou1*10 + data_hou0*1;cut = count1 - count

32、2; data_count0=cut/10000; data_count1=cut/1000%10; data_count2=cut/100%10; data_count3=cut%100/10; data_count4=cut%10; fuzhi();+ data_qian3*1000+ data_hou3*1000/*/*+ data_qian2*100+ data_hou2*100函數(shù)功能 : 乘法運(yùn)算 */*/void cheng()count1 =data_qian4*10000 data_qian1*10 + data_qian0*1;count2 =data_hou4*10000 data_hou1*10 + data_hou0*1;multiply = count1 * count2; data_count0=multiply/10000; data_count1=multiply/1000%10; data_count2=multiply/100%10;

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論