设计网网站,江西省网站建设先进表彰,wordpress手机端图片不显示,什么是电子商务模式1.功能描述 首先使用DS18B20#xff0c;测量土壤温度#xff0c;并显示在OLED屏幕左边。然后使用土壤湿度传感器测量土壤湿度#xff0c;因为这个传感器输出的值是模拟量#xff0c;所以需要使用AD转换模块。本次使用ADC0832#xff0c;这是一个8位精度的AD转换模块#…1.功能描述 首先使用DS18B20测量土壤温度并显示在OLED屏幕左边。然后使用土壤湿度传感器测量土壤湿度因为这个传感器输出的值是模拟量所以需要使用AD转换模块。本次使用ADC0832这是一个8位精度的AD转换模块将土壤湿度传感器输出的模拟量转换为数字量并送给单片机读取。因为AD的精度为8位所以转换得到的数字量的范围是0-255.用这个数据量除以256再乘以100就可以得到湿度的百分数0%-%100。测出的土壤湿度数据显示在OLED第一行右边。 然后使用DHT11模块测空气温度、空气湿度分别显示在OLED左边、右边。 最后系统定义了一个空气温度阈值显示在屏幕第三行。如果检测到空气温度大于阈值那么蜂鸣器响风扇打开。否则蜂鸣器不响风扇关。系统还定义了一个土壤湿度阈值如果检测到的土壤湿度阈值低于此阈值那么打开水泵。 /* 接线 DHT11-DAT-----P2.0 DS18B20-DAT-----P3.7 OLED-SCL-----P1.4 OLED-SDA-----P1.3 蜂鸣器----P1.5 风扇----P2.6 水泵-----P2.7 ADC0832-CS----P1.0 ADC0832-CLK----P1.1 ADC0832-DAT----P1.2 土壤湿度传感器的模拟输出口---ADC0832的CH0 L298N需要额外供电也就是需要另一个电源。 接线方式 L298N的电源端 12V接 12V/5V GND接GND L298N的IN1----P2.6 IN2 不接 IN3----P2.7 IN4 不接 L298N左边输出端接风扇 右边输出端接水泵 */ 2.实物图 3.课题意义 基于51单片机的大棚环境监测系统具有以下几个重要的课题意义 1. 提高大棚种植效率大棚是一种封闭式的种植环境通过监测和控制关键参数如温度、湿度、光照等可以优化植物生长环境提高种植效率。通过51单片机实时监测环境参数并作出反应可以及时调整大棚内部的光照、通风、加热等设备创造适宜的生长环境提高植物的生长速度和产量。 2. 降低资源消耗大棚环境监测系统可以实时监测大棚内部环境的温度、湿度等参数并根据监测结果自动调整灌溉、通风等设备的运行状态从而避免资源的浪费和能源的过度消耗。这样不仅能节约水和电还有助于减少农药的使用对环境保护起到积极的作用。 3. 提高农作物质量和口感通过大棚环境监测系统可以及时掌握大棚内部环境的变化并实时调整环境参数为农作物提供最适宜的生长环境。这样可以提高农作物的质量和口感使其在市场上具有竞争力。 4. 实现智能化管理大棚环境监测系统可以利用51单片机作为中央控制单元通过传感器收集大棚内部的环境数据并将数据发送到中央控制单元进行处理和分析。通过网络连接可以实现对大棚环境的远程监控和控制实现智能化管理提高农作物的管理水平和生产效益。 综上所述基于51单片机的大棚环境监测系统的课题意义在于提高大棚种植效率降低资源消耗提高农作物质量和口感实现智能化管理。这对于推动农业的可持续发展和提高农民收入具有重要的意义。 4.代码
整个工程的结构如下 main.c的代码如下
#include reg51.h
#include oled.h
#include DHT11.h
#include delay.h
#include temp.h
#include adc0832.h/*接线DHT11-DAT-----P2.0DS18B20-DAT-----P3.7OLED-SCL-----P1.4OLED-SDA-----P1.3蜂鸣器----P1.5风扇----P2.6水泵-----P2.7ADC0832-CS----P1.0ADC0832-CLK----P1.1ADC0832-DAT----P1.2土壤湿度传感器的模拟输出口---ADC0832的CH0L298N需要额外供电也就是需要另一个电源。接线方式L298N的电源端 12V接 12V/5V GND接GNDL298N的IN1----P2.6IN2 不接IN3----P2.7IN4 不接L298N左边输出端接风扇右边输出端接水泵
*/sbit beepP1^5; //蜂鸣器sbit fengshanP2^6; //风扇控制引脚
sbit shuibengP2^7; //水泵控制引脚extern uchar temp; //温度
extern uchar humi; //湿度int t0; //在定时器中记录1S时间int wendu_yuzhi30; //空气温度阈值 大于此阈值 开风扇 低于 关
int turang_yuzhi20; //土壤湿度阈值 小于此阈值 开水泵 大于 关int datapros(int temp)
{float tp; if(temp 0) //当温度值为负数{//因为读取的温度是实际温度的补码所以减1再取反求出原码temptemp-1;temp~temp;tptemp;temptp*0.0625*1000.5; //留两个小数点就*1000.5是四舍五入因为C语言浮点数转换为整型的时候把小数点//后面的数自动去掉不管是否大于0.5而0.5之后大于0.5的就是进1了小于0.5的就//算加上0.5还是在小数点后面。}else{ tptemp;//因为数据处理有小数点所以将温度赋给一个浮点型变量//如果温度是正的那么那么正数的原码就是补码它本身temptp*0.0625*1000.5; //留两个小数点就*1000.5是四舍五入因为C语言浮点数转换为整型的时候把小数点//后面的数自动去掉不管是否大于0.5而0.5之后大于0.5的就是进1了小于0.5的就//算加上0.5还是在小数点后面。}return temp;
}void Int0Init() //定时器初始化
{ TMOD0X01; //定时器工作在方式1下即16位定时器TH0(65536-50000)/256;TL0(65536-50000)%256; TR01; //打开定时器0ET01; //使能定时器0EA1; //打开总中断}main()
{ int turang_tempe0; //土壤温度数据int turang_humi0; //土壤湿度数据OLED_Init(); //初始化OLED OLED_Clear();Int0Init() ; while(1){turang_tempedatapros(Ds18b20ReadTemp())/100; //数据处理函数 处理温度数据 turang_humi100-(read_ad(0)/256.0)*100; //获取土壤湿度数据OLED_ShowString(3*8,0,T:,16);OLED_ShowNum(5*8,0,turang_tempe,3,16); //显示土壤温度OLED_ShowString(10*8,0,H:,16); OLED_ShowNum(12*8,0,turang_humi,3,16); //土壤湿度OLED_ShowString(3*8,2,T:,16); OLED_ShowNum(5*8,2,temp,2,16); //空气温度OLED_ShowString(10*8,2,H:,16); OLED_ShowNum(12*8,2,humi,2,16); //空气湿度//显示空气温度阈值OLED_ShowString(3*8,4,T_Y:,16);OLED_ShowNum(7*8,4,wendu_yuzhi,3,16); //显示土壤湿度阈值OLED_ShowString(3*8,6,S_Y:,16);OLED_ShowNum(7*8,6,turang_yuzhi,3,16); if(tempwendu_yuzhi) //如果空气温度大于空气温度阈值 那么蜂鸣器响 风扇开{beep1;fengshan1;}else //否则 蜂鸣器不响 风扇关{beep0;fengshan0;}if(turang_humiturang_yuzhi) //如果土壤湿度小于土壤湿度阈值 那么开水泵{shuibeng1;}else{shuibeng0;}Delay(180); //延时180ms}
}void time0() interrupt 1 //定时器0的中断服务函数
{ t; //t为20时计数满1sif(t20){receive(); // 检测温湿度数据 t0; } TH0(65536-50000)/256;TL0(65536-50000)%256; //重新给定时器赋值} 5.完整工程 具体实现过程就不介绍了需要完整项目工程的可以私信我