单片机课程设计(八路抢答器)_第1页
单片机课程设计(八路抢答器)_第2页
单片机课程设计(八路抢答器)_第3页
单片机课程设计(八路抢答器)_第4页
单片机课程设计(八路抢答器)_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、摘要随着社会的不断发展和科学技术的不断提高,各种工业自动化不断升级,电子技术得到了飞速发展,基于单片机的控制系统已广泛应用与工业、农业、电力、电子、智能楼宇等行业,微型计算机作为嵌入式控制系统的主体与核心,代替了传统的控制系统的常规电子线路。本设计是以八路抢答为基本理念,考虑到需设定限时回答的功能,利用AT89C51单片机及外围接口实现的抢答系统,利用单片机的定时器/计数器定时和记数的原理,将软、硬件有机地结合起来,使得系统能够正确地进行计时,同时使数码管能够正确地显示时间和抢答的号码。用开关做键盘输出,扬声器发生提示,并且有警告灯显示。 关键词:单片机,抢答器,显示目录第一章 概述1.1课题

2、背景随着科学技术的发展和普及,各种各样的竞赛越来越多,其中抢答器的作用也就显而易见。目前很多抢答器基本上采用小规模数字集成电路设计,使用起来不够理想。因此设计一更易于使用和区分度高的抢答器成了非常迫切的任务。现在单片机已进入各个领域,以其功耗小、智能化而著称,所以若利用单片机来设计抢答器,便使以上问题得以解决。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 按钮输入电路的设计抢答器的输入按钮使用常开开关:图2-5 八位抢答器抢

6、答按键这些常开开关组成了抢答按键,硬件电路简单,在程序设计上也不复杂,只要在程序中消除在按键过程中产生的“毛刺” 现象就可以了。这里采用最常用的方法即延时法,其的原理为:因为“毛刺”脉冲一般持续时间短,约为几ms,而按键的时间一般远远大于这个时间,所以当单片机检测到有按键动静后再延时一段时间(这里取10ms)后再判断此电平是否保持原状态,如果是则为有效按键,否则无效。2.6 报警电路的设计这里能利用程序来控制单片机P3.1口线反复输出高电平或低电平,即在该口线上产生一定频率的矩形波,接上扬声器就能发出一定频率的声音,再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从而改变音调,

7、使扬声器发出不同的声音。图2-6 八位抢答器报警电路第三章 软件电路设计初始化部分P3.2= =0启动中断,数码管开始计时20秒若有选手抢答中断停止,数码管显示选手的标号及选中时间结束开始NYYN3.1八位抢答器流程图八位抢答器流程图如3-1所示 图3-1 八位抢答器流程图3.2八位抢答器程源序在目前单片机的发展中,其编程语言主要有C语言和汇编语言。C语言是高级语言,编写起来比较简单易维护,汇编语言介于机器语言和高级语言之间,更接近于硬件,但编写起来比较冗长。介于本次程序稍微复杂,所以我们这一组选择的程序采用C语言来编写。#include <reg52.h> #define uin

8、t unsigned int #define uchar unsigned char /共阴极数码管编码表 0 - f 显示 unsigned 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 = P1

9、5; sbit key7 = P16; sbit key8 = P17; sbit state = P30; bit start_stop_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_

10、count = 0; uchar number = 0; uchar number_display = 0; uint flag = 1;/延时函数 void delay(uint z) uint x,y; for(x=z;x>0;x-) for(y= 120;y>0;y-); /蜂鸣器发声延时void DelayMS(uint x)uchar t;while(x-)for(t=0;t<100;t+);/数码管显示驱动函数 void display(uchar number,uchar second) uchar second_first,second_second; sec

11、ond_first = second / 10; second_second = second % 10; P0 =0x00; P2 = 0xfe; 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

12、 i;for(i=0;i<1;i+)BEEP=BEEP;DelayMS(t);BEEP=0;/开始键扫描函数 void start_stop_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 =

13、 0)&&(!key1_flag) key1_flag = 1; number = 1; number_display = number; else key1_flag = 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)&&(!k

14、ey3_flag) key3_flag = 1; number = 3; number_display = number; else key3_flag = 0; number = 0; if(key4 = 0) delay(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_f

15、lag = 1; number = 5; number_display = number; else key5_flag = 0; number = 0; if(key6 = 0) delay(8); if(key6 = 0)&&(!key6_flag) 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

16、= 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_display = number; else key8_flag = 0; number = 0; if(number_display != 0) return 1; else return 0; /复位键扫描函数 void reset_keyscan() if(reset = 0) del

17、ay(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-50000)/256; TL0=(65536-50000)%256; EA= 1; ET0= 1; TR0=0; while( 1) if(number_display!=0) Play(number_display/2); /蜂鸣器发声 start_stop_keyscan()

18、; reset_keyscan(); while(action) while(!key_scan8() display(number_display,second); if(second = 0) second = 20; break; TR0 = 0; display(number_display,second); action = 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; 第四章 结论经过此次课程设计,我明白了任何一个控制系统都是要经过实践和时间的考验方能不断的完善。而我们自己也应该学会认

温馨提示

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

评论

0/150

提交评论