找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

LM35+ADC0809使用51单片机制作温度显示(问题解决)

查看数: 4430 | 评论数: 18 | 收藏 4
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-9-13 19:09

正文摘要:

本帖最后由 hslcac 于 2021-9-16 21:20 编辑 学习调试过程中,单独显示输入没问题,关键的ADC0809的数据不显示,请帮忙看一下哪里除了问题,谢谢。问题已经解决,谢谢各位老师指点,谢谢,后面附完成后的程序。 / ...

回复

ID:92810 发表于 2023-1-9 16:32
hslcac 发表于 2021-9-16 21:16
问题已经解决,上传完成主程序,显示程序及电路没变。

谢谢楼主分享啦
ID:89072 发表于 2021-9-16 21:48
温度和AD0809输入电压名称标错位置了,电压显示的是LM358输出至0809IN0的电压,制作板子的时候没有计算好,358的最大输出电压测量3.74V,实际与显示的电压准确(没有具体检测),有借鉴制作温度及数控电源的程序比较接近(针对新手)。
ID:89072 发表于 2021-9-16 21:09
lkc8210 发表于 2021-9-16 15:03
在网页看,没留意到那一段注释掉了
正因为注释掉了
又重覆了5楼的问题1

为什么要加个‘’+48‘’,非常感谢,已经找到问题了,第一、没有加48,第二,num定义错误应该是uint型。再次非常感谢各位老师指点,谢谢,上传完成程序。
ID:161164 发表于 2021-9-16 15:03
hslcac 发表于 2021-9-16 12:44
是使用的1602,原来的数码管显示没问题,修改的,定时器是1ms的啊

在网页看,没留意到那一段注释掉了
正因为注释掉了
又重覆了5楼的问题1
没有定时器1的中断函数,又当机了

第117行
volt_data[6]=num/1000;          //取处理后的数据千位,对应显示温度值的十位
缺了个"+48"
又重覆了5楼的问题2
ID:89072 发表于 2021-9-16 13:18
188610329 发表于 2021-9-16 12:55
液晶屏刷新是电压翻转一次就定格了,一般,没有内容变化就不必反复刷新,和数码管需要不断的供电点亮是不 ...

嗯嗯明白了,谢谢,
ID:624769 发表于 2021-9-16 12:55
hslcac 发表于 2021-9-16 12:44
是使用的1602,原来的数码管显示没问题,修改的,定时器是1ms的啊

液晶屏刷新是电压翻转一次就定格了,一般,没有内容变化就不必反复刷新,和数码管需要不断的供电点亮是不同的,所以,8210才提醒你一下。
ID:89072 发表于 2021-9-16 12:44
lkc8210 发表于 2021-9-16 00:40
定时器1的中断是2ms一次吧?
对LCD1602来说太频密了
再加上注释

是使用的1602,原来的数码管显示没问题,修改的,定时器是1ms的啊
ID:161164 发表于 2021-9-16 00:40
定时器1的中断是2ms一次吧?
对LCD1602来说太频密了
再加上注释
你好像抄错了数码管的动态扫描代码了吧
ID:89072 发表于 2021-9-15 23:33
请路过的大师帮我看一下
ID:89072 发表于 2021-9-15 09:14
yzwzfyz 发表于 2021-9-14 15:04
1、显示程序:应能显示某个变量于LED上,如A3。
2、采样程序:应能将采样的数值,转换成温度,再放入A3中 ...

谢谢指导,我按您的办法试试。
ID:89072 发表于 2021-9-15 09:13
lkc8210 发表于 2021-9-14 11:20
经过半天排查
发现是你初始化了定时器1但又没有相应的中断函数
结果在定时器1第一次溢出后单片机就当机了 ...

非常感谢,开始测试使用的中断刷新显示,调试后放在主函数内做显示,我再改一下试试。
ID:123289 发表于 2021-9-14 15:04
1、显示程序:应能显示某个变量于LED上,如A3。
2、采样程序:应能将采样的数值,转换成温度,再放入A3中。
做到以上两点不就OK了吗?有什么难度呢?
ID:161164 发表于 2021-9-14 11:20
经过半天排查
发现是你初始化了定时器1但又没有相应的中断函数
结果在定时器1第一次溢出后单片机就当机了
应加上
void timer1() interrupt 3
{
}

另外,LCD1602要显示字符,lcd_wdat();的形参要以ASCII值输入
lcd_wdat(volt);//自己想一下怎样改
lcd_wdat(seg1);>>>>>>>>>>>>lcd_wdat('0'+seg1);
lcd_wdat(seg2);>>>>>>>>>>>>lcd_wdat('0'+seg2);
lcd_wdat(seg3);>>>>>>>>>>>>lcd_wdat('0'+seg3);
ID:89072 发表于 2021-9-14 09:36
munuc_w 发表于 2021-9-14 08:28
显示不显示和0809无关,问题可能出现在数据处理上,仔细检查0809后的数据处理过程。

出现乱码是不是0809数据错误啊
ID:752974 发表于 2021-9-14 08:28
显示不显示和0809无关,问题可能出现在数据处理上,仔细检查0809后的数据处理过程。

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

Powered by 单片机教程网

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