|
#include
#define uchar unsigned char
#define uint unsigned int
uchar code table[8]={0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; //位选,控制那个数码管亮。
uchar code table1[12]={0x03, 0x9f, 0x25, 0x0d, 0x99, 0x49, 0x41, 0x1f, 0x01, 0x09,0x00,0xfd}; //共阴极0~9,“灭”,“-”
uchar data timedata[3]={0x00,0x00,0x00}; //时间缓冲区,分别为:秒,时,分。
uchar data dis[8]={0x03,0x03,0xfd,0x03,0x03,0xfd,0x03,0x03};//时间缓冲区,初始化显示00-00-00。
uchar data tt=0,con=0,con1=0,con2=0;
//**************延时函数*********************************
void delay(uint del)
{
uchar i, j;
for(i=0; i
for(j=0; j<=148; j++);
}
//****************数码管显示******************************
void scan()
{
uchar k;
dis[0]=timedata[0]%10; dis[1]=timedata[0]/10;
dis[3]=timedata[1]%10; dis[4]=timedata[1]/10;
dis[6]=timedata[2]%10; dis[7]=timedata[2]/10;
for (k=0;k<8;k++)
{
P0=table1[dis[k]];
P2=table[k];
delay(1);
P2=0x00;
}
}
//***************主函数****************************
void main()
{
TMOD=0x01;
ET0=1;
TR0=1;
TH0=0x40;
TL0=0x00;
EA=1;
while(1)
{
scan();
}
}
//***************定时器函数***************************
void timer0() interrupt 1
{
TH0=0x40;
TL0=0x00;
tt++;
if(tt==20)
{
tt=0;
timedata[0]++;
if(timedata[0]==60)
{
timedata[0]=0;
timedata[1]++;
if(timedata[1]==60)
{
timedata[1]=0;
timedata[2]++;
if(timedata[2]==24)
{
timedata[2]=0 ;
}
}
}
}
}
为什么我的程序出现的是00 00 00.
我想要的是00-00-00.没有中间的“-”。
我觉得for (k=0;k<8;k++)
{
P0=table1[dis[k]];
P2=table[k];
delay(1);
P2=0x00;
}
这个里面包括了呀。
|
|