找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1419|回复: 10
收起左侧

求助调用ds18b20.h文件到主函数里读出温度?

[复制链接]
ID:864872 发表于 2022-4-2 20:56 | 显示全部楼层 |阅读模式
本帖最后由 hempfish 于 2022-4-4 15:02 编辑

调用了头文件ds18b20.h文件是在一老哥那里下的,文件是http://www.51hei.com/bbs/dpj-29490-1.html
想问一下主函数里面应该写什么才能将温度读出来啊,主函数如下
  1. #include <REGX51.H>
  2. #include "ds18b20.h"
  3. #define uchar unsigned char
  4. #define uint unsigned  int
  5. sbit AD0832_CS = P1^0 ;
  6. sbit AD0832_CLK = P1^1;
  7. sbit AD0832_DI = P1^2;
  8. uchar code table[8]={0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00};
  9. sbit RS = P2^0;
  10. sbit RW = P2^1;
  11. sbit EN = P2^2;
  12. sbit LED=P3^0;
  13. uchar data disdata[7];
  14. uchar data  data1[7];
  15. int v,v1=0;
  16. sbit K1=P3^2;
  17. sbit K2=P3^3;
  18. sbit K3=P3^4;
  19. sbit K4=P3^5;
  20. bit flag_KEY;
  21. int v3=120
  22. int v4=80
复制代码


仿真就是这种显示

仿真就是这种显示
回复

使用道具 举报

ID:1007932 发表于 2022-4-2 22:14 | 显示全部楼层
直接调用get_temp_ds(), 读取温度的全局变量。
不建议用这个代码,不规范 .c文件都写到了.h文件里。

ps 建议去看看c语言和通信协议。
回复

使用道具 举报

ID:864872 发表于 2022-4-2 23:23 | 显示全部楼层
一事无成 发表于 2022-4-2 22:14
直接调用get_temp_ds(), 读取温度的全局变量。
不建议用这个代码,不规范 .c文件都写到了.h文件里。

是直接将get_temp_ds()写进main函数吗?我开始就写了,但是读不出来的
回复

使用道具 举报

ID:864872 发表于 2022-4-2 23:27 | 显示全部楼层
一事无成 发表于 2022-4-2 22:14
直接调用get_temp_ds(), 读取温度的全局变量。
不建议用这个代码,不规范 .c文件都写到了.h文件里。

就是我想将温度输出到lcd1602上,最后应该输出哪几个参数啊
回复

使用道具 举报

ID:301191 发表于 2022-4-4 01:43 | 显示全部楼层
顶一下
回复

使用道具 举报

ID:155507 发表于 2022-4-4 09:10 | 显示全部楼层
ds18b20是单总线器件,对时序要求非常高。


你的单片机主时钟频率是多少?


回复

使用道具 举报

ID:864872 发表于 2022-4-4 13:38 | 显示全部楼层
angmall 发表于 2022-4-4 09:10
ds18b20是单总线器件,对时序要求非常高。

晶振是12mhz
回复

使用道具 举报

ID:864872 发表于 2022-4-4 14:09 | 显示全部楼层
angmall 发表于 2022-4-4 09:10
ds18b20是单总线器件,对时序要求非常高。

时序问题我下这个.h文件上作者写的应该没问题吧,主要就是这个温度传感器不知道它有没有工作,主函数:
  1. void main()   
  2. {
  3.         uchar AD_val1;  
  4.         uchar AD_val2;
  5.         lcd_init();      
  6.         get_temp_ds();
  7. wr_com(0xc9);
  8.                  wr_dat('0'+bwei_ds);
  9.           wr_dat('0'+shwei_ds);
  10.                 wr_dat('0'+gwei_ds);
  11.                 wr_dat('.');
  12.           wr_dat('0'+shfen_ds);
  13.                 wr_dat(0xdf);
  14.                 wr_dat(0x43);
复制代码

在protues仿真上所测的温度就是不对,而且调温度传感器上的温度也不变化,就感觉传感器是没有工作的
回复

使用道具 举报

ID:155507 发表于 2022-4-4 14:28 | 显示全部楼层
试试这样

  1. void main()   
  2. {
  3.         uchar AD_val1;   
  4.         uchar AD_val2;
  5.         lcd_init();   
  6. while(1)
  7. {
  8.         get_temp_ds();
  9.          wr_com(0xc9);
  10.           wr_dat('0'+bwei_ds);
  11.           wr_dat('0'+shwei_ds);
  12.           wr_dat('0'+gwei_ds);
  13.           wr_dat('.');
  14.           wr_dat('0'+shfen_ds);
  15.            wr_dat(0xdf);
  16.            wr_dat(0x43);
  17.     }
  18. }
复制代码
回复

使用道具 举报

ID:864872 发表于 2022-4-4 14:55 | 显示全部楼层

行了,谢谢老哥
回复

使用道具 举报

ID:864872 发表于 2022-4-4 14:58 | 显示全部楼层

我后头重新检查练一哈时序问题,然后再根据你说的把这个调到循环里面就行了,谢谢啦老哥,搞了两三天了,就一直不行,最后还真是时序问题
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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