51单片机四路抢答器PROTEUS仿真报告(含C语言程序)_第1页
51单片机四路抢答器PROTEUS仿真报告(含C语言程序)_第2页
51单片机四路抢答器PROTEUS仿真报告(含C语言程序)_第3页
51单片机四路抢答器PROTEUS仿真报告(含C语言程序)_第4页
51单片机四路抢答器PROTEUS仿真报告(含C语言程序)_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上精选优质文档-倾情为你奉上专心-专注-专业专心-专注-专业精选优质文档-倾情为你奉上专心-专注-专业HEFEI UNIVERSITY 四路抢答器仿真设计题 目 四路抢答器仿真设计 班 级 自动化(1)班 成 员 YCT * PT * WW * 时 间 2014.5.19 四路抢答器仿真设计 目录TOC o 1-3 h u 四路抢答器仿真设计前言本设计要求能够在主持人按下开始键后,四个参赛者开始抢按自己的按键,谁的按键先按下,谁面前的灯就会亮并且有相应的提示,当参赛者耗时太多时又会有相应的提示。根据设计的要求,本系统采用独立式按键,通过单片机不停的扫描按键来控制LED灯

2、和蜂鸣器,并用定时器T0来定超时的时间,当超时的时候让蜂鸣器响。方案设计(1)、总体设计方案一:采用可编程I/O口扩展芯片82558255作为单片机的扩展接口能实现很多功能,但是这个系统并不复杂,用8155会浪费很多的资源,而且8255要用P0和P2端口作为地址线对它进行读写,这样不仅浪费端口还使得编程变的复杂。从节省资源和简化编程的角度考虑,放弃了此方案。方案二:直接采用AT89C52单片机直接用单片机不仅编程被简化,还有效的利用了各个端口。8051单片机的资源完全够这个系统的要求。所以最终选择了此方案。(2)、模块方案一:采用4*4矩阵键盘此种键盘是常用的按键扫描方法,但是本系统只需要六个

3、按键,这样就会浪费十个,而且矩阵按键扫描要送数读数,对于编程很复杂,最终放弃了此方案。 方案二:采用独立式键盘 本系统只要六个按键就可以,用独立式键盘不仅节省端口还使编程变得简单。程序只要不停的读数检查就行。所以,最终选择此方案。 系统总体设计方案与实现框图采用六个独立式的键盘作为按键输入,当在开始后有按键按下时,就会有对应于这个按键的灯亮并且蜂鸣器响一声,其它按键再按也无效。十秒之后如不清除,蜂鸣器就会一直响,提示已经到时间。框图如图1。独立式按键部分单片机处理显示部分按键扫描 图1理论分析51单片机的端口上电是高电平,而且当外部没有输入时能自动的弹跳到高电平,所以通过按键所接端口的高低电平

4、变化可以判断出哪个按键按下了。独立按键P1口电平变化单片机识别 图2电路设计1、晶体振荡器电路 晶体振荡器电路给数字钟提供一个频率稳定准确的12MHz的方波信号,可保证数字钟的走时准确及稳定。不管是指针式的电子钟还是数字显示的电子钟都使用了晶体荡器电路。本设计中的震荡电路如图3所示。 图3 2、复位电路MCS-51单片机的复位是由外部的复位电路来实现的。上电复位电路是种简单的复位电路,只要在RST复位引脚接一个电容到VCC,接一个电阻到地就可以了。上电复位是指在给系统上电时,复位电路通过电容加到RST复位引脚一个短暂的高电平信号,这个复位信号随着VCC对电容的充电过程而回落,所以RST引脚复位

