标题:
ds1307万年历程序 Tiny RTC 12C Modules时钟模块
[打印本页]
作者:
宁溪
时间:
2019-10-24 15:07
标题:
ds1307万年历程序 Tiny RTC 12C Modules时钟模块
万年历 Tiny RTC 12C Modules时钟模块
单片机源程序如下:
#include "ds1307.h"
void DS1307_start()
{
int i=0;
SDA=1;
SCL=1;
i++;i++;
SDA=0;
i++;i++;
}
void DS1307_stop()
{
int i=0;
SDA=0;
SCL=1;
i++;i++;
SDA=1;
i++;i++;
}
void DS1307_ack()
{
int i=0;
SCL=1;
while((SDA==1)&&(i<50))
i++;
SCL=0;
}
void DS1307_write(unsigned char slave_write_address,unsigned char byte_address,unsigned char wdata)
{
int i,j,z=0;
unsigned char tdata1,tdata2;
DS1307_start();
for(i=0;i<3;i++)
{
if(i==0)
{
tdata1=slave_write_address;
tdata2=slave_write_address;
}
else if(i==1)
{
tdata1=byte_address;
tdata2=byte_address;
}
else if(i==2)
{
tdata1=wdata;
tdata2=wdata;
}
for(j=0;j<8;j++)
{
SCL=0;
z++;z++;z++;//延时
tdata1=tdata2;
tdata1=tdata1&0x80;
if(tdata1==0x80)
SDA=1;
else
SDA=0;
z++;z++;z++;//延时
SCL=1;
z++;z++;z++;;//延时
SCL=0;
z++;z++;z++;;//延时
tdata2=tdata2<<1;
}
SCL=1;
while(z<25)
z++;
SDA=1;
while(z<35)
z++;
DS1307_ack();
}
DS1307_stop();
}
uchar DS1307_read(unsigned char slave_write_address,unsigned char byte_address,unsigned char slave_read_address)//读一个数据
{
uchar tdata1,tdata2,i,j,x,rdata,z=0;
DS1307_start();//开始
for(i=0;i<3;i++)//
{
if(i==0)
{
tdata1=slave_write_address;//送 器件写地址
tdata2=slave_write_address;
}
else if(i==1)
{
tdata1=byte_address;//送 字节地址
tdata2=byte_address;
}
else if(i==2)
{
DS1307_start();//开始
tdata1=slave_read_address;//送 器件读地址
tdata2=slave_read_address;
}
for(j=0;j<8;j++)//
{
SCL=0;
z++;z++;z++;//延时
tdata1=tdata2;
tdata1=tdata1&0x80;
if(tdata1==0x80)
SDA=1;
else
SDA=0;
z++;z++;z++;
SCL=1;
z++;z++;z++;
SCL=0;
z++;z++;z++;;
tdata2=tdata2<<1;
}
SCL=1;
while(z<25)
z++;
SDA=1;
while(z<32)
z++;
DS1307_ack();
}
SDA=1;
z++;z++;z++;
SCL=0;
z++;z++;z++;//延时
for(x=0;x<8;x++)
{
rdata=rdata<<1;//向左移入1位
SCL=1;
z++;z++;z++;;//延时
if(SDA==1)//判断 数据线是否是高电平
rdata|=0x01;//把读到的数据 或 0X01
SCL=0;
}
DS1307_ack();//应答
DS1307_stop();//停止
return rdata;//返回读到的数据
}
void DS1307_init()
{
DS1307_write(0xd0,0x00,0x00);//miao 00
DS1307_write(0xd0,0x01,0x38);//fen 00
DS1307_write(0xd0,0x02,0x11);//shi 11:38:00
DS1307_write(0xd0,0x03,0x06);//xingqi 6
DS1307_write(0xd0,0x04,0x12);//ri 12
DS1307_write(0xd0,0x05,0x10);//yue
DS1307_write(0xd0,0x06,0x19);//nian 2019-10-12_XY6
}
复制代码
所有程序51hei提供下载:
万年历.rar
(57.72 KB, 下载次数: 41)
2019-10-24 15:06 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
admin
时间:
2019-10-25 03:33
本帖需要重新编辑补全电路原理图,源码,详细说明与图片即可获得100+黑币(帖子下方有编辑按钮)
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1