文章目录
方式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
}
}
}