首页 > 分享 > 土壤湿度传感器的原理及驱动

土壤湿度传感器的原理及驱动

一、介绍

1.表面采用镀镍处理,有加宽的感应面积,可以提高导电性能,防止接触土壤容易生锈的问题,延长使用寿命;
2.可以宽范围控制土壤的湿度,通过电位器调节控制相应阀值,湿度低于设定值时,DO输出高电平,高于设定值时,DO输出低电平;3.比较器采用LM393芯片,工作稳定
4.工作电压3.3V-5V

 

二、用途

通过电位器调节土壤湿度控制阀值,可以自动对莱园,花园自动浇水,家庭花盆土壤湿度的控制,各种电子比赛,电子积木,arduino设计等。

三、模块使用说明:
1.传感器适用于土壤的湿度检测;
⒉模块中蓝色的电位器是用于土壤湿度的阀值调节,顺时针调节,控制的湿度会越大,逆时针越小;
3.数字量输出DO可以与单片机直接相连,通过单片机来检测高低电平,由此来检测土壤湿度;
4小板模拟量输出AO可以和AD模块相连,通过AD转换,可以获得土壤湿度更精确的数值;

四、接线说明(4线制):

1 VCC外接3.3V-5V
2 GND外接GND
3 DO小板数字量输出接口(0和1)4AO小板电压模拟量输出

五、驱动程序

1、51单片机测试程序

#include <reg52.h>

unsigned char date;

#define uchar unsigned char

#define uint unsigned int

sbit key1=P0^1;

void delay(uint z);

void Initial_com(void);

void delay(uint z)

{

uint i,j;

for(i=z;i>0;i--)

for(j=110;j>0;j--);

}

void Initial_com(void)

{

EA=1;

ES=1;

ET1=1;

TMOD=0x20;

PCON=0x00;

SCON=0x50;

TH1=0xfd;

TL1=0xfd;

TR1=1;

}

main()

{

Initial_com();

while(1)

{

if(key1==0)

{

delay();

if(key1==0)

{

SBUF=0X01;

delay(200);

}

}

if(RI)

{

date=SBUF;

SBUF=date;

RI=0;

}

}

}

2、32单片机测试程序(ADC采集)

AD.c

#include "stm32f10x.h"

void AD_Init(void)

{

RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);

RCC_ADCCLKConfig(RCC_PCLK2_Div6);

GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_Init(GPIOA, &GPIO_InitStructure);

ADC_RegularChannelConfig(ADC1, ADC_Channel_0, 1, ADC_SampleTime_55Cycles5);

ADC_InitTypeDef ADC_InitStructure;

ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;

ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;

ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;

ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;

ADC_InitStructure.ADC_ScanConvMode = DISABLE;

ADC_InitStructure.ADC_NbrOfChannel = 1;

ADC_Init(ADC1, &ADC_InitStructure);

ADC_Cmd(ADC1, ENABLE);

ADC_ResetCalibration(ADC1);

while (ADC_GetResetCalibrationStatus(ADC1) == SET);

ADC_StartCalibration(ADC1);

while (ADC_GetCalibrationStatus(ADC1) == SET);

}

uint16_t AD_GetValue(void)

{

ADC_SoftwareStartConvCmd(ADC1, ENABLE);

while (ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);

return ADC_GetConversionValue(ADC1);

}

AD.h

#ifndef __AD_H

#define __AD_H

void AD_Init(void);

uint16_t AD_GetValue(void);

#endif

OLED.C

#include "stm32f10x.h"

#include "OLED_Font.h"

#define OLED_W_SCL(x)GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(x))

#define OLED_W_SDA(x)GPIO_WriteBit(GPIOB, GPIO_Pin_9, (BitAction)(x))

void OLED_I2C_Init(void)

{

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

GPIO_InitTypeDef GPIO_InitStructure;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;

GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;

GPIO_Init(GPIOB, &GPIO_InitStructure);

OLED_W_SCL(1);

OLED_W_SDA(1);

}

void OLED_I2C_Start(void)

{

OLED_W_SDA(1);

OLED_W_SCL(1);

OLED_W_SDA(0);

OLED_W_SCL(0);

}

void OLED_I2C_Stop(void)

{

OLED_W_SDA(0);

OLED_W_SCL(1);

OLED_W_SDA(1);

}

void OLED_I2C_SendByte(uint8_t Byte)

{

uint8_t i;

for (i = 0; i < 8; i++)

{

OLED_W_SDA(Byte & (0x80 >> i));

OLED_W_SCL(1);

OLED_W_SCL(0);

}

OLED_W_SCL(1);

OLED_W_SCL(0);

}

