at89c51的数码管扫描显示函数两个参数
时间: 2024-03-27 11:34:57 浏览: 27
好的,以下是一个使用 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 来记录当前扫描到的数码管位置,每次扫描时将对应的数码管的位选端口打开,然后设置对应的数字,最后扫描下一个数码管。如果扫描超过了指定的数码管数量,则重新开始扫描。
相关问题
at89c51数码管静态显示
在AT89C51单片机上实现数码管静态显示需要以下步骤:
1. 定义数码管引脚为输出口。
2. 定义数码管显示的数字,将数字转换成对应的段选码。
3. 将段选码依次输出到数码管的对应引脚上。
以下是一个简单的代码示例:
```c
#include <reg51.h>
#define LED P2
unsigned char code table[] = {
0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90
}; // 数字0~9的段选码表
void main() {
unsigned char i;
while (1) {
for (i = 0; i < 10; i++) {
LED = table[i]; // 输出对应的段选码
delay_ms(1000); // 延时1秒
}
}
}
void delay_ms(unsigned int ms) { // 延时函数
unsigned int i, j;
for (i = 0; i < ms; i++)
for (j = 0; j < 120; j++);
}
```
在上面的代码中,使用了一个段选码表来保存数字0~9对应的段选码。然后在主函数中,从0到9依次输出对应的段选码,并延时1秒。其中延时函数可以根据具体的需要进行修改。
at89c51数码管动态显示
AT89C51是一款8位单片机,可用于控制数码管的动态显示。为了实现该功能,需要连接到外部的数码管,并使用其内置的计时器/计数器来为数码管提供适当的时序信号。可以使用AT89C51的I/O端口来控制数码管的选通,以便依次显示数码管中的数字。同时,还需要编写合适的程序来轮流控制数码管的显示,以实现动态显示的效果。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)