AT89C51单片机的抢答器的设计(2位一体共阳)
1.设计目的作用
1、掌握51单片机最小系统的设计;
2、掌握硬件电路的设计方法;
3、掌握C51的编程方式。
2.设计要求
基于AT89C51单片机设计制作一个抢答器,具体要求如下:
设计一个智力竞赛抢答器,可同时共8名选手参加比赛,编号为1、2、3、4、5、6、7、8,各用一个按键。
用一个按键作为主持人总开关,用来控制系统的清零和抢答的开始。
抢答器开始后,数码管开始10秒倒计时,若有选手按动抢答按钮,在LED数码管上显示选手的编号,同时灯亮且伴随声音提示;倒计时完成后,选手不能再抢答;有人抢答成功后,要禁止其他选手抢答,同时开始显示60秒回答时间倒计时提示;最先抢答选手的编号一直保留到主持人将系统清零。
仿真图(Proteus 8.6版本)
源代码:
#include<at89x51.h>
sbit zkey=P3^5; // 主持人按键
sbit zkey1=P3^6;
sbit beep=P3^7; // 蜂鸣器
sbit led=P3^4; //指示灯
sbit shiwei=P3^0;
sbit gewei=P3^1;
sbit ge=P3^3; //数码管的位选
unsigned char code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90};//共阳数码管段选值
unsigned char people; // 抢答结果
unsigned char counter; // counter每100,minite加1
unsigned char second; // 秒表计数值
unsigned char time1; // 10秒倒计时
unsigned char time2; // 60秒倒计时
void delay(unsigned int z) //延时函数
{
unsigned i,j;
for(i=z;i>0;i--)
for(j=120;j>0;j--);
}
void time_display(unsigned char x)//函数功能:时间显示
{
unsigned char shi,ge;
shi=x/10;
ge=x%10;
shiwei=1;gewei=0;
P0=seg[ge];
delay(20);
shiwei=0;gewei=1;
P0=seg[shi];
delay(20);
shiwei=0;gewei=0;delay(20);
}
void xuanshou_display(unsigned char y)//函数功能:选手编号显示
{
shiwei=1;gewei=0;
P2=seg[y];
}
unsigned char keyscan() //键盘扫描函数
{
unsigned char keyvalue,temp;
keyvalue=0;
P1=0xff; //P1口8位置1,作输入
temp=P1; //读P1口,送入temp中
delay(10); //消抖
if(~(P1&temp))
{
switch(temp)
{
case 0xfe: keyvalue=1; break;
case 0xfd: keyvalue=2; break;
case 0xfb: keyvalue=3; break;
case 0xf7: keyvalue=4; break;
case 0xef: keyvalue=5; break;
case 0xdf: keyvalue=6; break;
case 0xbf: keyvalue=7; break;
case 0x7f: keyvalue=8; break;
default: keyvalue=0; break;
}
}
return keyvalue;
}
void timer_init() //定时器T0初始化
{
EA=1;
ET0=1;
TMOD=0x01; //定时器T0方式1定时
TH0=0xd8; //装入定时器定时常数,设定10ms中断一次
TL0=0xef;
}
void init() //初始化函数
{
people=0; // 抢答结果
counter=0; // counter每100,minite加1
second=0; // 秒表计数值
time1=10; // 10秒倒计时
time2=60; // 60秒倒计时
P0=seg[0];
P2=seg[0];
}
void main() //主函数
{
init();
timer_init();
led=0;
while(1)
{
if(zkey==0) //总开关第一次闭合
{
delay(10); //消抖
if(zkey==0) //总开关第一次闭合
{
second=time1;
while(second)
{
TR0=1;
time_display(second); //十秒倒计时显示
people=keyscan(); //将抢答结果送入people
while(people!= 0) //判断有按键按下
{
TR0=0; //停止10秒倒计时
led=1; //灯亮
xuanshou_display(people); //显示对应选手编号
beep=0; //蜂鸣器响
delay(2000);
beep=1;
led=0;
second=time2; //60秒倒计时
while(second)
{
TR0=1;
time_display(second);
if(zkey1==0) //总开关第二次闭合
{
delay(10); //消抖
if(zkey1==0) //总开关第二次闭合
init();
}
}
}
}
TR0=0;
people=0; //抢答结果清零,终止循环
}
}
}
}
void timer0() interrupt 1 //定时器T0中断函数
{
if(counter<100)
{
counter++;
}
else
{
counter=0;
second=second-1;
}
TH0=0xd8; //重新装载
TL0=0xef;
TR0=1;
}
元件清单
元件名称 |
型号 |
单位 |
数量 |
51最小开发板 |
STC89C52 |
1 |
|
AC/DC电源 |
每班5个 |
||
万用板 |
9X15cm(3连孔) |
块 |
1 |
按键开关 |
6*6*5MM/直插/4脚 |
个 |
12 |
单排插针 |
1*40P、2.54mm间距 |
根 |
1 |
电阻 |
10k/1/8W |
个 |
13 |
杜邦线 |
母对母/1P对1P/20CM/40根一排 |
排 |
半排 |
红色LED |
ø5 |
个 |
1 |
排母 |
1*16、2.54mm间距 |
个 |
1 |
排阻 |
4.7K(9脚) |
个 |
1 |
三极管 |
9015 |
个 |
3 |
数码管 |
2位一体共阳 |
个 |
2 |
有源蜂鸣器 |
有源/5V/电磁式/ YHE12-05 |
个 |
1 |
AT89C51单片机的抢答器的设计(2位一体共阳)相关推荐
- 基于AT89C51单片机的抢答器的设计(数码管:四位一体共阳)
设计要求 基于AT89C51单片机设计制作一个抢答器,具体要求如下: 设计一个智力竞赛抢答器,可同时共8名选手参加比赛,编号为1.2.3.4.5.6.7.8,各用一个按键. 用一个按键作为主持人总开关 ...
- 基于AT89C51单片机的抢答器的设计
基于AT89C51单片机设计制作一个抢答器,具体要求如下: 设计一个智力竞赛抢答器,可同时共8名选手参加比赛,编号为1.2.3.4.5.6.7.8,各用一个按键. 用一个按键作为主持人总开关,用来控制 ...
- 51单片机八位抢答器c语言设计,基于51单片机八路抢答器的设计
基于51单片机八路抢答器的设计 毕业设计(论文)题 目:基于 51 单片机八路抢答器的设计 系 部: 专 业: 学 号: 学生姓名: 指导教师姓名: 指导教师职称: 2013 年 xx 月 xx 日X ...
- 51单片机抢答器c语言代码,使用51单片机实现抢答器的设计资料和代码说明
在知识比赛中, 特别是做抢答题目的时候, 在抢答过程中,为了知道哪一组或哪一位选手先答题,必须要设计一个系统来完成这个任务.如果在抢答中,靠视觉是很难判断出哪组先答题.利用单片机系统来设计抢答器,使以 ...
- c语言六位抢答器课程设计,51单片机八路抢答器课程设计
;说明:本人的这个设计改进后解决了前一个版本中1号抢答优先的问题,并增加了锦囊的设置,当参赛选手在回答问题时要求使用锦囊,则主持人按下抢答开始键,计时重新开始. ;八路抢答器电路请看下图是用ps仿真的 ...
- 基于51单片机八路抢答器课程设计(含proteus仿真图及代码)
一.设计要求: 1.可满足8个选手的抢答 2.具有主持者控制开关,用来控制系统清零和抢答开始 3.抢答器具有数据锁存功能.显示功能和声音提示功能 4.抢答开始后,若有选手按动抢答器按钮,编号立即锁存, ...
- 单片机八路抢答器计设计
详细代码讨论加我QQ:1271370903 一.设计任务与要求 一.题目:8路比赛抢答器 二.基本要求: 利用8051单片机中断系统,制作一个有8个按键的比赛抢答器.在有人按键时进行对应选手显示. 三 ...
- 抢答器php源码,单片机四路抢答器课程设计报告 含完整源码
学院(部) 专 业 班 级 指导教师 题 目 四路抢答器 组 员 目录 设计要求2 方案讨论2 系统软件仿真3 系统硬件实现7 心得体会10 6.仿真代码11 附录17 ...
- 单片机四路抢答器课程C语言设计,四路抢答器单片机课程设计.doc
渝州科技职业学院 单片机四路抢答器课程设计 院 系: 电子信息工程 专业班级: 11级电管本2班 学生姓名: 刘学飞 学 号: 1102120205 指导教师姓名: 何健 指导教师职称: 讲师 目录 ...
最新文章
- css 加随机数 引用_在CSS中生成随机数
- Android自定义控件:动画类---逐帧动画AnimationDrawable
- [CentOS Python系列] 三.阿里云MySQL数据库开启配置及SQL语句基础知识
- 外网利用POP3,SMTP访问内网Exchange!!!
- jQuery 遍历 each()方法
- 图论解决复杂路口红绿灯安排,python语言实现
- MySQL实战—更新过程
- ad域用户和计算机搭建,Windows Server 6分钟搭建AD域
- element Table表格隐藏列
- Reflector7.5.2.1的Bug
- 挖地雷_1996年分区联赛提高组之三_ssl1071_dfs
- 创建Web站点的欢迎页面
- 架构师必备!看我如何一步一步攻克面试官,详细解说
- html类选择器使用在什么场景,你需掌握的CSS知识都在这了(长文建议收藏,文末有福利)...
- 云服务器虚拟手机版,云服务器虚拟手机
- 雅西高速交警列16处危险路段 司机需小心行驶
- C语言学习—杨辉三角的实现
- Omnipeek空口抓包(4):抓取路由器下的无线网络包
- 军工企业信息化与信息安全概要
- 从滴滴到AirBnB,交易平台战争的秘密
热门文章
- (附源码)springboot工单管理系统 毕业设计 964158
- 高级信息系统项目管理师十大领域
- 帝云CMS-免费可商用的万能PHP建站程序
- matlab保存数据用什么指令_MATLAB文件操作及保存文件save load fopen | 学步园
- 年终盘点丨2020边缘计算大事记
- 【洛谷】【博弈搜索】P4363 [九省联考2018]一双木棋chess
- html 做笔记,HTML笔记(一)
- 吸烟者问题(有例题!!!)
- 手游竞争白热化 虎牙直播率先抢占手游新“蓝海”
- sync.map原理解析