找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7304|回复: 2
打印 上一主题 下一主题
收起左侧

51单片机 DS1302电子钟 带仿真和源程序

[复制链接]
跳转到指定楼层
楼主
51单片机 DS1302电子钟 带仿真和源程序



部分程序预览:
  1. /*****************************************************************
  2. 介绍:DS1302模块程序文件,调用时请根据你所接的IO口不同修改io sclk rst的值
  3. 使用说明:调用时,只用调用
  4.                                  (1)ds1302_init_time()初始化时钟函数
  5.                                  (2)ds1302_get_time(uint8 *dat)获取时间函数 定义一个数组data[7],形参即为data
  6.                                  (3)ds1302_write_data(uint8 addr,uint8 dat)写入数据函数 addr值参见ds1302.h中定义的命令
  7. 作者:方正电子工作室                                        联系QQ:1959635216
  8. 时间: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. 输入参数:地址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指定地址读数据***********************
  34. 输入参数:地址addr
  35. 输出参数:时间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指定地址写数据***********************
  52. 输入参数:地址addr 时间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初始化时间***********************
  68. 初时化时间为 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);                        //写入初始化标志RAM
  85.         }
  86. }

  87. /******************DS1302获取时间***********************
  88. 输出参数:时间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. }
复制代码


LCD1602显示DS1302时钟.rar

62.11 KB, 下载次数: 120, 下载积分: 黑币 -5

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:237239 发表于 2018-4-11 17:26 | 只看该作者
此帖仅作者可见

使用道具 举报

板凳
ID:437276 发表于 2018-12-3 16:34 | 只看该作者
此帖仅作者可见

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表