[单片机类] 【一个小小的个人经验分享】【七】DS1302时钟模块+DS18B20

[复制链接]
 楼主| enderman1 发表于 2019-3-14 18:33 | 显示全部楼层 |阅读模式
>说在前面的话:这个星期有点忙哈,但是帖子还是要更新的;决定了!今天和明天直接更新两篇~

想了想,正好还有DS1302和DS18B20没有写,所以在本帖的最后我会放送当年写的第8届蓝桥杯省赛的例程(当时自己写的,不是现在写的),由于当时自己的水平还是个沙包,但是功能都可以实现。当然按下按键的时候数码管是不能正常显示的,现在已经知道解决方法了(把数码管显示简单处理一下放到定时器中断里面,前面有说过),但是并不影响大体;啊,本人太懒了,所以也懒得改当时的程序了。。。希望大家可以优化一下。。。



【DS1302】其中时序部分大赛提供的有例程,参赛的时间要做的仅仅是写两个函数;分别是BCD转DAT和DAT转BCD。这里说的BCD码是指的8421BCD,如果连这个都不知道的话,emmmmmm  好好翻翻数电书吧。。。。。说白了就是4位二进制表示1位十进制的一种方法,举个栗子:   1000 0101  BCD码表示的就是  85(十进制)   但是如果按照二进制转十进制的话  1000  0101  其实是   133;  所以。。。反之     85 转  BCD码是   1000   0101   但是转二进制是   0101 0101  因此,需要两个函数来实现   BCD和正常数据的转换(因为DS1302存放数据的格式是BCD码存放的,而单片机是正常的二进制。。)
好了说了这么多,接下来是BCD和正常数据的转换函数:

  1. unsigned char bcd_dat(unsigned char n){
  2.         unsigned char shi,ge,dat;
  3.         shi=n/16;
  4.         ge=n%16;
  5.         dat=shi*10+ge;
  6.         return dat;
  7. }
  8. unsigned char dat_bcd(unsigned char n){
  9.         unsigned char shi,ge,dat;
  10.         shi=n/10;
  11.         ge=n%10;
  12.         dat=shi*16+ge;
  13.         return dat;
  14. }
至于数据提取的方法,其实芯片使用手册以及介绍的很完整了,首先要写入数据要清除写保护,写入之后要开写保护
以下是相关代码:
  1. ds1302_write(0x8e,0x00);                //清除写保护
  2.         ds1302_write(ds_sec_W,dat_bcd(50));
  3.         ds1302_write(ds_min_W,dat_bcd(59));
  4.         ds1302_write(ds_hour_W,dat_bcd(23));
  5.         ds1302_write(0x8e,0x80);//开启写保护
而读取数据也差不多是这样了。。。


【DS18B20】这个其实没什么好说的,时序大赛会给,几个死的指令,记住就可以了。。

  1. ds18b20_init();
  2.                                 ds18b20_write(0xcc);
  3.                                 ds18b20_write(0x44);
  4.                                 delay(10);
  5.                                 ds18b20_init();
  6.                                 ds18b20_write(0xcc);
  7.                                 ds18b20_write(0xbe);
  8.                                 tempL=ds18b20_read();
  9.                                 tempH=ds18b20_read();
  10.                                 
  11.                                 temp=(tempH<<4)|(tempL>>4);



其实现在看看当时的程序其实也挺傻的,当时至少是做出来了,等有空了我再改改吧。。。
8电子钟.zip (58.96 KB, 下载次数: 46)


https://bbs.21ic.com/forum.php?mod=attachment&aid=MTE5MzE3MHwwZDJjMWI0OHwxNzU2MTIzOTk5fDB8

零三翟邢止胃 发表于 2019-3-15 08:55 | 显示全部楼层
好资料啊!!!!!

评论

谢谢支持~  发表于 2019-3-16 11:00
biu~beng 发表于 2019-3-23 14:43 | 显示全部楼层
谢谢楼主,真棒呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

71

帖子

12

粉丝
快速回复 在线客服 返回列表 返回顶部