中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 12864液晶電子時(shí)鐘+溫度顯示

        12864液晶電子時(shí)鐘+溫度顯示

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

        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í)函數(shù),計(jì)算公式:延時(shí)時(shí)間T=5+2*i;
        {
        while(--i);
        }


        bit Reset_DS18B20(void) //DS18B20復(fù)位函數(shù)
        {
        bit DS18B20_exist;
        DQ=1;
        DQ=0;
        delay_us(250); //將DQ拉低480 ~ 960us,產(chǎn)生復(fù)位信號
        DQ=1; //將總線釋放,進(jìn)入接收狀態(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復(fù)位失敗,總線上無DS18B20
        else
        return 0; //返回0,DS18B20復(fù)位成功,總線上存在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í)間對總線數(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); //主機(jī)將總線拉低7us,!!!!時(shí)間不能過長
        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); //延時(shí)時(shí)間
        write_com(0x30);//8位數(shù)據(jù)格式,基本指令顯示
        delay(37);
        write_com(0x0C);//開顯示、關(guān)閉光標(biāo)
        delay(10);
        write_com(0x01);//清屏指令
        delay(10); //延時(shí)
        write_com(0x06);//設(shè)置顯示點(diǎn):指針自加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) //延時(shí)計(jì)算公式: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 下一頁

        評論


        相關(guān)推薦

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

        關(guān)閉