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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

DS18B20溫度傳感器數碼管顯示溫度(2位)

[復制鏈接]
跳轉到指定樓層
樓主
ID:171619 發表于 2017-3-28 19:02 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 markjet 于 2017-3-28 19:09 編輯

/*這是DS18B20 數碼管顯示溫度的第五個版本了。
期間參考了好多大神的代碼,但都是顯示在1602液晶上的,遺憾手上沒有,如此就顯示在數碼管上。
有一段時間老是顯示85,我還以為是DS18B20壞了,經過排查最后在延時函數上找到了破綻!
同樣的延時函數,大神都是十幾個微妙,爾我的才2微妙。所以老是初始化失敗P3^7=1;  */
#include <stc12c2052ad.h>
#include <intrins.h>
#include <stdio.h>
#define uint unsigned int
#define uchar unsigned char       


sbit DQ = P3^2;
sbit C1 = P3^4;         //從1到0再次鎖存         
sbit C2 = P3^5;
sbit led = P3^7;


uchar Tempvalue;


uchar code table[]=
{        0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 };




void delayus(uint x) //         2us
{        do{
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
          _nop_();
        }while(--x);         
}
void delay(uint x)
{
        uint i,j;
        for(i = x;i>0;i--)
           for(j = 114;j>0;j--);
}
//初始化ds18b20       


bit ds18b20init(void)
{       
        bit flag;
        DQ = 1;
        delayus(1);
        DQ = 0;                  //單片機將數據線拉低為低電平0
        delayus(350);  //延時720us(時間范圍480us-960us之間)
        DQ = 1;                  //單片機將數據線置為高電平1 (釋放總線)
        delayus(40);   //延時等待15us—60us
        flag = DQ;          
        if(flag)
                {led = 0;}
       
        delayus(210);
                DQ = 1;
        return flag;
       
}


void WriteByte(uchar dat)
{       
        uchar i;
       
        for(i = 0;i < 8;i++)
        {
                DQ = 0;
                DQ = dat&0x01;
                delayus(15);          
                DQ = 1;
                dat = dat>>1;
        }DQ = 1;
        delayus(20);
}


uchar ReadByte(void)
{
        uchar value,i;
        DQ = 1;delayus(4);
        for(i =0;i<8;i++)
        {       
                DQ = 0;_nop_();
                value = value>>1;
               
                DQ = 1;
                if(DQ)
                value = value | 0x80;
                delayus(22);          
        }DQ = 1;
        return value;
}


uchar Readtemp(void)
{
        uchar a,b;


        ds18b20init();
        WriteByte(0xCC);
        WriteByte(0x44);
        delayus(400);


        ds18b20init();
        WriteByte(0xCC);
        WriteByte(0xBE);
                                           //按順序讀
        a = ReadByte();          //低8位
        b = ReadByte();           //高8位
        b<<=4;                           //
        b+=(a&0xF0)>>4;
       
        return b;
}


void display(void)
{
        P1 = 0xFF;
        C1=0; C2=1;           //個位顯示十位不顯示
        P1=table[Tempvalue%10]; //顯示ge位
        delay(10);
        C1=1;C2=0;    //個位不顯示十位顯示
          
        P1=table[Tempvalue/10]; //顯示shi位
        delay(10);
}


void main(void)
{
        while(1)
        {
                 Tempvalue = Readtemp();
                display();
       
        }       
               


}

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

使用道具 舉報

沙發
ID:194014 發表于 2017-6-29 21:47 | 只看該作者
有原理圖嗎
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美成人黄色小说 | 高清人人天天夜夜曰狠狠狠狠 | 久久国产精品一区二区三区 | 色小姐综合网 | 日韩欧美在 | 欧美一区二区三区电影 | 欧美精品一二三 | 久久精品一区 | 久久精品久久久久久 | 久久在线精品 | 日日摸日日添日日躁av | 亚洲成人动漫在线观看 | 久久久久一区 | 成人亚洲精品久久久久软件 | 看羞羞视频 | 香蕉久久网 | 久久骚| 日本一区二区三区四区 | 日本一卡精品视频免费 | 在线亚洲欧美 | 日韩一区二区黄色片 | 亚洲一区二区三区观看 | 国产成人一区二区三区 | 久久精品—区二区三区 | 黄色小视频入口 | 欧美性另类 | 毛片视频免费观看 | 欧美v在线观看 | 午夜精品一区二区三区在线 | 97精品国产97久久久久久免费 | 欧美毛片免费观看 | 欧美aⅴ片| 亚洲精品乱码久久久久久久久久 | 久久三区 | 亚洲视频区 | 欧美国产91| 亚洲精品九九 | 久久成人人人人精品欧 | 日韩精品在线一区 | 91在线一区二区三区 | 国产精品色一区二区三区 |