基于c语言单片机8位竞赛抢答器设计课程设计
基于单片机8路抢答器的设计与实现

基于单片机8路抢答器的设计与实现引言:抢答器是一种用于比赛或考试中进行抢答的设备,它可以实现多个参与者同时抢答,实时显示最先抢答者的编号。
本文将介绍一种基于单片机的8路抢答器的设计与实现。
一、设计方案:1.硬件设计:本设计采用单片机作为主控制器,使用LED显示器显示抢答编号。
按键用于选择参与抢答的编号。
____________________+------------------,P1.0,,P1.1,,P1.2,,P1.3Infrared sensor ----- ------- ----- -----+------------------,P1.4,,P1.5,,P1.6,,P1.7LED display ----- ------- ----- -----+---------------+---------+---------+---------+---------+AVRMicrocontroller+---------------+---------+---------+2.软件设计:本设计的软件部分主要涉及中断、定时器、按键扫描和显示控制几个方面的内容。
(1)中断:使用外部中断响应红外传感器的触发信号,并处理中断程序。
(2)定时器:使用定时器来实现LED显示的时序控制,以达到流畅的显示效果。
(3)按键扫描:定时扫描按键,当一些按键按下时,触发相应的抢答编号。
(4)显示控制:根据抢答编号,通过对LED显示器的控制,实现编号的显示。
二、实现步骤:1.硬件部分的实现:(1)按照上述连接图的方式,将红外传感器和LED显示器与单片机进行连接。
(2)编写硬件程序,对红外传感器和LED显示器进行初始化配置。
2.软件部分的实现:(1)编写中断服务函数,用于响应红外传感器的触发信号,并完成相应的中断处理。
(2)编写定时器中断服务函数,用于控制LED显示的时序。
(3)编写按键扫描函数,用于检测按键是否按下,并触发相应的抢答编号。
单片机八路抢答器课程设计

单片机八路抢答器课程设计一、课程目标知识目标:1. 让学生掌握单片机的基本原理,理解并运用I/O口进行输入输出控制。
2. 使学生了解抢答器的功能和工作原理,掌握其设计与实现方法。
3. 帮助学生掌握定时器/计数器的使用,以及在中断处理中的应用。
技能目标:1. 培养学生运用所学知识设计并实现单片机八路抢答器的实际操作能力。
2. 培养学生分析问题和解决问题的能力,提高编程和调试单片机系统的技能。
3. 培养学生的团队协作能力,提高沟通与表达技巧。
情感态度价值观目标:1. 培养学生对单片机及电子制作的兴趣,激发创新意识。
2. 培养学生具有实践操作中的安全意识,养成良好的实验习惯。
3. 培养学生面对挑战,勇于尝试,不断调整和优化设计方案的态度。
课程性质:本课程为实践性较强的课程,结合理论知识,以实际操作为核心。
学生特点:学生已具备一定的单片机基础知识和编程能力,具有较强的求知欲和动手能力。
教学要求:教师需引导学生主动探索,鼓励学生提出问题、解决问题,关注学生在实践中的个性化发展。
在教学过程中,将课程目标分解为具体的学习成果,以便进行有效的教学设计和评估。
二、教学内容1. 理论知识:- 单片机基础原理回顾:I/O口控制原理,中断系统原理。
- 定时器/计数器原理及其在抢答器中的应用。
- 抢答器工作原理及设计要求。
2. 实践操作:- 单片机硬件连接及电路设计。
- 编写抢答器程序,实现基本功能。
- 调试与优化:程序调试,硬件测试,故障排查。
3. 教学大纲:- 第一周:回顾单片机基础知识,讲解抢答器工作原理。
- 第二周:学习定时器/计数器应用,设计单片机I/O口控制电路。
- 第三周:分组讨论设计方案,编写程序,搭建硬件电路。
- 第四周:调试与优化,展示成果,总结经验。
4. 教材关联:- 理论知识:教材第3章单片机原理,第4章中断与定时器。
- 实践操作:教材第5章单片机接口技术,第6章单片机应用实例。
教学内容安排和进度根据课程目标和学生的学习情况调整,确保学生能够逐步掌握单片机八路抢答器的设计与实现。
基于单片机8路抢答器的设计与实现

