找回密碼
         注冊會員
        搜索附件  
        MCU資訊論壇 附件中心 單片機論壇 51單片機論壇 DS18B20溫度計.rar

        DS18B20溫度計.rar

         

        DS18B20問題:
        自己調試的程序總是不能正確,哪位大蝦幫我看看,非常感謝。附件里面有仿真文件。
        #include<reg51.h>
        #include<intrins.h>

        #define MSB 0x80
        #define LSB 0x01
        #define SKIP_ROM 0XCC
        #define READ_SCRATCHPAD 0XBE
        #define CONVER_T 0X44


        //COMMON PIN
        sbit DQ = P3^0;
        sbit INTH = P2^0;
        sbit INTL = P2^1;
        sbit DFH = P2^2;
        sbit DFL = P2^3;

        code led_tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,};
        unsigned char count,tempint,tempdf;

        /**********************************************************************/

        void Display(void);
        void Read_DS18B20();
        void Init_DS18B20(void);
        void Read_DS18B20_byte(void);
        void Delay(unsigned char i);
        void Write_DS18B20(unsigned char dat);

        /**********************************************************************/
        void main(void)
        {
        while(1)
        {
        Read_DS18B20();
        Display();
        }
        }

        /**********************************************************************/

        void Read_DS18B20()
        {
        unsigned char i,j;
        Init_DS18B20();
        Write_DS18B20(SKIP_ROM);
        Write_DS18B20(CONVER_T);
        for(i=0;i<20;i++)
        {
        for(j=0;j<200;j++)
        {
        count=600;
        while(--count);
        }
        }
        Init_DS18B20();
        Write_DS18B20(SKIP_ROM);
        Write_DS18B20(READ_SCRATCHPAD);
        Read_DS18B20_byte();
        }

        /*************************************************************************/

        void Init_DS18B20(void)
        {
        unsigned char flag;
        flag = 0;
        DQ=1;
        count = 10;
        while(--count);
        DQ = 0;
        count = 250;
        while(--count); //延時500us>480us
        DQ = 1;
        count = 20;
        while(--count); //延時40us
        while(DQ==0)
        {
        count = 120;
        while(--count);
        if(DQ)
        {
        count = 240;
        while(--count);
        break;
        }
        }

        }

        /**********************************************************************/

        void Write_DS18B20(unsigned char dat)
        {
        unsigned char i;
        for (i=0; i<8; i++)
        {
        DQ = 0;
        count = 8;
        while(--count);
        DQ = dat&LSB;
        count = 20;
        while(--count);
        dat>>=1;
        DQ = 1;
        _nop_();
        }
        }

        /*********************************************************************/

        void Read_DS18B20_byte(void)
        {
        unsigned char temp,i,j,temph,templ,tempinth,tempintl,tempdfh;
        j=2,temp=0x00;
        do
        {
        for(i=0;i<8;i++)
        {
        temp>>=1;
        DQ = 0;
        _nop_();
        _nop_();
        DQ = 1;
        count = 4;
        while(--count);
        if(DQ)
        temp=temp|0x80;
        count = 10;
        while(--count);
        }
        if(j==2)
        templ=temp;
        else
        temph=temp;
        }while(--j);

        temph<<=8;
        temph|=templ;
        temp=temph*0.0625;
        temp=temp*10+0.5;//放大10倍后,4舍5入
        tempinth=temp/100;
        tempintl=temp/10%10;
        tempdfh=temp%10;
        }

        /**********************************************************************/

        void Display()
        {
        unsigned char tempinth,tempintl,tempdfh;
        tempinth=led_tab[tempint/10];
        tempintl=led_tab[tempint%10]|0x80;//帶上小數點
        tempdfh =led_tab[tempdf/10];
        for(count=0;count<200;count++)
        {
        INTH=1;
        P0=tempinth;
        Delay(5);
        INTH=0;

        INTL=1;
        P0=tempintl;
        Delay(5);
        INTL=0;


        DFH=1;
        P0=tempdfh;
        Delay(5);
        DFH=0;

        DFL=1;
        P0 = 0XC6;
        Delay(5);
        DFL=0;
        }
        }

        /**********************************************************************/

        void Delay(unsigned char t)
        {
        while(--t);
        }




        QQ|手機版|MCU資訊論壇 ( 京ICP備18035221號-2 )|網站地圖

        GMT+8, 2025-5-1 05:25 , Processed in 0.040765 second(s), 8 queries , Redis On.

        Powered by Discuz! X3.5

        © 2001-2025 Discuz! Team.

        返回頂部
        亚洲国产成人精品无码区在线观看| 国产精品原创巨作?v网站| 久久精品国产一区二区| 四库影院永久四虎精品国产| 三上悠亚久久精品| 久久精品国产半推半就| 日本Aⅴ大伊香蕉精品视频| 无码人妻精品一区二区三区在线 | 国产丝袜肉丝视频在线| 国产三级久久久精品麻豆三级| 久久亚洲精品中文字幕三区| 日产国产精品亚洲系列| 精品久久久久久成人AV| 国产精品九九久久免费视频| 国产超在线视频公开个人| 国产精品99精品久久免费| 精品久久久无码中文字幕| 亚洲日韩一页精品发布| 亚洲欧美日韩精品久久| 美女扒尿口让男人桶动态图| 日韩精品在线免费观看| 影院无码人妻精品一区二区| 99re国产精品视频首页| 日韩精品在线播放| 成人精品视频在线观看| 日本五区在线不卡精品| 55夜色66夜色国产精品视频| 久久国产香蕉一区精品 | 国产欧美日本亚洲精品一5| 青春草在线免费视频| 久久精品国产一区| 午夜伦情电午夜伦情电影| 欧美一区二区精品久久| 成人免费毛片视频app| 亚洲精品欧美综合| 亚洲av成人无码久久精品| 精品国产人成亚洲区| 99精品国产一区二区三区2021| 欧洲精品一区二区三区在线观看 | 香蕉久久夜色精品国产小说| 欧美性受xxxx极品|