找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7942|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

51單片機(jī) DS1302電子鐘 帶仿真和源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:72643 發(fā)表于 2016-5-20 09:31 | 只看該作者 |只看大圖 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
51單片機(jī) DS1302電子鐘 帶仿真和源程序



部分程序預(yù)覽:
  1. /*****************************************************************
  2. 介紹:DS1302模塊程序文件,調(diào)用時(shí)請根據(jù)你所接的IO口不同修改io sclk rst的值
  3. 使用說明:調(diào)用時(shí),只用調(diào)用
  4.                                  (1)ds1302_init_time()初始化時(shí)鐘函數(shù)
  5.                                  (2)ds1302_get_time(uint8 *dat)獲取時(shí)間函數(shù) 定義一個(gè)數(shù)組data[7],形參即為data
  6.                                  (3)ds1302_write_data(uint8 addr,uint8 dat)寫入數(shù)據(jù)函數(shù) addr值參見ds1302.h中定義的命令
  7. 作者:方正電子工作室                                        聯(lián)系QQ:1959635216
  8. 時(shí)間:20150323                                                                淘寶店鋪:
  9. *****************************************************************/

  10. #include<reg52.h>
  11. #include"common.h"
  12. #include"ds1302.h"

  13. sbit io                = P1^0;
  14. sbit sclk        = P1^1;
  15. sbit rst        = P1^2;

  16. /******************DS1302寫入命令***********************
  17. 輸入?yún)?shù):地址addr
  18. *************************************************************/
  19. void ds1302_write_cmd(uint8 addr)
  20. {
  21.         uint8 i;
  22.         rst = 0;
  23.         sclk = 0;
  24.         rst = 1;
  25.         for(i=0;i<8;i++)
  26.         {
  27.                 io = addr & 0x01;
  28.                 sclk = 1;
  29.                 sclk = 0;
  30.                 addr >>= 1;
  31.         }
  32. }

  33. /******************DS1302指定地址讀數(shù)據(jù)***********************
  34. 輸入?yún)?shù):地址addr
  35. 輸出參數(shù):時(shí)間dat
  36. *************************************************************/
  37. void ds1302_read_data(uint8 addr,uint8 *dat)
  38. {
  39.         uint8 i;
  40.         ds1302_write_cmd(addr);
  41.         for(i=0;i<8;i++)
  42.         {
  43.                 *dat >>= 1;
  44.                 if(io == 1)
  45.                         *dat |= 0x80;
  46.                 sclk = 1;
  47.                 sclk = 0;
  48.         }
  49.         *dat = *dat/16*10 + *dat%16;
  50. }

  51. /******************DS1302指定地址寫數(shù)據(jù)***********************
  52. 輸入?yún)?shù):地址addr 時(shí)間dat
  53. *************************************************************/
  54. void ds1302_write_data(uint8 addr,uint8 dat)
  55. {
  56.         uint8 i;
  57.         dat = dat/10*16 + dat%10;
  58.         ds1302_write_cmd(addr);
  59.         for(i=0;i<8;i++)
  60.         {
  61.                 io = dat & 0x01;
  62.                 sclk = 1;
  63.                 sclk = 0;
  64.                 dat >>= 1;
  65.         }
  66. }

  67. /******************DS1302初始化時(shí)間***********************
  68. 初時(shí)化時(shí)間為 2015-03-26 星期四 23:59:50
  69. *************************************************************/
  70. void ds1302_init_time()
  71. {
  72.         uint8 temp;
  73.         ds1302_read_data(0xc1,&temp);
  74.         if(temp!= 0xaa)
  75.         {
  76.                 ds1302_write_data(write_wp,0);                //允許寫操作
  77.                 ds1302_write_data(write_sec,50);
  78.                 ds1302_write_data(write_min,59);
  79.                 ds1302_write_data(write_hour,23);
  80.                 ds1302_write_data(write_date,26);
  81.                 ds1302_write_data(write_mon,3);
  82.                 ds1302_write_data(write_year,15);
  83.                 ds1302_write_data(write_week,3);
  84.                 ds1302_write_data(0xc1,0xaa);                        //寫入初始化標(biāo)志RAM
  85.         }
  86. }

  87. /******************DS1302獲取時(shí)間***********************
  88. 輸出參數(shù):時(shí)間dat
  89. *************************************************************/
  90. void ds1302_get_time(uint8 *dat)
  91. {
  92.         uint8 i,addr = 0x81;
  93.         for(i=0;i<7;i++)
  94.         {
  95.                 ds1302_read_data(addr,dat);
  96.                 addr += 2;
  97.                 dat++;
  98.         }
  99. }
復(fù)制代碼


LCD1602顯示DS1302時(shí)鐘.rar

62.11 KB, 下載次數(shù): 120, 下載積分: 黑幣 -5

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂1 踩

相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:237239 發(fā)表于 2018-4-11 17:26 | 只看該作者
此帖僅作者可見

使用道具 舉報(bào)

板凳
ID:437276 發(fā)表于 2018-12-3 16:34 | 只看該作者
此帖僅作者可見

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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