Discuz! Board

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 3439|回复: 11

20电信本3李广选组,大棚环境监测系统

[复制链接]

1

主题

8

帖子

43

积分

新手上路

Rank: 1

积分
43
发表于 2022-11-3 13:18:04 | 显示全部楼层 |阅读模式
  1. 操作人:李广选,胡程岳[code]
复制代码


#include <reg52.h>
// #include  <math.h>
#include <intrins.h>
#include <stdio.h>
#include <string.h>

#define uchar unsigned char
#define uint unsigned int
#define   Data_0_time    4
typedef unsigned char  U8;       /* defined for unsigned 8-bits integer variable           ???8?????  */
typedef signed   char  S8;       /* defined for signed 8-bits integer variable                  ???8?????  */
typedef unsigned int   U16;      /* defined for unsigned 16-bits integer variable           ???16????? */
typedef signed   int   S16;      /* defined for signed 16-bits integer variable           ???16????? */
typedef unsigned long  U32;      /* defined for unsigned 32-bits integer variable           ???32????? */
typedef signed   long  S32;      /* defined for signed 32-bits integer variable           ???32????? */
typedef float          F32;      /* single precision floating point variable (32bits) ??????(32???) */
typedef double         F64;      /* double precision floating point variable (64bits) ??????(64???) */
#define          SlaveAddress   0x46
typedef   unsigned char BYTE;
typedef   unsigned short WORD;
BYTE    BUF[8];                         //???????             
int     dis_data;                       //??
void delay_nms(unsigned int k);
//void InitLcd();
void Init_BH1750(void);

void WriteDataLCM(uchar dataW);
void WriteCommandLCM(uchar CMD,uchar Attribc);
void DisplayOneChar(uchar X,uchar Y,uchar DData);
void conversion(uint temp_data);

void  Single_Write_BH1750(uchar REG_Address);               //??????
uchar Single_Read_BH1750(uchar REG_Address);                //???????????
void  Multiple_Read_BH1750();                               //????????????
//------------------------------------
void Delay5us();
void Delay5ms();
void BH1750_Start();                    //????
void BH1750_Stop();                     //????
void BH1750_SendACK(bit ack);           //??ACK
bit  BH1750_RecvACK();                  //?ack
void BH1750_SendByte(BYTE dat);         //IIC?????
BYTE BH1750_RecvByte();                 //IIC?????

sbit RS = P2^6;
sbit RW = P2^5;
sbit EN = P2^7;
sbit LED1=P2^0;
sbit LED2=P2^1;
sbit LED3=P2^2;
sbit LED4=P2^3;
sbit LED5=P2^4;

sbit Data=P3^6;   //?????
uchar rec_dat[9];

sbit KEY=P3^1;
sbit KEY1=P3^2;
sbit          SCL=P1^0;      //IIC??????
sbit          SDA=P1^1;      //IIC??????
sbit MOTO1=P1^3;
sbit MOTO2=P1^2;
int t=0;
int t2=0;
sbit DEEP=P1^0;
uchar code table1[] = {"hello,world!"};
uchar code table2[] = {"0123456789"};
U8  U8FLAG,k;
U8  U8count,U8temp;
U8  U8T_data_H,U8T_data_L,U8RH_data_H,U8RH_data_L,U8checkdata;
U8  U8T_data_H_temp,U8T_data_L_temp,U8RH_data_H_temp,U8RH_data_L_temp,U8checkdata_temp;
U8  U8comdata;
U8  outdata[5];  //????????          
U8  indata[5];
U8  count, count_r=0;
U8  str[5]={"RS232"};
U16 U16temp1,U16temp2;
unsigned char stat2=0;
unsigned char stat3=0;
unsigned char stat4=0;
unsigned char stat5=0;
unsigned char stat6=0;
unsigned char stat7=0;
unsigned char ttt1;
unsigned char ttt2;

void delay(uint time);
void init_1602(void);
void writecmd(uint cmd);
void writedata(uchar dat);
void display(uchar len,uchar* table);


void delay(uint time)
{
  unsigned char a,b,i;
  for(i=time;i!=0;i--)
  {
        for(b=199;b>0;b--)
        {
          for(a=1;a>0;a--);       
        }               
  }  
}
void delay3(unsigned int t)
{
        while(t--);
}
//void datapros()
//{
// unsigned char i;
//        i++;
//        delay3(10);
//        if(i==50)
//        {
//                i=0;
//                light = Read_AD_Data(0xA4);                //   AIN2 ????
//                if(light>50)
//                {
//                        LED2=0;
//                }
//                else
//                {
//                        LED2=1;
//                }
//        }
//}
void Delay1ms()                //@11.0592MHz
{
        unsigned char i, j;

        _nop_();
        _nop_();
        _nop_();
        i = 11;
        j = 190;
        do
        {
                while (--j);
        } while (--i);
}
void shi()
{
        t++;
        delay(50);
        if(t>60)
        {
                t=0;
        }
}
void shi2()
{
        t2++;
        delay(50);
        if(t2>16)
        {
                t2=17;
        }
}
void writecmd(uint cmd)
        {
        RS = 0;
        RW = 0;
        P0 = cmd;
        EN = 1;
        delay(1);
        EN = 0;
        /*
        P1 = (cmd & 0x0f) << 4;
        EN = 1;
        delay(1);
        EN = 0;*/
}

