基于51单片机的八路抢答器Proteus仿真设计
仿真图proteus 8.6
程序编译器:keil 4/keil 5
编程语言:C语言
涉及知识点:按键扫描,定时器,数码管,蜂鸣器。
出售仿真图和源码。

以单片机为核心,设计一个8位竞赛抢答器:同时供8名选手或8个代表队比赛,分别用8个按钮S0~S7表示。
设置一个系统清除和抢答控制开关S,开关由主持人控制。
抢答器具有锁存与显示功能。即选手按按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。
抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。
抢答器具有防止抢答功能,如果有选手在主持人按下 “开始”键前抢答,会显示抢答选手的编号,同时结束此次抢答。
当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间为0.5s左右。
参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。
如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。

显示函数:
/*------------------------------------------------ 显示函数,用于动态扫描数码管 输入参数
FirstBit 表示需要显示的第一位,如赋值2表示从第三个数码管开始显示 如输入0表示从第一个显示。
Num表示需要显示的位数,如需要显示99两位数值则该值输入2
------------------------------------------------*/ void Display(unsigned char
FirstBit,unsigned char Num) { unsigned char i; for(i=0;i<Num;i++) { DataPort=0;
//清空数据,防止有交替重影 DUAN=1; //段锁存 DUAN=0; DataPort=dofly_WeiMa[i+FirstBit]; //取位码
WEI=1; //位锁存 WEI=0; DataPort=TempData[i]; //取显示数据,段码 DUAN=1; //段锁存 DUAN=0;
DelayMs(2); // 扫描间隙延时,时间太长会闪烁,太短会造成重影 } }
中断处理
void restart() interrupt 0//按键中断处理函数 新一轮 { m = 0; num = 0; TR0 = 0; flag = 0;
time= 20; TempData[0] = 0; TempData[1] = 0; TempData[2] = 0; TempData[3] = 0; }

需要源码和仿真可私聊 QQ2142686503

技术
下载桌面版
GitHub
百度网盘(提取码:draw)
Gitee
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:[email protected]
QQ群:766591547
关注微信