基于单片机8路抢答器的设计与实现基于单片机的8路抢答器是一种常见的电子竞赛设备,用于测验、培训或竞赛等活动中进行抢答的过程。
它能够为多个参与者提供公平竞争机会,并通过显示屏和声音提示来呈现结果。
下面是一个基于单片机的8路抢答器的设计与实现的参考内容。
一、硬件设计:1. 微控制器选择:可以选择一款适合的单片机作为抢答器的主控芯片,常见的选择有STC89C52、AT89C52、PIC16F877A 等。
2. 输入部分设计:为每个参与者设置一个按钮,用于抢答。
可以使用电子按键、触摸按钮等。
3. 显示部分设计:可以选择LCD液晶显示屏或数码管进行显示,显示参与者的编号或抢答进度等信息。
4. 声音提示设计:可以使用蜂鸣器或扬声器作为声音提示装置,用于鸣笛提示抢答结果。
5. 电源部分设计:选择合适的电源模块,如直流电源模块或电池供电。
二、软件设计:1. 系统初始化:设置IO口的输入输出状态,初始化LCD显示屏,配置中断等。
2. 抢答逻辑:设置抢答模式,设定抢答者数量,记录抢答时间,并根据抢答顺序进行显示和提示。
3. 显示与提示:根据抢答结果,将结果显示在LCD屏幕上,并通过声音提示器进行声音提示。
4. 延时与计时:设置合适的延时函数和计时器用于计算抢答的时间长度。
5. 节拍控制:设置一个节拍控制函数,用于判断抢答按钮的按下时间是否在某一节拍内,以增加抢答的公平性。
6. 按键检测与处理:使用中断或轮询方式对抢答器上的按键进行检测和处理,并根据按键的触发来执行相应的命令。
三、实现步骤:1. 硬件搭建:按照上述设计,完成抢答器的硬件搭建,包括连接单片机与按钮、显示屏和声音提示器等。
2. 程序编写:根据所选的单片机型号,使用对应的编程软件,编写相应的程序。
3. 调试与测试:将编写好的程序下载到单片机中,通过串口或者编程器与单片机进行连接,进行调试与测试。
4. 优化与改进:根据实际使用情况,进行程序的优化和改进,以提高系统的稳定性和可靠性。
8位竞赛抢答器课程设计

目录1. 原理分析(by 张潇) (2)1.1 设计任务 (2)1.2 性能指标 (2)1.3 工作原理 (2)2. 方案选择(by 张潇) (3)2.1 方案设定 (3)2.2 方案比较 (3)2.3 方案选择 (3)3. 电路原理图绘制及仿真(by 王倩) (3)3.1 所需元器件型号及数量 (3)3.2 电路原理图 (4)3.3 电路仿真结果 (5)4. Pcb图绘制(by 朱文广) (5)4.1 pcb绘制步骤 (5)4.2 pcb绘制原则 (5)4.3 8路抢答器pcb图 (7)5. 综合调试(by 朱文广) (7)5.1 软件调试 (7)5.2 硬件调试 (9)6. 总结(by 王倩) (10)附录1:电路仿真图 (11)附录2: 8路抢答器完整程序 (12)1.1 设计任务以单片机为核心,设计一个8位竞赛抢答器,同时供8名选手或8个代表队比赛。
设置一个系统清除和抢答控制开关S,开关由主持人控制。
抢答器具有锁存与显示功能。
即选手按按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。
抢答器具有定时抢答功能,且一次抢答的时间可由主持人设定。
参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。
如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。
1.2 性能指标电源电压:直流5V±10%选手组数:2-8组初始抢答倒计时:20s初始回答倒计时:30s倒计时范围:1-99s可设倒计时提示时间:最后5s1.3 工作原理八路数字抢答器原理框图如图1所示,其工作原理为:接通电源后,主持人未按下开始抢答,抢答器处于禁止状态,数码管显示“----”;主持人宣布“开始”同时按下开始抢答按键,抢答倒计时开始计时,扬声器给出声响提示。
选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示、扬声器提示。
基于单片机八路抢答器设计

