网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
07月17日漏签0天
单片机吧 关注:211,956贴子:1,047,124
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 10回复贴,共1页
<<返回单片机吧
>0< 加载中...

跪求大神帮忙看一下!为什么DS1302时间不走!

  • 只看楼主
  • 收藏

  • 回复
  • eminem_oc
  • 下士
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
大神求助啊!弄了两天了,为什么ds1302时间不走,但是按下复位键又可以显示正确时间,就是按一下显示一下,是静态的。还有就是设置不了初始化时间,只能用按键改成什么就接着什么走。谢谢大神们!
#include<reg51.h>#define uchar unsigned char#define uint unsigned int**it lcdrs=P2^6;**it lcdrw=P2^5;**it en=P2^7;**it beep=P3^7;**it DSIO=P3^4;**it RST=P3^5;**it SCLK=P3^6;**it K3=P3^0;**it K1=P3^1;**it K2=P3^2;**it K4=P3^3;uchar place,state;extern uchar Time[7];uchar code Read_Address[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d}; uchar code Write_Address[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c};uchar Time[7]={0,0,0,0x12,0x11,0x04,0x15};void Ds1302Write(uchar address,uchar dat);void Int0Configuration(); /*Delay Function*/void delay(uint s){ uint x,y; for(x=s;x>0;x--) for(y=122;y>0;y--);} /*Beep Function*/void sound(uchar c){ uchar a,b;for(c=c*10;c;c--){beep=!beep;for(a=10;a;a--)for(b=45;b;b--);}} /*LcdInstruct Function*/void wr_pos(uchar com){en=0;lcdrs=0;lcdrw=0;P0=com;en=1;delay(5);en=0;} /*LcdWrite Function*/void wr_dat(uchar time){lcdrs=1;lcdrw=0;en=0;P0=time;en=1;delay(5);en=0;} /*LcdInit Function*/ void LcdInit(){wr_pos(0x38);wr_pos(0x0c);wr_pos(0x06);wr_pos(0x01);wr_pos(0x80);} /*Ds1302Init Function*/void Ds1302Init(){uchar n;Ds1302Write(0x8E,0X00);for (n=0; n<7; n++){Ds1302Write(Write_Address[n],Time[n]);}Ds1302Write(0x8E,0x80); } /*Ds1302Read Function*/uchar Ds1302Read(uchar address){uchar n,data0,data1;SCLK=0;delay(1);RST=1;delay(1);for(n=0;n<=7;n++){DSIO=address&0x01;address>>=1;SCLK=1;delay(1);SCLK=0;delay(1);}for(n=0;n<=7;n++){data1=DSIO;data0=(data0>>1)|(data1<<7);SCLK=1;delay(1);SCLK=0;delay(1);}RST = 0;delay(1);SCLK = 1;delay(1);DSIO = 0;delay(1);DSIO = 1;delay(1);return data0;} /*Ds1302Write Function*/void Ds1302Write(uchar address,uchar dat){uchar n;SCLK=0;delay(1);RST=1;delay(1);for(n=0;n<=7;n++){DSIO=address&0x01;address>>=1;SCLK=1;delay(1);SCLK=0;delay(1);}for(n=0;n<=7;n++){DSIO=dat&0x01;dat>>=1;SCLK=1;delay(1);SCLK=0;delay(1);}RST=0;delay(1);} /*Ds1302ReadTime Function*/void Ds1302ReadTime(){uchar n;for(n=0;n<=7;n++)Time[n]=Ds1302Read(Read_Address[n]);} void LcdDisplay(){wr_pos(0x80+0X44);wr_dat('0'+Time[2]/16);wr_dat('0'+(Time[2]&0x0f)); wr_dat(':');wr_dat('0'+Time[1]/16);wr_dat('0'+(Time[1]&0x0f));wr_dat(':');wr_dat('0'+Time[0]/16);wr_dat('0'+(Time[0]&0x0f));wr_pos(0x80);wr_dat('2');wr_dat('0');wr_dat('0'+Time[6]/16);wr_dat('0'+(Time[6]&0x0f)); wr_dat('-'); wr_dat('0'+Time[4]/16); wr_dat('0'+(Time[4]&0x0f));wr_dat('-');wr_dat('0'+Time[3]/16);wr_dat('0'+(Time[3]&0x0f));wr_pos(0x8D);wr_dat('0'+(Time[5]&0x07)); } /*Main Function*/void main(){uchar i;Int0Configuration(); LcdInit();Ds1302Init();while(1){if(state==0){Ds1302ReadTime();}else{if(K1==0){delay(1);if(K1==0){place++;if(place>=7)place=0;}while((i<50)&&(K1==0)) {delay(1);i++;}i=0;}if(K2==0){delay(1);if(K2==0){Time[place]++;if((Time[place]&0x0f)>9) {Time[place]=Time[place]+6;}if((Time[place]>=0x60)&&(place<2)){Time[place]=0;}if((Time[place]>=0x24)&&(place==2)){Time[place]=0;}if((Time[place]>=0x32)&&(place==3)){Time[place]=1;}if((Time[place]>=0x13)&&(place==4)){Time[place]=1;}if((Time[place]>=0x08)&&(place==5)){Time[place]=1;}}while((i<50)&&(K2==0)) {delay(1);i++;}i=0;}}LcdDisplay();}}void Int0Configuration(){IT0=1;EX0=1;EA=1;} void Timer0() interrupt 0 {delay(5);if(K3==0){state=~state;place=0;Ds1302Init();}}


  • 爱你的方式
  • 下士
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
你把程序贴这个样子,你让别人怎么看呢


