单片机课程设计 八路抢答器(C语言)
单片机八路抢答器课程设计

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

#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit k1=P1^0;sbit k2=P1^1;sbit k3=P1^2;sbit k4=P1^3;sbit k5=P1^4;sbit k6=P1^5;sbit k7=P1^6;sbit k8=P1^7; //选手按键sbit beep=P3^6; //蜂鸣器uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77}; //0-9代码(共阴极)uchar shiwei,gewei,xuanshou,count,i,second;uchar score1,score2,score3,score4,score5,score6,score7,score8;//选手1~8的分数uint t,m,n,a,a1,a2,a3,a4,a5,a6,a7,a8;void Timer(){TMOD|=0x01;TH0=0xd8; //初值55536,计数10000次,每次1US,总计10msTL0=0xf0;IE=0x82; //这里是中断优先级控制EA=1(开总中断),ET0=1(定时器0允许中断),这里用定时器0来定时TR0=1;}void tim(void) interrupt 1 using 1 //为定时中断TR0{TH0=0xd8; //重新赋值TL0=0xf0;count++;if(count==100) //100*10ms=1秒{count=0;second--; //秒减1}}void delay(uint z) //延时函数{uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);//延时1ms}void display (uchar shiwei,gewei,xuanshou) //显示函数{P2=0xfe; //打开显示时间十位的位选低电平有效1111 1110 P0=shiwei;//显示十位delay(5);P2=0xfd; //个位位选1111 1101P0=gewei;delay(5);P2=0xf7; //选手位选1111 0111P0=xuanshou;delay(5);}void dis(void)//调用显示函数{shiwei=tab[second/10];gewei=tab[second%10];xuanshou=tab[i];display (shiwei,gewei,xuanshou);}void init() //初始化函数{P2=0x04;//0000 0100P0=0x3f;//数码管共阴0011 1111显示0t=0;beep=0;//蜂鸣器i=0;second=29;score1=60;score2=60;score3=60;score4=60;score5=60;score6=60;score7=60;score8=60;a1=1;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;}void main()//主函数{init();//调用初始化函数if(k==1){ m=0; if(k1==0) {delay(5);if(k1==0);while(!k1);beep=1;delay(500);beep=0;} // 违规抢答显示号码报警while(t){if(m==0) //开关,保证程序只执行一次{switch(t){case 1:{TR0=0;i=1;second=score1;beep=1;delay(500);beep=0;a1=0;a2=1;a3=1;a4=1;a5=1;a6=1;a7=1;a8=1;m=1;break; //有选手抢答时显示选手号码蜂鸣器响,时间为0,t和i对应}}} }if(k2==0) {delay(5);if(k1==0);while(!k1);t=2;beep=1;delay(500);beep=0;}if(k3==0) {delay(5);if(k1==0);while(!k1);t=3;beep=1;delay(500);beep=0;}if(k4==0) {delay(5);if(k1==0);while(!k1);t=4;beep=1;delay(500);beep=0;}if(k5==0) {delay(5);if(k1==0);while(!k1);t=5;beep=1;delay(500);beep=0;}if(k6==0) {delay(5);if(k1==0);while(!k1);t=6;beep=1;delay(500);beep=0;}if(k7==0) {delay(5);if(k1==0);while(!k1);t=7;beep=1;delay(500);beep=0;}if(k8==0) {delay(5);if(k1==0);while(!k1);t=8;beep=1;delay(500);beep=0;}}if(k==0){Timer();//中断定时器打开delay(10);while(!k);while(1){dis();m=0;n=0;if (second==29){beep=1;delay(500);beep=0;}if(second==0){TR0=0;n=1;if(k1==0){delay(5);if(k1==0);while(!k1);t=1;beep=1;delay(500);beep=0;} // 违规抢答显示号码报警if(k2==0){delay(5);if(k1==0);while(!k1);t=2;beep=1;delay(500);beep=0;}if(k3==0){delay(5);if(k1==0);while(!k1);t=3;beep=1;delay(500);beep=0;}if(k4==0){delay(5);if(k1==0);while(!k1);t=4;beep=1;delay(500);beep=0;}if(k5==0){delay(5);if(k1==0);while(!k1);t=5;beep=1;delay(500);beep=0;}if(k6==0){delay(5);if(k1==0);while(!k1);t=6;beep=1;delay(500);beep=0;}if(k7==0){delay(5);if(k1==0);while(!k1);t=7;beep=1;delay(500);beep=0;}if(k8==0){delay(5);if(k1==0);while(!k1);t=8;beep=1;delay(500);beep=0;}if(k==0){beep=1;delay(500);beep=0;second=29;TR0=1;m=1;}}//如果再次按下开始按钮,蜂鸣器响0。
单片机课程设计(八路抢答器)

