标题: STM32单片机+LCD1602无法实时显示DHT11的温湿度 附51与CubeIDE程序 [打印本页]

作者: 电子浪人    时间: 2021-12-21 15:47
标题: STM32单片机+LCD1602无法实时显示DHT11的温湿度 附51与CubeIDE程序
问题的现象:LCD1602可以显示温湿度,但是改变DHT11的值,LCD1602并不能改变数字,相当于只读了一次,我的代码是根据51单片机写的,51都成功了我以为可以放在STM32(代码用的是hal库,然后的话是用cubeide写的,不是标准库)上,但是没想到还会有错误,代码中出现的printf()是利用串口来查看代码有没有卡在某个地方上。我现在所知道的卡死的函数是:void DHT11_receive()和unsigned char DHT11_rec_byte(),其他地方的话虽然都能打印出来但是都是过一阵子才打印过一阵子才打印。下面我会给出仿真图和代码,以及附上51的代码(经仿真可以运行)供大佬对比一下我错误的STM32代码。
原理图部分:


STM32(利用的是cubeide即hal库)的代码


cubeide的配置


51的代码


我会把51和32的压缩包一起发过来 1602.rar (73.03 KB, 下载次数: 32)

DTH11.rar (33.72 KB, 下载次数: 17)
temperatureandhumidity.7z (1 MB, 下载次数: 29)




作者: 电子浪人    时间: 2021-12-21 21:27
我把32的代码与51的代码,对比了半天,我死活想不明白,为什么LCD不能实时更新数据。我想破脑袋都想不通,为什么这两个函数串口打印不出来
作者: 人工置顶员    时间: 2021-12-21 23:48
顶一下
作者: 人工置顶员    时间: 2021-12-22 22:48
顶一下
作者: 电子浪人    时间: 2021-12-23 19:46
有没有大佬帮帮萌新
作者: 人工置顶员    时间: 2021-12-23 23:16
顶一下
作者: 电子浪人    时间: 2021-12-24 13:04
今天早上刷牙洗脸之际,我突然想出了一个办法,既然程序遇到while就被卡住,那么我就在while再写点东西让他强行往下面走,虽然可能造成时序有点乱,但是LCD1602终于可以实时显示温湿度了,但是就是有一个小毛病,就是我在调温湿度的时候,这个LCD1602有时候会变成00,不过很快又变成温湿度,但是后面偶尔又会变成0,这样往复,请问有什么办法解决嘛

作者: 电子浪人    时间: 2021-12-25 13:24
电子浪人 发表于 2021-12-23 19:46
有没有大佬帮帮萌新


有没有大佬帮帮萌新




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