5、的高电平维持时间取决于电容的充电时间。为了保证系统安全可靠的复位,RST引脚的高电平信号必须维持足够长的时间。上电自动复位是通过外部复位电路的电容充电来实现的。只要Vcc的上升时间不超过1ms,就可以实现自动上电复位。电路如图4所示。 图43、按键扫描部分 单片机不停的扫描P1口的电平变化,当有按键按下时,对应的I/O口会跳变为低电平,单片机检测到后,经过处理将作出相应的显示。电路如图5所示 图5显示部分根据按键按下的情况LED作出相应的亮灭,蜂鸣器作出相应的反应。当主持人按键按下启动后,当第一组按下时,则灯D1亮,并蜂鸣器响一声,数码管开从0、8、7.0计时,到零后蜂鸣器响两声,提示选手作答

6、时间结束。开始下一轮抢答,如图6、图7所示。 图6 图7五、软件模块本系统用了定时器0,下图为程序流程图。开始初始化开始键是否按下1号是否按下二号是否按下三号是否按下四号是否按下灯1亮,响声提示灯2亮,响声提示灯3亮,响声提示灯4亮,响声提示清除键是否按下返回初始化延时十秒蜂鸣器响 图8六、系统组装调试在protues仿真界面中,选择系统所需的元器件,然后根据软件设计的内容把各元件与单片机对应的端口连接在一起,然后下载hex文件,运行后的结果如图9所示: 图9七、总结本次设计按照题目要求,基于单片机,利用较合适的控制算法,成功的实现了抢答器的基本功能。在这次仿真比赛中,我们也遇到了不少问题,特

7、别是在模块化编程中经常编译通不过,但经过我们不断的调试和查询相关的资料,最终解决了问题,可以说通过这次的比赛,我们更加熟练的掌握模块化编程的技巧,同时也让我们体会到模块化编程的好处。同时,我们这次把51单片机中断功能也熟练的掌握了,我们发现当功能越多时,低速度单片机就有点繁忙了,所以我们打算学习速度快的单片机,如C8051、AVR.。在编程中,我们学会了一些编程技巧,同时我们也掌握了KEIL中编译常见错误的原因,为我们在以后编程中迅速排查错误打下了一定的基础。参考文献1 张毅刚主编. 单片机原理及应用.北京:高等教育出版,20042 求是科技编著. 单片机典型模块设计实例导航.第2版.北京:人

8、民邮电出版,20083 郭天祥编著.51单片机C语言教程.北京:电子工业出版社,20094 彭伟编著.单片机C语言程序设计实训100例.北京:电子工业出版社,20095 华中科技大学电子技术课程组编.康光华主编. 电子技术基础.模拟部分.第2版.北京:高等教育出版,2006附录源程序#include /*全局变量*/#defineuint unsigned int#defineuchar unsigned charsbit key1 = P10;sbit key2 = P11;sbit key3 = P12;sbit key4 = P13;sbit led1 = P20;sbit led2 =

9、 P21;sbit led3 =P22;sbit led4 =P23;sbit spk = P24;uchar num;uchar code p= 0 xc0,0 x80, 0 xd8,0 x82, 0 x92,0 x99, 0 xb0,0 xa4, 0 xf9,0 xc0; /*函数声明*/void delay(uint);void display(); /*主函数*/void main() TMOD=0X01; /设置定时器0工作方式1 TH0=(65536-45872)/256; /装初值11.0592晶振定时为50ms 数位45872 TL0=(65536-45872)%256; EA

10、=1; /开总中断 ET0=1; /开定时器0中断 TR0=0; /启动定时器0 while(1) while(key1=0) /第一组按键被按下 TR0=1;led1=0;P0=0 xf9;spk=0;delay(500);spk=1;display(); while(key2=0) /第二组按键被按下 TR0=1;led2=0;P0=0 xa4; spk=0;delay(500);spk=1; display(); while(key3=0) /第三组按键被按下 TR0=1;led3=0;P0=0 xb0;spk=0;delay(500);spk=1;display(); while(key4=0) /第四组按键被按下 TR0=1;led4=0;P0=0 x99;spk=0;delay(500);spk=1; display(); /*数码管显示*/void display() uint i=0,j; doif(num=20)num

温馨提示

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

评论

0/150

提交评论