本帖最后由 jinglixixi 于 2017-9-6 09:59 编辑
在实现OLED屏显示的基础上,配合SHT20温湿度传感器的使用,可对温湿度进行控制,其执行控制的效果如图1和图2所示。
图1 开启继电器
图2关断继电器
由此要完成一个温湿度控制器,除开发板外还需要配置OLED屏、软按键及带光隔的继电器。 其中软按键与MCU的连接关系为: 1 -- PB14 2 -- PB15 3 -- PB12 4 -- PB13 软按键的初始化函数为: - void KEY_Init(void)
- {
- GPIO_InitTypeDef gpioInitStrcut;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
- gpioInitStrcut.GPIO_Mode = GPIO_Mode_IPU;
- gpioInitStrcut.GPIO_Pin = GPIO_Pin_12 | GPIO_Pin_13|GPIO_Pin_14 | GPIO_Pin_15;
复制代码使用软按键进行温湿度限值设置的程序如下: if (!GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_12)) n=n*10; if (!GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_13)) OLED_ShowString(44,6,":OK",16); if (!GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_14)) n++; if (!GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_15)) n--; OLED_ShowNum(68,6,n,3,16); 光隔继电器与MCU的连接关系为: Vin--PC13 光隔继电器的初始化函数为: - void JDQ_Init(void)
- {
- GPIO_InitTypeDef gpioInitStrcut;
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
- gpioInitStrcut.GPIO_Mode = GPIO_Mode_Out_PP;
- gpioInitStrcut.GPIO_Pin = GPIO_Pin_13;
- gpioInitStrcut.GPIO_Speed = GPIO_Speed_50MHz;
- GPIO_Init(GPIOC, &gpioInitStrcut);
- }
复制代码使用继电器进行温湿度控制的程序如下: - if(tem>n) //控制判别
- {
- OLED_ShowString(36,6,":ON",16);
- GPIO_WriteBit(GPIOC, GPIO_Pin_13,Bit_RESET);
- }
- else
- {
- OLED_ShowString(36,6,":OFF ",16);
- GPIO_WriteBit(GPIOC, GPIO_Pin_13,Bit_SET);
- }
复制代码温湿度控制器的界面显示函数为:
void jm()
{
OLED_Clear();
OLED_ShowCHinese(18,0,0);
OLED_ShowCHinese(36,0,1);
OLED_ShowCHinese(54,0,2);
OLED_ShowCHinese(72,0,3);
OLED_ShowCHinese(90,0,4);
OLED_ShowCHinese(0,2,0);
OLED_ShowCHinese(18,2,2);
OLED_ShowString(36,2,":22",16);
OLED_ShowCHinese(0,4,1);
OLED_ShowCHinese(18,4,2);
OLED_ShowString(36,4,":33",16);
OLED_ShowCHinese(0,6,8);
OLED_ShowCHinese(18,6,9);
OLED_ShowString(36,6,":",16);
}
温湿度的显示程序如下: - SHT20_GetValue();
- tem=sht20Info.tempreture*10;
- hum=sht20Info.humidity*10;
- OLED_ShowNum(44,2,tem/10,2,16);
- OLED_ShowChar(60,2,'.',16);
- tem=tem%10;
- OLED_ShowNum(68,2,tem,1,16);
- OLED_ShowNum(44,4,hum/10,2,16);
- OLED_ShowChar(60,4,'.',16);
- hum=hum%10;
- OLED_ShowNum(68,4,hum,1,16);
复制代码 |