单片机右移到左移,左移到右移的花样流水灯程序问题

单片机右移到左移,左移到右移的花样流水灯程序问题,第1张

LED灯右移到最右边后向左移时是这样的:右移一位→第二个延时程序→第一个延时程序→右移右移一位→第二个延时程序→第一个延时程序,这样不断循环,循环到最左边,就开始了右移的程序。

这样左移的延迟大一点的!

#include<reg52h>

#include<intrinsh>

#define uchar unsigned char

#define uint unsigned int

/

名称 : Delay()

功能 : 延时,延时时间为 10ms del

输入 : del

输出 : 无

/

void Delay(uint del)

{

uint i,j;

for(i=0; i<del; i++)

for(j=0; j<1827; j++)

;

}

/

名称 : Main()

功能 : 实现灯的闪烁

输入 : 无

输出 : 无

说明 :也可以使用例1的的方法来关闭数码管

/

void Main(void)

{

uchar i;

while(1)

{

P1 = 0xfe;

for(i=0; i<7; i++)

{

P1 = _crol_(P0, 1); //用于循环左移

Delay(15);

}

}

}

这是一个51单片机的P1口小灯循环左移的例子,不懂的问我。应该能用

思路:

  控制8个LED灯,使用上拉方式控制,引脚高电平灯灭,引脚低电平灯亮。

  这8个LED使用同一P口上的所有引脚,假设为P1口中的P10-P17共8个脚。

  软件中,只需要将这些灯使用一个for循环即可。

代码

#include <reg51h>

unsigned char PData;   //记录当前是哪个状态,值为1表示亮,输出到P口时取反

//延时,本函数是非精确延时,若需要精确延迟则需要根据本函数的汇编语句进行精确计算后调整循环体次数

void delay(unsigned int ms){ 

  unsigned char i;

  while(ms--){

    for(i=0;i<120;t++){

      ;

    }

  }

}

void main(){

  unsigned char i=0;

  PData=0x00;//全灭状态

  while(1){//无限循环亮灭状态

    for (i=0;i<8;i++){//从最低位循环到不是常亮的最高位

      P1=~(PData+(1<<i));//第i位亮

      delay(500);

      P1=~PData;//第i位灭

      delay(500);

    }

  }

}

while(1)

{

for(i=0;i<8;i++)

{

for(n=0;n<10;n++)

{

P1=tmpled[i];

delay(150);

P1=0x00;

delay(150);

}

}

}

以上就是关于单片机右移到左移,左移到右移的花样流水灯程序问题全部的内容,包括:单片机右移到左移,左移到右移的花样流水灯程序问题、急求!求一个使单片机控制P1端口的8个LED灯做作左移流水灯的C语言程序(用循环结构)、单片机编程8个led灯,让最低灯亮,循环左移s等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9752345.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存