点亮第一个led小灯、led小灯闪烁、流水灯

1、原理:

(1)led小灯为发光二极管,单向导电性,阳极接高电平,阴极接低电平可以点亮。

  普中单片机引脚接口输出高低电平控制

(2)点亮延时,熄灭延时

//延时函数

void delay(u16 i)

{

while(i--);   //约10ms
}

delay(50000);  //约450ms

void delay(uint z)    //延时约1ms

{

        uint  x,y;

        while(x--)

        {

             for (y = 0;y<110;y++)

             {}
        }
}

(3)、循环左移右移函数

  _crol_(a,b): a为循环的值,b为左移的位数

  _cror_(a,b): a为循环的值,b为右移的位数

sbit  led = P0;

while(1)
{

P0 = 0x01;

delay(50000);

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

    {

    _crol_(led,1);

    delay(50000);
    }

}

sbit led = P0;

led = 0x01;

delay(50000);

while(1)

{

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

led = (0x01>>i);

delay(50000);

}

 

51单片机是一种常用的嵌入式微控制器,可以使用它来实现流水灯效果。下面是一个用51单片机汇编语言编写的简单流水灯程序: 首先,我们需要定义8个LED灯的输出端口和变量存储器。例如,我们可以使用P1口作为LED灯的输出口,并使用R0寄存器作为流水灯效果的变量存储器。 然后,在主程序中,我们将设置P1口为输出模式,同时将R0寄存器的初始值设为1。接下来,我们进入一个循环,不断更新P1口的输出值,以实现流水灯的效果。 具体实现流程如下: 1. 设置P1口为输出模式。 2. 将R0寄存器置1,表示流水灯效果的起始位置。 3. 进入一个循环,不断更新P1口的输出值。 4. 将R0寄存器左移1位,并与0xFF进行与操作,以保证R0只取低8位。 5. 将R0寄存器的值输出到P1口,以点亮对应的LED灯。 6. 延时一段时间,以控制流水灯的速度。 7. 重复步骤4-6,实现流水灯闪烁效果。 整个程序的代码示例如下: ORG 0x0000 MOV P1, #0x00 ; 设置P1口为输出模式 MOV R0, #0x01 ; 将R0寄存器置1 LOOP: MOV A, R0 ; 将R0的值存入累加器A ANL A, #0xff ; 与0xff进行与操作,保证R0只取低8位 MOV P1, A ; 将累加器A的值输出到P1口 MOV R0, A ; 将累加器A的值存入R0寄存器 ACALL DELAY ; 延时 RL A ; 将累加器A左移1位 JMP LOOP ; 无条件跳转到LOOP DELAY: MOV R1, #0xff ; 将R1寄存器置为255 DELAY_LOOP: DJNZ R1, DELAY_LOOP ; 循环255次 RET 通过编写这样的汇编语言程序,我们就能利用51单片机实现8个LED小灯依次闪烁流水灯效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值