標題: 大神幫助為什么ds1302能不能被讀取 [打印本頁]

作者: 鐡人    時間: 2018-8-7 13:24
標題: 大神幫助為什么ds1302能不能被讀取
不能讀取ds1302的數(shù)據(jù),.h文件沒有問題
主程序代碼在最下面

#include<reg52.h>
#include<lcd.h>
#include<i2c.h>
#include<intrins.h>   
#include<stdio.h>
#include<ds1302.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
sbit led1=P2^2;
sbit led2=P2^3;
sbit led3=P2^4;
uint8 num,num4,num5,key,mode,w;
uint16 i,j,m=0;
uint16 n=0;
uint8 a,b,c,d,e,f,g;
uint8 a1=1,a2=2,a3=3,a4=4,a5=5,a6=6;
uint8 x1=4,x2=5,x3=6,x4=7,x5=8,x6=9;
uint8 y1=6,y2=5,y3=4,y4=3,y5=2,y6=1;
uint8 z1=9,z2=8,z3=7,z4=6,z5=5,z6=4;
uint8 b1,b2,b3,b4,b5,b6;
uint8 dat1[]={1,2,3,4,5,6,7,8,9,0};
uint8 flag,r;
uint8 Q1,Q2,Q3,Q4,Q5,Q6;
uint8 L1,L2,L3,L4,L5,L6;
uint8 O1,O2,O3,O4,O5,O6;
uint8 U1,U2,U3,U4,U5,U6;
uint8 code table[]="open box";
uint8 Dispkaiji1[]="1.PASSWORD";
uint8 Dispkaiji2[]="2.IC";
uint8 cuowu1[]="  WRONG NUMBER  ";
uint8 cuowu2[]="   TRY AGAIN!   ";
uint8 Dispjiesuo1[]="    UNLOCKED    ";
uint8 Dispjiesuo2[]=" SUCCESSFULLY!! ";
uint8 suosi[]="    DEADLOCK    ";
uint8 xiugai1[]="INPUT OLD NUMBER";
uint8 xiugai2[]="INPUT NEW NUMBER";
uint8 xiugai3[]="ALREADY CHANGED!";
uint8 box1[]=" BOX1  UNLOCKED ";
uint8 box2[]=" BOX2  UNLOCKED ";
uint8 box3[]=" BOX3  UNLOCKED ";
uint8 box4[]=" BOX4  UNLOCKED ";

void delay(uint16 i)
{
while(i--);
}
void delay2s()   
{
    unsigned char x,y,z;
    for(x=127;x>0;x--)
        for(y=235;y>0;y--)
            for(z=32;z>0;z--);
    _nop_();  //if Keil,require use intrins.h
}
void password_input()        //&frac12;&laquo;&Atilde;&Uuml;&Acirc;&euml;&ETH;&acute;&Egrave;&euml;EEPROM
{
if(w==1)
{
  At24c02Write(1,a1);
  delay(10000);
  Q1=At24c02Read(1);
  At24c02Write(2,a2);
  delay(10000);
  Q2=At24c02Read(2);
  At24c02Write(3,a3);
  delay(10000);
  Q3=At24c02Read(3);
  At24c02Write(4,a4);
  delay(10000);
  Q4=At24c02Read(4);
  At24c02Write(5,a5);
  delay(10000);
  Q5=At24c02Read(5);
  At24c02Write(6,a6);
  delay(10000);
  Q6=At24c02Read(6);
}
if(w==4)
{
  At24c02Write(19,z1);
  delay(10000);
  U1=At24c02Read(19);
  At24c02Write(20,z2);
  delay(10000);
  U2=At24c02Read(20);
  At24c02Write(21,z3);
  delay(10000);
  U3=At24c02Read(21);
  At24c02Write(22,z4);
  delay(10000);
  U4=At24c02Read(22);
  At24c02Write(23,z5);
  delay(10000);
  U5=At24c02Read(23);
  At24c02Write(24,z6);
  delay(10000);
  U6=At24c02Read(24);
}
}

