久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 5398|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

STM32單片機(jī)測(cè)溫濕度和紫外線程序,原創(chuàng)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:272776 發(fā)表于 2019-2-16 18:46 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
stm32單片機(jī)測(cè)溫濕度和紫外線程序,原創(chuàng)。
  1. #include "stm32f10x.h"
  2. #include "bsp_SysTick.h"
  3. #include "bsp_am2302.h"
  4. #include "bsp_usart.h"
  5. #include "bsp_led.h"
  6. #include "bsp_i2c_gpio.h"
  7. #include "bsp_adc.h"
  8. #include "OLED_I2C.h"




  9. /***********溫濕度結(jié)構(gòu)體聲明************/
  10. AM2302_Data_TypeDef     AM2302_Data;
  11. /*************濕度值,溫度值************/
  12. unsigned int  RH_Value,TEMP_Value;
  13. /*濕度高八位,低八位,溫度高八位,低八位*/
  14. unsigned char RH_H,RH_L,TP_H,TP_L,UV;
  15. uint16_t i=0,n=0,m=0;
  16. /********傳感器傳回來的值****************/
  17. extern __IO uint16_t ADC_getvalue;
  18. /**********傳感器轉(zhuǎn)化后的值*************/
  19. float   ADC;
  20. /*******溫濕度、紫外處理函數(shù)聲明********/
  21. void Temp_RH_deal(void);
  22. void ADC_Deal(void);
  23. /********OLED處理函數(shù)聲明*************/
  24. void  OLED_deal(void);
  25. void  KaiJi_Init(void);



  26. int main(void)
  27. {
  28.         /* 配置SysTick 為1us中斷一次 */
  29.         SysTick_Init();
  30.   LED_Init();
  31.         USARTx_Init();//初始化串口1
  32.         printf("\r\n***野火STM32 AM2302溫濕度傳感器實(shí)驗(yàn)***\r\n");
  33.         AM2302_Init ();
  34.         ADCx_Init();
  35.         i2c_Init();/*I2C總線的GPIO初始化*/
  36.         OLED_Init();
  37.         KaiJi_Init();
  38.         while(1)
  39.         {        
  40.           Temp_RH_deal();
  41.                 ADC_Deal();
  42.     OLED_deal();
  43.   }
  44. }        
  45. /***********************************************************************************************************
  46. ************           ********                                 *******                        **
  47.     **                *        *                                *       *                      **
  48.     **               *          *                               *         *                    **
  49.     **              *                                           *           *                  **
  50.     **             *                                            *            *                 **        *
  51.     **            *                  ******      *******        *            *   *******       **        *
  52.     **            *                 *     *      *     *        *           *    *     *       **        *
  53.     **             *               *     * *     *     *        *         *      *     *       **    *********
  54.     **              *              *    *   *    *     *        *       *        *     *       **        *
  55.     **               *         *   *   *     *   *     *        *     *          *     *       **        *
  56.     **                *       *     ***       *  *     *        *****            *******       **         *****
  57. ************            ******
  58. *****************************************************************************************************************/


  59. void KaiJi_Init(void)
  60. {
  61.         for(i=3;i<7;i++){OLED_ShowCN((i-1)*16,0,i);}
  62.   OLED_ShowStr(12,3,(unsigned char*)"Name:",2);
  63.         for(i=0;i<3;i++){OLED_ShowCN((i+4)*16,3,i);}
  64.         OLED_ShowStr(12,6,(unsigned char*)"Date:",2);
  65.         OLED_ShowStr(52,6,(unsigned char*)"2019/2/14",2);
  66.         Delay_s(1);
  67.         OLED_CLS();
  68. }



  69. void  OLED_deal(void)
  70. {
  71.           //定義三個(gè)數(shù)組,作為傳感器值緩沖
  72.                 char buffer1[5]={0},buffer2[5]={0},buffer3[5]={0};
  73.                 //用sprintf函數(shù)將測(cè)量值轉(zhuǎn)換為字符形式
  74.           sprintf(buffer1,"%.2f",(float)TEMP_Value/10);
  75.           sprintf(buffer2,"%.2f",(float)RH_Value/10);
  76.           sprintf(buffer3,"%.0f",(float)UV);
  77.           //顯示中文字符,源碼在codetab.h文件,
  78.                 for(i=7;i<15;i++)
  79.                 {
  80.                         OLED_ShowCN((i-7)*16,0,i);
  81.                 }
  82.                 //顯示TEMP:
  83.                 OLED_ShowStr(0,2,(unsigned char*)"Temp:",2);
  84.                 //顯示溫度測(cè)量值
  85.                 OLED_ShowStr(40,2,buffer1,2);
  86.                 //顯示“℃”符號(hào)
  87.                 for(i=15;i<16;i++)
  88.                 {OLED_ShowCN((i-10)*16,2,i);}
  89.                 //顯示Rh:
  90.                 OLED_ShowStr(0,4,(unsigned char*)"Rh:",2);
  91.                 //顯示濕度測(cè)量值
  92.                 OLED_ShowStr(40,4,buffer2,2);
  93.                 //顯示“%”符號(hào)
  94.     OLED_ShowStr(82,4,(unsigned char*)"%",2);        
  95.                 //顯示Uv:
  96.                 OLED_ShowStr(0,6,(unsigned char*)"Uv:",2);
  97.                 //顯示紫外線測(cè)量值
  98.                 OLED_ShowStr(40,6,buffer3,2);
  99.     //顯示紫外線強(qiáng)度單位               
  100.           OLED_ShowStr(64,6,(unsigned char*)"UVIndex",2);               
  101. }




  102. void Temp_RH_deal(void)
  103. {
  104.       /*調(diào)用DHT11_Read_TempAndHumidity讀取溫濕度,若成功則輸出該信息*/
  105.                         if( AM2302_Read( &AM2302_Data) == SUCCESS)
  106.                         {
  107.         RH_Value= AM2302_Data.humi_int*256+ AM2302_Data.humi_deci;
  108.                                 RH_H=RH_Value/10;//讀取整數(shù)部分
  109.                                 RH_L=RH_Value%10;//讀取小數(shù)部分
  110.                                 //計(jì)算出實(shí)際溫度值的10倍,這是傳感器手冊(cè)上注明的
  111.                                 TEMP_Value= AM2302_Data.temp_int*256+ AM2302_Data.temp_deci;
  112.                                 TP_H=TEMP_Value/10;//讀取整數(shù)部分
  113.                                 TP_L=TEMP_Value%10;//讀取小數(shù)部分
  114.                                 printf("\r\n讀取AM2302成功!%d\r\n\r\n濕度為%d.%d%RH\
  115. ,溫度為%d.%d℃\r\n",n,RH_H,RH_L,TP_H,TP_L);//“\”表示轉(zhuǎn)向下一行
  116.               n++;
  117.                         }                        
  118.                         else
  119.                         {
  120.                                 printf("\nRead AM2302 ERROR!%d\n",m);
  121.                                 m++;
  122.                         }
  123.                  Delay_ms(1000);
  124. }



  125. void ADC_Deal(void)
  126. {
  127.           int adc=0;
  128.     ADC=(float) ADC_getvalue/4096*3.3*1000;
  129.          
  130.       ADC+=5;        
  131.                         if(ADC>0)
  132.                         {
  133.                                 if(0<ADC&ADC<50)
  134.                                         adc=0;
  135.                                 else if(200<=ADC&ADC<=260)
  136.                                   adc=1;
  137.                                 else if(290<=ADC&ADC<=350)
  138.                                   adc=2;
  139.                                 else if(380<=ADC&ADC<=440)
  140.                                   adc=3;
  141.                                 else if(380<=ADC&ADC<=540)
  142.                                   adc=4;
  143.                                 else if(580<=ADC&ADC<=640)
  144.                                   adc=5;
  145.                                 else if(670<=ADC&ADC<=730)
  146.                                   adc=6;
  147.                                 else if(770<=ADC&ADC<=830)
  148.                                   adc=7;
  149.                                 else if(850<=ADC&ADC<=910)
  150.                                   adc=8;
  151.                                 else if(950<=ADC&ADC<=1010)
  152.                                   adc=9;
  153.                                 else if(950<=ADC&ADC<=1110)
  154.                                   adc=10;
  155.                   }
  156.                   switch(adc)
  157.                         {
  158.                           case 0:UV=0;break;
  159.                           case 1:UV=1;break;
  160.                           case 2:UV=2;break;
  161.                           case 3:UV=3;break;
  162.                           case 4:UV=4;break;
  163.                           case 5:UV=5;break;
  164.                           case 6:UV=6;break;
  165.                           case 7:UV=7;break;
  166.                           case 8:UV=8;break;
  167.                           case 9:UV=9;break;
  168.                           case 10:UV=10;break;                        
  169. }
  170.                 printf("當(dāng)前電壓為 = %3.0f mV \n",ADC);
  171.                 printf("當(dāng)前紫外線指數(shù)等級(jí)為%d級(jí)\r\n",UV);
  172. }
