久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 3184|回復(fù): 1
收起左側(cè)

單片機(jī)遠(yuǎn)程倉(cāng)庫(kù)濕度監(jiān)測(cè)系統(tǒng)代碼+Proteus仿真

[復(fù)制鏈接]
ID:517871 發(fā)表于 2019-5-9 17:27 | 顯示全部樓層 |閱讀模式
基于51單片機(jī)和Proteus仿真的遠(yuǎn)程倉(cāng)庫(kù)濕度監(jiān)測(cè)系統(tǒng)
倉(cāng)庫(kù)監(jiān)控.png
#include <AT89X52.h>
#include <intrins.h>
#include <stdio.h>

sbit SCK=P2^4;
sbit DATA=P2^5;
sbit LCD_RS=P2^0;
sbit LCD_EN=P2^2;


unsigned char RH_H,RH_L;                        //接收的濕度的高位數(shù)據(jù)和低位數(shù)據(jù)
unsigned int i,j;
unsigned char dispbuf[4];


void delay(unsigned int z)
{
        unsigned int x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void write_GETRH(unsigned char GETRH)
{
        LCD_RS=0;
        P0=GETRH;
        delay(1);
        LCD_EN=1;
        delay(1);
        LCD_EN=0;
}

void write_DATA(unsigned char *date)
{
        unsigned char n;
        for(n=0;n<0x40;n++)
        {
                if(date[n]=='*')break;                //檢測(cè),如果字符輸入"*",就終止
                LCD_RS=1;
                P0=date[n];
                delay(5);
                LCD_EN=1;
                delay(5);
                LCD_EN=0;
        }
}

void init()
{
        LCD_EN=0;
        write_GETRH(0x38);
        write_GETRH(0x0c);
        write_GETRH(0x06);
        write_GETRH(0x01);
}

//在SCK上發(fā)送n個(gè)脈沖信號(hào)
void nSCKPulse(unsigned int n)                        
{
        for(i=n;i>0;i--)
        {
                SCK=0;
                SCK=1;
        }
}
//啟動(dòng)SHT11
void STARTSHT11()                                       
{
        SCK=1;
        DATA=0;
        SCK=0;
        SCK=1;
        DATA=1;
        SCK=0;
}
//獲得濕度數(shù)據(jù)
void GETRH(unsigned char GETRH)                                //測(cè)量濕度
{
        unsigned char bei=0x80;
        DATA=1;
        SCK=0;        //下面可以開(kāi)始
        for(i=8;i>0;i--)
        {
                if(GETRH&bei)
                {
                        DATA=1;
                        SCK=1;
                        SCK=0;
                }
                else
                {
                        DATA=0;
                        SCK=1;
                        SCK=0;
                }
                bei=bei/2;
        }
}
//對(duì)SHT11進(jìn)行讀操作
void READSHT11()                                                
{
        unsigned char temp;
        RH_H=0;
        RH_L=0;
        for(i=0;i<4;i++)        //4個(gè)脈沖沒(méi)數(shù)據(jù)
        {
                SCK=1;
                SCK=0;
        }
        for(i=4;i>0;i--)        //接收RH高4位數(shù)據(jù)
        {
                SCK=1;
                temp=0x01;
                if(DATA==1)
                {
                        temp=(temp<<(i-1));        //右移動(dòng)
                        RH_H=RH_H+temp;        
                }
                SCK=0;
        }
        DATA=0;                                //拉低
        SCK=1;
        SCK=0;
        DATA=1;                                //釋放
        for(i=8;i>0;i--)        //接收RH低4位數(shù)據(jù)
        {
                SCK=1;
                temp=0x01;
                if(DATA==1)
                {
                        temp=(temp<<(i-1));        //右移動(dòng)
                        RH_L=RH_L+temp;        
                }
                SCK=0;
        }
        P1=RH_H;
        P3=RH_L;
        DATA=0;                                //拉低
        SCK=1;
        SCK=0;
        DATA=1;                                //釋放(不做CRC校驗(yàn),就此結(jié)束)
}
//階乘函數(shù)
long FACTORIAL(int n)
{        
        long nn=1;
        for(;n>0;n--)
        {
                nn=10*nn;
        }
        return(nn);
}
//SHT11的補(bǔ)償算法
void COMPENSATIONSHT()                                       
{
        unsigned long ii;
        char m;
        ii=((((RH_H*256+RH_L)-221)*318878)/100000);

        if(ii>5000)
        {
                ii=ii+((10000-ii)*620/5000);
        }
        else
        {
                ii=ii+ii*620/5000;
        }
//  printf("%f\n",ii);
        for(m=4;m>=0;m--)
        {
                if(m==1)
                {
                        write_DATA(".*");
                }
                LCD_RS=1;
                P0=(int)(ii/FACTORIAL(m))+0x30;
                if(m==4&P0==0x30)
                {
                        P0=0x20;
                }
                if(m==4&P0==0x31)
                {
                        write_DATA("100.00*");
                        break;
                }
                if(m==3&P0==0x30)
                {
                        P0=0x20;
                }
                delay(5);
                LCD_EN=1;
                delay(5);
                LCD_EN=0;
                ii=ii-((int)(ii/FACTORIAL(m)))*FACTORIAL(m);
        }
        write_DATA("%*");
}

void InitUart(void)
{
        SCON = 0x50;                                  //工作方式1
        TMOD = 0x21;
        PCON = 0x00;
        TH1 = 0xfd;                                   //使用T1作為波特率發(fā)生器
        TL1 = 0xfd;
        TI = 1;
        TR1 = 1;                                      //啟動(dòng)T1                                                //啟動(dòng)T1  
}
void main()
{                  
        init();
  InitUart();
        write_GETRH(0x80+0x03);                        //放第一行字符的位置
        write_DATA("Humidity*");
        write_GETRH(0x80+0x42);                        //放第二行字符的位置
        write_DATA("%RH*");
        while(1)
        {
                nSCKPulse(10);                                //復(fù)位
                STARTSHT11();                                //啟動(dòng)
                GETRH(0x05);                                //測(cè)濕度命令
                SCK=1;
                while(DATA);                        //ack為低成功,繼續(xù)
                SCK=0;                                        //一直都為低
                DATA=1;
                while(DATA);                        //等待300毫秒
                READSHT11();
                write_GETRH(0x80+0x47);        //放第二行字符的位置
                COMPENSATIONSHT();                                //數(shù)值轉(zhuǎn)換+顯示
    putchar(0x02);
        }
}

全部資料51hei下載地址:
基于51單片機(jī)和Proteus仿真的遠(yuǎn)程倉(cāng)庫(kù)濕度監(jiān)測(cè)系統(tǒng).zip (67.69 KB, 下載次數(shù): 26)
回復(fù)

使用道具 舉報(bào)

ID:47652 發(fā)表于 2019-5-11 08:09 | 顯示全部樓層
謝謝LZ的分享!收藏
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 综合色播 | 亚洲小说图片 | 中文字幕一区二区三区四区 | 一本在线 | 国产在线中文字幕 | 国产精品高潮呻吟久久久久 | 成人久久久 | 911网站大全在线观看 | 国产在线一区二区 | 日韩a在线观看 | 亚洲精品视频久久 | 中文字幕国产高清 | 亚洲成人av在线播放 | 亚洲欧美一区二区三区国产精品 | 91视频88av | 91一区二区在线观看 | 97色在线视频 | 欧美三级在线 | 福利精品在线观看 | 亚洲成人av一区二区 | 日韩一区二区av | 成人在线中文字幕 | 一区二区三区中文字幕 | 国产高清视频在线观看播放 | 国产一区不卡在线观看 | 中文字幕成人在线 | 欧美日韩一区二区在线观看 | 午夜三区| 色狠狠一区 | 91porn在线观看 | 久久蜜桃资源一区二区老牛 | 亚洲在线一区二区 | a黄视频 | 久热爱| 日本二区在线观看 | 国产成人综合在线 | 国产激情在线观看 | 成人久草 | 国产精品毛片无码 | 久久久区 | 一区二区三区久久 |