找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9225|回复: 14
收起左侧

DS1302在数码管显示为什么一直是85-85-85

  [复制链接]
ID:244748 发表于 2017-11-30 12:47 | 显示全部楼层 |阅读模式
从网上找了关于DS1302这方面的,修改的也修改好了,为什么还是一直显示85-85-85
回复

使用道具 举报

ID:254297 发表于 2017-11-30 14:17 来自手机 | 显示全部楼层
没没问问题的话,捡查一下13O2的,32.768
回复

使用道具 举报

ID:111634 发表于 2017-11-30 14:54 | 显示全部楼层
本帖最后由 zl2168 于 2017-11-30 14:59 编辑

DS18B20初始数据为0x0550(表示85℃),具体转换过程见程序注解。
DS18B20 RAM数据内容.PNG
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行,可演示,可观测,程序语句条条有注解。
回复

使用道具 举报

ID:244748 发表于 2017-11-30 17:46 | 显示全部楼层
谢谢, 只是单纯用DS1302在数码管显示时,分,秒。 没有用到DS18B20
我们这个51单片机是我们学校老师买的,不可能是DS1302硬件有问题。






回复

使用道具 举报

ID:149988 发表于 2017-11-30 19:44 | 显示全部楼层
检查1302时序延时是否准确
回复

使用道具 举报

ID:111634 发表于 2017-11-30 21:33 | 显示全部楼层
本帖最后由 zl2168 于 2017-11-30 21:36 编辑

实例93  具有校正功能的时钟1302(LED数码管显示)
Proteus仿真一下,确认有效。
实例93 带校正时分秒的时钟1302(6位LED数码管显示).rar (732.75 KB, 下载次数: 72)

实例61 LCD1602显示屏显示.rar

49.26 KB, 下载次数: 43

回复

使用道具 举报

ID:140489 发表于 2017-12-5 16:37 | 显示全部楼层
你看看开发板有没有需要连接的跳线,看你这个现象应该是1302没有和单片机连起来
回复

使用道具 举报

ID:274043 发表于 2018-1-15 01:41 | 显示全部楼层
我也遇到过    检查1302芯片管脚是否连接正确   程序中定义端口是否与接线一致
回复

使用道具 举报

ID:7485 发表于 2018-1-15 09:52 | 显示全部楼层
1302没遇到过。ds18b20读数不正确时就会这样。
回复

使用道具 举报

ID:3212 发表于 2018-1-15 10:56 | 显示全部楼层
单片机读数不正常是肯定的了。逐个隔离一下看是哪一个部件的问题。我试过有一次是1302插反了烧了,我不知道反回来插上(当时以为没通电),就出这种结果。
回复

使用道具 举报

ID:305283 发表于 2018-4-19 01:11 | 显示全部楼层
我今天也遇到了,正在处理,求解释啊,急急急!!!
回复

使用道具 举报

ID:537066 发表于 2019-6-26 09:20 | 显示全部楼层
我也是这种情况 ,用1302+数码管显示时分秒,结果时和秒都正常,只有分一直是85
回复

使用道具 举报

ID:370231 发表于 2019-6-26 11:37 | 显示全部楼层
是不是哪里的io口短接片没拔掉或者短接??
回复

使用道具 举报

ID:537066 发表于 2019-7-14 19:57 | 显示全部楼层
a89588038 发表于 2019-6-26 11:37
是不是哪里的io口短接片没拔掉或者短接??

找到问题所在了  在读1302子函数中  读数据的地方加  DIO=0;
程序如下; 这样就可以了
unsigned char Read1302 ( unsigned char addr )
{
       unsigned char i,temp,dat1;
       CE=0;         
       SCLK=0;            
       CE = 1;
       //发送地址
       for ( i=8; i>0; i-- )                      //循环8次移位
       {   
              SCLK = 0;
              temp = addr;
              DIO = (bit)(temp&0x01);          //每次传输低字节
              addr >>= 1;                              //右移一位
              SCLK = 1;
       }
       //读取数据
       for ( i=8; i>0; i-- )
       {
              ACC_7=DIO;
              SCLK = 1;
              ACC>>=1;
              SCLK = 0;
       }   
       CE=0;
       dat1=ACC;                                  
           DIO=0; // 加上之后显示85的地方就能成功显示了
       return (dat1);
}
回复

使用道具 举报

ID:729695 发表于 2022-1-17 19:19 | 显示全部楼层
’久稚 发表于 2019-7-14 19:57
找到问题所在了  在读1302子函数中  读数据的地方加  DIO=0;
程序如下; 这样就可以了
unsigned char  ...

大佬nb 已经解决了
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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