基于80C51的八路抢答器单片机课程设计.doc_第1页
基于80C51的八路抢答器单片机课程设计.doc_第2页
基于80C51的八路抢答器单片机课程设计.doc_第3页
基于80C51的八路抢答器单片机课程设计.doc_第4页
基于80C51的八路抢答器单片机课程设计.doc_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于800C51的八路抢答器 广东技术师范学院目 录1 引言42 总体方案设计43 硬件电路设计53.1 单片机及其外围电路53.2 硬件电路组成64 系统软件设计104.1 初始化程序设计104.2 主程序设计114.3 倒计时30s子程序的设计12(有待拓展)4.4 外部中断T1中断子程序设计144.5 定时器T1中断子程序设计174.6 选手按键程序的设计184.7 数码管显示程序的设计195 系统调试与总结21附录B 源程序221 引言此次设计提出了用80C51单片机为核心控制元件,设计一个简易的抢答器,本方案以80C51单片机作为主控核心,与数码管、蜂鸣器等构成八路抢答器,利用了单片机的延时电路、按键复位电路、时钟电路、定时/中断等电路,设计的八路抢答器具有倒计时和实时显示抢答选手的号码的特点,还有复位电路,使其再开始新的一轮的答题和比赛。它的功能实现是比赛开始,主持人读完题之后按下总开关,倒计时开始,此时数码管开始进行30s的倒计时,是选手的思考时间,倒计时完后,才允许开始抢答,若有人答题,对应的会在数码管上显示出该选手的编号并由蜂鸣器发出声音,在30s倒计时内答题无效。2 总体方案设计蜂鸣电路AT89C51复位电路/主持人案件抢答器倒计时显示电路独立式按键键盘 图2.1 总体电路设计框图总体程序设计思路图为如图2.1所示。复位电路:当一轮进行完时,由主持人按下,下一轮倒计时开始,复位电路接P3.3口。独立式按键键盘:用于输入高低电平,连接到P1口,由P1口检测电平的变化。抢答器倒计时显示电路:有三位数码管组成,前两位显示30s倒计时,由第三位显示成功抢答选手编号。蜂鸣电路:有选手抢答成功,P3.1口发出脉冲,使蜂鸣器发出声音。3 硬件电路设计3.1 单片机最小系统微控制器采用AT89C51。AT89C51是美国ATMEL公司生产的与MCS-51系列单片机完全兼容的高性能CMOS 8位单片机,MCS-51系列单片机以其推出时间早、配套资源丰富、开发手段完善、性价比高等特点而得到了广泛的应用,是单片机的主流品种。AT89C51的内部资源主要包括:与MCS-51 系列完全兼容的高性能8位CPU;4K字节可重复编程的Flash存储器;256字节的SRAM;4个8位的并行口,共32条I/O口线;3个16位的定时器/计数器;6个中断源,2个中断优先级的中断系统;一个全双工的串行口;内部振荡器;可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路其最小系统主要包括复位电路,时钟电路,如下图3.1所示。图3.1 单片机最小系统电路图3.2 硬件电路功能说明(1)复位电路的设计MCS-5l的复位输入引脚RST为MCS-51提供了初始化的手段,可以使程序从指定处开始执行,在MCS-5l的时钟电路工作后,只要RST引脚上出现超过两个机器周期以上的高电平时,即可产生复位的操作只要RST保持高电平,则MCS-5l循环复位只有当RST由高电平变低电平以后。MCS-51才从0000H地址开始执行程序。本系统采用按键复位方式的复位电路。复位电路:当一轮进行完时,由主持人按下,下一轮倒计时开始,如图3.2所示。图3.2 复位控制电路(2)独立式按键键盘设计键盘接口中使用多少根I/O线,键盘中就有几个按键,键盘接口使用了8根I/O口线,该键盘就有8个按键,这种类型的键盘,其按键比较少,且键盘中各按键的工作互不干扰。因此可以根据实际需要对键盘中的按键灵活的编码。最简单的编码方式就是根据I/O输入口所直接反映的相应按键,按下的状态进行编码,称按键直接状态码,对于这样编码的独立式键盘,CPU可以通过直接读取I/O口的状态来获取按键的直接状态编码值,根据这个值直接进行按键识别,这样形式的键盘结构简单,按键识别容易。独立式键盘的缺点是需要占用比较多的I/O口线,当单片机应用系统键盘中需要的按键比较少或I/O口线比较富余时,可以采用这样类型的键盘。 独立式按键键盘:用于输入高低电平,八位选手抢答时高低电平发生变化,如图3.3所示。图3.3 抢答按键部分(3)数码管显示部分设计 LED动态显示是单片机中应用最为广泛的一种显示方式,其接口电路是把所有显示器的8个笔划段a-dp 同名端并联在一起,而每一个显示器的公共极COM是各自独立地受I/O线控制,CPU的字段输出口送出字形码时,所有显示器由于同名端并连接收到相同的字形码,但究竟哪个显示器亮,则取决于COM端,而这一端是由I/O控制的,所以就可以自行决定何时显示哪一位了,在轮流点亮扫描过程中,每位显示器的点亮时间表是极为短暂的,但由于人的视觉暂留现象及发光二极管的余辉将就尽管实际上各位显示器并非间时点亮,但只要扫描速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感。抢答器倒计时显示电路:有三位数码管组成,前两位显示30s倒计时,第三位显示成功抢答选手编号,如图3.4所示。图3.4 显示控制部分图(4)蜂鸣器电路设计我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线的“高”电平或低电平,则在该口线上就能产生一定频率的巨型波,接上喇叭就能发出一定频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使喇叭发出不同的声音。单片机通过内部定时器的操作实现交替变换的波形输出驱动扬声器发声,有选手抢答成功,使蜂鸣器发出声音,如图3.5所示。图3.5 蜂鸣器提示时间部分图4 系统软件设计系统软件分为主程序、中断服务程序和子程序三部分4.1 主程序(主程序流程框图见图4.1)图4.1 主程序流程框图主程序是系统上电或复位后首先要执行的程序,主程序主要完成系统的初始化、扫描显示、扫描键盘等工作。程序流程如图4.1所示,对单片机进行初始化,包括设置堆栈、倒计时30S设置、定时器T0设置,外部中断设置,键盘扫描设置,初始化状态时显示000。4.3 倒计时30s子程序:(定时器T0中断子程序框图如图4.2所示) 图4.2 定时器T0中断子程序框图 首先要把累加器ACC和程序状态字PSW放入堆栈保护,然后进行倒计时的设置,设置为30S倒计时,先看看1S到没,如果到,倒计时自动减1,并在数码管显示,再判断倒计时的30s到没,没到继续倒计时并显示,倒计时计完为止,然后弹出累加器ACC与程序状态字PSW,中断退出,返回到中断入口处。 4.4 外部中断T1中断子程序:(外部T1中断子程序框图如图4.3所示)图4.3 外部T1中断子程序框图外部中断T1中断时要先把累加器ACC和程序状态字PSW放入堆栈保护,然后把20H标志位置0,再调用显示程序,T0开始定时,T1停止,然后设置30S倒计时,设置之后弹出累加器ACC与程序状态字PSW,中断退出,返回到中断入口处。 4.5 定时器T1中断子程序:(定时器T1中断程序框图如图4.4所示)图4.4 定时器T1中断程序框图定时器T1中断时要先把累加器ACC和程序状态字PSW放入堆栈保护,然后就是响铃,接上喇叭,利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,使喇叭发出不同的声音。设置之后弹出累加器ACC与程序状态字PSW,中断退出,返回到中断入口处。 4.6 选手按键程序:(键盘扫描程序框图如图4.5所示)图4.5 键盘扫描程序框图键盘扫描时先判断20H单元和21H单元标志位是否为0,是的话说明允许键盘扫描,否的话即不允许键盘扫描,不允许扫描就返回调用,结束,允许扫描时开始扫描P1口看有没有选手按下答题键,按下时此口变为低电平0,如果没有选手按键,则判断P1口有没有扫描完,没有扫描完就继续扫描,扫面完没有选手按下就检查20H和21H4.7 数码管显示程序:(显示子程序框图如图4.6所示) 图4.6 显示子程序框图进入显示子程序先把选手的号码显示于01数码管,然后是选手的答题时间十秒钟倒计时显示,把个位显示在02数码管上,把十位显示在04数码管上,同时把倒计时的数值减1后存在61H和62H中,判断倒计时是否结束到0,结束的话返回调用,倒计时没有结束即继续倒计时。源程序#include#define uchar unsigned charunsigned char code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/*unsigned char ge=0,shi=0; */ sbit P10=P10;sbit P11=P11;sbit P12=P12;sbit P13=P13;sbit P14=P14;sbit P15=P15;sbit P16=P16;sbit P17=P17;sbit P27=P27;sbit P20=P20;sbit P30=P30;sbit P31=P31;sbit P32=P32;sbit P33=P33;sbit P34=P34;sbit P35=P35;sbit P36=P36;sbit P37=P37;uchar k=0,j,x,aa;/*void display1(aa);*/void delay(uchar i) for(j=i;j0;j-) for(x=110;x0;x-);void main()P1=0x0f;P3=0x0f;while(1) if(P10=0) delay(5); if(P10=0) k+; if(k=1)P14=1; P20=0;P27=0;delay(220);P20=1; P0=table1; while(1); if(P11=0) delay(5); if(P11=0) k+;if(k=1) P15=1; P20=0; P27=0;delay(220);P0=table2;P20=1;while(1); if(P12=0) delay(5); if(P12=0) k+;if(k=1)P16=1; P20=0;P27=0;delay(220);P20=1;P0=table3;while(1); if(P13=0) delay(5); if(P13=0) k+;if(k=1)P17=1; P20=0;P27=0;delay(220);P20=1;P0=table4;while(1); if(P30=0) delay(5); if(P30=0) k+; if(k=1)P34=1; P20=0;P27=0;delay(220);P20=1; P0=table5; while(1); if(P31=0) delay(5); if(P31=0) k+; if(k=1)P35=1; P20=0;P27=0;delay(220);P20=1; P0=table6; while(1); if(P32=0) delay(5); if(P32=0) k+; if(k=1)P36=1; P20=0;P27=0;delay(220);P20=1; P0=table7; while(1); if(P33=0) delay(5); if(P33=0) k+; if(k=1)P37=1; P20=0;P27=0;delay(220);P20=1; P0=table8; while(1); 5 总结这次课程设计老师给我们安排了两个星期的时间,可以说是比较充裕的。刚开始我们拿了课题觉得还行,然后各司其职,分工合作,有人负责硬件有人负责软件,但是 整个过程都是一起讨论一起工作,虽然之前做过一些东西,但都是自己一个人做的,这次几个人一起合作,感觉到了团队的力量,分工明确,所以做起来很轻松,一两天就搞定它,理论与时间相结合,整个过程我们经历了设计,做电路板,测试硬件,写软件,调试,整个流程都是靠之前学过的东西来做,所以实际锻炼价值还是比较高的,为我们今后做更复杂作品奠定基础。袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇羅膃蚈螂羁膂莈蚅袇膁蒀袀螃膀薂蚃肂腿节衿羈腿莄蚂袄芈蒇袇螀芇蕿蚀聿芆艿蒃肅芅蒁螈羁芄薃薁袆芃芃螆螂芃莅蕿肁节蒈螅羇莁薀薈袃莀艿螃蝿荿莂薆膈莈薄袁肄莇蚆蚄羀莇莆袀袆羃蒈蚂螂羂薁袈肀肁芀蚁羆肁莃袆袂肀薅虿袈聿蚇蒂膇肈莇螇肃肇葿薀罿肆薂螆袅肅芁薈螁膅莃螄聿膄蒆薇袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螈螇芁芇莄袀肄膃莄羂艿蒂莃蚂肂莈蒂螄芈芄蒁袆肀膀蒀罿袃薈葿螈聿蒄葿袁羁莀蒈羃膇芆蒇蚃羀膂蒆螅膅蒁薅袇羈莇薄罿膄芃薃虿羆艿薃袁节膅薂羄肅蒃薁蚃芀荿薀螆肃芅蕿袈芈膁蚈羀肁蒀蚇蚀袄莆蚇螂肀莂蚆羅袂芈蚅蚄膈膄蚄螇羁蒂蚃衿膆莈蚂羁罿芄螁蚁膄膀螁螃羇葿螀袅膃蒅蝿肈羆莁螈螇芁

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论