点灯

文章目录

方式1

#include<reg52.h>

#define LED_NUM 8       // LED的个数
#define TIME  150       // 延时的时间
#define LED_PORT P0     // LED使用P0组端口

// 延时函数
void delay_ms(int ms)
{
  int i,j;
  
  for(i=0; i<ms; i++)
  {
    for(j=0; j<120; j++)
    {
        // 空语句
    }
  }
}

int main(void)
{
    int i;
    LED_PORT = 0x00;   // 8个灯全部熄灭,高电平点亮,低电平熄灭
    
    while(1)
    {
        // 流水灯,顺流
        for(i=0; i<LED_NUM; ++i)
        {
            LED_PORT = 1<<i;    // 0-7 循环左移,高电平点亮
            delay_ms(TIME);     // 延时150ms
        }
        
        // 流水灯,逆流
        for(i=LED_NUM-1; i>=0 --i)
        {
            LED_PORT = 1<<i;    // 7-0 循环左移,高电平点亮
            delay_ms(TIME);     // 延时150ms
        }
    }
}

方式2:

#include<reg52.h>

/**
 * 功  能: 延时函数
 * 参  数: ms 要延时的ms数
 * 返回值: void 无
 */
void delay_ms(int ms)
{
    int i,j;

    for(i=0; i<ms; i++)
    {
        for(j=0; j<120; j++)
            ;   // 空语句
    }
}

int main(void)
{
    int i;
    uchar code_table[] = {0xFE, 0xFD, 0xFB, 0xF7, 0xEF, 0xDF, 0xBF, 0x7F};
    P2 = 0xFF;   // 初始化8个灯全部熄灭,高电平熄灭,低电平点亮
    
    while(1)
    {
        // 顺序点亮
        for(i=0; i<7; ++i){
            P2 = code_table[i]; // 使用数组的方式点亮相应的LED灯
            delay_ms(200);      // 延时200ms
        }
        
        // 逆序点亮
        for(i=7; i>=0 --i){
            P2 = code_table[i]; // 使用数组的方式点亮相应的LED灯
            delay_ms(200);      // 延时200ms
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值