打印
[国产单片机]

单片机+LCD1602,只显示初始值,不更新,谁帮我看看啊?

[复制链接]
1498|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
明眸|  楼主 | 2015-11-20 11:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <STC12C5A60S2.h>

void InitLcd1602();
void LcdWriteDat(unsigned char dat);
void LcdWriteCmd(unsigned char cmd);
void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str, unsigned char len);
void LcdShowchar(unsigned char x,unsigned char y,unsigned char dat);

unsigned char cnt;
unsigned char Day,Month,Year,Weak,Hour,Minutes,Seconds;

void Init()
{
/******定时器初始化******/
        TMOD&=0xF0;
        TMOD|=0x01;
        TH0=0x4C;         //50ms
        TL0=0x00;
        TR0=1;
        ET0=1;
        EA=1;
/******初始时间初始化******/
        Day=20;
        Month=11;
        Year=15;
        Weak=5;
        Hour=9;
        Minutes=30;
        Seconds=0;

}
/******时间显示******/
void TimeDisplay()
{
        //显示年
        LcdShowStr(0,0,"20",2);
        LcdShowchar(2,0,Year/10+'0');
        LcdShowchar(3,0,Year%10+'0');
        LcdShowStr(4,0,"/",1);
        //显示月
        LcdShowchar(5,0,Month/10+'0');
        LcdShowchar(6,0,Month%10+'0');
        LcdShowStr(7,0,"/",1);
        //显示日
        LcdShowchar(8,0,Day/10+'0');
        LcdShowchar(9,0,Day%10+'0');
        //显示星期
        LcdShowStr(11,0,"[",1);
        LcdShowchar(12,0,Weak+'0');
        LcdShowStr(13,0,"]",1);
        //显示小时
        LcdShowchar(0,1,Hour/10+'0');
        LcdShowchar(1,1,Hour%10+'0');
        LcdShowStr(2,1,":",1);
        //显示分钟
        LcdShowchar(3,1,Minutes/10+'0');
        LcdShowchar(4,1,Minutes%10+'0');
        LcdShowStr(5,1,":",1);
        //显示秒
        LcdShowchar(6,1,Seconds/10+'0');
        LcdShowchar(7,1,Seconds%10+'0');
       
}
void main()
{
        Init();
        InitLcd1602();


        while(1)
        {
                TimeDisplay();       
        }       
}

void Timer0() interrupt 1
{
        TH0=0x4C;         //50ms
        TL0=0x00;
        cnt++;
        if(cnt>19)        //1s计时
        {
                cnt=0;
                Seconds++;
                if(Seconds>59)
                {
                        Seconds=0;
                        Minutes++;
                        if(Minutes>59)
                        {
                                Minutes=0;
                                Hour++;
                                if(Hour>23)
                                {
                                        Hour=0;
                                        Day++;
                                        Weak++;
                                }
                        }
                }
        }               
}

































                                                                                                                                                                                                       

相关帖子

沙发
forget345| | 2015-11-23 15:44 | 只看该作者
TimeDisplay 没有必要一直全部重新显示,
只需更新值不一样的
如:u8 SecOld;
if(SecOld != Seconds)
{
  SecOld = Seconds;
   LcdShowchar(6,1,Seconds/10+'0');
   LcdShowchar(7,1,Seconds%10+'0');
}

使用特权

评论回复
板凳
ayb_ice| | 2015-11-24 15:42 | 只看该作者
没有发现问题
可能是这个芯片的定时器与标准51不同

使用特权

评论回复
地板
明眸|  楼主 | 2015-11-25 10:54 | 只看该作者
ayb_ice 发表于 2015-11-24 15:42
没有发现问题
可能是这个芯片的定时器与标准51不同

谢了,后来不知道怎么就可以了!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

138

帖子

5

粉丝