51单片机上9个数码管,一个是共阳的,其他全是共阴的。对于共阳数码管,如下图,八个灯组成字符,低电平有效,所以0xff的情况下数码管是不显示任何东西的。
0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e分别是0~f的数码管显示,可以用数码管查询软件查到。
下面是共阳数码管依次显示0~f的程序。
#include <reg52.h>
#include "./delay/delay.h" //延时函数的头文件
#define SEGPORT P0
unsigned char segdata[16] = {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
void main()
{
unsigned char i;
while(1)
{
for(i = 0; i < 16; i++)
{
SEGPORT = segdata[i];
delay_s(1); //延时函数,延时1s
}
}
}