DS3231高精度时钟模块程序_第1页
DS3231高精度时钟模块程序_第2页
DS3231高精度时钟模块程序_第3页
DS3231高精度时钟模块程序_第4页
DS3231高精度时钟模块程序_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精品资料模块参数:1. 尺寸:38mm(长)*22mm(宽)*14mm(高)2. 重量:8g3. 工作电压 33-5.5V4. 时钟芯片:高精度时钟芯片 DS32315. 时钟精度:0-40C范围内,精度 2ppm,年误差约 1 分钟6. 带 2 个日历闹钟7. 可编程方波输出8. 实时时钟产生秒、分、时、星期、日期、月和年计时,并提供有效期到2100 年的闰年补偿9. 芯片内部自带温度传感器,精度为土 3C10. 存储芯片:AT24C32(存储容量 32K)11.IIC 总线接口,最高传输速度 400KHz(工作电压为 5V 时)12. 可级联其它 IIC 设备,24C32 地址可通过短路

2、A0/A1/A2 修改,默认地址为 0 x5713. 带可充电电池 LIR2032,保证系统断电后,时钟任然正常走动接线说明,以 Arduino uno r3 为例:SCL 5SDA 4VCC WGND YND精品资料代码部分:精品资料#in elude #in elude vintrin s.h#defi ne ueharun sig nedchar#defi ne uintun sig nedintsbit SDA=P3A6;模拟 I2C 数据传送位 SDAsbit SCL=P3A7;/模拟 I2C 时钟控制位 SCLsbit INT=P3A2;sbit RESET=P3A3;sbitle

3、d0=P1A0;sbit led1=P1A1;sbit led2=P1A2;sbit led3=P1A3;sbit led4=P1A4;sbit led5=P1A5;sbit led6=P6;sbit led7=P1A7;bit ack;/应答标志位#defi ne DS3231 WriteAddressOxDO/器件写地址#define0 xD1器件读地址#defi ne DS3231 SECOND0 x00/秒#defi ne DS3231 MINUTE0 x01/分精品资料#defineDS3231_HOUR0 x02时#defineDS3231_WEEK0 x03星期#defineDS

4、3231_DAY0 x04日#defineDS3231_MONTH0 x05月#defineDS3231_YEAR0 x06/年/闹铃 1#defineDS3231_SALARM1ECOND 0 x07/秒#defineDS3231_ALARM1MINUTE 0 x08/分#defineDS3231_ALARM1HOUR0 x09/时#defineDS3231_ALARM1WEEK0 x0A/星期/日/闹铃 2#defineDS3231_ALARM2MINUTE 0 x0b/分#defineDS3231_ALARM2HOUR0 x0c/时#defineDS3231_ALARM2WEEK0 x0

5、d/星期/ 日#defineDS3231CONTROL0 x0e/控制寄存器#defineDS3231STATUS0 x0f/状态寄存器#defi ne BSY2忙#defi ne OSF7振荡器停止标志#defineDS3231XTAL0 x10晶体老化寄存器#defineDS3231_TEMPERATUREH 0 x11/温度寄存器高字节(8 位)#defineDS3231_TEMPERATUREL 0 x12/温度寄存器低字节(咼 2 位)精品资料uchar code dis_code11=0 xc0,0 xf9,0 xa4,0 xb0./ 0,1,2,30 x99,0 x92,0 x8

6、2,0 xf8,0 x80,0 x90, 0 xff;/4,5,6,7,8,9,offuchar data dis_buf8;uchar data dis_i ndex;uchar data dis_digit;uchar BCD2HEX(uchar val)uchar temp;temp=va l&O x0f;val=4;val&=OxOf;val*=10;temp+=val;return temp;uchar HEX2BCD(uchar val)/BCD 转换为 Byte/B 码转换为 BCD 码uchar i,j,k;i=val/10;精品资料j=val;k=j+(i4)

7、;return k;void delayus( uint us)while (us-);void Start_l2C()SDA=1;/发送起始条件的数据信号delayus(1);SCL=1;delayus(5);/起始条件建立时间大于4.7us,延时SDA=0;/发送起始信号delayus(5);/起始条件锁定时间大于SCL=0;/钳住 I2C 总线,准备发送或接收数delayus(2);精品资料void Stop_l2C()SDA=0;delayus(1);SCL=1;delayus(5);SDA=1;delayus(4);void Sen dByte(uchar c)uchar BitC

8、nt;for(BitC nt=O;BitC nt8;BitCnt+)if(cBitC nt)&0 x80)SDA=1;II发送结束条件的数据信号/发送结束条件的时钟信号结束条件建立时间大于4usII 发送 I2C 总线结束信号II 要传送的数据长度为8 位II 判断发送位精品资料elseSDA=O;delayus(l);SCL=1;/置时钟线为高,通知被控器开始接收数据位delayus(5);时钟高电平周期大于 4 QSCL=O;delayus(2);SDA=1;/8 位发送完后释放数据线,准备接收应答位delayus(2);SCL=1;delayus (3);if(SDA=1)ack

