欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
DS1302 Arduino庫文件下載
[打印本頁]
作者:
125053995
時間:
2018-4-24 12:53
標題:
DS1302 Arduino庫文件下載
DS1302庫文件 Arduino
0.jpg
(30.31 KB, 下載次數: 153)
下載附件
2018-4-24 20:03 上傳
單片機源程序如下:
/*
DS1302.cpp - Arduino library support for the DS1302 Trickle Charge Timekeeping Chip
Copyright (C)2010 Henning Karlsen. All right reserved
You can find the latest version of the library at
This library has been made to easily interface and use the DS1302 RTC with
the Arduino.
If you make any modifications or improvements to the code, I would appreciate
that you share the code with me so that I might include it in the next release.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "DS1302.h"
#define REG_SEC 0
#define REG_MIN 1
#define REG_HOUR 2
#define REG_DATE 3
#define REG_MON 4
#define REG_DOW 5
#define REG_YEAR 6
#define REG_WP 7
#define REG_TCR 8
/* Public */
Time::Time()
{
this->year = 2010;
this->mon = 1;
this->date = 1;
this->hour = 0;
this->min = 0;
this->sec = 0;
this->dow = 5;
}
DS1302_RAM::DS1302_RAM()
{
for (int i=0; i<31; i++)
cell[i]=0;
}
DS1302::DS1302(uint8_t ce_pin, uint8_t data_pin, uint8_t sclk_pin)
{
_ce_pin = ce_pin;
_data_pin = data_pin;
_sclk_pin = sclk_pin;
pinMode(_ce_pin, OUTPUT);
pinMode(_sclk_pin, OUTPUT);
}
Time DS1302::getTime()
{
Time t;
_burstRead();
t.sec = _decode(_burstArray[0]);
t.min = _decode(_burstArray[1]);
t.hour = _decodeH(_burstArray[2]);
t.date = _decode(_burstArray[3]);
t.mon = _decode(_burstArray[4]);
t.dow = _burstArray[5];
t.year = _decodeY(_burstArray[6])+2000;
return t;
}
void DS1302::setTime(uint8_t hour, uint8_t min, uint8_t sec)
{
if (((hour>=0) && (hour<24)) && ((min>=0) && (min<60)) && ((sec>=0) && (sec<60)))
{
_writeRegister(REG_HOUR, _encode(hour));
_writeRegister(REG_MIN, _encode(min));
_writeRegister(REG_SEC, _encode(sec));
}
}
void DS1302::setDate(uint8_t date, uint8_t mon, uint16_t year)
{
if (((date>0) && (date<=31)) && ((mon>0) && (mon<=12)) && ((year>=2000) && (year<3000)))
{
year -= 2000;
_writeRegister(REG_YEAR, _encode(year));
_writeRegister(REG_MON, _encode(mon));
_writeRegister(REG_DATE, _encode(date));
}
}
void DS1302::setDOW(uint8_t dow)
{
if ((dow>0) && (dow<8))
_writeRegister(REG_DOW, dow);
}
char *DS1302::getTimeStr(uint8_t format)
{
char *output= "xxxxxxxx";
Time t;
t=getTime();
if (t.hour<10)
output[0]=48;
else
output[0]=char((t.hour / 10)+48);
output[1]=char((t.hour % 10)+48);
output[2]=58;
if (t.min<10)
output[3]=48;
else
output[3]=char((t.min / 10)+48);
output[4]=char((t.min % 10)+48);
output[5]=58;
if (format==FORMAT_SHORT)
output[5]=0;
else
{
if (t.sec<10)
output[6]=48;
else
output[6]=char((t.sec / 10)+48);
output[7]=char((t.sec % 10)+48);
output[8]=0;
}
return output;
}
char *DS1302::getDateStr(uint8_t slformat, uint8_t eformat, char divider)
{
char *output= "xxxxxxxxxx";
int yr, offset;
Time t;
t=getTime();
switch (eformat)
{
case FORMAT_LITTLEENDIAN:
if (t.date<10)
output[0]=48;
else
output[0]=char((t.date / 10)+48);
output[1]=char((t.date % 10)+48);
output[2]=divider;
if (t.mon<10)
output[3]=48;
else
output[3]=char((t.mon / 10)+48);
output[4]=char((t.mon % 10)+48);
output[5]=divider;
if (slformat==FORMAT_SHORT)
{
yr=t.year-2000;
if (yr<10)
output[6]=48;
else
output[6]=char((yr / 10)+48);
output[7]=char((yr % 10)+48);
output[8]=0;
}
else
{
yr=t.year;
output[6]=char((yr / 1000)+48);
output[7]=char(((yr % 1000) / 100)+48);
output[8]=char(((yr % 100) / 10)+48);
output[9]=char((yr % 10)+48);
output[10]=0;
}
break;
case FORMAT_BIGENDIAN:
if (slformat==FORMAT_SHORT)
offset=0;
else
offset=2;
if (slformat==FORMAT_SHORT)
{
yr=t.year-2000;
if (yr<10)
output[0]=48;
else
output[0]=char((yr / 10)+48);
output[1]=char((yr % 10)+48);
output[2]=divider;
}
else
{
yr=t.year;
output[0]=char((yr / 1000)+48);
output[1]=char(((yr % 1000) / 100)+48);
output[2]=char(((yr % 100) / 10)+48);
output[3]=char((yr % 10)+48);
output[4]=divider;
}
if (t.mon<10)
output[3+offset]=48;
else
output[3+offset]=char((t.mon / 10)+48);
output[4+offset]=char((t.mon % 10)+48);
output[5+offset]=divider;
if (t.date<10)
output[6+offset]=48;
else
output[6+offset]=char((t.date / 10)+48);
output[7+offset]=char((t.date % 10)+48);
output[8+offset]=0;
break;
case FORMAT_MIDDLEENDIAN:
if (t.mon<10)
output[0]=48;
else
output[0]=char((t.mon / 10)+48);
output[1]=char((t.mon % 10)+48);
output[2]=divider;
if (t.date<10)
output[3]=48;
else
output[3]=char((t.date / 10)+48);
output[4]=char((t.date % 10)+48);
output[5]=divider;
if (slformat==FORMAT_SHORT)
{
yr=t.year-2000;
if (yr<10)
output[6]=48;
else
output[6]=char((yr / 10)+48);
output[7]=char((yr % 10)+48);
output[8]=0;
}
else
{
yr=t.year;
output[6]=char((yr / 1000)+48);
output[7]=char(((yr % 1000) / 100)+48);
output[8]=char(((yr % 100) / 10)+48);
output[9]=char((yr % 10)+48);
output[10]=0;
}
break;
}
return output;
}
char *DS1302::getDOWStr(uint8_t format)
{
char *output= "xxxxxxxxx";
Time t;
t=getTime();
switch (t.dow)
{
case MONDAY:
output="Monday";
break;
case TUESDAY:
output="Tuesday";
break;
case WEDNESDAY:
output="Wednesday";
break;
case THURSDAY:
output="Thursday";
break;
case FRIDAY:
output="Friday";
break;
case SATURDAY:
output="Saturday";
break;
case SUNDAY:
output="Sunday";
break;
}
if (format==FORMAT_SHORT)
output[3]=0;
return output;
}
char *DS1302::getMonthStr(uint8_t format)
{
char *output= "xxxxxxxxx";
Time t;
t=getTime();
switch (t.mon)
{
case 1:
output="January";
break;
case 2:
output="February";
break;
case 3:
output="March";
break;
case 4:
output="April";
break;
case 5:
output="May";
break;
case 6:
output="June";
break;
case 7:
output="July";
break;
case 8:
output="August";
break;
case 9:
output="September";
break;
case 10:
output="October";
break;
case 11:
output="November";
break;
case 12:
output="December";
break;
}
if (format==FORMAT_SHORT)
output[3]=0;
return output;
}
void DS1302::halt(bool enable)
{
uint8_t _reg = _readRegister(REG_SEC);
_reg &= ~(1 << 7);
_reg |= (enable << 7);
_writeRegister(REG_SEC, _reg);
}
void DS1302::writeProtect(bool enable)
{
uint8_t _reg = (enable << 7);
_writeRegister(REG_WP, _reg);
}
void DS1302::setTCR(uint8_t value)
{
_writeRegister(REG_TCR, value);
}
/* Private */
uint8_t DS1302::_readByte()
{
pinMode(_data_pin, INPUT);
uint8_t value = 0;
uint8_t currentBit = 0;
for (int i = 0; i < 8; ++i)
{
currentBit = digitalRead(_data_pin);
value |= (currentBit << i);
digitalWrite(_sclk_pin, HIGH);
delayMicroseconds(1);
digitalWrite(_sclk_pin, LOW);
}
…………
…………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
所有資料51hei提供下載:
DS1302.zip
(72.21 KB, 下載次數: 259)
2018-4-24 12:52 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
哈哈哈哈或哈
時間:
2018-4-25 07:35
完整版的代碼在哪啊
作者:
2394641719
時間:
2018-6-29 19:33
想下,可惜新手,黑幣不夠啊!!
作者:
liu_quan
時間:
2018-7-28 16:16
為啥顯示 includeWProgram.h: No such file or directory;已經將“ DS1302.cpp和DS1302.h文件中WProgram.h已經改名為 Arduino.h”
作者:
liu_quan
時間:
2018-7-28 16:17
已經將庫文件中的DS1302.cpp和DS1302.h中 WProgram.h已經改名為 Arduino.h,為啥還是顯示錯誤。
作者:
micyb00
時間:
2018-11-6 12:13
在arduino IDE 1.0 及后續版本,WProgram.h已經改名為 Arduino.h,你把相應的.h和.cpp改名就行。這是在1.0.X版里編譯更老的程序時的通病,一個更完美的解決方案是,在老的程序前加這幾行就新老IDE通吃:
#if defined(ARDUINO) && ARDUINO >= 100
#include "Arduino.h"
#else
#include "WProgram.h"
#endif
作者:
都市郎
時間:
2019-3-6 13:10
誰位大神有Time庫,上傳上來用下!
作者:
15699183053
時間:
2023-7-23 00:31
誰位大神有Time庫,上傳上來用下!
作者:
15699183053
時間:
2023-7-23 01:05
誰位大神有Time庫,上傳上來用下!
作者:
ziba108
時間:
2023-7-29 17:33
誰位大神有Time庫,上傳上來用下!
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1