久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 9512|回復(fù): 13
打印 上一主題 下一主題
收起左側(cè)

基于單片機(jī)的6路搶答器的設(shè)計(jì)報(bào)告+源碼+仿真

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:329016 發(fā)表于 2018-12-30 16:15 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
實(shí)訓(xùn)題目:基于單片機(jī)的搶答器的設(shè)計(jì)
1 系統(tǒng)設(shè)計(jì)
1.1 設(shè)計(jì)要求
1.1.1設(shè)計(jì)任務(wù)  
基于單片機(jī)的搶答器的設(shè)計(jì)
1.1.2性能指標(biāo)要求
① 需要自己設(shè)計(jì)電路并焊接電路板。
② 基本要求:有一個(gè)主持人控制開關(guān)和6路搶答按扭,當(dāng)主持人允許搶答時(shí)才能進(jìn)行搶答操作,并用一個(gè)數(shù)碼管顯示搶答選手的號(hào)碼,同時(shí)其他選手不能再搶答。
③ 當(dāng)主持人允許搶答后倒計(jì)時(shí)5秒時(shí)間,在這5秒內(nèi)搶答有效,過后就不能進(jìn)行搶答了。
④ 電路上要加個(gè)蜂鳴器的電路,當(dāng)有選手搶答時(shí)蜂鳴器響一下。
⑤ 當(dāng)有選手搶答后,進(jìn)行倒計(jì)時(shí)20秒作為選手回答問題時(shí)間,用兩個(gè)數(shù)碼管顯示,倒計(jì)時(shí)時(shí)間到時(shí)有聲光提示。
⑥ 畫電路板時(shí)要增加下載接口,方便調(diào)試程序。
⑦ 擴(kuò)展功能(選做):
用按鍵可設(shè)置倒計(jì)時(shí)的時(shí)間,范圍在5秒到30秒之間。
1.2 設(shè)計(jì)思路及設(shè)計(jì)框圖
1.2.1設(shè)計(jì)思路
設(shè)計(jì)思路如下:
電路通電后,LED閃爍三次,表示電路各功能正常。搶答之前必須由主持人控制,所以在芯片的P1^0腳處接入開始按鍵。搶答時(shí)必須有選手搶答電路,因?yàn)轭}目要求6位選手搶答,所以分別在P1^1~P1^6設(shè)置了從1~6號(hào)選手的搶答按鍵。當(dāng)主持人按下開始搶答鍵時(shí),6位選手連接的單片機(jī)從P1^1~P1^6的任意1位選手都可以進(jìn)行搶答,搶答時(shí)間為5s。主持人按下開始搶答按鍵以后,會(huì)進(jìn)入5s倒計(jì)時(shí)搶答時(shí)間,如若在5s之內(nèi),有選手搶答成功,則數(shù)碼管顯示搶答選手的號(hào)數(shù),搶答成功后燈光提示0.5秒,系統(tǒng)開始自動(dòng)設(shè)定回答問題時(shí)間為20s,倒計(jì)結(jié)束時(shí)LED燈亮,并且蜂鳴器響1s,1秒后重新等待主持人控制。
拓展功能利用三個(gè)按鍵來實(shí)現(xiàn)控制回答問題的時(shí)間的增減,有1號(hào)和6號(hào)選手按鍵同時(shí)按下開啟回答時(shí)間調(diào)整功能,時(shí)間加計(jì)數(shù)的設(shè)置控制鍵為P1^1,每當(dāng)按鍵按下并松開,則倒計(jì)時(shí)加一。時(shí)間減計(jì)數(shù)的設(shè)置控制按鍵為P1^6,每當(dāng)按鍵按下并松開,則倒計(jì)時(shí)減一,主持人按鍵P1^0按下來確定回答問題的時(shí)間,而且加減計(jì)時(shí)時(shí)間的范圍在5s~30s內(nèi),主持人確定時(shí)間后會(huì)有1s的燈光提示,表示調(diào)整完成。P0口接的是一個(gè)四位一體共陰數(shù)碼管,P2.0~P2.3作為數(shù)碼管的位選。三極管8050在電路當(dāng)中起了開關(guān)的作用,當(dāng)控制三極管開關(guān)狀態(tài)的管腳P3^3輸出高電平時(shí),蜂鳴器響,反之蜂鳴器停。

1.2.2總體設(shè)計(jì)框圖


2 各個(gè)模塊程序的設(shè)計(jì)
2.1 單片機(jī)


