单片机控制左右来回循环的流水灯.docVIP

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

左右来回循环的流水灯 设计要求 8个发光二极管LED0~LED7经限流电阻分别接至P1口的P1.0~P1.7引脚上,阳极共同接高电平。编程实现制作左右来回循环的节日彩灯,显示规律如下图所示。 题37图 节日彩灯的花样显示的规律 为了使显示效果更加绚丽多彩,P1端口8个引脚分别接有不同颜色的发光二极管。具体如题37表所示。 题37表 P1口 8个引脚的不同颜色的发光二极管 P1口引脚 发光二极管的颜色 P1.0 红色LED P1.1 蓝色LED P1.2 绿色LED P1.3 黄色LED P1.4 红色LED P1.5 蓝色LED P1.6 绿色LED P1.7 黄色LED 使用C51编流水灯程序以及设计相应的硬件电路十分简单,且有多种方法。本方案力求程序最简化最清晰原则,用NS图(盒图)表示算法如下: 程序中设置中间变量temp用来给P1口赋值,命令_crol_和_cror_用于使temp左移或右移,例如当temp时,执行_crol_(temp,1)之后temp应用此两条语句必须把头文件intrins.h包含进来。 全部代码如下: #includereg51.h #includeintrins.h unsigned char temp; //定义字符变量temp,temp左移或右移并给连接LED的P1口赋值 int a; //定义延迟函数delay() void delay(void); void main() { temp=0xfe; //给temp赋初值 P1=temp; //temp赋值给P1口,第一个LED(红色)点亮 while(1) //主程序,括号中的程序将一直循环 { for(a=0;a7;a++) //左移部分,LED从左到右依次点亮 { temp=_crol_(temp,1); //_crol_语句控制变量temp左移 delay(); //每个灯点亮之后延迟一会在点下一个灯 P1=temp; } for(a=0;a7;a++) //右移部分,LED从右到左依次点亮 { temp=_cror_(temp,1); //第8个灯点亮后开始右移程序,LED从右向左点亮 delay(); P1=temp; } } } void delay() //延时子程序 { int i,j; //定义局部变量i,j for(i=200;i0;i--) //i,j不断计数占用CPU时间,达到延时目的 for(j=1;j150;j++); } 电路连接如下: void HYPERLINK /search?word=delay()fr=qb_search_expie=utf8 \t _blank delay()() { HYPERLINK /search?word=unsigned%20intfr=qb_search_expie=utf8 \t _blank unsigned int i; for(i=0;i1500;i++) } void fun(void) { unsigned char i; for (i=0;i8;i++) { P0=1i; HYPERLINK /search?word=delay()fr=qb_search_expie=utf8 \t _blank delay()(); } while(--i) { P0=1i; HYPERLINK /search?word=delay()fr=qb_search_expie=utf8 \t _blank delay()(); } } void main() { while(1) { fun(); } } void L_M()//左 { unsigned char a,b,i,temp; unsigned int s; temp=0xfe; P1=temp; for(s=0;s300000;s++); for(i=0;i8;i++) { a=tempi; b=temp(8-i); P1=a|b; for(s=0;s300000;s++); } } void R_M()//右 { unsigned char a,b,i,temp; unsigned int s; temp=0x7f; P1=temp; for(s=0;s300000;s++); for(i=0;i8;i++) { a=tempi; b=temp(8-i); P1=a|b

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档