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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4446|回復(fù): 2
收起左側(cè)

基于單片機(jī)的8路搶答器控制課程設(shè)計論文

[復(fù)制鏈接]
ID:262204 發(fā)表于 2017-12-15 21:35 | 顯示全部樓層 |閱讀模式
單片機(jī)與接口技術(shù)課程設(shè)計
題目:基于單片機(jī)的 8路搶答器控制設(shè)計
姓    名:
古響濤
學(xué)    號:
2014143227
層    次:
本科
專    業(yè):
機(jī)械電子工程
班    級:
2班
指導(dǎo)教師:
嚴(yán)其艷

2017年05月

目   錄


1前 沿

設(shè)計目的及意義

設(shè)計內(nèi)容

2 硬件電路設(shè)計

單片機(jī)芯片的選擇

2.1 硬件電路模塊設(shè)計

(1) 振蕩電路

(2) 復(fù)位電路設(shè)計

(3)顯示電路的設(shè)計

(4)報警電路的設(shè)計

(5) 總體設(shè)計

3 系統(tǒng)軟件設(shè)計

軟件設(shè)計流程

源程序設(shè)計

4 系統(tǒng)調(diào)試與仿真

系統(tǒng)硬件仿真電路圖

仿真效果圖

5 元件清單

6 設(shè)計體會

參考文獻(xiàn)



1前 沿

設(shè)計目的及意義

對于搶答器我們大家來說都不陌生,它是用于很多競賽場合,真正實現(xiàn)先搶先答,讓最先搶到題的選手來回答問題。搶答器不僅考驗選手的反應(yīng)速度同時也要求選手具備足夠的知識面和一定的勇氣。選手們都站在同一個起跑線上,體現(xiàn)了公平公正的原則。

設(shè)計內(nèi)容

基本要求:

給主持人設(shè)置一個開關(guān),用來控制系統(tǒng)的重啟(編號顯示數(shù)碼管重置初始時間)和搶答器的倒計時開始。

搶答器顯示和倒計時的功能。搶答開始后,若有選手按動搶答器按鈕,編號立即鎖存,并在LED數(shù)碼上顯示選手的編號,同時揚(yáng)聲器給出音響提示。此外,要封鎖輸入電路,禁止其他選手搶答。

發(fā)揮部分:

搶答器具有定時搶答的功能,且一次搶答的時間可以由主持人設(shè)定(如9秒)。當(dāng)節(jié)目主持人啟動“開始”鍵后,要求定時器立即減計時,并用顯示器顯示。

參加選手在設(shè)定的時間內(nèi)搶答,搶答有效,定時器停止工作,顯示器上顯示選手的編號,并保持到主持人將系統(tǒng)清零為止。

如果定時搶答的時間已到,卻沒有選手搶答時,本次搶答無效,系統(tǒng)自動回復(fù)到初始倒計時時間,并封鎖輸入電路,禁止選手超時后搶答。

2 硬件電路設(shè)計

單片機(jī)芯片的選擇

單片機(jī)選用的是Atmel公司推出的AT89C52,它是一種低功效、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲器。使用Atmel公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51產(chǎn)品指令和引腳完全兼容。在單芯片上擁有靈巧的8位CPU和在線系統(tǒng)可編程Flash,使得AT89C52具有以下標(biāo)準(zhǔn)功能:8K字節(jié)Flash,256字節(jié)RAM,32位I/O口線,看門狗定時器,2個數(shù)據(jù)指針,三個16位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。空閑模式下,CPU停止工作,允許RAM、定時器/計數(shù)器串口、中斷繼續(xù)工作。掉電保護(hù)方式下RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個中斷或硬件復(fù)位為止。而且,它還具有一個看門狗(WDT)定時/計數(shù)器。如果程序沒有正常工作,就會強(qiáng)制整個系統(tǒng)復(fù)位,還可以在程序陷入死循環(huán)的時候,讓單片機(jī)復(fù)位而不用整個系統(tǒng)斷電,從而保護(hù)你的硬件電路。T89S52有40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內(nèi)含2個外中端口,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。其將通用的微處理器和Flash存儲器結(jié)合在一起,特別是可反復(fù)擦寫的Flash存儲器可有效地降低開發(fā)成本。

單片機(jī)管腳說明:

   圖1 AT89C52                                                                     

表1

引腳

