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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機四路搶答器課程設(shè)計報告 含完整源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:161768 發(fā)表于 2017-8-15 02:58 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
課程設(shè)計報告
課程名稱電子技術(shù)課程設(shè)計
學(xué)院(部)
專    業(yè)      
班    級      
指導(dǎo)教師   
題    目     四路搶答器
組    員   

目錄
設(shè)計要求2
方案討論2
系統(tǒng)軟件仿真3
系統(tǒng)硬件實現(xiàn)7
心得體會10
6.仿真代碼11
附錄17


  • 設(shè)計要求
四路搶答器
設(shè)計要求:搶答器整個系統(tǒng)可分為三個主要模塊:搶答鑒別模塊、計分模塊、答題倒計時模塊。即當搶答開始后,選手搶答按動按鈕,鎖存器鎖存相應(yīng)的選手編碼,同時用數(shù)碼管把選手的編碼顯示出來,對應(yīng)加分模塊的發(fā)光二極管也會發(fā)光。當有選手搶答成功后,30秒答題倒計時開始跑秒,若選手在規(guī)定的時間內(nèi)答對題,主持人按下S6給相應(yīng)的選手加一分并且按下S5,系統(tǒng)清零。

  • 方案論述

方案:對于仿真,我們是將整個系統(tǒng)分為三個主要模塊:搶答鑒別模塊AIM;搶答計時模塊ATM;搶答計分模塊ASM。整個系統(tǒng)的組成框圖如下圖所示。三個模塊,選手搶答,然后倒計時開始,答完主持人加分(答對)。


I.本搶答器最多可提供4名參賽選手使用,編號為1~4號,各隊分別用一個按鈕(S1~S4)控制,并設(shè)置一個系統(tǒng)清零和搶答控制開關(guān)S5,該開關(guān)由主持人控制。

II.搶答器具有數(shù)據(jù)鎖存功能,并將鎖存數(shù)據(jù)用發(fā)光二極管指示燈顯示出來,同時蜂鳴器發(fā)出間歇式聲響,主持人清零后,聲音提示停止。

III.搶答先后的分辨率為1ms。

IV.開關(guān)S5作為清零及搶答控制開關(guān)(有主持人控制),當開關(guān)S5被按下時,搶答電路清零,松開后則允許搶答,輸入搶答信號由搶答按鈕的S1~S4實現(xiàn)。

V.有搶答信號輸入時,有數(shù)碼管顯示出相應(yīng)組別的號碼。此時再按其他任何一個搶答開關(guān)均無效,指示燈依舊保持第一個開關(guān)按下時所對應(yīng)的狀態(tài)不變。

VI.能完成由主持人控制的30秒倒計時,有搶答信號輸入后計時器開始倒計時。

VII.能完成定時器復(fù)位,啟動,暫停/繼續(xù)計數(shù)。

VIII.能完成對每個選手搶答次數(shù)的記錄,并可復(fù)位。


  • 系統(tǒng)軟件仿真

仿真電路組成:




(1)完整電路:


(2)搶答電路:


電路組成

該電路由四個D觸發(fā)器、與非門及脈沖觸發(fā)電路等組成。。其中S1,S2,S3、S4為搶答人按鈕,S5為主持人復(fù)位。74LS175為四D觸發(fā)器。


電路測試:

①無人搶答時,S1~S2均未被按下,1D~4D均為低電平,Q1~Q2為低電平,7段數(shù)碼管顯示數(shù)值為0.

②當 主持人宣布“搶答開始”后,答題者立即按下?lián)尨痖_關(guān),產(chǎn)生輸入信號,電路就可以工作了。例如,S1開關(guān)被按下,輸入為D4D2D1=001,輸出Q4Q2Q1=D3D2D1(7段數(shù)碼管的輸入,且D4==0)=001,數(shù)碼管顯示為1。Q4非Q2非Q1非和時鐘脈沖通過一個與門形成上升沿信號作為74LS175的CLK端的輸入,因為74LS175是下降沿觸發(fā),故除按下復(fù)位鍵之外不論什么按鍵都將不會發(fā)生電路狀態(tài)的變化,即輸入鎖存,實現(xiàn)了搶答功能。

③若要清除,當主持人按下S5復(fù)位鍵完成,為下一次搶答做好準備。

(3)搶答計時模塊:


電路組成:由兩片74LS192同步十進制計數(shù)器、7段數(shù)碼管、時鐘脈沖以及相應(yīng)邏輯門(3個或非門、與門、非門)構(gòu)成。

電路測試

①無人搶答時,預(yù)置輸入控制端輸入為0,復(fù)位輸入端為1,異步預(yù)置,十位片DCBA=0011,個位片 DCBA=0000,數(shù)碼館管顯示30。

