标题: 求助调用ds18b20.h文件到主函数里读出温度? [打印本页]

作者: hempfish    时间: 2022-4-2 20:56
标题: 求助调用ds18b20.h文件到主函数里读出温度?
本帖最后由 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
复制代码


51hei截图20220403193526.png (15.49 KB, 下载次数: 32)

仿真就是这种显示

仿真就是这种显示

作者: 一事无成    时间: 2022-4-2 22:14
直接调用get_temp_ds(), 读取温度的全局变量。
不建议用这个代码,不规范 .c文件都写到了.h文件里。

ps 建议去看看c语言和通信协议。
作者: hempfish    时间: 2022-4-2 23:23
一事无成 发表于 2022-4-2 22:14
直接调用get_temp_ds(), 读取温度的全局变量。
不建议用这个代码,不规范 .c文件都写到了.h文件里。

是直接将get_temp_ds()写进main函数吗?我开始就写了,但是读不出来的
作者: hempfish    时间: 2022-4-2 23:27
一事无成 发表于 2022-4-2 22:14
直接调用get_temp_ds(), 读取温度的全局变量。
不建议用这个代码,不规范 .c文件都写到了.h文件里。

就是我想将温度输出到lcd1602上,最后应该输出哪几个参数啊
作者: 人工置顶员    时间: 2022-4-4 01:43
顶一下
作者: angmall    时间: 2022-4-4 09:10
ds18b20是单总线器件,对时序要求非常高。


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



作者: hempfish    时间: 2022-4-4 13:38
angmall 发表于 2022-4-4 09:10
ds18b20是单总线器件,对时序要求非常高。

晶振是12mhz
作者: hempfish    时间: 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仿真上所测的温度就是不对,而且调温度传感器上的温度也不变化,就感觉传感器是没有工作的
作者: angmall    时间: 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. }
复制代码

作者: hempfish    时间: 2022-4-4 14:55
angmall 发表于 2022-4-4 14:28
试试这样

行了,谢谢老哥
作者: hempfish    时间: 2022-4-4 14:58
angmall 发表于 2022-4-4 14:28
试试这样

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




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