找回密码
 立即注册

QQ登录

只需一步,快速开始

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

1602+ds1302+18b20万年历程序问题

[复制链接]
跳转到指定楼层
楼主
ID:86151 发表于 2015-9-12 13:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
昨天下午做了个1602+ds1302+ds18b20+蜂鸣器+4个独立按键的万年历,哪位大神能否给个靠谱点的万年历程序呀,我的程序时间部分里小时和分钟是乱码,调了一夜也没调好,,调到想死勒 - ,-哪位大神的程序写得好,让我们这种菜鸟观摩观摩呗 邮箱:joinhel@qq.com,求大神帮忙喽
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:89960 发表于 2015-9-12 17:08 | 只看该作者
有个用定时器显示时钟的程序
回复

使用道具 举报

板凳
ID:89960 发表于 2015-9-12 17:10 | 只看该作者
#include<reg52.h> #define uint unsigned int #define uchar unsigned char uchar count,s1num; char shi=23,fen=59,miao=55; uchar day=28, month=2,year1=20,year2=14,zhou=7;   int year; sbit lcden=P2^7;//定义1602液晶LCDEN端 sbit rw=P2^6;        //定义1602液晶RW端 sbit rs=P2^5;         //定义1602液晶RS端  sbit s4=P2^0; //定义按键-功能键 sbit s2=P2^2;// 定义按键-增大键 sbit s3=P2^3; //定义按键-减小键     void delay(uint z)         //延时函数 {         uint i,j;         for(i=z;i>0;i--)                 for(j=110;j>0;j--); } void write_com(uchar com)   //液晶写命令函数 {         rs=0;         rw=0;         lcden=0;         P0=com;         delay(5);         lcden=1;         delay(5);          lcden=0;  } void write_data(uchar date) //液晶写数据函数 {         rs=1;         rw=0;         lcden=0;         P0=date;         delay(5);         lcden=1;         delay(5);          lcden=0;  } void write_sfm(uchar add,uchar date)  //写时分秒函数 {         uchar shi,ge;         shi=date/10;  //分解一个两位数的十位和各位         ge=date%10;         write_com(0x80+0x40+add); //设置显示位置         write_data(0x30+shi);  // 送去液晶显示十位         write_data(0x30+ge);   //送去液晶显示个位   } void write_nyr(uchar add,uchar date) //写年月日函数 {         uchar shi,ge;         shi=date/10;                 ge=date%10;         write_com(0x80+add);         write_data(0x30+shi);         write_data(0x30+ge);  } void write_week(uchar add,uchar date) {         write_com(0x80+13);         switch(zhou)         {                 case 1: write_data('M');delay(5);                            write_data('O');delay(5);                           write_data('N');delay(5);                   case 2: write_data('T');delay(5);                            write_data('U');delay(5);                           write_data('E');delay(5);                  case 3: write_data('W');delay(5);                            write_data('E');delay(5);                           write_data('D');delay(5);                   case 4:write_data('T');delay(5);                            write_data('H');delay(5);                           write_data('U');delay(5);                  case 5: write_data('F');delay(5);                            write_data('R');delay(5);                           write_data('T');delay(5);                    case 6: write_data('S');delay(5);                            write_data('A');delay(5);                           write_data('T');delay(5);                     case 7:write_data('S');delay(5);                            write_data('U');delay(5);                           write_data('N');delay(5);                 }  }  void init() //初始化函数 {                  lcden=0;                 count=0;         s1num=0;          write_com(0x38); //初始化1602液晶         write_com(0x0c);         write_com(0x06);         write_com(0x01);         write_com(0x80); //设置显示初始坐标                     write_com(0x80+7);         //写出时间部分的两个冒号         write_data('-');         delay(5);     write_com(0x80+4);           write_data('-');         delay(5);         write_nyr(8,day);         //分别送去液晶显示屏         write_nyr(5,month);         write_nyr(0,year1);          write_nyr(2,year2);         write_week(13,zhou);                write_com(0x80+0x40+6);         //写出时间部分的两个冒号         write_data(':');         delay(5);     write_com(0x80+0x40+9);           write_data(':');         delay(5);         write_sfm(10,miao);         //分别送去液晶显示屏         write_sfm(7,fen);         write_sfm(4,shi);          TMOD=0X01; // 设置定时器0工作模式1         TH0=(65536-50000)/256;//定时器装初值         TL0=(65536-50000)%256;           EA=1;//开总中断         ET0=1;// 开定时器中断         TR0=1;// 启动定时器0         EX0=1;         IT0=0;          }   void keyscan()        //按键扫描函数 {         if(s4==0)         {                 delay(5);                 if(s4==0)         //确认功能键被按下                 {                         s1num++; //功能键按下次数记录                         while(!s4);//释放确认                         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) //第四次按下时光标闪烁定位到日位置                          {                                          write_com(0x80+13);                            }                          if(s1num==5) //第四次按下时光标闪烁定位到日位置                          {                                          write_com(0x80+8);                          }                          if(s1num==6) //第五次按下时光标闪烁定位到月位置                          {                                          write_com(0x80+5);                          }                         if(s1num==7) //第六次按下时光标闪烁定位到年位置                          {                                          write_com(0x80+2);                          }                          if(s1num==8) //第七次按下时光标闪烁定位到年位置                          {                                          write_com(0x80+0);                          }                          if(s1num==9) //第八次按下                          {                                  s1num=0;;        //记录按键数清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) //若满60后将清0                                         miao=0;                                         write_sfm(10,miao);//每调节一次送液晶显示一下                                                 write_com(0x80+0x40+10);//显示位置重新回到调节处                                 }                                 if(s1num==2) //功能键第二次被按下                                 {                                         fen++; //则调整分钟加一                                            if(fen==60) //若满60后将清0                                                 fen=0;                                         write_sfm(7,fen);//每调节一次送液晶显示一下                                           write_com(0x80+0x40+7);//显示位置重新回到调节处                                 }                                     if(s1num==3)//功能键第三次被按下                                 {                                         shi++; //则调整小时加一                                         if(shi==24) //若满24后将清0                                                 shi=0;                                         write_sfm(4,shi);//每调节一次送液晶显示一下                                          write_com(0x80+0x40+4);//显示位置重新回到调节处                                 }                                  if(s1num==4)                                 {                                         zhou++;                                         if(zhou==8)                                                 zhou=1;                                         write_week(13,zhou);                                         write_com(0x80+13);                                                                                                                                   }                                                                      if(s1num==5)//功能键第四次被按下                                 {                                                  day++; //则调整日加一                                                  if(month==2)                                         {                                                   if(year%400==0)                                                 {                                                          if(day>=30)                                                         day=1;                                                                                                     }                                                             else                                                    {                                                                 if((year%4==0)&&(year%100!=0))                                                                 {                                                                         if(day>=30)                                                                         day=1;                                                                                                                                                   }                                                         else                                                         {                                                                 if(day>=29)                                                                 day=1;                                                                 }                                                                                                      }                                                                                         }                                         if((month==4)||(month==6)||(month==9)||(month==11)) //4,6,9,11月30天,满30天清为1                                         {                                                 if(day==31)                                                                   day=1;                                                                   }                                     if((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12))//1,3,5,7,8,10,12月为31天,满31天清为1                                         {                                                 if(day==32)                                                                                                   day=1;                                                                          }                                                                                                                   write_nyr(8,day);//每调节一次送液晶显示一下                                          write_com(0x80+8);//显示位置重新回到调节处                                         }                                  if(s1num==6)//功能键第五次被按下                                 {                                         month++; //则调整月加一                                         if(month==13) //若满12后将 为1                                                 month=1;                                         write_nyr(5,month);//每调节一次送液晶显示一下                                          write_com(0x80+5);//显示位置重新回到调节处                                         }                                   if(s1num==7)//功能键第六次被按下                                 {                                         year2++; //则调整年加一                                         if(year2==100) //若满100后将清0                                                 year2=0;                                         write_nyr(2,year2);//每调节一次送液晶显示一下                                          write_com(0x80+2);//显示位置重新回到调节处                                         }                                    if(s1num==8)//功能键第七次被按下                                 {                                         year1++; //则调整年加一                                         if(year1==100) //若满100后将清0                                                 year1=0;                                         write_nyr(0,year1);//每调节一次送液晶显示一下                                          write_com(0x80+0);//显示位置重新回到调节处                                         }                          }                                 }            if(s3==0)             {                    delay(5);                 if(s3==0)         //确认减小键被按下                 {                         while(!s3); //按键释放                         if(s1num==1)//功能键第一次被按下                 {                         miao--;  //则调整秒减一                         if(miao==-1) //若减到负值则将其重新设置为59                                                           miao=59;                                 write_sfm(10,miao);//每调节一次送液晶显示一下                                  write_com(0x80+0x40+10);        //显示位置重新回到调节处                          }                    if(s1num==2) //功能键第二次被按下                 {                fen--; //则调整分钟减一                         if(fen==-1)//若减到负值则将其重新设置为59                                                           fen=59;                                 write_sfm(7,fen);//每调节一次送液晶显示一下                                  write_com(0x80+0x40+7); //显示位置重新回到调节处                          }                     if(s1num==3)//功能键第三次被按下                 {        shi--;        //则调整小时减一                         if(shi==-1)                                          //若减到负值则将其重新设置为23                                 shi=23;                                 write_sfm(4,shi);//每调节一次送液晶显示一下                                  write_com(0x80+0x40+4);        //显示位置重新回到调节处                          }                         if(s1num==4)                                 {                                         zhou--;                                         if(zhou==0)                                                 zhou=7;                                         write_week(13,zhou);                                         write_com(0x80+13);                                                                                                                                   }                      if(s1num==5)                     {                                     day--;                                                                                   if(month==2)                                         {                                                   if(year%400==0)                                                 {                                                          if(day==0)                                                         day=29;                                                                                                     }                                                             else                                                    {                                                                 if((year%4==0)&&(year%100!=0))                                                                 {                                                                         if(day==0)                                                                         day=29;                                                                                                                                                   }                                                         else                                                         {                                                                 if(day==0)                                                                 day=28;                                                                 }                                                                                                      }                                                                                    }                         if((month==4)||(month==6)||(month==9)||(month==11))//4,6,9,11月为30天,若减到0则重新设置为30                         {                                 if(day==0)                                 day=30;                         }                       if((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12))//1,3,5,7,8,10,12月为31天,若减到0则重新设置为31                                         {                                                 if(day==0)                                                                                                   day=31;                                                                          }                          write_nyr(8,day);//每调节一次送液晶显示一下                          write_com(0x80+8);        //显示位置重新回到调节处                      }                                             if(s1num==6)//功能键第五次被按下                 {        month--;        //则调整月减一                         if(month==0)                                          //若减到负值则将其重新设置为12                                 month=12;                                 write_nyr(5,month);//每调节一次送液晶显示一下                                  write_com(0x80+5);        //显示位置重新回到调节处                          }                         if(s1num==7)//功能键第六次被按下                 {        year2--;        //则调整年减一                         if(year2==0)                                          //若减到负值则将其重新设置为99                                 year2=99;                                 write_nyr(2,year2);//每调节一次送液晶显示一下                                  write_com(0x80+2);        //显示位置重新回到调节处                          }                                 if(s1num==8)//功能键第七次被按下                 {        year1--;        //则调整年减一                         if(year1==0)                                          //若减到负值则将其重新设置为99                                 year1=99;                                 write_nyr(0,year1);//每调节一次送液晶显示一下                                  write_com(0x80+0);        //显示位置重新回到调节处                          }                  }            }         }         } void main()         //主函数 {         init(); //首先初始化数据                    while(1)//进入程序大循环         {                         year=100*year1+year2;                           keyscan(); //不停地扫描按键是否被按下                 }         }                     void timer0() interrupt 1 //定时器0中断服务程序 {         TH0=(65536-50000)/256; //再次装定时器初值         TL0=(65536-50000)%256;          count++;        //中断次数累加          if(count==20)        //20次50毫秒为1秒                  {                         count=0;                         miao++;                 if(miao==60)  //秒加到60则进位分钟                 {                         miao=0;//同时秒清0                         fen++;                         if(fen==60)//秒加到60则进位小时                         {                                            fen=0; //同时分钟清0                                 shi++;                                 if(shi==24)//小时加到24则清0                                 {                                         shi=0;                                         day++;                                         if(zhou==7)                                         zhou=0;                                           zhou++;                                                                                                                                                      if(1)                         {                                                        if(month==2)                                         {                                                   if(year%400==0)                                                 {                                                          if(day==30)                                                         {                                                         day=1;                                                         month++;}                                                                                                     }                                                             else                                                    {                                                                 if((year%4==0)&&(year%100!=0))                                                                 {                                                                         if(day==30)                                                                   {        day=1;                                                                         month++;                                                                         }                                                                                                                                                   }                                                         else                                                         {                                                                 if(day==29)                                                         {        day=1;                                                                 month++;                                                                 }                                                                 }                                                                                                      }                                                                                                                 }                                   if((month==4)||(month==6)||(month==9)||(month==11))                                   {                                           if(day==31)                                         {                                         day=1;                                         month++;                                         }                                   }                                    if ((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12))//1,3,5,7,8,10,12月为31天,若减到0则重新设置为31                                         {                                                 if(day==32)                                                 {                                                  day=1;                                                 month++;                                                 }                                                                          }                                                                                                   if(month==12)//月加到12则清0                                  {                                         month=0;                                         year2++;                                                                     if(year2==100)//年加到100则清0                                 {                                         year2=0;                                         year1++;                                         if(year1==100)                                         {                                                 year1=0;                                         }                                         write_nyr(0,year1);                                  }                                  write_nyr(2,year2);                                 }                                 write_nyr(5,month);                          }                            write_nyr(8,day);                             write_week(13,zhou);                                                     }                             write_sfm(4,shi);//小时若变化则重新写入                                                                              }                         write_sfm(7,fen);//分钟若变化则重新写入                                                                                                       }             write_sfm(10,miao); //秒若变化则重新写入                              }         } void exter0() interrupt 0//外部中断0服务函数 {                             write_com(0x01);//清屏         write_com(0x38); //初始化1602液晶         write_com(0x0c);         write_com(0x06);         write_com(0x01);         write_com(0x80); //设置显示初始坐标              write_com(0x80+0x40+13);//写出OK并送去液晶显示          write_data('O');          delay(20);          write_com(0x80+0x40+14);          write_data('K');          delay(2000);          EX0=1;             init(); //初始化   让OK显示完之后显示出时间                           }
回复

