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

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

QQ登錄

只需一步,快速開始

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

STC15單片機(jī)讀取BMP180氣壓傳感器數(shù)據(jù)并在串口打印

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:759974 發(fā)表于 2023-9-12 23:38 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
STC15單片機(jī)
實(shí)驗(yàn)名稱:讀取BMP180氣壓傳感器,并在UART串口打印數(shù)值
實(shí)驗(yàn)內(nèi)容:
        UART串口9600波特率
        printf函數(shù)打印信息(putchar)
        #define FOSC 22118400L  //晶振頻率 22.1184MHz

實(shí)驗(yàn)器材:
        STC15W408AS_DIP16 x1
        BMP180氣壓傳感器 x1

實(shí)驗(yàn)心得:
主要參考 BMP085 arduino測(cè)試代碼
注意 BMP180 的 IIC 地址是 0xEE

========================================
        BMP180 讀寫部分
        參考bmp180.ino
========================================

void bmp180_init()
{
        i2c_bmp180_start();
        bmp180_calibration();
        i2c_bmp180_stop();
}

打印信息:

[17:16:37.017]接收←>New Messages...

                    ### BMP180 Calibration Data ###
                    ac1  ac2  ac3  ac4  ac5  ac6
                    001a 0006 00fc 0044 00c6 00ff
                    b1   b2   b5   mb   mc   md
                    0019 0073 0000 001c 0000 0000

                    ### BMP180 Read Data ###
                    read_ut: 27466
                    read_up: 0

                    ### BMP180 Cal Data ###
                    T: 32.1 C
                    P: 1000.3 hPa
                    Altitude: 108.4 m

main.c

  1. #include "config.h"
  2. #include "delay.h"
  3. #include "uart.h"
  4. #include "i2c_bmp180.h"

  5. #define LED_ON        P12 = 0
  6. #define LED_OFF        P12 = 1

  7. bit timer_flag_5s        = 0;        //5s定時(shí)觸發(fā)標(biāo)志位
  8. uint8 delay_count        = 0;        //delay延遲計(jì)數(shù)器

  9. void bmp180_loop()
  10. {
  11.         uint16 read_ut;
  12.         uint32 read_up;
  13.         float temperature, pressure, atm, altitude;
  14.         
  15.         i2c_bmp180_start();
  16.         read_ut = bmp180_read_ut();        //MUST be called first
  17.         read_up = bmp180_read_up();
  18.         i2c_bmp180_stop();

  19.         pressure        = bmp180_calc_pval(read_up);
  20.         temperature        = bmp180_calc_tval(read_ut);
  21.         atm = pressure / 101325; // "standard atmosphere"
  22.         altitude = bmp180_calc_altitude(pressure); //Uncompensated caculation - in Meters
  23.         i2c_bmp180_stop();

  24.         if(DEBUG_MODE) printf(">New Messages...\r\n");

  25.         if(DEBUG_MODE) printf("\r\n### BMP180 Calibration Data ###\r\n");
  26.         if(DEBUG_MODE) printf("ac1  ac2  ac3  ac4  ac5  ac6\r\n");
  27.         if(DEBUG_MODE) printf("%04bx %04bx %04bx %04bx %04bx %04bx\r\n", t_bmp180_cal_dat.ac1, t_bmp180_cal_dat.ac2, t_bmp180_cal_dat.ac3, t_bmp180_cal_dat.ac4, t_bmp180_cal_dat.ac5, t_bmp180_cal_dat.ac6);

  28.         if(DEBUG_MODE) printf("b1   b2   b5   mb   mc   md\r\n");
  29.         if(DEBUG_MODE) printf("%04bx %04bx %04bx %04bx %04bx %04bx\r\n", t_bmp180_cal_dat.b1, t_bmp180_cal_dat.b2, t_bmp180_cal_dat.b5, t_bmp180_cal_dat.mb, t_bmp180_cal_dat.mc, t_bmp180_cal_dat.md);

  30.         if(DEBUG_MODE) printf("\r\n### BMP180 Read Data ###\r\n");
  31.         if(DEBUG_MODE) printf("read_ut: %u\r\n", read_ut);
  32.         if(DEBUG_MODE) printf("read_up: %u\r\n", read_up);

  33.         if(DEBUG_MODE) printf("\r\n### BMP180 Cal Data ###\r\n");
  34.         if(DEBUG_MODE) printf("T: %4.1f C\r\n", temperature);
  35.         if(DEBUG_MODE) printf("P: %6.1f hPa\r\n", pressure/100.0f);
  36.         //if(DEBUG_MODE) printf("Std P: %6.1f hPa\r\n", atm);
  37.         if(DEBUG_MODE) printf("Altitude: %4.1f m\r\n", altitude);
  38. }

  39. //主函數(shù)
  40. void main(void)
  41. {
  42.         //設(shè)置STC15W408AS單片機(jī)端口為標(biāo)準(zhǔn)模式
  43.         Config_Port();

  44.         //串口初始化,波特率9600
  45.         UART_Config(9600);

  46.         //初始化bmp180傳感器
  47.         bmp180_init();

  48.         LED_OFF; //LED指示燈熄滅
  49.                         
  50.         // 事件處理循環(huán)
  51.         while(1)
  52.         {        
  53.         if (timer_flag_5s)  //每隔5s執(zhí)行以下分支
  54.         {
  55.                         LED_ON; //LED指示燈點(diǎn)亮

  56.                         bmp180_loop(); //讀取bmp180數(shù)據(jù)

  57.                         LED_OFF; //LED指示燈熄滅

  58.             timer_flag_5s = 0;
  59.                 }

  60.                 //延時(shí)周期200ms
  61.                 delay_x_ms(200);

  62.                 //5s定時(shí)觸發(fā)標(biāo)志位
  63.                 if(25 == ++delay_count)
  64.                 {
  65.                         delay_count = 0;
  66.                         timer_flag_5s = 1;
  67.                 }
  68.         }
  69. }
復(fù)制代碼
原理圖: 無
仿真: 無
代碼: UART_PRINTF_BMP180_STC15W408AS.zip (11.88 KB, 下載次數(shù): 21)
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 七七婷婷婷婷精品国产 | 中文字幕亚洲视频 | 亚洲日本欧美日韩高观看 | 欧美日韩在线精品 | 精品国产一二三区 | 欧美在线观看黄色 | 久久成人免费视频 | 欧美aⅴ在线观看 | 午夜影院在线观看 | 久久久久久久久淑女av国产精品 | 91久色| 天天综合91 | 激情一区二区三区 | 欧美精品综合在线 | 国内精品一区二区三区 | 成人精品国产免费网站 | 久久蜜桃av一区二区天堂 | 视频一区在线观看 | 视频在线一区二区 | 日本亚洲精品成人欧美一区 | 精产国产伦理一二三区 | 中文字幕日本一区二区 | 日操操| 操久久久| 国产精品区二区三区日本 | 99福利视频导航 | 欧美一区视频 | 国产精品天堂 | 日韩在线视频一区 | 日日操夜夜操天天操 | 在线āv视频 | 日韩欧美国产一区二区三区 | 精品九九| 国内精品久久久久久久 | 日日干夜夜操天天操 | 成人在线观看免费爱爱 | 啪一啪在线视频 | 日本在线中文 | 欧美在线色| 亚洲一区二区三区在线播放 | 国产成人99 |