文档介绍:计算机与通信工程学院
单片机原理及应用实训总结报告
设计题目:抢答器控制模拟程序设计
学生姓名:
系别:计算机与通信工程学院
专业:信息工程
班级:09-1
学号:
指导教师:陈晓雷副教授
2011年12月23日
郑州轻工业学院
实训任务书
题目:抢答器控制模拟程序设计
专业、班级信息工程09-1 学号姓名
主要内容、基本要求、主要参考资料等:
基本要求:
具有8个抢答输入
显示抢答剩余时间(初始10秒)
显示抢答成功者
扩展要求:
抢答成功后有声音提示
时间分辨率小于10ms
完善其他自定义功能
设计方案简述:
定时抢答器的总体框图如下图所示,它由主体电路和扩展电路两部分组成。主体电路完成基本的抢答功能,即开始抢答后,当选手按动抢答键时,能显示选手的编号,同时能封锁输入电路,禁止其他选手抢答,扩展电路完成定时抢答的功能。
定时抢答器的工作过程是:接通电源时,节目主持人将开关置于“消除”位置,抢答器处于禁止工作状态,编号显示器灭灯,定时器倒计时,当定时时间到,却没有选手抢答时,系统报警,并封锁输入电路,禁止选手超时后抢答。当选手在定时时间内按动抢答键时,抢答器要完成以下四项工作:优先编码电路立即分辨出抢答者的编号,并由锁存器进行锁存,然后由译码显示电路显示编号;扬声器发出短暂的声响,提醒节目主持人注意;控制电路要对输入编码电路进行封锁,避免其他选手再次进行抢答;控制电路要使定时器停止工作,时间显示器上显示剩余的抢答时间,并保持到主持人将系统消零为止,当选手将问题回答完毕,主持人操作控制开关,使系统回复到禁止工作状态,以便进行下一轮抢答。
3主程序流程图
主程序
设置抢答时间和回答问题时间
定时器及并行口初始化
将时间计数器及启动标志值1
开中断
采并行口数据为0吗?
启动标志=1吗?
判断抢答组号
将抢答组发光二极管点亮
判断哪一组为抢答组
将抢答组号送显示
抢答时间到了吗?
输出响铃信号提示超时
继续抢答比赛吗?
系统返回
N
Y
Y
Y
N
Y
N
主程序流程图
抢答器电路设计:
抢答电路的功能有两个:一是分辨选手按键的先后,并锁存抢答者的编号,供译码显示电路用;二是是其他选手的按键操作无效。
选用优先编码器74LS148和RS锁存器,74LS138,74LS279可完成上述功能。译码电路选用74LS48芯片工作原理为:
当主持人控制开关处于“清除”位置时,RS触发器R为低电平,输出端(4Q~1Q)全部为低电平。于是74LS48的BI=0,显示器灭灯;74LS148的选通输入ST=0,74LS148处于工作状态,此时锁存器电路不工作。当主持人开关拨到开“始位”置,优先编码电路和锁存电路同时开始工作,等待输入信号I7,···,I0。当有选手按下键时,74LS148的输出Y2Y1Y0=010,Yex=0。经RS锁存器后,CTR=1,BI=1,74LS279处于工作状态,4Q3Q2Q=101。经过74LS48译码后,显示器显示选手编号。此外,CTR=1,是74LS148的ST为高电平,74LS148处于禁止工作状态,封锁了其他选手按键的输入。当按下的键松开后,74LS148的Yes为高电平,但由于CTR维持高电平不变,所以74LS148仍处于禁止工作状态,其他选手的输入不会被接收,保证了抢答者的优先性以及抢答电路的准确性。抢答完后主持人使抢答电路复位,以便进行下一轮抢答。
整体电路仿真图:
程序代码:
#include <>
#define uint unsigned int
#define uchar unsigned char
/*-----------------------------------------------------------
共阴极数码管编码表 0 - f显示
------------------------------------------------------------*/
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x7f,0x7c,0x39,0x5e,0x79,0x71};
sbit start= P3^6;
sbit stop=P3^5;
sbit reset = P3^7;
sbit key1 = P1^0; //8个抢答按键
sbit key2 = P1^1;
sbit key3 = P1^2;
sbit key4 = P1^3;
sbit key5 = P1^4;
sbit key6 = P1^5;