欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 14755|回復(fù): 15
收起左側(cè)

DS1302.H文件下載

  [復(fù)制鏈接]
ID:70976 發(fā)表于 2014-12-25 20:41 | 顯示全部樓層 |閱讀模式
0.png
時(shí)鐘芯片驅(qū)動(dòng)文件ds1302.h文件下載:
DS1302.rar (1.82 KB, 下載次數(shù): 225)

部分內(nèi)容預(yù)覽:


  1. /*

  2. 把我一直珍藏的程序全部拿出來,給大家共享,這也讓我想起來,我剛學(xué)的時(shí)候,搜集資料是那么辛苦,而且找不到完整的資料,我將把我整理的和自己制作的H文件共享出來,只要修改定義端口,便可以隨意的調(diào)用,以后我還會(huì)慢慢完善我的C資料,也希望大家給我指出程序的漏洞和缺點(diǎn),已達(dá)到相互學(xué)習(xí)目地。

  3. */

  4. #ifndef __DS1302_h__
  5. #define __DS1302_h__

  6. #define uint unsigned int
  7. #define uchar unsigned char
  8. #define ulong unsigned long
  9. //寫指令宏定義地址
  10. #define WRITE_SECOND 0x80//秒鐘
  11. #define WRITE_MINUTE 0x82//分鐘
  12. #define WRITE_HOUR 0x84//小時(shí)
  13. #define WRITE_DATE 0x86//日
  14. #define WRITE_MONTH 0x88//月
  15. #define WRITE_WEEK 0x8a//星期
  16. #define WRITE_YEAR 0x8c//年
  17. //讀指令宏定義地址
  18. #define READ_SECOND 0x81//秒鐘
  19. #define READ_MINUTE 0x83//分鐘
  20. #define READ_HOUR 0x85//小時(shí)
  21. #define READ_DATE 0x87//日
  22. #define READ_MONTH 0x89//月
  23. #define READ_WEEK 0x8b//星期
  24. #define READ_YEAR 0x8d//年
  25. //讀寫保護(hù)宏定義地址
  26. #define WRITE_PROTECT 0x8E//寫保護(hù)

  27. uchar data tab[]={"0123456789"};
  28. char *p;//定義一個(gè)指針處理星期字符串

  29. //位尋址寄存器定義
  30. sbit ACC_7 = ACC^7;
  31. //管腳定義
  32. sbit SCLK = P2^0; // DS1302時(shí)鐘信號(hào)7腳
  33. sbit DIO= P2^1; // DS1302數(shù)據(jù)信號(hào)6腳
  34. sbit CE = P2^2; // DS1302片選5腳

  35. uchar second,minute,hour;//時(shí)分秒
  36. uint second_1,second_0,minute_1,miunte_0,hour_1,hour_0;
  37. uchar week;//星期
  38. uchar date,month,year;//年月日
  39. uint date_1,date_0,month_1,month_0,year_1,year_0;

  40. /**************************地址、數(shù)據(jù)發(fā)送子程序*************************/
  41. void Write1302 ( unsigned char addr,dat )//寫子程序
  42. {
  43. unsigned char i,temp;
  44. CE=0; //CE引腳為低,數(shù)據(jù)傳送中止
  45. SCLK=0; //清零時(shí)鐘總線
  46. CE = 1; //CE引腳為高,邏輯控制有效
  47. //發(fā)送地址
  48. for ( i=8; i>0; i-- ) //循環(huán)8次移位
  49.   {
  50.   SCLK = 0;
  51.   temp = addr;
  52.   DIO = (bit)(temp&0x01); //每次傳輸?shù)妥止?jié)
  53.   addr >>= 1; //右移一位
  54.   SCLK = 1;
  55.   }
  56. //發(fā)送數(shù)據(jù)
  57. for ( i=8; i>0; i-- )
  58.   {
  59.   SCLK = 0;
  60.   temp = dat;
  61.   DIO = (bit)(temp&0x01);
  62.   dat >>= 1;
  63.   SCLK = 1;
  64.   }
  65. CE = 0;
  66. }

  67. /****************************數(shù)據(jù)讀取子程序********************************/
  68. unsigned char Read1302 ( unsigned char addr )//讀子程序
  69. {
  70. unsigned char i,temp,dat1,dat2;
  71. CE=0;
  72. SCLK=0;
  73. CE = 1;
  74. //發(fā)送地址
  75. for ( i=8; i>0; i-- ) //循環(huán)8次移位
  76.   {
  77.   SCLK = 0;
  78.   temp = addr;
  79.   DIO = (bit)(temp&0x01); //每次傳輸?shù)妥止?jié)
  80.   addr >>= 1; //右移一位
  81.   SCLK = 1;
  82.   }
  83. //讀取數(shù)據(jù)
  84. for ( i=8; i>0; i-- )
  85.   {
  86.   ACC_7=DIO;
  87.   SCLK = 1;
  88.   ACC>>=1;
  89.   SCLK = 0;
  90.   }
  91. CE=0;
  92. dat1=ACC;
  93. dat2=dat1/16; //數(shù)據(jù)進(jìn)制轉(zhuǎn)換
  94. dat1=dat1%16; //十六進(jìn)制轉(zhuǎn)十進(jìn)制
  95. dat1=dat1+dat2*10;
  96. return (dat1);
  97. }

  98. /*******************************初始化DS1302***********************************/
  99. void Initial(void)//上電初始化化模塊2010年12月26號(hào)22點(diǎn)10分00秒星期日
  100. {
  101. Write1302 (WRITE_PROTECT,0X00); //禁止寫保護(hù)
  102. Write1302 (WRITE_SECOND,0x30); //秒位初始化
  103. Write1302 (WRITE_MINUTE,0x59); //分鐘初始化
  104. Write1302 (WRITE_HOUR,0x23); //小時(shí)初始化,默認(rèn)24小時(shí)制
  105. Write1302 (WRITE_DATE,0x26); //日期初始化
  106. Write1302 (WRITE_MONTH,0x12); //月初始化
  107. Write1302 (WRITE_WEEK,0x07); //星期初始化,01-07
  108. Write1302 (WRITE_YEAR,0x10); //年初始化00-99
  109. Write1302 (WRITE_PROTECT,0x80); //允許寫保護(hù)
  110. }

  111. /*******************************校時(shí)初始化*************************************/
  112. /*void correct()//校時(shí)模塊
  113. {
  114. Write1302 (WRITE_PROTECT,0X00); //禁止寫保護(hù)
  115. Write1302 (WRITE_SECOND,0x00); //秒位初始化
  116. Write1302 (WRITE_MINUTE,0x30); //分鐘初始化
  117. Write1302 (WRITE_HOUR,0x21); //小時(shí)初始化,默認(rèn)24小時(shí)制
  118. Write1302 (WRITE_DATE,0x26); //日期初始化
  119. Write1302 (WRITE_MONTH,0x12); //月初始化
  120. Write1302 (WRITE_WEEK,0x07); //星期初始化,01-07
  121. Write1302 (WRITE_YEAR,0x10); //年初始化00-99
  122. Write1302 (WRITE_PROTECT,0x80); //允許寫保護(hù)
  123. }
  124. /*******************************星期轉(zhuǎn)化程序***********************************/
  125. void week_c()//星期轉(zhuǎn)化
  126. {
  127. char *pp;//定義一個(gè)局部指針
  128. switch(week)
  129. {
  130.   case 1:pp="Mon 1";break;
  131.   case 2:pp="Tue 2";break;
  132.   case 3:pp="Wed 3";break;
  133.   case 4:pp="Tur 4";break;
  134.   case 5:pp="Fri 5";break;
  135.   case 6:pp="Sat 6";break;
  136.   case 7:pp="Sun 7";break;
  137.   default:pp="error";break;
  138. }
  139. p=pp;//函數(shù)地址賦值
  140. }
  141. /*******************************數(shù)據(jù)刷新DS1302*********************************/
  142. void freshtime()//讀取時(shí)間
  143. {
  144. second=Read1302 (READ_SECOND);//讀取十進(jìn)制數(shù)
  145. minute=Read1302 (READ_MINUTE);
  146. hour=Read1302 (READ_HOUR);
  147. date=Read1302 (READ_DATE);
  148. month=Read1302 (READ_MONTH);
  149. week=Read1302 (READ_WEEK);
  150. year=Read1302 (READ_YEAR);

  151. second_1=second/10;//高位賦值
  152. second_0=second-second_1*10;//低位賦值
  153. minute_1=minute/10;
  154. miunte_0=minute-minute_1*10;
  155. hour_1=hour/10;
  156. hour_0=hour-hour_1*10;
  157. date_1=date/10;
  158. date_0=date-date_1*10;
  159. month_1=month/10;
  160. month_0=month-month_1*10;
  161. year_1=year/10;
  162. year_0=year-year_1*10;
  163. }

  164. #endif
