STM32芯片DTH11 PROTEUS 仿真带℃报警
温度超过40度 自动报警,低于40 度恢复。
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include "stm32f10x.h"
- #include "LQ12864.h"
- #include "adc.h"
- #include "dth11.h"
- void main_delay(u32 ms)
- {
- int i, j;
- for(i = 0; i < ms; i++)
- {
- for(j = 0; j < 1000; j++)
- {
- ;
- }
- }
- }
- void GPIO_Configuration(void)
- {
- GPIO_InitTypeDef GPIO_InitStructure;
-
- RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOC, ENABLE);
-
- GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; //LED0-->PA.8 ????
- GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //????
- GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO ???? 50MHz
- GPIO_Init(GPIOA, &GPIO_InitStructure); //????????? GPIOA.8
-
- GPIO_SetBits(GPIOA,GPIO_Pin_8); //PA.8 ???
- }
- int main(void)
- {
- u8 temp = 0, hum = 0;
- unsigned char buf[100] = { 0 };
- // delay_init() ;
- LCD_Init() ;
- Adc_Init();
- DHT11_Init();
- GPIO_Configuration();
- while(1)
- {
- DHT11_Read_Data(&temp, &hum);
- sprintf(buf, "temp: %d hum:%d", temp, hum);
- LCD_P6x8Str(2, 3, buf);
- if (temp>40)
- {
- GPIO_ResetBits(GPIOA, GPIO_Pin_8);
- delay(2000);
- delay(2000);
- }
- else
- { GPIO_SetBits(GPIOA, GPIO_Pin_8);
- delay(200);
- }
- }
- }
复制代码
Keil代码与Proteus仿真下载:
STM32 DTH11.7z
(263.66 KB, 下载次数: 92)
|