void OLED_WriteCommand(uint8_t Command)

{

OLED_I2C_Start();

OLED_I2C_SendByte(0x78);

OLED_I2C_SendByte(0x00);

OLED_I2C_SendByte(Command);

OLED_I2C_Stop();

}

void OLED_WriteData(uint8_t Data)

{

OLED_I2C_Start();

OLED_I2C_SendByte(0x78);

OLED_I2C_SendByte(0x40);

OLED_I2C_SendByte(Data);

OLED_I2C_Stop();

}

void OLED_SetCursor(uint8_t Y, uint8_t X)

{

OLED_WriteCommand(0xB0 | Y);

OLED_WriteCommand(0x10 | ((X & 0xF0) >> 4));

OLED_WriteCommand(0x00 | (X & 0x0F));

}

void OLED_Clear(void)

{

uint8_t i, j;

for (j = 0; j < 8; j++)

{

OLED_SetCursor(j, 0);

for(i = 0; i < 128; i++)

{

OLED_WriteData(0x00);

}

}

}

void OLED_ShowChar(uint8_t Line, uint8_t Column, char Char)

{

uint8_t i;

OLED_SetCursor((Line - 1) * 2, (Column - 1) * 8);

for (i = 0; i < 8; i++)

{

OLED_WriteData(OLED_F8x16[Char - ' '][i]);

}

OLED_SetCursor((Line - 1) * 2 + 1, (Column - 1) * 8);

for (i = 0; i < 8; i++)

{

OLED_WriteData(OLED_F8x16[Char - ' '][i + 8]);

}

}

void OLED_ShowString(uint8_t Line, uint8_t Column, char *String)

{

uint8_t i;

for (i = 0; String[i] != ''; i++)

{

OLED_ShowChar(Line, Column + i, String[i]);

}

}

uint32_t OLED_Pow(uint32_t X, uint32_t Y)

{

uint32_t Result = 1;

while (Y--)

{

Result *= X;

}

return Result;

}

void OLED_ShowNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length)

{

uint8_t i;

for (i = 0; i < Length; i++)

{

OLED_ShowChar(Line, Column + i, Number / OLED_Pow(10, Length - i - 1) % 10 + '0');

}

}

void OLED_ShowSignedNum(uint8_t Line, uint8_t Column, int32_t Number, uint8_t Length)

{

uint8_t i;

uint32_t Number1;

if (Number >= 0)

{

OLED_ShowChar(Line, Column, '+');

Number1 = Number;

}

else

{

OLED_ShowChar(Line, Column, '-');

Number1 = -Number;

}

for (i = 0; i < Length; i++)

{

OLED_ShowChar(Line, Column + i + 1, Number1 / OLED_Pow(10, Length - i - 1) % 10 + '0');

}

}

void OLED_ShowHexNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length)

{

uint8_t i, SingleNumber;

for (i = 0; i < Length; i++)

{

SingleNumber = Number / OLED_Pow(16, Length - i - 1) % 16;

if (SingleNumber < 10)

{

OLED_ShowChar(Line, Column + i, SingleNumber + '0');

}

else

{

OLED_ShowChar(Line, Column + i, SingleNumber - 10 + 'A');

}

}

}

void OLED_ShowBinNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length)

{

uint8_t i;

for (i = 0; i < Length; i++)

{

OLED_ShowChar(Line, Column + i, Number / OLED_Pow(2, Length - i - 1) % 2 + '0');

}

}

void OLED_Init(void)

{

uint32_t i, j;

for (i = 0; i < 1000; i++)

{

for (j = 0; j < 1000; j++);

}

OLED_I2C_Init();

OLED_WriteCommand(0xAE);

OLED_WriteCommand(0xD5);

OLED_WriteCommand(0x80);

OLED_WriteCommand(0xA8);

OLED_WriteCommand(0x3F);

OLED_WriteCommand(0xD3);

OLED_WriteCommand(0x00);

OLED_WriteCommand(0x40);

OLED_WriteCommand(0xA1);

OLED_WriteCommand(0xC8);

OLED_WriteCommand(0xDA);

OLED_WriteCommand(0x12);

OLED_WriteCommand(0x81);

OLED_WriteCommand(0xCF);

OLED_WriteCommand(0xD9);

OLED_WriteCommand(0xF1);

OLED_WriteCommand(0xDB);

OLED_WriteCommand(0x30);

OLED_WriteCommand(0xA4);

OLED_WriteCommand(0xA6);

OLED_WriteCommand(0x8D);

OLED_WriteCommand(0x14);

OLED_WriteCommand(0xAF);

OLED_Clear();

}

 OLED.H