復(fù)制代碼



評(píng)分

參與人數(shù) 2黑幣 +10 收起 理由
xu1714 + 5
ssfc + 5

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:72399 發(fā)表于 2015-1-18 13:25 | 顯示全部樓層
怎么調(diào)用呢,怎么才能顯示出來呢
回復(fù)

使用道具 舉報(bào)

ID:79911 發(fā)表于 2015-5-13 22:30 | 顯示全部樓層
先看看再說
回復(fù)

使用道具 舉報(bào)

ID:76813 發(fā)表于 2015-5-18 11:32 | 顯示全部樓層
感謝樓主分享
回復(fù)

使用道具 舉報(bào)

ID:62033 發(fā)表于 2015-5-18 19:19 | 顯示全部樓層
這兩個(gè)函數(shù)放在頭文件里面有什么意義嗎?
/*******************************初始化DS1302***********************************/
void Initial(void)//上電初始化化模塊2010年12月26號(hào)22點(diǎn)10分00秒星期日
{
Write1302 (WRITE_PROTECT,0X00); //禁止寫保護(hù)
Write1302 (WRITE_SECOND,0x30); //秒位初始化
Write1302 (WRITE_MINUTE,0x59); //分鐘初始化
Write1302 (WRITE_HOUR,0x23); //小時(shí)初始化,默認(rèn)24小時(shí)制
Write1302 (WRITE_DATE,0x26); //日期初始化
Write1302 (WRITE_MONTH,0x12); //月初始化
Write1302 (WRITE_WEEK,0x07); //星期初始化,01-07
Write1302 (WRITE_YEAR,0x10); //年初始化00-99
Write1302 (WRITE_PROTECT,0x80); //允許寫保護(hù)
}

