单片机 驱动2位数码管 程序
时间: 2023-08-09 07:12:15 浏览: 731
这里给出一个8051单片机驱动两位数码管的例子,假设使用的是共阴极的数码管:
```
#include <reg52.h> // 引入头文件
unsigned char code num[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f}; // 数码管显示0~9的编码
void delay(unsigned int t) // 延时函数
{
unsigned int i, j;
for(i = t; i > 0; i--)
for(j = 110; j > 0; j--);
}
void main()
{
unsigned char cnt = 0; // 计数器
while(1)
{
P0 = num[cnt / 10]; // 显示十位数
P1 = 0xfe; // 打开第一位数码管
delay(5); // 延时一段时间
P1 = 0xff; // 关闭第一位数码管
P0 = num[cnt % 10]; // 显示个位数
P1 = 0xfd; // 打开第二位数码管
delay(5); // 延时一段时间
P1 = 0xff; // 关闭第二位数码管
cnt++; // 计数器加1
if(cnt == 100) // 如果计数器达到100,就重新从0开始计数
cnt = 0;
}
}
```
这个程序的原理是利用延时函数和数码管的编码,以及单片机的IO口控制实现动态显示两位数。其中,P0口用于输出数码管显示的编码,P1口用于控制打开哪一位数码管。通过循环计数器控制数码管显示0~99之间的数。需要注意的是,程序中的延时参数需要根据实际情况进行调整,以保证数码管的显示稳定。
阅读全文