第一章系统方案与论证1.1 根本要求〔1〕系统容量:为满足竞赛抢答的要求,系统容量定位8路。
〔2〕系统能完成:倒计时指令发送与接收;抢答对别信息发送与接收;〔3〕抢答倒计时可在0-99秒内根据需要任意调整。
〔4〕所有信息交换都采用无线通信。
〔5〕抢答指令发出和抢答成功要有提示音。
1.2 系统方案选择1.2.1 系统根本构造框图1-1 根本系统构造框图系统工作流程:主持人电路通电后,2位数码管不断加1,以示电路可以正常工作。
主持人按下控制开关后,电路进入倒计时预设状态,设置好后再按一下控制开关,则完成预设,数码管显示预设数。
当主持人按下开场按钮后,选手可以抢答,同时数码管显示倒计时读秒,如有选手按下抢答键,数码管显示该选手的序号,同时封锁其他的抢答信号,蜂鸣器鸣叫10s,以示有人抢答成功。
如读秒归零时还无人抢答,则蜂鸣器鸣叫10s,数码管显示为不断闪亮的“00〞,以示抢答时间到。
当抢答的选手答复完毕或读秒归零后,主持人按一下开场按钮,电路即可恢复到开场抢答,倒计时读秒状态1.2.2 通信方案论证与选择要实现无线通信,可选用频分复用和时分复用两种形式。
频分复用各信道独立,不考虑信号在时间上的重叠。
但是在整个系统最少也需要8个信道,电路复杂,制作本钱高,故不取。
对实际问题进展分析,发现系统通信中,除抢答信号外,其他信号的传送都具有明显的分时性〔即各信号的传送都不可能同时出现〕。
再对抢答信号进展深入研究,发现:〔1〕人对抢答信号的反响在毫秒级是很不灵敏的,人的反响速度是在0.2s-0.8s 内随即出现。
〔2〕在比赛现场,抢答题目一般在几十秒内。
能做出答复决定的人也只在40%左右,坚决做出答复决定的占20%左右。
根据系统满容量算20*20%=4,只有4个左右的人数进入0.2—0.8s反响比赛中。
〔3〕按键反响速度也是有差异的,大概在20ms左右。
根据以上三点分析,可以定性的得出抢答信号在一定的时间区间内具有随机分时的特性。
八位抢答器课程设计

八位抢答器课程设计一、课程目标知识目标:1. 学生理解抢答器的基本工作原理,掌握其电路组成及功能。
2. 学生了解数字电路基础知识,并能运用到抢答器的设计中。
3. 学生掌握抢答器程序设计的基本方法,能运用所学知识分析并解决实际问题。
技能目标:1. 学生能独立完成抢答器的电路搭建,提高动手实践能力。
2. 学生能通过编程实现抢答器的功能,培养编程思维和解决问题的能力。
3. 学生具备团队协作能力,能在小组合作中发挥个人优势,共同完成抢答器的设计与制作。
情感态度价值观目标:1. 学生培养对电子技术的兴趣,激发创新意识。
2. 学生在学习过程中,养成积极思考、勇于探索的良好习惯。
3. 学生通过小组合作,培养沟通协调能力和团队精神,树立集体荣誉感。
课程性质:本课程为信息技术与电子技术的结合课程,注重实践操作和团队合作。
学生特点:八年级学生对电子技术有一定的基础,好奇心强,具备一定的动手能力和合作意识。
教学要求:结合学生特点,以实践为主,引导学生主动探究,注重培养学生的创新精神和实践能力。
将课程目标分解为具体的学习成果,以便进行教学设计和评估。
二、教学内容1. 数字电路基础知识:介绍抢答器中涉及的逻辑门电路、触发器等基本元件,对应教材第3章相关内容。
- 逻辑门电路原理与功能- 触发器种类及其应用2. 抢答器电路设计与搭建:讲解抢答器电路原理,引导学生进行电路搭建,对应教材第4章相关内容。
- 抢答器工作原理- 电路元件选择与连接- 抢答器电路搭建与调试3. 抢答器程序设计:教授编程基础知识,指导学生进行抢答器程序设计,对应教材第5章相关内容。
- 编程语言基础- 程序流程图设计- 抢答器程序编写与调试4. 抢答器功能实现与优化:培养学生解决问题和团队协作能力,对应教材第6章相关内容。
- 抢答器功能测试与优化- 团队合作与分工- 项目总结与展示教学大纲安排:第一周:数字电路基础知识学习,了解逻辑门电路和触发器原理。
第二周:抢答器电路设计与搭建,动手实践电路连接与调试。
单片机实验8路抢答器C语言版

