雕虫小技,新手,求指教……
求更准确的时间算法……
我用的是内部定时器……
单片机型号stc89c52
电路图
一张效果图
程序
#include <REG52.H>
#define uc unsigned char
void ff();
void ff2();
void ff3();
void ff4();
sbit key30=P3^0;
sbit key31=P3^1;
sbit key32=P3^2;
sbit key33=P3^3;
uc num;
uc code table[]={
0xc0,0xf9,0xa4,
0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90};
uc se,mi,mm,mmm,ho,hho;
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
num=0;
P0=0x0;
se=0;
mi=0;
mm=0;
mmm=0;
ho=0;
hho=0;
while(1)
{
ff();
}
}
void ff()
{
if(key30==0)
{
EA=0;
ff3();
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
num=0;
}
if(num>=20)
{
num=0;
se=se+1;
if(se==10)
{
se=0;
mi=mi+1;
}
}
if(mi==6)
{
mm=mm+1;
mi=0;
se=0;
}
if(mm==10)
{
mm=0;
mmm++;
}
if(mmm==6)
{
mmm=0;
ho=ho+1;
}
if(ho==10)
{
ho=0;
hho=hho+1;
}
if(hho==2)
{
if(ho==4)
{
ho=0;
hho=0;
}
}
P1=0x1;
P0=table[se];
ff2();
P1=0x2;
P0=table[mi];
ff2();
P1=0x8;
P0=table[mm];
ff2();
P1=0x10;
P0=table[mmm];
ff2();
P1=0x40;
P0=table[ho];
ff2();
P1=0x80;
P0=table[hho]; /*6176*/
ff2();
ff();
}
void ff2()
{
uc i,j;
for(i=6;i>0;i--)
for(j=100;j>0;j--);
}
void ff3()
{
if(key31==0)
{
se=se+1;
ff4();
if(se==10)
{
se=0;
mi++;
if(mi==6)
{
se=0;
mi=0;
}
}
}
if(key32==0)
{
mm=mm+1;
ff4();
if(mm==10)
{
mm=0;
mmm=mmm+1;
if(mmm==6)
{
mi=0;
se=0;
}
}
}
if(key33==0)
{
ff4();
ho=ho+1;
if(ho==10)
{
ho=0;
hho=hho+1;
}
}
if(hho>2)
{
hho=0;
if(ho>=4)
{
ho=0;
}
}
P1=0x1;
P0=table[se];
ff2();
P1=0x2;
P0=table[mi];
ff2();
P1=0x8;
P0=table[mm];
ff2();
P1=0x10;
P0=table[mmm];
ff2();
P1=0x40;
P0=table[ho];
ff2();
P1=0x80;
P0=table[hho]; /*6176*/
ff2();
}
void ff4()
{
uc l,k,n;
for(l=100;l>0;l--)
for(k=100;k>0;k--)
for(n=10;n>0;n--);
}
void T1_time() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
}
#include <REG52.H>
#define uc unsigned char
void ff();
void ff2();
void ff3();
void ff4();
sbit key30=P3^0;
sbit key31=P3^1;
sbit key32=P3^2;
sbit key33=P3^3;
uc num;
uc code table[]={
0xc0,0xf9,0xa4,
0xb0,0x99,0x92,
0x82,0xf8,0x80,0x90};
uc se,mi,mm,mmm,ho,hho;
void main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
num=0;
P0=0x0;
se=0;
mi=0;
mm=0;
mmm=0;
ho=0;
hho=0;
while(1)
{
ff();
}
}
void ff()
{
if(key30==0)
{
EA=0;
ff3();
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
EA=1;
ET0=1;
TR0=1;
num=0;
}
if(num>=20)
{
num=0;
se=se+1;
if(se==10)
{
se=0;
mi=mi+1;
}
}
if(mi==6)
{
mm=mm+1;
mi=0;
se=0;
}
if(mm==10)
{
mm=0;
mmm++;
}
if(mmm==6)
{
mmm=0;
ho=ho+1;
}
if(ho==10)
{
ho=0;
hho=hho+1;
}
if(hho==2)
{
if(ho==4)
{
ho=0;
hho=0;
}
}
P1=0x1;
P0=table[se];
ff2();
P1=0x2;
P0=table[mi];
ff2();
P1=0x8;
P0=table[mm];
ff2();
P1=0x10;
P0=table[mmm];
ff2();
P1=0x40;
P0=table[ho];
ff2();
P1=0x80;
P0=table[hho]; /*6176*/
ff2();
ff();
}
void ff2()
{
uc i,j;
for(i=6;i>0;i--)
for(j=100;j>0;j--);
}
void ff3()
{
if(key31==0)
{
se=se+1;
ff4();
if(se==10)
{
se=0;
mi++;
if(mi==6)
{
se=0;
mi=0;
}
}
}
if(key32==0)
{
mm=mm+1;
ff4();
if(mm==10)
{
mm=0;
mmm=mmm+1;
if(mmm==6)
{
mi=0;
se=0;
}
}
}
if(key33==0)
{
ff4();
ho=ho+1;
if(ho==10)
{
ho=0;
hho=hho+1;
}
}
if(hho>2)
{
hho=0;
if(ho>=4)
{
ho=0;
}
}
P1=0x1;
P0=table[se];
ff2();
P1=0x2;
P0=table[mi];
ff2();
P1=0x8;
P0=table[mm];
ff2();
P1=0x10;
P0=table[mmm];
ff2();
P1=0x40;
P0=table[ho];
ff2();
P1=0x80;
P0=table[hho]; /*6176*/
ff2();
}
void ff4()
{
uc l,k,n;
for(l=100;l>0;l--)
for(k=100;k>0;k--)
for(n=10;n>0;n--);
}
void T1_time() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
}
附件是视频……
还有hex
20120123063.mp4
点击下载
zd.rar
0.58KB
RAR
25次下载
200字以内,仅用于支线交流,主线讨论请采用回复功能。