1、单片机课程设计八路抢答器摘要随着社会的不断发展和科学技术的不断提高,各种工业自动化不断升级,电子技术得到了飞速发展,基于单片机的控制系统已广泛应用与工业、农业、电力、电子、智能楼宇等行业,微型计算机作为嵌入式控制系统的主体与核心,代替了传统的控制系统的常规电子线路。本设计是以八路抢答为基本理念,考虑到需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间和抢答的号码。用开关做键盘输出,扬声器发生提示,并且有警告灯显示。 关键词:单片机,抢答器,显示目
2、录第一章 概述1.1课题背景随着科学技术的发展和普及,各种各样的竞赛越来越多,其中抢答器的作用也就显而易见。目前很多抢答器基本上采用小规模数字集成电路设计,使用起来不够理想。因此设计一更易于使用和区分度高的抢答器成了非常迫切的任务。现在单片机已进入各个领域,以其功耗小、智能化而著称,所以若利用单片机来设计抢答器,便使以上问题得以解决。1.2课题的意义与发展方向随着电子技术的发展,抢答器作为一种电子产品,早已广泛应用于企业单位、学校和电视台,为各种知识竞赛、文娱活动提供公正客观快速的裁决。它能迅速、客观地分辨出哪位选手最先按下的抢答键,大大增强了比赛的公平性,给人们带来了很大的方便。而随着科学技
3、术的不断发展,以单片机作为主控制器的抢答器占据了主要的地位。目前数字电子技术已经广泛地应用于计算机、自动控制、电子测量仪表、电视、雷达、通信等各个领域。例如在现代测量技术中,数字测量仪表不仅比模拟测量仪表精度高,功能高,而且容易实现测量的自动化和智能化。随着集成技术的发展,尤其是中,大规模和超大规模集成电路的发展,数字电子技术的应用范围将会更广泛地渗透到国民经济的各个部门,并将产生越来越深刻的影响。第二章 硬件电路设计2.1 系统的控制要求与总体结构系统的控制要求:1. 给主持人设置一个开关,用来控制系统的重启(编号显示数码管重置初始时间)和抢答器的倒计时开始。2. 抢答器显示和倒计时的功能。
4、抢答开始后,若有选手按动抢答器按钮,编号立即锁存,并在LED数码上显示选手的编号,同时扬声器给出音响提示。此外,要封锁输入电路,禁止其他选手抢答。系统的总体结构:图2-1 八位抢答器总体电路图2.2外部振荡电路的设计图2-2 八位抢答器外部振荡电路一般选用石英晶体振荡器。此电路在加电大约延迟10ms后振荡器起振,在XTAL2引脚产生幅度为3V左右的正弦波时钟信号,其振荡频率为11.0592HZ。电路中两个电容 C1,C2的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。C1,C2的典型值为30PF。2.3复位电路的设计单片机的第9脚RST为硬件复位端,只要将该端持续4个机器周期的高
5、电平即可实现复位,复位后单片机的各状态都恢复到初始化状态,其电路图如图2-3所示:图2-3 八位抢答器复位电路在方案中使用到了硬件复位和软件复位两种功能,由上面的硬件复位可使寄存器及存储器的值都恢复到初始值,而前面的功能提到了倒计时间需要有记忆功能,该功能实现的前提条件就是不能对单片机进行硬件复位,所以设定了软复位功能。软复位实际上就是当程序执行完毕之后,将程序指针通过一条跳转指令让它跳转到程序执行的起始地址。2.4显示电路的设计显示电路使用了七段数码管7SEG-MPX4-CC,属于共阴极的,由高电平点亮。图3-4 八位抢答器阴极七段数码管2.5 按钮输入电路的设计抢答器的输入按钮使用常开开关
6、:图2-5 八位抢答器抢答按键这些常开开关组成了抢答按键,硬件电路简单,在程序设计上也不复杂,只要在程序中消除在按键过程中产生的“毛刺” 现象就可以了。这里采用最常用的方法即延时法,其的原理为:因为“毛刺”脉冲一般持续时间短,约为几ms,而按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间(这里取10ms)后再判断此电平是否保持原状态,如果是则为有效按键,否则无效。2.6 报警电路的设计这里能利用程序来控制单片机P3.1口线反复输出高电平或低电平,即在该口线上产生一定频率的矩形波,接上扬声器就能发出一定频率的声音,再利用延时程序控制“高”“低”电平的持续时间,就能改变
7、输出频率,从而改变音调,使扬声器发出不同的声音。图2-6 八位抢答器报警电路第三章 软件电路设计3.1八位抢答器流程图八位抢答器流程图如3-1所示 图3-1 八位抢答器流程图3.2八位抢答器程源序在目前单片机的发展中,其编程语言主要有C语言和汇编语言。C语言是高级语言,编写起来比较简单易维护,汇编语言介于机器语言和高级语言之间,更接近于硬件,但编写起来比较冗长。介于本次程序稍微复杂,所以我们这一组选择的程序采用C语言来编写。#include #define uint unsigned int #define uchar unsigned char /共阴极数码管编码表 0 - f 显示 uns
8、igned char code table=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f; /变量定义 sbit BEEP=P31;sbit start_stop = P32; sbit reset = P33; sbit key1 = P10; sbit key2 = P11; sbit key3 = P12; sbit key4 = P13; sbit key5 = P14; sbit key6 = P15; sbit key7 = P16; sbit key8 = P17; sbit state = P30; bit start_s
9、top_flag = 0; bit key1_flag = 0; bit key2_flag = 0; bit key3_flag = 0; bit key4_flag = 0; bit key5_flag = 0; bit key6_flag = 0; bit key7_flag = 0; bit key8_flag = 0; bit reset_flag = 0; bit action = 0; uchar second = 20; uchar timer0_count = 0; uchar number = 0; uchar number_display = 0; uint flag =
10、 1;/延时函数 void delay(uint z) uint x,y; for(x=z;x0;x-) for(y= 120;y0;y-); /蜂鸣器发声延时void DelayMS(uint x) uchar t; while(x-) for(t=0;t100;t+);/数码管显示驱动函数 void display(uchar number,uchar second) uchar second_first,second_second; second_first = second / 10; second_second = second % 10; P0 =0x00; P2 = 0xfe;
11、P0 = tablenumber; delay(2); P0 =0x00; P2 = 0xfd; P0 = 0x40; delay(2); P0 =0x00; P2 = 0xfb; P0 = tablesecond_first; delay(2); P0 =0x00; P2 = 0xf7; P0 = tablesecond_second; delay(2); P0 =0x00; /蜂鸣器响应按周期t发音void Play(uchar t) uchar i; for(i=0;i1;i+) BEEP=BEEP; DelayMS(t); BEEP=0;/开始键扫描函数 void start_stop
12、_keyscan() if(start_stop = 0) delay(8); if(start_stop = 0)&(!start_stop_flag) start_stop_flag = 1; action = 1; TR0 = 1; state = 0; else start_stop_flag = 0; /八位抢答键扫描函数 uchar key_scan8() if(key1 = 0) delay(8); if(key1 = 0)&(!key1_flag) key1_flag = 1; number = 1; number_display = number; else key1_fla
13、g = 0; number = 0; if(key2 = 0) delay(8); if(key2 = 0)&(!key2_flag) key2_flag = 1; number = 2; number_display = number; else key2_flag = 0; number = 0; if(key3 = 0) delay(8); if(key3 = 0)&(!key3_flag) key3_flag = 1; number = 3; number_display = number; else key3_flag = 0; number = 0; if(key4 = 0) de
14、lay(8); if(key4 = 0)&(!key4_flag) key4_flag = 1; number = 4; number_display = number; else key4_flag = 0; number = 0; if(key5 = 0) delay(8); if(key5 = 0)&(!key5_flag) key5_flag = 1; number = 5; number_display = number; else key5_flag = 0; number = 0; if(key6 = 0) delay(8); if(key6 = 0)&(!key6_flag)
15、key6_flag = 1; number = 6; number_display = number; else key6_flag = 0; number = 0; if(key7 = 0) delay(8); if(key7 = 0)&(!key7_flag) key7_flag = 1; number = 7; number_display = number; else key7_flag = 0; number = 0; if(key8 = 0) delay(8); if(key8 = 0)&(!key8_flag) key8_flag = 1; number = 8; number_
16、display = number; else key8_flag = 0; number = 0; if(number_display != 0) return 1; else return 0; /复位键扫描函数 void reset_keyscan() if(reset = 0) delay(8); if(reset = 0)&( !reset_flag) reset_flag = 1; number_display = 0; state = 1; else reset_flag = 0; /主函数 void main() uint t; TMOD=0x01; TH0=(65536-500
17、00)/256; TL0=(65536-50000)%256; EA= 1; ET0= 1; TR0=0; while( 1) if(number_display!=0) Play(number_display/2); /蜂鸣器发声 start_stop_keyscan(); reset_keyscan(); while(action) while(!key_scan8() display(number_display,second); if(second = 0) second = 20; break; TR0 = 0; display(number_display,second); act
18、ion = 0; break; display(number_display,second); /中断服务函数 void timer0() interrupt 1 uint i; TH0=(65536-50000)/256; TL0=(65536-50000)%256; timer0_count +; if(timer0_count = 20) timer0_count = 0; second -; if(second = 0) Play(2); TR0 = 0; number_display = 0; state = 1; action = 0; 第四章 结论经过此次课程设计,我明白了任何一
19、个控制系统都是要经过实践和时间的考验方能不断的完善。而我们自己也应该学会认真、专心,更有毅力的做一件事情,这样我们在以后的学习和生活中才能经得起实践和时间的考验。同时,通过这次课程设计我发现,只有理论水平提高了;才能够将课本知识与实践相整合,理论知识服务于教学实践,以增强自己的动手能力。这个课程设计十分有意义 ,我获得很深刻的经验。通过这次课程设计,我们知道了理论和实际的距离,也知道了理论和实际想结合的重要性,也从中得知了很多书本上无法得知的知识。感想本课程设计是在同学的讨论下和查阅各种资料下完成的,通过这次课程设计,我深刻的认识到了团队力量是多么的强大,也明白了以后再有课程设计之类的或有什么
20、难题要多向周围的人请教,多上网找答案。而不只是一个人专研。在此,我还要感谢同组同学的帮忙,在论文资料的收集和实验期间,不管遇到什么困难同组同学都主动给予帮助、认真讨论学习,在此也感谢他们!参考文献1 张伟.单片机原理及应用,机械工业出版社,20052 张鑫.单片机原理及应用,电子工业出版社,20053 曹国清.数学电路与逻辑设计中国矿业大学出版社,20044 任致程.经典集成电路400例机械工业出版社,20025 薛栋梁.单片机原理及应用,中国水利水电出版社,20016 吴金戎,沈庆阳等.8051单片机实践与应用,清华大学出版社,20017杨晓辉、张彤、姜俊海. 智能抢答器的设计与制作J. 长春大学学报. 2000.06:24-258 张培仁. MCS-51单片机原理与应用M.北京:清华大学出版社,2003.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1