单片机P0口接8个共阳极LED发光二极管,实现8个LED从右向左循环点亮3次后,接着8个LED从左向右再循环点亮3次,最后低4位与高4位LED交替闪烁3次,周而复始。写出代码(用delay( )函数进行时间控制)
时间: 2024-03-30 17:40:32 浏览: 31
好的,请注意,以下是代码实现:
```c
#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
//延时函数
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=114;y>0;y--);
}
void main()
{
uchar i, j;
P0 = 0xff; //初始化P0口输出高电平
while(1)
{
//8个LED从右向左循环点亮3次
for(j=0; j<3; j++)
{
for(i=0; i<8; i++)
{
P0 = ~(0x01 << i);
delay(1000);
}
}
//8个LED从左向右循环点亮3次
for(j=0; j<3; j++)
{
for(i=7; i>=0; i--)
{
P0 = ~(0x80 >> i);
delay(1000);
}
}
//低4位与高4位LED交替闪烁3次
for(j=0; j<3; j++)
{
P0 = 0xf0; //低4位LED点亮
delay(500);
P0 = 0x0f; //高4位LED点亮
delay(500);
}
}
}
```
注:该代码是基于8051单片机的,使用Keil C51软件编译运行。其中,delay函数中的时间根据具体情况可进行调整。由于题目中所给的是共阳极LED,因此需要反码输出。同时,由于共阳极LED是高电平点亮,因此代码中需要将P0口初始化为高电平。
相关推荐
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)