void writedata(uchar dat)
{
  RS = 1;
  RW = 0;
  P0 = dat;
  EN = 1;
  delay(1);
  EN = 0;       
        /*
        P1 = (dat & 0x0f) << 4;
  EN = 1;
  delay(1);
  EN = 0;*/
}

//void display(uchar len,uchar* table)
//        {
//        uchar i;
//        for(i=0;i<len;i++)
//        {
//          writedata(table);       
//        }
//        delay(5);
//}
void init_1602(void){
  delay(15);
//¡wwritecmd(0x33);
//        writecmd(0x32);
  writecmd(0x38); //mode set
  writecmd(0x0c); //display set
  writecmd(0x06);  //display mode
  writecmd(0x01); //clear display
}
void show_char(unsigned char line,unsigned char colu,unsigned char date)//dan zi fu
{
        if(line==1)
        {
                writecmd(0x80|(colu-1));
        }
        else
        {
                writecmd(0x80|(colu-1)+0x40);
        }
        writedata(date);
}
void show_chuang(unsigned char line,unsigned char colu,unsigned char chuan[])//zi fu chuan
{
        unsigned char i;
        if(line==1)
        {
                writecmd(0x80|(colu-1));
        }
        else
        {
                writecmd(0x80|(colu-1)+0x40);
        }
        for(i=0;chuan!=0;i++)
        {
                writedata(chuan);
        }
}
int pow(int x,int y)
{
  unsigned char i;
        int result=1;
        for(i=0;i<y;i++)
        {
                result*=x;
        }
        return result;
       
}
void show_number(unsigned char line,unsigned char colu,unsigned int num,unsigned char length)
{
        unsigned char i;
        if(line==1)
        {
                writecmd(0x80|(colu-1));
        }
        else
        {
                writecmd(0x80|(colu-1)+0x40);
        }
        for(i=length;i>0;i--)
        {
                writedata(0x30+num/pow(10,i-1)%10);
        }
}

void show_fu(unsigned char line,unsigned char colu,int num,char length)//fu hao
{
        unsigned char i;
        unsigned int num1;
        if(line==1)
        {
                writecmd(0x80|(colu-1));
        }
        else
        {
                writecmd(0x80|(colu-1)+0x40);
        }
        if(num>=0)
        {
                writedata('+');
                num1=num;
        }
        else
        {
                writedata('-');
                num1=-num;
        }       
   for(i=length;i>0;i--)
        {
                writedata(0x30+num1/pow(10,i-1)%10);
        }
}

void show_hex(unsigned char line,unsigned char colu,unsigned int num,unsigned char length);
void DHT11_delay_us(uchar n)
{
    while(--n);
}

void DHT11_delay_ms(uint z)
{
   uint i,j;
   for(i=z;i>0;i--)
      for(j=110;j>0;j--);
}

void DHT11_start()
{
   Data=1;
   DHT11_delay_us(2);
   Data=0;
   DHT11_delay_ms(20);   //??18ms??
   Data=1;
   DHT11_delay_us(30);
}

uchar DHT11_rec_byte()      //??????
{
   uchar i,dat=0;
  for(i=0;i<8;i++)    //????????8???
   {         
      while(!Data);   
      DHT11_delay_us(8);     //??60us,?????????1,???0
      dat<<=1;           //???????8???,???0?????
      if(Data==1)    //???1?,?dat?1?????1
         dat+=1;
      while(Data);  //???????   
    }  
    return dat;
}

