新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > DS18B20數字溫度計單片機接口應用

        DS18B20數字溫度計單片機接口應用

        作者: 時間:2013-04-02 來源:網絡 收藏

        點擊瀏覽下一頁

        4.實驗任務

        用一片構成測溫系統,測量的溫度精度達到0.1度,測量的溫度的范圍在-20度到+100度之間,用8位數碼管顯示出來。

        5.電路原理圖

        點擊瀏覽下一頁

        6.系統板上硬件連線

        (1)把“系統”區域中的P0.0-P0.7用8芯排線連接到“動態數碼顯示”區域中的ABCDEFGH端子上。

        (2)把“系統”區域中的P2.0-P2.7用8芯排線連接到“動態數碼顯示”區域中的S1S2S3S4S5S6S7S8端子上。

        (3)把芯片插入“四路單總線”區域中的任一個插座中,注意電源與地信號不要接反。

        (4)把“四路單總線”區域中的對應的DQ端子連接到“系統”區域中的P3.7/RD端子上。

        7.C語言源程序

        #include AT89X52.H>

        #include INTRINS.h>

        unsigned char code displaybit[]={0xfe,0xfd,0xfb,0xf7,

        0xef,0xdf,0xbf,0x7f};

        unsigned char code displaycode[]={0x3f,0x06,0x5b,0x4f,

        0x66,0x6d,0x7d,0x07,

        0x7f,0x6f,0x77,0x7c,

        0x39,0x5e,0x79,0x71,0x00,0x40};

        unsigned char code dotcode[32]={0,3,6,9,12,16,19,22,

        25,28,31,34,38,41,44,48,

        50,53,56,59,63,66,69,72,

        75,78,81,84,88,91,94,97};

        unsigned char displaycount;

        unsigned char displaybuf[8]={16,16,16,16,16,16,16,16};

        unsigned char timecount;

        unsigned char readdata[8];

        sbit DQ=P3^7;

        bit sflag;

        bit resetpulse(void)

        {

        unsigned char i;

        DQ=0;

        for(i=255;i>0;i--);

        DQ=1;

        for(i=60;i>0;i--);

        return(DQ);

        for(i=200;i>0;i--);

        }

        void writecommandtods18b20(unsigned char command)

        {

        unsigned char i;

        unsigned char j;

        for(i=0;i8;i++)

        {

        if((command 0x01)==0)

        {

        DQ=0;

        for(j=35;j>0;j--);

        DQ=1;

        }

        else

        {

        DQ=0;

        for(j=2;j>0;j--);

        DQ=1;

        for(j=33;j>0;j--);

        }

        command=_cror_(command,1);

        }

        }

        unsigned char readdatafromds18b20(void)

        {

        unsigned char i;

        unsigned char j;

        unsigned char temp;

        temp=0;

        for(i=0;i8;i++)

        {

        temp=_cror_(temp,1);

        DQ=0;

        _nop_();

        _nop_();

        DQ=1;

        for(j=10;j>0;j--);

        if(DQ==1)

        {

        temp=temp | 0x80;

        }

        else

        {

        temp=temp | 0x00;

        }

        for(j=200;j>0;j--);

        }



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 句容市| 兴安盟| 东丽区| 松原市| 左贡县| 昌平区| 九龙县| 抚宁县| 应用必备| 德惠市| 财经| 方山县| 通州区| 墨玉县| 贵港市| 马鞍山市| 监利县| 襄城县| 油尖旺区| 金华市| 大埔区| 新沂市| 西安市| 河东区| 滕州市| 汤阴县| 甘洛县| 克拉玛依市| 集贤县| 随州市| 齐河县| 武冈市| 宜都市| 衢州市| 赤城县| 剑川县| 都江堰市| 南阳市| 视频| 开江县| 夏邑县|