标题: 求教STC12C5A60S2单片机DS1302,DS18B20实现温度显示,DS1302读写问题 [打印本页]

作者: birdzhyli    时间: 2021-3-23 20:48
标题: 求教STC12C5A60S2单片机DS1302,DS18B20实现温度显示,DS1302读写问题
目标:用STC12C5A60S2和LCD1602,DS1302,DS18B20实现时间,温度显示
现状:温度显示已被完成
问题:DS1302读写问题,具体原因不明,在之前调试温度模块的时候已经将delay和delayms两个延时函数调整到调养5%之内了,分别延时10us和ms

ds1302的SCLK,DSIO,RST分别接STC12C5A60S2的P26,P25,P24口
查手册已知STC12C5A60S2的P2口内置上拉电阻(中间手动加入上拉电阻,结果无变化)

万年历.zip

53.88 KB, 下载次数: 16


作者: birdzhyli    时间: 2021-3-23 20:53
本帖最后由 birdzhyli 于 2021-3-23 20:56 编辑


通过显示可以知道时间读取肯定遇到问题,因为前面显示的"Welcome  to  MCU"并没有被完全覆盖,本来应该是第一行显示年月日星期几的英文缩写
具体是芯片初始化没写进去还是读取失败,或者两者皆有问题,目前没有头绪
万年历.zip (53.88 KB, 下载次数: 3)


作者: birdzhyli    时间: 2021-3-23 21:07

通过这个表可以知道,显示的?是3f编码,程序中对应代码为
        *(disdate+2)=*(ttime+6)/16+0x30;
        *(disdate+3)=*(ttime+6)%16+0x30;

说明读取完毕后数据变成0xFF,应该是初始化失败,读取操作使存储数组值发化了变化

作者: 人人学会单片机    时间: 2021-3-23 22:54
http://www.51hei.com/bbs/dpj-200968-1.html 你可以参考我的贴子
作者: birdzhyli    时间: 2021-3-23 23:37
人人学会单片机 发表于 2021-3-23 22:54
http://www.51hei.com/bbs/dpj-200968-1.html 你可以参考我的贴子

谢谢回复,参考了,还是没找到原因,代码看了若干遍了,就是找不出错误原因,求助大佬
作者: birdzhyli    时间: 2021-3-23 23:57
问题找到了,此处有大字的卧槽65535个
上面图中那3条橙色线,加上排线,太长了。。。。。。。。。。。。。。。。
我去掉了排线,直接接在芯片旁边,显示正常了
作者: birdzhyli    时间: 2021-3-24 00:31
太晚了,具体情况明天再分析一下
作者: birdzhyli    时间: 2021-3-24 08:00
调来调去,还是把最开始仿真成功的程序复制过来,把端口对应一下,就成功了。
走了很多弯路,目前只能定性为线路过长了.大神们有没有什么更好的原因?


上面箭头指的是原来位置,橙色线加了10cm的排线
下面箭头是现在直插的位置。
问题虽然算是解决了,但原因不理解,DS1302不是串口通信么?通信距离不应该是这么点点吧
万年历.zip (54.24 KB, 下载次数: 8) 这个代码是目前正常运行的了,时间显示温度显示都是正确的了


作者: birdzhyli    时间: 2021-3-24 08:08
橙色线0.4欧,排线0.5欧
这种坑以后怎么规避?插线的问题无法避免啊,总不能设计一个就直接刷PCB板啊
比小白还白的单片机小白求大神解惑




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1