基于单片机的八路抢答器的设计

您所在的位置:网站首页 参加比赛选手的状态 基于单片机的八路抢答器的设计

基于单片机的八路抢答器的设计

2024-07-09 12:46| 来源: 网络整理| 查看: 265

1.设计要求:

1.以单片机为核心,设计一个八位竞赛抢答器:同时供八名选手或八个代表队比赛,分别用八个按钮S0~S7表示。

2.设置一个系统清除和抢答控制开关S,开关由主持人控制。

3.抢答器具有锁存与显示功能。即选手按按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。

4.抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。

5.当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间为0.5s左右。

6.参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。

7.如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。

2.流程图:

3.Protues原理图:

      效果图:

4.单片机代码:

#include #define u8 unsigned char #define u16 unsigned int sbit highone = P3^0; //倒计时数码管高标志位 sbit lowone = P3^1; //倒计时数码管低标志位 sbit hightwo = P3^2; //选手编号数码管高标志位 sbit lowtwo = P3^3; //选手编号数码管低标志位 sbit set = P3^5; //清除/设置时间按钮 sbit start = P3^6; //开始按钮 sbit voice = P3^7; //蜂鸣器输出位 sbit key1=P1^0; //选手1号按钮 sbit key2=P1^1; //选手2号按钮 sbit key3=P1^2; //选手3号按钮 sbit key4=P1^3; //选手4号按钮 sbit key5=P1^4; //选手5号按钮 sbit key6=P1^5; //选手6号按钮 sbit key7=P1^6; //选手7号按钮 sbit key8=P1^7; //选手8号按钮 u8 code number[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //共阴极 u8 xianshi[]={0x3f,0x3f,0x3f,0x3f}; u8 Tpointer=30; //时间指针 u8 Allpointer=0; //总指针 u8 tp=30; //时间副指针 u16 mm = 0; //寄存抢答选手号 u8 done = 0; //计时完成标志和抢答完成标志 u16 i; u16 q; u16 w; void delay(u16 h) //延时函数 { while(h--); } void shujuchuli() //数据处理函数 { //处理时间显示数据和选手号显示数据 xianshi[0]=number[tp/10]; //整除10作为倒计时十位 xianshi[1]=number[tp%10]; //取余数运算作为倒计时个位 xianshi[2]=0x3f; xianshi[3]=number[mm]; //作为选手号个位 } void xuanze() //选择函数函数 { //选择标志位接通对应的数码管 u8 k; for(k=0;k


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3