數(shù)字電子技術(shù)課程設(shè)計(jì)說明書基于單片機(jī)(89C52)的四人搶答器_第1頁(yè)
數(shù)字電子技術(shù)課程設(shè)計(jì)說明書基于單片機(jī)(89C52)的四人搶答器_第2頁(yè)
數(shù)字電子技術(shù)課程設(shè)計(jì)說明書基于單片機(jī)(89C52)的四人搶答器_第3頁(yè)
數(shù)字電子技術(shù)課程設(shè)計(jì)說明書基于單片機(jī)(89C52)的四人搶答器_第4頁(yè)
數(shù)字電子技術(shù)課程設(shè)計(jì)說明書基于單片機(jī)(89C52)的四人搶答器_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、惠 州 學(xué) 院 數(shù)字電子技術(shù)課程設(shè)計(jì)說明書 題 目:基于單片機(jī)(89c52)的四人搶答器 系 部: 電子科學(xué)系 班 級(jí): 09級(jí)電信二班 學(xué)生姓名: 學(xué) 號(hào): 指導(dǎo)教師: 2011年12月29日智能四路搶答器 目錄一、 前言2二、 方案設(shè)計(jì)21、 方案比較22、 系統(tǒng)總體設(shè)計(jì)方案與實(shí)現(xiàn)框圖3三、 理論分析3四、 電路設(shè)計(jì)41、 按鍵部分42、 顯示部分53、 總原理圖6五、 軟件流程圖模塊7六、 結(jié)論8七、 程序9一、前言本設(shè)計(jì)要求能夠在主持人按下開始鍵后,四個(gè)參賽者開始搶按自己的按鍵,誰的按鍵先按下,誰面前的燈就會(huì)亮并且有相應(yīng)的提示,當(dāng)參賽者耗時(shí)太多時(shí)又會(huì)有相應(yīng)的提示。根據(jù)設(shè)計(jì)的要求,本系統(tǒng)

2、采用獨(dú)立式按鍵,通過單片機(jī)不停的掃描按鍵來控制led燈和蜂鳴器,并用定時(shí)器t0、t1來定超時(shí)的時(shí)間,其中搶答定時(shí)時(shí)間可以由主持人隨意的修改。當(dāng)超時(shí)的時(shí)候讓蜂鳴器響和點(diǎn)亮相應(yīng)的led燈(t0用于參賽者回答問題的定時(shí),t1用于參賽者搶答時(shí)間的選定)。二、方案設(shè)計(jì) 1、方案比較 (1)、總體設(shè)計(jì)方案一:采用可編程i/o口擴(kuò)展芯片8155 8155作為單片機(jī)的擴(kuò)展接口能實(shí)現(xiàn)很多功能,但是這個(gè)系統(tǒng)并不復(fù)雜,用8155會(huì)浪費(fèi)很多的資源,而且8155要用p0和p2端口作為地址線對(duì)它進(jìn)行讀寫,這樣不僅浪費(fèi)端口還使得編程變的復(fù)雜。從節(jié)省資源和簡(jiǎn)化編程的角度考慮,放棄了此方案。方案二:直接采用at89c51單片機(jī)

3、 直接用單片機(jī)不僅編程被簡(jiǎn)化,還有效的利用了各個(gè)端口。8051單片機(jī)的資源完全夠這個(gè)系統(tǒng)的要求。所以最終選擇了此方案。 (2)、模塊 方案一:采用4*4矩陣鍵盤 此種鍵盤是常用的按鍵掃描方法,但是本系統(tǒng)只需要六個(gè)按鍵,這樣就會(huì)浪費(fèi)十個(gè),而且矩陣按鍵掃描要送數(shù)讀數(shù),對(duì)于編程很復(fù)雜,最終放棄了此方案。 方案二:采用獨(dú)立式鍵盤 本系統(tǒng)只要8個(gè)按鍵就可以,用獨(dú)立式鍵盤不僅節(jié)省端口還使編程變得簡(jiǎn)單。程序只要不停的讀數(shù)檢查就行。所以,最終選擇此方案。 2、系統(tǒng)總體設(shè)計(jì)方案與實(shí)現(xiàn)框圖 搶答模塊、修改搶答時(shí)間模塊、主持人控制模塊一共采用8個(gè)獨(dú)立式的鍵盤作為按鍵輸入,當(dāng)在主持人按下開始鍵后有參賽者按鍵按下時(shí),就