STC89C52RC是以51為內(nèi)核的8位單片機(jī),芯片總共有40個(gè)引腳。
P0~P3:總共占32個(gè)引腳,其中P0是低8位地址線/數(shù)據(jù)線的端口,P1是數(shù)據(jù)線端口,P2是高8位地址線/數(shù)據(jù)線端口,P3是數(shù)據(jù)線/第二功能線端口。P0口內(nèi)部沒有上拉電阻,所以在P0用作輸出時(shí)必須外加上拉電阻。
EA~ /VPP:片外程序ROM有效編程電源,作EA~用時(shí)為輸出信號(hào),EA~=0片外程序ROM有效,EA~=1片內(nèi)ROM有效,作VPP用時(shí)為電源輸入。
XTAL1和XTAL2:外部時(shí)鐘震蕩輸入端
RST/VPD:復(fù)位/備用電源接入。正常工作時(shí)作復(fù)位信號(hào)引入,當(dāng)VCC失電時(shí),此腳接入備用電源,使片內(nèi)RAM中的數(shù)據(jù)處于底功能保護(hù)。
2.2 最小系統(tǒng)


這兩部分電路分別為晶振電路和復(fù)位電路,這兩塊電路與單片機(jī)的電源電路共同組成了單片機(jī)的最小系統(tǒng)。
晶振電路由晶振和兩個(gè)瓷片電容組成,本實(shí)訓(xùn)采用晶振為12MHZ,瓷片電容的容量為22PF,瓷片電容是沒有正負(fù)極之分的。
本次實(shí)訓(xùn)采用的復(fù)位電路是手動(dòng)復(fù)位方式,當(dāng)復(fù)位鍵按下,RST由低電平變?yōu)楦唠娖剑琑ST引腳獲得2個(gè)機(jī)器周期的脈沖后,實(shí)現(xiàn)手動(dòng)硬件復(fù)位,使單片機(jī)重新開始執(zhí)行程序。
2.3 按鍵模塊電路


按鍵一端接地,一端接單片機(jī)I/O口。當(dāng)按鍵按下時(shí),電平狀態(tài)因一端接地被拉低。
2.4 數(shù)碼管顯示模塊電路


本次實(shí)訓(xùn)用的是四位共陰數(shù)碼管,A,B,C,D,E,F,G,DP控制段選;1,2,3,4控制位選。
2.5 蜂鳴器與LED燈模塊電路

