久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1444|回復: 0
打印 上一主題 下一主題
收起左側

DS18B20溫度檢測

[復制鏈接]
跳轉到指定樓層
樓主
ID:402738 發表于 2018-9-26 16:00 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
sbit ds=P2^4;
bit flag;
uint temp,num;
void writecod(uchar);
void writedata(uchar);
void delay();
sbit RS=P2^5;   //LCD1602數據/命令選擇端
sbit RW=P2^6;   //LCD1602讀/寫選擇端
sbit EN=P2^7;   //LCD1602使能端
uchar code table[]={'0','1','2','3','4','5','6','7','8','9'};

void delayus(uint t)//us級的延時程序
{
        while(t--);
}

void ds_reset()//DS18B20復位初始化
{
        ds=1;//初始總線
        delayus(5);//11.0592M大約66us
        ds=0;//拉低總線
        delayus(80);//大約延時700多us
        ds=1;//釋放總線
        delayus(14);//11.0592M延時時間差不多在150us
        if(ds==0)
                flag=1;
        else
                flag=0;
        delayus(20);//大約200多us
}
bit ds_read_bit()//一個位的讀取函數
{
        bit dat;
        ds=0;
        _nop_();//一個機器周期的延時函數大約1us;
        _nop_();
        ds=1;//釋放總線
        _nop_();
        dat=ds;
        delayus(10);
        return dat;
}
//DS18b20在傳輸數據的時候都是低位在前
uchar ds_read_byte()//讀一個字節
{
        uchar i,j,k;
        for(i=0;i<8;i++)
        {
                j=ds_read_bit();
                k=(j<<7)|(k>>1);
        }
        return k;
}

void ds_write_byte(uchar dat)//寫一個字節
{
        uchar i;
        for(i=0;i<8;i++)
        {
                ds=0;
                _nop_();
                ds=dat;
                ds=dat&0x01;//只保留dat的最低位,因為DS18B20在傳輸數據的過程中都是低位在前
                delayus(6);
                ds=1;
                dat=dat>>1;
        }
        delayus(6);
}
uint read_temperature()//讀溫度
{
        uchar a,b;//DS18B20的溫度分別分2個字節存放的,分別低8位LSB和高8位MSB,所以這里a用來存低8位b用來存高8位
        ds_reset();//初始化
        ds_write_byte(0xcc);//發送跳過ROM
        ds_write_byte(0xbe);//發送讀取溫度指令
        a=ds_read_byte();
        b=ds_read_byte();
        //接下來用一個16位的變量來存儲溫度值
        temp=b;
        temp=temp<<8;
        temp=temp|a;
        temp=temp*0.0625*10+0.5;//為了方便顯示將數放10倍,+0.5四舍五入;
        return temp;
       
}
void writecod(uchar x)
{
         RS=0;
         RW=0;
         EN=0;
         P0=x;
         delay();
         EN=1;
         delay();
         EN=0;
}
void writedata(uchar y)
{
         RS=1;
         RW=0;
         EN=0;
         P0=y;
         delay();
         EN=1;
         delay();
         EN=0;

}
void delay()
{
        uchar a,b;
        for(a=100;a>0;a--)
                for(b=100;b>0;b--);
}
void main()
{
                writecod(0x01);
                writecod(0x38);
                writecod(0x0e);
                writecod(0x06);
                writecod(0x80);
        while(1)
        {
                ds_reset();//初始化
                ds_write_byte(0xcc);//跳過ROM
                ds_write_byte(0x44);//啟動溫度轉換
                num=read_temperature();
                writecod(0x80);
                writedata(table[num/100]);
                writecod(0x80+1);
                writedata(table[num%100/10]);
                writecod(0x80+2);
                writedata('.');
                writedata(table[num%10]);
                writedata(0xdf);
                writedata('C');
                delay();
                delay();
                delay();
        }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久精品欧美一区二区三区不卡 | 午夜黄色 | 亚洲综合无码一区二区 | 国产精品久久久久久久久免费相片 | 97色免费视频 | 国产日韩电影 | 国产精品一区二区在线 | 99免费精品视频 | 欧美一级黄 | 国产精品一区在线播放 | 欧美xxxx做受欧美 | 日韩午夜电影在线观看 | 中文字幕 欧美 日韩 | 午夜av电影 | 国产九九九 | 国内自拍第一页 | 91精品国产色综合久久 | 欧美在线一区二区三区 | 午夜精品久久久 | 久久国产精彩视频 | 91免费视频观看 | 精品欧美一区二区精品久久 | 日韩欧美视频免费在线观看 | 久久精品网 | 午夜视频在线观看网站 | 成年人视频免费在线观看 | 国产成人免费视频网站视频社区 | 久久久久亚洲精品国产 | 黄色在线观看国产 | 一级欧美一级日韩片免费观看 | 欧美日韩成人在线 | 97免费在线视频 | 日韩一区在线播放 | 一区二区三区视频在线免费观看 | 亚洲国产精品一区二区第一页 | 国产免费播放视频 | 亚洲精品乱码8久久久久久日本 | 亚洲成人a v| 亚av在线 | 国产清纯白嫩初高生视频在线观看 | 在线观看免费国产 |