单片机设计_8路抢答器(AT89C51)

news/2024/11/24 12:37:43/

想要更多项目私wo!!!

一、电路设计

        此电路由AT89C51最小系统、四位数码管、蜂鸣器电路和按键模块组成。

运行原理:

        该抢答器电路可同时进行八路优先抢答。按键按下后,蜂鸣器发声,同时数码管
显示优先抢答者的号码,抢答成功后,再按按键,显示不会改变,除非按主持人键。
复位后,显示清零,可继续抢答。

二、运行效果图

 

三、部分代码

#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int//按键扫描,判断哪个人抢答
void key()
{uint n, flag = 1;n=2200;	display(n);keep=1;if(key2==0){delay(5);if(key2==0){while(1){n=2202;display(n);if(flag){keep=0;			 //开启蜂鸣器delay(80);keep=1;			// 关闭蜂鸣器delay(80);flag = 0;}if(key9==0){delay(5);if(key9==0){keep=1;n=2200;	display(n);while(1)return;}while(!key9);delay(5);while(1);    }} }	 while(!key2);delay(5);}	  if(key3==0){delay(5);if(key3==0){while(1){n=2203;display(n);if(flag){keep=0;			 //开启蜂鸣器delay(80);keep=1;			// 关闭蜂鸣器delay(80);flag = 0;}if(key9==0){delay(5);if(key9==0){keep=1;n=2200;	display(n);while(1)return;}while(!key9);delay(5);while(1);    }}}					while(!key3);delay(5);	 }if(key4==0){delay(5);if(key4==0){while(1){n=2204;display(n);if(flag){keep=0;			 //开启蜂鸣器delay(80);keep=1;			// 关闭蜂鸣器delay(80);flag = 0;}if(key9==0){delay(5);if(key9==0){keep=1;n=2200;	display(n);while(1)return;}while(!key9);delay(5);while(1);    }} }					while(!key4);delay(5);	 }		if(key5==0){delay(5);if(key5==0){while(1){n=2205;display(n);if(flag){keep=0;			 //开启蜂鸣器delay(80);keep=1;			// 关闭蜂鸣器delay(80);flag = 0;}if(key9==0){delay(5);if(key9==0){keep=1;n=2200;	display(n);while(1)return;}while(!key9);delay(5);while(1);    }}}					while(!key5);delay(5);	 }if(key6==0){delay(5);if(key6==0){while(1){n=2206;display(n);if(flag){keep=0;			 //开启蜂鸣器delay(80);keep=1;			// 关闭蜂鸣器delay(80);flag = 0;}if(key9==0){delay(5);if(key9==0){keep=1;n=2200;	display(n);while(1)return;}while(!key9);delay(5);while(1);    }}}					while(!key6);delay(5); }	if(key7==0){delay(5);if(key7==0){while(1){n=2207;display(n);if(flag){keep=0;			 //开启蜂鸣器delay(80);keep=1;			// 关闭蜂鸣器delay(80);flag = 0;}if(key9==0){delay(5);if(key9==0){keep=1;n=2200;	display(n);while(1)return;}while(!key9);delay(5);while(1);    }}}					while(!key7);delay(5);	 }	if(key8==0){delay(5);if(key8==0){while(1){n=2208;display(n);if(flag){keep=0;			 //开启蜂鸣器delay(80);keep=1;			// 关闭蜂鸣器delay(80);flag = 0;}if(key9==0){delay(5);if(key9==0){keep=1;n=2200;	display(n);while(1)return;}while(!key9);delay(5);while(1);    }}}					while(!key8);delay(5);	 }	
}//  主函数
void main()
{while(1){key();  // 判断按键}
}  


http://www.ppmy.cn/news/703562.html

相关文章

89C51单片机与DAC0832

DAC0832的介绍DAC0832与51单片机使用实例实例proteus仿真实例代码 1.DAC0832的介绍&#xff1a; 主要特性&#xff1a;(1) 分辨率:8位 (2) 电流稳定时间1us 芯片引脚&#xff1a; : 片选 ILE&#xff1a;输入寄存器允许&#xff0c;高电平有效 &#xff1a;写信号,当,,ILE同…

VS上配置docker步骤记录

1:VS里安装Remote Development 2:运行 sudo usermod -aG docker $USER。#将当前用户添加到docker用户组中 sudo newgrp docker#更新,运行这个切到了root用户,获取权限 docker ps #列出正在运行的容器。它会显示容器的相关信息&#xff0c;如容器ID、镜像名称、创建时间、状态…

MySQL - Delete 和 Truncate 的区别

1. DELETE 命令 语法 &#xff1a; delete from 表名 [where 条件] -- 删除数据 (避免这样写, 会全部删除) DELETE FROM student;-- 删除指定数据 DELETE FROM student WHERE id 1; 2. TRUNCATE 命令 作用 : 完全清空一个数据库表, 表的结构和索引约束不会变. -- 清空 stu…

sftp上传文件失败解决

同事求助&#xff0c;说他用sftp上传文件失败。 首先想到的是权限问题。于是登陆服务器&#xff0c;cd到上传目录&#xff0c;ls -l看上去没问题。 测试一下吧&#xff0c;用我自己的帐号sftp登陆&#xff0c;随便传一个文件&#xff0c;成功了。 哈&#xff0c;问题范围缩减…

SFTP向服务器上传文件失败问题的解决办法

FileZilla和XShell都可以通过FTP传输文件。 FileZilla连接上服务器后&#xff0c;可以下载文件&#xff0c;但是不能上传&#xff0c;传输会有提示&#xff1a;“无法启动传输”。 这个问题一般情况有如下三个原因&#xff1a; 1、文件夹权限不够&#xff0c;修改之&#xff…

网易邮箱发送失败的原因

1.设置故障&#xff0c;再网易的web界面开启pop3、imap协议即可 一般出现再刚下载还未设置 2.免费信箱故障 解决方法&#xff1a;给自己发邮件&#xff0c;如果没有受到&#xff0c;则免费信箱有问题&#xff0c;去手机店处理即可 3.对方线路问题 测试方法&#xff1a;让一个朋…

smtp 发送邮件(qq邮箱)失败

项目用的框架是 ThinkPHP&#xff0c;在本地WAMP环境下使用了QQ邮箱的 smtp 邮件系统 本地测试成功的情况下&#xff0c;部署到服务器上无法发送邮件&#xff0c;报错&#xff1a;500 解决方法 最终发现是端口号的原因&#xff0c;QQ邮箱的 smtp 服务端口号为 465 或 587&#…

关于发送邮件时上传附件的问题

最近在做邮件列表的项目时发现一个问题&#xff0c;虽然不是什么大问题&#xff0c;但是稍不注意就会出现问题&#xff1a;因为我做的是B/S和C/S得两个版本&#xff0c;客户端程序使用Jmail组件来发送邮件&#xff0c;直接发送&#xff0c;不写入数据库存档&#xff0c;当时jmM…