欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

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

QQ登錄

只需一步,快速開(kāi)始

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

單片機(jī)四路搶答器課程設(shè)計(jì)報(bào)告 含完整源碼

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

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


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

  • 方案論述

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


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

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

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

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

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

VI.能完成由主持人控制的30秒倒計(jì)時(shí),有搶答信號(hào)輸入后計(jì)時(shí)器開(kāi)始倒計(jì)時(shí)。

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

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


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

仿真電路組成:




(1)完整電路:


(2)搶答電路:


電路組成

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


電路測(cè)試:

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

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

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

(3)搶答計(jì)時(shí)模塊:


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

電路測(cè)試

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

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

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


(4)計(jì)分模塊




電路組成

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

電路測(cè)試:

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

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

③主持人按下復(fù)位鍵S5的時(shí)候,因?yàn)?4LS160的工作模式是保持不變,所以計(jì)分的數(shù)保持不變。


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

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


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

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

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

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

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

6、仿真代碼

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

  • 附錄

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


74LS192:


74LS160


單片機(jī)源程序如下:
  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)//有鍵按下了,此時(shí)為真,進(jìn)入循環(huán)
  83.                             {
  84.                                           delay(5);//延時(shí)后,消除抖動(dòng);確認(rèn)確實(shí)是有開(kāi)關(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;//如果沒(méi)有這條語(yǔ)句,此時(shí)的temp值是與0xf0與完后的值。而下面case中是為了給對(duì)應(yīng)的數(shù)碼管口顯示
  91.                                                         switch(temp)
  92.                                                         {
  93.                                                                       case 0xee:D1=0;key=1;x1++;      //0xee=11101110  看第一行的哪一列被按下去
  94.                                                                                     break;//檢測(cè)到是第一個(gè)按鍵被按下,就跳出這個(gè)while循環(huán)
  95.                                                                       case 0xde: D2=0; key=2;x2++; //11011110即第一行第二個(gè)按鍵按下之后顯示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.                                                         //松手檢測(cè)
  103.                                                         while(temp!=0xf0)//檢測(cè)是否松手,如果松手兩者相等,while條件為假,不執(zhí)行。但是若是因?yàn)槎秳?dòng),那么就讓temp重新與0xf0 AND
  104.                                                  {               
  105.                                                                       temp=P3;
  106.                                                                       temp=temp&0xf0;
  107.                                                                       beep=0;
  108.                                                         }
  109.                                                         beep=1;//按鍵按下發(fā)出響聲,松開(kāi)響聲停止
  110.                                           }
  111.                             }
  112.                             P3=0xf7;//第四行
  113.                             temp=P3;
  114.                             temp=temp&0xf0;            
  115.                             while(temp!=0xf0)
  116.                             {
  117.                                           delay(5);//確認(rèn)確實(shí)有鍵按下去了
  118.                                           temp=P3;
  119.                                           temp=temp&0xf0;
  120.                                           while(temp!=0xf0)
  121.                                           {
  122. ……………………

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

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



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

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表