proteus四人抢答器_51单片机四路抢答器proteus仿真报告(含c语言程序).doc

51单片机四路抢答器proteus仿真报告(含c语言程序).doc

HEFEIUNIVERSITY四路抢答器仿真设计题目四路抢答器仿真设计班级自动化(1)班成员YCT11050310**PT11050310**WW11050310**时间2014.5.19四路抢答器仿真设计四路抢答器仿真设计目录一、前言.1二、方案设计.1三、理论分析.2四、电路设计.21、晶体振荡器电路.22、复位电路.33、按键扫描部分.34、显示部分4五、软件模块6六、系统组装调试7七、总结7参考文献8附录9四路抢答器仿真设计0四路抢答器仿真设计1、前言本设计要求能够在主持人按下开始键后,四个参赛者开始抢按自己的按键,谁的按键先按下,谁面前的灯就会亮并且有相应的提示,当参赛者耗时太多时又会有相应的提示。根据设计的要求,本系统采用独立式按键,通过单片机不停的扫描按键来控制LED灯和蜂鸣器,并用定时器T0来定超时的时间,当超时的时候让蜂鸣器响。2、方案设计(1)、总体设计方案一:采用可编程I/O口扩展芯片82558255作为单片机的扩展接口能实现很多功能,但是这个系统并不复杂,用8155会浪费很多的资源,而且8255要用P0和P2端口作为地址线对它进行读写,这样不仅浪费端口还使得编程变的复杂。从节省资源和简化编程的角度考虑,放弃了此方案。方案二:直接采用AT89C52单片机直接用单片机不仅编程被简化,还有效的利用了各个端口。8051单片机的资源完全够这个系统的要求。所以最终选择了此方案。(2)、模块方案一:采用4*4矩阵键盘此种键盘是常用的按键扫描方法,但是本系统只需要六个按键,这样就会浪费十个,而且矩阵按键扫描要送数读数,对于编程很复杂,最终放弃了此方案。方案二:采用独立式键盘本系统只要六个按键就可以,用独立式键盘不仅节省端口还使编程变得简单。程序只要不停的读数检查就行。所以,最终选择此方案。四路抢答器仿真设计12、系统总体设计方案与实现框图采用六个独立式的键盘作为按键输入,当在开始后有按键按下时,就会有对应于这个按键的灯亮并且蜂鸣器响一声,其它按键再按也无效。十秒之后如不清除,蜂鸣器就会一直响,提示已经到时间。框图如图1。独立式按键部分单片机处理显示部分按键扫描图13、理论分析51单片机的端口上电是高电平,而且当外部没有输入时能自动的弹跳到高电平,所以通过按键所接端口的高低电平变化可以判断出哪个按键按下了。P1口电平变化单片机识别图24、电路设计1、晶体振荡器电路晶体振荡器电路给数字钟提供一个频率稳定准确的12MHz的方波信号,可保证数字钟的走时准确及稳定。不管是指针式的电子钟还是数字显示的电子钟都使用了晶体荡器电路。本设计中的震荡电路如图3所示。独立按键四路抢答器仿真设计2图32、复位电路MCS-51单片机的复位是由外部的复位电路来实现的。上电复位电路是—种简单的复位电路,只要在RST复位引脚接一个电容到VCC,接一个电阻到地就可以了。上电复位是指在给系统上电时,复位电路通过电容加到RST复位引脚一个短暂的高电平信号,这个复位信号随着VCC对电容的充电过程而回落,所以RST引脚复位的高电平维持时间取决于电容的充电时间。为了保证系统安全可靠的复位,RST引脚的高电平信号必须维持足够长的时间。上电自动复位是通过外部复位电路的电容充电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。电路如图4所示。图43、按键扫描部分单片机不停的扫描P1口的电平变化,当有按键按下时,对应的I/O口会跳变为低电平,单片机检测到后,经过处理将作出相应的显示。电路如图5所示四路抢答器仿真设计3图54、显示部分根据按键按下的情况LED作出相应的亮灭,蜂鸣器作出相应的反应。当主持人按键按下启动后,当第一组按下时,则灯D1亮,并蜂鸣器响一声,数码管开从0、8、70计时,到零后蜂鸣器响两声,提示选手作答时间结束。开始下一轮抢答,如图6、图7所示。图6四路抢答器仿真设计4图7四路抢答器仿真设计5五、软件模块本系统用了定时器0,下图为程序流程图。四路抢答器仿真设计6开始初始化开始键是否按下1号是否按下二号是否按下三号是否按下四号是否按下灯1亮,响声提示灯2亮,响声提示灯3亮,响声提示灯4亮,响声提示清除键是否按下返回初始化延时十秒蜂鸣器响图8四路抢答器仿真设计7六、系统组装调试在protues仿真界面中,选择系统所需的元器件,然后根据软件设计的内容把各元件与单片机对应的端口连接在一起,然后下载hex文件,运行后的结果如图9所示:图9七、总结本次设计按照题目要求,基于单片机,利用较合适的控制算法,成功的实现了抢答器的基本功能。在这次仿真比赛中,我们也遇到了不少问题,特别是在模块化编程中经常编译通不过,但经过我们不断的调试和查询相关的资料,最终解决了问题,可以说通过这次的比赛,我们更加熟练的掌握模块化编程的技巧,同时也让我们体会到模块化编程的好处。同时,我们这次把51单片机中断功能也熟练的掌握了,我们发现当功能越多时,低速度单片机就有点繁忙了,所以我们打算学习速度快的单片机,如C8051、AVR.。在编程中,我们学会了一些编程技巧,同时我们也掌握了KEIL中编译常见错误的原因,为我们在以后编程中迅速排查错误打下了一定的基础。四路抢答器仿真设计8参考文献[1]张毅刚主编.单片机原理及应用.北京:高等教育出版,2004[2]求是科技编著.单片机典型模块设计实例导航.第2版.北京:人民邮电出版,2008[3]郭天祥编著.51单片机C语言教程.北京:电子工业出版社,2009[4]彭伟编著.单片机C语言程序设计实训100例.北京:电子工业出版社,2009[5]华中科技大学电子技术课程组编.康光华主编.电子技术基础.模拟部分.第2版.北京:高等教育出版,2006四路抢答器仿真设计9附录源程序#include/*************全局变量*******************/#defineuintunsignedint#defineuchar

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值