在本次實(shí)訓(xùn)中,蜂鳴器電路材料有8050(NPN)三極管,一個(gè)限流電阻,一個(gè)蜂鳴器,此時(shí)電路中的三極管充當(dāng)開關(guān)作用,當(dāng)P3^3=1時(shí)三極管導(dǎo)通,則蜂鳴器響,反之不響。
LED負(fù)極端通過限流電阻接地,正極接入I/O口,當(dāng)P3^4=1時(shí),LED亮,反之滅。
3  調(diào)試過程
焊完板子后用下載線接通電源,觀察電源指示燈是否正常,指示燈閃爍后停止工作,斷電檢查電路,發(fā)現(xiàn)有一接地端未聯(lián)通,接通后發(fā)現(xiàn)電源指示燈不在工作。
軟件燒錄時(shí)一直在檢測(cè)單片機(jī),在嘗試斷電重連,讀寫反接后燒錄成功。
在驗(yàn)證功能期間發(fā)現(xiàn)“選手回答問題結(jié)束”后,蜂鳴器和LED一直處在開啟狀態(tài),需要復(fù)位按鍵復(fù)位后才能使用;電源指示燈不工作(可能燒壞了),無法判斷電路是否正常;修改代碼將聲光提醒改為1s,1s后自動(dòng)恢復(fù)等待主持人操作;通電后LED閃爍三次,閃爍結(jié)束后等待主持人操作。
在硬件不改變的前提增加擴(kuò)展功能,使用1號(hào)和6號(hào)選手按鍵同時(shí)按下開啟回答時(shí)間調(diào)整功能,時(shí)間加計(jì)數(shù)的設(shè)置控制鍵為P1^1,每當(dāng)按鍵按下并松開,則倒計(jì)時(shí)減1。時(shí)間減計(jì)數(shù)的設(shè)置控制按鍵為P1^6,每當(dāng)按鍵按下并松開,則倒計(jì)時(shí)加1,或者一直按著加(減)按鍵,倒計(jì)時(shí)會(huì)每個(gè)0.5s實(shí)現(xiàn)自加(減)1,主持人按鍵P1^0按下來確定回答問題的時(shí)間,加減計(jì)時(shí)時(shí)間的調(diào)整范圍在5s~30s內(nèi),主持人確定時(shí)間后會(huì)有1s的燈光提示,表示調(diào)整完成。
4  功能測(cè)試
4.1 測(cè)試儀器與設(shè)備
電腦 :一臺(tái)
萬用表 :一臺(tái)
燒錄器 :一個(gè)
4.2 性能指標(biāo)測(cè)試
1.總共有六路搶答,在主持人允許搶答才可以開始搶答,倒計(jì)時(shí)5秒。
2.一個(gè)搶答后,其他選手不能再搶答,可以設(shè)定時(shí)間來限制回答問題的時(shí)間。
3.當(dāng)有選手開始搶答時(shí),蜂鳴器響一聲。
4.選手回答時(shí)間結(jié)束時(shí)有聲光顯示
5.可以通過按鍵來設(shè)置回答問題時(shí)間(5-30秒)。
4.3 誤差分析
有時(shí)候按鍵不防抖或無反應(yīng)
5  實(shí)訓(xùn)心得體會(huì)
經(jīng)過這一周的單片機(jī)實(shí)訓(xùn),結(jié)合之前的單片機(jī)理論課和實(shí)驗(yàn)課,各個(gè)書本與老師的答疑解惑下,我終于完成了本次實(shí)訓(xùn),在單片機(jī)電路連接中只需要把單片機(jī)最小系統(tǒng)做出來然后把IO口接各個(gè)外圍器件,寫好程序進(jìn)行操控就可以了,但是也非常考察人的細(xì)心和焊功是否牢固。
在這學(xué)習(xí)的過程中,我通過網(wǎng)上查了許多單片機(jī)的資料,讓我明白了51單片機(jī)的I/0的作用,由于P0口與P1\P2\P3口不同,因?yàn)槠鋬?nèi)部沒有上拉電阻,如果不加上拉電阻,會(huì)呈現(xiàn)高阻狀態(tài),所以當(dāng)我們需要用P0口給數(shù)碼管進(jìn)行段選時(shí),P0口必須外加上拉電阻,通常為10K的排阻。通過分析網(wǎng)上列出的幾種不同的蜂鳴器控制電路,我懂得了本次實(shí)訓(xùn)蜂鳴器控制電路中的三極管在電路中充當(dāng)著開關(guān)作用,電阻充當(dāng)著限流作用,保護(hù)電路。51單片機(jī)I/O口充當(dāng)控制作用。
在此,我感謝指導(dǎo)我的老師們,通過本次實(shí)訓(xùn)學(xué)習(xí)到的知識(shí)是從理論課本上獲取不到的,這些調(diào)試電路的經(jīng)驗(yàn),調(diào)試代碼的經(jīng)驗(yàn),51單片機(jī)的原理,統(tǒng)統(tǒng)需要實(shí)踐的積累。在今后遇到使用單片機(jī)所做的項(xiàng)目,我都會(huì)通過這次的實(shí)訓(xùn)的經(jīng)驗(yàn)來擬定好一個(gè)方案,并能夠設(shè)計(jì)基礎(chǔ)電路,在軟件方面還需多加練習(xí),多寫程序,吸收別人的思維方式,腦海中要構(gòu)造好流程圖,流程圖做好,每一步需要怎么寫怎么做就一目了然了。

附錄1:仿真圖