单片机综合实验报告题目: 8路抢答器实验班级:姓名:学号:指导老师:时间:一、实验内容:以单片机为核心,设计一个8位竞赛抢答器:同时供8名选手或8个代表队比赛,分别用8个按钮S0~S7表示。
本实验有Protues软件仿真。
分别设置一个抢答控制开关S1和复位开关S2,由主持人控制。
抢答器具有锁存与显示功能。
即选手按按钮抢答时,锁存相应的编号,并且优先抢答选手的编号一直保持显示在显示器上,直到主持人将系统复位为止。
抢答器具有定时抢答功能,且一次抢答的时间由主持人设定为30秒。
当主持人启动“开始”键后,定时器进行减计时,同时绿色LED灯亮。
二、实验电路及功能说明分别设置一个抢答控制开关S1和复位开关S2,由主持人控制。
抢答器具有锁存与显示功能。
即选手按按钮抢答时,锁存相应的编号,并且优先抢答选手的编号一直保持显示在显示器上,直到主持人将系统复位为止。
参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统复位为止。
复位后参赛队员可继续抢答。
如果定时时间已到,无人抢答,本次抢答无效,系统报警红色LED灯亮,并禁止抢答,定时显示器上显示00。
三、实验程序流程图:主程序;非法抢答序;抢答时间调整程序;回答时间调整程序;倒计时程序;正常抢答处理程序;犯规处理程序;显示及发声程序。
主流程图如下图所示子程序四、实验结果分析五、心得体会六、程序清单#include <reg51.h>#define uchar unsigned char#define uint unsigned intsbit wela_a=P3^0;sbit wela1=P3^1;sbit wela2=P3^7;sbit rest=P3^5;sbit host=P3^6;sbit led1=P3^4;//绿灯sbit led2=P3^3;//红灯sbit led3=P3^2;//黄灯sbit key1=P1^0;sbit key2=P1^1;sbit key3=P1^2;sbit key4=P1^3;sbit key5=P1^4;sbit key6=P1^5;sbit key7=P1^6;sbit key8=P1^7;uchar x,q,d,s,ge,t0,t1,start,flag; uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};void init();/*初始函数申明*/void display(uchar s,uchar ge,uchar a); void delay(uint z); void keyscan();void main(){init();display(s,ge,a);while(1){if(host==0) //主持人控制开关{delay(5);if(host==0){flag=1;start=1;delay(5); 延时while(!host); 检测开关}}if(rest==0) //复位{delay(5);if(rest==0){q=30;led2=1;led3=1;x=0;delay(5);start=1;delay(5);while(!rest);}}if(flag==1){if(start==0)//选手按下,倒计10秒开始 {led3=0;wela1=0;wela2=0;delay(1);TR0=0;TR1=1;display(s,ge,a);delay(1);}if(start==1)//主持人按下,倒计时30秒{led1=0;wela1=0;wela2=0;delay(1);TR0=1;TR1=0;display(s,ge,a);delay(1);keyscan();}}}}void init()/*初始化*/{t0=0;t1=0;flag=0;q=30;d=10;wela_a=0;a=0;TMOD=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET0=1;ET1=1;TR0=0;TR1=0;}void display(uchar s,uchar ge,uchar a)/*数码管动态扫描*/{wela1=1;P0=table[ge];delay(5);wela2=1;P0=table[s];delay(5);wela_a=0;P2=table[a];delay(5);}void keyscan()/*按键扫描函数*/ {if(key1==0){delay(5);if(key1==0){a=1;P2=table[a];start=0;TR1=1;TR0=0;delay(5);while(!key1);}}if(key2==0){delay(5);if(key2==0){a=2;P2=table[a];start=0;delay(5);while(!key2);}}if(key3==0){delay(5);if(key3==0){a=3;P2=table[a]; start=0;delay(5);while(!key3);}}if(key4==0){delay(5);if(key4==0){a=4;P2=table[a]; start=0;delay(5);while(!key4);}}if(key5==0){delay(5);if(key5==0){a=5;P2=table[a]; start=0;delay(5);while(!key5);}}if(key6==0){delay(5);if(key6==0){a=6;P2=table[a]; start=0;delay(5);while(!key6);}}if(key7==0){delay(5);if(key7==0){a=7;P2=table[a]; start=0;delay(5);while(!key7);}}if(key8==0){delay(5);if(key8==0){a=8;P2=table[a];start=0;delay(5);while(!key8);}}}void delay(uint z)/*延时函数*/{uint i,j;for(i=z;i>0;i--)for(j=110;j>0;j--);}void time0() interrupt 1/*定时器0*/ {TH0=(65536-50000)/256;TL0=(65536-50000)%256;s=q/10;ge=q%10;t0++;if(t0==20){t0=0;q--;s=q/10;ge=q%10;if(q==0){while(1){q=0;a=0;led1=1;led2=0;wela1=0;wela2=0;delay(1);display(s,ge,a);}}}}void time1() interrupt 3/*定时器1*/ {TH1=(65536-50000)/256;TL1=(65536-50000)%256;s=d/10;ge=d%10;t1++;if(t1==20){t1=0;d--;s=d/10;ge=d%10;if(d==0){while(1){d=0;a=0;led1=1;led3=1;led2=0;wela1=0;wela2=0;delay(1);display(s,ge,a);}}}}//最后,给朋友们一点点提示,本程序有一点点小问题,有个中断没关,当主持人复位之后,后面的选手回答问题的时间就没有10秒了(可怜啊)。
单片机8路抢答器课程设计

