找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

stm32f103c8t6 BME280環(huán)境檢測程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:626252 發(fā)表于 2021-9-28 17:08 | 只看該作者 回帖獎勵 |倒序?yàn)g覽 |閱讀模式
搞了二周終于讀取數(shù)據(jù)了
單片機(jī)源程序如下:
  1. #include "includes.h"//添加外部各種頭文件
  2. //#include "Globalvariable.h"//添加全局變量                // Device header



  3. int main(void)
  4. {   
  5.     u8  k=0;      
  6.     u16 AD1=0;


  7.      
  8.      
  9.     NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 設(shè)置中斷優(yōu)先級分組2
  10.     uart_init(115200);          //串口初始化為9600
  11.      
  12.     delay_init();                  //延時函數(shù)初始化      
  13.     LED_Init();                         //初始化與LED連接的硬件接口
  14.     KEY_Init();                  //初始化與按鍵連接的硬件接口
  15.   I2C_GPIO_Config();            //IIC引腳初始化
  16.       
  17.      Adc_Init();                //ADC通道初始化
  18. // TIM1_PWM_Init(899,0);    //不分頻。PWM頻率=72000/(899+1)=80Khz
  19. // TIM4_PWM_Init(7999,8999);//方波頻率1Hz
  20.      TIM4_PWM_Init(899,0);    //方波頻率1Hz
  21.      delay_ms(10);   
  22.      Init_MPU6050();              //初始化MPU6050
  23.      OLED_Init();             //初始化屏幕OLED      
  24.      InitBME280();            //初始化BME280
  25.      
  26.      
  27.     OLED_P16x16Ch(0,0,0);//寫溫字
  28.     OLED_P16x16Ch(16,0,1);//寫度字
  29.   OLED_P8x16Str(32,0,":");//第一行 -- 8x16的顯示單元顯示ASCII碼   
  30.     OLED_P16x16Ch(96,0,6);//寫度字
  31.    
  32.     OLED_P16x16Ch(0,2,2);//寫濕字
  33.     OLED_P16x16Ch(16,2,1);//寫度字
  34.   OLED_P8x16Str(32,2,":");//第一行 -- 8x16的顯示單元顯示ASCII碼   
  35.     OLED_P8x16Str(96,2,"%");//第一行 -- 8x16的顯示單元顯示ASCII碼   
  36.    
  37.     OLED_P16x16Ch(0,4,3);//寫高字
  38.     OLED_P16x16Ch(16,4,1);//寫度字
  39.   OLED_P8x16Str(32,4,":");//第一行 -- 8x16的顯示單元顯示ASCII碼   
  40.     OLED_P16x16Ch(96,4,7);//寫米字
  41.    
  42.     OLED_P16x16Ch(0,6,4);//寫氣字
  43.     OLED_P16x16Ch(16,6,5);//寫壓字
  44.   OLED_P8x16Str(32,6,":");//第一行 -- 8x16的顯示單元顯示ASCII碼   
  45.     OLED_P8x16Str(104,6,"hPa");//第一行 -- 8x16的顯示單元顯示ASCII碼   
  46.      
  47.     while(1)
  48.     {
  49.         
  50. ////////////////---MPU6050---/////////////////////            
  51. //        READ_MPU6050();             //讀取MPU6050數(shù)據(jù)
  52.    
  53. //           x1=Single_Read(MPU6050_Addr,GYRO_XOUT_L);
  54. //       x2=Single_Read(MPU6050_Addr,GYRO_XOUT_H);
  55. //           x3 =    (x2<<8)|x1;
  56. //       x3 =(double)x3*250/327.68;                            //讀取計(jì)算X軸數(shù)據(jù)
  57.    
  58. //           printf("G_X1=:%d\n",x1);//回車加換行
  59. //           printf("X3=:%d\r\n",x3);//回車加換行



  60.                                     
  61.           OLED_P8x16FLOAT(40,0,BMP280_Temperature()/100,2);//溫度   
  62.             if((0x01&BME280_readdata(0xF3))==1)        
  63.                   {
  64.              OLED_P8x16FLOAT(40,2,BMP280_humidity(),2);//濕度   
  65.                     }   
  66.           OLED_P8x16FLOAT(40,4,BMP280_calcAltitude_AVE(BMP280_calcAltitude()),2);//高度
  67.             OLED_P8x16FLOAT(40,6,BMP280_pressure()/100,2);//氣壓   

  68.               

  69. ////////////////---ADC---/////////////////////        
  70.         
  71.              AD1=Get_Adc(0);//讀取PA0的模擬量輸入信號值
  72. //        
  73. //////////////////---PWM---/////////////////////        
  74.              TIM_SetCompare1(TIM4,AD1);//占空比10%
  75.        TIM_SetCompare2(TIM4,AD1);//占空比20%  
  76.        TIM_SetCompare3(TIM4,AD1);//占空比50%
  77.        TIM_SetCompare4(TIM4,AD1);//占空比80%        
  78.         
  79. ////////////////---LED---/////////////////////               
  80.              LED_13=!LED_13;
  81.             
  82. ////////////////---KEY---/////////////////////            
  83.         k=KEY_Scan(0);        //得到鍵值
  84.         switch(k)
  85.         {                 
  86.             case 1:
  87.                 LED_14=!LED_14;            
  88.                 break;
  89.             case 2:
  90.                 LED_15=!LED_15;              
  91.                 break;
  92.             case 3:               
  93.                 LED_15=!LED_15;
  94.               LED_14=!LED_14;
  95.                 break;
  96.             default:
  97.                 delay_ms(10);   
  98.         }

  99.     }         
  100. }
復(fù)制代碼

所有代碼51hei附件下載:
STM32 F103-6050.7z (210.25 KB, 下載次數(shù): 67)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報(bào)

沙發(fā)
ID:626252 發(fā)表于 2021-9-28 17:10 | 只看該作者
第一次上傳圖片

51hei圖片_20210928170830.jpg (884.29 KB, 下載次數(shù): 160)

51hei圖片_20210928170830.jpg
回復(fù)

使用道具 舉報(bào)

板凳
ID:1113226 發(fā)表于 2024-3-17 10:47 | 只看該作者
資料可以學(xué)習(xí)一下
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表