2、昨晚调试的1602液晶数字时钟—可调时

 
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]="2009-12-21 MON";
uchar code table1[]="    00:00:00";
sbit dula=P2^6;
sbit wela=P2^7;
sbit lcden=P3^4;
sbit rs=P3^5;
sbit s1=P3^0;
sbit s2=P3^1;
sbit s3=P3^2;
sbit rd=P3^7;
uchar num,s1num,count;
char shi,fen,miao;
init();
write_com(uchar);
write_date(uchar);
delay(uchar);
keyscan();
write_sfm(uchar,uchar);
void main()
{
  init();
  while(1)
    keyscan();
}

keyscan()
{
  rd=0;
  if(s1==0)
    {
      delay(5);
      if(s1==0)
        {
          s1num++;
          while(!s1);
          if(s1num==1)
            {
              TR0=0;
              write_com(0x80+0x40+10);
              write_com(0x0f);
            }
    
          if(s1num==2)
            {
              TR0=0;
              write_com(0x80+0x40+7);
              write_com(0x0f);
            }
          if(s1num==3)
            {
              TR0=0;
              write_com(0x80+0x40+4);
              write_com(0x0f);
            }
          if(s1num==4)
            {
             s1num=0;
             TR0=1;
             write_com(0x0c);
            }
        }
    
  }
 if(s1num!=0)
          {
             if(s2==0)
                {
                  delay(5);
                  if(s2==0)
                     {
                       while(!s2);
                       if(s1num==1)
                         {
                            miao++;
                            if(miao==60)
                               miao=0;
                            write_sfm(10,miao);
                            write_com(0x80+0x40+10);
                         }
                       if(s1num==2)
                         {
                            fen++;
                            if(fen==60)
                               fen=0;
                            write_sfm(7,fen);
                            write_com(0x80+0x40+7);
                      
                         }
                       if(s1num==3)
                         {
                            shi++;
                            if(shi==24)
                               shi=0;
                            write_sfm(4,shi);
                            write_com(0x80+0x40+4);
                      
                         }
                     }
             
                 
                }
             if(s3==0)
                 {
                    delay(5);
                    if(s3==0)
                      {
                        while(!s3);
                        if(s1num==1)
                          {
                            miao--;
                            if(miao==0)
                               miao=59;
                            write_sfm(10,miao);
                            write_com(0x80+0x40+10);
                          }
                        if(s1num==2)
                          {
                            fen--;
                            if(fen==0)
                               fen=59;
                            write_sfm(7,fen);
                            write_com(0x80+0x40+7);
                          }
                        if(s1num==3)
                          {
                            shi--;
                            if(shi==0)
                               shi=23;
                            write_sfm(4,shi);
                            write_com(0x80+0x40+4);
                          }
                      }
                 }
          }  
}

init()
{
  dula=0;
  wela=0;
  write_com(0x38);
  write_com(0x0c);
  write_com(0x06);
  write_com(0x01);
  write_com(0x80);
  for(num=0;num<14;num++)
     {
       write_date(table[num]);
       delay(5);
     }
  write_com(0x80+0x40);
  for(num=0;num<12;num++)
     {
       write_date(table1[num]);
       delay(5);
     }
  TMOD=0x01;
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
  ET0=1;
  EA=1;
  TR0=1;
}

write_com(uchar com)
{
  rs=0;
  lcden=0;
  P0=com;
  delay(5);
  lcden=1;
  delay(5);
  lcden=0;
}

write_date(uchar date)
{
  rs=1;
  lcden=0;
  P0=date;
  delay(5);
  lcden=1;
  delay(5);
  lcden=0;
}


write_sfm(uchar add,uchar date)
{
  uchar shi,ge;
  shi=date/10;
  ge=date%10;
  write_com(0x80+0x40+add);
  write_date(0x30+shi);
  write_date(0x30+ge);
}

 

delay(uchar z)
{
  uchar x,y;
  for(x=z;x>0;x--)
     for(y=110;y>0;y--);
}

void time0() interrupt 1
{
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%256;
  count++;
  if(count==18)
    {
     count=0;
     miao++;
     if(miao==60)
        {
          miao=0;
          fen++;
          if(fen==60)
             {
               fen=0;
               shi++;
               if(shi==24)
                  shi=0;
               write_sfm(4,shi);
             }
          write_sfm(7,fen);
        }
     write_sfm(10,miao);
    }
 
}


 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值