4、會(huì)有對(duì)應(yīng)于這個(gè)按鍵的燈亮并且蜂鳴器響一聲,其它按鍵再按也無效。在規(guī)定時(shí)間之后如不清除,蜂鳴器就會(huì)一直響,超時(shí)的led會(huì)點(diǎn)亮,提示已經(jīng)到時(shí)間??驁D如圖1。修改搶答時(shí)間是在按下了修改按鍵之后就會(huì)等待增量、減量的輸入以修改時(shí)間,直到再一次按下修改鍵以確定修改完成。獨(dú)立式按鍵部分單片機(jī)處理顯示部分按鍵掃描圖1三、理論分析 51單片機(jī)的端口上電是高電平,而且當(dāng)外部沒有輸入時(shí)能自動(dòng)的彈跳到高電平,所以通過按鍵所接端口的高低電平變化可以判斷出哪個(gè)按鍵按下了。獨(dú)立按鍵p1口電平變化單片機(jī)識(shí)別圖2四、電路設(shè)計(jì)圖31、按鍵掃描部分單片機(jī)不停的掃描p1口的電平變化,當(dāng)有按鍵按下時(shí),對(duì)應(yīng)的i/o口會(huì)跳變?yōu)榈碗娖?,單?/p>

5、機(jī)檢測(cè)到后,經(jīng)過處理將作出相應(yīng)的顯示。電路如圖1.圖42、顯示部分 根據(jù)按鍵按下的情況led作出相應(yīng)的亮滅,蜂鳴器作出相應(yīng)的反應(yīng)。當(dāng)開始鍵按下啟動(dòng)后,當(dāng)s1按下時(shí),則燈d1亮,并蜂鳴器響一聲,如果超過規(guī)定時(shí)間,蜂鳴器一直響,并提示超時(shí)led燈被點(diǎn)亮。如果s1在限定的時(shí)間內(nèi)再次被按下,說明參賽者1已完成回答;當(dāng)s2按下時(shí),則燈d2亮,并蜂鳴器響一聲,如果超過規(guī)定時(shí)間,蜂鳴器一直響,并提示超時(shí)led燈被點(diǎn)亮。如果s2在限定的時(shí)間內(nèi)再次被按下,說明參賽者2已完成回答;當(dāng)s3按下時(shí),則燈d3亮,并蜂鳴器響一聲,如果超過規(guī)定時(shí)間,蜂鳴器一直響,并提示超時(shí)led燈被點(diǎn)亮。如果s3在限定的時(shí)間內(nèi)再次被按下,

6、說明參賽者3已完成回答;當(dāng)s4按下時(shí),則燈d4亮,并蜂鳴器響一聲,如果超過規(guī)定時(shí)間,蜂鳴器一直響,并提示超時(shí)led燈被點(diǎn)亮。如果s4在限定的時(shí)間內(nèi)再次被按下,說明參賽者4已完成回答;搶答完后可以按下主持人的確定鍵將其初始化??傇韴D如圖所示:五、軟件模塊本系統(tǒng)用了定時(shí)器0和定時(shí)器1。圖5六、結(jié)論本次設(shè)計(jì)按照題目要求,基于單片機(jī),利用較合適的控制算法,成功的實(shí)現(xiàn)了搶答器的基本功能。硬件原理結(jié)構(gòu)簡(jiǎn)單,減少硬件成本和繁瑣的電路連接;軟件設(shè)計(jì)方面,設(shè)計(jì)簡(jiǎn)單,可塑造性強(qiáng),便于維護(hù)。因此選擇使用單片機(jī)實(shí)現(xiàn)四人搶答器的設(shè)計(jì)具有很強(qiáng)的效益,能任意地修改搶答時(shí)間,使此搶答器適合在很多場(chǎng)合使用且成本低。通過此課程

