单片机控制LED流水灯从中间向两边.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文档。上传文档
查看更多
单片机控制LED流水灯从中间向两边

 单片机控制LED流水灯从中间向两边,从两边向中间这个就是把先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;不过这个程序实现的应该是这样的先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动;再从中间往两边流动;#include reg52.h#include intrins.h#define uint unsigned int#define uchar unsigned char void delay();void main(){ uchar temp,temp1,temp2,a,b; P3=0xff; while(1){ for(b=3;b0;b--) { temp=0xaa; P1=temp; delay();temp=0x55; P1=temp;delay(); }for(a=3;a0;a--) { temp=0xfe;for(b=7;b0;b--){ P1=temp;temp=_crol_(temp,1);delay(); P1=temp;delay(); } } temp1=0xfe; temp2=0x7f; for(a=8;a0;a--) { temp=temp1temp2; P1=temp;delay(); temp1=_crol_(temp1,1); temp2=_cror_(temp2,1); }}}void delay(){ uinta,b;for(a=100;a0;a--)for(b=600;b0;b--);}程序实现的第2种方法:下面是单片机12群里的朋友木信大侠提出的,实现单片机led流水灯从中间向两边,从两边向中间的效果,下面的程序就是实现思路,这个是直接调用,应该明白吧,数组那其实也可以改一下,如采用一维数组,在多次调用;也可以采用二维数组。主要看个人喜好.-----------------------------------------------------#include reg52.h unsigned char code TABLE[]={ 0xFF,0xE7,0xC3,0x81,0x00, //从中间向两侧点亮0xFF,0xE7,0xC3,0x81,0x00, 0xFF,0xE7,0xC3,0x81,0x00, 0xFF,0x7E,0x3C,0x18,0x00, //从两侧向中间点亮0xFF,0x7E,0x3C,0x18,0x00, 0xFF,0x7E,0x3C,0x18,0x00}; unsigned char i; DELAY(){ unsignedint s; for(s=0;s30000;s++); }main(){ while(1) { if(TABLE[i]!=0x01) { P1=TABLE[i]; i++;DELAY(); }else { i=0; } } }汇编程序如下:; 花样流水灯(8个发光二极管以各种形式循环点亮); 功能:流水灯(8个发光二极管循环以1S间隔以各种形式循环点亮) ORG 0000H ;伪指令,指定程序从0000H开始存放 LJMP MAIN ;跳转指令,程序跳转至MAIN处执行 ORG 0030H ;伪指令,指定程序从0030H开始存放MAIN: MOV SP, #60H ;给堆栈指针赋初值 MOV P1,#0FFH ;给P1口赋值 MOV DPTR,#TABLE;查表LIGHT: MOV R4,#42 ;设置循环次数LOOP: MOV A,#42 ;给A赋初值 SUBB A,R4 ;将A的值与R4的值相减,结果存在A中 MOVC A,@A+DPTR ;将A+DPTR的值所对应的TABLE中的值赋给A MOV P1,A ;将A的值赋给P1口 LCALL DEL1S ;调用1S延时子程序 DJNZ R4,LOOP ;判断R4是否为0,不为0跳转,为0顺序执行 LJMP LIGHT ;跳转指令,跳转至LIGHT处继续执行;1S延时子程序(11.0592MHz晶振,误差0微秒)DEL1S: MOV R5, #089HDL1S0: MOV R6, #0A4HDL1S1:

文档评论(0)

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

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

1亿VIP精品文档

相关文档