单片机课程设计八路抢答器一设计要求:①如果想调节抢答时间或答题时间,按“抢答时间调节”键或“答题时间调节”键进入调节状态,此时会显示现在设定的抢答时间或回答时间值,如想加一秒按一下“加1s”键,如果想减一秒按一下“-1s”键,时间LED上会显示改变后的时间,调整范围为0s~99s, 0s时再减1s会跳到99,99s时再加1s会变到0s。
②主持人按“抢答开始”键,会有提示音,并立刻进入抢答倒计时(预设30s抢答时间),如有选手抢答,会有提示音,并会显示其号数并立刻进入回答倒计时(预设60s抢答时间),不进行抢答查询,所以只有第一个按抢答的选手有效。
倒数时间到小于5s会每秒响一下提示音。
③如倒计时期间,主持人想停止倒计时可以随时按“停止”按键,系统会自动进入准备状态,等待主持人按“抢答开始”进入下次抢答计时。
④如果主持人未按“抢答开始”键,而有人按了抢答按键,犯规抢答,LED上不断闪烁FF和犯规号数并响个不停,直到按下“停止”键为止。
⑤P3.0为开始抢答,P3.1为停止,p1.0-p1.7为八路抢答输入数码管段选P0口,位选P2口低3位,蜂鸣器输出为P3.6口。
P3.2抢答时间调整结,P3.3回答时间调整,P3.4为时间加1调整,P3.5为时间减1调整。
⑥当参赛选手在回答问题时要求使用锦囊,则主持人按下抢答开始键,计时重新开始。
二设计思路:系统设计主要包括硬件和软件两大部分,依据控制系统的工作原理和技术性能,将硬件和软件分开设计。
硬件设计部分包括电路原理图、合理选择元器件、绘制线路图,然后对硬件进行调试、测试,以达到设计要求。
软件设计部分,首先在总体设计中完成系统总框图和各模块的功能设计,拟定详细的工作计划;然后进行具体设计,包括各模块的流程图,选择合适的编程语言和工具,进行代码设计等;最后是对软件进行调试、测试,达到所需功能要求。
在系统设计中设计方法的选用是系统设计能否成功的关键。
硬件电路是采用结构化系统设计方法,该方法保证设计电路的标准化、模块化。
八路抢答器电子线路设计(附C语言程序)

