01課程設(shè)計(jì)目的
單片機(jī)原理及應(yīng)用課程設(shè)計(jì)是學(xué)生綜合運(yùn)用所學(xué)知識,全面掌握單片微型計(jì)算機(jī)及其接口的工作原理、編程和使用方法的重要實(shí)踐環(huán)節(jié)。通過獨(dú)立或協(xié)作提出并論證設(shè)計(jì)方案,進(jìn)行軟、硬件調(diào)試,最后獲得正確的運(yùn)行結(jié)果,可以加深和鞏固對理論教學(xué)和實(shí)驗(yàn)教學(xué)內(nèi)容的掌握,進(jìn)一步建立計(jì)算機(jī)應(yīng)用系統(tǒng)整體概念,初步掌握單片機(jī)軟、硬件開發(fā)方法。
根據(jù)單片機(jī)原理及應(yīng)用課程的要求,主要進(jìn)行兩個(gè)方面的設(shè)計(jì),即單片機(jī)最小系統(tǒng)和存儲器擴(kuò)展設(shè)計(jì)、接口技術(shù)應(yīng)用設(shè)計(jì)。其中,單片機(jī)最小系統(tǒng)主要要求學(xué)生熟悉單片機(jī)的內(nèi)部結(jié)構(gòu)和引腳功能、引腳的使用、復(fù)位電路、時(shí)鐘電路、4個(gè)并行接口和一個(gè)串行接口的實(shí)際應(yīng)用,從而可構(gòu)成最小應(yīng)用系統(tǒng),并編程進(jìn)行簡單使用。
存儲器擴(kuò)展設(shè)計(jì)要求學(xué)生掌握常用半導(dǎo)體芯片與單片機(jī)的接口,如EPROM存儲器用作外部程序存儲器時(shí)與單片機(jī)的連接關(guān)系,SRAM存儲器用作外部數(shù)據(jù)存儲器時(shí)與單片機(jī)的連接關(guān)系,E2PROM存儲器用作外部程序/數(shù)據(jù)存儲器時(shí)與單片機(jī)的連接關(guān)系。能合理分配和使用單片機(jī)的內(nèi)部和外部存儲器,編程實(shí)現(xiàn)正常的讀寫功能。
02課程設(shè)計(jì)的任務(wù)與要求
2.1課程設(shè)計(jì)的任務(wù)
根據(jù)所學(xué)的單片機(jī)知識,設(shè)計(jì)一個(gè)八路的電子搶答器系統(tǒng),實(shí)現(xiàn)功能為:可供8個(gè)選手使用,可顯示30s倒計(jì)時(shí),并可顯示出搶到的選手號。
2.2課程設(shè)計(jì)要求
(1)設(shè)計(jì)出硬件電路;
(2)設(shè)計(jì)出軟件編程方法,并寫出源代碼;
03設(shè)計(jì)方案與論證
3.1設(shè)計(jì)方案
系統(tǒng)采用51系列單片機(jī)AT89C51作為控制核心,該系統(tǒng)可以完成運(yùn)算控制、信號識別以及顯示功能的實(shí)現(xiàn)。由于用了單片機(jī),使其技術(shù)比較成熟,應(yīng)用起來方便、簡單并且單片機(jī)周圍的輔助電路也比較少,便于控制和實(shí)現(xiàn)。整個(gè)系統(tǒng)具有極其靈活的可編程性,能方便地對系統(tǒng)進(jìn)行功能的擴(kuò)張和更改。
3.2方案論證
(1)可靠性好:單片機(jī)按照工業(yè)控制要求設(shè)計(jì),抵抗工業(yè)噪聲干擾優(yōu)于一般的CPU,程序指令和數(shù)據(jù)都可以寫在ROM里,許多信號通道都在同一芯片,因此可靠性高,易擴(kuò)充。
(2)單片機(jī)有一般電腦所必須的器件,如三態(tài)雙向總線,串并行的輸入及輸出引腳,可擴(kuò)充為各種規(guī)模的微電腦系統(tǒng)。
(3) 控制功能強(qiáng):單片機(jī)指令除了輸入輸出指令,邏輯判斷指令外還有更豐富的條件分支跳躍指令。
04設(shè)計(jì)原理及功能介紹
4.1設(shè)計(jì)原理
八路搶答器的工作原理是利用單片機(jī)的定時(shí)器T0、T1中斷完成,其余狀態(tài)循環(huán)調(diào)用顯示子程序,用4個(gè)共陰極LED數(shù)碼管來顯示,用P0口作為數(shù)碼管的八個(gè)段選,用P2口中的P2.0、P2.1、P2.2、作為4個(gè)數(shù)碼管其中3個(gè)位選,P1口接8個(gè)按鍵,提供選手搶答,P3.0-P3.5四個(gè)接四個(gè)按鍵,提供開始、結(jié)束、答題時(shí)間調(diào)整、搶答時(shí)間調(diào)整,加1、減1調(diào)整之用
接通電源后,主持人將開關(guān)撥到“清除”狀態(tài),搶答器處于禁止?fàn)顟B(tài),編號顯示器滅燈,定時(shí)器顯示設(shè)定時(shí)間;主持人將開關(guān)置,“開始”狀態(tài),宣布“開始”搶答器工作。定時(shí)器倒計(jì)時(shí),揚(yáng)聲器給出聲響提示。選手在定時(shí)時(shí)間內(nèi)搶答時(shí),搶答器完成:優(yōu)先判斷、編號鎖存、編號顯示、揚(yáng)聲器等提示。當(dāng)一輪搶答之后,定時(shí)器停止、禁止二次搶答、定時(shí)器顯示剩余時(shí)間。如果再次搶答必的條件分支跳躍指令。其原理框圖如4-1所示
4-1八路搶答器原理框圖
4.2功能介紹
(1)如果想調(diào)節(jié)搶答時(shí)間或答題時(shí)間,按"搶答時(shí)間調(diào)節(jié)"鍵或"答題時(shí)間調(diào)節(jié)"鍵進(jìn)入調(diào)節(jié)狀態(tài),此時(shí)會顯示現(xiàn)在設(shè)定的搶答時(shí)間或回答時(shí)間值,如想加一秒按一下"加1s"鍵,如果想減一秒按一下"-1s"鍵,時(shí)間LED上會顯示改變后的時(shí)間,調(diào)整范圍為0s~99s, 0s時(shí)再減1s會跳到99,99s時(shí)再加1s會變到0s。
(2)主持人按"搶答開始"鍵,會有提示音,并立刻進(jìn)入搶答倒計(jì)時(shí)(預(yù)設(shè)30s搶答時(shí)間),如有選手搶答,會有提示音,并會顯示其號數(shù)并立刻進(jìn)入回答倒計(jì)時(shí)(預(yù)設(shè)60s搶答時(shí)間),不進(jìn)行搶答查詢,所以只有第一個(gè)按搶答的選手有效。倒數(shù)時(shí)間到小于5s會每秒響一下提示音。
(3)如倒計(jì)時(shí)期間,主持人想停止倒計(jì)時(shí)可以隨時(shí)按"停止"按鍵,系統(tǒng)會自動進(jìn)入準(zhǔn)備狀態(tài),等待主持人按"搶答開始"進(jìn)入下次搶答計(jì)時(shí)。
(4)如果主持人未按"搶答開始"鍵,而有人按了搶答按鍵,犯規(guī)搶答,LED上不斷閃爍FF和犯規(guī)號數(shù)并響個(gè)不停,直到按下"停止" 鍵為止。
(5)P3.0為開始搶答,P3.1為停止,p1.0-p1.7為八路搶答輸入 數(shù)碼管段選P0口,位選P2口低3位,蜂鳴器輸出為P3.6口。P3.2搶答時(shí)間調(diào)整結(jié),P3.3回答時(shí)間調(diào)整,P3.4為時(shí)間加1調(diào)整,P3.5為時(shí)間減1調(diào)整。
05單元電路設(shè)計(jì)
5.1時(shí)鐘電路
5-1時(shí)鐘電路圖
一般選用石英晶體振蕩器。此電路在加電大約延遲10ms后振蕩器起振,在XTAL2引腳產(chǎn)生幅度為3V左右的正弦波時(shí)鐘信號,其振蕩頻率主要由石英晶振的頻率確定。電路中有兩個(gè)電容C1,C2它們的主要作用為:一是幫助振蕩器起振;二是對振蕩器的頻率進(jìn)行微調(diào)。C1,C2的典型值為30PF。
單片機(jī)在工作時(shí),由內(nèi)部振蕩器產(chǎn)生或由外直接輸入的送至內(nèi)部控制邏輯單元的時(shí)鐘信號的周期稱為時(shí)鐘周期。其大小是時(shí)鐘信號頻率的倒數(shù),常用fosc表示。如時(shí)鐘頻率為12MHz,即fosc=12MHz,則時(shí)鐘周期為1/12μs。
5.2復(fù)位電路
AT89C51的復(fù)位由外部的復(fù)位電路實(shí)現(xiàn)。復(fù)位電路通常采用上電自動復(fù)位和按鈕復(fù)位兩種方式。本次設(shè)計(jì)采用按鈕復(fù)位方式。
單片機(jī)的第9腳RST為硬件復(fù)位端,只要持續(xù)4個(gè)機(jī)器周期的高電平即可實(shí)現(xiàn)復(fù)位,硬件復(fù)位后的各狀態(tài)可知寄存器以及存儲器的值都恢復(fù)到了初始值。
5-2復(fù)位電路圖
5.3數(shù)碼管顯示電路
本次課程設(shè)計(jì)采用了7SEG-MPX2-CC 的兩位7段共陰極數(shù)碼管,用來顯示30s倒計(jì)時(shí),和7SEG-MPX1-CC的一位7段共陰極數(shù)碼管,用來顯示搶答中的選手號碼。位選端分別與P2口的第七位,第六位以及第零位相接。同時(shí)7段數(shù)碼管線段通過上拉電阻接power,實(shí)現(xiàn)數(shù)碼管的點(diǎn)亮。
5-3數(shù)碼管顯示電路圖
5.4報(bào)警電路
這里能利用程序來控制單片機(jī)P3.7口線反復(fù)輸出高電平或低電平,即在該口線上產(chǎn)生一定頻率的矩形波,接上揚(yáng)聲器就能發(fā)出一定頻率的聲音,再利用延時(shí)程序控制“高”“低”電平的持續(xù)時(shí)間,就能改變輸出頻率,從而改變音調(diào),使揚(yáng)聲器發(fā)出不同的聲音,由于材料有限,本次實(shí)驗(yàn)采用發(fā)光二極管代替報(bào)警器。
5-4報(bào)警電路圖
5.5按鈕輸入電路
5-5按鈕電路圖
8個(gè)按鈕接P1口,表示8個(gè)選手的搶答按鈕,一個(gè)總開關(guān)接P3.0口負(fù)責(zé)啟動定時(shí)程序。
06軟件調(diào)試過程及結(jié)果
6.1調(diào)試過程
(1)軟件調(diào)試
問題1:選手搶答后計(jì)時(shí)未停止。
解決辦法:在if語句判斷按鈕是否按下后,增加TR0=0語句,使計(jì)時(shí)器停止計(jì)時(shí)。
問題2:倒計(jì)時(shí)開始之前,以及選手搶答后都可按下按鈕。
解決辦法:增加檢測變量n,當(dāng)TR0為1是n為1,當(dāng)n為1時(shí)才開始檢測是否有鍵按下,一旦有鍵按下n置為0,此后按鍵均無效。
(2)硬件仿真調(diào)試
問題1:七段數(shù)碼管不亮
解決辦法:開始采用Input作為數(shù)碼管電源,改為power后顯示正常。
問題2:一位七段數(shù)碼管管腳較密集無法正常畫線
解決辦法:在走線困難的地方按住ctrl鍵即可。
6.2調(diào)試結(jié)果
(1) keil uVision3
6.2.2 proteus
(2)開始計(jì)時(shí)
(3)7號選手搶答
07
總結(jié)
經(jīng)過一周的單片機(jī)課程設(shè)計(jì),終于完成了八路搶答器的設(shè)計(jì),不僅基本上達(dá)到設(shè)計(jì)要求,而且還是收獲良多。通過這次課程設(shè)計(jì),使我更進(jìn)一步地熟悉了單片機(jī)芯片的工作原理和其具體的使用方法。單片機(jī)課程設(shè)計(jì)重點(diǎn)就在于軟件算法的設(shè)計(jì),需要有很巧妙的程序算法,這鍛煉了自己獨(dú)立思考問題的能力和通過查看相關(guān)資料來解決問題的習(xí)慣。還有了解了課程設(shè)計(jì)的一般步驟,和設(shè)計(jì)中應(yīng)注意的問題。
設(shè)計(jì)不僅是對前面所學(xué)知識的一種檢驗(yàn),而且也是對自己能力的一種提高。下面我對整個(gè)設(shè)計(jì)的過程做一下簡單的總結(jié)。第一,接到任務(wù)以后進(jìn)行選題。選題是設(shè)計(jì)的開端,選擇恰當(dāng)?shù)摹⒏信d趣的題目,這對于整個(gè)設(shè)計(jì)是否能夠順利進(jìn)行關(guān)系極大。好比走路,這開始的第一步是具有決定意義的,第一步邁向何方,需要慎重考慮。否則,就可能走許多彎路、費(fèi)許多周折,甚至南轅北轍,難以到達(dá)目的地。因此,選;題時(shí)一定要考慮好了。第二,題目確定后就是找資料了。查資料是做設(shè)計(jì)的前期準(zhǔn)備工作,好的開端就相當(dāng)于成功了一半,到圖書館、書店、資料室去雖說是比較原始的方式,但也有可取之處的。總之,不管通過哪種方式查的資料都是有利用價(jià)值的,要一一記錄下來以備后用。第三,通過上面的過程,已經(jīng)積累了不少資料,對所選的題目也大概有了一些了解,這一步就是在這樣一個(gè)基礎(chǔ)上,綜合已有的資料來更透徹的分析題目。第四,有了研究方向,就應(yīng)該動手實(shí)現(xiàn)了。其實(shí)以前的三步都是為這一步作的鋪墊。通過這次設(shè)計(jì),我對數(shù)字電路設(shè)計(jì)中的邏輯關(guān)系等有了一定的認(rèn)識,對以前學(xué)的數(shù)字電路又有了一定的新認(rèn)識,溫習(xí)了以前學(xué)的知識,就像人們常說的溫故而知新嘛,但在設(shè)計(jì)的過程中,遇到了很多的問題,有一些知識都已經(jīng)不太清楚了,但是通過一些資料又重新的溫習(xí)了一下數(shù)字電路部分的內(nèi)容。在這次設(shè)計(jì)中也使我們的同學(xué)關(guān)系更進(jìn)一步了,同學(xué)之間互相幫助,有什么不懂的大家在一起商量,聽聽不同的看法我們更好的理解知識,所以在這里非常感謝幫助我的同學(xué)。
在此要感謝我的指導(dǎo)老師,感謝老師給我這樣的機(jī)會鍛煉。在整個(gè)設(shè)計(jì)過程中我懂得了許多東西,也培養(yǎng)了我獨(dú)立工作的能力,樹立了對自己工作能力的信心,相信會對今后的學(xué)習(xí)工作生活有非常重要的影響。而且大大提高了動手的能力,使我充分體會到了在創(chuàng)造過程中的探索的艱難和成功的喜悅。雖然這個(gè)項(xiàng)目還不是很完善,但是在設(shè)計(jì)過程中所學(xué)到的東西是這次設(shè)計(jì)的最大收獲和財(cái)富,使我終身受益。
參考文獻(xiàn)
[1] 張毅剛.單片機(jī)原理及應(yīng)用[M].高等教育出版社 2003.
[2] 王章瑞.單片機(jī)課程實(shí)驗(yàn)及課程設(shè)計(jì)指導(dǎo)書[J]. 西南石油大學(xué) 2013.
[3] 李光飛.單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo)[J].北京航天航空大學(xué)出版社 2004.
[4] 馮育長.單片機(jī)系統(tǒng)設(shè)計(jì)與實(shí)例指導(dǎo)[J].西安電子科技大學(xué)出版社2007.
[5] 王冬梅等.基于單片機(jī)的八路搶答器設(shè)計(jì)與實(shí)現(xiàn)[M].佳木斯大學(xué)學(xué)報(bào) 2009.
[6] 吳亦峰、陳德為.單片機(jī)原理與接口技術(shù)[M]. 北京:電子工業(yè)出版社.2005.
[7] 周潤景、張麗娜.基于PROTEUS的電路及單片機(jī)仿真[M]. 北京: 航空航天大學(xué)出版社,2007.
[8] 胡耀輝、朱朝華等.單片機(jī)系統(tǒng)開發(fā)實(shí)例經(jīng)典[M].北京:冶金工業(yè)出版社.2006.
[9] 張迎新.單片機(jī)初級教程[M]. 北京: 航空航天大學(xué)出版社,2007.
附錄1:電路原理圖
附錄2:實(shí)物圖
附錄3:元器件清單
序號 |
名稱 |
型號規(guī)格 |
數(shù)量 |
1 |
單片機(jī) |
STC89C51 |
1 |
2 |
三極管 |
8050 |
4 |
3 |
電阻 |
10K |
13 |
4 |
電容 |
30PF |
2 |
5 |
晶振 |
12MHz |
1 |
6 |
小型 |
1 |
|
7 |
搶答按鈕 |
小型 |
10 |
8 |
LED |
黃色 |
1 |
附錄4:源程序
#include
#define uint unsigned int
#define uchar unsigned char
sbit key1=P3^0; //定義"啟動"按鈕
sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
sbit k5=P1^4;
sbit k6=P1^5;
sbit k7=P1^6;
sbit k8=P1^7; //選手按鍵
sbit beep=P3^7; //蜂鳴器
uchar temp;
ucharaa,shi,ge,i;
uint n;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77}; //共陰極數(shù)碼管編碼
void display(ucharshi,ucharge); //聲明顯示子函數(shù)
void dis(uchari);
void delay(uint z); //聲明延時(shí)子函數(shù)
void init(); //聲明初始化函數(shù)
void main()
{
init( ); //調(diào)用初始化子程序
while(1)
{
if(key1==0) //檢測"啟動"按鈕是否按下
{
delay(10); //延時(shí)去抖動
if(key1==0) //再次檢測"啟動"按鈕是否按下
{
while(!key1); //松手檢測,若按鍵沒有釋放,key1始終為0,那么!key1始終為1,程序就一直停在此while語句處
TR0=1; //啟動定時(shí)器開始工作
n=1;
}
}
display(shi,ge); //調(diào)用顯示子函數(shù)
dis(i); //顯示選手號數(shù)
if(n==1) {
if(k1==0){ delay(10);if(k1==0){while(!k1) i=1;TR0=0;n=0;beep=1;delay(500);beep=0;}}
if(k2==0){ delay(10);if(k2==0){while(!k2) i=2;TR0=0;n=0;beep=1;delay(500);beep=0;}}
if(k3==0){ delay(10);if(k3==0){while(!k3) i=3;TR0=0;n=0;beep=1;delay(500);beep=0;}}
if(k4==0){ delay(10);if(k4==0){while(!k4) i=4;TR0=0;n=0;beep=1;delay(500);beep=0;}}
if(k5==0){ delay(10);if(k5==0){while(!k5) i=5;TR0=0;n=0;beep=1;delay(500);beep=0;}}
if(k6==0){ delay(10);if(k6==0){while(!k6) i=6;TR0=0;n=0;beep=1;delay(500);beep=0;}}
if(k7==0){ delay(10);if(k7==0){while(!k7) i=7;TR0=0;n=0;beep=1;delay(500);beep=0;}}
if(k8==0){ delay(10);if(k8==0){while(!k8) i=8;TR0=0;n=0;beep=1;delay(500);beep=0;}}
}
}
}
void delay(uint z) //延時(shí)子函數(shù)
{
uintx,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void display(ucharshi,ucharge) //顯示子程序
{
P2=0xbf;
P0=table[shi];
delay(10);
P2=0x7f;
P0=table[ge];
delay(10); //使用動態(tài)掃描的方法實(shí)現(xiàn)數(shù)碼管顯示
}
void dis(uchari)
{ P2=0xfe;
P0=table[i];
delay(10);
}
void init( ) //初始化子程序
{
n=0;
temp=30;
TMOD=0x01; //使用定時(shí)器T0的方式1
TH0=(65536-50000)/256;
TL0=(65536-50000)%256; //定時(shí)50ms中斷一次
EA=1; //中斷總允許
ET0=1; //允許定時(shí)器T0中斷
}
void timer0( ) interrupt 1
{
TH0=(65536-50000)/256;//重新賦初值
TL0=(65536-50000)%256;
aa++; //中斷一次變量aa的值加1
if(aa==20) //中斷20次后,定時(shí)時(shí)間為20*50ms=1000ms=1s,將變量temp的值加1
{
aa=0;
temp--;
if (temp==0)
{ temp=30;
}
shi=temp%100/10;
ge=temp%10; //分離個(gè)位和十位
}
}
審核編輯:湯梓紅
-
搶答器
+關(guān)注
關(guān)注
16文章
243瀏覽量
34949 -
單片機(jī)
+關(guān)注
關(guān)注
6065文章
44940瀏覽量
647972 -
存儲器
+關(guān)注
關(guān)注
38文章
7639瀏覽量
166619
原文標(biāo)題:4
文章出處:【微信號:A1411464185,微信公眾號:multisim】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
八路搶答器設(shè)計(jì)論文
如何去實(shí)現(xiàn)一種基于51單片機(jī)的八路搶答器設(shè)計(jì)
基于單片機(jī)的八路搶答器開題報(bào)告
Protel Schematic八路搶答器原理圖
單片機(jī)如何設(shè)計(jì)八路搶答器
基于51單片機(jī)的八路搶答器設(shè)計(jì)

基于51單片機(jī)的八路搶答器控制設(shè)計(jì)(畢設(shè)課設(shè)資料)

評論