黃永東
摘要:搶答器在日常生活工作中使用較多,本文結(jié)合單片機(jī)的常用外圍,設(shè)計(jì)一個(gè)簡(jiǎn)易的三路搶答系統(tǒng),以此為例,讓同學(xué)們綜合開發(fā),融合按鍵、數(shù)碼管、1602液晶、發(fā)光二極管、蜂鳴器、定時(shí)中斷等,學(xué)習(xí)單片機(jī)應(yīng)用系統(tǒng)的設(shè)計(jì)方法。
關(guān)鍵字:51單片機(jī);三路搶答系統(tǒng)
中圖分類號(hào):TP276 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2020)33-0232-02
開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
單片機(jī)的初期學(xué)習(xí)過(guò)程,各個(gè)模塊的單獨(dú)使用通常較為簡(jiǎn)單,但對(duì)于系統(tǒng)功能設(shè)計(jì)時(shí)卻容易出現(xiàn)不知如何下手的問(wèn)題。如何將1602液晶顯示、數(shù)碼管動(dòng)態(tài)顯示、獨(dú)立按鍵識(shí)別、定時(shí)器中斷使用等功能融合利用,需要進(jìn)行系統(tǒng)設(shè)計(jì)。而搶答器是日常工作中應(yīng)用較多的一種典型系統(tǒng),為此,本系統(tǒng)采用了MCS51單片機(jī)進(jìn)行三路搶答系統(tǒng)的設(shè)計(jì),可實(shí)現(xiàn)搶答器的全部要求,同時(shí)為單片機(jī)的綜合學(xué)習(xí)提供思路。
1 三路搶答系統(tǒng)整體要求
主持人有一個(gè)按鍵,可以控制搶答的開始與停止(復(fù)位),三組成員分別為A、B、C,各有一個(gè)按鍵進(jìn)行搶答申請(qǐng);當(dāng)主持人允許搶答時(shí),三組成員才能搶答,當(dāng)任一組搶答成功后,另外兩組則搶答無(wú)效。
2 具體設(shè)計(jì)要求
1)1602液晶顯示要求:
上電后,1602液晶顯示一行字符“zhi shi jing sai”;
2)數(shù)碼管顯示要求:
上電后,數(shù)碼管不顯示;當(dāng)有按鍵按下時(shí),則按按鍵的要求進(jìn)行顯示;
3)按鍵要求:
(1)S1:主持人按鍵:
當(dāng)主持人第一次按下后,數(shù)碼管的前兩位顯示“20”,代表?yè)尨饡r(shí)間為20秒,然后按秒減法顯示;后兩位數(shù)碼管顯示“00”,直至某一組搶答成功或搶答時(shí)間結(jié)束;
當(dāng)主持人第二次按下后,復(fù)位,數(shù)碼管不再顯示,時(shí)間也復(fù)位;
之后就反復(fù)循環(huán);
(2) S2(A組)、S3(B組)、S4(C組)搶答申請(qǐng)鍵:
在主持人允許搶答的前提下,按下此鍵后,秒表停止計(jì)時(shí),倒計(jì)時(shí)開始計(jì)時(shí),數(shù)碼管前兩位顯示搶答所花的時(shí)間,數(shù)碼管后兩位顯示“叭(或02或03)”,表示第一組(或第二組或第三組)搶答成功,數(shù)碼管中間兩位開始“30s”倒計(jì)時(shí),顯示答題剩余時(shí)間;
4)發(fā)表二極管和蜂鳴器要求:
(1)開始搶答后,八個(gè)發(fā)光二極管均亮;
(2)有效按鍵按下或時(shí)間到,蜂鳴器響一聲。
3 硬件設(shè)計(jì)思路
系統(tǒng)中主要用到的模塊非常明確,涉及最小系統(tǒng)、發(fā)光顯示、數(shù)碼顯示、獨(dú)立按鍵輸入、液晶顯示、蜂鳴器輸出等。
1)單片機(jī)最小系統(tǒng):包括電源電路(VCC,CND)、時(shí)鐘電路(由于設(shè)計(jì)中有用到中斷,因此選擇11.0592MHZ晶振)、復(fù)位電路(上電復(fù)位、按鍵復(fù)位)、程序存儲(chǔ)器選擇電路(EA=1);
2)發(fā)光顯示:(1)直接接人發(fā)光二極管,注意限流電阻的選擇。發(fā)光二極管具有單向?qū)щ娦?,通過(guò)SmA左右的電流即可,電流越大,其亮度越強(qiáng),但若電流過(guò)大,會(huì)燒毀二極管,一般我們控制在3 - 20mA之間;(2)考慮到P1口有可能會(huì)重復(fù)使用,在發(fā)光二極管與單片機(jī)之間加入一個(gè)鎖存器用以隔離。
3)數(shù)碼管顯示:數(shù)碼管分為共陰和共陽(yáng)兩類,不同的類型只需關(guān)注其不同的字形碼和位選碼值。本項(xiàng)目中,為減少單片機(jī)1/0口的使用,增加兩個(gè)鎖存器,一個(gè)控制段碼,一個(gè)控制位選。
4)獨(dú)立按鍵輸入:本任務(wù)中,只需要用到四個(gè)按鍵,可直接采用獨(dú)立按鍵,公共端接地,當(dāng)按鍵按下時(shí),其對(duì)應(yīng)端口置0。
5) 1602液晶顯示:(1)液晶1、2端為電源,15、16為背光電源,為防止直接加SV電壓燒壞背光燈,在15腳串一個(gè)10歐電阻用于限流;(2)液晶3端為液晶對(duì)比度調(diào)節(jié)端,通過(guò)一個(gè)IOK歐電位器接地來(lái)調(diào)節(jié)液晶顯示對(duì)比度;(3)液晶5端為讀/寫選擇端,因?yàn)椴粡囊壕ёx取任何數(shù)據(jù),只向其寫人命令和顯示數(shù)據(jù),因此此端始終選擇為寫狀態(tài),即低電平接地;
6)采用Proteus軟件進(jìn)行硬件系統(tǒng)設(shè)計(jì),為保持美觀,注意使用網(wǎng)絡(luò)進(jìn)行線路連接,同時(shí)設(shè)計(jì)完成后要進(jìn)行電氣檢測(cè),具體如下圖所示:
4 硬件設(shè)計(jì)思路
此功能任務(wù)中,涉及單片機(jī)最小系統(tǒng)、發(fā)光顯示、數(shù)碼顯示。
5 部分軟件設(shè)計(jì)思路
1)初始化設(shè)置:
(1)1602液晶初始化、寫人命令、寫人數(shù)據(jù),調(diào)用在1602液晶顯示函數(shù);就其常用的幾個(gè)命令解釋如下:
Write_com(Ox38);//設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)端口;
Write_com(OxOC);/設(shè)置開顯示,不顯示光標(biāo);
Write_com(Ox38);//寫一個(gè)字符后地址指針自動(dòng)加1;
Write_com(Ox38);//顯示清0,數(shù)據(jù)指針清0;
(2)定時(shí)器TO(搶答的時(shí)間)、定時(shí)器T1(搶答成功后的作答時(shí)間)初始化及中斷函數(shù);
2)鍵盤掃描:獨(dú)立按鍵掃描中主要涉及按鍵按下的識(shí)別、延時(shí)去抖動(dòng)、按鍵釋放等。
(1)首先掃描判斷主持人是否按下鍵允許搶答,注意允許搶答和停止搶答用的同一個(gè)按鍵,可設(shè)置一個(gè)變化進(jìn)行取反操作;
(2)在允許搶答和搶答時(shí)間到達(dá)之前,掃描判斷是否有人搶答,注意任何一組搶答后其余兩組都不再能搶答,參看后續(xù)程序段;
3)數(shù)碼管顯示:采用動(dòng)態(tài)掃描顯示,即輪流向各位數(shù)碼管送出字形碼和相應(yīng)的位選,利用發(fā)光管的余輝和人眼視覺(jué)暫留作用,使人的感覺(jué)好像各位數(shù)碼管同時(shí)都在顯示,而實(shí)際上多位數(shù)碼管是一位一位輪流顯示的,只是輪流的速度非???,人眼已經(jīng)無(wú)法分辨出來(lái)。在程序設(shè)計(jì)中要特別注意動(dòng)態(tài)顯示過(guò)程中的“消影”處理,避免數(shù)碼管出現(xiàn)顯示混亂的現(xiàn)象。
(1)不允許搶答前,數(shù)碼管不顯示,通過(guò)控制數(shù)碼管公共端電平實(shí)現(xiàn);
(2)允許搶答時(shí),數(shù)碼管顯示搶答剩余時(shí)間。定時(shí)器TO計(jì)時(shí),動(dòng)態(tài)顯示;
(3)搶答成功后,數(shù)碼管主要顯示作答時(shí)間和小組組別號(hào)。作答時(shí)間由定時(shí)器T1計(jì)時(shí),小組組別號(hào)由按鍵掃描函數(shù)返回。
6 部分程序及說(shuō)明
#include //頭文件包含
#define uchar unsigned char//宏定義,uchar代表unsignedchar
#define uint unsigned int
//宏定義,uint代表unsigned int
sbit DULA=P2^6;
//段顯的鎖存器控制位定義
sbit WELA=P2^7;
//位顯的鎖存器控制位定義
sbit FM=P2“3;
//蜂鳴器位定義
sbit qiting=P3^4;
//位定義,s2定義為qiting;
sbit zuI=P3^5. //位定義,s3定義為zul;
sbit zu2=P3“6; //位定義,s4定義為zu2;
sbit zu3=P3“7; //位定義,s5定義為zu3;
uchar x,flag,m,n,flagl;
//字符型變量申明
uchar code table[]=”zhi shi jing sai”;//液晶屏顯示內(nèi)容的編碼列表
uchar code tablel[l={ //數(shù)碼管顯示數(shù)字的編碼列表
Ox3f:,Ox06,Ox5b,Ox4f,
Ox66,Ox6d,Ox7d,Ox07,
Ox7f,Ox6f,Ox77,Ox7c,
Ox39,Ox5e,Ox79,Ox7l,Ox00};
uchar num=21,shijian=17,zubie;//字型變量申明
7 結(jié)束語(yǔ)
在電腦上提前安裝proteus仿真軟件進(jìn)行硬件設(shè)計(jì),安裝Keil編程軟件進(jìn)行程序設(shè)計(jì),仿真后再下載確認(rèn)。本三路搶答系統(tǒng)雖然所用外圍設(shè)備不多,但卻是常用部件的綜合應(yīng)用,讓學(xué)員對(duì)功能設(shè)計(jì)的方法和思路有所了解,同時(shí)可實(shí)際應(yīng)用到普通競(jìng)賽用具中,在提升學(xué)習(xí)興趣的同時(shí)增強(qiáng)應(yīng)用,拓寬運(yùn)用知識(shí)創(chuàng)新創(chuàng)業(yè)的思路。
參考文獻(xiàn):
[1]薛春玲,蔡曉艷.基于AT89S52單片機(jī)的8路搶答器的設(shè)計(jì)[J].光學(xué)儀器,2014,36(2):156-160.
[2]文明月.基于AT89S52單片機(jī)的搶答器設(shè)計(jì)與實(shí)現(xiàn)[J].科技創(chuàng)新導(dǎo)報(bào),2009,6(28):35.
[3]宋春華,劉江濤,王貴恩。裴小英.基于單片機(jī)控制的數(shù)字搶答器[J].河南機(jī)電高等??茖W(xué)校學(xué)報(bào),2005,13(5):28-29.
【通聯(lián)編輯:李雅琪】