国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

基于STM32F103驅(qū)動AHT20+BMP280模塊測量溫濕度和壓強并在ST7735 LCD顯示

jf_88434166 ? 來源:jf_88434166 ? 作者:jf_88434166 ? 2025-11-25 12:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

AHT20+BMP280模塊簡介

本品采用了數(shù)字溫濕度傳感器AHT20與數(shù)字氣壓傳感器BPM280 組成, I2C 輸出。電壓直流3.3V供電(兩個模塊電源是一起的,板子沒有穩(wěn)壓器件,BMP280最高支持電壓3.6V,所以這里建議是3.3V供電),體積小巧,方便集成。板子是將兩個器件的IIC接到一起了,==板載4.7K的上拉電阻==。

AHT20

AHT20 是一款高精度數(shù)字式溫濕度傳感器,采用 I2C 通信接口,集成度高、功耗極低,能同時精準測量環(huán)境溫度(-40℃ - 85℃)和相對濕度(0%~100% RH),輸出數(shù)據(jù)穩(wěn)定可靠,無需額外校準,廣泛應用于智能家居、氣象監(jiān)測、消費電子等對溫濕度檢測精度和功耗有嚴格要求的場景。AHT20測溫誤差±0.3℃,濕度誤差±2%。
器件IIC地址0x38(7位)
器件讀取流程說明:
1.上電后要等待40ms,讀取溫濕度值之前, 首先要看狀態(tài)字的校準使能位Bit[3]是否為 1(通
過發(fā)送0x71可以獲取一個字節(jié)的狀態(tài)字),如果不為1,要發(fā)送0xBE命令(初始化),此命令參數(shù)
有兩個字節(jié), 第一個字節(jié)為0x08,第二個字節(jié)為0x00。
2.直接發(fā)送 0xAC命令(觸發(fā)測量),此命令參數(shù)有兩個字節(jié),第一個字節(jié)為 0x33,第二個字節(jié)
為0x00。
3.等待75ms待測量完成,忙狀態(tài)Bit[7]為0,然后可以讀取六個字節(jié)(發(fā)0X71即可以讀取)。
4.計算溫濕度值。
讀取溫濕度數(shù)據(jù)流程圖
在這里插入圖片描述
溫濕度數(shù)據(jù)都是分別20bit,輸出數(shù)據(jù)后需要對數(shù)據(jù)進行轉(zhuǎn)換,下面是對應的轉(zhuǎn)換公式:
在這里插入圖片描述

BMP280

寄存器相關說明直接查閱這篇文章: [STM32軟件SPI驅(qū)動BMP280(OLED顯示)],這里就不再贅述。上面文章通訊使用的是SPI,這里說下BMP280傳感器 IIC通訊。
BMP280主要參數(shù):

  • 大氣壓強 :300-1100hPa,相對精度±0.12hPa
  • 溫度 :-40-85℃,絕對精度±0.5℃(由內(nèi)部溫度傳感器測量的溫度。此溫度值取決于印刷電路板的溫度、傳感器元件自身的發(fā)熱情況以及環(huán)境溫度,通常會高于環(huán)境溫度)
  • IIC地址 :該 7 位設備地址為 111011x。前 6 位為固定位。最后一位可通過 SDO 值進行更改,并且在運行過程中可以進行更改。將 SDO 連接到 GND 從機地址為 1110110(0x76);將其連接到 Vddio 則從機地址為 1110111(0x77)板子設計吧SDO引腳拉高了,所以這里BMP280的器件地址是0x77(7位)。

寄存器

在這里插入圖片描述
IIC寫時序
在這里插入圖片描述

IIC讀時序
在這里插入圖片描述

測試接線

AHT20+BMP280STM32F103C8T61.44LCD ST7735
VDD3.3v3.3V
GNDGNDG
SCLPB10--
SDAPB11--
--PA8BLK
--PB1DC
--PB14RST
--PB12CS
--PB13SCL
--PB14MOSI

