第一篇:基于51單片機(jī)的搶答器設(shè)計(jì)
1.系統(tǒng)設(shè)計(jì)
1.1設(shè)計(jì)要求
1、需要自己設(shè)計(jì)電路并焊接電路板。
2、基本要求:有一個(gè)主持人控制開關(guān)和6路搶答按扭,當(dāng)主持人允許搶答時(shí)才能進(jìn)行搶答操作,并用一個(gè)數(shù)碼管顯示搶答選手的號(hào)碼,同時(shí)其他選手不能再搶答。
3、當(dāng)主持人允許搶答后倒計(jì)時(shí)5秒時(shí)間,在這5秒內(nèi)搶答有效,過后就不能進(jìn)行搶答了。
4、電路上要加個(gè)蜂鳴器的電路,當(dāng)有選手搶答時(shí)蜂鳴器響一下。
5、當(dāng)有選手搶答后,進(jìn)行倒計(jì)時(shí)20秒作為選手回答問題時(shí)間,用兩個(gè)數(shù)碼管顯示,倒計(jì)時(shí)時(shí)間到時(shí)有聲光提示。
6、畫電路板時(shí)要增加下載接口,方便調(diào)試程序。
7、擴(kuò)展功能(選做),8、用按鍵可設(shè)置倒計(jì)時(shí)的時(shí)間,范圍在5秒到30秒之間。
1.2設(shè)計(jì)原理
1.3總體思路
以AT89S52單片機(jī)為核心的單片機(jī),通過相應(yīng)的程序,并且通過按鍵來進(jìn)行電平識(shí)別,再由單片機(jī)輸出相應(yīng)的程序,并將相應(yīng)數(shù)值通過數(shù)碼管來顯示。
1.4設(shè)計(jì)方案 通過平時(shí)所學(xué)知識(shí)、查找資料和老師的答疑。我得到了正確的交通燈原理圖,在正確的電路圖前提下進(jìn)行編程把程序燒到52芯片里,再把芯片連接到電路板上通過52芯片實(shí)現(xiàn)程序功能,實(shí)現(xiàn)步驟如下:通過P1.0到P1.7分別控制按鍵一到八,P0控制位選,P2.3控制段選,這樣就能基本達(dá)到了老師給我們搶答器 的要求了。
2、模塊電路的設(shè)計(jì)
2.1 2.1 數(shù)碼管顯示模塊
由于單片機(jī)的P0口沒有上拉電阻,當(dāng)它做為輸出時(shí),需要對(duì)其接上拉電阻。因?yàn)镻0口做為數(shù)碼管的段選輸出,所以要在P0口接一個(gè)1K的排阻。P2口做為數(shù)碼管的位選,任選其4個(gè)IO口接線,就可以了,然后利用軟件來控制四個(gè)數(shù)碼管的亮滅。
2.2 八個(gè)選手按鍵輸入
當(dāng)按鍵按下時(shí),對(duì)P1口輸入低電平,通過程序讀取低電平的IO口,然后進(jìn)行鎖存,對(duì)數(shù)碼管做相應(yīng)的輸出,提供搶答選手號(hào)數(shù)。
2.3 蜂鳴器輸出
蜂鳴器電路是利用NPN開關(guān)電路,當(dāng)基極為高電平時(shí),三極管導(dǎo)通;當(dāng)為低電平時(shí),三極管截止。利用這一特性,可以畫出蜂鳴器的電路圖
3、程序編寫調(diào)試過程 #include
位定義
sbit s1=P3^0;sbit led=P3^3;sbit fmq=P3^4;段碼表 uchar tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0X07,0x7f,0x6f};
定義字符型變量
uchar flag1,flag2,num,m1,m,m2,t;延時(shí)程序
void ys(uchar z)
{ uchar i,j;for(i=z;i>0;i--)for(j=0;j<150;j++);}
void uinit()//初始化
{ fmq = 0;TMOD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;num=0;m2=0;m1=0;led=0;flag2=1;}
void timer0()interrupt 1 { TH0=(65536-50000)/256;TL0=(65536-50000)%256;t++;if(t==20&&flag2==0){ t=0;
if(m1==0)
{
TR0=0;
flag2=1;
//flag1=0;
led=1;
fmq=1;
}
else m1--;
} if(t==20&&flag1==1&&flag2==1){ t=0;
m1=m%10;
m2=m/10;
if(m==0)
{
m=0;
led=1;
fmq=1;
}
else {m--;led=0;fmq=0;}
} }
void key(){
if(s1==0)
{
ys(10);
if(s1==0)
{
flag1=1;m1=5;flag2=0;num=0;led=0;m2=0;TR0=1;fmq=0;
}
}
if(flag2==0)
{
switch(P1)
{
case 0xfe:{TR0=0;num=1;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;
case 0xfd:{TR0=0;num=2;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;
case 0xfb:{TR0=0;num=3;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;
case 0xf7:{TR0=0;num=4;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;
case 0xef:{TR0=0;num=5;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;
case 0xdf:{TR0=0;num=6;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;
case 0xbf:{TR0=0;num=7;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;
case 0x7f:{TR0=0;num=8;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;
}
} } main(){
uchar k;uinit();while(1){
key();
k=0;
switch(k)
{
case 0:{P2=0XFe;P0=tab[m2];ys(5);}
case 1:{P2=0XFd;P0=tab[m1];ys(5);}
case 2:{P2=0XFb;P0=0x40;ys(5);}
case 3:{P2=0XF7;P0=tab[num];ys(5);}
}
}
}
4、焊接制作與調(diào)試過程
焊接制作過程:這次我們用的是萬用板,直接焊接。先把器件布局,布局好以后,再把各個(gè)幾件焊上去,最后再根據(jù)PCB圖用絕緣線或者焊錫把各個(gè)器件,芯片連接起來。
調(diào)試過程:把程序燒進(jìn)芯片后開始接電源,看看結(jié)果。如果出現(xiàn)亂碼 哪檢查線路沒問題后 就看看程序的接口有沒有錯(cuò),主要問題就是在接口上。
5、心得體會(huì)
通過這次實(shí)訓(xùn),我不僅提高了Keil uVision3 , Protel 99 SE這些應(yīng)用程序的運(yùn)用,還讓我懂得了如何編寫一些簡(jiǎn)單的程序,學(xué)會(huì)了如何制作單片機(jī)應(yīng)用程序,還有焊接和程序固化,這幾天我經(jīng)過老師耐心的講解和指導(dǎo)通過自己認(rèn)真的動(dòng)手操作,終于將一個(gè)完整的裝有程序的單片機(jī)芯片版制作出來了。但在實(shí)訓(xùn)中間暴露出很多問題:對(duì)平時(shí)上課講的理論知識(shí)沒有完全掌握消化,到了實(shí)際操作中還得請(qǐng)教老師和同學(xué),在焊接中焊接的基本工夫掌握不到家,手上工夫還是很欠缺的,使得電路板不是很美觀。這些問題的發(fā)現(xiàn),有助于提高我在以后的工作和學(xué)習(xí)中對(duì)此類問題的認(rèn)識(shí),確保不在同一問題上再次犯錯(cuò)。
給我的一個(gè)最大的感觸就是一個(gè)好的電工不應(yīng)該只會(huì)接線,而是會(huì)發(fā)現(xiàn)錯(cuò)誤,改正錯(cuò)誤。這次實(shí)訓(xùn)不僅加深了我們對(duì)知識(shí)的理解,更重要的是提高了我們的動(dòng)手能力,增強(qiáng)了我對(duì)電工學(xué)習(xí)的熱愛,增加了學(xué)習(xí)的動(dòng)力和興趣。
6、參考文獻(xiàn)
1.《單片機(jī)C語言編程與實(shí)例》趙亮、侯國瑞 人民郵電出版社 2.《例說8051》 張義和編著 人民郵電出版社
7.附錄(程序和原理圖)1PCB圖
2原理圖 源程序
#include
sbit s1=P3^0;sbit led=P3^3;sbit fmq=P3^4;
uchar tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0X07,0x7f,0x6f};uchar flag1,flag2,num,m1,m,m2,t;
void ys(uchar z)
{ uchar i,j;for(i=z;i>0;i--)for(j=0;j<150;j++);}
void uinit()
//初始化
{
fmq = 0;TMOD=0X01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;num=0;m2=0;m1=0;led=0;flag2=1;}
void timer0()interrupt 1 { TH0=(65536-50000)/256;TL0=(65536-50000)%256;t++;if(t==20&&flag2==0){ t=0;
if(m1==0)
{
TR0=0;
flag2=1;
//flag1=0;
led=1;
fmq=1;
}
else m1--;
} if(t==20&&flag1==1&&flag2==1){ t=0;
m1=m%10;
m2=m/10;
if(m==0)
{
m=0;
led=1;
fmq=1;
}
else {m--;led=0;fmq=0;}
} }
void key(){
if(s1==0)
{
ys(10);
if(s1==0)
{
flag1=1;m1=5;flag2=0;num=0;led=0;m2=0;TR0=1;fmq=0;
}
}
if(flag2==0)
{
switch(P1)
{
case 0xfe:{TR0=0;num=1;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;
case 0xfd:{TR0=0;num=2;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;
case 0xfb:{TR0=0;num=3;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;
case 0xf7:{TR0=0;num=4;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;
case 0xef:{TR0=0;num=5;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;
case 0xdf:{TR0=0;num=6;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;
case 0xbf:{TR0=0;num=7;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;
case 0x7f:{TR0=0;num=8;flag2=1;m=20;led=1;fmq=1;TR0=1;};break;
}
} } main(){
uchar k;uinit();while(1){
key();
k=0;
switch(k)
{
case 0:{P2=0XFe;P0=tab[m2];ys(5);}
case 1:{P2=0XFd;P0=tab[m1];ys(5);}
case 2:{P2=0XFb;P0=0x40;ys(5);}
case 3:{P2=0XF7;P0=tab[num];ys(5);}
}
}
}
第二篇:?jiǎn)纹瑱C(jī)課程設(shè)計(jì)8路競(jìng)賽搶答器
課程設(shè)計(jì)任務(wù)書 設(shè)計(jì)內(nèi)容
⒈設(shè)計(jì)一個(gè)智力競(jìng)賽搶答器,可同時(shí)供8名選手或8個(gè)代表隊(duì)參加比賽,他們的編號(hào)分別是1、2、3、4、5、6、7、8,各用一個(gè)搶答按鈕,按鈕的編號(hào)與選手的編號(hào)相對(duì)應(yīng),分別是S0、S1、S2、S3、S4、S5、S6、S7。
⒉給節(jié)目主持人設(shè)置一個(gè)控制開關(guān),用來控制系統(tǒng)的清零(編號(hào)顯示數(shù)碼管滅燈)和搶答的開始。
⒊搶答器具有數(shù)據(jù)鎖存和顯示的功能。搶答開始后,若有選手按動(dòng)搶答按鈕,編號(hào)立即鎖存,并在LED數(shù)碼管上顯示出選手的編號(hào),同時(shí)蜂鳴器給出音響提示。此外,要封鎖輸入電路,禁止其他選手搶答。優(yōu)先搶答選手的編號(hào)一直保持到主持人將系統(tǒng)清零為止。
4.用中小規(guī)模集成電路組成智力競(jìng)賽搶答器電路,畫出各單元電路圖和總體邏輯框圖,正確描述各單元功能,合理選用電路器件,畫出完整的電路設(shè)計(jì)圖以及寫出設(shè)計(jì)總結(jié)報(bào)告 2 設(shè)計(jì)要求
⒈搶答器具有定時(shí)搶答的功能,且一次搶答的時(shí)間可以由主持人設(shè)定(如30s)。當(dāng)節(jié)目主持人啟動(dòng)“開始”鍵后,要求定時(shí)器立即減計(jì)時(shí),并用顯示器顯示,同時(shí)蜂鳴器發(fā)出聲響。
⒉參賽選手在設(shè)定的時(shí)間內(nèi)搶答,搶答有效,定時(shí)器停止工作,顯示器上顯示選手的編號(hào)和搶答時(shí)刻的時(shí)間,并保持到主持人將系統(tǒng)清零為止。
⒊如果定時(shí)搶答的時(shí)間已到,卻沒有選手搶答時(shí),本次搶答無效,系統(tǒng)短暫報(bào)警,并封鎖輸入電路,禁止選手超時(shí)后搶答,時(shí)間顯示器上顯示00。
摘要
搶答器作為一種工具,已廣泛應(yīng)用于各種智力和知識(shí)競(jìng)賽場(chǎng)合。工廠、學(xué)校和電視臺(tái)等單位常舉辦各種智力競(jìng)賽, 搶答記分器是必要設(shè)備。在我校舉行的各種競(jìng)賽中我們經(jīng)常看到有搶答的環(huán)節(jié),舉辦方多數(shù)采用讓選手通過舉答題板的方法判斷選手的答題權(quán),這在某種程度上會(huì)因?yàn)橹鞒秩说闹饔^誤斷造成比賽的不公平性。但搶答器的使用頻率較低,且有的要么制作復(fù)雜,要么可靠性低。作為一個(gè)單位,如果專門購一臺(tái)搶答器雖然在經(jīng)濟(jì)上可以承受,但每年使用的次數(shù)極少,往往因長(zhǎng)期存放使(電子器件的)搶答器損壞,再購置的麻煩和及時(shí)性就會(huì)影響活動(dòng)的開展,為解決這個(gè)問題,我們小組準(zhǔn)備就本次大賽的機(jī)會(huì)制作一個(gè)低成本但又能滿足學(xué)校需要的八路數(shù)顯搶答器。
本設(shè)計(jì)是以八路搶答為基本理念。考慮到依需設(shè)定限時(shí)回答的功能,利用AT89C51單片機(jī)及外圍接口實(shí)現(xiàn)的搶答系統(tǒng),利用單片機(jī)的定時(shí)器/計(jì)數(shù)器定時(shí)和記數(shù)的原理,將軟、硬件有機(jī)地結(jié)合起來,使得系統(tǒng)能夠正確地進(jìn)行計(jì)時(shí),同時(shí)使數(shù)碼管能夠正確地顯示時(shí)間。用開關(guān)做鍵盤輸出,揚(yáng)聲器發(fā)生提示。同時(shí)系統(tǒng)能夠?qū)崿F(xiàn):在搶答中,只有開始后搶答才有效,如果在開始搶答前搶答為無效;搶答限定時(shí)間和回答問題的時(shí)間可在1-99s設(shè)定;可以顯示是哪位選手有效搶答和無效搶答,正確按鍵后有音樂提示;搶答時(shí)間和回答問題時(shí)間倒記時(shí)顯示,滿時(shí)后系統(tǒng)計(jì)時(shí)自動(dòng)復(fù)位及主控強(qiáng)制復(fù)位;按鍵鎖定,在有效狀態(tài)下,按鍵無效非法。
目錄
一.方案設(shè)計(jì)與論證.........................................................................................1 二.實(shí)現(xiàn)的原理和電路......................................................................................2
2.1組成部分............................................................................................2 2.2搶答器................................................................................................2 2.3鎖存器................................................................................................2 三.硬件電路設(shè)計(jì).............................................................................................3
3.1搶答器的電路框圖..............................................................................3 3.2單元電路設(shè)計(jì).....................................................................................4
3.2.1搶答器的設(shè)計(jì)...........................................................................4 3.2.2時(shí)序電路的設(shè)計(jì).......................................................................4 3.2.2復(fù)位電路的設(shè)計(jì).......................................................................5 3.2.4外部振蕩電路...........................................................................5 3.2.5顯示電路的設(shè)計(jì).......................................................................6 3.2.6按鈕輸入電路的設(shè)計(jì)................................................................6 3.2.7報(bào)警電路的設(shè)計(jì).......................................................................6 3.2.8發(fā)聲.........................................................................................7
四.軟件設(shè)計(jì)....................................................................................................7
4.1系統(tǒng)主程序的設(shè)計(jì)..............................................................................8 4.2搶答信號(hào)的處理設(shè)計(jì)..........................................................................9 4.3鍵盤掃描子程序...............................................................................10 4.4顯示子程序......................................................................................12 五.系統(tǒng)的仿真...............................................................................................12 六.調(diào)試功能說明...........................................................................................14
6.1系統(tǒng)的調(diào)試......................................................................................14 6.2 軟件調(diào)試問題及解決.......................................................................14 七.參考文獻(xiàn)..................................................................................................15 八.心得體會(huì)..................................................................................................16
一.方案設(shè)計(jì)與論證
方案一:系統(tǒng)各部分采用中小規(guī)模集成數(shù)字電路,用機(jī)械開關(guān)按鈕作為控制開關(guān),完成搶答輸入信號(hào)的觸發(fā)。該方案的特點(diǎn)是中小規(guī)模集成電路應(yīng)用技術(shù)成熟,性能可靠,能方便地完成選手搶答的基本功能,但是由于系統(tǒng)功能要求較高,所以電路連接集成電路相對(duì)較多,而且過于復(fù)雜,并且制作過程工序比較煩瑣,使用不太方便。
方案二:該系統(tǒng)采用51系列單片機(jī)AT89C51作為控制核心,該系統(tǒng)可以完成運(yùn)算控制、信號(hào)識(shí)別以及顯示功能的實(shí)現(xiàn)。由于用了單片機(jī),使其技術(shù)比較成熟,應(yīng)用起來方便、簡(jiǎn)單并且單片機(jī)周圍的輔助電路也比較少,便于控制和實(shí)現(xiàn)。整個(gè)系統(tǒng)具有極其靈活的可編程性,能方便地對(duì)系統(tǒng)進(jìn)行功能的擴(kuò)張和更改。MCS-51單片機(jī)特點(diǎn)如下:
<1>可靠性好:?jiǎn)纹瑱C(jī)按照工業(yè)控制要求設(shè)計(jì),抵抗工業(yè)噪聲干擾優(yōu)于一般的CPU,程序指令和數(shù)據(jù)都可以寫在ROM里,許多信號(hào)通道都在同一芯片,因此可靠性高,易擴(kuò)充。
<2>單片機(jī)有一般電腦所必須的器件,如三態(tài)雙向總線,串并行的輸入及輸出引腳,可擴(kuò)充為各種規(guī)模的微電腦系統(tǒng)。
<3> 控制功能強(qiáng):?jiǎn)纹瑱C(jī)指令除了輸入輸出指令,邏輯判斷指令外還有更豐富的條件分支跳躍指令。
方案比較及其選用依據(jù),顯然方案二比方案一簡(jiǎn)單的多,不但從性能上優(yōu)于方案一,而且在使用上及其功能的實(shí)現(xiàn)上都較方案一簡(jiǎn)潔,并且由于單片機(jī)具有優(yōu)越的高集成電路性,使其工作速度更快、效率更高。另外80C51單片機(jī)采用12MHz的晶振,提高了信號(hào)的測(cè)量精度,并且使該系統(tǒng)可以通過軟件改進(jìn)來擴(kuò)張功能。而方案一采用了中小規(guī)模集成電路,有其復(fù)雜的電路性能,從而可能會(huì)使信號(hào)的輸入輸出產(chǎn)生延時(shí)及不必要的誤差。依此依據(jù)選擇方案二比較適合。二.實(shí)現(xiàn)的原理和電路
2.1組成部分:
輸入鎖存控制電路——按鍵S1~S8,鎖存器D1及相關(guān)門電路 數(shù)碼顯示電路——譯碼器,全加器,及3個(gè)數(shù)碼管
報(bào)警電路——定時(shí)器(構(gòu)成多諧振蕩器)和三極管,蜂鳴器
2.2搶答器
工作過程:接通電源,主持人將控制開關(guān)置于“清除”位置,搶答器處于禁止工作狀態(tài),編號(hào)顯示器滅燈。當(dāng)主持人宣布搶答題目后,說一聲“開始”同時(shí)將控制開關(guān)撥到“開始”位置,搶答器處于工作狀態(tài)。當(dāng)選手按動(dòng)搶答時(shí),搶答器完成3項(xiàng)工作。
1)優(yōu)先編碼電路立即分辨出搶答者的編號(hào),并由鎖存器進(jìn)行鎖 存,然后由數(shù)碼管顯示電路編號(hào)。
2)揚(yáng)聲器發(fā)出聲響,提醒主持人注意
3)控制電路要對(duì)輸入編碼電路進(jìn)行封鎖,避免其他人再次搶答,并保持到主持人清零。當(dāng)選手將問題回答完畢后,主持人操作控制開關(guān),使系統(tǒng)恢復(fù)到禁止工作狀態(tài),以便下一次搶答。
2.3鎖存器
鎖存器輸入信號(hào)均為同一電平時(shí),鎖存器控制電路的輸出信號(hào)將鎖存器打開,這時(shí)鎖存器輸入端的信號(hào)送往相應(yīng)的輸出端。當(dāng)有一輸入端的電平發(fā)生跳變時(shí),其對(duì)應(yīng)輸出端電平也跟著變化,此變化的輸出電平送入鎖存器控制電路,控制電路立即產(chǎn)生控制信號(hào)封鎖鎖存器,此時(shí)輸入不影響輸出。電路圖如下:
三.硬件電路設(shè)計(jì)
3.1搶答器的電路框圖
如上圖
(一)所示為電路框圖。其工作原理為:接通電源后,主持人將開關(guān)撥到“清除”狀態(tài),搶答器處于禁止?fàn)顟B(tài),編號(hào)顯示器滅燈,定時(shí)器顯示設(shè)定時(shí)間;主持人將開關(guān)置,“開始”狀態(tài),宣布“開始”搶答器工作。定時(shí)器倒計(jì)時(shí),揚(yáng)聲器給出聲響提示。選手在定時(shí)時(shí)間內(nèi)搶答時(shí),搶答器完成:優(yōu)先判斷、編號(hào)鎖存、編號(hào)顯示、揚(yáng)聲器提示。當(dāng)一輪搶答之后,定時(shí)器停止、禁止二次搶答、定時(shí)器顯示剩余時(shí)間。如果再次搶答必須由主持人再次操作“開始,停止”。由電路框圖下面的總體設(shè)計(jì)圖
(二)總設(shè)計(jì)圖的工作原理為:接通電源后,主持人將開關(guān)撥到“清除”狀態(tài),搶答器處于禁止?fàn)顟B(tài),編號(hào)顯示器滅燈,定時(shí)器顯示設(shè)定時(shí)間;主持人將開關(guān)置,“開始”狀態(tài),宣布“開始”搶答器工作。定時(shí)器倒計(jì)時(shí),揚(yáng)聲器給出聲響提示。選手在定時(shí)時(shí)間內(nèi)搶答時(shí),搶答器完成:優(yōu)先判斷、編號(hào)鎖存、編號(hào)顯示、揚(yáng)聲器提示。當(dāng)一輪搶答之后,定時(shí)器停止、禁止二次搶答、定時(shí)器顯示剩余時(shí)間。如果再次搶答必須由主持人再次操作“開始、停止”狀態(tài)開關(guān)。
總體設(shè)計(jì)圖
(二)3.2單元電路設(shè)計(jì)
3.2.1搶答器的設(shè)計(jì)
由總體設(shè)計(jì)圖
(二)可知該電路完成兩個(gè)功能:一是分辨出選手按鍵的先后,并鎖存優(yōu)先搶答者的編號(hào),同時(shí)譯碼顯示電路顯示編號(hào);二是禁止其他選手按鍵操作無效。如有再次搶答需由主持人將S開關(guān)重新置,“清除”然后再進(jìn)行下一次的搶答。
3.2.2時(shí)序電路的設(shè)計(jì)
時(shí)序控制電路是搶答器設(shè)計(jì)的關(guān)鍵,它要完成以下功能:
a.主持人將控制開關(guān)撥到“開始”位置時(shí),揚(yáng)聲器發(fā)聲,搶答電路和定時(shí)電路進(jìn)人正常搶答工作狀態(tài)。
b.當(dāng)參賽選手按動(dòng)搶答鍵時(shí),揚(yáng)聲器發(fā)聲,搶答電路和定時(shí)電路停止工作。3.2.2復(fù)位電路的設(shè)計(jì)
外部中斷和內(nèi)部中斷并存,單片機(jī)硬件復(fù)位端,只要持續(xù)4個(gè)機(jī)器周期的高電平即可實(shí)現(xiàn)復(fù)位,硬件復(fù)位后的各狀態(tài)可知寄存器以及存儲(chǔ)器的值都恢復(fù)到了初始值,因?yàn)楸驹O(shè)計(jì)中功能中有倒計(jì)時(shí)時(shí)間的記憶功能,所以不能對(duì)單片機(jī)進(jìn)行硬件復(fù)位,只能用軟件復(fù)位,軟件復(fù)位實(shí)際上就是當(dāng)程序執(zhí)行完之后,將程序通過一條跳轉(zhuǎn)指令讓它完成復(fù)位。復(fù)位電路如下圖示:
3.2.4外部振蕩電路
外部震蕩電路單片機(jī)必須在AT89C51的驅(qū)動(dòng)下才能工作,在單片機(jī)內(nèi)部有一個(gè)時(shí)鐘震蕩電路,只需要外接一個(gè)振蕩器就能產(chǎn)生一定的時(shí)鐘信號(hào)送到單片機(jī)內(nèi)部的各個(gè)單元,外部震蕩電路如下圖。3.2.5顯示電路的設(shè)計(jì)
顯示電路使用了七段數(shù)碼管7SEG-MPX4-CC,它是共陰極的,由高電平點(diǎn)亮。
3.2.6按鈕輸入電路的設(shè)計(jì)
搶答器的輸入按鈕使用常開開關(guān),這些常開開關(guān)組成了搶答按鍵,硬件電路簡(jiǎn)單,在程序設(shè)計(jì)上也不復(fù)雜,只要在程序中消除在按鍵過程中產(chǎn)生的“毛刺”現(xiàn)象就可以了。這里采用最常用的方法即延時(shí)法,其的原理為:因?yàn)椤懊獭泵}沖一般持續(xù)時(shí)間短,約為幾ms,而按鍵的時(shí)間一般遠(yuǎn)遠(yuǎn)大于這個(gè)時(shí)間,所以當(dāng)單片機(jī)檢測(cè)到有按鍵動(dòng)靜后再延時(shí)一段時(shí)間(這里取10ms)后再判斷此電平是否保持原狀態(tài),如果是則為有效按鍵,否則無效。
3.2.7報(bào)警電路的設(shè)計(jì)
報(bào)警電路用于報(bào)警,當(dāng)遇到報(bào)警信號(hào)時(shí),發(fā)出警報(bào)。一般喇叭是一種電感性,8951驅(qū)動(dòng)喇叭的信號(hào)為各種頻率的脈沖。因此,最簡(jiǎn)單的喇叭驅(qū)動(dòng)方式就是利用達(dá)林頓晶體管,或者以兩個(gè)常用的小晶體管連接成達(dá)林頓架勢(shì)。利用晶體管的高電流增益,以達(dá)到電路快速飽和的目的。不過,如果要由P0輸出到此電路,還需要連接一個(gè)10K的上拉電阻。選手在設(shè)定的時(shí)間內(nèi)搶答時(shí),實(shí)現(xiàn):優(yōu)先判斷、編號(hào)鎖存、編號(hào)顯示、揚(yáng)聲器提示。當(dāng)一輪搶答之后,定時(shí)器停止、禁止二次搶答、定時(shí)器顯示剩余時(shí)間。如果再次搶答必須由主持人再次*作“清除”和“開始”狀態(tài)開關(guān)。圖面是數(shù)字搶答器的報(bào)警電路圖。其中555構(gòu)成多諧振蕩器,振蕩頻率fo=1.43/[(RI+2R2)C],其輸出信號(hào)經(jīng)三極管推動(dòng)揚(yáng)聲器。PR為控制信號(hào),當(dāng)PR為高電平時(shí),多諧振蕩器工作,反之,電路停振。
3.2.8發(fā)聲
這里能利用程序來控制單片機(jī)P3.6口線反復(fù)輸出高電平或低電平,即在該口線上產(chǎn)生一定頻率的矩形波,接上揚(yáng)聲器就能發(fā)出一定頻率的聲音,再利用延時(shí)程序控制“高”“低”電平的持續(xù)時(shí)間,就能改變輸出頻率,從而改變音調(diào),使揚(yáng)聲器發(fā)出不同的聲音。
四.軟件設(shè)計(jì)
整個(gè)程序的設(shè)計(jì)思路如下:首先用進(jìn)位標(biāo)志C作為主持人按鍵的狀態(tài)標(biāo)志,C=0為可以開始搶答(如果需要也可用一個(gè)發(fā)光二極管將C的狀態(tài)顯示出來,只需將程序做小小的修改即可);接下來開外部中斷0;然后是讀取按鍵狀態(tài),只要有一個(gè)按鍵按下(引腳為高電平)并且為C=0,則開始進(jìn)入分析按鍵狀態(tài)程序,用循環(huán)移位指令分析出事第幾個(gè)按鍵按下,并將其放入P1口進(jìn)行顯示輸出。上述程序相對(duì)來說很簡(jiǎn)單,首先它從硬件的微妙數(shù)量級(jí)處理速度上確保了不會(huì)同時(shí)按下2個(gè)按鍵,因此程序沒有區(qū)分重復(fù)按鍵的部分,另外程序使用了外部中斷,從而保證了主持人按鍵的權(quán)限是所有按鍵中權(quán)限最高的。
主程序流程圖如下:
4.1系統(tǒng)主程序的設(shè)計(jì)
主程序的功能主要是完成內(nèi)部各寄存單元的初始化,對(duì)接口電路的初始化,內(nèi)部定時(shí)器的初始化,中斷的初始化及調(diào)節(jié)顯示程序?qū)Τ跏紶顟B(tài)的顯示以及對(duì)外部信號(hào)的等待處理,也就是說完成前期的準(zhǔn)備工作等待隨時(shí)對(duì)外部信號(hào)進(jìn)行響應(yīng)。程序清單如下:
OK EQU 20H
;搶答開始標(biāo)志位 RING EQU 22H ;響鈴標(biāo)志位 ORG 0000H AJMP MAIN ORG 0003H
AJMP INTOSUB
ORG 00BH
AIMP T01NT
ORG 0013H
AJMP INT1SUB
ORG 001BH
AJMP T1INT
ORG 0040H
MAIN:MOV R1,#30
;初設(shè)搶答時(shí)間為30S
MOV R2,#60
;初設(shè)答題時(shí)間為60S
MOV TMOD,#11H
;設(shè)置未定時(shí)器、模式1
MOV TH0,#0F0H
MOV TLO,#0FFH
;越高發(fā)聲頻率越高,越尖
MOV TH1,#3CH
MOV TL1,#0B0H
;50MS為一次溢出中斷
SETB EA
SETB ETO
SETB T1
SETB EX0
SETB EX1
;允許四個(gè)中斷,T0,T1,INTO,INT1
CLR OK
CLR RING
SETB TR1
SETB TRO 一開始就運(yùn)行定時(shí)器,顯示FFF,如果想重新計(jì)數(shù),重置TH1,TL1就可以了。
4.2搶答信號(hào)的處理設(shè)計(jì)
當(dāng)主持人按下開始搶答鍵后開始搶答,程序部分采用中斷方式處理。在中斷處理程序中完成相應(yīng)操作,修改計(jì)時(shí)單元的數(shù)據(jù)并使紅色指示燈亮。程序清單如下:
START:MOV R5,#0BH
MOV R4,#0BH
MOV R3,#0BH
ACALL DISPLAY
;未開時(shí)搶答的時(shí)候顯示FFF
JB P3.0,NEXT
;DDDDDDD
ACALL DELAY
JB P3.0,NEXT
;去抖動(dòng)如果“開始鍵”按下就向下執(zhí)行,否則跳到非法搶答查詢
ACALL BARK
;按鍵發(fā)聲
MOV A,R1
MOV R6,A
;送R1->R6因?yàn)镽1中保存了搶答時(shí)間
SETB OK ;搶答標(biāo)志位,用于COUNT只程序中判斷是否查詢搶答
MOV R7,#01H ;讀搶答鍵數(shù)據(jù)信號(hào)標(biāo)志,這里表示只讀一次有用信號(hào)
MOV R3,#0AH ;搶答只顯示計(jì)時(shí),滅號(hào)數(shù)
AJMP COUNT
;進(jìn)入倒計(jì)時(shí)程序,“查詢有效搶答的程序”在COUNT里
NEXT:JNB P1.0,F(xiàn)ALSE1
JNB P1.1,F(xiàn)ALSE2
JNB P1.2,F(xiàn)ALSE3
JNB P1.3,F(xiàn)ALSE4
JNB P1.4,F(xiàn)ALSE5
JNB P1.5,F(xiàn)ALSE6
JNB P1.6,F(xiàn)ALSE7
JNB P1.7,F(xiàn)ALSE8
AJMP START 4.3鍵盤掃描子程序
對(duì)行列式鍵盤的掃描方法有兩種。一為掃描法,對(duì)鍵盤按行逐行掃描查詢,其結(jié)構(gòu)清晰但對(duì)于最后行列的按鍵需經(jīng)多次掃描;一為反轉(zhuǎn)法,它先使行全為零,讀人列的狀態(tài)暫存,然后使列全為零,讀人行的狀態(tài)保存,對(duì)兩次保存數(shù)據(jù)進(jìn)行查詢即可得知按下鍵的行列數(shù)從而確定鍵值。在程序中采用反轉(zhuǎn)法對(duì)鍵盤進(jìn)行掃描。鍵盤掃描程序在確定鍵值后保存等待后續(xù)處理。程序清單如下:
AAAA1:MOV A,P1
CJNE A,#0FFH,AA1 ;當(dāng)不全為0時(shí)的數(shù)據(jù)為有效數(shù)據(jù)
AA0:MOV 36H,A
;將有效數(shù)據(jù)送到36H暫存
AJMP LOOP2
AA1:DEC R7
AJMP AA0(1)鍵值處理子程序
此子程序根據(jù)鍵盤掃描所取得的鍵值作出相應(yīng)的處理。在搶答時(shí),只對(duì)數(shù)字(代表相應(yīng)搶答分組)1^8按下有效,其他鍵按下無效。搶答成功,開始答題鍵按下給出相應(yīng)信號(hào)指示。程序清單如下:
TRUE1:ACALL BARK
MOV A,R2
MOV R6,A
;搶答時(shí)間R2送R6
MOV R3,#01H
CLR OK ;因?yàn)榇痤}的計(jì)時(shí)不在查詢搶答,所以就鎖了搶答
AJMP COUNT TRUE2:ACALL BARK
MOV A,R2
MOV R6,A
MOV R3,#02H
CLR OK
AJMP COUNT TRUE3:ACALL BARK
MOV A,R2
MOV R6,A
MOV R3,#03H
CLR OK
AJMP COUNT TRUE4:ACALL BARK
MOV A,R2
MOV R6,A
MOV R3,#04H
CLR OK
AJMP COUNT
TRUE5:ACALL BARK
MOV A,R2
MOV R6,A
MOV R3,#05H
CLR OK
AJMP COUNT TRUE6:ACALL BARK
MOV A ,R2
MOV R6,A
MOV R3,#06H
CLR OK
AJMP COUNT TRUE7:ACALL BARK
MOV A,R2
MOV R6,A
MOV R3,#07H
CLR OK
AJMP COUNT TRUE8:ACALL BARK
MOV A,R2
MOV R6,A
MOV R3,#08H
CLR OK
AJMP COUNT
4.4顯示子程序
此程序僅完成6位數(shù)據(jù)的動(dòng)態(tài)顯示,可顯示數(shù)據(jù)和代碼。初始狀態(tài)顯示8位全熄滅。程序清單如下:
DISPLAY:MOV DPTR,#DAT1 ;查表顯示程序,利用P0口做段選碼口輸出,P2低三位做選碼輸出
MOV A,R3
MOVC A,@A+DPTR
MOV P2,#0FEH
MOV P0,A
ACALL DELAY2
MOV DPTR,#DAT2
MOV A,R5
MOVC A,@A+DPTR
MOV P2,#0FDH
MOV P0,A
ACALL DELAY2
MOV A,R4
MOVC A,@A+DPTR
MOV P2,#0FBH
MOV P0,A
ACALL DELAY2
RET
DAT1:DB 00H,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,71H;“滅”,“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“滅”,“F”
DAT2:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,00H,71H ; 第一個(gè)為零,其他與上同,因?yàn)槭蝗绻麨榱泔@示熄滅
五.系統(tǒng)的仿真
1.搶答器protenus軟件的仿真
繪制搶答器的軟件仿真圖步驟分一下四步:(1)、查找所需要的元器件;(2)、根據(jù)電路圖進(jìn)行連線;(3)、是用來寫線所對(duì)應(yīng)的坐標(biāo),即下圖所示的P1.1等坐標(biāo);
(4)、下載所寫完的C程序即可以仿真。通過以上步驟,來實(shí)現(xiàn)搶答器設(shè)計(jì)的仿真實(shí)現(xiàn),仿真如上圖所示:
六.調(diào)試功能說明
6.1系統(tǒng)的調(diào)試
系統(tǒng)調(diào)試包括硬件調(diào)試和軟件調(diào)試,‘
硬件調(diào)試分單元電路調(diào)試和聯(lián)機(jī)調(diào)試,單元電路試驗(yàn)在硬件電路設(shè)計(jì)時(shí)已經(jīng)進(jìn)行,主要用數(shù)字萬用表測(cè)量電路。
軟件調(diào)試一般包括分塊調(diào)試和聯(lián)機(jī)調(diào)試兩個(gè)階段。程序的分塊調(diào)試一般在單片機(jī)開發(fā)裝置上進(jìn)行,可根據(jù)所調(diào)程序功能塊的入口參量初值編制一個(gè)特殊的程序段,并連同被調(diào)程序功能塊一起在開發(fā)裝置上運(yùn)行;也可配合對(duì)應(yīng)硬件電路單獨(dú)運(yùn)行某程序功能塊,然后檢查是否正確,如果執(zhí)行結(jié)果與預(yù)想的不一致,可以通過單步運(yùn)行或設(shè)置斷點(diǎn)的方法,查出原因并加以改正,直到運(yùn)行結(jié)果正確為止。這時(shí)該 程序功能塊已調(diào)試完畢,可去掉附加程序段。其它程序功能塊可按此法進(jìn)行調(diào)試。程序聯(lián)機(jī)調(diào)試就是將已調(diào)試好的各程序功能塊按總體結(jié)構(gòu)聯(lián)成一個(gè)完整程序,在所研制的硬件電路上運(yùn)行。從而試驗(yàn)程序整體運(yùn)行的完整性、正確性和與硬件電路的配合情況。在聯(lián)調(diào)中可能會(huì)有某些支路上的程序、功能塊因受條件制約而得不到相應(yīng)的輸入?yún)?shù),這時(shí),調(diào)試人員應(yīng)創(chuàng)造條件進(jìn)行模擬調(diào)試。
6.2 軟件調(diào)試問題及解決
下面說一下如何在keil中調(diào)用proteus進(jìn)行MCU外圍器件的仿真。(1)、安裝keil 與 proteus。
(2)、把安裝proteus MODELS目錄下 VDM51.dll文件復(fù)制到Keil安裝目錄的 C51BIN目錄中。
(3)、修改keil安裝目錄下 Tools.ini文件,在C51字段加入 TDRV5=BINVDM51.DLL(“Proteus VSM Monitor-51 Driver”),保存。(注意:不一定要用TDRV5,根據(jù)原來字段選用一個(gè)不重復(fù)的數(shù)值就可以了。引號(hào)內(nèi)的名字隨意)
3、打開proteus,畫出相應(yīng)電路,在proteus的debug菜單中選中use remote debug monitor
4、在keil中編寫C語言程序
5、進(jìn)入KEIL的project菜單option for target '工程名'。在DEBUG選項(xiàng)中右欄上部的下拉菜單選中 Proteus VSM Monitor-51 Driver。
6、在keil中進(jìn)行debug吧,同時(shí)在proteus中查看直觀的結(jié)果(如LCD顯示?)這樣就可以像使用仿真器一樣調(diào)。
問題:有時(shí)候在自己創(chuàng)建的元器件的管腳上無法實(shí)現(xiàn)連線。
回答:應(yīng)該是管腳的間距太小了。因?yàn)樵贗SIS中,每個(gè)元器件的管腳都要占據(jù)一塊區(qū)域(就像自己的保護(hù)區(qū)一樣,不容別人隨意侵犯),該區(qū)域會(huì)排斥外部的走線。解決問題的方法是在走線的同時(shí)按住 “CTRL”鍵,直到走線繞過狹窄的保護(hù)區(qū)。當(dāng)然最根本的辦法是重新編輯元器件,把其管腳間距調(diào)大一些。
七.參考文獻(xiàn)
[1]51單片機(jī)原理與實(shí)踐/高衛(wèi)東,辛友順,韓彥征編著.北京航空航天大學(xué)出版社,2008.1 [2]劉紅玲、邵曉根,《微機(jī)原理與接口技術(shù)》,中國電力出版社,2006年第一版
[3]馮博琴,《微型計(jì)算機(jī)原理及接口技術(shù)》,清華大學(xué)出版社 [4]艾德才,《微型計(jì)算機(jī)原理與接口技術(shù)》,高等教育出版社 [5]沈美明,《IBM-PC匯編語言程序設(shè)計(jì)》,清華大學(xué)出版社 [6] 任致程,《經(jīng)典集成電路400例》機(jī)械工業(yè)出版社,2002 [7] 胡 錦.《數(shù)字電路與邏輯設(shè)計(jì)》 高等教育出版社
八.心得體會(huì)
通過二周的課程設(shè)計(jì),使我對(duì)數(shù)字電路有了進(jìn)一步的了解,在設(shè)計(jì)搶答器、報(bào)警器、定時(shí)器的過程中,通過翻閱資料,上網(wǎng)搜索等,我對(duì)各電路器件(如:與非門和LED顯像管等)及原理有了更深一層次的認(rèn)識(shí),既增強(qiáng)了我的理解能力,也使我能更好的運(yùn)用所學(xué)的知識(shí)。開始時(shí)我還不太明白電路是如何連接的,并且對(duì)其原理也不甚了解,但通過對(duì)所學(xué)知識(shí)更深入的了解和同學(xué)的講解和幫助,最終使我克服了難關(guān),并成功地作出了設(shè)計(jì)。四周的鍛煉,28天的不同感受,我有過對(duì)知識(shí)掌握不足時(shí)的迷茫,也有過思路不清時(shí)的懊惱,但一路走來,我卻收獲了知識(shí),收獲了希望和努力后的成果。
在此我要感謝老師的諄諄教導(dǎo)和同學(xué)們的幫助,我相信這十幾天的不懈努力會(huì)給我未來的學(xué)習(xí)帶來很多的啟發(fā),我會(huì)在以后的工作生活中更好的理論聯(lián)系實(shí)際,證明自己的能力。
第三篇:基于單片機(jī)的數(shù)字搶答器的設(shè)計(jì)及仿真
基于單片機(jī)的數(shù)字搶答器的設(shè)計(jì)及仿真
一、摘 要:數(shù)字搶答器由主體電路與擴(kuò)展電路組成。優(yōu)先編碼電路、鎖存器、譯碼電路將參賽隊(duì)的輸入信號(hào)在顯示器上輸出;用控制電路和主持人開關(guān)啟動(dòng)報(bào)警電路,以上兩部分組成主體電路。通過定時(shí)電路和譯碼電路將秒脈沖產(chǎn)生的信號(hào)在顯示器上輸出實(shí)現(xiàn)計(jì)時(shí)功能,構(gòu)成擴(kuò)展電路。經(jīng)過布線、焊接、調(diào)試等工作后數(shù)字搶答器成形。
關(guān)鍵字: 搶答電路 定時(shí)電路 報(bào)警電路 時(shí)序控制
Summary The figure vies for the answering device by the subject circuit and expands the circuit to make up.Have priority in code circuit , latch , decipher circuit and export the input signal of the entrant team on the display;Starting the warning circuit with the control circuit and host's switch, two the above-mentioned parts make up the subject circuit.Through timing circuit and decipher second signal function while outputs and realizes counting on the displaying that pulse produce circuit, form and expand the circuit.Through connect up , weld , debug figure vie for answering device take shape after the work.Key word: Vie for answering the circuit Timing circuit Warning circuit Time sequence controlling
三、實(shí)驗(yàn)部分 1)、設(shè)計(jì)任務(wù)與要求
1.搶答器同時(shí)供8名選手或8個(gè)代表隊(duì)比賽,分別用8個(gè)按鈕S0 ~ S7表示。2.設(shè)置一個(gè)系統(tǒng)清除和搶答控制開關(guān)S,該開關(guān)由主持人控制。
3.搶答器具有鎖存與顯示功能。即選手按動(dòng)按鈕,鎖存相應(yīng)的編號(hào),并在LED數(shù)碼管上顯示,同時(shí)揚(yáng)聲器發(fā)出報(bào)警聲響提示。選手搶答實(shí)行優(yōu)先鎖存,優(yōu)先搶答選手的編號(hào)一直保持到主持人將系統(tǒng)清除為止。4.搶答器具有定時(shí)搶答功能,且一次搶答的時(shí)間由主持人設(shè)定(如30秒)。當(dāng)主持人啟動(dòng)“開始”鍵后,定時(shí)器進(jìn)行減計(jì)時(shí),同時(shí)揚(yáng)聲器發(fā)出短暫的聲響,聲響持續(xù)的時(shí)間0.5秒左右。
5.參賽選手在設(shè)定的時(shí)間內(nèi)進(jìn)行搶答,搶答有效,定時(shí)器停止工作,顯示器上顯示選手的編號(hào)和搶答的時(shí)間,并保持到主持人將系統(tǒng)清除為止。
6.如果定時(shí)時(shí)間已到,無人搶答,本次搶答無效,系統(tǒng)報(bào)警并禁止搶答,定時(shí)顯示器上顯示00。2)、實(shí)驗(yàn)儀器設(shè)備: 1.數(shù)字實(shí)驗(yàn)箱。
2.集成電路74LS148 1片,74LS279 1片,74LS48 3片,74LS192 2片,NE555 2片,74LS00 1片,74LS121 1片。
3.電阻 510Ω 2只,1KΩ 9只,4.7kΩ l只,5.1kΩ l只,100kΩ l只,10kΩ 1只,15kΩ 1只,68kΩ l只。
4.電容 0.1uF 1只,10uf 2只,100uf 1只。
5.三極管 3DG12 1只。
6.其它:發(fā)光二極管2只,共陰極顯示器3只
三、方案論證與比較:與普通搶答器相比,本作品有以下幾方面優(yōu)勢(shì):
1、具有清零裝置和搶答控制,可由主持人操縱避免有人在主持人說“開始”前提前搶答違反規(guī)則。
2、具有定時(shí)功能,在30秒內(nèi)無人搶答表示所有參賽選手獲參賽隊(duì)對(duì)本題棄權(quán)。3、30秒時(shí)仍無人搶答其報(bào)警電路工作表示搶答時(shí)間耗盡并禁止搶答。
四、總體設(shè)計(jì)思路:
(一)設(shè)計(jì)任務(wù)與要求:
1.搶答器同時(shí)供8名選手或8個(gè)代表隊(duì)比賽,分別用8個(gè)按鈕S0 ~ S7表示。2.設(shè)置一個(gè)系統(tǒng)清除和搶答控制開關(guān)S,該開關(guān)由主持人控制。
3.搶答器具有鎖存與顯示功能。即選手按動(dòng)按鈕,鎖存相應(yīng)的編號(hào),并在LED數(shù)碼管上顯示,同時(shí)揚(yáng)聲器發(fā)出報(bào)警聲響提示。選手搶答實(shí)行優(yōu)先鎖存,優(yōu)先搶答選手的編號(hào)一直保持到主持人將系統(tǒng)清除為止。
4.搶答器具有定時(shí)搶答功能,且一次搶答的時(shí)間由主持人設(shè)定(如30秒)。當(dāng)主持人啟動(dòng)“開始”鍵后,定時(shí)器進(jìn)行減計(jì)時(shí),同時(shí)揚(yáng)聲器發(fā)出短暫的聲響,聲響持續(xù)的時(shí)間0.5秒左右。
5.參賽選手在設(shè)定的時(shí)間內(nèi)進(jìn)行搶答,搶答有效,定時(shí)器停止工作,顯示器上顯示選手的編號(hào)和搶答的時(shí)間,并保持到主持人將系統(tǒng)清除為止。
6.如果定時(shí)時(shí)間已到,無人搶答,本次搶答無效,系統(tǒng)報(bào)警并禁止搶答,定時(shí)顯示器上顯示00。
(二)設(shè)計(jì)原理與參考電路 1.?dāng)?shù)字搶答器總體方框圖
如圖11、1所示為總體方框圖。其工作原理為:接通電源后,主持人將開關(guān)撥到“清除”狀態(tài),搶答器處于禁止?fàn)顟B(tài),編號(hào)顯示器滅燈,定時(shí)器顯示設(shè)定時(shí)間;主持人將開關(guān)置“開始”狀態(tài),宣布“開始”搶答器工作。定時(shí)器倒計(jì)時(shí),揚(yáng)聲器給出聲響提示。選手在定時(shí)時(shí)間內(nèi)搶答時(shí),搶答器完成:優(yōu)先判斷、編號(hào)鎖存、編號(hào)顯示、揚(yáng)聲器提示。當(dāng)一輪搶答之后,定時(shí)器停止、禁止二次搶答、定時(shí)器顯示剩余時(shí)間。如果再次搶答必須由主持人再次操作“清除”和“開始”狀態(tài)開關(guān)。
五、多功能硬件與軟件設(shè)計(jì)及其理論分析與計(jì)算: 各單元部分電路設(shè)計(jì)如下:
(1)搶答器電路
參考電路如圖2所示。該電路完成兩個(gè)功能:一是分辨出選手按鍵的先后,并鎖存優(yōu)先搶答者的編號(hào),同時(shí)譯碼顯示電路顯示編號(hào);二是禁止其他選手按鍵操作無效。工作過程:開關(guān)S置于“清除”端時(shí),RS觸發(fā)器的 端均為0,4個(gè)觸發(fā)器輸出置0,使74LS148的 =0,使之處于工作狀態(tài)。當(dāng)開關(guān)S置于“開始”時(shí),搶答器處于等待工作狀態(tài),當(dāng)有選手將鍵按下時(shí)(如按下S5),74LS148的輸出 經(jīng)RS鎖存后,1Q=1, =1,74LS48處于工作狀態(tài),4Q3Q2Q=101,經(jīng)譯碼顯示為“5”。此外,1Q=1,使74LS148 =1,處于禁止?fàn)顟B(tài),封鎖其他按鍵的輸入。當(dāng)按鍵松開即按下時(shí),74LS148的 此時(shí)由于仍為1Q=1,使 =1,所以74LS148仍處于禁止?fàn)顟B(tài),確保不會(huì)出二次按鍵時(shí)輸入信號(hào),保證了搶答者的優(yōu)先性。如有再次搶答需由主持人將S開關(guān)重新置“清除”然后再進(jìn)行下一輪搶答。74LS148為8線-3線優(yōu)先編碼器,表1為其功能表。
表1 74LS148的功能真值表
由節(jié)目主持人根據(jù)搶答題的難易程度,設(shè)定一次搶答的時(shí)間,通過預(yù)置時(shí)間電路對(duì)計(jì)數(shù)器進(jìn)行預(yù)置,計(jì)數(shù)器的時(shí)鐘脈沖由秒脈沖電路提供??深A(yù)置時(shí)間的電路選用十進(jìn)制同步加減計(jì)數(shù)器74LS192進(jìn)行設(shè)計(jì),具體電路如圖3所示。表2為74192的真值表。
(3)報(bào)警電路
由555定時(shí)器和三極管構(gòu)成的報(bào)警電路如圖4所示。其中555構(gòu)成多諧振蕩器,振蕩頻率fo=1.43/[(RI+2R2)C],其輸出信號(hào)經(jīng)三極管推動(dòng)揚(yáng)聲器。PR為控制信號(hào),當(dāng)PR為高電平時(shí),多諧振蕩器工作,反之,電路停振。
4)時(shí)序控制電路
時(shí)序控制電路是搶答器設(shè)計(jì)的關(guān)鍵,它要完成以下三項(xiàng)功能:
①主持人將控制開關(guān)撥到“開始”位置時(shí),揚(yáng)聲器發(fā)聲,搶答電路和定時(shí)電路進(jìn)入正常搶答工作狀態(tài)。②當(dāng)參賽選手按動(dòng)搶答鍵時(shí),揚(yáng)聲器發(fā)聲,搶答電路和定時(shí)電路停止工作。
③當(dāng)設(shè)定的搶答時(shí)間到,無人搶答時(shí),揚(yáng)聲器發(fā)聲,同時(shí)搶答電路和定時(shí)電路停止工作。
根據(jù)上面的功能要求以及圖 2,設(shè)計(jì)的時(shí)序控制電路如圖 5所示。圖中,門G1 的作用是控制時(shí)鐘信號(hào)CP的放行與禁止,門G2的作用是控制74LS148的輸人使能端。圖11、4的工作原理是:主持人控制開關(guān)從“清除”位置撥到“開始”位置時(shí),來自于圖11、2中的74LS279的輸出 1Q=0,經(jīng)G3反相,A=1,則時(shí)鐘信號(hào)CP能夠加到74LS192的CPD時(shí)鐘輸入端,定時(shí)電路進(jìn)行遞減計(jì)時(shí)。同時(shí),在定時(shí)時(shí)間未到時(shí),則“定時(shí)到信號(hào)”為 1,門G2的輸出 =0,使 74LS148處于正常工作狀態(tài),從而實(shí)現(xiàn)功能①的要求。當(dāng)選手在定時(shí)時(shí)間內(nèi)按動(dòng)搶答鍵時(shí),1Q=1,經(jīng) G3反相,A=0,封鎖 CP信號(hào),定時(shí)器處于保持工作狀態(tài);同時(shí),門G2的輸出 =1,74LS148處于禁止工作狀態(tài),從而實(shí)現(xiàn)功能②的要求。當(dāng)定時(shí)時(shí)間到時(shí),則“定時(shí)到信號(hào)”為0,=1,74LS148處于禁止工作狀態(tài),禁止選手進(jìn)行搶答。同時(shí),門G1處于關(guān)門狀態(tài),封鎖 CP信號(hào),使定時(shí)電路保持00狀態(tài)不變,從而實(shí)現(xiàn)功能③的要求。集成單穩(wěn)觸發(fā)器74LS121用于控制報(bào)警電路及發(fā)聲的時(shí)間。
六、系統(tǒng)的組裝與調(diào)試及測(cè)試方法:
3塊實(shí)驗(yàn)電路板分別做成數(shù)字搶答器電路、可預(yù)置時(shí)間的定時(shí)電路、報(bào)警電路及時(shí)序控制電路,根據(jù)EWB仿真電路及工程上的可操作性布置芯片、元件、導(dǎo)線等。
在焊接過程中,由于經(jīng)驗(yàn)不足多次發(fā)生虛焊或者相鄰焊點(diǎn)接觸導(dǎo)致短路等事故,心急時(shí)也有小組成員被電烙鐵燙傷的事發(fā)生。
制作的第一塊板即數(shù)字搶答電路板一開始測(cè)試時(shí)不能工作,又由于沒有穩(wěn)壓電源而不能檢驗(yàn)。情急之下,靈機(jī)一動(dòng),把3節(jié)干電池制成4.5伏電壓源,又用萬用表逐點(diǎn)排查,原來有虛焊的點(diǎn)。找出原因后并排斥故障后,電路板正常工作。深感欣慰!
制作第2塊板即可預(yù)置時(shí)間的定時(shí)電路時(shí),3位成員都已有了自我感覺十分嫻熟的焊接技術(shù),不料忙中出錯(cuò),重蹈覆轍,又有虛焊點(diǎn)。遂相互提醒,前事不忘,后事之師。
七、EWB仿真圖:
由于EWB中沒有74LS121,并且沒有可以代替的74LS221,故時(shí)序控制電路的仿真無法完成。
八、儀器: 1.數(shù)字實(shí)驗(yàn)箱。
2.集成電路74LS148 1片,74LS279 1片,74LS48 3片,74LS192 2片,NE555 2片,74LS00 1片,74LS121 1片。
3.電阻 510Ω 2只,1KΩ 9只,4.7kΩ l只,5.1kΩ l只,100kΩ l只,10kΩ 1只,15kΩ 1只,68kΩ l只。
4.電容 0.1uF 1只,10uf 2只,100uf 1只。5.三極管 3DG12 1只。
6.其它:發(fā)光二極管2只,共陰極顯示器3只。
九、擴(kuò)展功能:
1、可以設(shè)計(jì)聲控裝置,在主持人說開始時(shí),系統(tǒng)自動(dòng)完成清零并開始計(jì)時(shí)的功能。
2、在主持人讀題的過程中,禁止搶答,可以在主持人控制的開關(guān)上另接一個(gè)與圖2一樣的電路,即可實(shí)現(xiàn)“違規(guī)者可見”的功能,即在主持人讀題時(shí)如果有人違反比賽規(guī)定搶先按動(dòng)按鈕,顯示器可以顯示是哪個(gè)參賽隊(duì)搶先,便于作出相應(yīng)的處理。
如果提供相應(yīng)的器材及時(shí)間上的寬限,我想我們已定可以完成上述擴(kuò)展功能,進(jìn)一步完善我們的作品。
十、心得體會(huì):
經(jīng)歷數(shù)星期的電子競(jìng)賽眼看塵埃落定,感覺忍不住要長(zhǎng)出一口氣。我們組的3位成員除學(xué)習(xí)外均有一定的日常工作,數(shù)日來,為了這個(gè)競(jìng)賽可謂廢寢忘食,在實(shí)驗(yàn)室里日出而作,日落不息。將所有的課余時(shí)間均奉獻(xiàn)給了這個(gè)比賽。
結(jié)果怎樣已然不再重要,在這幾日里,我們經(jīng)歷了階段性成功的狂喜、測(cè)試失敗后的絕望、陷入困境時(shí)的不知所措,重新投入的振作。這樣的比賽是無法孤軍作戰(zhàn)的,只有通力合作才有可能成功。3位成員在數(shù)日里的朝夕相伴中培養(yǎng)出了無與倫比的默契和深厚的友誼。
由于前幾次去實(shí)驗(yàn)室比較晚,結(jié)果沒有空余的電腦可供使用,我們商量后,決定早上6點(diǎn)到實(shí)驗(yàn)室。于是,在零下的溫度下,我們陸續(xù)到達(dá)。途中數(shù)次感嘆,早晨的空氣真好。
除此之外,我們學(xué)會(huì)了焊接電路板,掌握了書本以外的電子技術(shù)知識(shí),培養(yǎng)了專心致志的工作學(xué)習(xí)習(xí)慣,懂得了相互之間的理解與體諒,可謂獲益匪淺。
如果非要用一句話來概括我們的體會(huì)的話,那只能是:痛并快樂著。
十一、致謝:
感謝電氣工程學(xué)院提供者次比賽的機(jī)會(huì);感謝長(zhǎng)通公司提供電子器件;感謝電子實(shí)習(xí)基地提供場(chǎng)所及工具;感謝電子信息系主任王建元老師在我們陷入困境時(shí)的點(diǎn)撥;感謝我隊(duì)指導(dǎo)于建立同學(xué)對(duì)我們的切實(shí)指導(dǎo);感謝02級(jí)學(xué)長(zhǎng)學(xué)姐們?cè)趯?shí)驗(yàn)室對(duì)我們的幫助與鼓勵(lì)。
十二、參考文獻(xiàn):
1、《電子技術(shù)基礎(chǔ).數(shù)字部分(第四版)》
高等教育出版社2003年3月 主編:康華光
2、《74系列芯片手冊(cè)》
重慶大學(xué)出版社 1999年9月 主編:李海
圖11、1數(shù)字搶答器框圖
表10、1
11、2 數(shù)字搶答器電路
74LS148的功能真值表
圖
2)定時(shí)電路
圖11、3 可預(yù)置時(shí)間的定時(shí)電路
圖11、4 報(bào)警電路
圖 11、5 時(shí)序控制電路
第四篇:?jiǎn)纹瑱C(jī)課設(shè)_AT89C51八路搶答器
《單片機(jī)原理及應(yīng)用》
課程設(shè)計(jì)
題 目∶
院 系∶ 專業(yè)班級(jí)∶ 姓 名∶ 學(xué) 號(hào)∶ 指導(dǎo)教師∶ 成 績(jī)∶
流水燈 機(jī)電工程系 機(jī)電一體化機(jī)電0911
曉寒 21 沈全鵬
2011年 12 月 日
單片機(jī)課程設(shè)計(jì)任務(wù)書
1.課題名稱
搶答器設(shè)計(jì) 2.設(shè)計(jì)目的
1. 進(jìn)一步理解和掌握單片機(jī)理論課程知識(shí),加強(qiáng)對(duì)專業(yè)知識(shí)的合運(yùn)用;
2. 學(xué)會(huì)熟練使用單片機(jī)編程工具軟件及單片機(jī)軟件編程; 3. 學(xué)習(xí)單片機(jī)小系統(tǒng)的硬件設(shè)計(jì)及PCB布線。4. 學(xué)會(huì)如何整理資料,劃分模塊,提高自己的編程技巧;3.設(shè)計(jì)思路
a.了解搶答器的工作方式; b.單片機(jī)按鍵輸入的設(shè)計(jì);
c.單片機(jī)驅(qū)動(dòng)發(fā)光二極管顯示及數(shù)碼管的動(dòng)態(tài)掃描工作方式; d.延時(shí)子程序設(shè)計(jì); e.定時(shí)器的應(yīng)用; 4.設(shè)計(jì)要求
1.在本設(shè)計(jì)中要求設(shè)計(jì)一個(gè)八組單片機(jī)控制的搶答器模擬器; 2.要求由兩個(gè)LED(紅綠)指示搶答成功或失敗; 3.要求由1位數(shù)碼管顯示搶答成功(或失敗)的組; 4.發(fā)揮部分:剩余時(shí)間顯示,各組積分顯示; 5.課程設(shè)計(jì)結(jié)束后,要求交設(shè)計(jì)心得,課程設(shè)計(jì)報(bào)告;
目錄
第一章 概述 ………………………………………………………………
第二章 八路搶答器設(shè)計(jì)方案及選取 …………………… 2
2.1電路設(shè)計(jì)方案一 ………………………………………… 2 2.2電路設(shè)計(jì)方案二 ………………………………………… 2 2.3電路設(shè)計(jì)方案的選取 …………………………………… 2 第三章 電路設(shè)計(jì)原理及硬件設(shè)計(jì) …………………………
3.1單片機(jī)最小系統(tǒng)的原理 ………………………………… 3 3.2八路搶答器工作原理 ………………………………… 4 3.3控制系統(tǒng)及所需元件 …………………………………
第四章 軟件系統(tǒng)設(shè)計(jì)及仿真 ……………………………… 7
4.1軟件系統(tǒng)設(shè)計(jì) …………………………………………… 7 4.2電路仿真 ………………………………………………… 8
第五章 電路板制作與調(diào)試 ……………………………………
5.1電路板制作 ……………………………………………… 9 5.2電路調(diào)試 ………………………………………………… 9 第六章 心得體會(huì) ………………………………………………
第七章 參考文獻(xiàn) ……………………………………………
鳴謝
………………………………………………………………
附錄一 源程序……………………………………………………
2 第一章 概述
《單片機(jī)原理及應(yīng)用技術(shù)》是一門技術(shù)性,應(yīng)用性、實(shí)踐性很強(qiáng)的學(xué)科。課程設(shè)計(jì)是學(xué)好本門課程的又一重要實(shí)踐性教學(xué)環(huán)節(jié),課程設(shè)計(jì)的目的和任務(wù)就是配合單片機(jī)的教學(xué)和平時(shí)實(shí)驗(yàn),以達(dá)到鞏固消化課程的內(nèi)容,進(jìn)一步加強(qiáng)綜合應(yīng)用能力及單片機(jī)應(yīng)用系統(tǒng)開發(fā)和設(shè)計(jì)能力的訓(xùn)練,啟發(fā)創(chuàng)新思維,使之具有獨(dú)立單片機(jī)產(chǎn)品和科研的基本技能,是以培養(yǎng)學(xué)生綜合運(yùn)用所學(xué)知識(shí)的過程,是知識(shí)轉(zhuǎn)化為能力和能力轉(zhuǎn)化為工程素質(zhì)的重要階段。在實(shí)際生活中有好多地方都用到了單片機(jī),因此學(xué)習(xí)好這門課程有著十分重要的意義。
在本設(shè)計(jì)中要求設(shè)計(jì)一個(gè)八組單片機(jī)控制的搶答器模擬器;要求由兩個(gè)LED(紅綠)指示搶答成功或失??;要求由1位數(shù)碼管顯示搶答成功(或失?。┑慕M;發(fā)揮部分:剩余時(shí)間顯示,各組積分顯示;
1)控制系統(tǒng)主要由單片機(jī)應(yīng)用電路、存儲(chǔ)器接口電路、顯示接口電路組成。其中單片機(jī)AT89C51是系統(tǒng)工作的核心,它主要負(fù)責(zé)控制各個(gè)部分協(xié)調(diào)工作.2)硬件組成及所需元件:該系統(tǒng)的核心器件是AT89C51。在其外圍接上復(fù)位電路、上拉電阻、數(shù)碼管、按鈕及揚(yáng)聲器(沒有驅(qū)動(dòng)器,所以就沒有用揚(yáng)聲器了)。元件為:晶振X1、電容C1、C2、C3、電阻RP1。P3.0和P3.1由裁判控制,分別是搶答開始和停止鍵。P1.0-P1.7是8組搶答的輸入口, P2.0--P2.3口為數(shù)碼管的段選口,位選口用的是P0.0--P0.6口輸出,外部中斷0、1實(shí)現(xiàn)的對(duì)個(gè)隊(duì)進(jìn)行計(jì)時(shí),P3.6為蜂鳴器的控制口。
控制系統(tǒng)防真用到了protuse軟件,用keil軟件與protuce軟件級(jí)聯(lián)可以進(jìn)行模擬調(diào)試,既可以檢測(cè)方案的正確性,又可以避免實(shí)物多次調(diào)試。Keil集成調(diào)試環(huán)境,集成了編緝器、編譯器、調(diào)試器,支持軟件模擬,支持項(xiàng)目管理功能強(qiáng)大的觀察窗口,支持所有的數(shù)據(jù)類型。支持ASM(匯編)、C語言,多語言多模塊源程序混合調(diào)試,在線直接修改、編譯、調(diào)試源程序,錯(cuò)誤指令定位。功能很強(qiáng)大??赏ㄟ^仿真可以完全顯示出所設(shè)計(jì)系統(tǒng)的功能,對(duì)于程序的調(diào)試等有很大的幫助.第二章 八路搶答器設(shè)計(jì)方案及選取
2.1電路設(shè)計(jì)方案一: 系統(tǒng)各部分采用中小規(guī)模集成數(shù)字電路,用機(jī)械開關(guān)按鈕作為控制開關(guān),完成搶答輸入信號(hào)的觸發(fā)。該方案的特點(diǎn)是中小規(guī)模集成電路應(yīng)用技術(shù)成熟,性能可靠,能方便地完成選手搶答的基本功能,但是由于系統(tǒng)功能要求較高,所以電路連接集成電路相對(duì)較多,而且過于復(fù)雜,并且制作過程工序比較煩瑣,使用不太方便。
2.2電路設(shè)計(jì)方案二: 該系統(tǒng)采用MCS-51系列單片機(jī)AT89S51作為控制核心,該系統(tǒng)可以完成運(yùn)算控制、信號(hào)識(shí)別以及顯示功能的實(shí)現(xiàn)。由于用了單片機(jī),使其技術(shù)比較成熟,應(yīng)用起來方便、簡(jiǎn)單并且單片機(jī)周圍的輔助電路也比較少,便于控制和實(shí)現(xiàn)。整個(gè)系統(tǒng)具有極其靈活的可編程性,能方便地對(duì)系統(tǒng)進(jìn)行功能的擴(kuò)張和更改性。CS-51單片機(jī)特點(diǎn)如下: 可靠性好:?jiǎn)纹瑱C(jī)按照工業(yè)控制要求設(shè)計(jì),抵抗工業(yè)噪聲干擾優(yōu)于一般的CPU,程序指令和數(shù)據(jù)都可以燒寫在ROM許多信號(hào)通道都在同一芯片,因此可靠性高。易擴(kuò)充:?jiǎn)纹瑱C(jī)有一般電腦所必須的器件,如三態(tài)雙向總線,串并行的輸入及輸出引腳,可擴(kuò)充為各種規(guī)模的微電腦系統(tǒng) 控制功能強(qiáng):?jiǎn)纹瑱C(jī)指令除了輸入輸出指令,邏輯判斷指令外還有更豐富的條件分支跳躍指令。
2.3電路設(shè)計(jì)方案的選?。?/p>
方案比較及其選用依據(jù),顯然方案二比方案一簡(jiǎn)單的多,不但從性能上優(yōu)于方案一,而且在使用上及其功能的實(shí)現(xiàn)上都較方案一簡(jiǎn)潔,并且由于單片機(jī)具有優(yōu)越的高集成電路性,使其工作速度更快、效率更高。另外AT89S51單片機(jī)采用12MHz的晶振,提高了信號(hào)的測(cè)量精度,并且使該系統(tǒng)可以通過軟件改進(jìn)來擴(kuò)張功能。而方案一采用了中小規(guī)模集成電路,有其復(fù)雜的電路性能,從而可能會(huì)使信號(hào)的輸入輸出產(chǎn)生延時(shí)及不必要的誤差。依此依據(jù)選擇方案二比較適合。第三章 電路設(shè)計(jì)原理及硬件設(shè)計(jì)
3.1單片機(jī)最小系統(tǒng)的原理
本課題采用了單片機(jī)最小系統(tǒng)來實(shí)現(xiàn)八路搶答器,下面是單片機(jī)最小系統(tǒng)的原理。單片機(jī)的主要功能是負(fù)責(zé)整個(gè)系統(tǒng)的控制,不承擔(dān)復(fù)雜的數(shù)據(jù)處理任務(wù),因此在設(shè)計(jì)單片機(jī)最小系統(tǒng)時(shí)通常選用AT89C5l、AT89C52、AT89S51、AT89S52(S系列芯片支持ISP功能)等型號(hào)的8位單片機(jī)作為MCU。本單片機(jī)最小系統(tǒng)采用的是AT89S51。
一個(gè)典型的單片機(jī)最小系統(tǒng)一般由時(shí)鐘電路、復(fù)位電路、片外RAM、片外ROM、按鍵、數(shù)碼管、液晶顯示器、外部擴(kuò)展接口等部分組成,圖3-1、圖3-2分別給出了單片機(jī)最小系統(tǒng)的結(jié)構(gòu)框圖、原理圖。
圖3-1 單片機(jī)最小系統(tǒng)的結(jié)構(gòu)框圖
圖3-2單片機(jī)最小系統(tǒng)的原理圖
3.2八路搶答器工作原理
智力競(jìng)賽搶答器用單片機(jī)來設(shè)計(jì)制作完成,由于其功能的實(shí)現(xiàn)主要通過軟件編程來完成, 采用單片機(jī)AT89C51,它是低功耗、高性能的CMOS型8位單片機(jī)。片內(nèi)帶有4KB的Flash存儲(chǔ)器,且允許在系統(tǒng)內(nèi)改寫或用編程器編程。該智力競(jìng)賽搶答器的準(zhǔn)確度很高,其誤差主要由晶振自身的誤差所造成。
AT89C51單片機(jī)由微處理器,存儲(chǔ)器,I/O口以及特殊功能寄存器SFR等部分構(gòu)成。其存儲(chǔ)器在物理上設(shè)計(jì)成程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器兩個(gè)獨(dú)立的空間,片內(nèi)程序存儲(chǔ)器的容量為4KB,片內(nèi)數(shù)據(jù)存儲(chǔ)器為128個(gè)字節(jié)。89C51單片機(jī)有4個(gè)8位的并行I/O口:P0口,P1口,P2口和P3口。各個(gè)接口均由接口鎖存器,輸出驅(qū)動(dòng)器,和輸入緩沖器組成。P1口是唯一的單功能口,僅能用作通用的數(shù)據(jù)輸入/輸出口。P3口是雙功能口除了具有數(shù)據(jù)輸入/輸出功能外,每條接口還具有不同的第二功能,如P3.0是串行輸入口線,P3.1口是串行輸出口線。在需要外部程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器擴(kuò)展時(shí),P0可作為分時(shí)復(fù)用的低8位地址/數(shù)據(jù)總線,P2口可作為高8位的地址總線。P3口也可作為AT89C51的一些特殊功能口,同時(shí)為閃爍編程和編程校驗(yàn)接收一些控制信號(hào)。3.3控制系統(tǒng)及所需元件
控制系統(tǒng)主要由單片機(jī)應(yīng)用電路、存儲(chǔ)器接口電路、顯示接口電路組成。其中單片機(jī)AT89C51是系統(tǒng)工作的核心,它主要負(fù)責(zé)控制各個(gè)部分協(xié)調(diào)工作.所需元件:該系統(tǒng)的核心器件是AT89C51。在其外圍接上復(fù)位電路、上拉電阻、數(shù)碼管、按鈕及揚(yáng)聲器。元件為:晶振X1、電容C1、C2、C3、電阻RP1、P3.0和P3.1由裁判控制,分別是搶答開始和停止鍵。P1.0-P1.7是8組搶答的輸入口, P2.0--P2.3口為數(shù)碼管的段選口,位選口用的是P0.0--P0.6口輸出, P3.6為蜂鳴器的控制口。
AT89C51的管腳圖如下圖3-3所示:
圖3-3 AT89c51的管腳圖
外部振蕩電路單片機(jī)必須在AT89C51的驅(qū)動(dòng)下才能工作.在單片機(jī)內(nèi)部有一個(gè)時(shí)鐘振蕩電路,只需要外接一個(gè)振蕩源就能產(chǎn)生一定的時(shí)鐘信號(hào)送到單片機(jī)內(nèi)部的各個(gè)單元。外部振蕩電路見圖3-4所示:
圖3-4外部振蕩電路 外部中斷和內(nèi)部中斷并存,單片機(jī)有硬件復(fù)位端,只要輸入持續(xù)4個(gè)機(jī)器周期的高電平即可實(shí)現(xiàn)復(fù)位。硬件復(fù)位后的各狀態(tài)可知寄存器及存儲(chǔ)器的值都恢復(fù)到了初始值,應(yīng)為本設(shè)計(jì)功能中有倒計(jì)時(shí)時(shí)間的記憶功能,所以不能對(duì)單片機(jī)進(jìn)行硬件復(fù)位。只能用軟復(fù)位。軟復(fù)位實(shí)際上就是當(dāng)程序執(zhí)行完畢之后,將程序指針通過一條跳轉(zhuǎn)指令讓它跳轉(zhuǎn)到程。復(fù)位電路采用圖3-5所示:
圖3-5復(fù)位電路
采用七段碼7SEG-MPX4-CC 顯示,它是共陰極的由高電平點(diǎn)亮。圖形如下圖3-6所示。:
圖3.6 共陰極
采用八個(gè)BUTTON按鈕作為搶答的選擇按鍵如圖3-7所示:
圖3-7八個(gè)BUTTON按鈕
第四章 軟件系統(tǒng)設(shè)計(jì)及仿真
4.1軟件系統(tǒng)設(shè)計(jì)
智力競(jìng)賽搶答器要求有計(jì)時(shí)記憶功能,一次時(shí)間設(shè)置完, 復(fù)位后不需重新進(jìn)行時(shí)間設(shè)定,通過鍵盤掃描輸出按鍵信息,再通過單片機(jī)將它轉(zhuǎn)換成能在七段數(shù)碼管上顯示字型碼.當(dāng)搶答完畢時(shí),會(huì)在數(shù)碼管上顯示搶答者數(shù)字號(hào)碼提示以表示搶答成功.同時(shí)顯示其分?jǐn)?shù),分?jǐn)?shù)的加減可由裁判手動(dòng)進(jìn)行.采用獨(dú)立式鍵盤,可實(shí)現(xiàn)8路搶答.在顯示時(shí)使用的是七段數(shù)碼管顯示在本設(shè)計(jì)中根據(jù)實(shí)際情況采用的是動(dòng)態(tài)顯示方法.并通過查表法 將其在數(shù)碼管上顯示出來,其中P1口為字型碼輸入端,P2口低6位為字選段輸入端.通過查表將字型碼送給7段數(shù)碼管顯示的數(shù)字。軟件去抖動(dòng),如果“開始鍵”按下就向下執(zhí)行,否者跳到開始。采用倒計(jì)時(shí)程序,使其具有倒計(jì)時(shí)功能?;卮鸬褂?jì)時(shí)30秒。搶答時(shí)間5秒。采用發(fā)聲警報(bào)(缺少驅(qū)動(dòng)器,所以沒有用揚(yáng)聲器了),起到報(bào)警作用。
1、如果想調(diào)節(jié)搶答時(shí)間或答題時(shí)間,按“搶答時(shí)間調(diào)節(jié)”鍵或“答題時(shí)間調(diào)節(jié)”鍵進(jìn)入調(diào)節(jié)狀態(tài),此時(shí)會(huì)顯示現(xiàn)在設(shè)定的搶答時(shí)間或回答時(shí)間值,主持人按“搶答開始”鍵,會(huì)有提示音,并立刻進(jìn)入搶答倒計(jì)時(shí)(預(yù)設(shè)30s搶答時(shí)間),如有選手搶答,會(huì)有提示音,并會(huì)顯示其號(hào)數(shù)并立刻進(jìn)入回答倒計(jì)時(shí)(預(yù)設(shè)30s搶答時(shí)間),不進(jìn)行搶答查詢,所以只有第一個(gè)按搶答的選手有效。數(shù)碼管上只顯示第一個(gè)搶答的選手號(hào),倒數(shù)時(shí)間到小于5s會(huì)每秒響一下提示音。如倒計(jì)時(shí)期間,主持人想停止倒計(jì)時(shí)可以隨時(shí)按“停止”按鍵,系統(tǒng)會(huì)自動(dòng)進(jìn)入準(zhǔn)備狀態(tài),等待主持人按“搶答開始”進(jìn)入下次搶答計(jì)時(shí)。下次搶答是先按復(fù)位鍵。
4、如果主持人未按“搶答開始”鍵,而有人按了搶答按鍵,犯規(guī)搶答,LED上不斷閃爍FF和犯規(guī)號(hào)數(shù)并響個(gè)不停,直到按下“停止” 鍵為止。
5、P3.0為開始搶答,P3.1為停止,p1.0-p1.7為八路搶答輸入 數(shù)碼管段選P0口,位選P2口低3位,蜂鳴器輸出為P3.6口。P3.6為蜂鳴器的控制口。八路搶答器的源程序見附錄1.7 4.2 電路仿真
利用keil軟件編寫源程序,其源程序見附錄1,在protues中畫好其總電路圖如下圖4.1所示::
圖4-1 八路搶答器總電路圖
把keil軟件中的源程序生成可執(zhí)行文件,下載到protuce中進(jìn)行仿真,調(diào)試。其選手沒有搶答時(shí)的狀態(tài)如下圖4-2所示:
圖4-2 選手準(zhǔn)備搶答時(shí)的顯示圖
6號(hào)選手搶答成功如下圖4-3所示:
圖4-3 6號(hào)選手搶答成功顯示
第五章 電路板制作與調(diào)試
5.1電路板制作:
單片機(jī)最小系統(tǒng)的PCB圖如下圖4-1所示:
圖4-1單片機(jī)最小系統(tǒng)的PCB圖
將打印好PCB的轉(zhuǎn)印紙平鋪在覆銅板上,準(zhǔn)備轉(zhuǎn)印。再用電熨斗加溫(要很熱)將轉(zhuǎn)印紙上黑色塑料粉壓在覆銅板上形成高精度的抗腐層。準(zhǔn)備好三氯化鐵溶液進(jìn)行腐蝕。腐蝕好后進(jìn)行焊接。清理出焊盤部分,剩下的部分用于阻焊,安裝所需預(yù)定原件并焊接好。然后進(jìn)行調(diào)試。
5.2電路調(diào)試
5.2.1總結(jié)調(diào)試的原則和方法(1)通電觀察 把經(jīng)過準(zhǔn)確測(cè)量的電源接入電路。觀察有無異?,F(xiàn)象,包括有無元件發(fā)熱,甚至冒煙有異味電源是否有短路現(xiàn)象等;如有此現(xiàn)象,應(yīng)立即斷電源,待排除故障后才能通電。(2)靜態(tài)調(diào)試
交流和直流并存是電子電路工作的一個(gè)重要組成部分。一般情況下,直流為交流服務(wù),直流是電路工作的基礎(chǔ)。因此,電子電路的調(diào)試有靜態(tài)和動(dòng)態(tài)調(diào)試之分。靜態(tài)調(diào)試過程:如,通過靜態(tài)測(cè)試模擬電路的靜態(tài)工作點(diǎn),數(shù)字電路和各輸入端和輸出端的高低電平值及邏輯關(guān)系等,可以及時(shí)發(fā)現(xiàn)已損壞的元器件,判斷電路工作情況,并及時(shí)調(diào)整電路參數(shù),使電路工作狀態(tài)符合設(shè)計(jì)要求。(3)動(dòng)態(tài)調(diào)試
調(diào)試的方法是在電路的輸入端接入適當(dāng)頻率和幅值的信號(hào),并循著信號(hào)流向來檢測(cè)各有關(guān)點(diǎn)的波形,參數(shù)和性能指標(biāo)。發(fā)現(xiàn)故障應(yīng)采取各種方法來排除。通過調(diào)試,最后檢查功能塊和整機(jī)的各種指標(biāo)是否滿足設(shè)計(jì)要求,如必要再進(jìn)一步對(duì)電路參數(shù)提出合理的修正。5.2.2調(diào)試中注意的事項(xiàng)
我們?cè)谡{(diào)試時(shí),為了保證效果,必須盡量減小測(cè)量誤差,提高測(cè)量精度。調(diào)試結(jié)果是否正確,很大程度受測(cè)量正確與否和測(cè)量精度的影響。為此,需注意以下幾點(diǎn):
(1)正確使用測(cè)量?jī)x器的接地端。
(2)測(cè)量電壓所用儀器的輸入端阻抗必須遠(yuǎn)大于被測(cè)處的等效阻抗。因?yàn)?,若測(cè)量?jī)x器輸入阻抗小,則在測(cè)量時(shí)會(huì)引起分流給測(cè)量結(jié)果帶來很大誤差。(3)要正確選擇測(cè)量點(diǎn),用同一臺(tái)測(cè)量?jī)x進(jìn)行測(cè)量進(jìn),測(cè)量點(diǎn)不同,儀器內(nèi)阻引起的誤差大小將不同。
(4)調(diào)試過程中,不但要認(rèn)真觀察和測(cè)量,還要于記錄。記錄的內(nèi)容包括實(shí)驗(yàn)條件,觀察的現(xiàn)象。只有有了大量的可靠實(shí)驗(yàn)記錄并與理論結(jié)果加以比較,才能發(fā)現(xiàn)電路設(shè)計(jì)上的問題,完善設(shè)計(jì)方案。
(5)調(diào)試時(shí)出現(xiàn)故障,要認(rèn)真查找故障原因,切不可一遇故障解決不了的問題就拆掉線路重新安裝。因?yàn)橹匦掳惭b的線路仍可能存在各種問題。我們應(yīng)該認(rèn)真檢查.第六章 心得體會(huì)
單片機(jī)課程設(shè)計(jì)是一門很實(shí)用,很難的設(shè)計(jì)。這次課程設(shè)計(jì)歷時(shí)二個(gè)星期多左右,通過這兩個(gè)星期的學(xué)習(xí),發(fā)現(xiàn)了自己的很多不足,自己知識(shí)的很多漏洞,看到了自己的實(shí)踐經(jīng)驗(yàn)還是比較缺乏,理論聯(lián)系實(shí)際的能力還急需提高。
這次的課程設(shè)計(jì)也讓我看到了團(tuán)隊(duì)的力量,我認(rèn)為我們的工作是一個(gè)團(tuán)隊(duì)的工作,團(tuán)隊(duì)需要個(gè)人,個(gè)人也離不開團(tuán)隊(duì),必須發(fā)揚(yáng)團(tuán)結(jié)協(xié)作的精神。剛開始的時(shí)候,大家就分配好了各自的任務(wù),大家有的繪制原理圖,進(jìn)行仿真實(shí)驗(yàn),有的積極查詢相關(guān)資料,并且經(jīng)常聚在一起討論各個(gè)方案的可行性。在課程設(shè)計(jì)中只有一個(gè)人知道原理是遠(yuǎn)遠(yuǎn)不夠的,必須讓每個(gè)人都知道,否則一個(gè)人的錯(cuò)誤,就有可能導(dǎo)致整個(gè)工作失敗。團(tuán)結(jié)協(xié)作是我們成功的一項(xiàng)非常重要的保證。而這次設(shè)計(jì)也正好鍛煉我們這一點(diǎn),這也是非常寶貴的。
在這個(gè)過程中,我也曾經(jīng)因?yàn)閷?shí)踐經(jīng)驗(yàn)的缺乏失落過,也曾經(jīng)仿真成功而熱情高漲。生活就是這樣,汗水預(yù)示著結(jié)果也見證著收獲。勞動(dòng)是人類生存生活永恒不變的話題。雖然這只是一次的極簡(jiǎn)單的課程制作(八路搶答器),可是平心而論,也耗費(fèi)了我們不少的心血,這就讓我不得不佩服專門搞單片機(jī)開發(fā)的技術(shù)前輩,才意識(shí)到老一輩對(duì)我們社會(huì)的付出,為了人們的生活更美好,他們?yōu)槲覀兩鐣?huì)所付出多少心血啊!但當(dāng)課程設(shè)計(jì)完成時(shí),那感覺是甜蜜的,沒有耕耘,哪來得收獲的喜悅,不懂付出怎么能知道回報(bào)的快樂,一分耕耘一分收獲,有付出才會(huì)有回報(bào),就在這樣的痛與快樂的交換中,我學(xué)到了知識(shí),學(xué)到了做人的道理。
這次的課程設(shè)計(jì),讓我學(xué)到了很多書本上學(xué)不到的東西,學(xué)到了實(shí)際應(yīng)用時(shí),是取用成本的最小化,做設(shè)計(jì)不僅要考慮大的方面,小的方面也必須做到完美。最大的收獲是:對(duì)鍵盤,顯示器,C51語言(雖然最后還是用匯編語言編寫的,但是,我也試著學(xué)用了C51)的應(yīng)用有了深刻的了解。還有學(xué)會(huì)了團(tuán)隊(duì)合作精神。
第七章 參考文獻(xiàn)
[1]謝自美.電子線路設(shè)計(jì).華中科技大學(xué)出版社, 2005-08.[2]曹才開,電工電子實(shí)訓(xùn)教程.清華大學(xué)出版社,1998.[3] 余發(fā)山,單片機(jī)原理及應(yīng)用技術(shù).中國礦業(yè)大學(xué)出版社,2002.[4] 張淑清,單片微型計(jì)算機(jī)接口技術(shù)及其應(yīng)用.國防工業(yè)出版社,2002.[5]李光飛,單片機(jī)課程設(shè)計(jì)實(shí)例指導(dǎo),北京航空航天大學(xué)出版社,2001.鳴謝
在這三個(gè)星期的課程設(shè)計(jì)中,感謝老師的細(xì)心指導(dǎo);感謝實(shí)驗(yàn)室老師的鼎力支持;感謝同學(xué)們的熱心幫助;感謝湖南工學(xué)院。因?yàn)橛辛四銈兊膸椭攀刮覀儓A滿的完成了這次課程設(shè)計(jì)。附錄1 源程序
OK EQU 20H;搶答開始標(biāo)志位 RING EQU 22H;響鈴標(biāo)志位 ORG 0000H AJMP MAIN ORG 000BH AJMP TT0 ORG 001BH AJMP TT1 ORG 0040H;避開中斷向量區(qū)
MAIN: MOV R1,#30;初設(shè)搶答時(shí)間為30s MOV TMOD,#11H;設(shè)置定時(shí)器/方式1 MOV TH0,#0F0H MOV TL0,#0FFH;越高發(fā)聲頻率越高,越尖 MOV TH1,#3CH MOV TL1,#0B0H;50ms為一次溢出中斷/F=12MHz SETB EA SETB ET0 SETB ET1;允許2個(gè)中斷,T0/T1 CLR OK CLR RING SETB TR1 SETB TR0;一開始就運(yùn)行定時(shí)器,以開始顯示PPP.如果想重新計(jì)數(shù),重置TH1/TL1就可以了;=====查詢程序===== START: MOV R5,#0BH MOV R4,#0BH MOV R3,#0BH ACALL DISPLAY;未開始搶答時(shí)候顯示PPP JB P3.0,FEIFA;ACALL DELAY JB P3.0,FEIFA;去抖動(dòng),如果“開始鍵”按下就向下執(zhí)行,否者跳到非法搶答查詢
ACALL BARK;按鍵發(fā)聲 MOV A,R1 MOV R6,A;送R1->R6,因?yàn)镽1中保存了搶答時(shí)間
SETB OK;搶答標(biāo)志位,用于COUNT子程序中判斷是否查詢搶答 MOV R3,#0AH;搶答只顯示計(jì)時(shí),滅號(hào)數(shù)
AJMP COUNT;進(jìn)入倒計(jì)時(shí)程序,“查詢有效搶答的程序”在COUNT里面 FEIFA: JNB P1.0,FALSE1 JNB P1.1,FALSE2 JNB P1.2,FALSE3 JNB P1.3,FALSE4 JNB P1.4,FALSE5 JNB P1.5,FALSE6 JNB P1.6,FALSE7 JNB P1.7,FALSE8 AJMP START;=====非法搶答處理程序===== FALSE1: ACALL BARK;按鍵發(fā)聲 MOV R3,#01H AJMP ERROR FALSE2: ACALL BARK MOV R3,#02H AJMP ERROR FALSE3: ACALL BARK MOV R3,#03H AJMP ERROR FALSE4: ACALL BARK MOV R3,#04H AJMP ERROR FALSE5: ACALL BARK MOV R3,#05H AJMP ERROR FALSE6: ACALL BARK MOV R3,#06H AJMP ERROR FALSE7: ACALL BARK MOV R3,#07H AJMP ERROR FALSE8: ACALL BARK MOV R3,#08H AJMP ERROR;=====倒計(jì)時(shí)程序(搶答倒計(jì)時(shí)跳到改程序)===== COUNT: MOV R0,#00H;重置定時(shí)器中斷次數(shù) MOV TH1,#3CH MOV TL1,#0B0H;重置定時(shí)器
RECOUNT: MOV A,R6;R6保存了倒計(jì)時(shí)的時(shí)間,之前先將搶答時(shí)間給R6 MOV B,#0AH DIV AB;除十分出個(gè)位/十位 MOV 30H,A;十位存于(30H)MOV 31H,B;個(gè)位存于(31H)MOV R5,30H;取十位 MOV R4,31H;取個(gè)位 MOV A,R6 SUBB A,#016H JNC LARGER;大于10s跳到LARGER/小于等于10s會(huì)提醒 MOV A,R0 CJNE A,#0AH,FULL;1s中0.5s向下運(yùn)行 CLR RING AJMP CHECK FULL: CJNE A,#14H,CHECK;下面是1s的情況,響并顯示號(hào)數(shù)并清R0,重新計(jì)數(shù)
SETB RING MOV A,R6 JZ QUIT;計(jì)時(shí)完畢 MOV R0,#00H DEC R6;一秒標(biāo)志減1 AJMP CHECK LARGER: MOV A,R0 CJNE A,#14H,CHECK;如果1s向下運(yùn)行,否者跳到查“停/顯示” DEC R6;計(jì)時(shí)一秒R6自動(dòng)減1 MOV R0,#00H CHECK: JNB P3.1,QUIT;如按下停止鍵退出 ACALL DISPLAY JB OK,ACCOUT;如果是搶答倒計(jì)時(shí),如是則查詢搶答,否者跳過查詢繼續(xù)倒數(shù)(這里起到鎖搶答作用)AJMP RECOUNT ACCOUT: JNB P1.0,TRUE1 JNB P1.1,TRUE2 JNB P1.2,TRUE3 JNB P1.3,TRUE4 JNB P1.4,TRUE5 JNB P1.5,TRUE6 JNB P1.6,TRUE7 JNB P1.7,TRUE8 AJMP RECOUNT QUIT: CLR OK;如果按下了“停止鍵”執(zhí)行的程序 CLR RING
ACALL BARK AJMP START;=====正常搶答處理程序===== TRUE1: ACALL BARK;按鍵發(fā)聲 MOV R3,#01H CLR OK;因?yàn)榇痤}的計(jì)時(shí)不再查詢搶答,所以就鎖了搶答 AJMP COUNT TRUE2: ACALL BARK;MOV R3,#02H CLR OK AJMP COUNT TRUE3: ACALL BARK;MOV R3,#03H CLR OK AJMP COUNT TRUE4: ACALL BARK;MOV R3,#04H CLR OK AJMP COUNT TRUE5: ACALL BARK;MOV R3,#05H CLR OK AJMP COUNT TRUE6: ACALL BARK;MOV R3,#06H CLR OK AJMP COUNT TRUE7: ACALL BARK;MOV R3,#07H CLR OK AJMP COUNT TRUE8: ACALL BARK;MOV R3,#08H CLR OK AJMP COUNT;=====犯規(guī)搶答程序===== ERROR: MOV R0,#00H MOV TH1,#3CH MOV TL1,#0B0H MOV 34H,R3;犯規(guī)號(hào)數(shù)暫存與(34H)HERE: MOV A,R0 CJNE A,#0AH,FLASH;0.5s向下運(yùn)行->滅并停響
CLR RING
MOV R3,#0AH MOV R4,#0AH MOV R5,#0AH;三燈全滅 AJMP CHECK1 FLASH: CJNE A,#14H,CHECK1;下面是1s的情況,響并顯示號(hào)數(shù)并清R0,重新計(jì) SETB RING MOV R0,#00H MOV R3,34H;取回號(hào)數(shù) MOV R5,#0BH MOV R4,#0BH;顯示pp和號(hào)數(shù) AJMP CHECK1 CHECK1: JNB P3.1,QUIT1 ACALL DISPLAY AJMP HERE QUIT1: CLR RING CLR OK AJMP START;=====顯示程序===== DISPLAY: MOV DPTR,#DAT1;查表顯示程序,利用P0口做段選碼口輸出/P2低三位做位選碼輸出, MOV A,R3 MOVC A,@A+DPTR MOV P2,#0feH MOV P0,A ACALL DELAY MOV DPTR,#DAT2 MOV A,R5 MOVC A,@A+DPTR MOV P2,#0fdH MOV P0,A ACALL DELAY MOV A,R4 MOVC A,@A+DPTR MOV P2,#0fbH MOV P0,A ACALL DELAY RET DAT1:DB 00h,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,73H;“滅”,“1”,“2”,“3”,“4”,“5”,“6”,“7”,“8”,“9”,“滅”,“p” DAT2:DB 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh,00H,73H;第一個(gè)為零,其他與上相同,因?yàn)槭蝗绻麨榱泔@示熄滅;=====報(bào)警延時(shí)====== DELAY1: MOV 35H,#08H LOOP0: ACALL DISPLAY DJNZ 35H,LOOP0 RET;=====延時(shí)(顯示和去抖動(dòng)用到)===== DELAY: MOV 32H,#12H LOOP: MOV 33H,#0AFH LOOP1: DJNZ 33H,LOOP1 DJNZ 32H,LOOP RET;=====發(fā)聲程序===== BARK: SETB RING ACALL DELAY1 ACALL DELAY1 CLR RING;按鍵發(fā)聲 RET;=====TO溢出中斷(響鈴程序)===== TT0: MOV TH0,#0ECH MOV TL0,#0FFH JNB RING,OUT;CPL P3.6;RING標(biāo)志位為1時(shí)候P3.6口不斷取反使喇叭發(fā)出一定頻率的聲音
OUT: RETI;=====T1溢出中斷(計(jì)時(shí)程序)===== TT1: MOV TH1,#3CH MOV TL1,#0B0H INC R0 RETI END 18
第五篇:51單片機(jī)四路搶答器程序
#include
void delay_100ms(unsigned int t){ unsigned char i,j,k;for(i=t;i>0;i--){
for(j=200;j>0;j--);
{
for(k=248;k>0;k--);
} } } void beep(){
BEEP=1;
delay_100ms(100);
BEEP=0;
}
void T0_int()interrupt 1
{
static unsigned char count;unsigned char a=1;count++;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;if(count==20){
count=0;
P0=TAB[pulse_number1--];
}
beep();
if(pulse_number1==0)
{
P0=TAB[0];
TR0=0;
while(a)
{ beep();if(!key5)a=0;
}
}
}
void main(){
bit flag;
temp=0x00;
P2=temp;
P0=0x3f;
TMOD=0x01;
TH0=(65536-50000)/256;TL0=(65536-50000)%256;ET0=1;EA=1;
TR0=1;
while(!flag)
{
}
while(flag);}
if(!key1){P0=0x06;beep();flag=1;TR0=0;}
else if(!key2){P0=0x5b;beep();flag=1;TR0=0;} else if(!key3){P0=0X4f;beep();flag=1;TR0=0;} else if(!key4){P0=0x66;beep();flag=1;TR0=0;}