基于51单片机的多功能抢答器微机原理实验报告_第1页
基于51单片机的多功能抢答器微机原理实验报告_第2页
基于51单片机的多功能抢答器微机原理实验报告_第3页
基于51单片机的多功能抢答器微机原理实验报告_第4页
基于51单片机的多功能抢答器微机原理实验报告_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

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

文档简介

1、三、 总体设计思路 . 1四、 本设计与功能介绍 . 25.1 控制器选择 . 25.2 键盘选择 . 25.4 复位电路的设计 . 45.5 报警电路 . 45.6 发声电路抢答器显示模块选择 . 5七、问题分析 . 17一、设计内容1. 抢答器可同时供 8 名选手或 8 个代表队比赛,分别用 8 个按键 s1s8 进行抢答。2. 具有清零和非法抢答控制功能,并由主持人操纵,避免选手在主持人按“开始”前提前抢 答,违反规则 。3. 当主持人启动“开始抢答键”后,定时器进行减计时,在20s 内无人抢答表示所有参赛选 手或参赛队对本题弃权,抢答时间耗尽后禁止抢答。4. 倒计时 5s 时,如果仍无

2、人抢答,则系统每 1s 报警一次,用以提示参赛选手。5. 抢答器具有锁存与显示功能。即选手按下按键,锁存相应选手的参赛号码,并在led 数码 管上显示。选手抢答实行优先锁存,其他按键者将不能响应,以便公平地选择第一个抢答者。 6. 倒计时期间,如果主持人想终止倒计时,可以按下“停止”按键,系统会自动进入准备状 态。二、设计目的 :(1) 掌握单片机中汇编语言的使用(2) 学会使用 proteus 以及 keil 软件的编辑使用(3) 真正理解单片机中软硬件结合工作的原理(4) 学会查阅资料进行课程的设计(5) 学会对设计结果整体评估(6) 确定最终方案,并进一步优化完成设计三、总体设计思路主控

3、制器模块:采用 at89c51 单片机控制1抢答器显示模块:数码管显示电源选择:采用 4.5v 电源供电四、本设计与功能介绍此次设计提出了用 at89c51 单片机为核心控制元件,设计一个简易的抢答器,本方案以 at89c51 单片机作为主控核心,与晶振、数码管、蜂鸣器等构成八路抢答器,利用了单片机 的延时电路、按键复位电路、时钟电路、定时/中断等电路,设计的八路抢答器具有实时显示 抢答选手的号码和抢答时间的特点,还有复位电路,使其再开始新的一轮的答题和比赛,同 时还利用 c51 语言编程,使其实现一些基本的功能。本设计的系统实用性强、判断精确、操 作简单、扩展功能强。它的功能实现是比赛开始,

4、主持人读完题之后按下总开关,即计时开 始,此时数码管开始进行 20s 的倒计时,直到有一个选手抢答时,对应的会在数码管上显示 出该选手的编号和抢答所用的时间,如果在规定的 20s 时间内没有做出抢答,则此题作废, 即开始重新一轮的抢答。在抢答和回答时间的最后 5s,蜂鸣器都会给予报警提示。功能介绍主持人按“抢答开始”键,立刻进入抢答倒计时(预设20s 抢答时间),如有选 手抢答,会有提示,并会显示其号数,不进行抢答查询,所以第一个按抢答的选手有效。倒 数时间到小于 5s 会每秒响一下提示音。如倒计时期间,主持人想停止倒计时可以随时按“停 止”按键,系统会自动进入准备状态,等待主持人按“抢答开始

5、”进入下次抢答计时。如果 主持人未按“抢答开始”键,则无法按抢答按键。五、硬件设计各模块的选择和论证5.1 控制器选择控制器主要用于对显示、抢答、音乐、计分等模块进行控制。采用 atmel 公司的 at89s51 作为系统控制器的 cpu 方案。单片机算术运算功能强,软件编程灵活、自由度大,可以用软 件编程实现各种算法和逻辑控制,并且由于其功耗低、体积小、技术成熟和成本低等优点, 使其在各个领域应用广泛。5.2 键盘选择键盘是单片机不可缺少的输入设备,是实现人机对话的纽带。键盘按结构形式可以分为 非编码键盘和编码键盘,前者用软件方法产生键码,而后者则用硬件方法来产生键码。在单 片机中使用的都是