功能

P1.0

蜂鳴器報警,警示燈報警

P1.1~1.7

數(shù)碼管,用顯示搶答號數(shù)

P3.2

INT0(外部中斷0輸入),用于倒計時

P0.0~P0.7

發(fā)光二極管

P2.0~P2.7

數(shù)碼管,用于倒計時

P3.0~P3.7

按鈕搶答功能鍵

RST

復(fù)位端

XTAL1,XTAL2

振蕩電路


2.1 硬件電路模塊設(shè)計

(1) 振蕩電路

一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產(chǎn)生幅度為3V左右的正弦波時鐘信號,其振蕩頻率為11.0592HZ。電路中兩個電容 C1,C2的作用有兩個:一是幫助振蕩器起振;二是對振蕩器的頻率進(jìn)行微調(diào),C1,C2的典型值為33PF。其電路如圖2所示。

圖2 振蕩電路

(2) 復(fù)位電路設(shè)計

單片機(jī)的第9腳RST為硬件復(fù)位端,只要將該端持續(xù)4個機(jī)器周期的高電平即可實現(xiàn)復(fù)位,復(fù)位后單片機(jī)的各狀態(tài)都恢復(fù)到初始化狀態(tài),其電路圖如圖3所示:

圖3 復(fù)位電路

在方案中使用到了硬件復(fù)位和軟件復(fù)位兩種功能,由上面的硬件復(fù)位可使寄存器及存儲器的值都恢復(fù)到初始值,而前面的功能提到了倒計時間需要有記憶功能,該功能實現(xiàn)的前提條件就是不能對單片機(jī)進(jìn)行硬件復(fù)位,所以設(shè)定了軟復(fù)位功能。軟復(fù)位實際上就是當(dāng)程序執(zhí)行完畢之后,將程序指針通過一條跳轉(zhuǎn)指令讓它跳轉(zhuǎn)到程序執(zhí)行的起始地址。

(3)顯示電路的設(shè)計

在方案中使用到了倒計時數(shù)碼顯示管,選手對應(yīng)發(fā)光二極管與數(shù)碼顯示管。

其中數(shù)碼顯示管是屬于共陽極的,由低電平點(diǎn)亮。其電路圖如圖4所示。

圖4 顯示電路

(4)報警電路的設(shè)計

這里能利用程序來控制單片機(jī)P1.0口線反復(fù)輸出高電平或低電平,即在該口線上產(chǎn)生一定頻率的矩形波,接上揚(yáng)聲器就能發(fā)出一定頻率的聲音,再利用延時程序控制“高”“低”電平的持續(xù)時間,就能改變輸出頻率,從而改變音調(diào),使揚(yáng)聲器發(fā)出不同的聲音。

圖5 報警電路

(5) 總體設(shè)計

圖6 總體設(shè)計

3 系統(tǒng)軟件設(shè)計

軟件設(shè)計流程

流程圖是使用圖形表示算法的思路是一種極好的方法,不論采用何種程序設(shè)計方法,程序總體結(jié)構(gòu)確定后,一般以程序流程圖的形式對其進(jìn)行描述。總體框圖中的各個子模塊或各個子任務(wù)也應(yīng)該結(jié)合具體的教學(xué)模型和算法畫出較詳細(xì)的程序流程圖,供后面編寫具體程序和閱讀程序使用。

流程圖是由一些圖框和流程線組成的,其中圖框表示各種操作的類型,圖框中的文字和符號表示操作的內(nèi)容,流程線表示操作的先后次序。流程圖的基本結(jié)構(gòu)為順序結(jié)構(gòu),分支結(jié)構(gòu)(又稱選擇結(jié)構(gòu)),循環(huán)結(jié)構(gòu)。為便于識別,繪制流程圖的習(xí)慣做法是:

方框表示:要執(zhí)行的處理(Process)

平行四邊型表示:代表資料輸入(Input)

不規(guī)則圖形代表資料輸出(Output)或報表輸出(Print)

菱形表示:決策或判斷(例如:If...Then...Else)

跟據(jù)設(shè)計要求,初步擬定總體設(shè)計框圖如圖7所示:

圖7



4 系統(tǒng)調(diào)試與仿真

系統(tǒng)硬件仿真電路圖

圖8系統(tǒng)硬件仿真電路圖

仿真效果圖

