流水灯控制实验.docxVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
流水灯控制实验

流水灯控制实验一、实验目的:1、掌握Keil C51软件与proteus软件联合仿真调试的方法。2、掌握如何用程序与查表等方法实现流水效果。3、掌握按键去抖原理及处理方法。二、实验内容:1、用Proteus设计一流水灯控制电路。利用P1口控制8个发光二极管L1—L8。P3.3口接一按键K1。参考电路如下图所示。其中74LS240为8反相三态缓冲器。2、用中断或查询方式编写程序,每按动一次K1键,演示不同的流水效果。若用KEY表示按键的次数,则其对应的流水效果如下:① KEY=0:L1-L8全亮;② KEY=1:L1-L8先全灭,然后自右向左单管点亮,如此循环;③ KEY=2:L1-L8先全灭,然后自右向左依次点亮,如此循环;④ KEY=3:L1-L8先全亮,然后自左向右依次熄灭,如此循环;⑤ KEY=4:L1-L8先全灭,然后整体闪烁,如此循环;⑥ KEY=5:自行设计效果。以上移位及闪烁时间间隔均设置为0.3秒。按动5次按键后,再按键时,流水效果从头开始循环。三、实验原理及步骤:1.实验步骤:(1)用Proteus设计流水灯控制电路。(2)在Keil C51中编写流水灯控制程序,编译通过后,与Proteus联合调试。(3)按动K1键,观察是否达到演示效果。(4)试用中断和查询两种方式编写程序,比较二者的区别。四、程序设计与调试:1.实验电路图如图1所示。2.实验源程序见附录。图1五、实验总结:1.实验设计时注意按键电平抖动问题,可在检测到按键按下后延时5—10ms,待前沿抖动消失后,再检测按键状态,若发现仍保持闭合状态,则确真正有键按下。2.74LS240的使用方法:74LS240是八反相三态缓冲器/线驱动器。实验时G引脚接地,输出电平与输入反相。3.用中断方式时,电路效率高,按下按键后,程序立即响应对应的中断程序;用查询方式编程时,按下按键时会有检测不到按键按下的情况,且效率较低。六、思考题1.按键若不加去抖处理即不加延时检测程序时,按下一次按键后会有多次响应,会跳过一个或几个流水效果,因此遇到按键检测问题时,一定要注意延时消抖后再次检测。附录1.查询方式程序#include REG52.Hchar code tab[10]={0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80,0xff};char code tab unsigned char num=0; sbit key=P3^3;voidkeyscan(){if(key==0){delay_ms(10);if(key==0){num++;}if(num==6)num=0;} }voidallon(){while(num==0){P1=tab[9];keyscan();}}void r2lond(){unsignedchart=0;for(t=0;t9(num==1); t ++){P1=tab[t];delay_ms(200);keyscan();}}void r2lon(){char t;P1=0x00;delay_ms(200);{for(t=1;t9(num==2);t++){P1=tab[t]|P1;delay_ms(200);keyscan();}}}void l2roff(){unsigned char m,t;{P1=0xff;delay_ms(200);keyscan();for(t=8;t0(num==3);t--){m=(~tab[t])(P1);P1=m;delay_ms(200);keyscan();}}}voidallblink(){while(num==4){P1=tab[0];delay_ms(200);keyscan();P1=tab[9];delay_ms(200);keyscan();}}void own(){char k;for(k=1;k5(num==5);k++){P1=tab[k]|tab[9-k];delay_ms(200);keyscan();}}voiddelay_ms(t){inti;for(;t0;t--)for(i=0;i124;i++);}void main(){keyscan();while(1){switch(num){case 0:allon();break;case 1:r2lond();break;case 2:r2lon();break;case 3:l2roff();break;case 4:allblink();break;case 5:own();break;}}}附录2.中断方式程序#include REG52.Hunsigned char num;char code tab[10]={0x00,0x01,0x02,0x04,0x08,0x10,0x

文档评论(0)

ctuorn0371 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档