这是一个15单片机LED小灯循环点亮的程序 怎么改成从左到右从右往左循环点亮

这是一个15单片机LED小灯循环点亮的程序 怎么改成从左到右从右往左循环点亮,第1张

修改一下:

while(1)

  {

  for(num=0;n<8;n++)

    {

    P0=~(1<<num);

    delayms(1000);

     }

  for(num=0;n<8;n++)

    {

    P0=~(0x80>>num);

    delayms(1000);

     }

  }

#include<reg52h>

sbit led1=P1^0;

unsigned int i,j;

void main()

{

    while(1)

    {

        P1=0xe7;

        for (i=1000;i>0;i--)

            for (j=110;j>0;j--);

        P1=0xff;

        for (i=1000;i>0;i--)

            for (j=110;j>0;j--);

    }

}

1 不知道你用的是什么开发板,点灯程序设计中inits、寄存器配置和一些接口初始化(如UART、led)在模板中都有了啊,我用过了两个开发板,LPC2200和MAGIC ARM2410都不用手动添加的,专用模板中都自带的。

2 点灯程序中最重要的是设置GPIO,把相应的引脚设置高低电平就可以点亮了,这你就要看懂开发板自带的硬件电路图了。

3 给你看看我用的开发板点灯程序的设置吧,我的开发板上面有四个灯,实现程序如下:

#include "configh"

// 定义LED控制口 (输出高电平时点亮LED)

#define LED1_CON (1<<11) / GPE11口 /

#define LED2_CON (1<<12) / GPE12口 /

#define LED3_CON (1<<4) / GPH4口 /

#define LED4_CON (1<<6) / GPH6口 /

void DelayNS(uint32 dly)

{

uint32 i;

for(; dly>0; dly--)

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

}

void LED_DispAllOn(void)//其实你要的灯全部亮只要这一个函数就可以了,这个功能是把,led1、led2、led3、led4对应的GPE11、GPE12、GPE4、GPE6设置为高电平,即点亮灯

{

rGPEDAT = rGPEDAT | (0x03<<11);

rGPHDAT = rGPHDAT | (0x05<<4);

}

void LED_DispAllOff(void)

{

rGPEDAT = rGPEDAT & (~(0x03<<11));

rGPHDAT = rGPHDAT & (~(0x05<<4));

}

void LED_DispNum(uint32 dat)

{

dat = dat & 0x0000000F; // 参数过滤

// 控制LED4、LED3显示(d3、d2位)

if(dat & 0x08) rGPHDAT = rGPHDAT | (0x01<<6);

else rGPHDAT = rGPHDAT & (~(0x01<<6));

if(dat & 0x04) rGPHDAT = rGPHDAT | (0x01<<4);

else rGPHDAT = rGPHDAT & (~(0x01<<4));

// 控制LED2、LED1显示(d1、d0位)

rGPEDAT = (rGPEDAT & (~(0x03<<11))) | ((dat&0x03) << 11);

}

int main(void)

{

int i;

do{

// 初始化I/O

rGPECON = (rGPECON & (~(0x0F<<22))) | (0x05<<22); // rGPECON[25:22] = 0101b,设置GPE11、GPE12为GPIO输出模式

rGPHCON = (rGPHCON & (~(0x33<<8))) | (0x11<<8); // rGPHCON[13:8] = 01xx01b,设置GPH4、GPH6为GPIO输出模式

// LED全闪烁5次

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

{

LED_DispAllOff(); // LED全熄灭

DelayNS(5);

LED_DispAllOn(); // LED全点亮

DelayNS(5);

}

// 控制LED指示0~F的16进制数值

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

{

LED_DispNum(i); // 显示数值i

DelayNS(5);

}

}while(1);

return(0);

}

以下是8个LED灯轮流点亮的程序,按照以下方法怎么把它改成16个LED流水灯?会的大神请帮忙改一下,谢谢,本人初学者

#include<reg51h>

//#include"stch"

unsigned char i=0;

void main(void)

{TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

TMOD=0X01;//sj

ET0=0x01;

EA=1;

TR0=1;

while(1)

{if(i>7)i=0;

}}

void timer0IRQ(void) interrupt 1

{TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

P2=1<<i;

i++;}

定时器, LED灯

以上就是关于这是一个15单片机LED小灯循环点亮的程序 怎么改成从左到右从右往左循环点亮全部的内容,包括:这是一个15单片机LED小灯循环点亮的程序 怎么改成从左到右从右往左循环点亮、单片机编程led,,,,改下程序,让4,5灯同时亮和灭并循环、1.3修改程序并点亮或熄灭指定的LED灯。在IAR开发环境下新建工程、新建文件等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存