找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1233|回复: 0
打印 上一主题 下一主题
收起左侧

用1602显示电子钟不会跳动,程序出了什么问题?

[复制链接]
跳转到指定楼层
楼主
ID:322055 发表于 2018-5-4 14:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar hour,min,sec,t,c[8];
uchar disp_buf[]="0123456789";
sbit RS=P2^6;
sbit RW=P2^5;
sbit E=P2^7;
void delay(uint z)
{
        int i,j;
        for (i=z;i>0;i--)
            for(j=110;j>0;j--);
}

void write_w(uchar w)
{
        delay(500);
        RS=0;
        RW=0;
        E=0;
        P0=w;
        delay(10);
        E=1;
        delay(10);
        E=0;
}
void write_data(uint date)
{
        delay(500);
        RS=1;
        RW=0;
        E=0;
        P0=date;
        delay(10);
        E=1;
        delay(10);
        E=0;
        RS=0;
}
void init()
{
        E=0;
  write_w(0x38);
        write_w(0x0c);
        write_w(0x06);
        write_w(0x01);
//        write_w(0x80);
}
void time0init()
{
        TMOD=0X01;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        TR0=1;
        ET0=1;
        EA=1;
}
  void display()
{
        //unsigned char dis_buf[8];
c[1]=disp_buf[hour/10];
c[2]=disp_buf[hour%10];
c[3]=0x3a;
c[4]=disp_buf[min/10];
c[5]=disp_buf[min%10];
c[6]=0x3a;
c[7]=disp_buf[sec/10];
c[8]=disp_buf[sec%10];
}
void show()
{
        display();
        write_w(0x04+0x80);
        write_data(c[1]);
        write_data(c[2]);
        write_data(c[3]);
        write_data(c[4]);
        write_data(c[5]);
        write_data(c[6]);
        write_data(c[7]);
        write_data(c[8]);
       
}

void main()
{
        init();
        time0init();
        while (1)
{
        show();
}
}
void time0() interrupt 1
{
             TH0=(65536-50000)/256;
                 TL0=(65536-50000)%256;
              t++;
                  if(t==20)
                  {
                         t=0;
                         sec++;
                         if(sec==60)
                         {
                          sec=0;
                           min++;
                                              if(min==60)
                                   {
                                    min=0;
                                    hour++;
                                   if(hour==24)
                                            {
                                              hour=0;
                                                                                                                                        min=0;
                                                                                                                                        sec=0;
                                            }
                                               }
                              }
                            }
                                                                show();
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表