②答題者搶答時,開關(guān)接通,個位片工作模式為減計數(shù),在數(shù)碼管顯示,當執(zhí)行到輸出QDQCQBQA=0000時,此時由于個位片的借位輸出端BO與十位片的DOWN相連,十位片減計數(shù)一次,相應(yīng)數(shù)碼管數(shù)值減1,也即每當個位片的數(shù)碼管從9—0時,十位片才做一次減計數(shù)。這樣就實現(xiàn)了30秒倒計時。

③當數(shù)碼館顯示00時或者答題者回答正確加分后,主持人按下復(fù)位鍵S5,74LS192的預(yù)置輸入端為0,復(fù)位輸入端為1,可實現(xiàn)異步置數(shù),數(shù)碼管顯示30,為下一輪的搶答做準備。


(4)計分模塊




電路組成

由四片74LS160、4個反相器、4個LED燈,4個7段數(shù)碼管組成。

電路測試:

①無人搶答時,數(shù)碼管全部顯示為0,LED熄滅狀態(tài)。

②搶答成功后并且在規(guī)定時間答對后,主持人按下S6加分鍵,通過74LS138譯碼器實現(xiàn)片選,選中的數(shù)碼管工作模式為計數(shù),此時對應(yīng)的選手的數(shù)碼管的值就會顯示加1。

③主持人按下復(fù)位鍵S5的時候,因為74LS160的工作模式是保持不變,所以計分的數(shù)保持不變。


四、系統(tǒng)硬件實現(xiàn)

系統(tǒng)實現(xiàn)是由51單片機實現(xiàn)的;STC51開發(fā)板,用keil軟件編寫C語言程序代碼實現(xiàn)其功能。              由于數(shù)碼管數(shù)量有限,所以用四個LED小燈來分別代表四位選手,前面四個數(shù)碼管依次顯示四位選手的分數(shù),最后兩個數(shù)碼管顯示30秒倒計時,調(diào)試過程下載程序,開發(fā)板上電之后,數(shù)碼管顯示000030      按下第一行第一個按鍵,第一個LED小燈亮,倒計時開始;按下第四行第一個按鍵,第一個數(shù)碼管加1,其他顯示為0按下第四行第二個按鍵,LED熄滅,倒計時恢復(fù)為30,加分不變。      每次按下相應(yīng)的按鍵,對應(yīng)的小燈會分別亮,且每次只亮一個小燈。


51單片機最小系統(tǒng)

6位共陽極數(shù)碼管

程序?qū)崿F(xiàn):

第一位選手搶答成功并加分
第二位選手搶答成功并加分
第三位選手搶答成功并加分:

第四位選手搶答成功并加分:
、心得體會這是第一次課設(shè),還是遇到了很多的問題,從分析題目要求到軟件仿真再到硬件實現(xiàn),花費了很多的精力,但是也收獲了很多。在使用Multism時,    許多元器件的英文不知道,不能很輕松的從元器件庫里選出正確的器件;    一些元器件參數(shù)的選擇并不是隨意選定的,需要計算和參考課本或者網(wǎng)上的經(jīng)驗分享;    也學(xué)到了通過二極管單向?qū)ǖ男再|(zhì)和D觸發(fā)器以及7段數(shù)碼管可以實現(xiàn)二進制的計數(shù),大大簡化了電路。

6、仿真代碼

51單片機仿真
     因為并沒有單片機基礎(chǔ),所以是邊自學(xué)單片機邊研究分析別人的程序;     關(guān)于程序中的中斷,定時,數(shù)碼管顯示,以及消除按鍵抖動等都是反復(fù)練習(xí)和調(diào)試才慢慢熟練的。

  • 附錄

部分芯片的管腳圖以及功能


74LS192:


74LS160