6、非编码键盘,因为非编码键盘结构简单,成本低廉,非编码键盘的类型很 多,常用的有独立式键盘,行列式键盘等。本设计采用独立式键盘2键盘接口中使用多少根 i/o 线,键盘中就有几个按键,键盘接口使用了 8 根 i/o 口线, 该键盘就有 8 个按键,这种类型的键盘,其按键比较少,且键盘中各按键的工作互不干扰。 因此可以根据实际需要对键盘中的按键灵活的编码。如图 2-2。最简单的编码方式就是根据 i/o 输入口所直接反映的相应按键,按下的状态进行编码, 称按键直接状态码,对于这样编码的独立式键盘,cpu 可以通过直接读取 i/o 口的状态来获 取按键的直接状态编码值,根据这个值直接进行按键识别,这样形

7、式的键盘结构简单,按键 识别容易。独立式键盘的缺点是需要占用比较多的 i/o 口线,当单片机应用系统键盘中需要的按键 比较少或 i/o 口线比较富余时,可以采用这样类型的键盘。a1234p图 2-25678独立式键盘5.3 时钟频率电路的设计单片机必须在时钟的驱动下才能工作。在单片机内部有一个时钟振荡电路,只需要外接一个振荡源就能产生一定的时钟信号送到单片机内部的各个单元,决定单片机的工作速度。 时钟电路如下图所示。3图 2-5外部振荡源电路一般选用石英晶体振荡器。此电路在加电大约延迟 10ms 后振荡器起振,在 xtal2 引脚 产生幅度为 3v 左右的正弦波时钟信号,其振荡频率主要由石英晶

8、振的频率确定。电路中两 个电容 c1,c2 的作用有两个:一是帮助振荡器起振;二是对振荡器的频率进行微调。单片机在工作时,由内部振荡器产生或由外直接输入的送至内部控制逻辑单元的时钟信 号的周期称为时钟周期。其大小是时钟信号频率的倒数。图中时钟频率为 12mhz。 5.4 复位电路的设计单片机的第 9 脚 rst 为硬件复位端,只要将该端持续 4 个机器周期的高电平即可实现复 位,复位后单片机的各状态都恢复到初始化状态,其电路图如下所示:5.5 报警电路我们知道,声音的频谱范围约在几十到几千赫兹,若能利用程序来控制单片机某个口线 的“高”电平或低电平,则在该口线上就能产生一定频率的巨型波,接上喇

9、叭就能发出一定 频率的声音,若再利用延时程序控制“高”“低”电平的持续时间,就能改变输出频率,从 而改变音调,使喇叭发出不同的声音。4本文设计如下图所示。图中单片机的 14 脚输出具有复合功能,此处用到了单片机 14 脚 的 io 端口功能,单片机通过内部定时器的操作实现交替变换的波形输出驱动扬声器发声。5.6 发声电路抢答器显示模块选择显示模块主要是显示抢答的时间,组别号码等。在使用传统的数码管显示。数码管具有:低能耗、低损耗、低压、寿命长、耐老化、防 晒、防潮、防火、防高(低)温,对外界环境要求低,易于维护,同时其精度高,称量快, 精确可靠,操作简单。数码显示是采用 bcd 编码显示数字,

10、程序编译容易,资源占用较少。 显示功能与硬件关系极大,当硬件固定后,如何在不引起操作者误解的前提下提供尽可能丰 富的信息,全靠软件来解决。在这里我们使用的是七段数码管显示,通常在显示上我们采用 的方法一般包括两种:一种是静态显示,一种是动态显示。其中静态显示的特点是显示稳定 不闪烁,程序编写简单,但占用端口资源多;动态显示的特点是:显示稳定性没静态好,程 序编写复杂,但是相对静态显示而言占用端口资源少。在本设计中根据实际情况采用的是动 态显示方法。4 位七段数码管显示电路如下图所示。图 2-1 4 位七段数码管显示电路图上图中数码管采用的是 4 位一体七段共阳数码管,其中 ah 段分别接到单片