使用道具 举报

地板
ID:89960 发表于 2015-9-12 17:12 | 只看该作者
#include<reg52.h> #define uint unsigned int #define uchar unsigned char uchar count,s1num; char shi=23,fen=59,miao=55; uchar day=28, month=2,year1=20,year2=14,zhou=7;   int year; sbit lcden=P2^7;//定义1602液晶LCDEN端 sbit rw=P2^6;        //定义1602液晶RW端 sbit rs=P2^5;         //定义1602液晶RS端  sbit s4=P2^0; //定义按键-功能键 sbit s2=P2^2;// 定义按键-增大键 sbit s3=P2^3; //定义按键-减小键     void delay(uint z)         //延时函数 {         uint i,j;         for(i=z;i>0;i--)                 for(j=110;j>0;j--); } void write_com(uchar com)   //液晶写命令函数 {         rs=0;         rw=0;         lcden=0;         P0=com;         delay(5);         lcden=1;         delay(5);          lcden=0;  } void write_data(uchar date) //液晶写数据函数 {         rs=1;         rw=0;         lcden=0;         P0=date;         delay(5);         lcden=1;         delay(5);          lcden=0;  } void write_sfm(uchar add,uchar date)  //写时分秒函数 {         uchar shi,ge;         shi=date/10;  //分解一个两位数的十位和各位         ge=date%10;         write_com(0x80+0x40+add); //设置显示位置         write_data(0x30+shi);  // 送去液晶显示十位         write_data(0x30+ge);   //送去液晶显示个位   } void write_nyr(uchar add,uchar date) //写年月日函数 {         uchar shi,ge;         shi=date/10;                 ge=date%10;         write_com(0x80+add);         write_data(0x30+shi);         write_data(0x30+ge);  } void write_week(uchar add,uchar date) {         write_com(0x80+13);         switch(zhou)         {                 case 1: write_data('M');delay(5);                            write_data('O');delay(5);                           write_data('N');delay(5);                   case 2: write_data('T');delay(5);                            write_data('U');delay(5);                           write_data('E');delay(5);                  case 3: write_data('W');delay(5);                            write_data('E');delay(5);                           write_data('D');delay(5);                   case 4:write_data('T');delay(5);                            write_data('H');delay(5);                           write_data('U');delay(5);                  case 5: write_data('F');delay(5);                            write_data('R');delay(5);                           write_data('T');delay(5);                    case 6: write_data('S');delay(5);                            write_data('A');delay(5);                           write_data('T');delay(5);                     case 7:write_data('S');delay(5);                            write_data('U');delay(5);                           write_data('N');delay(5);                 }  }  void init() //初始化函数 {                  lcden=0;                 count=0;         s1num=0;          write_com(0x38); //初始化1602液晶         write_com(0x0c);         write_com(0x06);         write_com(0x01);         write_com(0x80); //设置显示初始坐标                     write_com(0x80+7);         //写出时间部分的两个冒号         write_data('-');         delay(5);     write_com(0x80+4);           write_data('-');         delay(5);         write_nyr(8,day);         //分别送去液晶显示屏         write_nyr(5,month);         write_nyr(0,year1);          write_nyr(2,year2);         write_week(13,zhou);                write_com(0x80+0x40+6);         //写出时间部分的两个冒号         write_data(':');         delay(5);     write_com(0x80+0x40+9);           write_data(':');         delay(5);         write_sfm(10,miao);         //分别送去液晶显示屏         write_sfm(7,fen);         write_sfm(4,shi);          TMOD=0X01; // 设置定时器0工作模式1         TH0=(65536-50000)/256;//定时器装初值         TL0=(65536-50000)%256;           EA=1;//开总中断         ET0=1;// 开定时器中断         TR0=1;// 启动定时器0         EX0=1;         IT0=0;          }   void keyscan()        //按键扫描函数 {         if(s4==0)         {                 delay(5);                 if(s4==0)         //确认功能键被按下                 {                         s1num++; //功能键按下次数记录                         while(!s4);//释放确认                         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) //第四次按下时光标闪烁定位到日位置                          {                                          write_com(0x80+13);                            }                          if(s1num==5) //第四次按下时光标闪烁定位到日位置                          {                                          write_com(0x80+8);                          }                          if(s1num==6) //第五次按下时光标闪烁定位到月位置                          {                                          write_com(0x80+5);                          }                         if(s1num==7) //第六次按下时光标闪烁定位到年位置                          {                                          write_com(0x80+2);                          }                          if(s1num==8) //第七次按下时光标闪烁定位到年位置                          {                                          write_com(0x80+0);                          }                          if(s1num==9) //第八次按下                          {                                  s1num=0;;        //记录按键数清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) //若满60后将清0                                         miao=0;                                         write_sfm(10,miao);//每调节一次送液晶显示一下                                                 write_com(0x80+0x40+10);//显示位置重新回到调节处                                 }                                 if(s1num==2) //功能键第二次被按下                                 {                                         fen++; //则调整分钟加一                                            if(fen==60) //若满60后将清0                                                 fen=0;                                         write_sfm(7,fen);//每调节一次送液晶显示一下                                           write_com(0x80+0x40+7);//显示位置重新回到调节处                                 }                                     if(s1num==3)//功能键第三次被按下                                 {                                         shi++; //则调整小时加一                                         if(shi==24) //若满24后将清0                                                 shi=0;                                         write_sfm(4,shi);//每调节一次送液晶显示一下                                          write_com(0x80+0x40+4);//显示位置重新回到调节处                                 }                                  if(s1num==4)                                 {                                         zhou++;                                         if(zhou==8)                                                 zhou=1;                                         write_week(13,zhou);                                         write_com(0x80+13);                                                                                                                                   }                                                                      if(s1num==5)//功能键第四次被按下                                 {                                                  day++; //则调整日加一                                                  if(month==2)                                         {                                                   if(year%400==0)                                                 {                                                          if(day>=30)                                                         day=1;                                                                                                     }                                                             else                                                    {                                                                 if((year%4==0)&&(year%100!=0))                                                                 {                                                                         if(day>=30)                                                                         day=1;                                                                                                                                                   }                                                         else                                                         {                                                                 if(day>=29)                                                                 day=1;                                                                 }                                                                                                      }                                                                                         }                                         if((month==4)||(month==6)||(month==9)||(month==11)) //4,6,9,11月30天,满30天清为1                                         {                                                 if(day==31)                                                                   day=1;                                                                   }                                     if((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12))//1,3,5,7,8,10,12月为31天,满31天清为1                                         {                                                 if(day==32)                                                                                                   day=1;                                                                          }                                                                                                                   write_nyr(8,day);//每调节一次送液晶显示一下                                          write_com(0x80+8);//显示位置重新回到调节处                                         }                                  if(s1num==6)//功能键第五次被按下                                 {                                         month++; //则调整月加一                                         if(month==13) //若满12后将 为1                                                 month=1;                                         write_nyr(5,month);//每调节一次送液晶显示一下                                          write_com(0x80+5);//显示位置重新回到调节处                                         }                                   if(s1num==7)//功能键第六次被按下                                 {                                         year2++; //则调整年加一                                         if(year2==100) //若满100后将清0                                                 year2=0;                                         write_nyr(2,year2);//每调节一次送液晶显示一下                                          write_com(0x80+2);//显示位置重新回到调节处                                         }                                    if(s1num==8)//功能键第七次被按下                                 {                                         year1++; //则调整年加一                                         if(year1==100) //若满100后将清0                                                 year1=0;                                         write_nyr(0,year1);//每调节一次送液晶显示一下                                          write_com(0x80+0);//显示位置重新回到调节处                                         }                          }                                 }            if(s3==0)             {                    delay(5);                 if(s3==0)         //确认减小键被按下                 {                         while(!s3); //按键释放                         if(s1num==1)//功能键第一次被按下                 {                         miao--;  //则调整秒减一                         if(miao==-1) //若减到负值则将其重新设置为59                                                           miao=59;                                 write_sfm(10,miao);//每调节一次送液晶显示一下                                  write_com(0x80+0x40+10);        //显示位置重新回到调节处                          }                    if(s1num==2) //功能键第二次被按下                 {                fen--; //则调整分钟减一                         if(fen==-1)//若减到负值则将其重新设置为59                                                           fen=59;                                 write_sfm(7,fen);//每调节一次送液晶显示一下                                  write_com(0x80+0x40+7); //显示位置重新回到调节处                          }                     if(s1num==3)//功能键第三次被按下                 {        shi--;        //则调整小时减一                         if(shi==-1)                                          //若减到负值则将其重新设置为23                                 shi=23;                                 write_sfm(4,shi);//每调节一次送液晶显示一下                                  write_com(0x80+0x40+4);        //显示位置重新回到调节处                          }                         if(s1num==4)                                 {                                         zhou--;                                         if(zhou==0)                                                 zhou=7;                                         write_week(13,zhou);                                         write_com(0x80+13);                                                                                                                                   }                      if(s1num==5)                     {                                     day--;                                                                                   if(month==2)                                         {                                                   if(year%400==0)                                                 {                                                          if(day==0)                                                         day=29;                                                                                                     }                                                             else                                                    {                                                                 if((year%4==0)&&(year%100!=0))                                                                 {                                                                         if(day==0)                                                                         day=29;                                                                                                                                                   }                                                         else                                                         {                                                                 if(day==0)                                                                 day=28;                                                                 }                                                                                                      }                                                                                    }                         if((month==4)||(month==6)||(month==9)||(month==11))//4,6,9,11月为30天,若减到0则重新设置为30                         {                                 if(day==0)                                 day=30;                         }                       if((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12))//1,3,5,7,8,10,12月为31天,若减到0则重新设置为31                                         {                                                 if(day==0)                                                                                                   day=31;                                                                          }                          write_nyr(8,day);//每调节一次送液晶显示一下                          write_com(0x80+8);        //显示位置重新回到调节处                      }                                             if(s1num==6)//功能键第五次被按下                 {        month--;        //则调整月减一                         if(month==0)                                          //若减到负值则将其重新设置为12                                 month=12;                                 write_nyr(5,month);//每调节一次送液晶显示一下                                  write_com(0x80+5);        //显示位置重新回到调节处                          }                         if(s1num==7)//功能键第六次被按下                 {        year2--;        //则调整年减一                         if(year2==0)                                          //若减到负值则将其重新设置为99                                 year2=99;                                 write_nyr(2,year2);//每调节一次送液晶显示一下                                  write_com(0x80+2);        //显示位置重新回到调节处                          }                                 if(s1num==8)//功能键第七次被按下                 {        year1--;        //则调整年减一                         if(year1==0)                                          //若减到负值则将其重新设置为99                                 year1=99;                                 write_nyr(0,year1);//每调节一次送液晶显示一下                                  write_com(0x80+0);        //显示位置重新回到调节处                          }                  }            }         }         } void main()         //主函数 {         init(); //首先初始化数据                    while(1)//进入程序大循环         {                         year=100*year1+year2;                           keyscan(); //不停地扫描按键是否被按下                 }         }                     void timer0() interrupt 1 //定时器0中断服务程序 {         TH0=(65536-50000)/256; //再次装定时器初值         TL0=(65536-50000)%256;          count++;        //中断次数累加          if(count==20)        //20次50毫秒为1秒                  {                         count=0;                         miao++;                 if(miao==60)  //秒加到60则进位分钟                 {                         miao=0;//同时秒清0                         fen++;                         if(fen==60)//秒加到60则进位小时                         {                                            fen=0; //同时分钟清0                                 shi++;                                 if(shi==24)//小时加到24则清0                                 {                                         shi=0;                                         day++;                                         if(zhou==7)                                         zhou=0;                                           zhou++;                                                                                                                                                      if(1)                         {                                                        if(month==2)                                         {                                                   if(year%400==0)                                                 {                                                          if(day==30)                                                         {                                                         day=1;                                                         month++;}                                                                                                     }                                                             else                                                    {                                                                 if((year%4==0)&&(year%100!=0))                                                                 {                                                                         if(day==30)                                                                   {        day=1;                                                                         month++;                                                                         }                                                                                                                                                   }                                                         else                                                         {                                                                 if(day==29)                                                         {        day=1;                                                                 month++;                                                                 }                                                                 }                                                                                                      }                                                                                                                 }                                   if((month==4)||(month==6)||(month==9)||(month==11))                                   {                                           if(day==31)                                         {                                         day=1;                                         month++;                                         }                                   }                                    if ((month==1)||(month==3)||(month==5)||(month==7)||(month==8)||(month==10)||(month==12))//1,3,5,7,8,10,12月为31天,若减到0则重新设置为31                                         {                                                 if(day==32)                                                 {                                                  day=1;                                                 month++;                                                 }                                                                          }                                                                                                   if(month==12)//月加到12则清0                                  {                                         month=0;                                         year2++;                                                                     if(year2==100)//年加到100则清0                                 {                                         year2=0;                                         year1++;                                         if(year1==100)                                         {                                                 year1=0;                                         }                                         write_nyr(0,year1);                                  }                                  write_nyr(2,year2);                                 }                                 write_nyr(5,month);                          }                            write_nyr(8,day);                             write_week(13,zhou);                                                     }                             write_sfm(4,shi);//小时若变化则重新写入                                                                              }                         write_sfm(7,fen);//分钟若变化则重新写入                                                                                                       }             write_sfm(10,miao); //秒若变化则重新写入                              }         } void exter0() interrupt 0//外部中断0服务函数 {                             write_com(0x01);//清屏         write_com(0x38); //初始化1602液晶         write_com(0x0c);         write_com(0x06);         write_com(0x01);         write_com(0x80); //设置显示初始坐标              write_com(0x80+0x40+13);//写出OK并送去液晶显示          write_data('O');          delay(20);          write_com(0x80+0x40+14);          write_data('K');          delay(2000);          EX0=1;             init(); //初始化   让OK显示完之后显示出时间                           }
回复

