APP下载

基于51单片机的简易三路抢答系统设计

2020-12-28黄永东

电脑知识与技术 2020年33期
关键词:抢答器液晶显示数码管

黄永东

摘要:抢答器在日常生活工作中使用较多,本文结合单片机的常用外围,设计一个简易的三路抢答系统,以此为例,让同学们综合开发,融合按键、数码管、1602液晶、发光二极管、蜂鸣器、定时中断等,学习单片机应用系统的设计方法。

关键字:51单片机;三路抢答系统

中图分类号:TP276 文献标识码:A

文章编号:1009-3044(2020)33-0232-02

开放科学(资源服务)标识码(OSID):

单片机的初期学习过程,各个模块的单独使用通常较为简单,但对于系统功能设计时却容易出现不知如何下手的问题。如何将1602液晶显示、数码管动态显示、独立按键识别、定时器中断使用等功能融合利用,需要进行系统设计。而抢答器是日常工作中应用较多的一种典型系统,为此,本系统采用了MCS51单片机进行三路抢答系统的设计,可实现抢答器的全部要求,同时为单片机的综合学习提供思路。

1 三路抢答系统整体要求

主持人有一个按键,可以控制抢答的开始与停止(复位),三组成员分别为A、B、C,各有一个按键进行抢答申请;当主持人允许抢答时,三组成员才能抢答,当任一组抢答成功后,另外两组则抢答无效。

2 具体设计要求

1)1602液晶显示要求:

上电后,1602液晶显示一行字符“zhi shi jing sai”;

2)数码管显示要求:

上电后,数码管不显示;当有按键按下时,则按按键的要求进行显示;

3)按键要求:

(1)S1:主持人按键:

当主持人第一次按下后,数码管的前两位显示“20”,代表抢答时间为20秒,然后按秒减法显示;后两位数码管显示“00”,直至某一组抢答成功或抢答时间结束;

当主持人第二次按下后,复位,数码管不再显示,时间也复位;

之后就反复循环;

(2) S2(A组)、S3(B组)、S4(C组)抢答申请键:

在主持人允许抢答的前提下,按下此键后,秒表停止计时,倒计时开始计时,数码管前两位显示抢答所花的时间,数码管后两位显示“叭(或02或03)”,表示第一组(或第二组或第三组)抢答成功,数码管中间两位开始“30s”倒计时,显示答题剩余时间;

4)发表二极管和蜂鸣器要求:

(1)开始抢答后,八个发光二极管均亮;

(2)有效按键按下或时间到,蜂鸣器响一声。

3 硬件设计思路

系统中主要用到的模块非常明确,涉及最小系统、发光显示、数码显示、独立按键输入、液晶显示、蜂鸣器输出等。

1)单片机最小系统:包括电源电路(VCC,CND)、时钟电路(由于设计中有用到中断,因此选择11.0592MHZ晶振)、复位电路(上电复位、按键复位)、程序存储器选择电路(EA=1);

2)发光显示:(1)直接接人发光二极管,注意限流电阻的选择。发光二极管具有单向导电性,通过SmA左右的电流即可,电流越大,其亮度越强,但若电流过大,会烧毁二极管,一般我们控制在3 - 20mA之间;(2)考虑到P1口有可能会重复使用,在发光二极管与单片机之间加入一个锁存器用以隔离。

3)数码管显示:数码管分为共阴和共阳两类,不同的类型只需关注其不同的字形碼和位选码值。本项目中,为减少单片机1/0口的使用,增加两个锁存器,一个控制段码,一个控制位选。

4)独立按键输入:本任务中,只需要用到四个按键,可直接采用独立按键,公共端接地,当按键按下时,其对应端口置0。

5) 1602液晶显示:(1)液晶1、2端为电源,15、16为背光电源,为防止直接加SV电压烧坏背光灯,在15脚串一个10欧电阻用于限流;(2)液晶3端为液晶对比度调节端,通过一个IOK欧电位器接地来调节液晶显示对比度;(3)液晶5端为读/写选择端,因为不从液晶读取任何数据,只向其写人命令和显示数据,因此此端始终选择为写状态,即低电平接地;

