void main() { unsigned char p; unsigned char i,j,k; unsigned char num_up=20; unsigned char num_down=24; while(1) { for(j=0;j<num_up * 8;j++) { for(p =0;p<16;p++)//扫描16次 { for( i = 0;i < 16;i++)//down { P1=down[(i+j+num_down*8)%(num_down*8)]; P3=(i * 16)+12;//16进制选第几列亮 k = 50;while(k--); P1=0x00;//close light P3=0xff; } for( i = 0;i < 16;i++)//up { P1=up[(i-j+num_up * 8)%(num_up*8)]; P3=(i * 16)+3;//16进制选第几列亮 k=50;while(k--); P1=0x00;//close light P3=0xff; } } }什么意思
时间: 2024-02-14 18:11:11 浏览: 20
这是一段 8051 单片机的代码,用于控制 LED 灯的闪烁效果。具体来说,它使用了两个数组 up 和 down,分别表示上方和下方的 LED 灯。循环中通过多次扫描(16 次)来实现 LED 灯的亮灭效果,同时通过延时函数 k 来控制亮灭的时间。整个程序是一个无限循环,不断地循环执行 LED 灯的亮灭操作。
相关问题
void LCD1602_ShowNum(unsigned char x,unsigned char y,unsigned char *str,unsigned char i);
这是一个用于在LCD1602上显示数字的函数,函数原型如下:
```c
void LCD1602_ShowNum(unsigned char x, unsigned char y, unsigned char *str, unsigned char i);
```
函数参数说明:
- `x`:数字在LCD上显示的起始列位置,取值范围为0~15。
- `y`:数字在LCD上显示的起始行位置,取值为0或1。
- `str`:要显示的数字的字符数组,数组中每个元素存储一个数字字符。
- `i`:要显示的数字的位数,取值范围为1~4。
函数实现:
```c
void LCD1602_ShowNum(unsigned char x, unsigned char y, unsigned char *str, unsigned char i)
{
unsigned char j;
for(j=0; j<i; j++)
{
LCD1602_WriteData(x+j, y, str[j]);
}
}
```
该函数通过调用`LCD1602_WriteData()`函数将数字一个个显示在LCD屏幕上。注意,`LCD1602_ShowNum()`函数中的参数`str`是一个字符数组,因此在调用该函数时需要将数字转换为字符并存储在数组中。例如,要在LCD屏幕上显示数字1234,可以将其转换为字符数组并传递给`LCD1602_ShowNum()`函数:
```c
unsigned char num[4] = {'1', '2', '3', '4'};
LCD1602_ShowNum(0, 0, num, 4);
```
void LCD_ShowBinNum(unsigned char x, unsigned char y, unsigned int num, unsigned char len);
这是一个函数原型,它的作用是在LCD屏幕上显示二进制数。具体解释如下:
- unsigned char x:二进制数在屏幕上的横坐标位置。
- unsigned char y:二进制数在屏幕上的纵坐标位置。
- unsigned int num:要显示的二进制数。
- unsigned char len:要显示的二进制数的位数。
函数实现的具体细节可能需要看函数的代码实现。