1 / 14
文档名称:

ds3231程序.docx

格式:docx   大小:61KB   页数:14页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

ds3231程序.docx

上传人:maritime_4 2020/9/28 文件大小:61 KB

下载得到文件列表

ds3231程序.docx

文档介绍

文档介绍:接线说明,以Arduinounor3为例:代码部分:#inelude<>#>#defineueharunsignedchar#defineuintunsignedintsbitSDA=P3A6;//模拟I2C数据传送位SDA**************sbitSCL=P3A7;//模拟I2C时钟控制位SCL**************sbitINT=P3A2;sbitRESET=P3A3;〃**************sbitled0=P1A0;sbitled1=P1A1;sbitled2=P1A2;sbitled3=P1A3;sbitled4=P1A4;sbitled5=P1A5;sbitled6=P"6;sbitled7=P1A7;〃**************bitack;//应答标志位#defineDS3231WriteAddressOxDO//器件写地址**************#defineDS3231ReadAddress0xD1//器件读地址**************#defineDS3231SECOND0x00//秒#defineDS3231MINUTE0x01//分#defineDS3231HOUR0x02//时#defineDS3231WEEK0x03//星期#defineDS3231DAY0x04//#defineDS3231MONTH0x05//月#defineDS3231YEAR0x06//〃闹铃1#defineDS3231SALARM1ECOND0x07//秒#defineDS3231ALARM1MINUTE0x08//分#defineDS3231ALARM1HOUR0x09//时#defineDS3231ALARM1WEEK0x0A//星期/日〃闹铃2#defineDS3231ALARM2MINUTE0x0b//分#defineDS3231ALARM2HOUR0x0c//时#defineDS3231ALARM2WEEK0x0d//星期/日#defineDS3231CONTROL0x0e//控制寄存器#defineDS3231STATUS0x0f //状态寄存器#defineBSY2 〃忙#defineOSF7 //振荡器停止标志#defineDS3231_XTAL0x10 //晶体老化寄存器//温度寄存器高字节(8位)//温度寄存器低字节(高2位)#defineDS3231_TEMPERATUREH0x11#defineDS3231TEMPERATUREL0x12//**************//0,1,2,3//4,5,6,7,8,9,offucharcodedis_code[11]={0xc0,0xf9,0xa4,,0x92,0x82,0xf8,0x80,0x90,0xff};uchardatadis_buf[8];uchardatadis_index;uchardatadis_digit;//**************ucharBCD2HEX(ucharval)//BCD转换为Byteuchartemp;temp=val&0x0f;val>>=4;val&=0x0f;val*=10;temp+=val;returntemp;}ucharHEX2BCD(ucharval) 〃B码转换为BCD码{uchari,j,k;i=val/10;j=val-i*10; **************k=j+(i<<4);returnk;}voiddelayus(uintus) 注:单片机型号不同{while(us--);}voidStart_I2C(){SDA=1; //发送起始条件的数据信号delayus(1);SCL=1;delayus(5); //起始条件建立时间大于 ,延时SDA=O; //发送起始信号delayus(5); //起始条件锁定时间大于 4阴SCL=O; //钳住I2C总线,准备发送或接收数据delayus(2);}voidStop_l2C(){SDA=0;//发送结束条件的数据信号delayus(1);//发送结束条件的时钟信号SCL=1;//结束条件建立时间大于 4usdelayus(5);SDA=1;//发送I2C总线结束信号delayus(4);}voidSendByte(ucharc){t;for(t=O;t<8;t++) //要传送的数据长度为 8位{if((c<<t)&0x80)SDA=1; //判断发送位elseSDA=0;delayus(1);SCL=1; //置时钟线为高,通知被控器开始接收数据位delayus(5); //保证时钟高电平周期大于4阴SCL=0;}delayus(2