欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 基于STM32f103的紅外測溫儀程序(測溫模塊MLX90614,芯片GY906) [打印本頁]

作者: DOOMSKYWR    時間: 2020-9-22 09:23
標題: 基于STM32f103的紅外測溫儀程序(測溫模塊MLX90614,芯片GY906)
之前集訓要求做的紅外測溫儀,采用STM32F103系列作為主控,利用MLX90614采集溫度,配以O(shè)LED顯示以及flash存儲數(shù)據(jù)(5個).
請不要問我要電路圖,一是沒時間,二是程序源碼里面對每個模塊接哪個IO口都是可以看見的,電子設(shè)計是靈活的.
下面貼出部分源碼,完整程序的壓縮包在附件.

單片機源程序如下:
gy906_gpio.h

#ifndef __GY906_GPIO_H_
#define __GY906_GPIO_H_

#include <inttypes.h>


#define macI2C_WR        0                /* 寫控制bit */
#define macI2C_RD        1                /* 讀控制bit */


/* 定義I2C總線連接的GPIO端口,用戶只需要修改下面四行代碼就可以任意改變SCL,SDA的引腳 */
#define macGPIO_PORT_I2C        GPIOB                        /* GPIO端口 */
#define macRCC_I2C_PORT         RCC_APB2Periph_GPIOB                /* GPIO時鐘 */
#define macI2C_SCL_PIN                GPIO_Pin_9                        /* 連接到SCL時鐘線的GPIO */
#define macI2C_SDA_PIN                GPIO_Pin_8                        /*連接到SDA時鐘線的GPIO */


/* 定義讀寫SCL,SDA的宏,以便增加代碼的可移植性和可閱讀性 */
#if 0        /*條件編譯:選擇GPIO的庫函數(shù)實現(xiàn)IO讀寫 */
        #define macI2C_SCL_1()  GPIO_SetBits(macGPIO_PORT_I2C, macI2C_SCL_PIN)                /* SCL = 1 */
        #define macI2C_SCL_0()  GPIO_ResetBits(macGPIO_PORT_I2C, macI2C_SCL_PIN)                /* SCL = 0 */
        
        #define macI2C_SDA_1()  GPIO_SetBits(macGPIO_PORT_I2C, macI2C_SDA_PIN)                /* SDA = 1 */
        #define macI2C_SDA_0()  GPIO_ResetBits(macGPIO_PORT_I2C, macI2C_SDA_PIN)                /* SDA = 0 */
        
        #define macI2C_SDA_READ()  GPIO_ReadInputDataBit(macGPIO_PORT_I2C, macI2C_SDA_PIN)        /* ¶áSDA¿úÏß×′ì¬ */
#else
        #define macI2C_SCL_1()  macGPIO_PORT_I2C->BSRR = macI2C_SCL_PIN                                /* SCL = 1 */
        #define macI2C_SCL_0()  macGPIO_PORT_I2C->BRR = macI2C_SCL_PIN                                /* SCL = 0 */
        
        #define macI2C_SDA_1()  macGPIO_PORT_I2C->BSRR = macI2C_SDA_PIN                                /* SDA = 1 */
        #define macI2C_SDA_0()  macGPIO_PORT_I2C->BRR = macI2C_SDA_PIN                                /* SDA = 0 */
        
        #define macI2C_SDA_READ()  ((macGPIO_PORT_I2C->IDR & macI2C_SDA_PIN) != 0)        /* 讀寫SDA口狀態(tài) */
#endif


void i2c_Start(void);
void i2c_Stop(void);
void i2c_SendByte(uint8_t _ucByte);
uint8_t i2c_ReadByte(void);
uint8_t i2c_WaitAck(void);
void i2c_Ack(void);
void i2c_NAck(void);
uint8_t i2c_CheckDevice(uint8_t _Address);

#endif

全部資料51hei下載地址 紅外測溫+顯示+存儲+按鍵控制:
測溫.7z (205.15 KB, 下載次數(shù): 559)


作者: yy3900636    時間: 2021-1-20 19:17
太謝謝樓主的分享了。。。很實用
作者: 5287152    時間: 2021-3-6 14:39
正在學習紅外測溫,謝謝。
作者: 5287152    時間: 2021-3-6 14:40
謝謝樓主的分享了,好好下來學習。
作者: wanyi5aini    時間: 2021-4-25 04:27
親愛的樓主 為啥我測出來的溫度是276.29 就不會改變了呢
作者: wifingtta    時間: 2023-4-16 16:22
謝謝樓主,已測試可用。樓主程序里是通過外部中斷,按鍵觸發(fā)測量的,所以可以把測溫程序從外部中斷放到main里,就可以直接看到數(shù)據(jù)了。這時提取出來,測試沒問題,溫度需要自己加補償
        while(1)
        {
                DelayMs(1000);
                tt=get_temperature();
                OLED_ShowCN(0,0,0);
                OLED_ShowCN(17,0,1);
                OLED_ShowStr(34,0,": ",2);
                OLED_ShowNum(50,0,change(tt)+3.14,2);//加3.14是因為我沒有聚集棱鏡所以輻射無法聚集導致測溫有誤差屬于修正誤差的額外加值(可以自己修改)
                if(change(tt)<32.86||change(tt)>34.16)//不正常警告
                        {
                                OLED_ShowCN(0,6,7);
              OLED_ShowCN(17,6,0);
                                OLED_ShowCN(34,6,4);
              OLED_ShowCN(50,6,5);
                                LED1(1);
        LED3(0);
                  }
                        else
    {
                                OLED_ShowCN(0,6,7);
              OLED_ShowCN(17,6,0);
                                OLED_ShowCN(34,6,6);
              OLED_ShowCN(50,6,5);       
        LED1(0);
        LED3(1);                       
                }





歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1