at89c51的数码管扫描显示函数两个参数
时间: 2024-03-27 09:34:57 浏览: 65
数码管显示函数
好的,以下是一个使用 AT89C51 微控制器的带有两个参数的数码管扫描显示函数代码:
```c
//定义数码管位选端口
#define LED_COM P2
//定义数码管段选端口
#define LED_SEG P0
//定义数码管显示数字
unsigned char LED_NUM[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
//数码管扫描函数
void LED_Scan(unsigned char *p, unsigned char len)
{
static unsigned char i = 0;
LED_COM = 0xFF; //关闭所有位选
LED_SEG = LED_NUM[p[i]]; //设置段选
LED_COM = ~(1<<i); //打开对应位选
i++; //扫描下一个数码管
if (i >= len) i = 0; //超过指定数码管数,重新开始扫描
}
```
该函数与前面的代码类似,唯一的区别在于使用了 AT89C51 微控制器的引脚定义方式。宏定义了数码管的位选端口为 P2,段选端口为 P0。函数接受两个参数,第一个参数是指向要显示的数字数组的指针,第二个参数是要显示的数码管数量。函数使用了一个静态变量 i 来记录当前扫描到的数码管位置,每次扫描时将对应的数码管的位选端口打开,然后设置对应的数字,最后扫描下一个数码管。如果扫描超过了指定的数码管数量,则重新开始扫描。
阅读全文