串口輸出使用的是串口1,接線用USB轉(zhuǎn)TTL接到單片機串口上,接線分別是VCC接3.3V,GND接GND,TX接PA10,RX接PA9。這里使用的單片機是直接把串口1接到板載的usb口了,所以就沒有單獨外接TTL模塊了。

代碼

AHT20.c

#include "stm32f10x.h"   // Device header
#include "AHT20.h"
#include "MyI2C.h"
#include "Delay.h"

#define AHT20_ADDRESS		  0x38		//AHT20的I2C從機地址
#define AHT20_SoftReset       0xBA

//1讀0寫

/**
  * 函    數(shù):AHT20寫寄存器
  * 參    數(shù):RegAddress 寄存器地址,范圍:參考AHT20手冊的寄存器描述
  * 參    數(shù):Data 要寫入寄存器的數(shù)據(jù),范圍:0x00~0xFF
  * 返 回 值:無
  */
void AHT20_WriteSingleReg(uint8_t Data)
{
	MyI2C_Start();						//I2C起始
	MyI2C_SendByte(AHT20_ADDRESS < < 1| 0x00);	//發(fā)送從機地址,讀寫位為0,表示即將寫入,0x70
	MyI2C_ReceiveAck();					//接收應答
	MyI2C_SendByte(Data);				//發(fā)送要寫入寄存器的數(shù)據(jù)
	MyI2C_ReceiveAck();					//接收應答
	MyI2C_Stop();						//I2C終止
}

//AHT20讀單個寄存器
uint8_t AHT20_ReadSingleReg()
{
	uint8_t Data;
	MyI2C_Start();						//I2C重復起始
	MyI2C_SendByte(AHT20_ADDRESS < < 1| 0x01);	//發(fā)送從機地址,讀寫位為1,表示即將讀取,0x71
	MyI2C_ReceiveAck();					//接收應答
	Data = MyI2C_ReceiveByte();			//接收指定寄存器的數(shù)據(jù)
	MyI2C_SendAck(1);					//發(fā)送應答,給從機非應答,終止從機的數(shù)據(jù)輸出
	MyI2C_Stop();						//I2C終止
	
	return Data;
}

//AHT20軟復位
void AHT20_SoftRes(void)
{
    AHT20_WriteSingleReg(AHT20_SoftReset);
}

//讀取AHT20的狀態(tài)寄存器
uint8_t AHT20_Read_Status(void)
{

	uint8_t Byte_first;	
	Byte_first = AHT20_ReadSingleReg();		
	return Byte_first;
}

//查詢cal enable位有沒有使能?
uint8_t AHT20_Read_Cal_Enable(void)  
{
    uint8_t val = 0;//ret = 0,

    val = AHT20_Read_Status();
    if((val & 0x68)==0x08)  //判斷NOR模式和校準輸出是否有效 0110 1000
    return 1;
    else  return 0;
 }

//向AHT20發(fā)送AC觸發(fā)測量命令
 void AHT20_SendAC(void) 
{
    MyI2C_Start();
    MyI2C_SendByte(AHT20_ADDRESS < 1 |0x00);  //寫
    MyI2C_ReceiveAck();
    MyI2C_SendByte(0xac);   //發(fā)送AC命令
    MyI2C_ReceiveAck();
    MyI2C_SendByte(0x33);
    MyI2C_ReceiveAck();
    MyI2C_SendByte(0x00);
    MyI2C_ReceiveAck();
    MyI2C_Stop();
}

//讀取AHT20的溫度和濕度數(shù)據(jù)
void AHT20_Read_CTdata(uint32_t *ct) 
{
	volatile uint8_t  Byte_1th=0;
	volatile uint8_t  Byte_2th=0;
	volatile uint8_t  Byte_3th=0;
	volatile uint8_t  Byte_4th=0;
	volatile uint8_t  Byte_5th=0;
	volatile uint8_t  Byte_6th=0;
	 uint32_t RetuData = 0;
	
	uint16_t cnt = 0;


	AHT20_SendAC();//向AHT20發(fā)送AC命令

	Delay_ms(75);//等待75ms
    cnt = 0;
	while(((AHT20_Read_Status()&0x80)==0x80))//等待忙狀態(tài)結(jié)束
	{
	 Delay_us(1508);
	 if(cnt++ >=100)
	 {
	  break;
	  }
	}
	MyI2C_Start();
	MyI2C_SendByte(AHT20_ADDRESS < 1 | 0x01);//0x70+1   0x70為設備地址 1為方向位
	MyI2C_ReceiveAck();
	Byte_1th = MyI2C_ReceiveByte();//狀態(tài)字
	MyI2C_SendAck(0);
	Byte_2th = MyI2C_ReceiveByte();//濕度字節(jié)
	MyI2C_SendAck(0);
	Byte_3th = MyI2C_ReceiveByte();//濕度字節(jié)
	MyI2C_SendAck(0);
	Byte_4th = MyI2C_ReceiveByte();//高4位為濕度  低4位為溫度
	MyI2C_SendAck(0);
	Byte_5th = MyI2C_ReceiveByte();//溫度字節(jié)
	MyI2C_SendAck(0);
	Byte_6th = MyI2C_ReceiveByte();//溫度字節(jié)
	MyI2C_SendAck(1);
	MyI2C_Stop();

	RetuData = (RetuData|Byte_2th)< 8;
	RetuData = (RetuData|Byte_3th)< 8;
	RetuData = (RetuData|Byte_4th);
	RetuData =RetuData > >4;
	ct[0] = RetuData;
	RetuData = 0;
	RetuData = (RetuData|Byte_4th)< 8;
	RetuData = (RetuData|Byte_5th)< 8;
	RetuData = (RetuData|Byte_6th);
	RetuData = RetuData&0xfffff;
	ct[1] =RetuData; 

}
void AHT20_SyetemInit(void)
{
    MyI2C_Start();
	MyI2C_SendByte(AHT20_ADDRESS < < 1| 0x00);
	MyI2C_ReceiveAck();
	MyI2C_SendByte(0x08);
	MyI2C_ReceiveAck();
	MyI2C_SendByte(0x00);
	MyI2C_ReceiveAck();
	MyI2C_Stop();
}

/**
  * 函    數(shù):AHT20初始化
  * 參    數(shù):無
  * 返 回 值:無
  */
	    
uint8_t AHT20_Init(void)   //初始化AHT20
{
	int count;
	MyI2C_Init();
    Delay_us(11038);

    AHT20_SyetemInit();

	Delay_ms(500);//延時0.5S
   while(AHT20_Read_Cal_Enable()==0)//需要等待狀態(tài)字status的Bit[3]=1時才去讀數(shù)據(jù)。如果Bit[3]不等于1 ,發(fā)軟件復位0xBA給AHT20,再重新初始化AHT20,直至Bit[3]=1
   {
        AHT20_SoftRes();                //軟復位AHT20
        Delay_us(11038);
           
        AHT20_SyetemInit();
        count++;
        if(count >=10)return 0;
        Delay_ms(500);
    }
   return 1;
}

BMP280.c

#include "stm32f10x.h"   // Device header
#include "BMP280_Reg.h"
#include "BMP280.h"
#include "MyI2C.h"
#include "Delay.h"

#define BMP280_ADDRESS						0x77		//從設備地址
#define BMP280_RESET_VALUE					0xB6		//復位寄存器寫入值

uint16_t    Dig_T1;
int16_t     Dig_T2;
int16_t     Dig_T3;
uint16_t    Dig_P1;
int16_t     Dig_P2;
int16_t     Dig_P3;
int16_t     Dig_P4;
int16_t     Dig_P5;
int16_t     Dig_P6;
int16_t     Dig_P7;
int16_t     Dig_P8;
int16_t     Dig_P9;

/**
  * 函    數(shù):BMP280寫寄存器
  * 參    數(shù):RegAddress 寄存器地址
  * 參    數(shù):Data 要寫入寄存器的數(shù)據(jù),范圍:0x00~0xFF
  * 返 回 值:無
  */
void BMP280_WriteReg(uint8_t RegAddress, uint8_t Data)
{
	MyI2C_Start();						//I2C起始
	MyI2C_SendByte(BMP280_ADDRESS < 1|0x00);	    //發(fā)送從機地址,讀寫位為0,表示即將寫入
	MyI2C_ReceiveAck();					//接收應答
	MyI2C_SendByte(RegAddress);			//發(fā)送寄存器地址
	MyI2C_ReceiveAck();					//接收應答
	MyI2C_SendByte(Data);				//發(fā)送要寫入寄存器的數(shù)據(jù)
	MyI2C_ReceiveAck();					//接收應答
	MyI2C_Stop();						//I2C終止
}

/**
  * 函    數(shù):BMP280讀寄存器
  * 參    數(shù):RegAddress 寄存器地址
  * 返 回 值:讀取寄存器的數(shù)據(jù),范圍:0x00~0xFF
  */
uint8_t BMP280_ReadReg(uint8_t RegAddress)
{
	uint8_t Data;
	
	MyI2C_Start();						//I2C起始
	MyI2C_SendByte(BMP280_ADDRESS < 1|0x00);	    //發(fā)送從機地址,讀寫位為0,表示即將寫入
	MyI2C_ReceiveAck();					//接收應答
	MyI2C_SendByte(RegAddress);			//發(fā)送寄存器地址
	MyI2C_ReceiveAck();					//接收應答
	
	MyI2C_Start();						    //I2C重復起始
	MyI2C_SendByte(BMP280_ADDRESS < 1|0x01);	//發(fā)送從機地址,讀寫位為1,表示即將讀取
	MyI2C_ReceiveAck();					    //接收應答
	Data = MyI2C_ReceiveByte();			    //接收指定寄存器的數(shù)據(jù)
	MyI2C_SendAck(1);					    //發(fā)送應答,給從機非應答,終止從機的數(shù)據(jù)輸出
	MyI2C_Stop();						    //I2C終止
	
	return Data;
}

/**
  * 函    數(shù):BMP280讀ID
  * 參    數(shù):無
  * 返 回 值:BMP280的ID號
  */
uint8_t BMP280_ReadID(void)
{
    return BMP280_ReadReg(BMP280_CHIPID_REG);
}

/**
  * 函    數(shù):讀取轉(zhuǎn)換3個連續(xù)寄存器
  * 參    數(shù):首個讀取的寄存器
  * 返 回 值:合并后的總值
  */
long bmp280_MultipleReadThree(unsigned char addr)
{
    unsigned char msb, lsb, xlsb;
    long temp = 0;
    msb = BMP280_ReadReg(addr);
    lsb = BMP280_ReadReg(addr + 1);
    xlsb = BMP280_ReadReg(addr + 2);

    temp = (long)(((unsigned long)msb < < 12)|((unsigned long)lsb < < 4)|((unsigned long)xlsb > > 4));

    return temp;
}

/**
  * 函    數(shù):讀取轉(zhuǎn)換2個連續(xù)寄存器
  * 參    數(shù):首個讀取的寄存器
  * 返 回 值:合并后的總值
  */
short bmp280_MultipleReadTwo(unsigned char addr)
{
    unsigned char msb, lsb;
    short temp = 0;
    lsb = BMP280_ReadReg(addr);
    msb = BMP280_ReadReg(addr + 1);

    temp = (short)msb < < 8;
    temp |= (short)lsb;

    return temp;
}

/**
  * 函    數(shù):BMP280初始化
  * 參    數(shù):無
  * 返 回 值:無
  */
void BMP280_Init(void)
{
	MyI2C_Init();					//先初始化底層的I2C

    uint8_t Osrs_T = 1;             //Temperature oversampling x 1
    uint8_t Osrs_P = 4;             //Pressure oversampling x 1
    uint8_t Mode = 3;               //Normal mode
    uint8_t T_sb= 5;               //Tstandby 1000ms  測量速率1HZ
    uint8_t Filter = 0;             //Filter off 
    uint8_t Spi3w_en = 0;           //3-wire SPI Disable
    
    uint8_t Ctrl_Meas_Reg = (Osrs_T < < 5) | (Osrs_P < < 2) | Mode;
    uint8_t Config_Reg    = (T_sb < < 5) | (Filter < < 2) | Spi3w_en;
    
    //狀態(tài)全部清零
    BMP280_WriteReg(BMP280_RESET_REG, BMP280_RESET_VALUE);  //將對應的配置值寫入寄存器
    BMP280_WriteReg(BMP280_CTRLMEAS_REG, Ctrl_Meas_Reg);
    BMP280_WriteReg(BMP280_CONFIG_REG, Config_Reg);
    
    Dig_T1 = bmp280_MultipleReadTwo(BMP280_DIG_T1_LSB_REG);
    Dig_T2 = bmp280_MultipleReadTwo(BMP280_DIG_T2_LSB_REG);
    Dig_T3 = bmp280_MultipleReadTwo(BMP280_DIG_T3_LSB_REG);
    Dig_P1 = bmp280_MultipleReadTwo(BMP280_DIG_P1_LSB_REG);
    Dig_P2 = bmp280_MultipleReadTwo(BMP280_DIG_P2_LSB_REG);
    Dig_P3 = bmp280_MultipleReadTwo(BMP280_DIG_P3_LSB_REG);
    Dig_P4 = bmp280_MultipleReadTwo(BMP280_DIG_P4_LSB_REG);
    Dig_P5 = bmp280_MultipleReadTwo(BMP280_DIG_P5_LSB_REG);
    Dig_P6 = bmp280_MultipleReadTwo(BMP280_DIG_P6_LSB_REG);
    Dig_P7 = bmp280_MultipleReadTwo(BMP280_DIG_P7_LSB_REG);
    Dig_P8 = bmp280_MultipleReadTwo(BMP280_DIG_P8_LSB_REG);
    Dig_P9 = bmp280_MultipleReadTwo(BMP280_DIG_P9_LSB_REG);
    
    Delay_ms(200);
}

#define BMP280_S32_t long signed int
#define BMP280_U32_t long unsigned int
#define BMP280_S64_t long long signed int
BMP280_S32_t t_fine;
/**
  * 函    數(shù):BMP280獲取溫度值
  * 參    數(shù):無
  * 返 回 值:溫度值
  */
int32_t BMP280_GetTemp(void)
{
    BMP280_S32_t var1, var2, T;
    BMP280_S32_t adc_T;
    adc_T = bmp280_MultipleReadThree(BMP280_TEMPERATURE_MSB_REG);
    
    //Temperature
    
    var1 = ((((adc_T >>3) - ((BMP280_S32_t)Dig_T1< 1))) * ((BMP280_S32_t)Dig_T2)) > > 11;
    var2 = (((((adc_T >>4) - ((BMP280_S32_t)Dig_T1)) * ((adc_T >>4) - ((BMP280_S32_t)Dig_T1))) > > 12) * 
    ((BMP280_S32_t)Dig_T3)) > > 14;
    t_fine = var1 + var2;
    T = (t_fine * 5 + 128) > > 8;
    return T;
}

/**
  * 函    數(shù):BMP280獲取壓力值
  * 參    數(shù):無
  * 返 回 值:壓力值
  */
uint32_t BMP280_GetPress(void)
{
    BMP280_S64_t var1, var2, p;
    BMP280_S32_t adc_P;
    
    adc_P = bmp280_MultipleReadThree(BMP280_PRESSURE_MSB_REG);
    
    var1 = ((BMP280_S64_t)t_fine) - 128000;
    var2 = var1 * var1 * (BMP280_S64_t)Dig_P6;
    var2 = var2 + ((var1*(BMP280_S64_t)Dig_P5)< 17);
    var2 = var2 + (((BMP280_S64_t)Dig_P4)< 35);
    var1 = ((var1 * var1 * (BMP280_S64_t)Dig_P3) >>8) + ((var1 * (BMP280_S64_t)Dig_P2)< 12);
    var1 = (((((BMP280_S64_t)1)< 47)+var1))*((BMP280_S64_t)Dig_P1) >>33;
    if (var1 == 0)
    {
    return 0; // avoid exception caused by division by zero
    }
    p = 1048576-adc_P;
    p = (((p< 31)-var2)*3125)/var1;
    var1 = (((BMP280_S64_t)Dig_P9) * (p >>13) * (p >>13)) > > 25;
    var2 = (((BMP280_S64_t)Dig_P8) * p) > > 19;
    p = ((p + var1 + var2) > > 8) + (((BMP280_S64_t)Dig_P7)< 4);
    return (BMP280_U32_t)p;

}

main.c

#include "stm32f10x.h"               
#include "Delay.h"
#include "AHT20.h"
#include "uart.h"
#include "stdio.h"
#include "BMP280.h"
#include "lcd_init.h"
#include "lcd.h"

int main(void)
{
    int  c1,t1;
    uint32_t CT_data[2];
    uint8_t ID;
    float BMP_Pressure,BMP_Temperature;
    
    
    /*模塊初始化*/
    uart_init(9600);
    BMP280_Init(); 
    LCD_Init();//LCD初始化
    LCD_Fill(0,0,LCD_W,LCD_H,WHITE);
    
    while(1)
    {
        while(AHT20_Read_Cal_Enable()==0)//等到校準輸出使能位為1,才讀取。
        {
            AHT20_Init();//如果為0再使能一次
            Delay_ms(30);
        }
        AHT20_Read_CTdata(CT_data);  //讀取溫度和濕度,可間隔1.5S讀一次
        c1 = CT_data[0] * 1000 / 1024 / 1024;  //計算得到濕度值(放大了10倍,如果c1=523,表示現(xiàn)在濕度為52.3%)
        t1 = CT_data[1] * 200 * 10 / 1024 / 1024 - 500;//計算得到溫度值(放大了10倍,如果t1=245,表示現(xiàn)在溫度為24.5℃)
        
        printf("****************************************************n");
        printf("AHT20溫濕度傳感器測試數(shù)據(jù):n");
        printf("溫度: %d.%d ℃ n", t1/10, t1%10);
        printf("濕度: %d.%d %% n", c1/10, c1%10);
        printf("n");
        
        ID = BMP280_ReadID();
        BMP_Temperature = BMP280_GetTemp();
        BMP_Pressure =  BMP280_GetPress();
        printf("BMP280傳感器測試數(shù)據(jù): n");
        printf("ID:0x%xn",ID);
        printf("溫度: %0.2f ℃ n",BMP_Temperature/100.0);
        printf("氣壓: %0.4f hPa n",BMP_Pressure / 25600.0);
        printf("nn");
        
        
        LCD_ShowString(18,0,"AHT20+BMP280",BLACK,WHITE,16,0);
        LCD_ShowString(50,16,"TEST",BLACK,WHITE,16,0);
        
        //AHT20數(shù)據(jù)顯示
        LCD_ShowString(0,32,"AHT20",BLACK,WHITE,16,0);

        //AHT20溫度
        LCD_ShowChinese(0,48,"溫度",BLACK,WHITE,16,0);
        LCD_ShowString(32,48,":",BLACK,WHITE,16,0);
        LCD_ShowIntNum(40,48,t1/10,2,BLACK,WHITE,16);
        LCD_ShowString(56,48,".",BLACK,WHITE,16,0);
        LCD_ShowIntNum(64,48,t1%10,1,BLACK,WHITE,16);
        LCD_ShowChinese(80,48,"℃",BLACK,WHITE,16,0);
        
        //AHT20濕度
        LCD_ShowChinese(0,64,"濕度",BLACK,WHITE,16,0);
        LCD_ShowString(32,64,":",BLACK,WHITE,16,0);
        LCD_ShowIntNum(40,64,c1/10,2,BLACK,WHITE,16);
        LCD_ShowString(56,64,".",BLACK,WHITE,16,0);
        LCD_ShowIntNum(64,64,c1%10,1,BLACK,WHITE,16);
        LCD_ShowString(80,64,"%",BLACK,WHITE,16,0);
        
        //BMP280數(shù)據(jù)顯示
        LCD_ShowString(0,80,"BMP280",BLACK,WHITE,16,0);
        //BMP280溫度
        LCD_ShowChinese(0,96,"溫度",BLACK,WHITE,16,0);
        LCD_ShowString(32,96,":",BLACK,WHITE,16,0);
        LCD_ShowFloatNum1(40,96,BMP_Temperature/100.0,4,BLACK,WHITE,16);
        LCD_ShowChinese(80,96,"℃",BLACK,WHITE,16,0);
        
        //BMP280大氣壓強
        LCD_ShowChinese(0,112,"氣壓",BLACK,WHITE,16,0);
        LCD_ShowString(32,112,":",BLACK,WHITE,16,0);
        LCD_ShowIntNum(40,112,BMP_Pressure / 25600,4,BLACK,WHITE,16);
        LCD_ShowString(72,112,"hPa",BLACK,WHITE,16,0);
        
        Delay_ms(1000);
        
	 }
}

