51单片机四路抢答器PROTEUS仿真报告(含C语言程序)(共13页).doc

上传人:飞****2 文档编号:14069802 上传时间:2022-05-02 格式:DOC 页数:13 大小:206.50KB
返回 下载 相关 举报
51单片机四路抢答器PROTEUS仿真报告(含C语言程序)(共13页).doc_第1页
第1页 / 共13页
51单片机四路抢答器PROTEUS仿真报告(含C语言程序)(共13页).doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《51单片机四路抢答器PROTEUS仿真报告(含C语言程序)(共13页).doc》由会员分享,可在线阅读,更多相关《51单片机四路抢答器PROTEUS仿真报告(含C语言程序)(共13页).doc(13页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

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

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

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

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

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

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

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

8、版社,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 = P21;sbit led3 =P22;sbit led4 =P23;sb

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

10、1) while(key1=0) /第一组按键被按下 TR0=1;led1=0;P0=0xf9;spk=0;delay(500);spk=1;display(); while(key2=0) /第二组按键被按下 TR0=1;led2=0;P0=0xa4; spk=0;delay(500);spk=1; display(); while(key3=0) /第三组按键被按下 TR0=1;led3=0;P0=0xb0;spk=0;delay(500);spk=1;display(); while(key4=0) /第四组按键被按下 TR0=1;led4=0;P0=0x99;spk=0;delay(500);spk=1; display(); /*数码管显示*/void display() uint i=0,j; doif(num=20)num=0; P3=pi+; if(i=11) j=i; i=0; P3=0xc0; while(j0;i-)for(j=110; j0; j-);/*中断子程序*/void T0_time()interrupt 1 TH0=(65536-45872)/256; /重装初值 TL0=(65536-45872)%256; num+;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com