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