在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,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首頁 > 嵌入式系統(tǒng) > 設計應用 > 12864液晶電子時鐘+溫度顯示

            12864液晶電子時鐘+溫度顯示

            作者: 時間:2012-08-06 來源:網(wǎng)絡 收藏

            18B20溫度傳感器控制函數(shù):

            #includereg52.h>
            #includeintrins.h>
            #include "lcd.h"
            #define uchar unsigned char
            #define uint unsigned int
            uchar temp=80,temp_L,temp_H;
            sbit DQ=P2^3;

            void delay_us(uchar i) //延時函數(shù),計算公式:延時時間T=5+2*i;
            {
            while(--i);
            }


            bit Reset_DS18B20(void) //DS18B20復位函數(shù)
            {
            bit DS18B20_exist;
            DQ=1;
            DQ=0;
            delay_us(250); //將DQ拉低480 ~ 960us,產(chǎn)生復位信號
            DQ=1; //將總線釋放,進入接收狀態(tài)
            delay_us(30); //等待15-60us,DS18b20發(fā)出存在信號,將總線拉低60-240us
            DS18B20_exist=DQ;
            delay_us(200); //存在信號持續(xù)60 ~ 240us
            if(DS18B20_exist)
            return 1; //返回1,DS18B20復位失敗,總線上無DS18B20
            else
            return 0; //返回0,DS18B20復位成功,總線上存在DS18b20
            }

            //寫數(shù)據(jù)--線低后高
            void write_DS18B20(unsigned char value)
            {
            unsigned char i;
            for(i=0;i8;i++)
            {
            DQ=1;
            DQ=0; //將總線拉低,數(shù)據(jù)送入總線
            _nop_();
            DQ=value0x01;
            delay_us(20); //DS18b20在之后的15-60us的時間對總線數(shù)據(jù)采樣
            DQ=1; //連續(xù)寫入將須將總線釋放至少1us
            value=value>>1;
            }
            }
            //讀數(shù)據(jù)--先低后高
            unsigned char Read_DS18B20(void)
            {
            unsigned char value,i;
            for(i=0;i8;i++)
            {
            DQ=1;
            DQ=0;
            delay_us(1); //主機將總線拉低7us,!!!!時間不能過長
            DQ=1; //之后釋放總線,告訴DS18B20“讀”數(shù)據(jù)
            _nop_();
            _nop_();
            value=value>>1;
            if(DQ)
            value|=0x80; //數(shù)據(jù)讀取
            delay_us(20);

            }
            return value;
            }
            void Read_temp()
            {
            Reset_DS18B20();
            write_DS18B20(0xCC);
            write_DS18B20(0x44);
            Reset_DS18B20();
            write_DS18B20(0xcc);
            write_DS18B20(0xBE);
            temp_L=Read_DS18B20();
            temp_H=Read_DS18B20();
            temp=(temp_H*256+temp_L)/16;

            }
            -------------------------------------

            #include "lcd.h"
            #include reg52.h>
            sbit RS=P2^5; //控制端口位定義
            sbit RW=P2^6;
            sbit EN=P2^7;
            void init_()
            {
            delay(40);
            write_com(0x30);//8位數(shù)據(jù)格式,基本指令顯示
            delay(10); //延時時間
            write_com(0x30);//8位數(shù)據(jù)格式,基本指令顯示
            delay(37);
            write_com(0x0C);//開顯示、關閉光標
            delay(10);
            write_com(0x01);//清屏指令
            delay(10); //延時
            write_com(0x06);//設置顯示點:指針自加1
            }
            void delay(uint t)
            {
            uint i,j;
            for(i=120;i>0;i--);
            for(j=t;j>0;j--);
            }
            /**********************************************************
            void delay_us(uchar t) //延時計算公式:5+2*t
            {
            while(--t);
            }
            ***********************************************************/
            void read_busy()
            {
            EN=0;
            RW=1;
            RS=0;
            EN=1;
            while(P00x80);
            EN=0;
            }
            void write_com(uchar com) //寫命令
            {
            read_busy();
            EN=1;
            RS=0;
            RW=0;
            P0=com;
            delay(1);
            EN=0;

            }
            void write_dat(uchar dat) //寫數(shù)據(jù)
            {
            read_busy();
            EN=1;
            RS=1;
            RW=0;
            P0=dat;
            delay(1);
            EN=0;
            }


            上一頁 1 2 3 4 下一頁

            評論


            相關推薦

            技術專區(qū)

            關閉