求指教啊(关于1602液晶显示时钟)

2020-01-27 11:36发布

本帖最后由 水若人 于 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开始了,,(分钟和时也是)。。。。。求指点!!(好像这个初始值没有用,怎么改呀?)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。