一.硬件方案
本设计 利用STC89C52单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。用开关做键盘输出,扬声器发生提示。同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间为60秒,倒计时为5秒时蜂鸣器报警,选手抢答成功后显示选手编号以及剩余时间。
主要由51单片机+最小系统+数码管+蜂鸣器+按键模块;如图:
二.设计功能
(1)采用4位数码管设计;下排按键一一对应八位选手。
(2)竖排三个按键,从上到下依次为:开始、暂停、复位。
(3)操作流程:上电后数码管显示“----”当主持人按下“开始”键后,60秒,开始计时,此时,八位选手就可以抢答,如有紧急情况需要停止的话,主持人按“暂停”键就可以,如果有选手抢答成功,数码管显示“1 25”,1表示是1号选手,25表示剩余还25秒,小于5秒时,蜂鸣器响,提示时间快要结束,当为0秒时,此题结束,表示没有任何选手抢答成功,主持人按“复位”键后从新开始。
(4)可以设定时间,在上电后,数码管显示“----”,此时按下1号选手对应的按键,进入时间设定状态,2号选手对应的按键为时间加,3号选手对应的按键为时间减,设定完成后再按1号选手键退出。
三.设计原理图
(1)原理图主要采用AD软件进行设计,如图:
(2)Protues仿真图如下:
(3)PCB图如下:
四.软件设计
主程序源码
void main()
{
int djs1=60;
Timer0_init(); //初始化定时器中断
spk=1; //蜂鸣器不响
djs=60; //倒计时赋值
while(1)
{
LOOP1: djs=djs1;
djsxs22(); //LOOP1是标号,显示 - --
if(key1==0) //在定时器运行状态下,key1==0 则说明1号选手按下按键
{
delayms(3);
if(key1==0)
{
while(!key1); //去除按键抖动后,重新在判断,是否确实按下
djs=60;
while(1)
{
TR0=0; //定时器停止
djsxs();
if(key2==0) //复位按下按下
{
delayms(8); //去除抖动
if(key2==0) //再次判断是否按下复位按键
{
do
{
while(!key2); //如果按下复位键,则回到- --状态
delayms(5);
}
while(key2!=1);
djs++;
djs1=djs;
}
}
if(key3==0) //复位按下按下
{
delayms(8); //去除抖动
if(key3==0) //再次判断是否按下复位按键
{
do
{
while(!key3); //如果按下复位键,则回到- --状态
delayms(5);
}
while(key3!=1);
djs--;
djs1=djs;
}
}
if(key1==0) //复位按下按下
{
delayms(3); //去除抖动
if(key1==0) //再次判断是否按下复位按键
{
while(!key1); //如果按下复位键,则回到- --状态
goto LOOP1; //goto语句,回到loop1表号处
}
}
}
}
}
if(keyks==0)
{
//spk=0;
delayms(3); //去除按键抖动
if(keyks==0)
{
while(!keyks); //以上表示按下开始按键
//spk=1; //蜂鸣器不响
TR0=1; //启动定时器 开始倒计时
while(1)
{
djsxs();
if(keytz==0)
{
delayms(3); //此处表示出去抖动, 以后不一一标出
if(keytz==0)
{
while(!keytz); //以上表示按下停止按键后
{
TR0=0; //定时器停止
flag=0;//
spk=1;
}
}
}
if(keyks==0)
{
//spk=0;
delayms(3);
if(keyks==0)
{
while(!keyks); //以上表示按下清楚按键后
//spk=1; //蜂鸣器不响
TR0=1; //定时器启动
}
}
.......
}
}
}
}
}
}
上一篇:基于51单片机的脉搏体温监测仪
下一篇:基于51单片机的简易计算器设计
推荐阅读最新更新时间:2024-11-17 03:15
推荐帖子
- 芯灵思SinA33开发板配套的USB转TTL模块的驱动安装。
- PL2303模块接入PC机后显示查找不到驱动,并且网盘中只有XP和win7的驱动,安装win7的驱动后,依旧查找不到COM口,因为PC机系统为win10系统,所以需要在网上下载win10的驱动,安装后解决问题。Win10驱动芯灵思SinA33开发板配套的USB转TTL模块的驱动安装。
- babyking 嵌入式系统
- 关于sql server ce 2.0的问题
- 1.在PC机上只能用代码来创建SQL CE 2.0数据库吗? 2.我用VS(C#)来开发的,我根据微软的一个例子来用代码创建数据库,运行没问题,但是却找不到创建的数据库的库文件是怎么回事?3.在PC机到底需要安装CE 2.0吗,看到网上好多人说PC机上不能安装不了CE2.0的啊.如果可以 我安装了之后怎么就只有一个帮助文档.不能想SQL SERVER 2000那样在企业管理器里面创建呢.关于sql server ce 2.0的问题1好像是2少什么就去找喽,网上都有的3,不能
- kangtc86 嵌入式系统
- 请版主解答
- 我欲采用你们的STM32F103ZCT6做产品,想请问一下价格和供货周期。如果采用我们每月至少有上K的量。现在听说你们的产品缺货严重是这样吗?这种144脚LQFP的芯片不同FLASH大小的价格差距多少?我的邮箱xiaoguohui@yqsh.com,望回复。谢谢!请版主解答也望其他知道的DX们说一下,谢谢!用量都是K级的啊打算做什么产品呢做消费终
- jerohands stm32/stm8
- Muscle SpikerBox电路原理图求分析
- 上面的是一个放大电路,我的算法如下,各位大侠给看看有没有什么问题我比较困惑的是,一级放大为什么是2.5×,而不是4×;二级计算时可以将电容当作隔直流电容,计算是忽略么?80倍增益是怎么算的?MuscleSpikerBox电路原理图求分析
- cosmos1 模拟电子
- 【得捷电子Follow me第4期】基础任务二:建立TCP服务器,发送数据并显示,抓包数据
- 【Followme第4期任务】基础任务二:主控板建立TCPIP或UDP服务器,局域网PC使用TCPIP或UDP客户端进行连接并发送数据,主控板接收到数据后,送液晶屏显示(没有则通过串口打印显示);通过抓包软件抓取交互报文,展示并分析。(TCP和UDP二选一,或者全都操作)由于TCP个人感觉用的更多一些,这里选择使用TCP完成作业。1.建立TCP服务器关于TCP的说明可以参考WIZnet的官方文章说明:五、W5100S/W5500+RP2040之MicroPyth
- 电子烂人 DigiKey得捷技术专区
- 【Follow me第二季第2期】+项目总结
- 文章中各任务均由图片中物料实现物料清单: 厂商 厂商料号 名称 得捷链接 Arduino ABX00087 ArduinoUNOR4WiFi https://www.digikey.cn/zh/products/detail/arduino/ABX00087/20371539?s=N4IgTCBcDaIIICEAaAGNAOA7AApAXQF8g Adafruit 4991 A
- superw DigiKey得捷技术专区
设计资源 培训 开发板 精华推荐
- CY4541,基于 CCG4 双端口 Type-C 供电 (PD) 控制器的 EZ-PD CCG4 评估套件
- HV823,用于个人数字助理的 1 灯通用灯驱动器
- 3-LED 手电筒通用 LED 驱动器
- V-EVAL-1,用于开发基于 VNC1L MCU 器件的嵌入式 USB 主机系统的评估套件
- AM2F-0524SH30Z 24V 2 瓦 DC/DC 转换器的典型应用
- 物联网智能家居方案-基于Nucleo-STM32L073&机智云.zip
- LT1634AIS8-1.25 单节锂离子电池监控电路的典型应用 (IQ = 20uA)
- EFM32-G8XX-DK,EFM32 Gecko 开发套件,带 EFM32G890F128 MCU 插件板,带 160 段 LCD
- MC-146,LPCxxxx微控制器32.768kHz晶振单元的振荡电路及选型指南
- LTM4601,使用高度集成的 DC/DC 模块稳压器系统为基于 FPGA 的复杂系统供电