#define uint unsigned int
#define uchar unsigned char
***it DU = P2^6;
***it WE = P2^7;
uchar code tabel[] = {0X3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(unsigned int i)
{
unsigned int m,n;
for(m=i;m>0;m--)
for(n=90;n>0;n--);
}//设置延时
void display(uchar i)
{
uchar bai,shi,ge;
bai = i / 100;
shi = i % 100/10;
ge = i % 10;
//第一位
P0 = 0XFF;
WE = 1;
P0 = 0xFE;
WE = 0;
DU = 1;
P0 = tabel[bai];
DU = 0;
delay(5);
//第二位
P0 = 0XFF;
WE = 1;
P0 = 0XFD;
WE = 0;
DU = 1;
P0 = tabel[shi];
DU = 0;
delay(5);
//第三位
P0 = 0XFF;
WE = 1;
P0 = 0XFB;
WE = 0;
DU = 1;
P0 = tabel[ge];
DU = 0;
delay(5);
}
void main()
{
while(1)
{
display(123);//输入要显示的值
}
}
这里我只是做了可以显示3位数的,还可以仿照上面代码做一个显示8位数的。
动态显示
动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。选亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
代码
#include
#include
#define uint unsigned int
#define uchar unsigned char
***it DU = P2^6;
***it WE = P2^7;
uchar code tabel[] = {0X3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void delay(unsigned int i)
{
unsigned int m,n;
for(m=i;m>0;m--)
for(n=90;n>0;n--);
}//设置延时
void display(uchar i)
{
uchar bai,shi,ge;
bai = i / 100;
shi = i % 100/10;
ge = i % 10;
//第一位
P0 = 0XFF;
WE = 1;
P0 = 0xFE;
WE = 0;
DU = 1;
P0 = tabel[bai];
DU = 0;
delay(5);
//第二位
P0 = 0XFF;
WE = 1;
P0 = 0XFD;
WE = 0;
DU = 1;
P0 = tabel[shi];
DU = 0;
delay(5);
//第三位
P0 = 0XFF;
WE = 1;
P0 = 0XFB;
WE = 0;
DU = 1;
P0 = tabel[ge];
DU = 0;
delay(5);
}
void main()
{
while(1)
{
display(123);//输入要显示的值
}
}
这里我只是做了可以显示3位数的,还可以仿照上面代码做一个显示8位数的。
举报