目录
- 基于51单片机的智能灌溉系统
- 一、原理图
- 二、部分代码
- 三、视频演示
基于51单片机的智能灌溉系统
功能:
1.通过LCD屏幕显示光照强度、土壤湿度以及温度
2.通过按键调整手自动模式、手动模式下可手动打开灌溉
3.若温湿度不在范围内,实现报警功能
4.通过串口助手模拟输出
一、原理图
二、部分代码
#include <reg51.h>
#include "lcd.h"
#include "adc.h"
#include "stdio.h"
#include "hardware.h"
#include "ds18b201.h"unsigned char add1 = 0;//ADC0832 采集两路AD add1是第一路 add2是第二路 范围是0-255
unsigned char add2 = 0;unsigned char buffer3[24];//这是一个待发送字符串的存放数组
extern unsigned char sdata1;//温度存放的变量
extern unsigned char add11;//0-255 转化为 0-99 第一路ADC
extern unsigned char add22;//0-255 转化为 0-99 第二路ADC//串口初始化,设置波特率为9600,使用定时器1,晶振频率为11.0592 -> 串口发送
void Uart_Init(void)
{TMOD |=0x20;/*定时器1工作于模式2,8位自动重装入定时器*/TL1=0xfd;/*晶振为11.0592MHz时,设置波特率为9600bps*/TH1=0xfd;/*晶振为11.0592MHz时,设置波特率为9600bps*/TR1=1;/*启动定时器1*/SCON=0x40;/*UART工作于方式1,8位波特率可变串口,不允许接收*/PCON=0x00;/*波特率不加倍*/
}void Send_String(unsigned char * p)//串口发送字符串函数
{unsigned char index=0;do{SBUF=p[index++];while(TI == 0);TI= 0;}while(p[index]!=0);
}void main()
{LcdInit();//LCD初始化Uart_Init();//串口初始化Buzzer_Off();//关闭蜂鸣器Motor_Stop();//关闭电机while(1){Scan();//按键扫描LcdShow();//LCD显示Control();//蜂鸣器 电机控制ReadTemperature1();//温度获取add1 = Adc0832(0);//光照获取 0-99add2 = Adc0832(1);//土壤湿度获取 -99%//串口发送函数 把数据格式化进buffer3这个字符串 然后直接发送buffer3这个字符串sprintf(buffer3, "T:%bd L:%bd H:%bd\r\n", sdata1, add11, add22);Send_String(buffer3);}
}
三、视频演示
哔哩哔哩视频演示链接跳转,请直接点击!