当前位置:文档之家› 数码管单片机c语言程序设计

数码管单片机c语言程序设计

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++;
}

相关主题
文本预览
相关文档 最新文档