单片机如何将DS18B20温度传感器的数据采集后,通过无线串口发送至PC端的无线串口?串口通信程序怎么写?

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-07-04
单片机中如何将DS18b20测得的温度通过串口发送到电脑的串口调试助手上呢?

串口是可以发送16进制的数的。我常用的简单方法是,在单片机里这样写:

int t;
float tt; //温度值

char i;
unsigned char *p;

Init_DS18B20();
WriteOneChar(0xCC); //跳过读序号列号的操作
delay(40);//delay(4);
WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
a=ReadOneChar();
b=ReadOneChar();
t=b;

t<<=8;
t=t|a;
tt=t*0.0625; 转换成温度.可用

p= (unsigned char *) (&tt);

for(i=3;i>=0;i--)
{
TI = 0;
SBUF = p[i];
while(TI==0);

}

到计算机这边,在把他转换回来就好了;
例如:
BYTE RECV[4]; // 这是计算机收到的字符串;
float *fp = (float*)RECV;
float t = *fp; //t里就是收到的18B20的温度了

答案是能够实现。方案是:
1、利用电脑自身蓝牙功能,这时候单片机要控制蓝牙模块严格按照计算机蓝牙功能协议(配对、密码验证、数据格式)发送数据,电脑端要编制PC端接收程序,实现接收和显示。
2、电脑端使用USB转232模块配接HC-06蓝牙串口,PC机运行串口助手,实现对HC-06蓝牙串口的控制和接收数据的显示。

RF24L01有增强版的模块,传输距离据说可达2Km,其51驱动网上一大把,过程大概是这样:把读取的温度16进制数存到一个寄存器,把这个寄存器的内容发送给RF24L01,启动发送。电脑端也要搞一个单片机,驱动24L01,当收到信号,会产生中断,单片机把数据读出来,通过串口传给PC即可(推荐使用usb转串口的小板子,就几块钱,使用很方便,不需要给板子加max232了)。PC串口收到数据,在串口助手中勾选16进制显示,就是16进制的温度了,或者单片机把16进制的温度转化成字符串形式发到PC,这样串口助手不用勾选16进制显示,直接就能显示成温度。

  • 利用数字温度传感器DS18B20与单片机结合来测量温度。利字温度传感器DS18B...
    答:void tmpwritebyte(uchar dat) //write a byte to ds18b20 向1820写一个字节数据函数 { uint i;uchar j;bit testb;for(j=1;j<=8;j++){ testb=dat&0x01;dat=dat>>1;if(testb) //write 1 { DS=0;i++;i++;DS=1;i=8;while(i>0)i--;} else { DS=0; //writ...
  • DS18B20温度传感器如何与单片机相连接
    答:DS18B20与单片机连接一个IO口就够了,只需要满足相应的时序就能读到温度数据。至于1602显示,只要能读到温度数据,将数据转为字符串发送给1602就可以了
  • 51单片机两个端口分别接ds18b20如何测温
    答:温度传感器可以选用ds18b20 我把电路图发上来了这是程序,希望对你有用```include <reg52.h> define uchar unsigned char define uint unsigned int sbit DS=P2^2; //define interface uint temp; // variable of temperature uchar flag1; // sign of the result positive or negative ...
  • 单片机中如何将DS18b20 测得的温度通过串口发送到上位机VB中_百度知...
    答://假定温度值整数放在变量tint,小数放在变量tflo里 //发送 Sendone('0'+tint); //发送整数 Sendone('.'); //发送小数点 Sendone('0'+tflo); //发送小数 SendLineEnd(); //发送回车换行符 delay(60000); //适当延时以免发送数据过量 //连接好电脑和单片机,打开串口调试助手...
  • 单片机上的ds18b20温度传感器是什么工作原理
    答:随着温度升高,金属管(材料A)长度增加,而不膨胀钢杆(金属B)的长度并不增加,这样由于位置的改变,金属管的线性膨胀就可以进行传递。反过来,这种线性膨胀可以转换成一个输出信号。液体和气体的变形曲线设计的传感器 在温度变化时,液体和气体同样会相应产生体积的变化。多种类型的结构可以把这种膨胀的...
  • 急需用温度传感器ds18b20,数码管显示温度的单片机的C语言程序,运用的是...
    答:include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit DQ=P1^4; //ds18b20与单片机连接口 unsigned char code str[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40} ; //共阴数码管字码表unsigned char code str1[]={0x0bf,0x86,...
  • 你那有基于AT89C51单片机和DS18B20温度传感器程序么
    答:Init_DS18B20();// WriteOneChar(0xCC); //跳过读序号列号的操作 WriteOneChar(0x55); //匹配ROM命令 for(i=0;i<8;i++) { WriteOneChar(RomCode[x][i]); } WriteOneChar(0xBE); //读取温度寄存器 temp_data[0] = ReadOneChar(); //温度低8位 temp_data[1] = ReadOneChar(); //温度...
  • DS18B20温度传感器如何将信号传到单片机中
    答:DS18B20是1-Wire总线的温度传感器,单片机要和DS18B20通信,就要严格按照18B20手册中给出的时隙打出通信时序,手册中让你把总线拉低多久你就要拉低多久,让你释放多久你就释放多久。我截个手册上的时序图:
  • ...单片机数字温度传感器设计 (温度传感器是DS18B20) 寻高手帮在C语言...
    答:void display(uint k)//显示温度 { uchar ge,shi,bai;ge=k%10;shi=k/10%10; //shiwei bai=k/100;if(!flag)//温度为负数 { P2=seg[0];P0=0xbf;//负号 显示"-"delay1(4);P2=0xff;P2=seg[1];P0=tab[k/10%10];delay1(4);P2=0xff;P2=seg[2];P0=tab[k%10];//DIN=0...
  • 用51单片机做了温度采集系统,用的ds18b20传感器,老师要求我们把接收到的...
    答:用一个带USB的MCU就搞定了,你可以参考一下申矽凌微电子的一个Demo board。 是USB口的。我给一段例程,你参考一下:但是要注意DS18B20的Reset延迟时间,温度一直不变,应该是出错了,Check一下是不是Reset的延时时间是否不够,因为其转换速度慢?申矽凌微电子的CT1820的速度较快(近21倍的转换速度)。...