6)采用Proteus软件进行硬件系统设计,为保持美观,注意使用网络进行线路连接,同时设计完成后要进行电气检测,具体如下图所示:

4 硬件设计思路

此功能任务中,涉及单片机最小系统、发光显示、数码显示。

5 部分软件设计思路

1)初始化设置:

(1)1602液晶初始化、写人命令、写人数据,调用在1602液晶显示函数;就其常用的几个命令解释如下:

Write_com(Ox38);//设置16*2显示,5*7点阵,8位数据端口;

Write_com(OxOC);/设置开显示,不显示光标;

Write_com(Ox38);//写一个字符后地址指针自动加1;

Write_com(Ox38);//显示清0,数据指针清0;

(2)定时器TO(抢答的时间)、定时器T1(抢答成功后的作答时间)初始化及中断函数;

2)键盘扫描:独立按键扫描中主要涉及按键按下的识别、延时去抖动、按键释放等。

(1)首先扫描判断主持人是否按下键允许抢答,注意允许抢答和停止抢答用的同一个按键,可设置一个变化进行取反操作;

(2)在允许抢答和抢答时间到达之前,扫描判断是否有人抢答,注意任何一组抢答后其余两组都不再能抢答,参看后续程序段;

3)数码管显示:采用动态扫描显示,即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示,而实际上多位数码管是一位一位轮流显示的,只是轮流的速度非常快,人眼已经无法分辨出来。在程序设计中要特别注意动态显示过程中的“消影”处理,避免数码管出现显示混乱的现象。

(1)不允许抢答前,数码管不显示,通过控制数码管公共端电平实现;

(2)允许抢答时,数码管显示抢答剩余时间。定时器TO计时,动态显示;

(3)抢答成功后,数码管主要显示作答时间和小组组别号。作答时间由定时器T1计时,小组组别号由按键扫描函数返回。

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”;//液晶屏显示内容的编码列表

uchar code tablel[l={ //数码管显示数字的编码列表

Ox3f:,Ox06,Ox5b,Ox4f,

Ox66,Ox6d,Ox7d,Ox07,

Ox7f,Ox6f,Ox77,Ox7c,

Ox39,Ox5e,Ox79,Ox7l,Ox00};

uchar num=21,shijian=17,zubie;//字型变量申明

7 结束语

在电脑上提前安装proteus仿真软件进行硬件设计,安装Keil编程软件进行程序設计,仿真后再下载确认。本三路抢答系统虽然所用外围设备不多,但却是常用部件的综合应用,让学员对功能设计的方法和思路有所了解,同时可实际应用到普通竞赛用具中,在提升学习兴趣的同时增强应用,拓宽运用知识创新创业的思路。

参考文献:

[1]薛春玲,蔡晓艳.基于AT89S52单片机的8路抢答器的设计[J].光学仪器,2014,36(2):156-160.

[2]文明月.基于AT89S52单片机的抢答器设计与实现[J].科技创新导报,2009,6(28):35.

[3]宋春华,刘江涛,王贵恩。裴小英.基于单片机控制的数字抢答器[J].河南机电高等专科学校学报,2005,13(5):28-29.

【通联编辑:李雅琪】

猜你喜欢

抢答器液晶显示数码管
Arduino编程
MC9S08FL16单片机数码管静态显示分析
单片机控制的四位数码管动态显示编程
基于Qt的数码管数字编码系统的设计与实现
4路抢答器的设计与研发
基于STC12C5A60S2单片机的6路抢答器设计
122×32 点阵液晶显示汉字原理实验
多路竞赛抢答器电路的仿真设计
界面致稳型柔性胆甾相液晶显示器件的制备与性能
从马吕斯定律到液晶显示原理