ds1307中文资料定时突然停止怎么回事

查看: 10002|回复: 9
stm32 驱动ds1307的程序问题
主题帖子精华
初级会员, 积分 69, 距离下一级还需 131 积分
在线时间0 小时
我用1307写入 然后读出 &用usart显示出来 但是这个东西能读出但是不能写入 求大神帮忙看看
我用1307写入 然后读出 &用usart显示出来 但是这个东西能读出但是不能写入 求大神帮忙看看
不知道什么地方不对 请原子哥和大神指出 谢谢 &刚学习不太会 & 谢谢
iic的头文件
#ifndef __MYIIC_H
#define __MYIIC_H
#include "sys.h"
//IO方向设置
#define SDA_IN() &{GPIOB-&CRH&=0XFFFF0FFF;GPIOB-&CRH|=8&&12;}
#define SDA_OUT() {GPIOB-&CRH&=0XFFFF0FFF;GPIOB-&CRH|=3&&12;}
//IO操作函数 &
#define IIC_SCL & &nbspBout(10) //SCL
#define IIC_SDA & &nbspBout(11) //SDA &
#define READ_SDA & PBin(11) &//输入SDA&
//IIC所有操作函数
void IIC_Init(void); & & & & & & & &//初始化IIC的IO口
void IIC_Start(void);
//发送IIC开始信号
void IIC_Stop(void);
//发送IIC停止信号
void IIC_Send_Byte(u8 txd);
//IIC发送一个字节
u8 IIC_Read_Byte(unsigned char ack);//IIC读取一个字节
u8 IIC_Wait_Ack(void);
//IIC等待ACK信号
void IIC_Ack(void);
//IIC发送ACK信号
void IIC_NAck(void);
//IIC不发送ACK信号
void IIC_Write_One_Byte(u8 daddr,u8 addr,u8 data);
u8 IIC_Read_One_Byte(u8 daddr,u8 addr);
#include "myiic.h"
#include "delay.h"
void IIC_Init(void)
GPIO_InitTypeDef GPIO_InitS
RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOB, ENABLE );
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10|GPIO_Pin_11;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP ; & //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOB, &GPIO_InitStructure);
GPIO_SetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_11);
//PG10,PG11 输出高
//产生IIC起始信号
void IIC_Start(void)
SDA_OUT(); & & //sda线输出
IIC_SDA=1;
IIC_SCL=1;
delay_us(4);
& IIC_SDA=0;//START:when CLK is high,DATA change form high to low&
delay_us(4);
IIC_SCL=0;//钳住I2C总线,准备发送或接收数据&
//产生IIC停止信号
void IIC_Stop(void)
SDA_OUT();//sda线输出
IIC_SCL=0;
IIC_SDA=0;//STOP:when CLK is high DATA change form low to high
& delay_us(4);
IIC_SCL=1;&
IIC_SDA=1;//发送I2C总线结束信号
delay_us(4);
//等待应答信号到来
//返回值:1,接收应答失败
// & & & &0,接收应答成功
u8 IIC_Wait_Ack(void)
u8 ucErrTime=0;
SDA_IN(); & & &//SDA设置为输入 &
IIC_SDA=1;
delay_us(1);
IIC_SCL=1;
delay_us(1); &
while(READ_SDA)
ucErrTime++;
if(ucErrTime&250)
IIC_Stop();
IIC_SCL=0;//时钟输出0
return 0; &
//产生ACK应答
void IIC_Ack(void)
//IIC_Ack();
IIC_SCL=0;
SDA_OUT();
IIC_SDA=0;
delay_us(2);
IIC_SCL=1;
delay_us(2);
IIC_SCL=0;
//不产生ACK应答
void IIC_NAck(void)
IIC_SCL=0;
SDA_OUT();
IIC_SDA=1;
delay_us(2);
IIC_SCL=1;
delay_us(2);
IIC_SCL=0;
//IIC发送一个字节
//返回从机有无应答
//1,有应答
//0,无应答
void IIC_Send_Byte(u8 txd)
{ & & & & & & & & & & & &
SDA_OUT();
& & IIC_SCL=0;//拉低时钟开始数据传输
& & for(t=0;t&8;t++)
& & { & & & & & & &
& & & & //IIC_SDA=(txd&0x80)&&7;
if((txd&0x80)&&7)
IIC_SDA=1;
IIC_SDA=0;
delay_us(2); & & //对TEA5767这三个延时都是必须的
IIC_SCL=1;
delay_us(2);&
IIC_SCL=0;
delay_us(2);
//读1个字节,ack=1时,发送ACK,ack=0,发送nACK &&
u8 IIC_Read_Byte(unsigned char ack)
unsigned char i,receive=0;
SDA_IN();//SDA设置为输入
& & for(i=0;i&8;i++ )
& & & & IIC_SCL=0;&
& & & & delay_us(2);
IIC_SCL=1;
& & & & receive&&=1;
& & & & if(READ_SDA)receive++; &&
delay_us(1);&
& & if (!ack)
& & & & IIC_NAck();//发送nACK
& & & & IIC_Ack(); //发送ACK &&
1307的头文件
#ifndef __shizhong_H
#define __shizhong_H
#include "sys.h"
void shizhong_init(void);
void shizhong_WriteOneByte(u8 WriteAddr,u8 DataToWrite);
u8 shizhong_ReadOneByte(u8 ReadAddr);
1307的c文件
#include "sys.h"
#include "myiic.h"
#include "delay.h"&
#include "shizhong.h"
#include "usart.h"
void shizhong_init(void)
IIC_Init();
//在时钟指定地址写入一个数据
//WriteAddr :写入数据的目的地址 & &
//DataToWrite:要写入的数据
void shizhong_WriteOneByte(u8 WriteAddr,u8 DataToWrite)
& & &//转BCD码再写入1307
& & temp=(DataToWrite/10*16)+(DataToWrite%10); //十六进制数转换成BCD码数据
& & IIC_Start(); &
& & IIC_Send_Byte(0XD0);
& & & & & &//发送器件地址
& & IIC_Wait_Ack();
& & IIC_Send_Byte(WriteAddr);
& &//发送从地址的某个地址
& & IIC_Wait_Ack();
& & IIC_Send_Byte(temp); & & & & & &//发送字节
& &// IIC_Wait_Ack();
& & IIC_Stop(); & & & & & & //产生一个停止条件&
& & delay_ms(10); &
//在shizhong指定地址读出一个数据
//ReadAddr:开始读数的地址 &
//返回值 :读到的数据
u8 shizhong_ReadOneByte(u8 ReadAddr)
& & IIC_Start(); &
IIC_Send_Byte(0XD0);
& //发送从器件的地址
& & IIC_Wait_Ack(); & &&
IIC_Start(); &
IIC_Send_Byte(0XD1); & & & &//进入接收模式
IIC_Wait_Ack(); &
& & temp=IIC_Read_Byte(ReadAddr);
& & IIC_NAck();
& & & & & & & &//非应答
& & IIC_Stop(); & & & & & & & & //产生一个停止条件
& & & & & & & & & & & & & & & & // BCD转为16进制
& & dat=(temp/16*10)+(temp%16);//BCD码转换成十六进制数 &&
我用1307写入 然后读出 &用usart显示出来 但是这个东西能读出但是不能写入 求大神帮忙看看
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "sys.h"&
#include "myiic.h"
u8 month,date,day,hour,minutes,
void paopao(void)
shizhong_WriteOneByte(0x00,0x02);&
& & & & shizhong_WriteOneByte(0x01,0x04);
& shizhong_WriteOneByte(0x02,0x04);
shizhong_WriteOneByte(0x03,0x02);
& & & & shizhong_WriteOneByte(0x04,0x04);
shizhong_WriteOneByte(0x05,0x04); &
& seconds=shizhong_ReadOneByte(0x00);
minutes=shizhong_ReadOneByte(0x01);
& & hour=shizhong_ReadOneByte(0x02);
day=shizhong_ReadOneByte(0x03);
date=shizhong_ReadOneByte(0x04);
month=shizhong_ReadOneByte(0x05);
&int main(void)
delay_init();
//延时函数初始化
NVIC_Configuration();
//设置NVIC中断分组2:2位抢占优先级,2位响应优先级
uart_init(9600);
& & //串口初始化为9600
shizhong_init();
&//时钟初始化
& while(1)
printf("month=%d\n",month);&
delay_ms(1000);
printf("date=%d\n",date);
delay_ms(5000);&
& & printf("day=%d\n",day);&
delay_ms(5000);
printf("hour=%d\n",hour);&
delay_ms(5000);
printf("minutes=%d\n",minutes); &
& delay_ms(5000);
& printf("seconds=%d\n",seconds);
&delay_ms(5000);
我用1307写入 然后读出 &用usart显示出来 但是这个东西能读出但是不能写入 求大神帮忙看看
谢谢大家啦 &
只要路对?不怕路远
主题帖子精华
初级会员, 积分 69, 距离下一级还需 131 积分
在线时间0 小时
大家帮帮忙&给看看呗&急用啊
只要路对?不怕路远
主题帖子精华
金钱118704
在线时间928 小时
&void IIC_Send_Byte(u8 txd)
{ & & & & & & & & & & & &
SDA_OUT(); & &
& & IIC_SCL=0;//拉低时钟开始数据传输
& & for(t=0;t&8;t++)
& & { & & & & & & &
& & & & //IIC_SDA=(txd&0x80)&&7;
if((txd&0x80)&&7)
IIC_SDA=1;
IIC_SDA=0;
txd&&=1; &
delay_us(2); & & //对TEA5767这三个延时都是必须的
IIC_SCL=1;
delay_us(2);&
IIC_SCL=0;
delay_us(2);
看了下别人的代码,这里貌似改为了8us延时。
10:47 上传
点击文件名下载附件
1.91 KB, 下载次数: 1329
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
初级会员, 积分 69, 距离下一级还需 131 积分
在线时间0 小时
还是不行那
主题帖子精华
金钱118704
在线时间928 小时
回复【4楼】小布的梦:
---------------------------------
那你直接移植附件那个代码,这个代码别人说好用的。
我是开源电子网站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺:
微信公众平台:正点原子& &
主题帖子精华
初级会员, 积分 69, 距离下一级还需 131 积分
在线时间0 小时
奥&我移植一下试试&谢谢原子哥
只要路对?不怕路远
主题帖子精华
新手上路, 积分 23, 距离下一级还需 27 积分
在线时间0 小时
{GPIOB-&CRH&=0XFFFF0FFF;GPIO-&CRH|=8&&12;}
线路检测、微机保护等。。。
主题帖子精华
新手上路, 积分 23, 距离下一级还需 27 积分
在线时间0 小时
{GPIOB-&CRH&=0XFFFF0FFF;GPIO-&CRH|=8&&12;}该剧是何意
线路检测、微机保护等。。。
主题帖子精华
新手上路, 积分 23, 距离下一级还需 27 积分
在线时间0 小时
求原子哥帮忙解释一下
线路检测、微机保护等。。。
主题帖子精华
初级会员, 积分 89, 距离下一级还需 111 积分
在线时间25 小时
大家帮帮忙&给看看呗&急用啊
现在调试出来了吗?能不能分享一下代码,我最近在找相关资料。谢谢了!!!!!!!!!!
Powered by以AT89S52单片机作为主控器,以DS1307作为定时芯片,设计一个数_单片机吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:143,886贴子:
以AT89S52单片机作为主控器,以DS1307作为定时芯片,设计一个数收藏
设计一个数字时钟实现以下功能:能进行“时分秒”时间显示,时、分、秒分别有+1功能。
提供实现缩短开发时间,降低总体开发成本,克服开发障碍的嵌入式平台.全新具有完整构建与认证合格的应用软件,加速开发.面向,对应IoT技术发展而进化.
程序则么写
ds1302的程序比较多
登录百度帐号推荐应用2015年3月 Linux/Unix社区大版内专家分月排行榜第二2014年12月 Linux/Unix社区大版内专家分月排行榜第二2014年11月 Linux/Unix社区大版内专家分月排行榜第二2014年9月 Linux/Unix社区大版内专家分月排行榜第二2014年8月 Linux/Unix社区大版内专家分月排行榜第二2014年7月 Linux/Unix社区大版内专家分月排行榜第二2014年5月 Linux/Unix社区大版内专家分月排行榜第二2014年4月 Linux/Unix社区大版内专家分月排行榜第二
2014年3月 Linux/Unix社区大版内专家分月排行榜第三
2006年7月 硬件/嵌入开发大版内专家分月排行榜第二
2006年9月 硬件/嵌入开发大版内专家分月排行榜第三
2015年3月 Linux/Unix社区大版内专家分月排行榜第二2014年12月 Linux/Unix社区大版内专家分月排行榜第二2014年11月 Linux/Unix社区大版内专家分月排行榜第二2014年9月 Linux/Unix社区大版内专家分月排行榜第二2014年8月 Linux/Unix社区大版内专家分月排行榜第二2014年7月 Linux/Unix社区大版内专家分月排行榜第二2014年5月 Linux/Unix社区大版内专家分月排行榜第二2014年4月 Linux/Unix社区大版内专家分月排行榜第二
2014年3月 Linux/Unix社区大版内专家分月排行榜第三
2015年3月 Linux/Unix社区大版内专家分月排行榜第二2014年12月 Linux/Unix社区大版内专家分月排行榜第二2014年11月 Linux/Unix社区大版内专家分月排行榜第二2014年9月 Linux/Unix社区大版内专家分月排行榜第二2014年8月 Linux/Unix社区大版内专家分月排行榜第二2014年7月 Linux/Unix社区大版内专家分月排行榜第二2014年5月 Linux/Unix社区大版内专家分月排行榜第二2014年4月 Linux/Unix社区大版内专家分月排行榜第二
2014年3月 Linux/Unix社区大版内专家分月排行榜第三
2015年3月 Linux/Unix社区大版内专家分月排行榜第二2014年12月 Linux/Unix社区大版内专家分月排行榜第二2014年11月 Linux/Unix社区大版内专家分月排行榜第二2014年9月 Linux/Unix社区大版内专家分月排行榜第二2014年8月 Linux/Unix社区大版内专家分月排行榜第二2014年7月 Linux/Unix社区大版内专家分月排行榜第二2014年5月 Linux/Unix社区大版内专家分月排行榜第二2014年4月 Linux/Unix社区大版内专家分月排行榜第二
2014年3月 Linux/Unix社区大版内专家分月排行榜第三
2015年3月 Linux/Unix社区大版内专家分月排行榜第二2014年12月 Linux/Unix社区大版内专家分月排行榜第二2014年11月 Linux/Unix社区大版内专家分月排行榜第二2014年9月 Linux/Unix社区大版内专家分月排行榜第二2014年8月 Linux/Unix社区大版内专家分月排行榜第二2014年7月 Linux/Unix社区大版内专家分月排行榜第二2014年5月 Linux/Unix社区大版内专家分月排行榜第二2014年4月 Linux/Unix社区大版内专家分月排行榜第二
2014年3月 Linux/Unix社区大版内专家分月排行榜第三
2015年3月 Linux/Unix社区大版内专家分月排行榜第二2014年12月 Linux/Unix社区大版内专家分月排行榜第二2014年11月 Linux/Unix社区大版内专家分月排行榜第二2014年9月 Linux/Unix社区大版内专家分月排行榜第二2014年8月 Linux/Unix社区大版内专家分月排行榜第二2014年7月 Linux/Unix社区大版内专家分月排行榜第二2014年5月 Linux/Unix社区大版内专家分月排行榜第二2014年4月 Linux/Unix社区大版内专家分月排行榜第二
2014年3月 Linux/Unix社区大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。DS1307N 价格 封装
测试座 编程座
DS1307N为DS1307的子型号!DS1307N是一款I2C接口的实时时钟芯片。
型号标识 / 参数
DS1307N的型号标识和参数如下表所示:
DS1307N 型号标识
DALLAS品牌标识
温度级别,工业级
DS1307N 参数特性
日期 / 时间格式
YY-MM-DD / HH:MM:SS
存储器类型
存储器容量
DS1307的封装类型有:S08,PDIP8。
DS1307N的封装为:
类型:PDIP
尺寸:300 mils
DS1307N的包装规格为:
类型:Tube(管装)
每管:50 pcs
总共:40 管,2,000 pcs
价格表标定的价格为样品价,如需批量采购,欢迎来电咨询洽谈!DS1307N+的文字介绍及图片仅供参考,所有信息均以官方最新PDF及实物为准!

我要回帖

更多关于 ds1307中文资料 的文章

 

随机推荐