圖9仿真效果圖

5 元件清單

表2 元件清單

元件
數(shù)量
AT89C52
1
按鍵
9
LED燈(黃)
8
33pf電容
2
pnp三極管
1
蜂鳴器
1
7段數(shù)碼顯示管
2
33pF瓷片電容
2
11.0592晶振
1
10uF電解電容
1
330電阻
8
10k電阻
1

6 設(shè)計體會

我在這一次搶答器的設(shè)計過程中,很是受益匪淺。通過對自己在這一學(xué)期時間里所學(xué)的知識的回顧,并充分發(fā)揮對所學(xué)知識的理解和對設(shè)計的思考及書面表達(dá)能力,最終完成了。這為自己今后進(jìn)一步深化學(xué)習(xí),積累了一定寶貴的經(jīng)驗。撰寫論文的過程也是專業(yè)知識的學(xué)習(xí)過程,它使我運(yùn)用已有的專業(yè)基礎(chǔ)知識,對其進(jìn)行設(shè)計,分析和解決一個理論問題或?qū)嶋H問題,把知識轉(zhuǎn)化為能力的實際訓(xùn)練。培養(yǎng)了我運(yùn)用所學(xué)知識解決實際問題的能力。

通過這次課程設(shè)計我發(fā)現(xiàn),只有理論水平提高了;才能夠?qū)⒄n本知識與實踐相整合,理論知識服務(wù)于教學(xué)實踐,以增強(qiáng)自己的動手能力。這個實驗十分有意義 我獲得很深刻的經(jīng)驗。通過這次課程設(shè)計,我們知道了理論和實際的距離,也知道了理論和實際想結(jié)合的重要性,,也從中得知了很多書本上無法得知的知識。

我們的學(xué)習(xí)不但要立足于書本,以解決理論和實際教學(xué)中的實際問題為目的,還要以實踐相結(jié)合,理論問題即實踐課題,解決問題即課程研究,學(xué)生自己就是一個專家,通過自己的手來解決問題比用腦子解決問題更加深刻。學(xué)習(xí)就應(yīng)該采取理論與實踐結(jié)合的方式,理論的問題,也就是實踐性的課題。這種做法既有助于完成理論知識的鞏固,又有助于帶動實踐,解決實際問題,加強(qiáng)我們的動手能力和解決問題的能力。


參考文獻(xiàn)

[1]單片機(jī)課程設(shè)計實例指導(dǎo),李光飛,北京航天航空大學(xué)出版社,2004

[2]單片機(jī)原理及接口技術(shù)(第3版),李朝青,北京航空航天大學(xué)出版社,2002

[3]單片機(jī)C程序設(shè)計及應(yīng)用實例,胡偉,人民郵電出版社,2003

[4]單片機(jī)系統(tǒng)設(shè)計與實例指導(dǎo),馮育長,西安電子科技大學(xué)出版社,2007

[5]電子電路及電子器件, 郭培源, 高等教育出版社.,2003

[6]數(shù)字電子技術(shù). 楊志忠, 高等教育出版社,2002


廣東科技學(xué)院課程設(shè)計成績考核表
姓 名:古響濤
學(xué) 號:2014143227
專業(yè)/班級:機(jī)械電子工程2班
課程設(shè)計題目:8路搶答器
一、指導(dǎo)教師對該課程設(shè)計總體評價



               指導(dǎo)教師簽名:                     年     月     日 
二、課程設(shè)計最終得分





評閱教師簽名:                         年     月     日



