通过位移来扫描数码管
#include <reg51.h>
//设置段对应的IO口
sbit a = P1^2;
sbit b = P1^4;
sbit c = P2^1;
sbit d = P3^5;
sbit e = P2^3;
sbit f = P3^7;
sbit g = P1^0;
//定义共阴极数码管0-9的显示数组
unsigned int code num[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x67}
//显示数据处理,逐位放入对应的IO口
void display_num(unsigned char n)
{
unsigned char temp;
temp = num[n];
a = temp & (0x01<<0);
b = temp & (0x01<<1);
c = temp & (0x01<<2);
d = temp & (0x01<<3);
e = temp & (0x01<<4);
f = temp & (0x01<<5);
g = temp & (0x01<<6);
}
int main(void)
{
unsigned char i;
while(1)
{
for(i=0;i<10;i++) //循环显示0-9
{
display_num(i);
delay(100);
}
}
}