本帖最后由 水若人 于 2013-7-23 21:26 编辑
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit rw=P2^5;
sbit rs=P2^6;
sbit lcde=P2^7;
uchar code table[]="2013-07-23";
uchar code table1[]="23:59:50";
uchar num,cc,shi,fen,miao;
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void write(uchar aa)
{
rw=0;
rs=0;
lcde=0;
P0=aa;
delay(5);
lcde=1;
delay(5);
lcde=0;
}
void write1(uchar bb)
{
rw=0;
rs=1;
lcde=0;
P0=bb;
delay(5);
lcde=1;
delay(5);
lcde=0;
}
void sfm(uchar dd,uchar ee)
{
uchar shi,ge;
shi=ee/10;
ge=ee%10;
write(0x80+0x43+dd);
write1(0x30+shi);
write1(0x30+ge);
}
void init()
{
lcde=0;
write(0x0c);
write(0x38);
write(0x06);
write(0x01);
write(0x83);
for(num=0;num<10;num++)
write1(table[num]);
write(0x80+0x44);
for(num=0;num<8;num++)
write1(table1[num]);
TMOD=0x01;
TH0=(65036-50000)/256;
TL0=(65036-50000)%256;
EA=1;
ET0=1;
TR0=1;
}
void main()
{
init();
while(1)
{
if(cc==20)
{
cc=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
{
shi=0;
}
sfm(1,shi);
}
sfm(4,fen);
}
sfm(7,miao);
}
}
}
void time() interrupt 1
{
TH0=(65036-50000)/256;
TL0=(65036-50000)%256;
cc++;
}
//为什么 硬件仿真时 秒不是从50开始走,而是从0开始了,,(分钟和时也是)。。。。。求指点!!(好像这个初始值没有用,怎么改呀?)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
把miao赋50给它,就可以啦。你程序里面的数组只是初始化时显示50,但个一秒后,就会把miao这个值重新显示在液晶上,而你这个miao默认是0
一周热门 更多>