找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

DS1302.H文件下载

查看数: 14837 | 评论数: 15 | 收藏 3
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2014-12-25 20:41

正文摘要:

部分内容预览: /* 把我一直珍藏的程序全部拿出来,给大家共享,这也让我想起来,我刚学的时候,搜集资料是那么辛苦,而且找不到完整的资料,我将把我整理的和自己制作的H文件共享出来,只要修改定义端口 ...

回复

ID:153435 发表于 2018-7-5 18:04
是楼主自己写的,还是官方的
ID:279411 发表于 2018-5-20 12:44
查看一下
ID:246037 发表于 2017-11-4 17:48
感谢分享
ID:23303 发表于 2017-10-28 14:55
感谢楼主分享
ID:223397 发表于 2017-7-30 16:35
不错不错
ID:185980 发表于 2017-4-4 11:56
好东西
ID:162067 发表于 2017-1-16 19:53
谢谢楼主。。。
ID:152175 发表于 2016-12-4 21:50
谢谢分享
ID:140489 发表于 2016-9-26 15:49
很好的资料
ID:113758 发表于 2016-4-12 16:51
怎么点击下载不了呢??
ID:62033 发表于 2015-5-18 19:20
本帖最后由 jjbboox 于 2015-5-18 19:31 编辑

另外头文件里面出现函数的本体应该也不是一个好的编程风格吧。
可以写成下面这样,把函数体写到ds1302.c文件中,以后要用的时候把ds1302.c一起添加到工程里就可以了。
另外DS1302有一种突发读取模式,可以一次性将所有的时间寄存器的值都读进来。可以提高程序运行的效率。
当然可以直接在ds1302.h中定义一个数据结构来存放读进来的完整的时间信息。如下面代码中的struct        DS1302_REG结构

  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各时间寄存器读取地址
  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各时间寄存器写入地址
  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内存起始地址
  29. #define        DS1302_ADDR_RAM0_W        0xC0
  30. #define        DS1302_ADDR_RAM0_R        0xC1

  31. //写保护控制寄存器
  32. #define        DS1302_ADDR_W_EN_W        0x8E
  33. #define        DS1302_ADDR_W_EN_R        0x8F

  34. //突发模式地址
  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. //时间显示字符串处理类型
  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寄存器结构
  50. struct        DS1302_REG{
  51.         uchar        ucSec;                        //秒        0-59        BCD码
  52.         uchar        ucMin;                        //分        0-59        BCD码
  53.         uchar        ucHour;                        //小时        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;                        //写保护        最高位有效        0:可写入,1:写保护
  59. };

  60. //接口函数定义
  61. //突发模式读取寄存器以及内存方法
  62. extern        void        readDS1302BurstReg(struct DS1302_REG *);
  63. extern        void        writeDS1302BurstReg(struct DS1302_REG *);
  64. extern        void        DS1302Write(uchar cmd,uchar dat);

  65. //时间出力函数
  66. extern        void        getFormatDateStr(uchar, struct DS1302_REG *,uchar *);

  67. #endif

复制代码



ID:62033 发表于 2015-5-18 19:19
这两个函数放在头文件里面有什么意义吗?
/*******************************初始化DS1302***********************************/
void Initial(void)//上电初始化化模块2010年12月26号22点10分00秒星期日
{
Write1302 (WRITE_PROTECT,0X00); //禁止写保护
Write1302 (WRITE_SECOND,0x30); //秒位初始化
Write1302 (WRITE_MINUTE,0x59); //分钟初始化
Write1302 (WRITE_HOUR,0x23); //小时初始化,默认24小时制
Write1302 (WRITE_DATE,0x26); //日期初始化
Write1302 (WRITE_MONTH,0x12); //月初始化
Write1302 (WRITE_WEEK,0x07); //星期初始化,01-07
Write1302 (WRITE_YEAR,0x10); //年初始化00-99
Write1302 (WRITE_PROTECT,0x80); //允许写保护
}

/*******************************校时初始化*************************************/
/*void correct()//校时模块
{
Write1302 (WRITE_PROTECT,0X00); //禁止写保护
Write1302 (WRITE_SECOND,0x00); //秒位初始化
Write1302 (WRITE_MINUTE,0x30); //分钟初始化
Write1302 (WRITE_HOUR,0x21); //小时初始化,默认24小时制
Write1302 (WRITE_DATE,0x26); //日期初始化
Write1302 (WRITE_MONTH,0x12); //月初始化
Write1302 (WRITE_WEEK,0x07); //星期初始化,01-07
Write1302 (WRITE_YEAR,0x10); //年初始化00-99
Write1302 (WRITE_PROTECT,0x80); //允许写保护
}
ID:76813 发表于 2015-5-18 11:32
感谢楼主分享
ID:79911 发表于 2015-5-13 22:30
先看看再说
ID:72399 发表于 2015-1-18 13:25
怎么调用呢,怎么才能显示出来呢

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

Powered by 单片机教程网

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