关于pic单片机的数字温度传感器DS18B20,这程序在执行的时候,pic单片机上温度数值变化很大,程序错哪了

全部回答2
默认 最新
  • #include "reg51.h"#include "intrins.h" typedef unsigned char byte; sbit dq = p3^3;    //ds18b20的数据口位p3.3byte tph;    //存放温度值的高字节byte tpl;    //存放温度值的低字节 void delayxus(byte n);void ds18b20_reset();void ds18b20_writebyte(byte dat);byte ds18b20_readbyte(); void main(){    ds18b20_reset();    //设备复位    ds18b20_writebyte(0xcc);    //跳过rom命令    ds18b20_writebyte(0x44);    //开始转换命令    while (!dq);    //等待转换完成     ds18b20_reset();    //设备复位    ds18b20_writebyte(0xcc);    //跳过rom命令    ds18b20_writebyte(0xbe);    //读暂存存储器命令    tpl = ds18b20_readbyte();    //读温度低字节    tph = ds18b20_readbyte();    //读温度高字节     while (1);} /**************************************延时x微秒(stc12c5a60s2@12m)不同的工作环境,需要调整此函数此延时函数是使用1t的指令周期进行计算,与传统的12t的mcu不同**************************************/void delayxus(byte n){    while (n--)    {    _nop_();    _nop_();    }} /**************************************复位ds18b20,并检测设备是否存在**************************************/void ds18b20_reset(){    cy = 1;    while (cy)    {    dq = 0;    //送出低电平复位信号    delayxus(240);    //延时至少480us    delayxus(240);    dq = 1;    //释放数据线    delayxus(60);    //等待60us    cy = dq;    //检测存在脉冲    delayxus(240);    //等待设备释放数据线    delayxus(180);    }} /**************************************从ds18b20读1字节数据**************************************/byte ds18b20_readbyte(){    byte i;    byte dat = 0;     for (i=0; i<8; i++)    //8位计数器    {    dat >>= 1;    dq = 0;    //开始时间片    delayxus(1);    //延时等待    dq = 1;    //准备接收    delayxus(1);    //接收延时    if (dq) dat |= 0x80;    //读取数据    delayxus(60);    //等待时间片结束    }     return dat;} /**************************************向ds18b20写1字节数据**************************************/void ds18b20_writebyte(byte dat){    char i;     for (i=0; i<8; i++)    //8位计数器    {    dq = 0;    //开始时间片    delayxus(1);    //延时等待    dat >>= 1;    //送出数据    dq = cy;    delayxus(60);    //等待时间片结束    dq = 1;    //恢复数据线    delayxus(1);    //恢复延时    }}
    0 点赞
  • 哇这个太难了吧传感器(英文名称:transducer/sensor)是一种检测装置,能感受到被测量的信息,并能将感受到的信息,按一定规律变换成为电信号或其他所需形式的信息输出,以满足信息的传输、处理、存储、显示、记录和控制等要求。传感器的特点包括:微型化、数字化、智能化、多功能化、系统化、网络化。它是实现自动检测和自动控制的首要环节。传感器的存在和发展,让物体有了触觉、味觉和嗅觉等感官,让物体慢慢变得活了起来。通常根据其基本感知功能分为热敏元件、光敏元件、气敏元件、力敏元件、磁敏元件、湿敏元件、声敏元件、放射线敏感元件、色敏元件和味敏元件等十大类。
    0 点赞

没有更多内容了

返回顶部
产品求购 求购