11、机的 p0 口, 由单片机输出的 p0 口数据来决定段码值,位选码 com1, com2,com3,com4 分别接 到单片机的 p2.0,p2.1,p2.2 ,p2.,3,由单片机来决定当前该显示的是哪一位。在图中还有5一个排阻,连接在 p0 口上,用作 p0 口的上拉电阻,保证 p0 口没有数据输出时候处于高电 平状态。通过查表法,将其在数码管上显示出来,其中 p0 口为字型码输入端,p2 口低 4 位为字 选段输入段。在这里我们通过查表将字型码送给 7 段数码管显示的数字。数码显示管用来作 为时间的显示输出,一般用 7 段数码显示管。本次设计中采用 7 段共阳数码显示管应用简单、 可靠性

12、高、成本低,作为显示输出。连接时段选信号接在p0 口的 p0.0p0.7 七个 i/o 口上, p1 口是准双向 i/o 接口在输出驱动部分具有驱动 4 个 ttl 负载的能力,即输出电流不大于 400 a,所以在接电阻时选择接 10k 限流电阻。而在位选方面采用 p2 口的 p2.0p2.3 用单片机四个 i/o 口作为位选信号的输出口。5.7 总电路图六、 抢答器的软件设计系统软件由主程序和 int0 中断服务组成。主程序由验键,违规显示,倒计时等功能子 程序组成,系统完成初始化后循环检查各个功能当用户使用某个功能时,按下相应的按钮(或 开关)单片机进入相应的功能处理。int0 中断服务程

13、序完成抢答信号采样和识别处理。该智能抢答器以 at89s52 单片机为控制核心,控制精度较高,操作误差主要来自晶振自 身所造成的误差。其他外围电路包括复位电路、时钟电路、报警电路、led 显示电路、抢答 按键等。该智能抢答器具有计时记忆功能,一次时间设置完,复位后不需重新进行时间设定; 通过按键扫描输出按键信息,并通过单片机将它转化为在七段数码管上显示的字形符。单片 机的 p1 口为 8 组抢答按键的输入口,p0.0 p0.7 为数码管的段选口,p2.0 p2.2 为数码管的6片选口。p3.4 为报警电路的控制口,p3.5 为暂停按钮的控制口,p3.6 为开始按钮的控制口, p3.7 为复位按

14、钮的控制口。源程序#define uint unsigned int#define uchar unsigned char/*- 共阴极数码管编码表 0 - f 显示-*/ unsigned char code table=0x40,0x79,0x24,0x30,0x19, 0x12,0x02,0x78,0x00,0x10,0x08,0x03,0x46,0x21,0x06,0x0e;/*- 变量定义-*/ sbit start= p36;sbit stop=p35;sbit reset = p37;sbit key1 = p10;sbit key2 = p11;sbit key3 = p12;

15、sbit key4 = p13;sbit key5 = p14;sbit key6 = p15;sbit key7 = p16;sbit key8 = p17;sbit buzzer = p34;bit start_flag = 0;bit stop_flag=0;bit key1_flag = 0;bit key2_flag = 0;7bit 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

16、 action = 0;uchar second = 15;uchar timer0_count = 0;uchar number = 0;uchar number_display = 0;/*-延时函数-*/ void delay(uint z)uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);/*-数码管显示驱动函数-*/void display(uchar number,uchar second)uchar second_first,second_second;second_first = second / 10;second_second = second