单片机8路抢答器课程设计一、课程目标知识目标:1. 让学生掌握单片机的基本原理和功能,理解8路抢答器的电路构成及其工作原理;2. 使学生掌握8路抢答器程序设计的基本方法,包括程序流程图绘制、程序代码编写等;3. 帮助学生理解数字电路基础知识,以及与单片机接口的原理。
技能目标:1. 培养学生运用单片机进行电子电路设计和程序开发的能力;2. 培养学生动手实践、团队协作的能力,能独立完成8路抢答器的搭建和调试;3. 提高学生分析问题和解决问题的能力。
情感态度价值观目标:1. 激发学生对电子技术和编程的兴趣,培养其创新精神和实践能力;2. 培养学生严谨的科学态度和良好的学习习惯,使其在课程学习过程中体验团队合作的重要性;3. 引导学生关注科技发展,认识到单片机技术在实际应用中的价值,提高学生的社会责任感和使命感。
课程性质:本课程为实践性较强的课程,结合理论知识与实际操作,旨在培养学生的动手能力和实际应用能力。
学生特点:学生已具备一定的电子技术基础和编程能力,具有较强的学习兴趣和探索精神。
教学要求:教师应注重理论与实践相结合,以学生为主体,引导学生主动参与、积极思考、合作交流,提高学生的实践能力和创新能力。
在教学过程中,关注学生的个体差异,因材施教,确保课程目标的实现。
通过课程学习,使学生达到预定的学习成果,为后续学习打下坚实基础。
二、教学内容1. 理论知识:a. 单片机原理与功能:引导学生复习并巩固单片机的基本原理,介绍51单片机结构、工作原理及特性;b. 8路抢答器电路设计:讲解8路抢答器的电路构成、工作原理及各部分功能;c. 程序设计方法:介绍程序流程图的绘制方法,讲解C语言编程基础及其在单片机编程中的应用。
2. 实践操作:a. 8路抢答器硬件搭建:指导学生按照电路图完成8路抢答器的硬件搭建;b. 程序编写与调试:教授学生编写8路抢答器程序,并进行调试;c. 系统测试与优化:引导学生对搭建好的8路抢答器进行测试,发现问题并进行优化。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
课程设计报告课程名称:单片机课程设计报告题目:8位竞赛抢答器的设计学生姓名:所在学院:信息科学与工程学院专业班级:学生学号:指导教师:2013 年12月25日课程设计任务书摘要抢答器作为一种工具,已广泛应用于各种智力和知识竞赛场合。
但抢答器的使用频率较低,且有的要么制作复杂,要么可靠性低。
作为一个单位,如果专门购一台抢答器虽然在经济上可以承受,但每年使用的次数极少,往往因长期存放使(电子器件的)抢答器损坏,再购置的麻烦和及时性就会影响活动的开展,因此设计了本抢答器。
本设计是以八路抢答为基本理念。
考虑到依需设定限时回答的功能,利用AT89C52单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间。
用开关做键盘输出,扬声器发生提示。
同时系统能够实现:在抢答中,只有开始后抢答才有效,如果在开始抢答前抢答为无效;抢答限定时间和回答问题的时间可在1-30s设定;可以显示是哪位选手有效抢答,正确按键后有5s的音乐提示(即扬声器发出响声);抢答时间和回答问题时间倒记时显示,满时后系统计时自动复位及主控强制复位;按键锁定,在有效状态下,按键无效非法。
关键词:89c52;电路;显示;按键目录一、概述 (1)二、方案设计 (1)三、硬件电路设计 (2)1、抢答器的电路框图 (2)2、单元电路 (3)2.1、抢答器电路 (3)2.2、时序控制电路 (3)2.3、复位电路 (3)3、时钟震荡电路 (3)4、报警电路 (3)四、软件设计 (4)1、系统主程序 (4)2、系统程序 (5)五、结论与心得 (10)六、参考文献 (10)一、概述本实验电路由抢答电路、译码显示电路、主持人控制电路、定时电路、报警电路组成。
通过复位按键FW,电路进入准备就绪状态。
将抢答时间设定在30S,然后按下开始键开始抢答。
,在电路中“S0-S7”为8路抢答器的8个按键,当有键按下,程序锁定信号,从P2口输出抢答者号码的七段码值,送到数码管显示,并封锁按键,保持刚才按键按下时刻的时间,禁止其他人按键的输入,从而实现了抢答的功能。
当设定的抢答时间结束,仍然没有抢答键被按下,则产生已经超时的报警信号,结束抢答。
当要进行下一次的抢答时,首先按一下复位按键,电路复位。
该设计是以MCS51为基础,结合单片机汇编语言知识,设计而成的8位竞赛抢答器。
在伟福试验箱上实现仿真。
主持人按下“开始抢答键”既单脉冲键后,喇叭响0.5秒给出提示信号,并立刻进入抢答倒计时(预设30秒抢答时间)此时,数码显示管上显示倒计时时间:有选手抢答,停止计时,八段数码显示抢答时间和选手号;无选手抢答,倒计时30秒后,显示00。
然后选手等待主持人按下按钮开始新一轮抢答。
注意:(1)由于设计的局限性,如果在无人抢答期间,30秒还未到,主持人不能按下重新下一轮抢答按钮。
(2)由于试验箱上按钮数量有限,故选用开关代替按钮,供8位选手抢答使用。
鉴于开关与按钮动作过程的差异,所以每次当选手抢答,拨下开关时必须将开关复位。
(3)当系统出现错误的时候,停止操作,重新编译开始。
二、方案设计方案:该系统采用51系列单片机AT89C51作为控制核心,该系统可以完成运算控制、信号识别以及显示功能的实现。
由于用了单片机,使其技术比较成熟,应用起来方便、简单并且单片机周围的辅助电路也比较少,便于控制和实现。
整个系统具有极其灵活的可编程性,能方便地对系统进行功能的扩张和更改。
MCS-51单片机特点如下:<1>可靠性好:单片机按照工业控制要求设计,抵抗工业噪声干扰优于一般的CPU,程序指令和数据都可以写在ROM里,许多信号通道都在同一芯片,因此可靠性高,易扩充。
<2>单片机有一般电脑所必须的器件。
<3> 控制功能强:单片机指令除了输入输出指令,逻辑判断指令外还有更丰富的条件分支跳跃指令。
三、硬件电路设计1、抢答器的电路框图如图3.1.1所示为电路框图。
其工作原理为:接通电源后,主持人按下开关即为“开始”状态,宣布“开始”抢答器工作。
编号显示器灭灯,定时器显示设定时间。
定时器倒计时,扬声器给出5s声响提示。
选手在定时时间内抢答时,抢答器完成:优先判断、编号锁存、编号显示。
当一轮抢答之后,定时器停止、禁止二次抢答、定时器显示剩余时间。
如果再次抢答必须由主持人再次操作"开始、停止"状态按键。
图3.1.1电路框图2、单元电路3.2.1、抢答器电路该电路完成两个功能:一是判断出选手按键的先后,并锁存优先抢答者的编号,同时译码显示电路显示编号;二是禁止其他选手按键操作无效。
如有再次抢答需由主持人将S开关重新置,“清除”然后再进行下一次抢答。
3.2.2、时序控制电路时序控制电路是抢答器设计的关键,它要完成以下功能:a.主持人将控制开关拨到"开始"位置时,扬声器发声,抢答电路和定时电路进人正常抢答工作状态。
b.当参赛选手按动抢答键时,扬声器发声,抢答电路和定时电路停止工作。
3.2.3、复位电路设计外部中断和内部中断并存,单片机硬件复位端,只要持续4个机器周期的高电平即可实现复位,硬件复位后的各状态可知寄存器以及存储器的值都恢复到了初始值,因为本设计中功能中有倒计时时间的记忆功能,所以不能对单片机进行硬件复位,只能用软件复位,软件复位实际上就是当程序执行完之后,将程序通过一条跳转指令让它完成复位。
3、时钟震荡电路时钟震荡电路单片机必须在89C52驱动下才能工作,在单片机内部有一个时钟震荡电路,只需要外接一个振荡器就能产生一定的时钟信号送到单片机内部的各个单元。
4、报警电路报警电路用于报警,当遇到报警信号时,发出警报。
8952动喇叭的信号为各种频率的脉冲。
因此,最简单的喇叭驱动方式就是利用达林顿晶体管,或者以两个常用的小晶体管连接成达林顿架势。
在右图中电阻R为限流电阻,在此利用晶体管的高电流增益,以达到电路快速饱和的目的。
不过,如果要由P0输出到此电路,还需要连接一个10K的上拉电阻。
图3硬件电路图四、软件设计1、系统主程序为了能够达到抢答的公平、公正、合理,应该在主持人发布抢答命令之前必须先设定抢答的时间,因而在编开始抢答前的程序得先编写设定时间的程序,当时间设好了之后,主持人发布抢答命令按下s1按键,程序开始打开定时中断开始倒计时,然后调用键盘扫描子程序,编写键盘扫描程序。
当在扫描到有人按下了答题键,马上关闭T0、调用显示程序、封锁键盘。
以单片机为核心,设计一个8位竞赛抢答器:同时供8名选手或8个代表队比赛,分别用8个按钮S0~S7表示。
设置一个系统清除和抢答控制开关S,开关由主持人控制。
抢答器具有锁存与显示功能。
即选手按按钮,锁存相应的编号,并在优先抢答选手的编号一直保持到主持人将系统清除为止。
当主持人启动“开始”键后,定时器进行减计时,同时扬声器发出短暂的声响,声响持续的时间为0.5s左右。
参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统清除为止。
如果定时时间已到,无人抢答,本次抢答无效,系统报警并禁止抢答,定时显示器上显示00。
图4.1主程序方框图2、系统程序#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit s1=P3^0;sbit we=P3^6;uchar h[]={0xe0,0xd0,0xb0,0x70};uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff}; uchar num,count;uchar a=0,c=0,t,bb=0,t1;void delay(uint z){uint x,y;for(x=110;x>0;x--)for(y=z;y>0;y--);}void write_sx(){P2=0xdf;P0=0x08;P2=0x00;P0=0xff;P2=0xff;P0=table[t1];P2=0x00;P0=0x00;delay(5);P2=0xdf;P0=0x40;P2=0x00;P0=0xff;P2=0xff;P0=table[(t/10)%10];P2=0x00;P0=0x00;delay(5);P2=0xdf;P0=0x80;P2=0x00;P0=0xff;P2=0xff;P0=table[t%10];P2=0x00;P0=0x00;delay(5);}void init(){P2=0xbf;P0=0xbf;TMOD=0x01;TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=0;ET0=1;TR0=1;}void keyscan(){ we=0;if(s1==0){delay(5);if(s1==0){while(!s1);EA=1;P2=0xbf;P0=0xff;t=30;a=1;t1=10;c=0;}}if(c==0){P3=0xfd;num=P3;num=num&0xf0;if(num!=0xf0){delay(5);if(num!=0xf0){while(P3!=0xfd);c=1;EA=0;if(num==h[3])t1=1;if(num==h[2])t1=2;if(num==h[1])t1=3;if(num==h[0])t1=4;}}P3=0xfb;num=P3;num=num&0xf0;if(num!=0xf0){delay(5);if(num!=0xf0){while(P3!=0xfb);c=1;EA=0;if(num==h[3])t1=5;if(num==h[2])t1=6;if(num==h[1])t1=7;if(num==h[0])t1=8;}}}}void main(){init();while(1){keyscan();if((a==1)&&((t>0)&&(t<=30))){write_sx();}if(t==0){EA=0;t=0;t1=10;}}}void timer0() interrupt 1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;count++;if(count==10){P2=0xbf;P0=0xbf;}if(count==20){count=0;t--;}}五、结论与心得通过这次课程设计,我深刻的认识到自己在许多方面的不足。