定时器要规范使用,注意使用格式 ;
一:先实现一个数码管的从0到f,然后数码管依次递增
#include <reg52.h>
sbit LED = P0^0;
sbit A0 = P2^0;
sbit A1 = P2^1;
sbit A2 = P2^2;
sbit ENLED = P1^1;
void main()
{
unsigned int sec = 0;
unsigned char n = 0;
unsigned long i = 0;
unsigned int m = 0;
unsigned char cnt = 0;
unsigned char code LED[]={
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E
};
unsigned char LEDbuff[6]={
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};
ENLED=0;
TMOD = 0x01;
TR0 = 1;
TH0 = 0xB8;
TL0 = 0x00;
while(1)
{
switch(n)
{
case 0 : A2=0; A1=0; A0=0; break;
case 1 : A2=0; A1=0; A0=1; break;
case 2 : A2=0; A1=1; A0=0; break;
case 3 : A2=0; A1=1; A0=1; break;
case 4 : A2=1; A1=0; A0=0; break;
case 5 : A2=1; A1=0; A0=1; n=0; break;
default :break;
}
if(TF0 == 1)
{
TF0 = 0;
TH0 = 0xB8;
TL0 = 0x00;
cnt++;
if(cnt>=50)
{
cnt = 0;
if(m<=16)
{
m++;
P0=LED[m];
}
else{
m=0;
n++;
}
}
}
}
}
二:数码管先赋一个值然后从左向右流动,然后数字依次递增:
#include <reg52.h>
sbit LED = P0^0;
sbit A0 = P2^0;
sbit A1 = P2^1;
sbit A2 = P2^2;
sbit ENLED = P1^1;
void main()
{
unsigned int sec = 0;
unsigned char n = 0;
unsigned long i = 0;
unsigned int m = 0;
unsigned char cnt = 0;
unsigned char code LED[]={
0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,
0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E
};
unsigned char LEDbuff[6]={
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};
ENLED=0;
TMOD = 0x01;
TR0 = 1;
TH0 = 0xB8;
TL0 = 0x00;
while(1)
{
if(TF0==1)
{
TF0=0;
TL0=0x00;
TH0=0xB8;
cnt++;
if(cnt>=50)
{
cnt=0;
LED = ~LED;
}
}
}
|