使用道具 举报

5#
ID:83006 发表于 2015-9-12 22:33 | 只看该作者
这是我自己做的,可以参考

13定时器实验.rar

185.91 KB, 下载次数: 20

回复

使用道具 举报

6#
ID:86151 发表于 2015-9-13 01:57 | 只看该作者
青城将军 发表于 2015-9-12 17:12
#include #define uint unsigned int #define uchar unsigned char uchar count,s1num; char shi=23,fen=5 ...

还是谢喽,可惜不是我要的1302时钟芯片程序
回复

使用道具 举报

7#
ID:86151 发表于 2015-9-13 01:59 | 只看该作者
50527978 发表于 2015-9-12 22:33
这是我自己做的,可以参考

谢喽,定时器做的精度不够,我以前做了个,走时不准的,所以我又做了个带时钟芯片的,只是程序不熟
回复

使用道具 举报

8#
ID:83006 发表于 2015-9-13 23:34 | 只看该作者
qq154870327 发表于 2015-9-13 01:59
谢喽,定时器做的精度不够,我以前做了个,走时不准的,所以我又做了个带时钟芯片的,只是程序不熟

先参考别人的程序然后可以拿来改成自己需要的,我也是刚学这个不久,所以自己做的这个有一定缺陷
回复

使用道具 举报