復(fù)制代碼

全部資料51hei下載地址:
原創(chuàng)-AM2302.7z (210.68 KB, 下載次數(shù): 69)


評(píng)分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:855153 發(fā)表于 2020-12-7 20:15 | 只看該作者
您好!我想請(qǐng)問一下,您還保存得有這個(gè)的電路圖麼?想要參考一下。
回復(fù)

使用道具 舉報(bào)

板凳
ID:519089 發(fā)表于 2021-7-14 22:19 | 只看該作者
紫外線程序是個(gè)什么?
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美久久久网站 | 精品无码久久久久久国产 | 91久久久久久久久久久 | 日韩二 | 亚洲高清一区二区三区 | 精品久久久久久久人人人人传媒 | 99精品国产一区二区青青牛奶 | 亚洲一区免费 | 亚洲福利电影网 | 日本成人午夜影院 | 久久精品欧美视频 | 亚洲一区二区久久 | 亚洲精品一区二区三区在线 | 高清一区二区 | 久久久av中文字幕 | 国产黄色av电影 | 少妇无套高潮一二三区 | 久久国产精品免费视频 | 国产精品欧美精品日韩精品 | 国产一区二区视频免费在线观看 | 在线观看 亚洲 | 色欧美片视频在线观看 | 国产一级特黄真人毛片 | 国产免费福利小视频 | 精品国产精品一区二区夜夜嗨 | 99精品国自产在线 | 一区二区三区四区av | 羞羞的视频在线看 | 久久国产秒 | 国产一级片av | 免费一级黄色电影 | 国产在线一区二区三区 | 国产一级在线观看 | 黄色三级免费 | 国产区在线 | 欧美日本久久 | 欧美婷婷 | 天天操天天插 | 中文字幕在线二区 | 欧美一区二区激情三区 | 久久久精品亚洲 |