void DHT11_receive()      //??40????
{
    uchar R_H,R_L,T_H,T_L,RH,RL,TH,TL,revise;
    DHT11_start();
    if(Data==0)
    {
        while(Data==0);   //????     
        DHT11_delay_us(40);  //?????80us
        R_H=DHT11_rec_byte();    //???????  
        R_L=DHT11_rec_byte();    //???????  
        T_H=DHT11_rec_byte();    //???????  
        T_L=DHT11_rec_byte();    //???????
        revise=DHT11_rec_byte(); //?????

        DHT11_delay_us(25);    //??

        if((R_H+R_L+T_H+T_L)==revise)      //??
        {
            RH=R_H;
            RL=R_L;
            TH=T_H;
            TL=T_L;
        }
        /*????,????*/
        rec_dat[0]=(RH/10);
        rec_dat[1]=(RH%10);
        rec_dat[2]='R';
        rec_dat[3]='H';
        rec_dat[4]=' ';
        rec_dat[5]=' ';
        rec_dat[6]=(TH/10);
        rec_dat[7]=(TH%10);
        rec_dat[8]='C';
                                ttt1=RH;
                                ttt2=TH;
    }
}
        void anjian()
        {
                float temp;
                if(KEY==0)
                {
                        delay3(10);
                        if(KEY==0)
                        {
                                LED2=1;
                                show_chuang(1,11,"daily");
                                while(KEY==0)
                                {
                                        shi2();
                 if(t2<=15)
                 {
                         LED1=1;
                 show_chuang(1,1,"welcome to use");
           writecmd(0x18);
           delay(50);
                 }
                 if(t2==16)
                 {
                         LED1=0;
                          Single_Write_BH1750(0x01);   // power on
    Single_Write_BH1750(0x10);   // H- resolution mode

     delay_nms(180);              //??180ms

    Multiple_Read_BH1750();       //??????,???BUF?

    dis_data=BUF[0];
    dis_data=(dis_data<<8)+BUF[1];//????
   
    temp=(float)dis_data/1.2;
                         init_1602();
                         DHT11_delay_ms(1500);    //DHT11??????1S????????????????????
       DHT11_receive();
                         writecmd(0x80);
                          delay(5);
                 }
                 if(t2>16)
                 {
                         LED1=0;
                          Single_Write_BH1750(0x01);   // power on
    Single_Write_BH1750(0x10);   // H- resolution mode

     delay_nms(180);              //??180ms

    Multiple_Read_BH1750();       //??????,???BUF?

    dis_data=BUF[0];
    dis_data=(dis_data<<8)+BUF[1];//????
   
    temp=(float)dis_data/1.2;
                         DHT11_delay_ms(1500);    //DHT11??????1S????????????????????
       DHT11_receive();
                         writecmd(0x80);
                         show_chuang(1,1,"hum");
                         show_number(2,1,rec_dat[0],1);
                         show_number(2,2,rec_dat[1],1);
//                         show_char(2,3,'.');
//                         show_number(2,4,U8RH_data_L,2);
                         show_char(2,3,'%');
                         show_chuang(1,5,"temp");
                         show_number(2,5,rec_dat[6],1);
                         show_number(2,6,rec_dat[7],1);
//                         show_char(2,10,'.');
//                         show_number(2,11,U8T_data_L,2);
                         show_char(2,7,0xdf);
             show_char(2,8,'C');
                         show_number(2,10,temp,5);
                         show_char(2,16,'l');
                 }
                                }
                                LED2=0;
                                 show_chuang(1,11,"night");
                                shi2();
                 if(t2<=15)
                 {
                         LED1=1;
                 show_chuang(1,1,"welcome to use");
           writecmd(0x18);
           delay(50);
                 }
                 if(t2==16)
                 {
                         LED1=0;
                          Single_Write_BH1750(0x01);   // power on
    Single_Write_BH1750(0x10);   // H- resolution mode

     delay_nms(180);              //??180ms

  
       

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

399

主题

1251

帖子

4020

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4020
发表于 2022-11-4 23:10:27 | 显示全部楼层
结果看着不错,但是代码贴乱了,附上keil工程的打包文件吧
回复

使用道具 举报

1

主题

8

帖子

43

积分

新手上路

Rank: 1

积分
43
 楼主| 发表于 2022-11-9 12:01:14 | 显示全部楼层
程序文件

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

1

主题

8

帖子

43

积分

新手上路

Rank: 1

积分
43
 楼主| 发表于 2022-11-10 19:26:10 | 显示全部楼层
设计论文

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

399

主题

1251

帖子

4020

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4020
发表于 2022-11-24 15:21:04 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

1

主题

8

帖子

43

积分

新手上路

Rank: 1

积分
43
 楼主| 发表于 2022-11-24 16:54:43 | 显示全部楼层
实验报告修改

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

399

主题

1251

帖子

4020

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4020
发表于 2022-11-24 21:54:31 | 显示全部楼层
最大的问题就是图片的标号混乱,看看我的置顶帖,再改一版

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

1

主题

8

帖子

43

积分

新手上路

Rank: 1

积分
43
 楼主| 发表于 2022-11-24 23:04:48 | 显示全部楼层
报告修改

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

1

主题

8

帖子

43

积分

新手上路

Rank: 1

积分
43
 楼主| 发表于 2022-11-24 23:09:05 | 显示全部楼层
实验报告最终版

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

399

主题

1251

帖子

4020

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4020
发表于 2022-11-24 23:17:47 | 显示全部楼层
可以了,可以打印了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|DiscuzX

GMT+8, 2025-6-8 16:47 , Processed in 0.046665 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表