17、 % 10;p2 = 0xfe;p0 = tablenumber;delay(2);8p2 = 0xfd;p0 = 0x3f;delay(2);p2 = 0xfb;p0 = tablesecond_first;delay(2);p2 = 0xf7;p0 = tablesecond_second;delay(2);/*-开始键扫描函数-*/ void start_keyscan()if(start = 0)delay(8);if(start = 0)&(!start_flag)start_flag = 1;action = 1;tr0 = 1;elsestart_flag = 0;9/*-八位抢

18、答键扫-*/ uchar key_scan8()if(key1 = 0)delay(8);if(key1 = 0)&(!key1_flag)key1_flag = 1;number = 1;number_display = number;elsekey1_flag = 0;number = 0;if(key2 = 0)delay(8);if(key2 = 0)&(!key2_flag)key2_flag = 1;number = 2;number_display = number;else10key2_flag = 0;number = 0;if(key3 = 0)delay(8);if(ke

19、y3 = 0)&(!key3_flag)key3_flag = 1;number = 3;number_display = number;elsekey3_flag = 0;number = 0;if(key4 = 0)delay(8);if(key4 = 0)&(!key4_flag)key4_flag = 1;number = 4;number_display = number;11elsekey4_flag = 0;number = 0;if(key5 = 0)delay(8);if(key5 = 0)&(!key5_flag)key5_flag = 1;number = 5;numbe

20、r_display = number;elsekey5_flag = 0;number = 0;if(key6 = 0)delay(8);if(key6 = 0)&(!key6_flag)key6_flag = 1;number = 6;12number_display = number;elsekey6_flag = 0;number = 0;if(key7 = 0)delay(8);if(key7 = 0)&(!key7_flag)key7_flag = 1;number = 7;number_display = number;elsekey7_flag = 0;number = 0;if

21、(key8 = 0)delay(8);if(key8 = 0)&(!key8_flag)key8_flag = 1;13number = 8;number_display = number;elsekey8_flag = 0;number = 0;if(number_display != 0)return 1;elsereturn 0;/*-复位键扫描函数-*/ void reset_keyscan()if(reset = 0)delay(8);if(reset = 0)&(!reset_flag)reset_flag = 1;number_display = 0;14second=15;el

22、sereset_flag = 0;void fengming() / 蜂鸣函数,脉宽 t = 1ms 周期 t = 2ms 频率 f = 0.5khz 实际发现延时 1ms 的时候效果最好 /延时 1msbuzzer = 0; / 给 p3.7 口送高电平delay(100); / 延时 1msbuzzer = 1;delay(100);/*-主函数-*/void main()tmod=0x01;th0=(65536-50000)/256;tl0=(65536-50000)%256;ea=1;et0=1;tr0=0;while(1)start_keyscan();reset_keyscan()

23、;while(action=1)15if(second0)fengming() ;while(!key_scan8()&!stop=0)display(number_display,second);if(second = 0)second = 15;break;tr0 = 0;display(number_display,second);action = 0;break;display(number_display,second);/*-中断服务函数-*/ void timer0() interrupt 1th0=(65536-50000)/256;tl0=(65536-50000)%256;

24、timer0_count +;if(timer0_count = 15)timer0_count = 0;second -;16if(second0)fengming() ;if(second = 0)tr0 = 0;number_display = 0;action = 0;七、问题分析数码管显示问题:本次设计的最终方案是采用数码管显示屏实现显示功能,最初数码管 显示不正常,出现闪烁现象。通过调试发现这是由于延时时间选择不当会使人眼产生视觉暂 留效果,每一次显示时都必须加入适当的时间延时。由于一开始所选用的延时时间太短因此 出现闪烁现象,在增加显示延时之后,数码管显示正常。蜂鸣器异常启动问题:蜂鸣器的启 动/关闭是通过单片机输出的控制信号来实现的,当前时间与闹钟设置时间比较吻合时,单片 机将对闹铃控制口执行取反命令,从而启动蜂鸣器发声。一开始编写程序时,没有对控制口 的最初状态作正确设置,由于系统开机复位后,闹铃控制口处于高电平状态,因此出现一开 机蜂鸣器就处于启动状态的情况。通过在主程序最开始加入对闹铃控制口取零命令后,蜂鸣 器启动/关闭控制恢复正常。八体会此实验利用 protues 仿真软件实现,基本实现了所要求的功能。在本次实验中对单片机内部结 构有一定了解,熟悉了各个引脚的功能,同时

温馨提示

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

评论

0/150

提交评论