#ifndef __OLED_H

#define __OLED_H

void OLED_Init(void);

void OLED_Clear(void);

void OLED_ShowChar(uint8_t Line, uint8_t Column, char Char);

void OLED_ShowString(uint8_t Line, uint8_t Column, char *String);

void OLED_ShowNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length);

void OLED_ShowSignedNum(uint8_t Line, uint8_t Column, int32_t Number, uint8_t Length);

void OLED_ShowHexNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length);

void OLED_ShowBinNum(uint8_t Line, uint8_t Column, uint32_t Number, uint8_t Length);

#endif

 OLED_Font.h

#ifndef __OLED_FONT_H

#define __OLED_FONT_H

const uint8_t OLED_F8x16[][16]=

{

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,

0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x40,0xC0,0x78,0x40,0xC0,0x78,0x40,0x00,

0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,

0x00,0x70,0x88,0xFC,0x08,0x30,0x00,0x00,

0x00,0x18,0x20,0xFF,0x21,0x1E,0x00,0x00,

0xF0,0x08,0xF0,0x00,0xE0,0x18,0x00,0x00,

0x00,0x21,0x1C,0x03,0x1E,0x21,0x1E,0x00,

0x00,0xF0,0x08,0x88,0x70,0x00,0x00,0x00,

0x1E,0x21,0x23,0x24,0x19,0x27,0x21,0x10,

0x10,0x16,0x0E,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0xE0,0x18,0x04,0x02,0x00,

0x00,0x00,0x00,0x07,0x18,0x20,0x40,0x00,

0x00,0x02,0x04,0x18,0xE0,0x00,0x00,0x00,

0x00,0x40,0x20,0x18,0x07,0x00,0x00,0x00,

0x40,0x40,0x80,0xF0,0x80,0x40,0x40,0x00,

0x02,0x02,0x01,0x0F,0x01,0x02,0x02,0x00,

0x00,0x00,0x00,0xF0,0x00,0x00,0x00,0x00,

0x01,0x01,0x01,0x1F,0x01,0x01,0x01,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x80,0xB0,0x70,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x01,0x01,0x01,0x01,0x01,0x01,0x01,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x80,0x60,0x18,0x04,

0x00,0x60,0x18,0x06,0x01,0x00,0x00,0x00,

0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,

0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,

0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,

0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,

0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,

0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,

0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,

0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,

0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,

0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,

0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,

0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,

0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,

0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,

0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,

0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,

0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,

0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,

0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,

0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,

0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,

0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,

0x00,0x00,0x80,0x60,0x00,0x00,0x00,0x00,

0x00,0x00,0x80,0x40,0x20,0x10,0x08,0x00,

0x00,0x01,0x02,0x04,0x08,0x10,0x20,0x00,

0x40,0x40,0x40,0x40,0x40,0x40,0x40,0x00,

0x04,0x04,0x04,0x04,0x04,0x04,0x04,0x00,

0x00,0x08,0x10,0x20,0x40,0x80,0x00,0x00,

0x00,0x20,0x10,0x08,0x04,0x02,0x01,0x00,

0x00,0x70,0x48,0x08,0x08,0x08,0xF0,0x00,

0x00,0x00,0x00,0x30,0x36,0x01,0x00,0x00,

0xC0,0x30,0xC8,0x28,0xE8,0x10,0xE0,0x00,

0x07,0x18,0x27,0x24,0x23,0x14,0x0B,0x00,

0x00,0x00,0xC0,0x38,0xE0,0x00,0x00,0x00,

0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,

0x08,0xF8,0x88,0x88,0x88,0x70,0x00,0x00,

0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,

0xC0,0x30,0x08,0x08,0x08,0x08,0x38,0x00,

0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,

0x08,0xF8,0x08,0x08,0x08,0x10,0xE0,0x00,

0x20,0x3F,0x20,0x20,0x20,0x10,0x0F,0x00,

0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,

0x20,0x3F,0x20,0x20,0x23,0x20,0x18,0x00,

0x08,0xF8,0x88,0x88,0xE8,0x08,0x10,0x00,

0x20,0x3F,0x20,0x00,0x03,0x00,0x00,0x00,

0xC0,0x30,0x08,0x08,0x08,0x38,0x00,0x00,

0x07,0x18,0x20,0x20,0x22,0x1E,0x02,0x00,

0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,

0x20,0x3F,0x21,0x01,0x01,0x21,0x3F,0x20,

0x00,0x08,0x08,0xF8,0x08,0x08,0x00,0x00,

0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

0x00,0x00,0x08,0x08,0xF8,0x08,0x08,0x00,

0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,0x00,

0x08,0xF8,0x88,0xC0,0x28,0x18,0x08,0x00,

0x20,0x3F,0x20,0x01,0x26,0x38,0x20,0x00,

0x08,0xF8,0x08,0x00,0x00,0x00,0x00,0x00,

0x20,0x3F,0x20,0x20,0x20,0x20,0x30,0x00,

0x08,0xF8,0xF8,0x00,0xF8,0xF8,0x08,0x00,

0x20,0x3F,0x00,0x3F,0x00,0x3F,0x20,0x00,

0x08,0xF8,0x30,0xC0,0x00,0x08,0xF8,0x08,

0x20,0x3F,0x20,0x00,0x07,0x18,0x3F,0x00,

0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,

0x0F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,

0x08,0xF8,0x08,0x08,0x08,0x08,0xF0,0x00,

0x20,0x3F,0x21,0x01,0x01,0x01,0x00,0x00,

0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,

0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,

0x08,0xF8,0x88,0x88,0x88,0x88,0x70,0x00,

0x20,0x3F,0x20,0x00,0x03,0x0C,0x30,0x20,

0x00,0x70,0x88,0x08,0x08,0x08,0x38,0x00,

0x00,0x38,0x20,0x21,0x21,0x22,0x1C,0x00,

0x18,0x08,0x08,0xF8,0x08,0x08,0x18,0x00,

0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,

0x08,0xF8,0x08,0x00,0x00,0x08,0xF8,0x08,

0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,

0x08,0x78,0x88,0x00,0x00,0xC8,0x38,0x08,

0x00,0x00,0x07,0x38,0x0E,0x01,0x00,0x00,

0xF8,0x08,0x00,0xF8,0x00,0x08,0xF8,0x00,

0x03,0x3C,0x07,0x00,0x07,0x3C,0x03,0x00,

0x08,0x18,0x68,0x80,0x80,0x68,0x18,0x08,

0x20,0x30,0x2C,0x03,0x03,0x2C,0x30,0x20,

0x08,0x38,0xC8,0x00,0xC8,0x38,0x08,0x00,

0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x00,

0x10,0x08,0x08,0x08,0xC8,0x38,0x08,0x00,

0x20,0x38,0x26,0x21,0x20,0x20,0x18,0x00,

0x00,0x00,0x00,0xFE,0x02,0x02,0x02,0x00,

0x00,0x00,0x00,0x7F,0x40,0x40,0x40,0x00,

0x00,0x0C,0x30,0xC0,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x01,0x06,0x38,0xC0,0x00,

0x00,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,

0x00,0x40,0x40,0x40,0x7F,0x00,0x00,0x00,

0x00,0x00,0x04,0x02,0x02,0x02,0x04,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,

0x00,0x02,0x02,0x04,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,

0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,

0x08,0xF8,0x00,0x80,0x80,0x00,0x00,0x00,

0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,

0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,

0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,

0x00,0x00,0x00,0x80,0x80,0x88,0xF8,0x00,

0x00,0x0E,0x11,0x20,0x20,0x10,0x3F,0x20,

0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,

0x00,0x1F,0x22,0x22,0x22,0x22,0x13,0x00,

0x00,0x80,0x80,0xF0,0x88,0x88,0x88,0x18,

0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,

0x00,0x6B,0x94,0x94,0x94,0x93,0x60,0x00,

0x08,0xF8,0x00,0x80,0x80,0x80,0x00,0x00,

0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,

0x00,0x80,0x98,0x98,0x00,0x00,0x00,0x00,

0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

0x00,0x00,0x00,0x80,0x98,0x98,0x00,0x00,

0x00,0xC0,0x80,0x80,0x80,0x7F,0x00,0x00,

0x08,0xF8,0x00,0x00,0x80,0x80,0x80,0x00,

0x20,0x3F,0x24,0x02,0x2D,0x30,0x20,0x00,

0x00,0x08,0x08,0xF8,0x00,0x00,0x00,0x00,

0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,

0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x00,

0x20,0x3F,0x20,0x00,0x3F,0x20,0x00,0x3F,

0x80,0x80,0x00,0x80,0x80,0x80,0x00,0x00,

0x20,0x3F,0x21,0x00,0x00,0x20,0x3F,0x20,

0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,

0x00,0x1F,0x20,0x20,0x20,0x20,0x1F,0x00,

0x80,0x80,0x00,0x80,0x80,0x00,0x00,0x00,

0x80,0xFF,0xA1,0x20,0x20,0x11,0x0E,0x00,

0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,

0x00,0x0E,0x11,0x20,0x20,0xA0,0xFF,0x80,

0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x00,

0x20,0x20,0x3F,0x21,0x20,0x00,0x01,0x00,

0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x00,

0x00,0x33,0x24,0x24,0x24,0x24,0x19,0x00,

0x00,0x80,0x80,0xE0,0x80,0x80,0x00,0x00,

0x00,0x00,0x00,0x1F,0x20,0x20,0x00,0x00,

0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x00,

0x00,0x1F,0x20,0x20,0x20,0x10,0x3F,0x20,

0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,

0x00,0x01,0x0E,0x30,0x08,0x06,0x01,0x00,

0x80,0x80,0x00,0x80,0x00,0x80,0x80,0x80,

0x0F,0x30,0x0C,0x03,0x0C,0x30,0x0F,0x00,

0x00,0x80,0x80,0x00,0x80,0x80,0x80,0x00,

0x00,0x20,0x31,0x2E,0x0E,0x31,0x20,0x00,

0x80,0x80,0x80,0x00,0x00,0x80,0x80,0x80,

0x80,0x81,0x8E,0x70,0x18,0x06,0x01,0x00,

0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,

0x00,0x21,0x30,0x2C,0x22,0x21,0x30,0x00,

0x00,0x00,0x00,0x00,0x80,0x7C,0x02,0x02,

0x00,0x00,0x00,0x00,0x00,0x3F,0x40,0x40,

0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,

0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x00,

0x00,0x02,0x02,0x7C,0x80,0x00,0x00,0x00,

0x00,0x40,0x40,0x3F,0x00,0x00,0x00,0x00,

0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,

0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

};

