16路抢答器(带电路图和程序)
更新时间:2024-06-02 08:41:01 阅读量: 综合文库 文档下载
单片机课程设计
题目:十六路抢答器
学 院: 电 气 学 院
学生姓名: 学生学号: 指导老师:
摘 要
抢答器是一种应用非常广泛的设备,无论是在学校、工厂、军队还是益智性电 视节目都会举办各种各样的智力竞赛, 都会用到智力抢答器。目前市场上已有各 种各样的智力竞赛抢答器, 但绝大多数是早期设计的, 以模拟电路、数字电路或 者模拟电路与数字电路相结合的产品。这部分抢答器已相当成熟, 但功能越多的 电路相对来说就越复杂, 且成本偏高, 故障高, 显示方式简单( 有的甚至没有显 示电路) , 无法判断提前抢按按钮的行为, 不便于电路升级换代。近年来随着单 片机的应用不断深入,基于单片机控制的抢答器的设计越来越被人们广泛的接受, C51 语言的成熟和单片机本身的汇编语言的融合即混合编程使得它比一般的汇编 语言有更好的可读性。 本次设计中将采用AT89S51单片机为主控核心,在设有16个抢答键的抢答电路 模块、控制电路模块和LED显示电路模块的共同作用下,可供16人同时抢答。主持 人按下开始按钮后,哪一个先抢答,则在数码管上显示选手编号,同时给出声音 提示并封锁输入,其他选手再抢答则无效。具有定时抢答功能,抢答时间可由主持 人设定。在设定时间内抢答有效,定时器停止工作。定时时间已到,无人抢答,本次 抢答无效。
关键词: 关键词:抢答器智力;单片机; 抢答器;数码显示
一、课题研究的主要内容
在抢答未开始时任何抢答均无效,抢答开始可显示最先抢答代表
队的编号, 同时给出声光提示,并封锁输入的数据,在系统清零前禁止其他选手抢答。具有定 时抢答功能,抢答时间可由主持人设定。 在设定时间内抢答有效,定时器停止工作, 定时时间已到,无人抢答,本次抢答无效,其主要技术参数如下:
(1)可同时供16 个代表队参加比赛; (2)给节目主持人一个控制开关,用来控制系统清零和抢答开始; (3)能随时更改抢答时间; (4)有数码显示功能。
二、硬件电路设计 2.1系统框图
AT89S51单片机要实现主持人按开始键后,抢答器开始20秒倒计时。20秒之内有人抢答,则在LED数码管上显示该代表队编号并封锁输入,其他选手抢答无效。此时按下开始键,复位键有效。在开始抢答之前,主持人可预先设定抢答时间和限时时间。系统具有声光提示功能。由我们分析可以看到,核心部分还是AT89S51单片机,基于AT89S51单片机的系统框图如图2-1-1所示:
电源电路 复位电路 主持人按键
anjian按键 选手按键
图2-1 系 统 框 图
AT89C51 数码提示
2.2时钟电路设计
单片机必须在时钟的驱动下才能工作。AT89C51
中有一个用
于构成内部振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是该放大器的输入端和输出端。只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。时钟频率控制电路如图2-2-1所示。
图2-2 外部振荡电路
单片机在工作时,由内部振荡器产生或由外部直接输入的送至内
部控制逻辑单元的时钟信号的周期称为时钟周期。其大小是时钟信号频率的倒数。时钟频率选为12MHz。
2.3复位电路设计
在抢答器中复位是为定时做铺垫的,在抢答之前要复位,抢答完毕要复位,按了复位键之后LED显示F。单片机的复位引脚RST出现2个机器周期以上的高电平时即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图2-3所示。
图2-3 复位电路
2.4抢答电路设计
单片机常用的键盘有全编码键盘和非编码键盘两种。全编码键盘能有硬件逻辑自动提供与被按键对应的编码,如BCD码键盘、ASCII码键盘等,价格较贵,一般的单片机应用系统较少采用;非编码键盘分为独立式键盘和矩阵式键盘,硬件上只是提供通、断两种状态,其他工作都靠软件完成,经济实用,目前单片机应用系统中多采用这种方法。
在智力抢答器设计中,要求有16个代表队参加抢答,每个代表队一个抢答按钮,就需要16个按钮,而选手抢答器按钮就是用独立式键盘或矩阵式键盘来完成的。独立式键盘电路要求一个端口连接一个按键,硬件电路简单但浪费成本。当按键数较多时,要占用较多的I/O口线。因此一般在按键数大于8时,通常采用矩阵式键盘电路。若P0口和P2口用于控制数码管的显示(P1口控制七段数码管,P2口则驱动数码管的位显示),P3口用于主控电路的设计,剩下的八位的P1口如果用独立式键盘明显达不到要求,但如果采用矩阵式键盘电路,8个I/O刚好可以构成4×4矩阵式键盘电路,满足16个代表队参加抢答的要求。
16路抢答器抢答电路设计即4×4矩阵式键盘电路,如图2-4:
图2-4 矩阵式键盘
2.5 显示电路设计
在本设计中采用的是共阴极接法的数码管,由P0口驱动七段数码显示管,P2口驱动数码管位。由P0、P2口共同组成LED数码管显示电路。由于P0口不带有上拉电阻,所以在设计中需另外外接上拉电阻,以提供一定的拉电流。P2口本身自带电阻,所以无需外接。因为AT89C51单片机P0、P2口都自带锁存器,所以无需另外外接锁存器。其与单片机一起来显示所抢答的代表队的编号和倒计时时间或限时时间。其接口电路如图2-5所示:
图2-5 显示电路
2.6 控制电路设计
抢答器控制电路主要控制抢答开始、停止以及抢答时间调节。它是供主持人操作的实现调节抢答时间、开始抢答等控制的控制功能电路。控制电路的设计跟报警电路的设计都需要通过语言来实现,单纯的硬件电路并不能实现任何东西。在控制电路的设计中,我接的是P3口,是因为P3口的每一个口线都有第二功能,在这里要用到的也就是它的第二功能,在前面的介绍中我们已经知道,P3口有两个中断,两个定时,一个读一个写口线,还有串行输入输出口线。16路智力抢答器硬件电路设计图如图2-6:
图2-6 控制电路
三、程序流程图 开始 初始化 N N 开始键按调时键按下? 下? Y Y 抢答键是否加1S或减1S 按下 N Y 判断哪位选手抢答,并 在数码管上显示 倒计时 Y 选手是否作 N 时间到 答 Y 按下复位键 进入下一题,并重新开始计时
参考文献
[1]周润景,袁伟亭,景晓松. Proteus在MCS-51&ARM7系统中的应用百例[M].北京:电子工业出版社,2006.5-7
[2]余发山,王福忠等.单片机原理及应用技术[M].徐州:中国矿业大学出版社,2003 [3]张凯,马忠梅编著,MCS-51单片机综合系统及其设计开发[M].北京:科学出版社,1996
[4]欧阳文.ATMEL89 系列单片机的原理及开发实践[M].北京:中国电力出版社,2007
[5]靳栀,潘育山,邬芝权.单片机原理及应用 C51编程技术[M].成都:西南交通大学出版社,2004
[6]黄继昌,乔苏文,张海贵.实用报警电路[M].北京:人民邮电出版社,2005.2 [7]求是科技.单片机典型模块设计实例导航[M].北京:人民邮电出版社,2008 [8]龚云新,胡长盛.单片机实用技术教程[M].北京:北京师大出版社,2007.6 [9]徐爱钧.8051单片机实践教程—asm51汇编语言与C51高级语言应用[M].北京:电子工业出版社,2005.3
[10]王凌霄.微型计算机原理及应用[M].徐州:中国矿业大学出版社,2004 [11]康华光.电子技术基础(模拟部分)[M].高等教育出版社.1999 [12]康华光.电子技术基础(数字部分)[M].高等教育出版社.1999 [13]何希才.常用电子电路应用365例[M].北京:电子工业出版社,2006 [14]张肃文.高频电子线路[M].高等教育出版社.2007 [15]徐曼.电子基础与技能[M].北京:电子工业出版社,2006.6
附录A 总电路图
附录B 程序清单
#include
#define KEYIO P1
uchar code table[]={0x3f,0x06,0x5b,0x4f, 0x66,0x6d,0x7d,0x07,
sbit led1 = P2^0; sbit led2 = P2^1; sbit led3 = P2^2; sbit led4 = P2^3;
sbit key1 = P3^0; sbit key2 = P3^1; sbit key3 = P3^2; sbit key4 = P3^3;
sbit bur = P3^7;
uchar keydata; uchar reset_flag; uchar time_count; uchar stop_flag;
0x7f,0x6f,0x77,0x7c, 0x39,0x5e,0x79,0x71};
uchar unsigned char
void display(uchar disdata); void display_time(uchar disdata); uchar keyscan();
void delayms(uint xms) //延时函数 {
uint i,j; }
void init_timer0() {
TMOD=0x01;
TH0=(65536-50000)/256; TL0=(65536-50000)%6; EA=1; ET0=1; TR0=1; }
void main() {
uchar time_max=30; led1 = 1; led2 = 1; init_timer0();
time_count = time_max;
for(i=xms;i>0;i--) for(j=110;j>0;j--);
stop_flag =1; while(1) {
display(keydata); { }
if(key2==0) {
delayms(10); if(key2==0) { }
while(!key2); stop_flag =1; reset_flag = 0; delayms(10); if(key1==0) { }
while(!key1); reset_flag = 1;
time_count = time_max; stop_flag = 0; bur = 1; if(key1==0)
display_time(time_count);
}
if(key3==0) { }
if(key4==0) { }
if(reset_flag==1) {
keydata = keyscan(); if(keydata!=0) {
display(keydata); stop_flag = 1; delayms(10); if(key4==0) { }
while(!key4); time_max--;
time_count = time_max; delayms(10); if(key3==0) { }
while(!key3); time_max++;
time_count = time_max;
} }
}
reset_flag = 0;
bur = 0; }
void display(uchar disdata) {
P0=table[shi];
P0=table[ge]; }
void display_time(uchar disdata) {
P0=table[shi];
uchar ge,shi; shi = disdata/10; ge = disdata; led2 = 0; delayms(4); led2 = 1;
led1 = 0; delayms(4); led1 = 1; uchar ge,shi; shi = disdata/10; ge = disdata;
P0=table[ge]; }
led3 = 0; delayms(4); led3 = 1;
led4 = 0; delayms(4); led4 = 1;
void T0_time() interrupt 1 {
//中断程序
static uchar count; TH0=(65536-50000)/256;
TL0=(65536-50000)%6;
}
uchar keyscan()
count++; if(count==20) { count = 0; if(time_count!=0) { } }
if(stop_flag==0) { }
time_count--;
{
uchar temp,key=0; KEYIO=0xfe; temp=KEYIO; temp=temp&0xf0; if(temp!=0xf0) {
delayms(10); temp=KEYIO; temp=temp&0xf0; if(temp!=0xf0) {
temp=KEYIO; switch(temp) {
case 0x7e: key=1;
break;
case 0xbe: key=2;
break;
case 0xde: key=3;
break;
case 0xee:
key=4;
break;
}
while(temp!=0xf0) {
temp=KEYIO;
temp=temp&0xf0; } } }
KEYIO=0xfd; temp=KEYIO; temp=temp&0xf0; if(temp!=0xf0) {
delayms(10); temp=KEYIO; temp=temp&0xf0; if(temp!=0xf0) {
temp=KEYIO; switch(temp) {
case 0x7d: key=5;
break;
case 0xbd: key=6;
break;
KEYIO=0xfb; temp=KEYIO; temp=temp&0xf0; if(temp!=0xf0) {
delayms(10); temp=KEYIO; temp=temp&0xf0; if(temp!=0xf0) {
temp=KEYIO; switch(temp) } }
case 0xed: }
while(temp!=0xf0) { }
temp=KEYIO; temp=temp&0xf0; key=8;
break;
case 0xdd: key=7;
break;
{
case 0x7b: key=9;
break;
case 0xbb: key=10;
break;
case 0xdb: key=11;
break;
} }
case 0xeb: }
while(temp!=0xf0) { }
temp=KEYIO; temp=temp&0xf0; key=12;
break;
KEYIO=0xf7; temp=KEYIO; temp=temp&0xf0; if(temp!=0xf0)
{
delayms(10); temp=KEYIO; temp=temp&0xf0; if(temp!=0xf0) {
temp=KEYIO; switch(temp) {
case 0x77: key=13;
break;
case 0xb7: key=14;
break;
case 0xd7: key=15;
break;
case 0xe7: }
while(temp!=0xf0) {
temp=KEYIO; temp=temp&0xf0; key=16;
break;
}
} }
}
return key;
正在阅读:
16路抢答器(带电路图和程序)06-02
高中语文作文写作技巧(绝好资料03-08
随机引物与oligodT 区别06-22
华南农业大学 离散数学 期末考试2011试卷及答案06-10
CFG桩专项施工实施方案(最终版)10-15
创建三级甲等医院医务科重点工作11-12
计算机科学与技术数字逻辑电路习题课302-02
电气装置安装工程电力变压器、油浸电抗器、互感器施工及验收规范11-17
聚人心促发展 保稳定谋新篇- 首页- 岳麓区教育云平台11-18
印染废水深度处理及回用技术的研究毕业论文08-17
- Win7 安装MySql图示
- 计算器课程设计报告
- 部编版八年下语文第三单元第六单元古诗文理解默写练习及答案
- 13质量通病防治方案和施工措施
- 土力学试题~~~~
- 公务员打印资料
- 传热膜系数测定实验报告 - 图文
- 新时期煤矿协管安全工作的创新与实践
- 第五章 习题及参考答案
- 220kV架空线路强条执行记录表
- 音乐欣赏读后感
- 高炉
- 劳动教育需要新的时代内涵
- 10建筑地面工程施工质量验收规范GB50209-20021
- 银行会计练习题2答案
- 2013年七年级地理上册知识点复习提纲湘教版
- 人教版三年级语文上册第四单元测试题(A卷)(有答案)
- 营养师第九章练习题
- 湖北省武汉市2018届高三毕业生二月调研 理综化学
- 行业分析2018-2023年中国男性护肤品行业市场发展分析及投资前景
- 抢答器
- 电路图
- 程序
- website
- 2011年山东省高校教师岗前培训《大学教学论小抄》 - 图文
- 人教版初中八年级下册美术教案全册
- 苏教版数学二年级下册第4单元教案
- 七年级生物期末复习提纲
- 《有趣的卡片》活动反思
- 2016届论文模板
- 六爻卦: 用神、元神、忌神、仇神、月建、日辰名词解释与应用
- 临时道路施工方案
- cet-6作文归纳
- 18年高考英语二轮复习专题08阅读填空练含解析1803071144
- 水电工程投资估算编制规定(2011)
- 2019年整理人音版小学一年级音乐上册教案全册
- 合肥工业大学2011-2012学年学生先进个人名单
- 中国汽车后市场及其连锁经营分析
- 篮球行进间体前变向换手运球教学设计
- FFTA2汉化版全武器装备合成方法
- U型管换热器计算书(甲醇)
- 东师 中外教育史 16春在线作业3
- 导学案选修2-1第三单元3.1.1--1.2