9#
ID:61840 发表于 2015-9-15 23:03 | 只看该作者
用1302程序时间部分里小时和分钟是乱码时,要重点注意提取位数据要进行制式转换,比如读出数据十位要转换为十进制(/10X),调整后回写数据时又要转换回10进制。
回复

使用道具 举报

10#
ID:86151 发表于 2015-9-15 23:57 | 只看该作者
无罪之宾 发表于 2015-9-15 23:03
用1302程序时间部分里小时和分钟是乱码时,要重点注意提取位数据要进行制式转换,比如读出数据十位要转换为 ...

我对时钟模块的转换不是很了解,我是找的别人的程序和配套的仿真图做的,做出来才发现只有温度显示正常,时间和日期一直在乱码和正常之间跳动。。你有没有时间帮我修改修改呀,可以的话,我加你呀。
回复

使用道具 举报

11#
ID:86151 发表于 2015-9-16 00:08 | 只看该作者
无罪之宾 发表于 2015-9-15 23:03
用1302程序时间部分里小时和分钟是乱码时,要重点注意提取位数据要进行制式转换,比如读出数据十位要转换为 ...

你是武汉理工大毕业的呀,我骑车出去时经常经过珞狮路的理工大门口。我是武大珞珈学院的,过了华农就到我们这了。不过我只是个电子菜鸟,只是比较喜欢,所以一直在自学,我学的不是这个专业,所以对程序这块特别难懂 - -
回复

