找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 241|回复: 0
收起左侧

单片机DS1302中文手册及仿真程序实例

[复制链接]
ID:1112584 发表于 2024-3-10 10:31 | 显示全部楼层 |阅读模式
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
51hei.gif

DS1302中文手册:

51hei.png 51hei.png

单片机源程序如下:
  1. //-----------------------main.c------------------------
  2. //DS1302实时时钟显示程序
  3. //-----------------------------------------------------
  4. #include<reg51.h>
  5. #include<intrins.h>
  6. #include<string.h>
  7. #define UCHAR unsigned char
  8. #define UINT unsigned int
  9. #include <lcd1602.h>
  10. #include <ds1302.h>

  11. UCHAR *WEEK[] = {"SUN","MON","TUS","WEN","THU","FRI","SAT"};
  12. //1-7对应SUN TO SAT
  13. UCHAR code inittime[] ={0x00,0x00,0x12,0x01,0x01,0x07,0x22};
  14. //以上七个初始值对应于0秒,0分,12点,1号,1月,周六,22年)
  15. //即2022年1月1日12点00分00秒周日
  16. UCHAR Dis_Buf1[] = "Date 00-00-00   ";
  17. UCHAR Dis_Buf2[] = "Time 00:00:00   ";

  18. //-----------------------------------------------------------
  19. //初始化日期和时间
  20. //------------------------------------------------------------
  21. void InitDateTime()
  22. {
  23.         UCHAR i, addr = 0x80;
  24.         Write_1302(0x8E,0x00); //取消写保护


  25.         for(i = 0; i < 7; i++ ,addr += 2)
  26.         {
  27.                 Write_1302(addr,inittime[i]);
  28.         }
  29.     Write_1302(0x8E,0x80); //取消写保护
  30. }
  31. //-----------------------------------------------------------
  32. //日期与时间转换为数字字符
  33. //-----------------------------------------------------------
  34. void Format_DateTime(UCHAR d,UCHAR *a)
  35. {
  36.         *a = (d>>4)+'0';
  37.         *(a+1) = (d & 0x0F) + '0';
  38. }
  39. void main()
  40. {
  41.         Initialize_LCD1602();
  42.         InitDateTime();
  43.         while(1)
  44.         {
  45.             ReadDateTime(); //从1302读取日期和时间
  46.                 Format_DateTime(DateTime[6],Dis_Buf1+5);
  47.                 Format_DateTime(DateTime[4],Dis_Buf1+8);
  48.                 Format_DateTime(DateTime[3],Dis_Buf1+11);
  49.                 //格式化年月日
  50.                 strcpy(Dis_Buf1+13,WEEK[DateTime[5] - 1]);
  51.                 //格式化时星期
  52.                 Format_DateTime(DateTime[2],Dis_Buf2+5);
  53.                 Format_DateTime(DateTime[1],Dis_Buf2+8);
  54.                 Format_DateTime(DateTime[0],Dis_Buf2+11);
  55.                 //格式化时分秒
  56.                 LCD1602_Display(0,0,Dis_Buf1);
  57.                 LCD1602_Display(0,1,Dis_Buf2);                               
  58.         }
  59. }
复制代码

仿真程序资料51hei附件下载:
DS1302.zip (1.57 MB, 下载次数: 12)

评分

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

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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