1、一个管亮《静态》
#include
#define uint unsigned int
#define uchar unsigned char
sbit Wela=P2^1;
sbit Dula=P2^2;
void main(void)
{
Wela=1;
P0=0xfe;
Wela=0;
Dula=1;
P0=0x7d;
Dula=0;
while(1);
}
2、一个管亮《动态》
#include
#define uint unsigned int
#define uchar unsigned char
void Delay_Us(uchar t);
void Delay_Ms(uint t);
sbit Wela=P2^1;
sbit Dula=P2^2;
uchar num;
uchar code table2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void main(void)
{
while(1)
{
for(num=0;num<10;num++)
{
Dula=1;
P0=table2[num];
Dula=0;
Wela=1;
P0=0xfe;
Wela=0;
Delay_Ms(500);
}
}
}
void Delay_Us(uchar t)
{
while(--t);
}
void Delay_Ms(uint t)
{
while(t--){
Delay_Us(245);
Delay_Us(245);
}
}
3、全部管闪
#include
#define uint unsigned int
#define uchar unsigned char
void Delay_Us(uchar t);
void Delay_Ms(uint t);
sbit Wela=P2^1;
sbit Dula=P2^2;
uchar num;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void main(void)
{
Wela=1;
P0=0x00;
Wela=0;
while(1)
{
for(num=0;num<16;num++)
{ Dula=1;
P0=table[num];
Dula=0;
Delay_Ms(100);
}
}
}
void Delay_Us(uchar t)
{
while(--t);
}
void Delay_Ms(uint t)
{
while(t--){
Delay_Us(245);
Delay_Us(245);
}
}
4、流水数字
#include
#define uint unsigned int
#define uchar unsigned char
void Delay_Us(uchar t);
void Delay_Ms(uint t);
sbit Wela=P2^1;
sbit Dula=P2^2;
uchar num;
uchar code table2[]={0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f};
uchar code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void main(void)
{
while(1)
{
for(num=0;num<8;num++)
{
Dula=1;
P0=table2[num];
Dula=0;
Wela=1;
P0=table1[num];
Wela=0;
Delay_Ms(500);
}
}
}
void Delay_Us(uchar t)
{
while(--t);
}
void Delay_Ms(uint t)
{
while(t--){
Delay_Us(245);
Delay_Us(245);
}
}
5、流水数字(中断)
#include
#define uint unsigned int
#define uchar unsigned char
sbit Wela=P2^1;
sbit Dula=P2^2;
uchar tt,numdu,numwe;
uchar code table2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void main(void)
{
TMOD=0X01;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{
if(tt==50)
{
tt=0;
if(numdu==16)numdu=0;
Dula=1;
P0=table2[numdu];
Dula=0;
numdu++;
if(numwe==7)numwe=0;
Wela=1;
P0=table1[numwe];
Wela=0;
numwe++;
}
}
}
void exter0() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
tt++;
}
6、独立管流水
#include
#define uint unsigned int
#define uchar unsigned char
void Delay_Ms(uint);
void Delay_Us(uchar);
uchar code table[]={0x02,0x9e,0x24,0x0c,0x98,0x48,0x40,0x1e,
0x00,0x08,0x10,0xc0,0x62,0x84,0x60,0x70};
uint i;
void main(void)
{
while(1)
{
for(i=0;i<16;i++)
{
P0=table[i];
Delay_Ms(400);
}
}
}
void Delay_Us(uchar t)
{
while(--t);
}
void Delay_Ms(uint t)
{
while(t--){
Delay_Us(245);
Delay_Us(245);
}
}
6、自定义数码管显示函数
#include
#define uint unsigned int
#define uchar unsigned char
void Delay(uint t);
void display(uint temp);
sbit wela=P2^3;
sbit dula=P2^2;
uint code table2[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uint code table1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void main(void)
{
display(256);
}
void display(uint temp)
{
uint bai,shi,ge;
bai=temp/100 ;
shi=temp%100/10;
ge=temp%10;
while(1)
{
dula=1;
P0=table2[bai];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
Delay(5);
dula=1;
P0=table2[shi];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
Delay(5);
dula=1;
P0=table2[ge];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
Delay(5);
}
}
7、数码管自加显示(中断延时#自定义延时)
#include
#define uint unsigned int
#define uchar unsigned char
void Delay(uint t);
void display(uint temp);
void init();
sbit wela = P2^3;
sbit dula = P2^2;
uint code table2[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uint code table1[] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uint aa,temp = 0;
void main(void)
{
init();
while(1)
{
if(aa==1)
{
aa=0;
temp++;
}
display(temp);
}
}
void Delay(uint t)
{
uint x,y;
for(x=t;x>0;x--)
for(y=110;y>0;y--);
}
void display(uint temp)
{
uint wan,qian,bai,shi,ge;
wan = temp/10000;
qian = temp%10000/1000;
bai = temp%1000/100;
shi = temp%100/10;
ge = temp%10;
dula = 1;
P0 = table2[wan];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = 0xfe;
wela = 0;
Delay(3);
dula = 1;
P0 = table2[qian];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = 0xfd;
wela = 0
;
Delay(3);
dula = 1;
P0 = table2[bai];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = 0xfb;
wela = 0;
Delay(3);
dula = 1;
P0 = table2[shi];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = 0xf7;
wela = 0;
Delay(3);
dula = 1;
P0 = table2[ge];
dula = 0;
P0 = 0xff;
wela = 1;
P0 = 0xef;
wela = 0;
Delay(3);
}
void init()
{
wela = 0;
dula = 0;
TMOD = 0x01;
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void timer() interrupt 1
{
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
aa++;
}
6、数码管自加显示(进位算法)
#include
#define uchar unsigned char
#define uint unsigned int
sbit dula = P2^2;
sbit wela = P2^1;
uint code weima[ ] = {0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uint code duanma[ ] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void init( );
uint t,i,j,k,a,b,c,d,e;
void Delay(uint tt)
{
uint x,y;
for(x=tt;x>0;x--)
for(y=110;y>0;y--);
}
void main(void)
{
init( );
while(1)
{
if(t==1)
{
t = 0;
i++;
if(i==10)
{
i=0;
j++;
if(j==10)
{
j=0;
k++;
if(k==10)
{
k=0;
e++;
if(e==10)
{
e=0;
c++;
if(c==10)
{
c=0;
b++;
if(b==10)
{
b=0;
a++;
}
}
}
}
}
}
}
wela = 1;
P0 = weima[7];
wela = 0;
P0 = 0xff;
dula = 1;
P0 = duanma[i];
dula = 0;
Delay(2);
wela = 1;
P0 = weima[6];
wela = 0;
P0 = 0xff;
dula = 1;
P0 = duanma[j];
dula = 0;
Delay(2);
wela = 1;
P0 = weima[5];
wela = 0;
P0 = 0xff;
dula = 1;
P0 = duanma[k];
dula = 0;
Delay(2);
wela = 1;
P0 = weima[4];
wela = 0;
P0 = 0xff;
dula = 1;
P0 = duanma[e];
dula = 0;
Delay(2);
wela = 1;
P0 = weima[3];
wela = 0;
P0 = 0xff;
dula = 1;
P0 = duanma[d];
dula = 0;
Delay(2);
wela = 1;
P0 = weima[2];
wela = 0;
P0 = 0xff;
dula = 1;
P0 = duanma[c];
dula = 0;
Delay(2);
wela = 1;
P0 = weima[1];
wela = 0;
P0 = 0xff;
dula = 1;
P0 = duanma[b];
dula = 0;
Delay(2);
wela = 1;
P0 = weima[0];
wela = 0;
P0 = 0xff;
dula = 1;
P0 = duanma[a];
dula = 0;
Delay(2);
}
}
void init( )
{
i = 0;
j = 0;
k = 0;
TMOD = 0x01;
TH0 = (65536-500
00)/256;
TL0 = (65536-50000)%256;
EA = 1;
ET0 = 1;
TR0 = 1;
}
void timer() interrupt 1
{
TH0 = (65536-50000)/256;
TL0 = (65536-50000)%256;
t++;
}