找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2684|回复: 0
收起左侧

STM32单片机温湿度设计带PCB图程序

[复制链接]
ID:525368 发表于 2020-2-3 23:01 | 显示全部楼层 |阅读模式
IMG_20191222_203853.jpg

单片机源程序如下:
  1. #include "stm32f10x_adc.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "usart.h"
  5. #include "led.h"
  6. #include "lcd1602.h"
  7. #include "adc.h"
  8. #include "dht11.h"
  9. #include "n25q128a.h"
  10.         char  temperature;              
  11.         char  humidity;   
  12.         //u8 spi_buf[4096];
  13. u16 adcx;
  14. int NTC_temp;
  15. float adc_volt;
  16. u8 adc_str[10];
  17.         u8 tmp[10];
  18.         u8 hum[10];
  19.         extern u16 dly_100ms;
  20.         u16 last_100ms;
  21. int main(void)
  22. {
  23.         delay_init();
  24.         NVIC_Configuration();
  25.         uart_init(9600);
  26.         GPIO_Configuration();
  27.         LED_Init();
  28.         Adc_Init();                                  //ADC???
  29.         //N25QXX_Init();
  30.         delay_ms(500);
  31.         LCD1602_Init();
  32.         DHT11_Init();
  33.         LCD1602_Show_Str(0, 0, "TMP:");
  34.         LCD1602_Show_Str(0, 1, "HUM:");
  35.         LED0 = 1;
  36.         LED1 = 0;
  37. //        adcx = N25QXX_ReadID();
  38. //        while(adcx!=N25Q128)
  39. //        {
  40. //                adcx = N25QXX_ReadID();
  41. //                delay_ms(500);
  42. //                LED0=!LED0;                //DS0??
  43. //        }       
  44. //        N25QXX_Read(spi_buf,0,sizeof(spi_buf));
  45.         while(1)
  46.         {
  47.                 if(dly_100ms%30==0)
  48.                 {
  49.                         dly_100ms++;
  50.                         DHT11_Read_Data(&temperature,&humidity);        //读取温湿度值               
  51.                         if(temperature>=0&&temperature<100)
  52.                         {
  53.                                 tmp[0]=' ';
  54.                                 tmp[1]=(u8)(temperature/10)+0x30;
  55.                                 tmp[2]=(u8)(temperature%10)+0x30;
  56.                                 tmp[3]=0xdf;
  57.                                 tmp[4]='C';
  58.                                 tmp[5]='\0';
  59.                         }
  60.                         else
  61.                         {
  62.                                 temperature = 0-temperature;
  63.                                 tmp[0]='-';
  64.                                 tmp[1]=(u8)(temperature/10)+0x30;
  65.                                 tmp[2]=(u8)(temperature%10)+0x30;
  66.                                 tmp[3]=0xdf;
  67.                                 tmp[4]='C';
  68.                                 tmp[5]='\0';
  69.                         }
  70.                         hum[0]=' ';
  71.                         hum[1]=(u8)(humidity/10)+0x30;
  72.                         hum[2]=(u8)(humidity%10)+0x30;
  73.                         hum[3]=' ';
  74.                         hum[4]='%';
  75.                         hum[5]='\0';
  76.                         LCD1602_Show_Str(4, 0, tmp);
  77.                         LCD1602_Show_Str(4, 1, hum);                               
  78.                 }
  79.                 if(dly_100ms%3==0)
  80.                 {
  81.                         dly_100ms++;
  82.                         adcx=Get_Adc_Average(ADC_Channel_5,50);       
  83.                         adc_volt = adcx *1598.0/1988;
  84.                         adcx = (int)(adc_volt+0.5);//四舍五入
  85.                         adc_str[0] =(u8)(adcx/1000)+0x30;
  86.                         adcx = adcx%1000;
  87.                         adc_str[1] =(u8)(adcx/100)+0x30;
  88.                         adcx = adcx%100;
  89.                         adc_str[2] =(u8)(adcx/10)+0x30;
  90.                         adcx = adcx%10;
  91.                         adc_str[3] =(u8)(adcx)+0x30;
  92.                         adc_str[4] ='m';
  93.                         adc_str[5] ='V';
  94.                         adc_str[6] ='\0';
  95.                         LCD1602_Show_Str(10, 1, adc_str);
  96.                         LED0 ^= 1;
  97.                         LED1 ^= 1;       
  98.                        
  99.                         NTC_temp = NTC_get_temp();
  100.                         if(NTC_temp>=0)
  101.                         {
  102.                                 adc_str[0] =(u8)(NTC_temp/100)+0x30;
  103.                                 if(adc_str[0]==0x30)
  104.                                         adc_str[0] = ' ';
  105.                                 NTC_temp = NTC_temp%100;
  106.                                 adc_str[1] =(u8)(NTC_temp/10)+0x30;
  107.                                 if(adc_str[0]==' '&&adc_str[1]==0x30)
  108.                                         adc_str[1] = ' ';
  109.                                 NTC_temp = NTC_temp%10;
  110.                                 adc_str[2] =(u8)(NTC_temp)+0x30;
  111.                                 adc_str[3] =0xdf;
  112.                                 adc_str[4] ='C';       
  113.                                 adc_str[5] ='\0';       
  114.                         }               
  115.                         //LCD1602_Show_Str(11, 0, adc_str);
  116.                 }

  117.         }
  118. }
复制代码
51hei.png
所有资料51hei提供下载:
STM32F103温湿度传感器DHT11程序.7z (203.05 KB, 下载次数: 43)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表