單片機(jī)源程序如下:
  1. #include<reg51.h>
  2. unsigned char flag,num1,num2;
  3. sbit a1=P3^0;//P3口開關(guān)
  4. sbit a2=P3^1;
  5. sbit a3=P3^2;
  6. sbit a4=P3^3;
  7. sbit a5=P3^4;
  8. sbit a6=P3^5;
  9. sbit a7=P3^6;
  10. sbit a8=P3^7;
  11. sbit b1=P1^0;//P1口蜂鳴器
  12. sbit b2=P1^1;
  13. sbit b3=P1^2;
  14. unsigned char code table[]={0x40,0xf9,0x24,0x30,0x19,0x12,0x02,0xf8,0x00,0x10};//數(shù)碼管顯示
  15. void display()
  16. {
  17. P2=table[num2]; //P2口數(shù)碼管
  18. }
  19. void init()
  20. {
  21. num2=10;
  22. TMOD=0X01;
  23. TH0=(65536-45872)/256;
  24. TL0=(65536-45872)/256;
  25. EA=1;
  26. ET0=1;
  27. TR0=1;
  28. flag=1;//全局變量
  29. P0=0xff;//P0口LED燈
  30. b1=1;
  31. P2=0xff;
  32. }
  33. void delay(int z)//延時程序
  34. {
  35.   int i,j;
  36.   for(i=0;i<z;i++)
  37.     for(j=0;j<110;j++);
  38. }
  39. void main()
  40. {
  41. init();
  42. while(flag)
  43. {
  44.    if(a1==0)
  45.    {
  46.      delay(100);//調(diào)用延時程序消除抖動
  47.      if(a1==0)//判斷開關(guān)a1是否按下
  48.      {
  49.                  P1=0xf2;
  50.        flag=0;
  51.        P0=0xfe;//對應(yīng)LED燈亮
  52.        b1=0;//蜂鳴器響
  53.        while(!a1);//按住時持續(xù)響
  54.        b3=0;
  55.        b1=1;
  56.       }
  57.    }
  58.    if(a2==0)//同理判斷a2
  59.    {
  60.      delay(100);
  61.      if(a2==0)
  62.      {
  63.                 P1=0x48;
  64.        flag=0;
  65.        P0=0xfd;
  66.        b1=0;
  67.        while(!a2);
  68.        b1=1;
  69.                  P1=0x48;
  70.       }
  71.     }
  72.    if(a3==0)//同理判斷a3
  73.    {
  74.      delay(100);
  75.      if(a3==0)
  76.      {
  77.                 P1=0x60;
  78.        flag=0;
  79.        P0=0xfb;
  80.        b1=0;
  81.        while(!a3);
  82.        b1=1;
  83.       }
  84.     }
  85.    if(a4==0)//同理判斷a4
  86.    {
  87.      delay(100);
  88.      if(a4==0)
  89.      {
  90.                  P1=0x32;
  91.        flag=0;
  92.        P0=0xf7;
  93.        b1=0;
  94.        while(!a4);
  95.        b1=1;
  96.       }
  97.     }
  98.    if(a5==0)//同理判斷a5
  99.    {
  100.      delay(10);
  101.      if(a5==0)
  102.      {
  103.                  P1=0x24;
  104.        flag=0;
  105.        P0=0xef;
  106.        b1=0;
  107.        while(!a5);
  108.        b1=1;
  109.       }
  110.     }
  111.    if(a6==0)//同理判斷a6
  112.    {
  113.      delay(10);
  114.      if(a6==0)
  115.      {
  116.                  P1=0x04;
  117.        flag=0;
  118.        P0=0xdf;
  119.        b1=0;
  120.        while(!a6);
  121.        b1=1;
  122.       }
  123.     }
  124.    if(a7==0)//同理判斷a7
  125.    {
  126.      delay(10);
  127.      if(a7==0)
  128.      {
  129.                  P1=0xf0;
  130.        flag=0;
  131.        P0=0xbf;
  132.        b1=0;
  133.        while(!a7);
  134.        b1=1;
  135.       }
  136.     }
  137.    if(a8==0)//同理判斷a8
  138.    {
  139.      delay(10);
  140.      if(a8==0)
  141.      {
  142.                 P1=0x00;
  143.        flag=0;
  144.        P0=0x7f;
  145.        b1=0;
  146.        while(!a8);
  147.        b1=1;
  148.       }
  149.     }
  150. }
  151. while(!flag)
  152. {
  153.    EA=0;
  154.   if(P3!=0xff)//沒有開關(guān)按下時不響也不亮
  155.   {
  156.     b1=0;   b2=0;
  157.     delay(50);
  158. ……………………

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

完整的Word格式文檔51黑下載:
單片機(jī)與接口技術(shù)課程設(shè)計.doc (655.5 KB, 下載次數(shù): 41)





回復(fù)

使用道具 舉報

ID:768534 發(fā)表于 2020-6-7 00:10 | 顯示全部樓層
學(xué)習(xí)了
回復(fù)

使用道具 舉報

ID:769513 發(fā)表于 2020-6-7 13:34 來自觸屏版 | 顯示全部樓層
有仿真教程嗎
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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