/*******************************校時(shí)初始化*************************************/
/*void correct()//校時(shí)模塊
{
Write1302 (WRITE_PROTECT,0X00); //禁止寫保護(hù)
Write1302 (WRITE_SECOND,0x00); //秒位初始化
Write1302 (WRITE_MINUTE,0x30); //分鐘初始化
Write1302 (WRITE_HOUR,0x21); //小時(shí)初始化,默認(rèn)24小時(shí)制
Write1302 (WRITE_DATE,0x26); //日期初始化
Write1302 (WRITE_MONTH,0x12); //月初始化
Write1302 (WRITE_WEEK,0x07); //星期初始化,01-07
Write1302 (WRITE_YEAR,0x10); //年初始化00-99
Write1302 (WRITE_PROTECT,0x80); //允許寫保護(hù)
}
回復(fù)

使用道具 舉報(bào)

ID:62033 發(fā)表于 2015-5-18 19:20 | 顯示全部樓層
本帖最后由 jjbboox 于 2015-5-18 19:31 編輯

另外頭文件里面出現(xiàn)函數(shù)的本體應(yīng)該也不是一個(gè)好的編程風(fēng)格吧。
可以寫成下面這樣,把函數(shù)體寫到ds1302.c文件中,以后要用的時(shí)候把ds1302.c一起添加到工程里就可以了。
另外DS1302有一種突發(fā)讀取模式,可以一次性將所有的時(shí)間寄存器的值都讀進(jìn)來。可以提高程序運(yùn)行的效率。
當(dāng)然可以直接在ds1302.h中定義一個(gè)數(shù)據(jù)結(jié)構(gòu)來存放讀進(jìn)來的完整的時(shí)間信息。如下面代碼中的struct        DS1302_REG結(jié)構(gòu)

  1. #ifndef __DS1302_H__
  2. #define __DS1302_H__

  3. #define uchar        unsigned char
  4. #define uint        unsigned int
  5. #define        ulong        unsigned long

  6. sbit        SCLK        =P2^0;
  7. sbit        SDA                =P2^1;
  8. sbit        RST                =P2^2;

  9. //DS1302各時(shí)間寄存器讀取地址
  10. #define        DS1302_ADDR_YEAR_W        0x8C
  11. #define        DS1302_ADDR_WEEK_W        0x8A
  12. #define        DS1302_ADDR_MONTH_W        0x88
  13. #define        DS1302_ADDR_DAY_W        0x86
  14. #define        DS1302_ADDR_HOUR_W        0x84
  15. #define        DS1302_ADDR_MIN_W        0x82
  16. #define        DS1302_ADDR_SEC_W        0x80

  17. //DS1302各時(shí)間寄存器寫入地址
  18. #define        DS1302_ADDR_YEAR_R        0x8D
  19. #define        DS1302_ADDR_WEEK_R        0x8B
  20. #define        DS1302_ADDR_MONTH_R        0x89
  21. #define        DS1302_ADDR_DAY_R        0x87
  22. #define        DS1302_ADDR_HOUR_R        0x85
  23. #define        DS1302_ADDR_MIN_R        0x83
  24. #define        DS1302_ADDR_SEC_R        0x81

  25. //DS1302寄存器起始地址
  26. #define        DS1302_ADDR_REG0_W        0x80
  27. #define        DS1302_ADDR_REG0_R        0x81

  28. //DS1302內(nèi)存起始地址
  29. #define        DS1302_ADDR_RAM0_W        0xC0
  30. #define        DS1302_ADDR_RAM0_R        0xC1

  31. //寫保護(hù)控制寄存器
  32. #define        DS1302_ADDR_W_EN_W        0x8E
  33. #define        DS1302_ADDR_W_EN_R        0x8F

  34. //突發(fā)模式地址
  35. #define        DS1302_ADDR_BURST_REG_R        0xBF
  36. #define        DS1302_ADDR_BURST_REG_W        0xBE
  37. #define        DS1302_BURST_LEN_REG        8

  38. //讀寫模式
  39. #define        DS1302_READ                0
  40. #define        DS1302_WRITE        1

  41. //時(shí)間顯示字符串處理類型
  42. #define        DS1302_STR_DATE                0
  43. #define        DS1302_STR_TIME                1
  44. #define        DS1302_STR_WEEK                2

  45. //DS1302啟停命令
  46. #define        DS1302_ADDR_COMM_START        0x80
  47. #define DS1302_COMM_START                0x00
  48. #define        DS1302_COMM_STOP                0x80

  49. //DS1302寄存器結(jié)構(gòu)
  50. struct        DS1302_REG{
  51.         uchar        ucSec;                        //秒        0-59        BCD碼
  52.         uchar        ucMin;                        //分        0-59        BCD碼
  53.         uchar        ucHour;                        //小時(shí)        0-23        BCD碼
  54.         uchar        ucDay;                        //日        1-31        BCD碼
  55.         uchar        ucMonth;                //月        1-12        BCD碼
  56.         uchar        ucWeek;                        //星期        1-7                BCD碼
  57.         uchar        ucYear;                        //年        0-99        BCD碼
  58.         uchar        ucWP;                        //寫保護(hù)        最高位有效        0:可寫入,1:寫保護(hù)
  59. };

  60. //接口函數(shù)定義
  61. //突發(fā)模式讀取寄存器以及內(nèi)存方法
  62. extern        void        readDS1302BurstReg(struct DS1302_REG *);
  63. extern        void        writeDS1302BurstReg(struct DS1302_REG *);
  64. extern        void        DS1302Write(uchar cmd,uchar dat);

  65. //時(shí)間出力函數(shù)
  66. extern        void        getFormatDateStr(uchar, struct DS1302_REG *,uchar *);

  67. #endif

復(fù)制代碼



回復(fù)

使用道具 舉報(bào)

7#
無效樓層,該帖已經(jīng)被刪除
8#
無效樓層,該帖已經(jīng)被刪除
9#
無效樓層,該帖已經(jīng)被刪除
10#
無效樓層,該帖已經(jīng)被刪除
11#
無效樓層,該帖已經(jīng)被刪除
ID:113758 發(fā)表于 2016-4-12 16:51 | 顯示全部樓層
怎么點(diǎn)擊下載不了呢??
回復(fù)

使用道具 舉報(bào)

ID:140489 發(fā)表于 2016-9-26 15:49 | 顯示全部樓層
很好的資料
回復(fù)

使用道具 舉報(bào)

ID:152175 發(fā)表于 2016-12-4 21:50 | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

ID:162067 發(fā)表于 2017-1-16 19:53 | 顯示全部樓層
謝謝樓主。。。
回復(fù)

使用道具 舉報(bào)

ID:185980 發(fā)表于 2017-4-4 11:56 | 顯示全部樓層
好東西
回復(fù)

使用道具 舉報(bào)

ID:223397 發(fā)表于 2017-7-30 16:35 | 顯示全部樓層
不錯(cuò)不錯(cuò)
回復(fù)

使用道具 舉報(bào)

ID:23303 發(fā)表于 2017-10-28 14:55 | 顯示全部樓層
感謝樓主分享
回復(fù)

使用道具 舉報(bào)

ID:246037 發(fā)表于 2017-11-4 17:48 | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報(bào)

ID:279411 發(fā)表于 2018-5-20 12:44 | 顯示全部樓層
查看一下
回復(fù)

使用道具 舉報(bào)

ID:153435 發(fā)表于 2018-7-5 18:04 | 顯示全部樓層
是樓主自己寫的,還是官方的
回復(fù)

使用道具 舉報(bào)

22#
無效樓層,該帖已經(jīng)被刪除
23#
無效樓層,該帖已經(jīng)被刪除

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表