基于单片机的八路抢答器的设计与实现_基于单片机的三路抢答器设计

基于单片机的八路抢答器的设计与实现_基于单片机的三路抢答器设计1.设计要求:1.以单片机为核心,设计一个八位竞赛抢答器:同时供八名选手或八个代表队比赛,分别用八个按钮S0~S7表示。2.设置一个系统清除和抢答控制开关S,开关由主持人控制。3.抢答器具有锁存与显示功能。即选手按按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。4.抢答器具有定时抢答功能,且一次抢答的时间由主持人设定(如30秒)。5.当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间为0.5s左右。6.参赛选手在设定的时间

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

1.设计要求:

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

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

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

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

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

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

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

2.流程图:

基于单片机的八路抢答器的设计与实现_基于单片机的三路抢答器设计

3.Protues原理图:

基于单片机的八路抢答器的设计与实现_基于单片机的三路抢答器设计

      效果图:

基于单片机的八路抢答器的设计与实现_基于单片机的三路抢答器设计

基于单片机的八路抢答器的设计与实现_基于单片机的三路抢答器设计

基于单片机的八路抢答器的设计与实现_基于单片机的三路抢答器设计

4.单片机代码:

#include<reg51.h>
#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<4;k++)
	{
		switch(k)
		{
			case(0):						//显示倒计时数码管低位
					highone=0;lowone=1;hightwo=0;lowtwo=0;P0=xianshi[k];delay(10);break;        
			case(1):						//显示倒计时数码管高位
					highone=1;lowone=0;hightwo=0;lowtwo=0;P0=xianshi[k];delay(10);break;	
			case(2):						//显示选手编号数码管低位
					highone=0;lowone=0;hightwo=0;lowtwo=1;P2=xianshi[k];delay(10);break;	
			case(3):						//显示选手编号数码管高位
					highone=0;lowone=0;hightwo=1;lowtwo=0;P2=xianshi[k];delay(10);break;	
		}
		P0=0x00;	                        //消影
		P2=0x00;	                        //消影
	}
}

void checksetkey2()		                //检测设置时间按钮函数,用于调整抢答时间
{
	if(set==0)		  
	{	
		delay(1000);   	                //消抖
		if(set==0)	 
		{	
			if(Tpointer<60)
			{
				Tpointer= Tpointer+1;
				tp= tp+1;
			}
			else
			{
			 	Tpointer=0;
				tp=0;
			}			
		}		
		while(!set)
		{
			xuanze();	 
		}
	}		
}
代码完整版请转:https://download.csdn.net/download/weixin_47675608/74047012

由于篇幅有限相应的代码和仿真图已经上传(包括程序和课程设计报告),有需要的自取:https://download.csdn.net/download/weixin_47675608/74047012

压缩包内容包括(Protues仿真,单片机程序和单片机课程设计报告)

基于单片机的八路抢答器的设计与实现_基于单片机的三路抢答器设计

课程设计报告目录

基于单片机的八路抢答器的设计与实现_基于单片机的三路抢答器设计

对您有帮助的话,请点赞评论收藏转发关注您的鼓励才是作者创作的动力,求打赏

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/184310.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 集成框架 javaweb开发平台ssmy_m(生成代码) java struts2 mybatis spring maven jquery

    集成框架 javaweb开发平台ssmy_m(生成代码) java struts2 mybatis spring maven jquery

    2021年12月17日
    38
  • CentOS 安装 semanage 命令

    CentOS 安装 semanage 命令

    2021年10月18日
    39
  • ResNet 18 的结构解读「建议收藏」

    ResNet 18 的结构解读「建议收藏」现在很多网络结构都是一个命名+数字,比如(ResNet18),数字代表的是网络的深度,也就是说ResNet18网络就是18层的吗?其实这里的18指定的是带有权重的18层,包括卷积层和全连接层,不包括池化层和BN层。下面先贴出ResNet论文中给出的结构列表。对Pytorch中ResNet18网络的源码分析(这里),我画出了大致的网络结构图。可以看出,数字18=17个…

    2022年5月26日
    42
  • fedora14安装教程_fedora安装中文

    fedora14安装教程_fedora安装中文 Dropbox是非常好用到文件备份与同步工具,而且已经从以前的只支持Windows到现在的多系统支持,但是在Fedora下Dropbox只提供对Fedora10的RPM安装包,这让使用最新版本的Fedora的人来说是非常不爽的。今天我们就通过下载Dropbox的源码在Fedora12上通过编译安装来使用。#1首先在Dropbox官方网站上下载程序的源码。源码下载页

    2022年9月20日
    4
  • XPS文件转换为PDF不再愁!全新XPS/EPS文档处理神器Aspose.Page来啦!

    XPS文件转换为PDF不再愁!全新XPS/EPS文档处理神器Aspose.Page来啦!近月,针对Aspose.XPS和Aspose.EPS做了一些改动,将其合并成Aspose.Page,同样可以使用现有许可证访问这两种产品的所有功能。Aspose.Page(点击下载)是集成On-PremiseAPI,以.NET和Java应用程序中创建,操作或转换XPS,EPS和PS文件。或使用免费应用程序即时查看或转换文件。功能亮点Aspose.Page允许文档转换。例如,您可以将XPS…

    2022年5月4日
    72
  • 运算放大器工作原理

    运算放大器工作原理运算放大器工作原理作者:何富和时间:2015-03-22来源:电子产品世界  运算放大器基本上可以算得上是模拟电路的基本需要了解的电路之一,而要想更好用好运放,透彻地了解运算放大器工作原理是无可避免,但是运放攻略太多,那不妨来试试这篇用电路图作为主线的文章来带你领略运算放大器的工作原理吧。本文引用地址:http://www.eepw.com.cn/article/271351.htm1.运算放

    2022年4月28日
    52

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号