附錄2:程序

  1. #include <reg52.h>
  2. /*******定 義 參 數(shù)*******/
  3. unsigned char xianshi, kaishi=5, daojishi=20, haoma=0, bitdisplay=0, k=0;
  4. unsigned int i,n=0,  bittime=0;
  5. sbit d1=P1^1;      //選手1
  6. sbit d2=P1^2;      //選手2
  7. sbit d3=P1^3;      //選手3
  8. sbit d4=P1^4;      //選手4
  9. sbit d5=P1^5;      //選手5
  10. sbit d6=P1^6;      //選手6
  11. sbit start=P1^0;   //主持人
  12. sbit LED=P3^4;
  13. sbit fmq=P3^3;     //蜂鳴器
  14. unsigned char Tab[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};
  15. /*******延 時(shí) 計(jì) 數(shù)*******/
  16. void delay (unsigned int t) //t=1時(shí),延時(shí)1ms
  17. {
  18.               unsigned int a,b;
  19.               for(a=0;a<t;a++)
  20.                             for(b=0;b<120;b++);
  21. }
  22. /*******中斷函數(shù)*******/
  23. void timer0(void)interrupt 1  //5ms中斷一次
  24. {
  25.               TH0 = (65536-5000)/256;
  26.               TL0 = (65536-5000)%256;
  27.               switch(bitdisplay)   //動(dòng)態(tài)顯示
  28.               {
  29.               case 0:P2=0xFE;P0=Tab[xianshi/10];break;
  30.               case 1:P2=0xFD;P0=Tab[xianshi%10];
  31. break;
  32.               case 2:P2=0xF7;P0=Tab[haoma];break;
  33.               case 3:P2=0xFB;P0=0x40; break;
  34.               }
  35.               bitdisplay++;                 
  36.               bittime++;                                         
  37.               if(bitdisplay==4)
  38.                             bitdisplay=0;
  39.               if(bittime==200)               //5*200=1000ms
  40.               {
  41.                             bittime=0;
  42.                             xianshi--;
  43.               }
  44.               if(xianshi==0) /*如果倒計(jì)時(shí)結(jié)束則蜂鳴器與LED顯示*/
  45.               {
  46.                             P2=0xff;
  47.                             fmq=1;
  48.                             LED=1;              
  49.                             delay(1000);
  50.                             fmq=0;
  51.                             LED=0;
  52.                             TR0=0;
  53.               }
  54. }
  55. void djtime() //倒計(jì)時(shí)間修改
  56. {
  57. if(d1==0&&d6==0)
  58.               {
  59.                             n=1;
  60.               }
  61.               while(n)
  62.                             {
  63.                                           for(i=0;i<50;i++)
  64.                                           {
  65.                                           P2=0xFB;P0=Tab[daojishi/10];
  66.                                                         delay(5);
  67.                                P2=0xF7;P0=Tab[daojishi%10];
  68.                                                         delay(5);
  69.                                           }
  70.                                           if(d1==0)
  71.                                           delay(33);
  72.                                           if(d1==0)
  73.                                           daojishi--;
  74.                                           if(d6==0)
  75.                                           delay(33);
  76.                                           if(d6==0)
  77.                                           daojishi++;
  78.                                           if(daojishi>30)
  79.                                           daojishi=30;
  80.                                           if(daojishi<5)
  81.                                           daojishi=5;
  82.                                           if(start==0)
  83.                                           delay(33);
  84.                                           if(start==0)
  85.                                           {
  86.                                           n=0;
  87.                                           LED=1;
  88.                                           for(i=0;i<100;i++)
  89.                                           {
  90.                                           P2=0xFB;P0=Tab[daojishi/10];
  91.                                                         delay(5);
  92. P2=0xF7;P0=Tab[daojishi%10];
  93.                                                         delay(5);
  94.                                           }
  95.                                           P2=0xff;                                                                     
  96.                                           LED=0;
  97.                                           }
  98.                             }
  99. }
  100. /*******主  函  數(shù)*******/
  101. void main()
  102. {            
  103.               TMOD=0X01;                           
  104.               TH0 = (65536-5000)/256;
  105.               TL0 = (65536-5000)%256;
  106.               EA=1;                           
  107.               ET0=1;                 //定時(shí)器中斷
  108.               TR0=0;              //定時(shí)器,等待手動(dòng)開啟
  109.               fmq=0;
  110.               for(i=0;i<6;i++)
  111.                             {
  112.                                           LED=~LED;
  113.                                           delay(500);
  114.                             }
  115.               LED=0;  
  116.               while(1)
  117.               {  
  118.                             djtime();
  119.                             if(start==0)      
  120.                                           delay(33);
  121.                             if(start==0)
  122.                             {
  123.                                           k=1;
  124.                                           haoma=0;                 
  125.                                           xianshi=kaishi;               
  126.                                           TR0=1;
  127.                             }                                         
  128.                             while(k)
  129.                             {
  130.                                           while(xianshi)
  131.                                           {
  132.                                                         if(d1==0)
  133.                                                                       delay(33);
  134.                                                         if(d1==0)
  135.                                                         {            
  136.                                                                       haoma=1;
  137.                                                                       break;            
  138.                                                         }
  139.                                                         if(d2==0)
  140.                                                                       delay(33);
  141.                                                         if(d2==0)
  142.                                                         {                                                      
  143.                                                                       haoma=2;
  144.                                                                       break;                                         
  145.                                                         }
  146.                                                         if(d3==0)              
  147.                                                                       delay(33);
  148.                                                         if(d3==0)
  149.                                                         {                                                      
  150.                                                                       haoma=3;
  151.                                                                       break;                                         
  152.                                                         }                           
  153.                                                         if(d4==0)                                          
  154.                                                                       delay(33);
  155.                                                         if(d4==0)
  156.                                                         {                                                      
  157.                                                                       haoma=4;
  158.                                                                       break;                                         
  159.                                                         }                                         
  160.                                                         if(d5==0)                                          
  161.                                                                       delay(33);
  162.                                                         if(d5==0)

  163.                                                         {                                                      
  164. ……………………

  165. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼


全部資料51hei下載地址:
搶答器.7z (445.8 KB, 下載次數(shù): 230)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏7 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:555534 發(fā)表于 2019-6-5 12:49 | 只看該作者
后面為啥看不見
回復(fù)

使用道具 舉報(bào)

板凳
ID:551117 發(fā)表于 2019-6-6 13:59 | 只看該作者
求一個(gè)三路搶答器帶液晶屏的仿真和源代碼
回復(fù)

使用道具 舉報(bào)

地板
ID:561689 發(fā)表于 2019-6-13 14:01 | 只看該作者
厲害~~~~~
回復(fù)

使用道具 舉報(bào)

5#
ID:570523 發(fā)表于 2019-6-24 09:39 | 只看該作者
太厲害了吧
回復(fù)

使用道具 舉報(bào)

6#
ID:570523 發(fā)表于 2019-6-24 09:41 | 只看該作者
厲害厲害 太愛樓樓了
回復(fù)

使用道具 舉報(bào)

7#
ID:641767 發(fā)表于 2019-11-14 10:52 | 只看該作者
后面的沒有了嗎
回復(fù)

使用道具 舉報(bào)

8#
ID:644142 發(fā)表于 2019-11-18 11:30 來自手機(jī) | 只看該作者
也太厲害了吧
回復(fù)

使用道具 舉報(bào)

9#
ID:110278 發(fā)表于 2019-11-19 14:14 | 只看該作者
看不到了。
回復(fù)

使用道具 舉報(bào)

10#
ID:674921 發(fā)表于 2019-12-30 03:02 | 只看該作者
有12個(gè)按鍵的嘛
回復(fù)

使用道具 舉報(bào)

11#
ID:678490 發(fā)表于 2019-12-31 22:43 | 只看該作者
寫的很好,也很對(duì),里面通過1和6按鍵修改倒計(jì)時(shí),而且還能實(shí)現(xiàn)搶答的功能,k用來控制搶答,n用來控制修改時(shí)間,多謝樓主幫助。
回復(fù)

使用道具 舉報(bào)

12#
ID:1099065 發(fā)表于 2023-11-23 20:59 來自手機(jī) | 只看該作者
用不了
回復(fù)

使用道具 舉報(bào)

13#
ID:1098917 發(fā)表于 2023-11-28 21:09 | 只看該作者
還不錯(cuò)的程序,值得借鑒
回復(fù)

使用道具 舉報(bào)

14#
ID:1132365 發(fā)表于 2024-9-22 14:19 | 只看該作者

確定是用不了嗎?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 综合久久久| 一区二区精品视频 | 国产精品美女久久久久久免费 | 国产99久久 | 免费黄色av网站 | 91视频网址| 日韩午夜影院 | 欧美日韩一区二区在线观看 | 在线视频国产一区 | 亚洲一区二区三区在线播放 | 欧美日韩视频一区二区 | 国产午夜视频 | 精品日韩一区 | 嫩草视频入口 | 一级毛片在线看 | 欧美日韩中文字幕在线 | 99亚洲精品 | 国产特一级黄色片 | 91天堂 | 色接久久 | 国产在线观看一区二区三区 | 日韩成人免费中文字幕 | 在线视频a| 欧美一区二区大片 | 欧美精品一区三区 | 丝袜毛片 | 国产一区二区在线免费观看 | 精品一区二区久久久久久久网精 | 国产一区二区在线视频 | 三级成人在线 | 国产欧美一级 | 五月香婷婷 | 国产精品成人在线播放 | 国产高清免费视频 | 久久精品国产久精国产 | 国产精品女人久久久 | 亚洲精品一区二区三区四区高清 | 欧美在线视频一区二区 | 网站黄色在线免费观看 | 91视频正在播放 | 2022精品国偷自产免费观看 |