2025-07-17 17:43:58
广告
  • eminem_oc
  • 下士
    3
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include<reg51.h>#define uchar unsigned char#define uint unsigned int**it lcdrs=P2^6;**it lcdrw=P2^5;**it en=P2^7;**it beep=P3^7;**it DSIO=P3^4;**it RST=P3^5;**it SCLK=P3^6;**it K3=P3^0;**it K1=P3^1;**it K2=P3^2;**it K4=P3^3;uchar place,state;extern uchar Time[7];uchar code Read_Address[7] = {0x81, 0x83, 0x85, 0x87, 0x89, 0x8b, 0x8d}; uchar code Write_Address[7] = {0x80, 0x82, 0x84, 0x86, 0x88, 0x8a, 0x8c};uchar Time[7]={0,0,0,0x12,0x11,0x04,0x15};void Ds1302Write(uchar address,uchar dat);void Int0Configuration(); /*Delay Function*/void delay(uint s){ uint x,y; for(x=s;x>0;x--) for(y=122;y>0;y--);} /*Beep Function*/void sound(uchar c){ uchar a,b;for(c=c*10;c;c--){beep=!beep;for(a=10;a;a--)for(b=45;b;b--);}} /*LcdInstruct Function*/void wr_pos(uchar com){en=0;lcdrs=0;lcdrw=0;P0=com;en=1;delay(5);en=0;} /*LcdWrite Function*/void wr_dat(uchar time){lcdrs=1;lcdrw=0;en=0;P0=time;en=1;delay(5);en=0;} /*LcdInit Function*/ void LcdInit(){wr_pos(0x38);wr_pos(0x0c);wr_pos(0x06);wr_pos(0x01);wr_pos(0x80);} /*Ds1302Init Function*/void Ds1302Init(){uchar n;Ds1302Write(0x8E,0X00);for (n=0; n<7; n++){Ds1302Write(Write_Address[n],Time[n]);}Ds1302Write(0x8E,0x80); } /*Ds1302Read Function*/uchar Ds1302Read(uchar address){uchar n,data0,data1;SCLK=0;delay(1);RST=1;delay(1);for(n=0;n<=7;n++){DSIO=address&0x01;address>>=1;SCLK=1;delay(1);SCLK=0;delay(1);}for(n=0;n<=7;n++){data1=DSIO;data0=(data0>>1)|(data1<<7);SCLK=1;delay(1);SCLK=0;delay(1);}RST = 0;delay(1);SCLK = 1;delay(1);DSIO = 0;delay(1);DSIO = 1;delay(1);return data0;} /*Ds1302Write Function*/void Ds1302Write(uchar address,uchar dat){uchar n;SCLK=0;delay(1);RST=1;delay(1);for(n=0;n<=7;n++){DSIO=address&0x01;address>>=1;SCLK=1;delay(1);SCLK=0;delay(1);}for(n=0;n<=7;n++){DSIO=dat&0x01;dat>>=1;SCLK=1;delay(1);SCLK=0;delay(1);}RST=0;delay(1);} /*Ds1302ReadTime Function*/void Ds1302ReadTime(){uchar n;for(n=0;n<=7;n++)Time[n]=Ds1302Read(Read_Address[n]);} void LcdDisplay(){wr_pos(0x80+0X44);wr_dat('0'+Time[2]/16);wr_dat('0'+(Time[2]&0x0f)); wr_dat(':');wr_dat('0'+Time[1]/16);wr_dat('0'+(Time[1]&0x0f));wr_dat(':');wr_dat('0'+Time[0]/16);wr_dat('0'+(Time[0]&0x0f));wr_pos(0x80);wr_dat('2');wr_dat('0');wr_dat('0'+Time[6]/16);wr_dat('0'+(Time[6]&0x0f)); wr_dat('-'); wr_dat('0'+Time[4]/16); wr_dat('0'+(Time[4]&0x0f));wr_dat('-');wr_dat('0'+Time[3]/16);wr_dat('0'+(Time[3]&0x0f));wr_pos(0x8D);wr_dat('0'+(Time[5]&0x07)); } /*Main Function*/void main(){uchar i;Int0Configuration(); LcdInit();Ds1302Init();while(1){if(state==0){Ds1302ReadTime();}else{if(K1==0){delay(1);if(K1==0){place++;if(place>=7)place=0;}while((i<50)&&(K1==0)) {delay(1);i++;}i=0;}if(K2==0){delay(1);if(K2==0){Time[place]++;if((Time[place]&0x0f)>9) {Time[place]=Time[place]+6;}if((Time[place]>=0x60)&&(place<2)){Time[place]=0;}if((Time[place]>=0x24)&&(place==2)){Time[place]=0;}if((Time[place]>=0x32)&&(place==3)){Time[place]=1;}if((Time[place]>=0x13)&&(place==4)){Time[place]=1;}if((Time[place]>=0x08)&&(place==5)){Time[place]=1;}}while((i<50)&&(K2==0)) {delay(1);i++;}i=0;}}LcdDisplay();}}void Int0Configuration(){IT0=1;EX0=1;EA=1;} void Timer0() interrupt 0 {delay(5);if(K3==0){state=~state;place=0;Ds1302Init();}}


  • 未来的续写
  • 中校
    11
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
有偿解决


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 10回复贴,共1页
<<返回单片机吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示