电子系统课程设计姓名:___________ 周康学号:___________ 24号_______________专业班级:_________ 嵌入式10指导教师:一=朱水金设计题目:八路抢答器完成时间:2013年07月01日功能(20%实训(60%设计报告(20%总评简易难度(10%控制方式(10%原理图(10%装配图(10%元器件焊接(10%自控质量(10%功能实现(10%质量评估(10%格式(5%内容(15%应用科学学院电子系统课程设计数字抢答器由主体电路与扩展电路组成。
用控制电路和主持人开关启动报警电路,以上两部分组成主体电路。
通过定时电路和译码电路将秒脉冲产生的信号在显示器上输出实现计时功能,构成扩展电路。
经过布线、焊接、调试等工作后数字抢答器成形。
单片机体积小价格低,应用方便,稳定可靠。
单片机系统的硬件结构给予了抢答系统“身躯”,而单片机的应用程序赋予了其新的“生命”,使其在传统的抢答器面前具有电路简单、成本低、运行可靠等特色。
关键字:抢答电路报警电路倒计时电路目录第一章八路抢答器的概述及制作要求 (4)1.1 数字抢答器的概述 (4)1.2 设计任务与要求 (4)第二章单片机芯片的选择及抢答器方案 (5)2.1单片机芯片的选择 (5)2.2模块性能分析 (7)第三章硬件电路设计 (8)3.1总体设计 (8)3.2外部振荡电路 (9)3.3复位电路的设计 (9)3.4显示电路的设计 (9)3.5按钮输入电路的设计 (9)3.6报警电路的设计 (9)第四章系统软件设计 (12)4.1抢答器流程图 (12)4.2抢答器程序 (12)-1 -第五章产品的样品 (25)4.1实物图 (12)4.2 PCB 版图 (12)4.1实物焊接图 (12)结束语 (25)参考文献 (28)引言:单片机的发展史单片机诞生于20世纪70年代末,经历了SCM MCU SoC三大阶段。
1.SCM即单片微型计算机(Single Chip Microcomputer )阶段,主要是寻求最佳的单片形态嵌入式系统的最佳体系结构。
单片机八路抢答器课程设计

单片机八路抢答器课程设计一、引言随着科技的发展和应用越来越广泛,单片机在各个领域的应用日益普遍。
其中,抢答器是一种常见且有趣的单片机应用。
本课程设计将介绍如何使用单片机设计一个八路抢答器,帮助学生更好地理解和掌握单片机的原理和应用。
二、系统框图八路抢答器系统主要由以下几个部分组成: 1. 单片机主控模块:负责系统的整体控制和数据处理。
2. 八个抢答器按键模块:提供用户按键输入功能。
3. 抢答器显示模块:展示抢答器的按键状态和抢答结果。
4. 蜂鸣器模块:用于发出抢答成功或失败的音频提示。
三、系统功能设计八路抢答器的主要功能如下: 1. 抢答器按键功能:每个抢答器都具有独立的按键,当按下按键时,抢答器将发送信号给主控模块。
2. 抢答器显示功能:通过显示模块,实时显示每个抢答器的抢答状态,如按下、未按下等。
3. 抢答器抢答功能:在系统开始抢答后,只有首先按下按键的抢答器才能获得抢答资格。
4. 抢答结果显示功能:在抢答结束后,显示抢答结果,并通过蜂鸣器模块发出音频提示。
四、硬件设计4.1 单片机主控模块主控模块是整个系统的核心,它接收抢答器按键模块发送的信号,并对抢答结果进行处理。
可以选择常用的单片机,如STC89C51等。
### 4.2 抢答器按键模块抢答器按键模块包括八个独立的按键,用于用户进行抢答操作。
按下按键时,将通过IO口发送信号给主控模块。
### 4.3 抢答器显示模块抢答器显示模块采用LED或LCD等显示器件,用于显示八个抢答器的状态,如按下、未按下等。
### 4.4蜂鸣器模块蜂鸣器模块用于发出抢答成功或失败的音频提示。
可以选择适合的蜂鸣器模块并通过IO口控制。
五、软件设计5.1 系统初始化在系统初始化过程中,需要对硬件进行初始化,包括IO口设置、定时器设置等。
### 5.2 抢答逻辑处理通过编程实现抢答逻辑处理,包括按键检测、抢答结果判断等。
当检测到抢答按键按下时,判断该抢答器是否首次按下,并显示相应的抢答结果。
单片机、微机原理课程设计(八路抢答器)

03
硬件电路设计
单片机、微机原理硬件电路设计
单片机:8051系列单片机,具有丰富的I/O接口和定时器/计数器资源
微机原理:基于8086/8088微处理器,具有丰富的指令集和内存资源
硬件电路设计:包括电源电路、时钟电路、复位电路、I/O接口电路、定时器/计数器电路等
八路抢答器:采用八路抢答器设计,实现八路抢答功能,具有抢答指示灯和抢答按钮等 硬件电路设计
感谢观看
汇报人:
电源电路设计
电源类型:直流电源或交流电源 电源电压:根据设备需求选择合适的电源电压 电源连接:确保电源线连接正确,避免短路或断路 电源保护:使用电源保护装置,如保险丝、断路器等,防止电源过载或短路。
04
软件程序设计
主程序流程图设计
初始化:设置抢 答器状态、显示 抢答器状态、设 置抢答时间
抢答阶段:判断 是否有人抢答、 判断抢答时间是 否结束、判断抢 答者是否正确
图设计
程序代码实现
程序设计语言:C语言
程序结构:主函数、子函数、 循环结构、条件判断等
程序功能:实现八路抢答器的 功能,包括抢答、计分、显示 等
程序优化:考虑程序的效率和 稳定性,进行优化和改进
05
系统调试与测试
系统调试步骤和方法
硬件连接:检查各模块之间的 连接是否正确,确保电源、地 线、信号线等连接无误。
八路抢答器的工作原理
八路抢答器由八路抢答按钮、八路抢答指示灯、八路抢答控制电路组成。
八路抢答按钮用于选手抢答,按下后,对应的八路抢答指示灯亮起,表示 抢答成功。
八路抢答控制电路用于控制八路抢答按钮和八路抢答指示灯的工作,确保 只有一个选手可以抢答成功。
八路抢答器通过单片机或微机原理实现,可以实时检测选手的抢答情况, 并给出相应的反馈。
单片机实验8路抢答器C语言版

抢答器具有定时抢答功能,且一次抢答的时间由主持人设定为30秒。
当主持人启动“开始”键后,定时器进行减计时,同时绿色LED灯亮。
二、
分别设置一个抢答控制开关S1和复位开关S2,由主持人控制。
抢答器具有锁存与显示功能。即选手按按钮抢答时,锁存相应的编号,并且优先抢
单片机综合实验报告
题 目
班 级:
姓 名:
学 号:
指导老师:
时 间:
一、
以单片机为核心,设计一个8位竞赛抢答器:同时供8名选手或8个代表队比赛,
分别用8个按钮SO〜S7表示。本实验有Protues软件仿真。
分别设置一个抢答控制ห้องสมุดไป่ตู้关S1和复位开关S2,由主持人控制。
抢答器具有锁存与显示功能。即选手按按钮抢答时,锁存相应的编号,并且优先抢
三、实验程序流程图:
主程序
非法抢答序;抢答时间调整程序;回答时间调整程序;倒计时程序;正常抢答处理程序;犯
规处理程序;显示及发声程序。主流程图如下图所示
子程序
答选手的编号一直保持显示在显示器上,直到主持人将系统复位为止。参赛选手在设 定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答 的时间,并保持到主持人将系统复位为止。复位后参赛队员可继续抢答。
如果定时时间已到,无人抢答,本次抢答无效,系统报警红色LED灯亮,并禁止抢
答,定时显示器上显示00。
单片机实验8路抢答器C语言版

单片机综合实验报告、实验内容:以单片机为核心,设计一个8位竞赛抢答器:同时供8名选手或8个代表队比赛,分别用8个按钮SO〜S7表示。
本实验有Protues软件仿真。
分别设置一个抢答控制开关S1和复位开关S2,由主持人控制。
抢答器具有锁存与显示功能。
即选手按按钮抢答时,锁存相应的编号,并且优先抢答选手的编号一直保持显示在显示器上,直到主持人将系统复位为止。
抢答器具有定时抢答功能,且一次抢答的时间由主持人设定为30秒。
当主持人启动“开始”键后,定时器进行减计时,同时绿色LED灯亮。
二、实验电路及功能说明分别设置一个抢答控制开关S1和复位开关S2,由主持人控制。
抢答器具有锁存与显示功能。
即选手按按钮抢答时,锁存相应的编号,并且优先抢答选手的编号一直保持显示在显示器上,直到主持人将系统复位为止。
参赛选手在设定的时间内进行抢答,抢答有效,定时器停止工作,显示器上显示选手的编号和抢答的时间,并保持到主持人将系统复位为止。
复位后参赛队员可继续抢答。
如果定时时间已到,无人抢答,本次抢答无效,系统报警红色LED灯亮,并禁止抢答,定时显示器上显示00。
三、实验程序流程图:主程序;非法抢答序;抢答时间调整程序;回答时间调整程序;倒计时程序;正常抢答处理程序;犯规处理程序;显示及发声程序。
主流程图如下图所示子程序四、实验结果分析五、心得体会六、程序清单#in elude <reg51.h>#defi ne uchar un sig ned char#defi ne uint un sig ned intsbit wela_a=P3A0;sbit wela 1=卩3人1;sbit wela2=P3A7;sbit rest=P3A5;sbit host=P3A6;sbit led 仁P3A4;〃绿灯sbit led2=P3A3;〃红灯sbit led3=P3A2;〃黄灯sbit key1=P1A0;sbit key2=P1Al;sbit key3=P1A2;sbit key4=P1A3;sbit key5=P1A4;sbit key6=P1A5;sbit key7=P1A6;sbit key8=P1A7;uchar x,q,d,s,ge,tO,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 keysca n();void mai n(){in it();display(s,ge,a);while(1){if(host==0) // 主持人控制开关{delay(5);if(host==0){flag=1;start=1;dela y(5); 延时while(!host); 检测开关}}if(rest==0) // 复位{delay(5);if(rest==0){q=30;led2=1;led3=1;x=0;delay(5);start=1;} }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;delay(5);while(!rest); } }if(flag==1) { if(start==O)〃 选手按下,倒计10秒开始{led3=0; wela1=0; wela2=0; delay(1); TRO=O; TR1=1; display(s,ge,a); delay(1);} if(start==1)//主持人按下,倒计时 30秒 { led 仁0; wela1=0; wela2=0; delay(1); TR0=1; TR1=0; display(s,ge,a); delay(1); keysca n();}PO=table[s];delay(5);wela_a=O;P2=table[a];delay(5);}void keyscan()/* 按键扫描函数*/ {if(key1==O){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];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); }start=0;}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){to=o;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() in terrupt 3/* {TH1=(65536-50000)/256; TL1=(65536-50000)%256; s=d/10;ge=d%10;t1++;{t仁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);}}}}定时器1*///最后,给朋友们一点点提示,本程序有一点点小问题,有个中断没关,当主持人复位之后,后面的选手回答问题的时间就没有10秒了(可怜啊)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机课程设计8路抢答器指导老师:宋*******学号:************ 班级:12电子卓越班目录一绪论 (3)二基本设计方案 (4)三具体设计 (5)四电路板的制作 (7)五电路功能测试与调试 (7)六心得体会 (8)附录 (9)一绪论1.1单片机抢答器的背景二十世纪跨越了三个“电”的时代,即电气时代、电子时代和现已进入的电脑时代。
不过,这种电脑,通常是指个人计算机,简称PC机。
它由主机、键盘、显示器等组成。
还有一类计算机,大多数人却不怎么熟悉。
这种计算机就是把智能赋予各种机械的单片机(亦称微控制器)。
顾名思义,这种计算机的最小系统只用了一片集成电路,即可进行简单运算和控制。
因为它体积小,通常都藏在被控机械的“肚子”里。
它在整个装置中,起着有如人类头脑的作用,它出了毛病,整个装置就瘫痪了。
现在,这种单片机的使用领域已十分广泛,如智能仪表、实时工控、通讯设备、导航系统、家用电器等。
各种产品一旦用上了单片机,就能起到使产品升级换代的功效,常在产品名称前冠以形容词——“智能型”,如智能型洗衣机等。
现在有些工厂的技术人员或其它业余电子开发者搞出来的某些产品,不是电路太复杂,就是功能太简单且极易被仿制。
究其原因,可能就卡在产品未使用单片机或其它可编程逻辑器件上。
在知识竞赛中,特别是做抢答题时,在抢答过程中,为了更确切的知道哪一组或哪一位选手先抢答到题,必须要有一个系统来完成这个任务。
若在抢答中,只靠人的视觉(或者是听觉)是很难判断出哪一组(或哪一个选手)先抢答到题的。
利用单片机编程来设计抢答器,可以使以上问题得以解决,即使两组的抢答时间相差几微秒,也能轻松的分辨出哪一组(或哪个选手)先抢答到题的。
本文主要介绍了抢答器的工作原理及设计,以及它的实际用途。
1.2设计要求:一、基本功能:1、六路抢答,抢答有效时相应的灯亮,并有音乐提示;2、每轮抢答需主持人按“开始”后,抢答才有效;3、抢答无效时,有相应的灯及音乐提示;二、扩展功能:1、扩展到8路或以上;2、抢答倒计时提示;3、各路的参赛者有得分显示;4、其他自行增加的功能;二基本设计方案2.1 单片机的选择我选择STC89C52单片机芯片的理由如下:1、在设计过程中可能会出现很多问题,89C52可重复烧程序;2、是80C51的增强型,功能与我们所学的51单片机基本相同;3、学校配套发的单片机开发板用的就是89C52,有很多相关教程,程序的测试与烧写都十分方便;4、器材室很方便就能领到。
89C52单片机,是增强型RISC内载Flash的单片机,芯片上的Flash存储器附在用户的产品中,可随时编程,再编程,使用户的产品设计容易,更新换代方便。
89C52单片机采用增强的RISC结构,使其具有高速处理能力,在一个时钟周期内可执行复杂的指令,每MHz可实现1MIPS的处理能力。
89C52单片机工作电压为2.7~6.0V,可以实现耗电最优化。
89C52的单片机广泛应用于计算机外部设备,工业实时控制,仪器仪表,通讯设备,家用电器,宇航设备等各个领域.2.2单片机的基本结构MCS-52的引脚说明:MCS-52系列单片机中的8032、8052及8752均采用40Pin封装的双列直接DIP 结构,右图是它们的引脚配置,40个引脚中,正电源和地线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用。
具体引脚功能不做赘述了(详细请参见《单片机原理与接口技术》宋跃)。
图2-2-1 STC89C52的引脚图2.3基本设计思路因为之前做过单片机最小系统的电路,这次为了节约时间,采取在最小系统的板旁边再焊一块电路。
一看到题目我的基本思路就差不多了,我要实现基本功能好说,倒是拓展不太难,于是选择了拓展到8路和抢答倒计时。
最小系统已经包括了手动复位电路,时钟电路,电源电路和89C52的I/O口排插,这块板上可以用的地方不多,只能焊一个蜂鸣器及其驱动电路了。
在另一块板上需要有8个按键、8个LED灯和一个数码管,并分别对应三个插排。
两块电路板之间高低电平用两根导线连通。
2.4相关功能器材的选择整体电路需要开关的地方:电源的启动,主持人的开始与复位,8名抢答选手用的抢答按钮。
考虑到电源需长时间保持开启或断开状态,故采用可保持按下或不按下状态的开关。
同理主持人的“开始”和“未开始”也需要这样的开关。
8名抢答选手用的抢答按钮,只需用4脚的按键即可,按下即接通,松开就断路。
8个LED灯来显示选手的抢答状况,1个LED灯用来显示电源的状况;一个数码管来显示主持人说“开始”后的倒计时;一个有源蜂鸣器,用一个NPN管来驱动;其他电容和电阻用最小系统的。
三具体设计3.1硬件设计如上所述,该电路部分电路采用之前做出来的单片机最小系统,根据前面的思路可以在ISIS中摆出电路,如下图所示:图3.1 仿真电路图3.2软件设计在ISIS中的89C52可以仿真烧录程序运行,这样可以先在Keil中编程然后烧录看仿真结果,省时省力。
我采用C语言编写程序,详细程序及分析请看附录。
3.3仿真测试在ISIS中调入hex文件后即可开始仿真,仿真结果如下图所示:图3.3 仿真测试结果主持人按下“开始”按钮后,数码管开始倒计时,从9到0一秒减一下,也就是抢答倒计时,在数码管显示0之前,8个开关无论哪一个先按下,对应的灯就会亮(蜂鸣器没响,因为仿真不出来),当这个灯亮起后,不论其他的开关怎样按都不能改变灯亮的情况,也就是实现了抢答的功能。
如果数码管减到0了都没人抢答,则抢答作废,这时无论再怎样抢答都不会有灯亮,实现抢答倒计时的功能。
在主持人再次按下“复位”按钮(和“开始”是同一个)时,数码管和LED都熄灭,同时所有人都不能抢答,实现清零功能。
四电路板的制作4.1元件清单4.2焊接在实际焊接过程中,有很多地方元件以及走线十分密集,如8个按键、8个LED灯、8脚数码管和3个排针的焊接,这需要十分的耐心,稍不注意就将排布密集的锡线焊到了一起,只能用锡枪吸走重新焊。
还有一些问题如元件如何摆放平整,如果不平整其他元件难以放得下;LED 灯和数码管不能用高温焊太久,否则会毁掉,到时候很难检查出问题;元件的排版必须事先计算好,连走线都要想好,不然一步错步步错。
经过一个下午的焊接,最终还是将它做出来了。
五电路功能测试与调试5.1测试测试采用5V电源线接电脑供电,先用开发板将程序烧录进89C52,然后插入到板上的IC座,将剩余的线连好后开启电源,电源指示灯亮,结果数码管不亮,按抢答器也不亮,复位键也无任何作用,蜂鸣器也不响。
5.2调试一下是我遇到的问题及解决的过程。
1、除电源键外,其他键都无反应,蜂鸣器也不响。
仔细检查电路后,我发现是接口接触的问题,而且我NPN管忘了接P0口。
2、通电后,数码管不亮,能实现抢答器的功能,但一旦按下按键蜂鸣器一直响。
后来发现是我程序我的问题,仿真上显示不出来,于是我修改程序。
3、通电后,能实现抢答的功能,蜂鸣器也能正常工作了,但是数码管显示乱码,还是一秒一跳。
后来我发现本身程序有一点问题,仿真程序上的数码管和我自己用的数码管不同,只能修改程序。
最后,经过一系列的调试与修改后,终于实现了预期功能。
六心得体会经过一个星期的努力,我完成了设计任务,通过此次课程设计,我重新认识到了自学的重要性,以及学以致用的道理。
我在图书馆以及网上查阅了大量的资料,同时也认识到了查阅信息的重要作用。
通过此次的抢答器的设计,让我重新拾起了以前所学习的电子知识,及我觉得此次设计让我更加巩固了所学的知识并在设计的过程中学会了与时俱进,让我受益匪浅。
这一次课程设计的练习,很多事情我都不可以独立完成,很多方面都需要同学的帮助,我也深刻认识到自己的不足,知识的欠缺问题很大,需要在编程方面大下功夫。
同时因为我这次课程设计用的是C语言,也希望自己学的更好了以后,能用汇编语言来实现同样的功能。
还有一点很重要,不能依赖仿真软件,软件本身有很多弊端不说,仿真出来的结果也不一定正确,很容易被误导,附录电路板实物图:C程序:#include<reg51.h>unsigned char flag,num1,num2;sbit a1=P3^0;//P3口开关sbit a2=P3^1;sbit a3=P3^2;sbit a4=P3^3;sbit a5=P3^4;sbit a6=P3^5;sbit a7=P3^6;sbit a8=P3^7;sbit b1=P1^0;//P1口蜂鸣器sbit b2=P1^1;sbit b3=P1^2;unsigned char code table[]={0x80,0xf9,0x4c,0x60,0x31,0x22,0x02,0xf0,0x00,0x20};//数码管显示void display(){P2=table[num2]; //P2口数码管void init(){num2=9;TMOD=0X01;TH0=(65536-45872)/256;TL0=(65536-45872)/256;EA=1;ET0=1;TR0=1;flag=1;//全局变量P0=0xff;//P0口LED灯b1=1;P2=0xff;}void delay(int z)//延时程序{int i,j;for(i=0;i<z;i++)for(j=0;j<110;j++);}void main(){init();while(flag){if(a1==0){delay(100);//调用延时程序消除抖动if(a1==0)//判断开关a1是否按下{flag=0;P0=0xfe;//对应LED灯亮b1=0;//蜂鸣器响while(!a1);//按住时持续响b3=0;b1=1;}}if(a2==0)//同理判断a2{delay(100);if(a2==0){flag=0;P0=0xfd;b1=0;while(!a2);b1=1;}}if(a3==0)//同理判断a3 {delay(100);if(a3==0){flag=0;P0=0xfb;b1=0;while(!a3);b1=1;}}if(a4==0)//同理判断a4 {delay(100);if(a4==0){flag=0;P0=0xf7;b1=0;while(!a4);b1=1;}}if(a5==0)//同理判断a5 {delay(10);if(a5==0){flag=0;P0=0xef;b1=0;while(!a5);b1=1;}}if(a6==0)//同理判断a6{delay(10);if(a6==0){flag=0;P0=0xdf;b1=0;while(!a6);b1=1;}}if(a7==0)//同理判断a7{delay(10);if(a7==0){flag=0;P0=0xbf;b1=0;while(!a7);b1=1;}}if(a8==0)//同理判断a8{delay(10);if(a8==0){flag=0;P0=0x7f;b1=0;while(!a8);b1=1;}}}while(!flag){EA=0;if(P3!=0xff)//没有开关按下时不响也不亮{b1=0; b2=0;delay(50);}else b1=1;}}void t0_time() interrupt 1 {TH0=(65536-45872)/256; TL0=(65536-45872)/256; num1++;if(num1==20){num1=0;num2--;display();if(num2==0){EA=0;flag=0;}}}。