9、=O;elseack=1;/判断是否接收到应答信号SCL=0;保证delayus(2);delayus (3);精品资料uchar RcvByte()uchar retc;uchar BitC nt;retc=0;SDA=1;入方式for(BitC nt=O;BitC nt8;BitCnt+)delayus(1);SCL=0;准备接收数据位delayus(5);4.7 阳SCL=1;使数据线上数据有效置数据线为输/置时钟线为低, 时钟低电平周期大于/置时钟线为高retc=retc1;delayus(5);/时钟低电平周期大于 4 q精品资料if(SDA=1)retc=retc+1; 放入ret

10、c 中delayus(2);SCL=O;delayus(2);return(retc); void Ack_l2C(bit a)if(a=0)SDA=0;elseSDA=1;delayus (3);SCL=1;读数据位,接收的数据/在此发出应答或非应答信号SCL=O;/清时钟线,钳住 I2C 总线以便继续delayus(10);精品资料接收delayus(2);uchar write_byte(uchar addr, uchar write_data)Start_I2C();Se ndByte(DS3231_WriteAddress);if (ack = 0)return 0;Se ndByt

11、e(addr);if (ack = 0)return 0;Sen dByte(write_data);if (ack = 0)return 0;Stop_l2C();return 1;精品资料uchar read_curre nt()uchar read_data;Start_l2C();Se ndByte(DS3231_ReadAddress);if(ack=O)return(O);read_data = RcvByte();Ack_I2C(1);Stop_I2C();return read_data; uchar read_ra ndom(uchar ran dom_addr)Start_

12、I2C();Sen dByte(DS3231_WriteAddress);return(O);精品资料if(ack=O)Sen dByte(ra ndom_addr);if(ack=0)return(O);return(read_curre nt();void ModifyTime(uchar yea,uchar mon, uchar da,uchar hou,uchar min, uchar sec)uchar temp=0;temp=HEX2BCD(yea);write_byte(DS3231_YEAR,temp);/ 修改年temp=HEX2BCD(mo n);write_byte(DS

13、3231_MONTH,temp);/ 修改月temp=HEX2BCD(da);write_byte(DS3231_DAY,temp);/ 修改日temp=HEX2BCD(hou);精品资料write_byte(DS3231_HOUR,temp);temp=HEX2BCD(mi n);write_byte(DS3231_MINUTE,temp); / 修改分 temp=HEX2BCD(sec);write_byte(DS3231_SECOND,temp); / 修改秒 void TimeDisplay(uchar Dhour,uchar Dmin, uchar Dsec)dis_buf7=dis

14、_codeDhour / 10;dis_buf6=dis_codeDhour % 10;dis_buf4=dis_codeDmin / 10;dis_buf3=dis_codeDmin % 10;dis_buf1=dis_codeDsec / 10;dis_buf0=dis_codeDsec % 10;dis_buf2=0 xbf;dis_buf5=0 xbf;/时十位/时个位/分十位/分个位/秒十位/秒个位/显示-/修改时精品资料void DateDisplay(uchar Dyear,uchar Dmon th,uchar Dday) dis_buf7=dis_codeDyear / 10

15、;/ 年十位dis_buf6=dis_codeDyear % 10;/年个位dis_buf4=dis_codeDmonth / 10;/ 月十位dis_buf3=dis_codeDmonth % 10;/月个位dis_buf1=dis_codeDday / 10;/天十位dis_buf0=dis_codeDday % 10;/ 天个位dis_buf2=0 xbf;dis_buf5=0 xbf;void get_show_time(void)uchar Htemp1,Htemp2,Mtemp1,Mtemp2,Stemp1,Stemp2;Htemp1=read_random(DS3231_HOUR

16、);/时 24 小时制Htemp1 &=0 x3f;Htemp2=BCD2HEX(Htemp1);Mtemp1=read_ra ndom(DS3231_MINUTE);/ 分Mtemp2=BCD2HEX(Mtemp1);/显示-精品资料Stemp 仁 read_ra ndom(DS3231_SECOND);/ 秒Stemp2=BCD2HEX(Stemp1);TimeDisplay(Htemp2,Mtemp2,Stemp2);void get_show_date(void)uchar Ytemp1,Ytemp2,Mtemp1,Mtemp2,Dtemp1,Dtemp2;Ytemp1=rea

17、d_ra ndom(DS3231_YEAR);Ytemp2=BCD2HEX(Ytemp1);Mtemp1=read_ra ndom(DS3231_MONTH);Mtemp2=BCD2HEX(Mtemp1);Dtemp1=read_ra ndom(DS3231_DAY);Dtemp2=BCD2HEX(Dtemp1);DateDisplay(Ytemp2,Mtemp2,Dtemp2);年 月 日精品资料void get_show_Temperature(void) uchar Ttemp1,Ttemp2,Ttemp3,Ttemp4;Ttemp1=read_random(DS3231_TEMPERA

18、TUREH);/温度高字节Ttemp2=BCD2HEX(Ttemp1);Ttemp3=read_ra ndom(DS3231_TEMPERATUREL);温度低字节Ttemp4=BCD2HEX(Ttemp3);DateDisplay(0,Ttemp2,Ttemp4);void timer0() in terrupt 1TH0=0 xFC;TL0=0 x17;P2=0 xff;/先关闭所有数码管P0=dis_bufdis_index;/ 显示代码传送到 P0 口P2=dis_digit;if (dis_digit & 0 x80)dis_digit=(dis_digit 1) | 0 x1;精品资料elsedis_digit=(dis_digit 1);dis_i ndex+;dis_i ndex&=0 x07

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论