單片機源程序如下:
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char
  4. sbit dula=P2^6;
  5. sbit wela=P2^7;
  6. sbit D1=P1^0;
  7. sbit D2=P1^1;
  8. sbit D3=P1^2;
  9. sbit D4=P1^3;
  10. sbit beep=P2^3;
  11. uchar code table[]={
  12. 0x3f,0x06,0x5b,0x4f,
  13. 0x66,0x6d,0x7d,0x07,
  14. 0x7f,0x6f,0x77,0x7c,
  15. 0x39,0x5e,0x79,0x71,0};
  16. uchar key,temp,daojishi=0x1e,x1=0,x2=0,x3=0,x4=0;
  17. bit begin,end,clear;
  18. unsigned int pp,qq;
  19. uchar a0=0;b0=0;c0=0;d0=0;e0=0;f0=3;
  20. void delay(uint z)
  21. {
  22.               uint x,y;
  23.               for(x=z;x>0;x--)
  24.                             for(y=110;y>0;y--);
  25. }

  26. void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f)
  27. {
  28.    dula=1;
  29.    P0=table[a];
  30.    dula=0;
  31.    wela=1;
  32.    P0=0xfe;
  33.    wela=0;
  34.    delay(5);
  35. /////////////   
  36.    dula=1;
  37.    P0=table[b];
  38.    dula=0;
  39.    wela=1;
  40.    P0=0xfd;
  41.    wela=0;
  42.    delay(5);
  43. /////////////////
  44.    dula=1;
  45.    P0=table[c];
  46.    dula=0;
  47.    wela=1;  
  48.    P0=0xfb;
  49.    wela=0;
  50.    delay(5);
  51. /////////////
  52.    dula=1;
  53.    P0=table[d];
  54.    dula=0;
  55.    wela=1;  
  56.    P0=0xf7;
  57.    wela=0;
  58.    delay(5);
  59. // //////////////
  60.    dula=1;
  61.    P0=table[e];
  62.    dula=0;
  63.    wela=1;  
  64.    P0=0xef;
  65.    wela=0;
  66.    delay(5);
  67. /////////////
  68.    dula=1;
  69.    P0=table[f];
  70.    dula=0;
  71.    wela=1;  
  72.    P0=0xdf;
  73.    wela=0;
  74.    delay(5);
  75. }
  76. void keyscan()
  77. {
  78.               //P3^0口按下,矩陣第一行,P3^0            
  79.                             P3=0xfe;
  80.                             temp=P3;
  81.                             temp=temp&0xf0;//如果按下了,那么肯定就和0xf0不相等了
  82.                             while(temp!=0xf0)//有鍵按下了,此時為真,進入循環(huán)
  83.                             {
  84.                                           delay(5);//延時后,消除抖動;確認確實是有開關(guān)鍵按下了
  85.                                           temp=P3;//重新讓temp讀取P3口
  86.                                           temp=temp&0xf0;
  87.                                           D1=1;D2=1;D3=1;D4=1;
  88.                                           while(temp!=0xf0)
  89.                                           {
  90.                                                         temp=P3;//如果沒有這條語句,此時的temp值是與0xf0與完后的值。而下面case中是為了給對應(yīng)的數(shù)碼管口顯示
  91.                                                         switch(temp)
  92.                                                         {
  93.                                                                       case 0xee:D1=0;key=1;x1++;      //0xee=11101110  看第一行的哪一列被按下去
  94.                                                                                     break;//檢測到是第一個按鍵被按下,就跳出這個while循環(huán)
  95.                                                                       case 0xde: D2=0; key=2;x2++; //11011110即第一行第二個按鍵按下之后顯示2;
  96.                                                                                     break;
  97.                                                                       case 0xbe:D3=0;key=3;x3++;
  98.                                                                                     break;
  99.                                                                       case 0x7e: D4=0;key=4; x4++;
  100.                                                                                     break;
  101.                                                         }
  102.                                                         //松手檢測
  103.                                                         while(temp!=0xf0)//檢測是否松手,如果松手兩者相等,while條件為假,不執(zhí)行。但是若是因為抖動,那么就讓temp重新與0xf0 AND
  104.                                                  {               
  105.                                                                       temp=P3;
  106.                                                                       temp=temp&0xf0;
  107.                                                                       beep=0;
  108.                                                         }
  109.                                                         beep=1;//按鍵按下發(fā)出響聲,松開響聲停止
  110.                                           }
  111.                             }
  112.                             P3=0xf7;//第四行
  113.                             temp=P3;
  114.                             temp=temp&0xf0;            
  115.                             while(temp!=0xf0)
  116.                             {
  117.                                           delay(5);//確認確實有鍵按下去了
  118.                                           temp=P3;
  119.                                           temp=temp&0xf0;
  120.                                           while(temp!=0xf0)
  121.                                           {
  122. ……………………

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

全部資料(源碼)51黑下載地址:



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

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美成年黄网站色视频 | 成人影视网址 | 99只有精品 | 久久精品一区二区视频 | 视频一区在线 | 国产精品视频导航 | xx性欧美肥妇精品久久久久久 | 一区二区三区日韩精品 | 亚洲www啪成人一区二区 | 精品99久久久久久 | 91看片免费版 | 成人精品鲁一区一区二区 | 精品av | av日韩精品 | av黄色片在线观看 | 国产高清区| 成人在线视频免费观看 | 一级毛片视频免费观看 | 久久久综合 | 四虎成人精品永久免费av九九 | 欧美精品乱码99久久影院 | 久久久久国产一级毛片高清网站 | 亚洲精品9999久久久久 | 黄色免费网站在线看 | 一区中文字幕 | 密色视频| 久久精品99| 国产在线视频三区 | 亚洲欧美视频一区二区 | 午夜影院 | 粉嫩av在线 | 国产欧美日韩综合精品一区二区 | 精品国产一区二区三区性色av | 成人a视频在线观看 | 国产精品久久久久久久久久久久久 | 久久久激情 | 国产精品呻吟久久av凹凸 | 99精品国产一区二区三区 | 波多野结衣亚洲 | 日本精品久久久久久久 | 亚洲欧美视频一区二区 |