新聞中心

        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--);

        }



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 苏尼特左旗| 封丘县| 浪卡子县| 山丹县| 天津市| 镇安县| 咸宁市| 称多县| 安西县| 吉林省| 巨野县| 台南县| 温州市| 淮阳县| 海南省| 蒙自县| 紫阳县| 固阳县| 三河市| 图们市| 安远县| 宣恩县| 启东市| 黄山市| 石狮市| 呼和浩特市| 鄂温| 大英县| 平顶山市| 新源县| 泗水县| 屯留县| 监利县| 明星| 彭州市| 昔阳县| 上犹县| 南雄市| 上林县| 和静县| 磴口县|