<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51單片機(jī)的ds1302驅(qū)動程序

          51單片機(jī)的ds1302驅(qū)動程序

          作者: 時間:2016-12-01 來源:網(wǎng)絡(luò) 收藏
          ////////////////////////////////////////////////////////////頭文件/////////////////////////////////////////////////
          /*******************************************************************************
          * 標(biāo)題: ds1302時鐘芯片驅(qū)動程序 *
          * 文件: ds1302.h ds1302.c *
          * 日期: 2010-3-12 *
          * 版本: 1.12(試驗通過版)可用51hei單片機(jī)開發(fā)板 *
          * 郵箱: acsdf139@163.com qq:526083029 *
          * 網(wǎng)站: 無 *
          ********************************************************************************
          * 描述: *
          * 用法:首先在主程序內(nèi)添加頭文件#include"ds1302.c" *
          * 在程序中使用dsgettime(¤ttime)函數(shù)獲取時鐘芯片的時間數(shù)據(jù) *
          * 使用timetostr(¤ttime)函數(shù)將時間數(shù)據(jù)轉(zhuǎn)換液晶字符 *
          * 使用datetostr(¤ttime)函數(shù)將日期數(shù)據(jù)轉(zhuǎn)換液晶字符 *
          * 存數(shù)據(jù)時,直接使用 wr1302(uchar add,uchar dat)即可 *
          ********************************************************************************
          *【版權(quán)】自己參照網(wǎng)上,朋友,以及書本資料上寫的,所以沒有版權(quán) *
          *【聲明】此程序,可用于學(xué)習(xí),參考及實際設(shè)計中,歡迎轉(zhuǎn)載復(fù)制以及建議批評 *
          *【技術(shù)支持】qq:526083029 小張 *
          ********************************************************************************/
          #ifndef _DS1302_H_
          #define _DS1302_H_
          #include
          #include
          typedef struct __SYSTEMTIME__
          {
              unsigned char Second;
              unsigned char Minute;
              unsigned char Hour;
              unsigned char Week;
              unsigned char Day;
              unsigned char Month;
              unsigned char Year;
              unsigned char datestr[11];
              unsigned char timestr[9];
          }systime; //定義的時間類型
          #define uchar unsigned char
          #define uint unsigned int
          #define am(x) x
          #define pm(x) (x+12) // 轉(zhuǎn)成24小時制
          #define dssecond 0x80 //時鐘芯片的寄存器位置,存放時間
          #define dsminute 0x82
          #define dshour 0x84
          #define dsweek 0x8A
          #define dsday 0x86
          #define dsmonth 0x88
          #define dsyear 0x8C
          #define dsbaohu 0x8E
          #define on 0x80
          #define off 0x00
          extern uchar change(uchar x);
          extern uchar bcdtohex(uchar val);
          extern void wr1302b(uchar temp);
          extern void wr1302(uchar add,uchar dat);
          extern uchar re1302b();
          extern uchar re1302(uchar address);
          extern void dsinit(void);
          extern void dsgettime(systime *ds1302);
          extern void timetostr(systime *ds1302);
          extern void datetostr(systime *ds1302);
          #endif
          ////////////////////////////////////////////////////////////c程序////////////////////////////////////////////////////
          #include
          #include "ds1302.h"
          #include
          //管角定義
          sbit ACC0 = ACC^0;
          sbit ACC7 = ACC^7;
          sbit dssck=P1^0;
          sbit dssda=P1^1;
          sbit dsrst=P1^2;// DS1302復(fù)位
          systime currenttime; //定義結(jié)構(gòu)體變量不可以在點h文件中定義
          uchar flaghour,flagmin,flagsec,flagyear,flagmonth,flagday,flagweek,week_value[2];
          /*************************************
          函數(shù)名:change
          函數(shù)功能:十進(jìn)制轉(zhuǎn)換成十六進(jìn)制
          參數(shù):x(十六進(jìn)制數(shù))
          返回:y(十進(jìn)制數(shù))
          備注:無
          *************************************/
          uchar bcdtohex(uchar val)
          {
          uchar i;
          i = val&0x0f; //按位與,i得到低四位數(shù)。
          val >>= 4; //右移四位,將高四位移到低四位的位置,得到高四位碼值。
          val &= 0x0f; //防止移位時高位補(bǔ)進(jìn)1,只保留高四位碼值
          val *= 10; //高位碼值乘以10
          i += val; //然后與第四位碼值相加。
          return i; //將得到的十進(jìn)制數(shù)返回
          }
          /*************************************
          函數(shù)名:wr1302b
          函數(shù)功能:實時時鐘寫入一個字節(jié)
          參數(shù):d
          返回:無
          備注:配合wr1302使用
          *************************************/
          void wr1302b(uchar d)
          {
          unsigned char i;
          ACC = d;
          for(i=8; i>0; i--)
          {
          dssda = ACC0; //相當(dāng)于匯編中的 RRC
          dssck = 1;
          dssck = 0;
          ACC = ACC >> 1;
          }
          }
          /*************************************
          函數(shù)名:wr1302
          函數(shù)功能:向1302中寫數(shù)據(jù)
          參數(shù):ucAddr(DS1302地址), ucData(要寫的數(shù)據(jù))
          返回:無
          備注:無
          *************************************/
          void wr1302(uchar ucAddr, uchar ucDa)
          {
          dsrst = 0;
          dssck = 0;
          dsrst = 1;
          wr1302b(ucAddr); // 地址,命令
          wr1302b(ucDa); // 寫1Byte數(shù)據(jù)
          dssck = 1;
          dsrst = 0;
          }

          上一頁 1 2 下一頁

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();