智能八路抢答器设计_第1页
智能八路抢答器设计_第2页
智能八路抢答器设计_第3页
智能八路抢答器设计_第4页
智能八路抢答器设计_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、智能八路抢答器设计1 引言设计目的此设计采用AT89C52单片机为核心控制元件,结合数码管、蜂鸣器、发光二 极管等器件构成一个简易的八路抢答器。利用了单片机的按键复位电路、时钟电 路、定时中断等电路,设计的抢答器具有实时显示抢答功能。设计要求(1)设计一个可供 8人进行抢答的抢答器。( 2)系统设置复位按钮,按动后,重新开始抢答。2 设计方案及原理设计方案(1)复位电路89C52勺复位输入引脚RS为89C52提供了初始化的手段,可以使程序从指定处 开始执行,在89C52的时钟电路工作后,只要RSTH脚上出现超过两个机器周期以 上的高电平时,即可产生复位的操作,如果 RST保持高电平,则单片机循

2、环复位。 只有当RST由高电平变低电平以后,89C52t从0000H地址开始执行程序。本系统采 用按键复位方式的复位电路。(2)时钟电路89C52勺时钟可以由两种方式产生,一种是内部方式,利用芯片内部的振荡电 路;另外一种为外部方式。 本论文根据实际需要和简便, 采用内部振荡方式。 89C52 内部有一个用于构成振荡器的高增益反相放大器,引脚 XTAL1和XTAL分别是此放 大器的输入端和输出端。 这个放大器与作为反馈元件的片外晶体或陶瓷谐振器一 起构成一个自激振荡器。(3)输入电路抢答器输入信号由八个小按键控制,八个按键连接在 P2 口当有键按下的时候, 就产生了有效的输入信号,使与这个按键

3、相连的引脚变为低电平 , 产生一个低电平 的输入信号。系统组成框图该系统的组成框图如图1所示,在89C52单片机的P2口接上八个开关用于八路 抢答;口接启动开关,用于主持人控制抢答是否开始;在 RS脚接复位开关用于清 零;在口接蜂鸣器用于开始提示和超时后报警;在 P0 口接三个数码管用于显示倒3硬件设计系统总体电路JI中1T卜4I 丄 ±i11A|/5?pi u AOFQMT3!PQ.3UIT Rl'UUh円 3JWT-: psurre PtEJT-A3S图2系统总体电路图抢答按键电路抢答按键电路采用八位开关依次接入P2口的8位,并通过编程实现抢答的优先判断,其电路如图4所示

4、51WITITI貝村ELP5£9E-E ©ifff & MWS £ Hm cWFg aiff 箜ped ,&££8<KQd 一 Mi £ 8<A0a uo*m Da图4抢答按键电路数码管显示电路显示电路采用三位共阳数码管,前两位为抢答倒计时,后一位在有选手抢答时,显示抢答成功者编号。P0 口外接上拉电阻驱动数码管,并输出段选码, 口作为三位数码管的位选端,通过动态扫描的方式来实现预期功能。数码管显示电路 如图3所示。R1AR7*>JII«£- is £ E鬲F QBS 雪

5、畳£ 3<«g ?<R2d亠 留<甸星 吕 <丹超 Iff 1£ Rod n Dovaod图3数码管显示电路蜂鸣器电路蜂鸣器用以实现开始时提示、有选手抢答时提示以及时间用尽提示,外接在单片机的口上,其电路如图5所示s£ LlygrtCL otT ". E 鬲rCL oxm s axwEfi. In盍 Zd L L</ENd m<二 £ corJD.图5蜂鸣器电路时钟电路通过引脚XTAL和XTAL2外接晶振和电容构成系统时钟,如图6所示F-19ia时钟电路4软件设计程序总体流程图图7程序总体流程图初始

6、化分段程序设计(1) 延时程序段,即Delay()函数。该函数用以调整单片机CP处理指令的延时, 实现数码管动态扫描显示、蜂鸣器发声等功能。(2) 数码管显示程序段,分为Display_1()和Display_2()两个函数。前者用于在 还没有选手抢答时显示问题倒计时,后者用于在有选手抢答后,数码管对时间和 抢答成功者编号的显示。(3) 蜂鸣器发声程序段,即ring()函数。用于控制蜂鸣器响一段时间。(4) 程序主函数,即main()。该程序段用于指示单片机整个程序的入口,并设置 好相应的参数、单片机处理的主要任务等。(5) 中断函数interruptO(),用于触发主程序的执行,即打开定时器

7、、开始倒计 时等功能。(6) 定时器运行函数time0(),用于初始化定时器的初值以触发中断,实现准确 倒计时的功能。该函数的执行使定时器每10m触发一次中断,每触发100次,即计 时满1s,将倒计时的数字减一。在倒计时未结束时,持续扫描键盘按钮,当有选手抢答时,将标志位置1,EA置0,并触发Display_2()的运行。编程语言编制程序见附录调试结果源程序经过KeilC51软件编译通过,并通过调试工具成功验证软件执行结果,成功生成可以被单片机CP职别执行的HEXfc件。5系统仿真仿真结果Q341 !>w -rF图8倒计时阶段 - I h -min主持人按下Start按钮,倒计时开始,运

