標(biāo)題: 單片機(jī)設(shè)計(jì)-八路搶答器(C語(yǔ)言) [打印本頁(yè)]
作者: 51hei團(tuán)團(tuán) 時(shí)間: 2018-7-1 04:37
標(biāo)題: 單片機(jī)設(shè)計(jì)-八路搶答器(C語(yǔ)言)
一 緒論3
二 基本設(shè)計(jì)方案4
三 具體設(shè)計(jì)5
四 電路板的制作7
五 電路功能測(cè)試與調(diào)試7
六 心得體會(huì)8
附錄9
一 緒論
1.1單片機(jī)搶答器的背景
二十世紀(jì)跨越了三個(gè)“電”的時(shí)代,即電氣時(shí)代、電子時(shí)代和現(xiàn)已進(jìn)入的電腦時(shí)代。不過(guò),這種電腦,通常是指?jìng)(gè)人計(jì)算機(jī),簡(jiǎn)稱(chēng)PC機(jī)。它由主機(jī)、鍵盤(pán)、顯示器等組成。還有一類(lèi)計(jì)算機(jī),大多數(shù)人卻不怎么熟悉。這種計(jì)算機(jī)就是把智能賦予各種機(jī)械的單片機(jī)(亦稱(chēng)微控制器)。顧名思義,這種計(jì)算機(jī)的最小系統(tǒng)只用了一片集成電路,即可進(jìn)行簡(jiǎn)單運(yùn)算和控制。因?yàn)樗w積小,通常都藏在被控機(jī)械的“肚子”里。它在整個(gè)裝置中,起著有如人類(lèi)頭腦的作用,它出了毛病,整個(gè)裝置就癱瘓了,F(xiàn)在,這種單片機(jī)的使用領(lǐng)域已十分廣泛,如智能儀表、實(shí)時(shí)工控、通訊設(shè)備、導(dǎo)航系統(tǒng)、家用電器等。各種產(chǎn)品一旦用上了單片機(jī),就能起到使產(chǎn)品升級(jí)換代的功效,常在產(chǎn)品名稱(chēng)前冠以形容詞——“智能型”,如智能型洗衣機(jī)等。現(xiàn)在有些工廠的技術(shù)人員或其它業(yè)余電子開(kāi)發(fā)者搞出來(lái)的某些產(chǎn)品,不是電路太復(fù)雜,就是功能太簡(jiǎn)單且極易被仿制。究其原因,可能就卡在產(chǎn)品未使用單片機(jī)或其它可編程邏輯器件上。
在知識(shí)競(jìng)賽中,特別是做搶答題時(shí),在搶答過(guò)程中,為了更確切的知道哪一組或哪一位選手先搶答到題,必須要有一個(gè)系統(tǒng)來(lái)完成這個(gè)任務(wù)。若在搶答中,只靠人的視覺(jué)(或者是聽(tīng)覺(jué))是很難判斷出哪一組(或哪一個(gè)選手)先搶答到題的。利用單片機(jī)編程來(lái)設(shè)計(jì)搶答器,可以使以上問(wèn)題得以解決,即使兩組的搶答時(shí)間相差幾微秒,也能輕松的分辨出哪一組(或哪個(gè)選手)先搶答到題的。本文主要介紹了搶答器的工作原理及設(shè)計(jì),以及它的實(shí)際用途。
1.2設(shè)計(jì)要求:
- 六路搶答,搶答有效時(shí)相應(yīng)的燈亮,并有音樂(lè)提示;
- 每輪搶答需主持人按“開(kāi)始”后,搶答才有效;
- 搶答無(wú)效時(shí),有相應(yīng)的燈及音樂(lè)提示;
- 擴(kuò)展到8路或以上;
- 搶答倒計(jì)時(shí)提示;
- 各路的參賽者有得分顯示;
- 其他自行增加的功能;
二 基本設(shè)計(jì)方案
2.1 單片機(jī)的選擇
我選擇STC89C52單片機(jī)芯片的理由如下:
1、在設(shè)計(jì)過(guò)程中可能會(huì)出現(xiàn)很多問(wèn)題,89C52可重復(fù)燒程序;
2、是80C51的增強(qiáng)型,功能與我們所學(xué)的51單片機(jī)基本相同;
3、學(xué)校配套發(fā)的單片機(jī)開(kāi)發(fā)板用的就是89C52,有很多相關(guān)教程,程序的測(cè)試與燒寫(xiě)都十分方便;
4、器材室很方便就能領(lǐng)到。
89C52單片機(jī),是增強(qiáng)型RISC內(nèi)載Flash的單片機(jī),芯片上的Flash存儲(chǔ)器附在用戶(hù)的產(chǎn)品中,可隨時(shí)編程,再編程,使用戶(hù)的產(chǎn)品設(shè)計(jì)容易,更新?lián)Q代方便。89C52單片機(jī)采用增強(qiáng)的RISC結(jié)構(gòu),使其具有高速處理能力,在一個(gè)時(shí)鐘周期內(nèi)可執(zhí)行復(fù)雜的指令,每MHz可實(shí)現(xiàn)1MIPS的處理能力。89C52單片機(jī)工作電壓為2.7~6.0V,可以實(shí)現(xiàn)耗電最優(yōu)化。89C52的單片機(jī)廣泛應(yīng)用于計(jì)算機(jī)外部設(shè)備,工業(yè)實(shí)時(shí)控制,儀器儀表,通訊設(shè)備,家用電器,宇航設(shè)備等各個(gè)領(lǐng)域.
2.2單片機(jī)的基本結(jié)構(gòu)
MCS-52的引腳說(shuō)明:
MCS-52系列單片機(jī)中的8032、8052及8752均采用40Pin封裝的雙列直接DIP結(jié)構(gòu),右圖是它們的引腳配置,40個(gè)引腳中,正電源和地線兩根,外置石英振蕩器的時(shí)鐘線兩根,4組8位共32個(gè)I/O口,中斷口線與P3口線復(fù)用。 具體引腳功能不做贅述了(詳細(xì)請(qǐng)參見(jiàn)《單片機(jī)原理與接口技術(shù)》宋躍)。
圖2-2-1 STC89C52的引腳圖
2.3基本設(shè)計(jì)思路
因?yàn)橹白鲞^(guò)單片機(jī)最小系統(tǒng)的電路,這次為了節(jié)約時(shí)間,采取在最小系統(tǒng)的板旁邊再焊一塊電路。
一看到項(xiàng)目我的基本思路就差不多了,我要實(shí)現(xiàn)基本功能好說(shuō),倒是拓展不太難,于是選擇了拓展到8路和搶答倒計(jì)時(shí)。最小系統(tǒng)已經(jīng)包括了手動(dòng)復(fù)位電路,時(shí)鐘電路,電源電路和89C52的I/O口排插,這塊板上可以用的地方不多,只能焊一個(gè)蜂鳴器及其驅(qū)動(dòng)電路了。在另一塊板上需要有8個(gè)按鍵、8個(gè)LED燈和一個(gè)數(shù)碼管,并分別對(duì)應(yīng)三個(gè)插排。兩塊電路板之間高低電平用兩根導(dǎo)線連通。
2.4相關(guān)功能器材的選擇
整體電路需要開(kāi)關(guān)的地方:電源的啟動(dòng),主持人的開(kāi)始與復(fù)位,8名搶答選手用的搶答按鈕。
考慮到電源需長(zhǎng)時(shí)間保持開(kāi)啟或斷開(kāi)狀態(tài),故采用可保持按下或不按下?tīng)顟B(tài)的開(kāi)關(guān)。同理主持人的“開(kāi)始”和“未開(kāi)始”也需要這樣的開(kāi)關(guān)。8名搶答選手用的搶答按鈕,只需用4腳的按鍵即可,按下即接通,松開(kāi)就斷路。
8個(gè)LED燈來(lái)顯示選手的搶答狀況,1個(gè)LED燈用來(lái)顯示電源的狀況;一個(gè)數(shù)碼管來(lái)顯示主持人說(shuō)“開(kāi)始”后的倒計(jì)時(shí);一個(gè)有源蜂鳴器,用一個(gè)NPN管來(lái)驅(qū)動(dòng);其他電容和電阻用最小系統(tǒng)的。
三 具體設(shè)計(jì)
3.1硬件設(shè)計(jì)
如上所述,該電路部分電路采用之前做出來(lái)的單片機(jī)最小系統(tǒng),根據(jù)前面的思路可以在ISIS中擺出電路,如下圖所示:
圖3.1 仿真電路圖
3.2軟件設(shè)計(jì)
在ISIS中的89C52可以仿真燒錄程序運(yùn)行,這樣可以先在Keil中編程然后燒錄看仿真結(jié)果,省時(shí)省力。
我采用C語(yǔ)言編寫(xiě)程序,詳細(xì)程序及分析請(qǐng)看附錄。
3.3仿真測(cè)試
在ISIS中調(diào)入hex文件后即可開(kāi)始仿真,仿真結(jié)果如下圖所示:
圖3.3 仿真測(cè)試結(jié)果
主持人按下“開(kāi)始”按鈕后,數(shù)碼管開(kāi)始倒計(jì)時(shí),從9到0一秒減一下,也就是搶答倒計(jì)時(shí),在數(shù)碼管顯示0之前,8個(gè)開(kāi)關(guān)無(wú)論哪一個(gè)先按下,對(duì)應(yīng)的燈就會(huì)亮(蜂鳴器沒(méi)響,因?yàn)榉抡娌怀鰜?lái)),當(dāng)這個(gè)燈亮起后,不論其他的開(kāi)關(guān)怎樣按都不能改變燈亮的情況,也就是實(shí)現(xiàn)了搶答的功能。如果數(shù)碼管減到0了都沒(méi)人搶答,則搶答作廢,這時(shí)無(wú)論再怎樣搶答都不會(huì)有燈亮,實(shí)現(xiàn)搶答倒計(jì)時(shí)的功能。在主持人再次按下“復(fù)位”按鈕(和“開(kāi)始”是同一個(gè))時(shí),數(shù)碼管和LED都熄滅,同時(shí)所有人都不能搶答,實(shí)現(xiàn)清零功能。
四 電路板的制作
4.1元件清單
4.2焊接
在實(shí)際焊接過(guò)程中,有很多地方元件以及走線十分密集,如8個(gè)按鍵、8個(gè)LED燈、8腳數(shù)碼管和3個(gè)排針的焊接,這需要十分的耐心,稍不注意就將排布密集的錫線焊到了一起,只能用錫槍吸走重新焊。
還有一些問(wèn)題如元件如何擺放平整,如果不平整其他元件難以放得下;LED燈和數(shù)碼管不能用高溫焊太久,否則會(huì)毀掉,到時(shí)候很難檢查出問(wèn)題;元件的排版必須事先計(jì)算好,連走線都要想好,不然一步錯(cuò)步步錯(cuò)。
經(jīng)過(guò)一個(gè)下午的焊接,最終還是將它做出來(lái)了。
五 電路功能測(cè)試與調(diào)試
5.1測(cè)試
測(cè)試采用5V電源線接電腦供電,先用開(kāi)發(fā)板將程序燒錄進(jìn)89C52,然后插入到板上的IC座,將剩余的線連好后開(kāi)啟電源,電源指示燈亮,結(jié)果數(shù)碼管不亮,按搶答器也不亮,復(fù)位鍵也無(wú)任何作用,蜂鳴器也不響。
5.2調(diào)試
一下是我遇到的問(wèn)題及解決的過(guò)程。
1、除電源鍵外,其他鍵都無(wú)反應(yīng),蜂鳴器也不響。仔細(xì)檢查電路后,我發(fā)現(xiàn)是接口接觸的問(wèn)題,而且我NPN管忘了接P0口。
2、通電后,數(shù)碼管不亮,能實(shí)現(xiàn)搶答器的功能,但一旦按下按鍵蜂鳴器一直響。后來(lái)發(fā)現(xiàn)是我程序我的問(wèn)題,仿真上顯示不出來(lái),于是我修改程序。
3、通電后,能實(shí)現(xiàn)搶答的功能,蜂鳴器也能正常工作了,但是數(shù)碼管顯示亂碼,還是一秒一跳。后來(lái)我發(fā)現(xiàn)本身程序有一點(diǎn)問(wèn)題,仿真程序上的數(shù)碼管和我自己用的數(shù)碼管不同,只能修改程序。
最后,經(jīng)過(guò)一系列的調(diào)試與修改后,終于實(shí)現(xiàn)了預(yù)期功能。
六 心得體會(huì)
經(jīng)過(guò)一個(gè)星期的努力,我完成了設(shè)計(jì)任務(wù),通過(guò)此次設(shè)計(jì),我重新認(rèn)識(shí)到了自學(xué)的重要性,以及學(xué)以致用的道理。我在圖書(shū)館以及網(wǎng)上查閱了大量的資料,同時(shí)也認(rèn)識(shí)到了查閱信息的重要作用。通過(guò)此次的搶答器的設(shè)計(jì),讓我重新拾起了以前所學(xué)習(xí)的電子知識(shí),及我覺(jué)得此次設(shè)計(jì)讓我更加鞏固了所學(xué)的知識(shí)并在設(shè)計(jì)的過(guò)程中學(xué)會(huì)了與時(shí)俱進(jìn),讓我受益匪淺。這一次設(shè)計(jì)的練習(xí),很多事情我都不可以獨(dú)立完成,很多方面都需要同學(xué)的幫助,我也深刻認(rèn)識(shí)到自己的不足,知識(shí)的欠缺問(wèn)題很大,需要在編程方面大下功夫。同時(shí)因?yàn)槲疫@次設(shè)計(jì)用的是C語(yǔ)言,也希望自己學(xué)的更好了以后,能用匯編語(yǔ)言來(lái)實(shí)現(xiàn)同樣的功能。還有一點(diǎn)很重要,不能依賴(lài)仿真軟件,軟件本身有很多弊端不說(shuō),仿真出來(lái)的結(jié)果也不一定正確,很容易被誤導(dǎo),
附錄
電路板實(shí)物圖:

單片機(jī)源程序如下:
- #include<reg51.h>
- unsigned char flag,num1,num2;
- sbit a1=P3^0;//P3口開(kāi)關(guān)
- sbit a2=P3^1;
- sbit a3=P3^2;
- sbit a4=P3^3;
- sbit a5=P3^4;
- sbit a6=P3^5;
- sbit a7=P3^6;
- sbit a8=P3^7;
- sbit b1=P1^0;//P1口蜂鳴器
- sbit b2=P1^1;
- sbit b3=P1^2;
- unsigned char code table[]={0x80,0xf9,0x4c,0x60,0x31,0x22,0x02,0xf0,0x00,0x20};//數(shù)碼管顯示
- void display()
- {
- P2=table[num2]; //P2口數(shù)碼管
- }
- void init()
- {
- num2=9;
- TMOD=0X01;
- TH0=(65536-45872)/256;
- TL0=(65536-45872)/256;
- EA=1;
- ET0=1;
- TR0=1;
- flag=1;//全局變量
- P0=0xff;//P0口LED燈
- b1=1;
- P2=0xff;
- }
- void delay(int z)//延時(shí)程序
- {
- int i,j;
- for(i=0;i<z;i++)
- for(j=0;j<110;j++);
- }
- void main()
- {
- init();
- while(flag)
- {
- if(a1==0)
- {
- delay(100);//調(diào)用延時(shí)程序消除抖動(dòng)
- if(a1==0)//判斷開(kāi)關(guān)a1是否按下
- {
- flag=0;
- P0=0xfe;//對(duì)應(yīng)LED燈亮
- b1=0;//蜂鳴器響
- while(!a1);//按住時(shí)持續(xù)響
- b3=0;
- b1=1;
- }
- }
- if(a2==0)//同理判斷a2
- {
- delay(100);
- if(a2==0)
- {
- flag=0;
- P0=0xfd;
- b1=0;
- while(!a2);
- b1=1;
- }
- }
- if(a3==0)//同理判斷a3
- {
- delay(100);
- if(a3==0)
- {
- flag=0;
- P0=0xfb;
- b1=0;
- while(!a3);
- b1=1;
- }
- }
- if(a4==0)//同理判斷a4
- {
- delay(100);
- if(a4==0)
- {
- flag=0;
- P0=0xf7;
- b1=0;
- while(!a4);
- b1=1;
- }
- }
- if(a5==0)//同理判斷a5
- {
- delay(10);
- if(a5==0)
- {
- flag=0;
- P0=0xef;
- b1=0;
- while(!a5);
- b1=1;
- }
- }
- if(a6==0)//同理判斷a6
- {
- delay(10);
- if(a6==0)
- {
- flag=0;
- P0=0xdf;
- b1=0;
- while(!a6);
- b1=1;
- }
- }
- if(a7==0)//同理判斷a7
- {
- delay(10);
- if(a7==0)
- {
- flag=0;
- P0=0xbf;
- b1=0;
- while(!a7);
- b1=1;
- }
- }
- if(a8==0)//同理判斷a8
- {
- delay(10);
- if(a8==0)
- {
- flag=0;
- P0=0x7f;
- b1=0;
- while(!a8);
- b1=1;
- }
- }
- }
- while(!flag)
- {
-
- EA=0;
-
- if(P3!=0xff)//沒(méi)有開(kāi)關(guān)按下時(shí)不響也不亮
- {
- b1=0; b2=0;
- delay(50);
- }
- else b1=1;
- }
- ……………………
- …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
Word文檔下載:
單片機(jī)課程設(shè)計(jì)-八路搶答器(C語(yǔ)言).doc
(573.5 KB, 下載次數(shù): 197)
2018-7-1 04:56 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者: feiji666 時(shí)間: 2018-7-1 20:40
好用,感謝
作者: 553783431 時(shí)間: 2018-10-11 15:24
不錯(cuò),參考一下,賺分下載
作者: AKBC八百 時(shí)間: 2020-6-27 18:23
可以參考一下
作者: 西風(fēng)125 時(shí)間: 2020-6-29 15:17
feiji666 發(fā)表于 2018-7-1 20:40
好用,感謝
那個(gè)復(fù)位鍵怎么沒(méi)用,請(qǐng)教一下
作者: 8751090 時(shí)間: 2020-12-17 14:10
復(fù)位鍵按下沒(méi)有反應(yīng),請(qǐng)問(wèn)是怎么回事?
作者: 2609929385 時(shí)間: 2021-10-8 15:47
復(fù)位鍵沒(méi)反應(yīng),請(qǐng)問(wèn)怎么改程序
作者: 2609929385 時(shí)間: 2021-10-12 09:06
大家有會(huì)改復(fù)位電路的嗎?
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |