找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2743|回复: 2
收起左侧

stm32f103c8t6 BME280环境检测程序

[复制链接]
ID:626252 发表于 2021-9-28 17:08 | 显示全部楼层 |阅读模式
搞了二周终于读取数据了
单片机源程序如下:
  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);// 设置中断优先级分组2
  10.     uart_init(115200);          //串口初始化为9600
  11.      
  12.     delay_init();                  //延时函数初始化      
  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数据
  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;                            //读取计算X轴数据
  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. }
复制代码

所有代码51hei附件下载:
STM32 F103-6050.7z (210.25 KB, 下载次数: 67)

评分

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

查看全部评分

回复

使用道具 举报

ID:626252 发表于 2021-9-28 17:10 | 显示全部楼层
第一次上传图片
51hei图片_20210928170830.jpg
回复

使用道具 举报

ID:1113226 发表于 2024-3-17 10:47 | 显示全部楼层
资料可以学习一下
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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