在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 51單片機(jī)數(shù)字鐘溫度計(jì)的編程實(shí)例

            51單片機(jī)數(shù)字鐘溫度計(jì)的編程實(shí)例

            作者: 時(shí)間:2012-05-31 來(lái)源:網(wǎng)絡(luò) 收藏

            本文引用地址:http://www.biyoush.com/article/171388.htm

            #include reg51.h

            char disp[11]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
            char disp_dot[11]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xc0};

            sbit DQ = P1^3; //定義通信端口

            //晶振12MHz
            void delay_18B20(unsigned int i)
            {
            while(i--);
            }

            //初始化函數(shù)
            Init_DS18B20(void)
            {
            unsigned char x=0;
            DQ = 1; //DQ復(fù)位
            delay_18B20(8); //稍做延時(shí)
            DQ = 0; //將DQ拉低
            delay_18B20(80); //精確延時(shí) 大于 480us
            DQ = 1; //拉高總線
            delay_18B20(14);
            x=DQ; //稍做延時(shí)后 如果x=0則初始化成功 x=1則初始化失敗
            delay_18B20(20);
            }


            //讀一個(gè)字節(jié)
            ReadOneChar(void)
            {
            unsigned char i=0;
            unsigned char dat = 0;
            for (i=8;i>0;i--)
            {
            DQ = 0; // 給脈沖信號(hào)
            dat>>=1;
            DQ = 1; // 給脈沖信號(hào)
            if(DQ)
            dat|=0x80;
            delay_18B20(4);
            }
            return(dat);
            }

            //寫一個(gè)字節(jié)
            WriteOneChar(unsigned char dat)
            {
            unsigned char i=0;
            for (i=8; i>0; i--)
            {
            DQ = 0;
            DQ = dat0x01;
            delay_18B20(5);
            DQ = 1;
            dat>>=1;
            }
            }

            //讀取溫度
            ReadTemperature(void)
            {
            unsigned char a=0;
            unsigned char b=0;
            unsigned int t=0;

            Init_DS18B20();
            WriteOneChar(0xCC); // 跳過(guò)讀序號(hào)列號(hào)的操作
            WriteOneChar(0x44); // 啟動(dòng)溫度轉(zhuǎn)換
            delay_18B20(100);
            Init_DS18B20();
            WriteOneChar(0xCC); //跳過(guò)讀序號(hào)列號(hào)的操作
            WriteOneChar(0xBE); //讀取溫度寄存器等(共可讀9個(gè)寄存器) 前兩個(gè)就是溫度
            a=ReadOneChar();
            b=ReadOneChar();

            //傳感器返回值除16得實(shí)際溫度值
            //為了得到2位小數(shù)位,先乘100,再除16,考慮整型數(shù)據(jù)長(zhǎng)度,
            //技巧處理后先乘25,再除4,除4用右移實(shí)現(xiàn)

            t = (b*256+a)*25;
            return( t >> 2 );
            }

            main()
            {
            unsigned int tmp;
            unsigned char counter;
            while(1)
            {
            //溫度測(cè)量頻率沒(méi)有必要太高,太高反而影響數(shù)碼顯示
            //所以用計(jì)數(shù)器加以控制
            if(counter-- == 0)
            {
            tmp = ReadTemperature();
            counter = 20;
            }

            P2 = 0xff;
            P0 = disp[tmp%10];
            P2 = 0xfb;
            delay_18B20(1000);
            P2 = 0xff;
            P0 = disp[tmp/10%10];
            P2 = 0xf7;
            delay_18B20(1000);
            P2 = 0xff;
            P0 = disp_dot[tmp/100%10];
            P2 = 0xef;
            delay_18B20(1000);
            P2 = 0xff;
            P0 = disp[tmp/1000%10];
            P2 = 0xdf;
            delay_18B20(1000);
            }
            }

            51單片機(jī)相關(guān)文章:51單片機(jī)教程




            評(píng)論


            相關(guān)推薦

            技術(shù)專區(qū)

            關(guān)閉