7、設(shè)計(jì)讓我真正的了解到了程序設(shè)計(jì)的難點(diǎn)所在,難的并不是程序框架的搭建、理論上的思考此方法是否可行、代碼的寫入、調(diào)試其結(jié)果,真正難的是在調(diào)試的過程中,明明知道是有些問題的,但是又無法鎖定問題所在,造成的結(jié)果是心理的成就感受到抨擊,反復(fù)的對(duì)可能存在的問題反復(fù)修改,一次又一次的修改,可怕的是代碼越修越錯(cuò),結(jié)果該不會(huì)來。折騰一段時(shí)間后,一不小心才發(fā)現(xiàn)開始的時(shí)候問題僅僅時(shí)非常簡(jiǎn)單、愚蠢的錯(cuò)誤。從這程序設(shè)計(jì)過程中不斷的提醒我,必須步步為營(yíng),步步小心,耐心加細(xì)心即等于完美的程序設(shè)計(jì)的實(shí)現(xiàn)。七、程序代碼:/實(shí)現(xiàn)功能:四人搶答器/*1、只有主持人宣布開始搶答時(shí),選手才能進(jìn)行搶答,搶答有一定的時(shí)間限制,超過一定時(shí)間

8、就會(huì)出現(xiàn)報(bào)警聲。 2、選手回答時(shí)必須在規(guī)定的時(shí)間里面回答,否則就會(huì)出現(xiàn)報(bào)警聲 3、數(shù)碼管會(huì)顯示時(shí)間 4、各通道的規(guī)定: 5、搶答時(shí)間是可以設(shè)置的*/#include#include #define uint unsigned int#define uchar unsigned charsbit beep=p36;/making voice(低電平有效)sbit led1=p27;/competitor 1(低電平有效)sbit one=p10;/(高電平有效)sbit led2=p26;/competitor 2(低電平有效)sbit two=p11;/(高電平有效)sbit led3=p25

9、;/competitor 3(低電平有效)sbit three=p12;sbit led4=p21;/competitor 4sbit four=p13;sbit led5=p20;/host announced begingsbit host=p15;/低電平有效sbit over=p37;/overtimesbit chang=p14;/change the overtime(低電平有效)sbit up=p16;/(低電平有效)sbit down=p17;/低電平有效sbit ls138a = p22; /定義譯碼器輸入端a 在 p2.2 管腳上sbit ls138b = p23; /定義

10、譯碼器輸入端b 在 p2.3 管腳上sbit ls138c = p24; /定義譯碼器輸入端c 在 p2.4 管腳上static uint max1=10,num1=20;uint max,num,temp,tt=0,dd=0x00;/max用于表示選手搶答的時(shí)間/uint i,lednumval=1 ;/uint ledout10;unsigned char code disp_tab = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40;void delay(uint x);void display(uint key_val);v

11、oid change();void press(void);void time1_max();void time0_num();/unsigned long uint ledout5,ledhdsjval;void display(uint key_val) uchar i; /*以下將鍵值送到led數(shù)碼管顯示*/ ledhdsjval=key_val; /把鍵值送到ledhdsjval變量中 ledout0=disp_tabledhdsjval%10000/1000; ledout1=disp_tabledhdsjval%1000/100;/|0x80; ledout2=disp_table

12、dhdsjval%100/10; /十位 ledout3=disp_tabledhdsjval%10; /個(gè)位 for(i=1; i0;x-) for(y=110;y0;y-); void change(void)if(chang=0)delay(5);if(chang=0)while(!chang);delay(5);while(!chang);delay(100);while(chang) display(max1); if(up=0) delay(5);if(up=0)max1+;delay(20); while(!up); delay(5); while(!up); if(down=0

13、)delay(10);if(down=0)max1-;delay(20);while(!down);delay(5);while(!down);while(!chang);delay(5);while(!chang);void press(void) if(one=0)delay(5);if(one=0)while(!one);delay(50);while(!one);delay(50);while(!one); tr1=0;led1=0;beep=0;delay(250);beep=1; num =num1; time0_num(); while(num&one) temp=num; di

14、splay(temp); while(!one); delay(5); while(!one); tr0=0; if(num=0) beep=0; over=0; delay(10); while(host) display(num); while(!host);delay(10);while(!host);beep=1; led1=1; led5=1; over=1; void main() while(1) display(dd); change(); if(host=0) delay(5); if(host=0) max=max1; time1_max(); led5=0; beep=0

15、;delay(250);beep=1; while(!host); delay(5); while(!host); while(max&one&two&three&four) display(max); press(); tr0=0; if(max=0) over=0; beep=0; while(host) display(0); led5=1; over=1; beep=1; while(!host); delay(5); while(!host);/ delay(10);/ while(!host); /* t1 (1ms)中斷 中斷*/void t1zd(void) interrupt 3 /3定時(shí)器1的中斷號(hào) 1定時(shí)器0的中斷號(hào) 0外部中斷1 2外部中斷2 4串口中斷 th1

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論