如何将单片机温度传感器采集到的数据通过无线传给pc 100
voiddelay_2us(unsignedchart){while(--t);}/*mS延时函数,晶振12M*/voiddelay_ms(unsignedchart){...
void delay_2us(unsigned char t) {
while(--t);
}
/*mS延时函数,晶振12M*/
void delay_ms(unsigned char t) {
while(t--) {
delay_2us(245);
delay_2us(245);
}
}
/*18b20初始化*/
bit DS18B20_init() {
bit dat=0;
DQ = 1; //DQ复位
delay_2us(5); //稍做延时
DQ = 0; //单片机将DQ拉低
delay_2us(200); //精确延时 大于 480us 小于960us
delay_2us(200);
DQ = 1; //拉高总线
delay_2us(50); //15~60us 后 接收60-240us的存在脉冲
dat=DQ; //如果x=0则初始化成功, x=1则初始化失败
delay_2us(25); //稍作延时返回
return dat;
}
/*读取一个字节*/
unsigned char DS18B20_read_byte() {
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--) {
DQ = 0; // 给脉冲信号
dat >>= 1;
DQ = 1; // 给脉冲信号
if(DQ) dat |= 0x80;
delay_2us(25);
}
return dat;
}
/*写入一个字节*/
void DS18B20_write_byte(unsigned char dat) {
unsigned char i=0;
for (i=8; i>0; i--) {
DQ = 0;
DQ = dat & 0x01;
delay_2us(25);
DQ = 1;
dat >>= 1;
}
delay_2us(25);
}
/*读取温度*/
unsigned int DS18B20_read_temp() {
unsigned char a=0;
unsigned int b=0;
while(DS18B20_init()==1);
DS18B20_write_byte(0xCC); // 跳过读序号列号的操作
DS18B20_write_byte(0x44); // 启动温度转换
delay_ms(10);
while(DS18B20_init()==1);
DS18B20_write_byte(0xCC); //跳过读序号列号的操作
DS18B20_write_byte(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
a=DS18B20_read_byte(); //低位
b=DS18B20_read_byte(); //高位
return (b << 8) + a;
}
程序写到这里,如何将这个数据传回pc端,通过无线传输的方式,还有电脑端如何将接收的数据转换成正确的温度显示出来,可以加q联系,321266619 展开
while(--t);
}
/*mS延时函数,晶振12M*/
void delay_ms(unsigned char t) {
while(t--) {
delay_2us(245);
delay_2us(245);
}
}
/*18b20初始化*/
bit DS18B20_init() {
bit dat=0;
DQ = 1; //DQ复位
delay_2us(5); //稍做延时
DQ = 0; //单片机将DQ拉低
delay_2us(200); //精确延时 大于 480us 小于960us
delay_2us(200);
DQ = 1; //拉高总线
delay_2us(50); //15~60us 后 接收60-240us的存在脉冲
dat=DQ; //如果x=0则初始化成功, x=1则初始化失败
delay_2us(25); //稍作延时返回
return dat;
}
/*读取一个字节*/
unsigned char DS18B20_read_byte() {
unsigned char i=0;
unsigned char dat = 0;
for (i=8;i>0;i--) {
DQ = 0; // 给脉冲信号
dat >>= 1;
DQ = 1; // 给脉冲信号
if(DQ) dat |= 0x80;
delay_2us(25);
}
return dat;
}
/*写入一个字节*/
void DS18B20_write_byte(unsigned char dat) {
unsigned char i=0;
for (i=8; i>0; i--) {
DQ = 0;
DQ = dat & 0x01;
delay_2us(25);
DQ = 1;
dat >>= 1;
}
delay_2us(25);
}
/*读取温度*/
unsigned int DS18B20_read_temp() {
unsigned char a=0;
unsigned int b=0;
while(DS18B20_init()==1);
DS18B20_write_byte(0xCC); // 跳过读序号列号的操作
DS18B20_write_byte(0x44); // 启动温度转换
delay_ms(10);
while(DS18B20_init()==1);
DS18B20_write_byte(0xCC); //跳过读序号列号的操作
DS18B20_write_byte(0xBE); //读取温度寄存器等(共可读9个寄存器) 前两个就是温度
a=DS18B20_read_byte(); //低位
b=DS18B20_read_byte(); //高位
return (b << 8) + a;
}
程序写到这里,如何将这个数据传回pc端,通过无线传输的方式,还有电脑端如何将接收的数据转换成正确的温度显示出来,可以加q联系,321266619 展开
展开全部
RF24L01有增强版的模块,传输距离据说可达2Km,其51驱动网上一大把,过程大概是这样:把读取的温度16进制数存到一个寄存器,把这个寄存器的内容发送给RF24L01,启动发送。电脑端也要搞一个单片机,驱动24L01,当收到信号,会产生中断,单片机把数据读出来,通过串口传给PC即可(推荐使用usb转串口的小板子,就几块钱,使用很方便,不需要给板子加max232了)。PC串口收到数据,在串口助手中勾选16进制显示,就是16进制的温度了,或者单片机把16进制的温度转化成字符串形式发到PC,这样串口助手不用勾选16进制显示,直接就能显示成温度。
英诺科技
2023-10-13 广告
2023-10-13 广告
光纤测温产品介绍荧光光纤测温福州英诺电子科技有限公司提供光纤测温系统,应用开关柜光纤测温,变压器光纤测温,实验设备等,耐高压,抗干扰,绝缘。开关柜光纤测温高压开关柜光纤测温系统功能1) 可以实时不间断监测开关柜触头、断路器、母排、进出线等易...
点击进入详情页
本回答由英诺科技提供
展开全部
距离十五米内最简单的就是用RF2401之类的无线数传模块,电脑端用一个同样的模块接收并输出数据至电脑串口,用Vb获得数据并显示温度。距离远点的话可用Gsm模块。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
FC-211AP模块,串口输出直接连接电脑。单片机端也用这模块,实现透明传输。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询