使用道具 举报

12#
ID:88746 发表于 2015-9-17 19:52 | 只看该作者
我用1602做过一个,但是没有加蜂鸣器,也没有用时钟芯片,以及存储芯片
回复

使用道具 举报

13#
ID:90563 发表于 2015-9-19 21:23 | 只看该作者
#include<reg52.h> #include<intrins.h> #define uchar unsigned char  #define uint unsigned int #define     LCDIO      P2 sbit DQ=P1^3;//ds18b20与单片机连接口 sbit rs=P1^0;   sbit rd=P1^1; sbit lcden=P1^2; sbit acc0=ACC^0;             //移位时的第0位 sbit acc7=ACC^7;             //移位时用的第7位 uchar second,minute,hour,day,month,year,week,count=0;     uchar ReadValue,num,time;     uint tvalue;//温度值 uchar tflag; uchar code        table[]={" 2010-11-29 MON"}; uchar code table1[]={" 15:45:00 000.0C"}; uchar code table2[]= "THUFRISATSUNMONTUEWES"; uchar data disdata[5]; sbit DATA=P0^1;   //时钟数据接口 sbit RST=P0^2;     sbit SCLK=P0^0;    sbit menu=P3^5;              //菜单 sbit add=P3^6;               //加一 sbit dec=P3^7;               //减一 void delay(uint z) {         uint x,y;         for(x=z;x>0;x--)                 for(y=110;y>0;y--); } void delay1(uint z) {         for(;z>0;z--); } void write_com(uchar com) {         rs=0;         rd=0;         lcden=0;         P2=com;         delay(5);         lcden=1;         delay(5);         lcden=0;         }  void write_date(uchar date) {         rs=1;         rd=0;         lcden=0;         P2=date;         delay(5);         lcden=1;         delay(5);         lcden=0;         }  void init() {         uchar num;         lcden=0;          write_com(0x38);         write_com(0x0c);         write_com(0x06);         write_com(0x01);         write_com(0x80);         delay(5);         write_com(0x80);         for(num=0;num<15;num++)                 {                         write_date(table[num]);                         delay(5);                 }         write_com(0x80+0x40);         for(num=0;num<15;num++)                 {                         write_date(table1[num]);                         delay(5);                 }                  }  void Write1302(uchar dat) {   uchar i;    SCLK=0;           //拉低SCLK,为脉冲上升沿写入数据做好准备   delay1(2);       //稍微等待,使硬件做好准备   for(i=0;i<8;i++)      //连续写8个二进制位数据     {      DATA=dat&0x01;    //取出dat的第0位数据写入1302   delay(2);       //稍微等待,使硬件做好准备    SCLK=1;           //上升沿写入数据    delay1(2);      //稍微等待,使硬件做好准备    SCLK=0;           //重新拉低SCLK,形成脉冲    dat>>=1;          //将dat的各数据位右移1位,准备写入下一个数据位    }  }   void WriteSet1302(uchar Cmd,uchar dat)  {    RST=0;           //禁止数据传递    SCLK=0;          //确保写数居前SCLK被拉低    RST=1;           //启动数据传输    delay1(2);     //稍微等待,使硬件做好准备    Write1302(Cmd);  //写入命令字    Write1302(dat);  //写数据    SCLK=1;          //将时钟电平置于已知状态    RST=0;           //禁止数据传递  }  uchar Read1302(void)  {    uchar i,dat;    delay(2);       //稍微等待,使硬件做好准备    for(i=0;i<8;i++)   //连续读8个二进制位数据    {     dat>>=1;       //将dat的各数据位右移1位,因为先读出的是字节的最低位     if(DATA==1)    //如果读出的数据是1     dat|=0x80;    //将1取出,写在dat的最高位     SCLK=1;       //将SCLK置于高电平,为下降沿读出     delay1(2);  //稍微等待     SCLK=0;       //拉低SCLK,形成脉冲下降沿     delay1(2);  //稍微等待     }     return dat;        //将读出的数据返回   }  uchar  ReadSet1302(uchar Cmd)  {   uchar dat;   RST=0;                 //拉低RST   SCLK=0;                //确保写数居前SCLK被拉低   RST=1;                 //启动数据传输   Write1302(Cmd);       //写入命令字   dat=Read1302();       //读出数据   SCLK=1;              //将时钟电平置于已知状态   RST=0;               //禁止数据传递   return dat;          //将读出的数据返回 } void Init_DS1302(void) {   WriteSet1302(0x8E,0x00);                 //根据写状态寄存器命令字,写入不保护指令   WriteSet1302(0x80,((0/10)<<4|(0%10)));   //根据写秒寄存器命令字,写入秒的初始值  WriteSet1302(0x82,((45/10)<<4|(45%10)));   //根据写分寄存器命令字,写入分的初始值  WriteSet1302(0x84,((15/10)<<4|(15%10))); //根据写小时寄存器命令字,写入小时的初始值  WriteSet1302(0x86,((29/10)<<4|(29%10))); //根据写日寄存器命令字,写入日的初始值  WriteSet1302(0x88,((11/10)<<4|(11%10))); //根据写月寄存器命令字,写入月的初始值  WriteSet1302(0x8c,((10/10)<<4|(10%10)));   //nian  WriteSet1302(0x8a,((4/10)<<4|(4%10))); }  void DisplaySecond(uchar x) {  uchar i,j;      i=x/10;  j=x%10;  write_com(0xc7);     write_date(0x30+i);     write_date(0x30+j);        } void DisplayMinute(uchar x) {  uchar i,j;      i=x/10;  j=x%10;   write_com(0xc4);      write_date(0x30+i);    write_date(0x30+j);          }  void DisplayHour(uchar x) {  uchar i,j;     i=x/10;  j=x%10;  write_com(0xc1);      write_date(0x30+i);    write_date(0x30+j);          }   void DisplayDay(uchar x) {  uchar i,j;     i=x/10;  j=x%10;      write_com(0x89);      write_date(0x30+i);    write_date(0x30+j);        }  void DisplayMonth(uchar x) {  uchar i,j;       i=x/10;  j=x%10;    write_com(0x86);      write_date(0x30+i);    write_date(0x30+j);    }  void DisplayYear(uchar x) {  uchar i,j;     i=x/10;  j=x%10;   write_com(0x83);      write_date(0x30+i);  write_date(0x30+j);    }    void DisplayWeek(uchar x) { uchar i;    x=x*3;  write_com(0x8c);      for(i=0;i<3;i++)    {            write_date(table2[x]);         x++;      }  }     void  read_date(void) {      ReadValue = ReadSet1302(0x81);         second=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);      ReadValue = ReadSet1302(0x83);        minute=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);       ReadValue = ReadSet1302(0x85);        hour=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);       ReadValue = ReadSet1302(0x87);        day=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);       ReadValue = ReadSet1302(0x89);        month=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);       ReadValue = ReadSet1302(0x8d);        year=((ReadValue&0x70)>>4)*10 + (ReadValue&0x0F);           ReadValue=ReadSet1302(0x8b);                     //读星期      week=ReadValue&0x07;      DisplaySecond(second);                 DisplayMinute(minute);              DisplayHour(hour);                   DisplayDay(day);                      DisplayMonth(month);                  DisplayYear(year);                    DisplayWeek(week);   }  void turn_val(char newval,uchar flag,uchar  newaddr,uchar s1num)     {                    newval=ReadSet1302(newaddr);                     //读取当前时间                    newval=((newval&0x70)>>4)*10+(newval&0x0f);    //将bcd码转换成十进制                    if(flag)                  //判断是加一还是减一                    {                                       newval++;                      switch(s1num)                        { case 1: if(newval>99) newval=0;                                                       DisplayYear(newval);                                                                         break;                                              case 2: if(newval>12) newval=1;                                                                    DisplayMonth(newval);                                                                    break;                                              case 3: if(newval>31) newval=1;                                                           DisplayDay(newval);                                                                     break;                                              case 4: if(newval>6) newval=0;                                                           DisplayWeek(newval);                                                                    break;                          case 5: if(newval>23) newval=0;                                                           DisplayHour(newval);                                                                    break;                          case 6: if(newval>59) newval=0;                                                           DisplayMinute(newval);                                                                    break;                          case 7: if(newval>59) newval=0;                                                           DisplaySecond(newval);                                                                    break;                          default:break;                        }                                           }                                    else                    {                                     newval--;                                         switch(s1num)                        { case 1: if(newval==0) newval=99;                                                       DisplayYear(newval);                                                                    break;                                              case 2: if(newval==0) newval=12;                                                                    DisplayMonth(newval);                                                            break;                                              case 3: if(newval==0) newval=31;                                                                    DisplayDay(newval);                                                            break;                                              case 4: if(newval<0) newval=6;                                                           DisplayWeek(newval);                                                                    break;                          case 5: if(newval<0) newval=23;                                                           DisplayHour(newval);                                                                    break;                          case 6: if(newval<0) newval=59;                                                           DisplayMinute(newval);                                                                    break;                          case 7: if(newval<0) newval=59;                                                           DisplaySecond(newval);                                                                   break;                                                  default:break;                                        }                                          }                 WriteSet1302((newaddr-1),((newval/10)<<4)|(newval%10));  //将新数据写入寄存器                     }     //键盘扫描程序 //******************************************* void key_scan(void) {        uchar miao,s1num=0;                   if(menu==0)      {         delay(5);            if(menu==0)            {              while(!menu);                             s1num++;                 while(1)             {                                      if(menu==0)              {                  delay(5);                     if(menu==0)                       {                                       while(!menu);                          s1num++;                           }                  }                  rd=0;                         miao=ReadSet1302(0x81);                         second=miao;                         WriteSet1302(0x80,miao|0x80);                     write_com(0x0f);//光标闪射                                                  if(s1num==1)                         {        year=ReadSet1302(0x8d);                                                  write_com(0x80+4);        //年光标                              if(add==0)                              {                                delay(3);                                if(add==0)                                  {         while(!add);                                turn_val(year,1,0x8d,1);                                                                          }                               }                     if(dec==0)                          {                                 delay(3);                                 if(dec==0)                                  {        while(!dec);                                    turn_val(year,0,0x8d,1);                                                                        }                               }                          }                         if(s1num==2)                         {                           month=ReadSet1302(0x89);                                 write_com(0x80+7);        //月光标                                  if(add==0)                         {                           delay(3);                           if(add==0)                            {  while(!add);                               turn_val(month,1,0x89,2);                             }                         }                         if(dec==0)                         {                            delay(3);                            if(dec==0)                            {  while(!dec);                               turn_val(month,0,0x89,2);                            }                         }                         }                         if(s1num==3)                         {        day=ReadSet1302(0x87);                                 write_com(0x80+10);//日光标                                 if(add==0)                           {                           delay(3);                           if(add==0)                            { while(!add);                          turn_val(day,1,0x87,3);                             }                         }                         if(dec==0)                         {                            delay(3);                            if(dec==0)                            { while(!dec);                              turn_val(day,0,0x87,3);                                //写入日寄存器                            }                         }                         }                         if(s1num==4)                         {  week=ReadSet1302(0x8b);                                 write_com(0x80+14);        //星期光标                                   if(add==0)                              {                           delay(3);                           if(add==0)                            { while(!add);                              turn_val(week,1,0x8b,4);                             }                         }                         if(dec==0)                         {                            delay(3);                            if(dec==0)                            { while(!dec);                      turn_val(week,0,0x8b,4);                            }                         }                         }                         if(s1num==5)                         {        hour=ReadSet1302(0x85);                                 write_com(0x80+0x40+2);        //时光标                                  if(add==0)                         {                           delay(3);                           if(add==0)                            { while(!add);                  turn_val(hour,1,0x85,5);                             }                         }                         if(dec==0)                         {                            delay(3);                            if(dec==0)                            { while(!dec);                          turn_val(hour,0,0x85,5);                            }                         }                         }                         if(s1num==6)//调时间分                         {  minute=ReadSet1302(0x83);                                 write_com(0x80+0x40+5);                                 if(add==0)                         {                           delay(5);                           if(add==0)                            { while(!add);                          turn_val(minute,1,0x83,6);                                //写入分寄存器                                }                         }                         if(dec==0)                         {                            delay(3);                            if(dec==0)                            { while(!dec);                          turn_val(minute,0,0x83,6);                                //写入分寄存器                            }                         }                         }                         if(s1num==7)//调时间秒                         {        second=ReadSet1302(0x81);                                 write_com(0x80+0x40+8);//秒光标                                 if(add==0)                         {                           delay(3);                           if(add==0)                            { while(!add);                  if(second==0x60)                     second=0x00;                                  turn_val(second,1,0x81,7);                                     }                         }                         if(dec==0)                         {                            delay(3);                            if(dec==0)                            { while(!dec);                          turn_val(second,0,0x81,7);                                                            }                         }                         }                                       if(s1num==8)                         {        miao=ReadSet1302(0x81);                                 second=miao;                                 WriteSet1302(0x80,second&0x7f);                                 s1num=0;//s1num清零//                                 write_com(0x0c);//光标不闪烁//                                 break;                         }                 }         }         } }  void delay_18B20(unsigned int i)//延时1微秒 {          while(i--); } void ds1820rst()/*ds1820复位*/  {  unsigned char x=0;          DQ = 1;          //DQ复位          delay_18B20(4);  //延时          DQ = 0;          //DQ拉低          delay_18B20(100); //精确延时大于480us          DQ = 1;          //拉高          delay_18B20(40);             }         uchar ds1820rd()/*读数据*/   { unsigned char i=0;          unsigned char dat = 0;          for (i=8;i>0;i--)          {   DQ = 0; //给脉冲信号                   dat>>=1;                   DQ = 1; //给脉冲信号                   if(DQ)                   dat|=0x80;                   delay_18B20(10);          }          return(dat);   }    void ds1820wr(uchar wdata)/*写数据*/   {unsigned char i=0;     for (i=8; i>0; i--)    { DQ = 0;      DQ = wdata&0x01;      delay_18B20(10);      DQ = 1;      wdata>>=1;    }  } read_temp()/*读取温度值并转换*/  {uchar a,b;   ds1820rst();       ds1820wr(0xcc);//*跳过读序列号*/   ds1820wr(0x44);//*启动温度转换*/   ds1820rst();       ds1820wr(0xcc);//*跳过读序列号*/    ds1820wr(0xbe);//*读取温度*/    a=ds1820rd();   b=ds1820rd();   tvalue=b;   tvalue<<=8;   tvalue=tvalue|a;     if(tvalue<0x0fff)    tflag=0;     else    {tvalue=~tvalue+1;          tflag=1;    }   tvalue=tvalue*(0.425);//温度值扩大10倍,精确到1位小数         return(tvalue);   } void ds1820disp()//温度值显示         { uchar flagdat;           disdata[0]=tvalue/1000+0x30;//百位数      disdata[1]=tvalue%1000/100+0x30;//十位数      disdata[2]=tvalue%100/10+0x30;//个位数      disdata[3]=tvalue%10+0x30;//小数位           if(tflag==0)             flagdat=0x20;//正温度不显示符号      else        flagdat=0x2d;//负温度显示负号:-       if(disdata[0]==0x30)            {disdata[0]=0x20;//如果百位为0,不显示                  if(disdata[1]==0x30)                   {disdata[1]=0x20;//如果百位为0,十位为0也不显示                   }                 }             write_com(0xc9);            write_date(flagdat);//显示符号位            write_com(0xca);            write_date(disdata[0]);//显示百位            write_com(0xcb);            write_date(disdata[1]);//显示十位                     write_com(0xcc);            write_date(disdata[2]);//显示个位                     write_com(0xcd);            write_date(0x2e);//显示小数点                     write_com(0xce);            write_date(disdata[3]);//显示小数位            write_com(0xcf);            write_date('C');    } void main() {                 init();         Init_DS1302();       //将1302初始化          read_temp();//读取温度         ds1820disp();//显示         while(1)         {           read_date();           key_scan();           read_temp();//读取温度          ds1820disp();//显示          }  }
回复

使用道具 举报

14#
ID:91822 发表于 2015-10-7 19:03 | 只看该作者
重新写啊
回复

使用道具 举报

15#
ID:91796 发表于 2015-10-8 16:26 | 只看该作者
你加我QQ974954407
回复

使用道具 举报

16#
ID:86151 发表于 2015-10-9 21:19 | 只看该作者

已经解决,原来是备用电池把时钟芯片烧了。终于找到原因:一般普通的1302芯片太水货,不能直接接备用电池,要接电容和二极管,,
回复

使用道具 举报

17#
ID:99672 发表于 2015-12-23 16:38 | 只看该作者
可以分享下程序吗
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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