void password_output()        //&frac12;&laquo;&Atilde;&Uuml;&Acirc;&euml;&ETH;&acute;&Egrave;&euml;EEPROM
{
  Q1=At24c02Read(1);a1=Q1;
  delay(10000);
  Q2=At24c02Read(2);a2=Q2;
  delay(10000);
  Q3=At24c02Read(3);a3=Q3;
  delay(10000);
  Q4=At24c02Read(4);a4=Q4;
  delay(10000);
  Q5=At24c02Read(5);a5=Q5;
  delay(10000);
  Q6=At24c02Read(6);a6=Q6;
  
  
  
  U1=At24c02Read(19);x1=U1;
  delay(10000);
  U2=At24c02Read(20);x2=U2;
  delay(10000);
  U3=At24c02Read(21);x3=U3;
  delay(10000);
  U4=At24c02Read(22);x4=U4;
  delay(10000);
  U5=At24c02Read(23);x5=U5;
  delay(10000);
  U6=At24c02Read(24);x6=U6;
}

void UsartInit()
{
SCON=0X50;  
TMOD=0X20;   
PCON=0X80;  
TH1=0XF3;   
TL1=0XF3;
ES=1;     
EA=1;     
TR1=1;     
}
void delayms(uint16 xms)
{
uint16 i,j;
for(i=xms;i>0;i--)
  for(j=110;j>0;j--);
}