8、行效果如图8所示。ehiiiiiiiiimymin hi有选手抢答时,倒计时停止,显示选手编号,系统停止响应其他抢答者的按 键,直到主持人将系统复位,如图9所示图9抢答成功问题分析(1) 软件结构设计略显繁琐,会降低单片机执行效率,尚有待改进。(2) 系统功能仍可进一步扩充,使其更加智能化。如可以加入最后五秒钟蜂鸣器 报警功能、根据问题难易程度由主持人设置问题倒计时等功能。(3) 选手抢答按键判断可以采取矩阵键盘扫描方式,可方便后期扩充更多路数。6设计总结此方案设计的抢答器具有计时抢答功能,并且灵敏度高,实用性强,造价低 廉,功能比较完善。通过这次抢答器的设计我加深了对单片机各个方面知识的了

9、解,基本掌握了利用单片机设计制作简单的电子系统的步骤和方法。在整个设计过程中,我先进行了软件方面的设计。通过去图书馆翻阅相关书 籍、在网络上查看相关资料等方式对项目进行了一个初步的设计,并在word上做了基本的设计思路汇总,列出大概的整体框架和程序流程图。之后我根据流程图 写出基本的c语言程序。这个程序中包括了初始化子程序、延时程序、中断程序、 定时器程序、Led数码管显示程序等。在多次检查程序后,我在keil里对源程序进行了编译。Keil下方显示屏中出现了两个错误,经过检查,原因是没有通过sbit 命令对接口进行定义。经过对源代码的修改,再次运行时编译成功,之后我通过 建立目标文件生成了 .

10、hex文件。硬件方面,我根据设计需求在 proteus仿真软件上进行了基本的硬件设计。 首先从元件库中选出了 89C52芯片,之后我在P0 口上连Led数码管显示电路,P2 连选手按键抢答电路,P3 口连蜂鸣器警报电路和start电路。在这个整体过程中 我认为最困难的步骤是找到适合抢答器设计的电容元件,为了解决这个问题,我 上网查了大量资料,并结合自己的多次的实验,最终找到合适电路的电容。在解 决完这个问题后,我把hex文件烧录到AT89C52芯片中,但是系统无法响应Start 按键触发的中断程序,按下 Start按钮后,数码管只显示20而不开始倒计时。于 是我又重新回到工程文件中查找错误的根

11、源所在,在确定了电路图连接无误后, 我开始查找C语言源程序中存在的不能被编译器识别的错误,经过反复查找和对比相关资料,最终确定导致错误的原因是误把ET0 的值赋成了 0 而没有开启计时器,经过改正后,系统运行正常。参考文献1 王思明 . 单片机原理及应用系统设计 . 北京科学出版社,2 邹应全 . 51 系列单片机原理与实验教程 . 西安电子科技大学出版社,3 周坚. 单片机轻松入门(第二版) . 北京航空航天大学出版社,4 周坚单片机C语言轻松入门北京航空航天大学出版社,附录C语言源程序#include<>#define uchar unsigned char#define ui

12、nt unsigned intuint num=20;uint Count=0;uint ge=0;/ 个位uint shi=2;/ 十位uint n;uint i;uint m=0;sbit P3_7=P3A7;uchar flag=0;uchar flag1=0;uint tab=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;void Delay(i)for(;i>0;i-);void Display_1()P1=0x01;P0=tabshi;Delay(200);P1=0x02;P0=tabge;Delay(200);void

13、Display_2()P1=0x01;P0=tabshi;Delay(200);P1=0x02;P0=tabge;Delay(200);P1=0x04;P0=tabn;Delay(200);void ring()flag1=0;P3_7=1;Delay(1000);P3_7=0;main()EA=1;/ 开总中断EX0=1;/ 开外部中断 0IT0=1;/ 中断方式TMOD=0x01;/定时器/计数器0工作于方式1ET0=1;开定时器/计数器0中断 TH0=0xd8;TL0=0xf0;P3_7=0;while(1)if(flag!=1)Display_1();if(flag=1)Display

14、_2(); if(flag1=1) ring();void interrupt0() interrupt 0TR0=1;flag1=1;void time0() interrupt 1TH0=0xd8;TL0=0xf0;Count+;if(Count=100)Count=0;num-; if(num!=0&&P2=0xff)shi=num/10;ge=num%10;flag=0;if(num=0)ring();EA=0; if(num!=0&&P2!=0xff)switch(P2)case 0xfe:n=1;flag=1; flag1=1;EA=0;break; case 0xfd:n=2;flag=1; flag1=1;EA=0; break; case 0xfb:n=3;flag=1; flag1=1;EA=0; break; case

温馨提示

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

评论

0/150

提交评论