单片机8位数码管
#include<reg52.h>
#define DataPort P1
sbit LATCH1=P2^2;
sbit LATCH2=P2^3;
unsigned char code dofly_DuanMa[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
unsigned char code dofly_WeiMa[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
void Delay(unsigned int t);
void fun1() //8段单个循环累加显示1-9
{
unsigned int i = 0, j = 0, k = 0;
while(1)
{
DataPort = dofly_WeiMa[i];
LATCH2 = 1;
LATCH2 = 0;
k = i + j;
if(k >= 10)
{
k -= 10;
}
DataPort = dofly_DuanMa[k];
LATCH1 = 1;
LATCH1 = 0;
i++;
if(i == 8)
{
i = 0;
j++;
}
if(j == 10)
{
j = 0;
}
Delay(40000);
}
}
void fun2() //8段动态循环累加显示1-9
{
unsigned int i = 0, j = 0, k = 0, m = 0;
while(1)
{
DataPort = dofly_WeiMa[i];
LATCH2 = 1;
LATCH2 = 0;
k = i + j;
if(k >= 10)
{
k -= 10;
}
DataPort = dofly_DuanMa[k];
LATCH1 = 1;
LATCH1 = 0;
i++;
m++;
if(i == 8)
{
i = 0;
}
if(j == 10)
{
j = 0;
}
Delay(200);
if(m == 400)
{
j++;
m = 0;
}
}
}
void fun3()
{
unsigned int i = 0, j = 0, k = 0, m = 0;
while(1)
{
DataPort = dofly_WeiMa[i];
}
}
void main()
{
DataPort = 0;
LATCH2 = 1;
LATCH2 = 0;
// fun1();
fun2();
}
void Delay(unsigned int t)
{
while(--t);
}