#endif

Delay.c

#include "stm32f10x.h"

void Delay_us(uint32_t xus)

{

SysTick->LOAD = 72 * xus;

SysTick->VAL = 0x00;

SysTick->CTRL = 0x00000005;

while(!(SysTick->CTRL & 0x00010000));

SysTick->CTRL = 0x00000004;

}

void Delay_ms(uint32_t xms)

{

while(xms--)

{

Delay_us(1000);

}

}

void Delay_s(uint32_t xs)

{

while(xs--)

{

Delay_ms(1000);

}

}

Delay.h 

#ifndef __DELAY_H

#define __DELAY_H

void Delay_us(uint32_t us);

void Delay_ms(uint32_t ms);

void Delay_s(uint32_t s);

#endif

 main.c

#include "stm32f10x.h"

#include "Delay.h"

#include "OLED.h"

#include "AD.h"

uint16_t ADValue;

float Voltage;

int main(void)

{

OLED_Init();

AD_Init();

OLED_ShowString(1, 1, "ADValue:");

OLED_ShowString(2, 1, "Volatge:0.00V");

while (1)

{

ADValue = AD_GetValue();

Voltage = (float)ADValue / 4095 * 3.3;

OLED_ShowNum(1, 9, ADValue, 4);

OLED_ShowNum(2, 9, Voltage, 1);

OLED_ShowNum(2, 11, (uint16_t)(Voltage * 100) % 100, 2);

Delay_ms(100);

}

}

考虑到一些读者需要相关资料和解决一些疑问,因此我新建立了一个学习交流群,我在群文件里上传了一些资料,需要的读者可以入群下载。

群中文件资料我会时常更新,主要资料是51单片机开发、32单片机开发、编程、嵌入式学习、算法控制等。

由于群中文件还在不断更新上传,有些方面的资料还不太完善,希望大家理解。若群中涉及违规行为,欢迎举报!

相关知识

土壤湿度实时监控:土壤墒情监测仪的工作原理及优势
土壤湿度传感器资讯
土壤湿度传感器的应用
一种花盆用土壤湿度传感器及花盆的制作方法
土壤湿度传感器的适应范围
自动化监测土壤湿度:土壤墒情自动监测仪的工作原理
如何将土壤湿度传感器与Arduino接口
土壤湿度传感器
Arduino与水泵实验+土壤湿度传感器
土壤湿度传感器,出远门再也不怕花没人浇水了

网址: 土壤湿度传感器的原理及驱动 https://m.huajiangbk.com/newsview514242.html

所属分类:花卉
上一篇: [土壤检测仪批发]测土施肥配方仪
下一篇: 基于51单片机的土壤湿度检测自动