void LcdDisplayshijian()
{
Ds1302ReadTime();
LcdWriteCom(0x80+0X40);
LcdWriteData('0'+TIME[2]/16);    //&Ecirc;±
LcdWriteData('0'+(TIME[2]&0x0f));     
LcdWriteData('-');
LcdWriteData('0'+TIME[1]/16);    //·&Ouml;
LcdWriteData('0'+(TIME[1]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[0]/16);    //&Atilde;&euml;
LcdWriteData('0'+(TIME[0]&0x0f));
LcdWriteCom(0x80);
LcdWriteData('2');
LcdWriteData('0');
LcdWriteData('0'+TIME[6]/16);   //&Auml;ê
LcdWriteData('0'+(TIME[6]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[4]/16);   //&Ocirc;&Acirc;
LcdWriteData('0'+(TIME[4]&0x0f));
LcdWriteData('-');
LcdWriteData('0'+TIME[3]/16);   //&Egrave;&Otilde;
LcdWriteData('0'+(TIME[3]&0x0f));
LcdWriteCom(0x8D);
LcdWriteData('0'+(TIME[5]&0x07)); //&ETH;&Ccedil;&AElig;&Uacute;   
}
void xianshi()
{
  Ds1302ReadTime();
  SBUF='2';while(TI==0);TI=0;
  SBUF='0';while(TI==0);TI=0;
  SBUF='0'+TIME[6]/16;while(TI==0);TI=0;
  SBUF='0'+(TIME[6]&0x0f);while(TI==0);TI=0;//nian
  SBUF='-';while(TI==0);TI=0;
  SBUF='0'+TIME[4]/16;while(TI==0);TI=0;
  SBUF='0'+(TIME[4]&0x0f);while(TI==0);TI=0;//yue
  SBUF='-';while(TI==0);TI=0;
  SBUF='0'+TIME[3]/16;while(TI==0);TI=0;
  SBUF='0'+(TIME[3]&0x0f);while(TI==0);TI=0;//ri
  SBUF='-';while(TI==0);TI=0;
  SBUF='-';while(TI==0);TI=0;
  SBUF='0'+TIME[2]/16;while(TI==0);TI=0;
  SBUF='0'+(TIME[2]&0x0f);while(TI==0);TI=0;//shi
  SBUF='-';while(TI==0);TI=0;
  SBUF='0'+TIME[1]/16;while(TI==0);TI=0;
  SBUF='0'+(TIME[1]&0x0f);while(TI==0);TI=0;//fen
  SBUF='-';while(TI==0);TI=0;
  SBUF='0'+TIME[0]/16;while(TI==0);TI=0;
  SBUF='0'+(TIME[0]&0x0f);while(TI==0);TI=0;//miao
  SBUF=' ';while(TI==0);TI=0;
}

void caiji1()
{
  if(n==1)
  {
   a=g;
  }
  if(n==2)
  {
   b=g;
  }
  if(n==3)
  {
   c=g;
  }
  if(n==4)
  {
   d=g;
  }
  if(n==5)
  {
   e=g;
  }
  if(n==6)
  {
   f=g;
  }
}
void caiji2()
{
  if(n==1)
  {
   b1=g;
  }
  if(n==2)
  {
   b2=g;
  }
  if(n==3)
  {
   b3=g;
  }
  if(n==4)
  {
   b4=g;
  }
  if(n==5)
  {
   b5=g;
  }
  if(n==6)
  {
   b6=g;
  }
}
void panduan()
{
switch(r)
{
  case(1):
  xianshi();
  for(i=0;i<8;i++)
   {
    SBUF=table[i];
    while(!TI);
    TI=0;
   }
  SBUF='1';while(TI==0);TI=0;
  SBUF=0x0d;while(TI==0);TI=0;
  SBUF=0x0a;while(TI==0);TI=0;break;
  case(2):
  xianshi();
  for(i=0;i<8;i++)
   {
    SBUF=table[i];
    while(!TI);
    TI=0;
   }SBUF='2';while(TI==0);TI=0;
  SBUF=0x0d;while(TI==0);TI=0;
  SBUF=0x0a;while(TI==0);TI=0;break;
  case(3):
  xianshi();
  for(i=0;i<8;i++)
   {
    SBUF=table[i];
    while(!TI);
    TI=0;
   }SBUF='3';while(TI==0);TI=0;
  SBUF=0x0d;while(TI==0);TI=0;
  SBUF=0x0a;while(TI==0);TI=0;break;
   
  case(4):
  xianshi();
  for(i=0;i<8;i++)
   {
    SBUF=table[i];
    while(!TI);
    TI=0;
   }SBUF='4';while(TI==0);TI=0;
  SBUF=0x0d;while(TI==0);TI=0;
  SBUF=0x0a;while(TI==0);TI=0;break;
}
}

void kaixiang()
{
                if((a1==a)&&(a2==b)&&(a3==c)&&(a4==d)&&(a5==e)&&(a6==f))
                {
                 led1=0; r=1;
                 m=0;
                 n=0;
                 a=10;
                 LcdWriteCom(0x01);
                 LcdWriteCom(0x80);
                 for(i=0;i<16;i++)
                 {
                  LcdWriteData(box1[i]);
                 }
                 LcdWriteCom(0x80+0x40);
                 for(j=0;j<16;j++)
                 {
                  LcdWriteData(Dispjiesuo2[j]);
                 }
                 mode=4;
                }                                 //box1
                else if((x1==a)&&(x2==b)&&(x3==c)&&(x4==d)&&(x5==e)&&(x6==f))
                {
                 led1=0; r=2;
                 m=0;
                 n=0;
                 a=10;
                 LcdWriteCom(0x01);
                 LcdWriteCom(0x80);
                 for(i=0;i<16;i++)
                 {
                  LcdWriteData(box2[i]);
                 }
                 LcdWriteCom(0x80+0x40);
                 for(j=0;j<16;j++)
                 {
                  LcdWriteData(Dispjiesuo2[j]);
                 }   
                 mode=4;
                }                                 //box2
                else if((y1==a)&&(y2==b)&&(y3==c)&&(y4==d)&&(y5==e)&&(y6==f))
                {
                 led1=0;r=3;
                 m=0;
                 n=0;
                 a=10;
                 LcdWriteCom(0x01);
                 LcdWriteCom(0x80);
                 for(i=0;i<16;i++)
                 {
                  LcdWriteData(box3[i]);
                 }
                 LcdWriteCom(0x80+0x40);
                 for(j=0;j<16;j++)
                 {
                  LcdWriteData(Dispjiesuo2[j]);
                 }  
                 mode=4;
                }                                 //box3
                else if((z1==a)&&(z2==b)&&(z3==c)&&(z4==d)&&(z5==e)&&(z6==f))
                {
                 led1=0;r=4;
                 m=0;
                 n=0;
                 a=10;
                 LcdWriteCom(0x01);
                 LcdWriteCom(0x80);
                 for(i=0;i<16;i++)
                 {
                  LcdWriteData(box4[i]);
                 }
                 LcdWriteCom(0x80+0x40);
                 for(j=0;j<16;j++)
                 {
                  LcdWriteData(Dispjiesuo2[j]);
                 }
                 mode=4;
                }                                 //box4
                else
                {
                 m++;
                 LcdWriteCom(0x01);
                 LcdWriteCom(0x80);
                 LcdWriteCom(0x80);
                    for(i=0;i<16;i++)
                    {
                     LcdWriteData(cuowu1[i]);
                    }
                    LcdWriteCom(0x80+0x40);
                    for(j=0;j<16;j++)
                    {
                     LcdWriteData(cuowu2[j]);
                    }
                    
                    if(m==3)
                    {  
                     LcdWriteCom(0x01);
                     while(1)
                     {
                      led2=0;
                      LcdWriteCom(0x80);
                      for(i=0;i<16;i++)
                      {
                       LcdWriteData(suosi[i]);
                      }
                     }
                    }
                }  
               
}
void keyscan2()
{
P1=0x7f;      
if(P1!=0x7f)
{
  delay(1000);
  if(P1!=0x7f)
  {
   key=P1&0x0f;
   switch(key)
   {
    case 0x07: num=0;n++;break;   
    case 0x0b: num=1;n++;break;   
    case 0x0d: num=2;n++;break;      
   }
  }
  while(P1!=0x7f);
  if(num==0)  
  {
   LcdWriteData(0x30+dat1[num]);
   g=1;
  }
  if(num==1)
  {
   LcdWriteData(0x30+dat1[num]);
   g=2;
  }
  if(num==2)
  {
   LcdWriteData(0x30+dat1[num]);
   g=3;
  }
}

P1=0xbf;   
if(P1!=0xbf)
{
  delay(1000);
  if(P1!=0xbf)
  {
   key=P1&0x0f;
   switch(key)
   {
    case 0x07: num=3;n++;break;  
    case 0x0b: num=4;n++;break;   
    case 0x0d: num=5;n++;break;   
   }
  }
  while(P1!=0xbf);
  if(num==3)
  {
   LcdWriteData(0x30+dat1[num]);
   g=4;
  }
  if(num==4)
  {
   LcdWriteData(0x30+dat1[num]);
   g=5;
  }
  if(num==5)
  {
   LcdWriteData(0x30+dat1[num]);
   g=6;
  }
}

P1=0xdf;  
if(P1!=0xdf)
{
  delay(1000);
  if(P1!=0xdf)
  {
   key=P1&0x0f;
   switch(key)
   {
    case 0x07: num=6;n++;break;  
    case 0x0b: num=7;n++;break;
    case 0x0d: num=8;n++;break;
   }
  }
  while(P1!=0xdf);
  if(num==6)
  {
   LcdWriteData(0x30+dat1[num]);
   g=7;
  }
  if(num==7)
  {
   LcdWriteData(0x30+dat1[num]);
   g=8;
  }
  if(num==8)
  {
   LcdWriteData(0x30+dat1[num]);
   g=9;
  }
}

P1=0xef;   
if(P1!=0xef)
{
  delay(1000);
  if(P1!=0xef)
  {
   key=P1&0x0f;
   switch(key)
   {
    case 0x0b : num=9;n++;break;  
    case 0x07 : num=10;break;
    case 0x0d : num=11;break;
    case 0x0e : mode=4;break;
   }
  }
  while(P1!=0xef);
  if(num==9)
  {
   LcdWriteData(0x30+dat1[num]);
   g=0;
  }
  if(num==10)
  {
   LcdWriteCom(0x01);
   n=0;
   a=b=c=d=e=f=0;
   led1=1;
  }
              if(num==11)
              {
               if(mode==1)
               {
                kaixiang();
                flag=1;
                Ds1302ReadTime();
                if(flag==1)
                  {
                   ES=0;
                  
                   panduan();
                  }
                 ES=1;
                flag=0;
                 //mode==1
               }
               if(mode==2)
               {
               }
               if(mode==3)
               {
                if((a1==a)&&(a2==b)&&(a3==c)&&(a4==d)&&(a5==e)&&(a6==f))
                {
                 led1=0;
                 LcdWriteCom(0x01);
                 w=1;
                }
                if((x1==a)&&(x2==b)&&(x3==c)&&(x4==d)&&(x5==e)&&(x6==f))
                {
                 led1=0;
                 LcdWriteCom(0x01);
                 w=2;
                }
                if((y1==a)&&(y2==b)&&(y3==c)&&(y4==d)&&(y5==e)&&(y6==f))
                {
                 led1=0;
                 LcdWriteCom(0x01);
                 w=3;
                }
                if((z1==a)&&(z2==b)&&(z3==c)&&(z4==d)&&(z5==e)&&(z6==f))
                {
                 led1=0;
                 LcdWriteCom(0x01);
                 w=4;
                }
               
               
               
                else
                {
                 m++;
                 LcdWriteCom(0x01);
                 LcdWriteCom(0x80);
                    for(i=0;i<16;i++)
                    {
                     LcdWriteData(cuowu1[i]);
                    }
                    LcdWriteCom(0x80+0x40);
                    for(j=0;j<16;j++)
                    {
                     LcdWriteData(cuowu2[j]);
                    }
                    if(m==3)
                    {  
                     LcdWriteCom(0x01);
                     while(1)
                     {
                      led2=0;
                      LcdWriteCom(0x80);
                      for(i=0;i<16;i++)
                      {
                       LcdWriteData(suosi[i]);
                      }
                     }
                    }
                }
               
               }    //mode==3
              }
}  
}
void keyscan3()
{
P1=0x7f;      
if(P1!=0x7f)
{
  delay(1000);
  if(P1!=0x7f)
  {
   key=P1&0x0f;
   switch(key)
   {
    case 0x07: num=0;n++;break;   
    case 0x0b: num=1;n++;break;   
    case 0x0d: num=2;n++;break;      
   }
  }
  while(P1!=0x7f);
  if(num==0)  
  {
   LcdWriteData(0x30+dat1[num]);
   g=1;
  }
  if(num==1)
  {
   LcdWriteData(0x30+dat1[num]);
   g=2;
  }
  if(num==2)
  {
   LcdWriteData(0x30+dat1[num]);
   g=3;
  }
}

P1=0xbf;   
if(P1!=0xbf)
{
  delay(1000);
  if(P1!=0xbf)
  {
   key=P1&0x0f;
   switch(key)
   {
    case 0x07: num=3;n++;break;  
    case 0x0b: num=4;n++;break;   
    case 0x0d: num=5;n++;break;   
   }
  }
  while(P1!=0xbf);
  if(num==3)
  {
   LcdWriteData(0x30+dat1[num]);
   g=4;
  }
  if(num==4)
  {
   LcdWriteData(0x30+dat1[num]);
   g=5;
  }
  if(num==5)
  {
   LcdWriteData(0x30+dat1[num]);
   g=6;
  }
}

P1=0xdf;  
if(P1!=0xdf)
{
  delay(1000);
  if(P1!=0xdf)
  {
   key=P1&0x0f;
   switch(key)
   {
    case 0x07: num=6;n++;break;  
    case 0x0b: num=7;n++;break;
    case 0x0d: num=8;n++;break;
   }
  }
  while(P1!=0xdf);
  if(num==6)
  {
   LcdWriteData(0x30+dat1[num]);
   g=7;
  }
  if(num==7)
  {
   LcdWriteData(0x30+dat1[num]);
   g=8;
  }
  if(num==8)
  {
   LcdWriteData(0x30+dat1[num]);
   g=9;
  }
}

P1=0xef;   
if(P1!=0xef)
{
  delay(1000);
  if(P1!=0xef)
  {
   key=P1&0x0f;
   switch(key)
   {
    case 0x0b : num=9;n++;break;  
    case 0x07 : num=10;break;
    case 0x0d : num=11;break;
    case 0x0e : mode=4;break;
   }
  }
  while(P1!=0xef);
  if(num==9)
  {
   LcdWriteData(0x30+dat1[num]);
   g=0;
  }
  if(num==10)
  {
   LcdWriteCom(0x01);
   n=0;
   a=b=c=d=e=f=0;
   led1=1;
  }
              if(num==11)
              {
               if(w==1)
               {
                a1=b1;
                a2=b2;
                a3=b3;
                a4=b4;
                a5=b5;
                a6=b6;
               }
               if(w==2)
               {
                x1=b1;
                x2=b2;
                x3=b3;
                x4=b4;
                x5=b5;
                x6=b6;
               }
               if(w==3)
               {
                y1=b1;
                y2=b2;
                y3=b3;
                y4=b4;
                y5=b5;
                y6=b6;
               }
               if(w==4)
               {
                z1=b1;
                z2=b2;
                z3=b3;
                z4=b4;
                z5=b5;
                z6=b6;
               }
               
              }
}  
}
void chushi()
{
LcdWriteCom(0x80);
  for(i=0;i<10;i++)
  {
   LcdWriteData(Dispkaiji1[i]);
  }
  LcdWriteCom(0x80+0x40);
  for(j=0;j<4;j++)
  {
   LcdWriteData(Dispkaiji2[j]);
  }
}

void keyscan1()
{
while(1)
{
  chushi();
  
  
  
  P1=0x7f;      
  if(P1!=0x7f)
  {
   delay(1000);
   if(P1!=0x7f)
   {
    key=P1&0x0f;
    switch(key)
    {
     case 0x0e: mode=1;break;   
    }
   }
   while(P1!=0x7f);
  }
  
  
   P1=0xbf;   
   if(P1!=0xbf)
   {
    delay(1000);
    if(P1!=0xbf)
    {
     key=P1&0x0f;
     switch(key)
     {
      case 0x0e: mode=2;break;  
     }
    }
   
   while(P1!=0xbf);
  }
  
   P1=0xdf;   
   if(P1!=0xdf)
   {
    delay(1000);
    if(P1!=0xdf)
    {
     key=P1&0x0f;
     switch(key)
     {
      case 0x0e: mode=3;break;  
     }
    }
   
   while(P1!=0xdf);
  }
   if(mode==1)
   {
     LcdWriteCom(0x01);
     
     while(1)
    {  
     caiji1();
     keyscan2();
     if(mode==4)
     {
      led1=1;
      n=0;
      delay2s();
      LcdWriteCom(0x01);
      break;
     }
    }
   }  
   if(mode==2)
     {
     }
   if(mode==3)
   {
            LcdWriteCom(0x01);
            while(1)
           {
            LcdWriteCom(0x80);
            for(i=0;i<16;i++)
            {
             LcdWriteData(xiugai1[i]);    //old  number
            }
            break;
           }
            LcdWriteCom(0x80+0x40);
            while(1)
            {
             keyscan2();
             caiji1();
            
             if(mode==4)
             {
              led1=1;
              n=0;
              LcdWriteCom(0x01);
              break;
             }                              //fan hui
            
             if(led1==0)
             {
              n=0;
              
              break;
             }
            
            }
   
          if(led1==0)
           {
             LcdWriteCom(0x01);
             LcdWriteCom(0x80);
             for(i=0;i<16;i++)
             {
              LcdWriteData(xiugai2[i]);           //new number
             }
             led1=1;
         
            LcdWriteCom(0x80+0x40);
            while(1)
            {
             keyscan3();                           //
             caiji2();
             password_input();
             if(w==1)
             {
              if((a1==b1)&&(a2==b2)&&(a3==b3)&&(a4==b4)&&(a5==b5)&&(a6==b6))
              {
               LcdWriteCom(0x01);
               LcdWriteCom(0x80);
               for(i=0;i<16;i++)
               {
                 LcdWriteData(xiugai3[i]);
               }         
               mode=4;
               m=0;
              }
             }
             if(w==2)
             {
              if((x1==b1)&&(x2==b2)&&(x3==b3)&&(x4==b4)&&(x5==b5)&&(x6==b6))
              {
               LcdWriteCom(0x01);
               LcdWriteCom(0x80);
               for(i=0;i<16;i++)
               {
                 LcdWriteData(xiugai3[i]);
               }         
               mode=4;
               m=0;
              }
             }
             if(w==3)
             {
              if((y1==b1)&&(y2==b2)&&(y3==b3)&&(y4==b4)&&(y5==b5)&&(y6==b6))
              {
               LcdWriteCom(0x01);
               LcdWriteCom(0x80);
               for(i=0;i<16;i++)
               {
                 LcdWriteData(xiugai3[i]);
               }         
               mode=4;
               m=0;
              }
             }
             if(w==4)
             {
              if((z1==b1)&&(z2==b2)&&(z3==b3)&&(z4==b4)&&(z5==b5)&&(z6==b6))
              {
               LcdWriteCom(0x01);
               LcdWriteCom(0x80);
               for(i=0;i<16;i++)
               {
                 LcdWriteData(xiugai3[i]);
               }         
               mode=4;
               m=0;
              }
             }
            
             if(mode==4)
             {
              
              delay2s();delay2s();
              n=0;
              LcdWriteCom(0x01);
              break;
              
             }
            }
           }
   }
   
  }
}


void main()
{
LcdInit();
UsartInit();
Ds1302Init();
while(1)
{
  LcdDisplayshijian();

  if(mode==4)
  {
   mode=0;
   led1=1;
   n=0;
   r=0;
   LcdWriteCom(0x01);
   while(1)
   {
    Ds1302ReadTime();
    keyscan1();
   }
  }
}
}

void Usart() interrupt 4
{
RI=0;
flag=1;
}





IMG_20180807_132032.jpg (2.26 MB, 下載次數(shù): 37)

IMG_20180807_132032.jpg

作者: fx283    時間: 2018-8-8 14:56
這么長的程序 ……怎么看得下去啊
對比一下這個板子給的例程
作者: 鐡人    時間: 2018-8-9 10:12
fx283 發(fā)表于 2018-8-8 14:56
這么長的程序 ……怎么看得下去啊
對比一下這個板子給的例程

ds1302 的.c  .h 程序都是復制的沒問題啊   ,就單獨顯示時鐘是可以的,加到這個程序就不行了,串口發(fā)到電腦上也是???問號
作者: fzqiang    時間: 2018-8-9 10:40
程序有點兒長呀~~
作者: 011010    時間: 2018-8-9 10:52
不是這樣的,用c

作者: yousunny    時間: 2018-8-9 11:13
你這樣的開發(fā)版,應該有歷程的,所以,找個歷程下載進去,看下行不行。
然后,就是硬件問題了。我記得當時是那個芯片壞的,一直讀取不了。然后,電池也是沒電的,也是不行。
作者: 人中狼    時間: 2018-8-9 15:22
為什么沒貼1302部分的程序呢,試試把1302部分的操作頻率降低,有的1302芯片好像數(shù)據(jù)的時鐘頻率不能太高了
作者: 鐡人    時間: 2018-8-9 15:40
yousunny 發(fā)表于 2018-8-9 11:13
你這樣的開發(fā)版,應該有歷程的,所以,找個歷程下載進去,看下行不行。
然后,就是硬件問題了。我記得當時 ...

單獨1602顯示可以的,加到我這個程序就不能顯示了
作者: 鐡人    時間: 2018-8-10 09:37
人中狼 發(fā)表于 2018-8-9 15:22
為什么沒貼1302部分的程序呢,試試把1302部分的操作頻率降低,有的1302芯片好像數(shù)據(jù)的時鐘頻率不能太高了

1302的程序就是復制的開發(fā)板歷程里面的,我在1602單獨顯示或者串口傳回電腦可以有1302的值,
作者: jipinxlm    時間: 2018-8-10 10:19
這么長的程序實在沒耐心看完。。。我覺得寫代碼的時候應該先實現(xiàn)小的功能模塊并測試OK然后再逐步增加其它功能模塊,這樣全部寫完再測試根本沒辦法判斷問題可能出現(xiàn)的地方,然后出錯后可以用printf在特定位置打印代碼,方便判斷具體執(zhí)行情況。
作者: 鐡人    時間: 2018-8-11 12:09
jipinxlm 發(fā)表于 2018-8-10 10:19
這么長的程序實在沒耐心看完。。。我覺得寫代碼的時候應該先實現(xiàn)小的功能模塊并測試OK然后再逐步增加其它功 ...

就是我所有模塊都是好的,加起來有問題了
作者: Trump1438    時間: 2019-1-28 20:06
最好還是一種種功能來實驗,先做好LCD1602,再DS1302,后AT2402.一口吃個大胖子不切實際!




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1