微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 时间直接从59跳到01了

时间直接从59跳到01了

时间:10-02 整理:3721RD 点击:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit rs=P3^5;
sbit lcden=P3^4;
sbit dula=P2^6;
sbit wela=P2^7;
sbit s1=P3^0;
sbit s2=P3^1;
sbit s3=P3^2;
sbit rd=P3^7;
uchar code table[]=" 2013-03-05 SUN";
uchar code table1[]="    00:59:53   ";
uchar count,shi,fen,s1num;
uchar miao;
void delay(uint i)
{
        uchar j;
        while(i--)
        {
                for(j=0;j<125;j++)
                {
                        ;
                }
        }
}

void write_com(uchar com)
{
        rs=0;
        lcden=0;
        P0=com;
        delay(10);
        lcden=1;
        delay(10);
        lcden=0;
}
void write_date(uchar date)
{
        rs=1;
        lcden=0;
        P0=date;
        delay(10);
        lcden=1;
        delay(10);
        lcden=0;
}


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

void timer0() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        count++;
}

void 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);
}

void 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)
                        {
                                write_com(0x80+0x40+7);
                        }
                        if(s1num==3)
                        {
                                write_com(0x80+0x40+4);
                        }
                        if(s1num==4)
                        {
                                s1num=0;
                                write_com(0x0c);
                                TR0=1;
                        }
                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);
                                         }
                                }
                        }
                }       
}
   
void main()
{
        init();
        while(1)
        {
                keyscan();
                if(count==20)
                        {
                                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);
                        }
        }
}
这是程序 每次时间走到59,接着就是01,没有00,而且分走到59 小时也不自加1,依然保持不动 这是怎么回事啊~

解决了吗

还没啊 ~

注意一下显示的位置和++的位置关系,试一试

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top