欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOC文档下载  

    智能八路抢答器设计说明.doc

    • 资源ID:26543       资源大小:1.42MB        全文页数:9页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    智能八路抢答器设计说明.doc

    . . 智能八路抢答器设计1引言1.1设计目的此设计采用AT89C52单片机为核心控制元件,结合数码管、蜂鸣器、发光二极管等器件构成一个简易的八路抢答器。利用了单片机的按键复位电路、时钟电路、定时中断等电路,设计的抢答器具有实时显示抢答功能。1.2设计要求1设计一个可供8人进行抢答的抢答器。2系统设置复位按钮,按动后,重新开始抢答。2设计方案及原理2.1设计方案1复位电路89C52的复位输入引脚RST为89C52提供了初始化的手段,可以使程序从指定处开始执行,在89C52的时钟电路工作后,只要RST引脚上出现超过两个机器周期以上的高电平时,即可产生复位的操作,如果RST保持高电平,则单片机循环复位。只有当RST由高电平变低电平以后,89C52才从0000H地址开始执行程序。本系统采用按键复位方式的复位电路。2时钟电路89C52的时钟可以由两种方式产生,一种是部方式,利用芯片部的振荡电路;另外一种为外部方式。本论文根据实际需要和简便,采用部振荡方式。89C52部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体或瓷谐振器一起构成一个自激振荡器。3输入电路抢答器输入信号由八个小按键控制,八个按键连接在P2口当有键按下的时候,就产生了有效的输入信号,使与这个按键相连的引脚变为低电平,产生一个低电平的输入信号。2.2系统组成框图该系统的组成框图如图1所示,在89C52单片机的P2口接上八个开关用于八路抢答;P3.2口接启动开关,用于主持人控制抢答是否开始;在RST脚接复位开关用于清零;在P1.0口接蜂鸣器用于开始提示和超时后报警;在P0口接三个数码管用于显示倒计时时间和抢答者的编号。该系统还包括时钟电路部分。图1 系统组成框图3硬件设计3.1系统总体电路图2 系统总体电路图3.2抢答按键电路抢答按键电路采用八位开关依次接入P2口的8位,并通过编程实现抢答的优先判断,其电路如图4所示。图4 抢答按键电路3.3数码管显示电路显示电路采用三位共阳数码管,前两位为抢答倒计时,后一位在有选手抢答时,显示抢答成功者编号。P0口外接上拉电阻驱动数码管,并输出段选码,P1.0P1.2口作为三位数码管的位选端,通过动态扫描的方式来实现预期功能。数码管显示电路如图3所示。图3 数码管显示电路3.4蜂鸣器电路蜂鸣器用以实现开始时提示、有选手抢答时提示以及时间用尽提示,外接在单片机的P3.7口上,其电路如图5所示。图5 蜂鸣器电路3.5时钟电路通过引脚XTAL1和XTAL2外接晶振和电容构成系统时钟,如图6所示。图6 时钟电路4软件设计4.1程序总体流程图图7 程序总体流程图4.2分段程序设计1延时程序段,即Delay<>函数。该函数用以调整单片机CPU处理指令的延时,实现数码管动态扫描显示、蜂鸣器发声等功能。2数码管显示程序段,分为Display_1<>和Display_2<>两个函数。前者用于在还没有选手抢答时显示问题倒计时,后者用于在有选手抢答后,数码管对时间和抢答成功者编号的显示。3蜂鸣器发声程序段,即ring<>函数。用于控制蜂鸣器响一段时间。4程序主函数,即main<>。该程序段用于指示单片机整个程序的入口,并设置好相应的参数、单片机处理的主要任务等。5中断函数interrupt0<>,用于触发主程序的执行,即打开定时器、开始倒计时等功能。6定时器运行函数time0<>,用于初始化定时器的初值以触发中断,实现准确倒计时的功能。该函数的执行使定时器每10ms触发一次中断,每触发100次,即计时满1s,将倒计时的数字减一。在倒计时未结束时,持续扫描键盘按钮,当有选手抢答时,将标志位置1,EA置0,并触发Display_2<>的运行。4.3编程语言编制程序见附录4.4调试结果源程序经过KeilC51软件编译通过,并通过调试工具成功验证软件执行结果,成功生成可以被单片机CPU识别执行的HEX文件。5系统仿真5.1仿真结果主持人按下Start按钮,倒计时开始,运行效果如图8所示。图8 倒计时阶段有选手抢答时,倒计时停止,显示选手编号,系统停止响应其他抢答者的按键,直到主持人将系统复位,如图9所示。图9 抢答成功5.2问题分析1软件结构设计略显繁琐,会降低单片机执行效率,尚有待改进。2系统功能仍可进一步扩充,使其更加智能化。如可以加入最后五秒钟蜂鸣器报警功能、根据问题难易程度由主持人设置问题倒计时等功能。3选手抢答按键判断可以采取矩阵键盘扫描方式,可方便后期扩充更多路数。6设计总结此方案设计的抢答器具有计时抢答功能,并且灵敏度高,实用性强,造价低廉,功能比较完善。通过这次抢答器的设计我加深了对单片机各个方面知识的了解,基本掌握了利用单片机设计制作简单的电子系统的步骤和方法。在整个设计过程中,我先进行了软件方面的设计。通过去图书馆翻阅相关书籍、在网络上查看相关资料等方式对项目进行了一个初步的设计,并在word上做了基本的设计思路汇总,列出大概的整体框架和程序流程图。之后我根据流程图写出基本的c语言程序。这个程序中包括了初始化子程序、延时程序、中断程序、定时器程序、Led数码管显示程序等。在多次检查程序后,我在keil里对源程序进行了编译。Keil下方显示屏中出现了两个错误,经过检查,原因是没有通过sbit命令对接口进行定义。经过对源代码的修改,再次运行时编译成功,之后我通过建立目标文件生成了.hex文件。硬件方面,我根据设计需求在proteus仿真软件上进行了基本的硬件设计。首先从元件库中选出了89C52芯片,之后我在P0口上连Led数码管显示电路,P2连选手按键抢答电路,P3口连蜂鸣器警报电路和start电路。在这个整体过程中我认为最困难的步骤是找到适合抢答器设计的电容元件,为了解决这个问题,我上网查了大量资料,并结合自己的多次的实验,最终找到合适电路的电容。在解决完这个问题后,我把hex文件烧录到AT89C52芯片中,但是系统无法响应Start按键触发的中断程序,按下Start按钮后,数码管只显示20而不开始倒计时。于是我又重新回到工程文件中查找错误的根源所在,在确定了电路图连接无误后,我开始查找C语言源程序中存在的不能被编译器识别的错误,经过反复查找和对比相关资料,最终确定导致错误的原因是误把ET0的值赋成了0而没有开启计时器,经过改正后,系统运行正常。参考文献1王思明.单片机原理及应用系统设计.科学,2012.092邹应全.51系列单片机原理与实验教程.电子科技大学,2007.123周坚.单片机轻松入门第二版.航空航天大学,2007.024周坚.单片机C语言轻松入门. 航空航天大学,2011.08附录C语言源程序#include<reg52.h>#define uchar unsigned char#define uint unsigned intuint num=20;uint Count=0;uint ge=0;/个位uint shi=2;/十位uint n;uint i;uint m=0;sbit P3_7=P37;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 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_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 0xf7:n=4;flag=1; flag1=1;EA=0; break; case 0xef:n=5;flag=1; flag1=1;EA=0; break; case 0xdf:n=6;flag=1; flag1=1;EA=0; break; case 0xbf:n=7;flag=1; flag1=1;EA=0; break; case 0x7f:n=8;flag=1; flag1=1;EA=0; break; default:break; 8 / 9

    注意事项

    本文(智能八路抢答器设计说明.doc)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开