現(xiàn)象

LCD顯示:
在這里插入圖片描述
串口輸出
在這里插入圖片描述

總結(jié)

需要代碼的可以在評論區(qū)留言郵箱哦!!!

審核編輯 黃宇

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • STM32F103
    +關注

    關注

    34

    文章

    495

    瀏覽量

    67712
  • ST7735
    +關注

    關注

    0

    文章

    10

    瀏覽量

    8539
  • BMP280
    +關注

    關注

    1

    文章

    21

    瀏覽量

    6219
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    STM32F103試用體驗:LCD顯示與DHT11測量實驗

    實驗名稱:LCD顯示與DHT11測量溫濕度 實驗目的:通過開發(fā)板連接的DHT11模塊實時測量環(huán)境
    發(fā)表于 11-09 10:41 ?1.2w次閱讀

    STM32F103試用體驗:OLED顯示及DHT11溫濕度測量實驗

    1.實驗簡述 之前做了在GD32開發(fā)板上的溫濕度測量實驗,現(xiàn)在在精英STM32開發(fā)板上調(diào)整代碼重新實現(xiàn). 用到的材料工具如下: (1)精英STM32開發(fā)板 (2)0.96寸OLED
    發(fā)表于 11-13 13:48 ?1.5w次閱讀

    【核桃派ZeroW開發(fā)板體驗連載】小小氣象站 03 aht10、bmp280測試

    adafruit-circuitpython-ahtx0 安裝完成后,打開遠程python,新建一個文件,命名為aht10_test.py,進入,寫入以下代碼: \'\'\' 實驗名稱:AHT10溫濕度
    發(fā)表于 08-10 10:04

    STM32F103試用體驗】LCD顯示與DHT11測量實驗

    :精英STM32F103開發(fā)板DHT11溫濕度模塊, 尺寸3.5寸, 芯片為 ILI9486, 無觸摸功能連接方式:如圖所示,LCD屏連接至LCD
    發(fā)表于 10-22 08:40

    基于IIC協(xié)議的AHT20溫濕度采集

    STM32下基于IIC協(xié)議的AHT20溫濕度采集一、軟件I2C和硬件I2C軟件I2C和硬件I2C的區(qū)別AHT20簡介二、溫濕度采集一、軟件I
    發(fā)表于 08-20 07:13

    STM32是怎樣實現(xiàn)OLED屏顯示AHT20溫濕度

    STM32是怎樣實現(xiàn)OLED屏顯示AHT20溫濕度的?有哪些操作步驟?
    發(fā)表于 10-18 07:50

    怎樣使用SPI通信的OLED屏幕去顯示AHT20測試的溫濕度

    OLED顯示模塊有何特點呢?怎樣使用SPI通信的OLED屏幕去顯示AHT20測試的溫濕度呢?
    發(fā)表于 12-01 07:03

    如何利用STM32F103實現(xiàn)溫濕度遠程監(jiān)控系統(tǒng)的設計

    本設計以STM32F103單片機為核心控制器,加上其他的模塊一起組成基于單片機的糧倉溫度遠程監(jiān)控的整個系統(tǒng),其中包含中控部分、輸入部分和輸出部分。中控部分采用了STM32F103單片機,其主要作用
    發(fā)表于 01-10 06:22

    AHT20溫濕度傳感器簡介

    目錄一、AHT20溫濕度傳感器簡介二、AHT20 封裝設計三、AHT20 元件設計四、原理圖設計五、總結(jié)博客內(nèi)容:學習溫濕度傳感器原理,閱讀
    發(fā)表于 02-14 07:29

    TFT1.44寸屏ST7735驅(qū)動GitHub的相關資料推薦

    STM32應用之TFT1.44寸屏ST7735驅(qū)動GitHub項目下載鏈接:點我下載硬件平臺:stm32f103rct和1.44寸128x128 TFT屏(
    發(fā)表于 02-18 06:56

    MSP430 F149 單片機 AHT10 溫濕度 LCD1602 顯示

    MSP430 F149 單片機 AHT10 溫濕度 LCD1602 顯示
    發(fā)表于 11-19 17:06 ?23次下載
    MSP430 <b class='flag-5'>F</b>149 單片機 <b class='flag-5'>AHT</b>10 <b class='flag-5'>溫濕度</b> <b class='flag-5'>LCD</b>1602 <b class='flag-5'>顯示</b>

    【上篇】繪制附帶 AHT20 溫濕度傳感器的 stm32 電路原理圖

    目錄一、AHT20溫濕度傳感器簡介二、AHT20 封裝設計三、AHT20 元件設計四、原理圖設計五、總結(jié)博客內(nèi)容:學習溫濕度傳感器原理,閱讀
    發(fā)表于 12-09 11:51 ?46次下載
    【上篇】繪制附帶 <b class='flag-5'>AHT20</b> <b class='flag-5'>溫濕度</b>傳感器的 <b class='flag-5'>stm32</b> 電路原理圖

    STM32應用之TFT1.44寸屏ST7735驅(qū)動 SPI通信

    STM32應用之TFT1.44寸屏ST7735驅(qū)動GitHub項目下載鏈接:點我下載硬件平臺:stm32f103rct和1.44寸128x128 TFT屏(
    發(fā)表于 12-23 19:00 ?92次下載
    <b class='flag-5'>STM32</b>應用之TFT1.44寸屏<b class='flag-5'>ST7735</b><b class='flag-5'>驅(qū)動</b> SPI通信

    STM32F103以SPI 驅(qū)動128*128的TFT彩屏,LCD驅(qū)動ST7735s,程序使用CubeMX的HAL庫開發(fā)方式,另外也做了標準庫的程序移植

    設計 STM32F103 MCU ST7735 顯示屏 PA6 背光控制 PB13 SCK PB15 MOSI ...
    發(fā)表于 12-23 19:04 ?76次下載
    <b class='flag-5'>STM32F103</b>以SPI <b class='flag-5'>驅(qū)動</b>128*128的TFT彩屏,<b class='flag-5'>LCD</b><b class='flag-5'>驅(qū)動</b>為<b class='flag-5'>ST7735</b>s,程序使用CubeMX的HAL庫開發(fā)方式,另外也做了標準庫的程序移植

    基于STM32F103單片機的智能溫室大棚RS485通信溫濕度監(jiān)測

    C8T6單片機、RS485通信模塊、光照采集、溫濕度傳感器檢測、繼電器控制、LED控制組成。顯示板由STM32F103C8T6單片機、RS485通信
    發(fā)表于 12-27 18:25 ?76次下載
    基于<b class='flag-5'>STM32F103</b>單片機的智能溫室大棚RS485通信<b class='flag-5'>溫濕度</b>監(jiān)測