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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1150|回復: 0
收起左側

STM32單片機驅動AM2301A溫濕度模塊程序

[復制鏈接]
ID:1111228 發表于 2024-6-5 08:59 | 顯示全部樓層 |閱讀模式
/************************************************************************************
//  功能描述   : AM2301A模塊測試程序
//  測試條件   : STM32F103C8T6   晶振8M  系統時鐘72M
接線
AM2301A -------------------------------STM32F103C8T6
VCC------------------------------------5V
GND------------------------------------GND
SDA------------------------------------PA4

*************************************************************************************/

以下為.c文件
#include "AM2301A.h"
#include "delay.h"
uint16_t R_Date,T_Date;
uint8_t  Flag;
uint8_t  temp;
uint8_t  T_data_H,T_data_L,RH_data_H,RH_data_L,U8checkdata;
uint8_t  T_data_H_temp,T_data_L_temp,RH_data_H_temp,RH_data_L_temp,checkdata_temp;
uint8_t  comdata;

//AM2301A配置為輸出模式,引腳是GPIOA_4
void AM2301A_OUT_GPIO_Config(void)
{
                        GPIO_InitTypeDef GPIO_InitStructure;
                        RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE);

                        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
                        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
                        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
                        GPIO_Init(GPIOA, &GPIO_InitStructure);
        
}
//AM2301A配置為上拉輸入模式,引腳是GPIOA_4
void AM2301A_IN_GPIO_Config(void)
{
                        GPIO_InitTypeDef GPIO_InitStructure;
                        RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE);

                        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
                        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
                        GPIO_Init(GPIOA, &GPIO_InitStructure);
        
}
void AM2301A_COM(void)
{

                uint8_t i;
                AM2301A_IN_GPIO_Config();
                for(i=0;i<8;i++)           
                {

                                Flag=2;        
                                while((!AM2301A_DAT_Read)&&Flag++);
                                delay_us(30);
                                temp=0;
                                if(AM2301A_DAT_Read)
                                {
                                        temp=1;
                                }
                                Flag=2;
                                while((AM2301A_DAT_Read)&&Flag++);
                                //超時則跳出for循環                  
                                if(Flag==1)
                                {
                                        break;
                                }
                                //判斷數據位是0還是1         

                                // 如果高電平高過預定0高電平值則數據位為 1

                                comdata<<=1;
                                comdata|=temp; //0
                }//rof
                AM2301A_OUT_GPIO_Config();
}

        //--------------------------------
        //-----濕度讀取子程序 ------------
        //--------------------------------
        //----以下變量均為全局變量--------
        //----溫度高8位== data_H------
        //----溫度低8位== T_data_L------
        //----濕度高8位== RH_data_H-----
        //----濕度低8位== RH_data_L-----
        //----校驗 8位 == U8checkdata-----
        //----調用相關子程序如下----------
        //---- Delay();, Delay_10us();,COM();
        //--------------------------------

void AM2301A_T_RH(void)
{
                AM2301A_OUT_GPIO_Config();
          //主機拉低18ms
     AM2301A_DAT_0;
           delay_ms(18);
           AM2301A_DAT_1;
         //總線由上拉電阻拉高 主機延時20us
                 delay_us(40);   
         //主機設為輸入 判斷從機響應信號
           AM2301A_DAT_1;
         //判斷從機是否有低電平響應信號 如不響應則跳出,響應則向下運行         
                AM2301A_IN_GPIO_Config();
           if(!AM2301A_DAT_Read)                 //T !         
           {
                                 Flag=2;
                         //判斷從機是否發出 80us 的低電平響應信號是否結束         
                                 while((!AM2301A_DAT_Read)&&Flag++);
                                 Flag=2;
                         //判斷從機是否發出 80us 的高電平,如發出則進入數據接收狀態
                                 while((AM2301A_DAT_Read)&&Flag++);
                         //數據接收狀態                 
                                 AM2301A_COM();
                                 RH_data_H_temp=comdata;
                                 AM2301A_COM();
                                 RH_data_L_temp=comdata;
                                 AM2301A_COM();
                                 T_data_H_temp=comdata;
                                 AM2301A_COM();
                                 T_data_L_temp=comdata;
                                 AM2301A_COM();
                                 checkdata_temp=comdata;
                                 AM2301A_DAT_1;
                         //數據校驗
                        
                                 temp=(T_data_H_temp+T_data_L_temp+RH_data_H_temp+RH_data_L_temp);
                                 if(temp==checkdata_temp)
                                 {
                                                        RH_data_H=RH_data_H_temp;
                                                        RH_data_L=RH_data_L_temp;
                                                        T_data_H=T_data_H_temp;
                                                        T_data_L=T_data_L_temp;
                                                        U8checkdata=checkdata_temp;
                                                        R_Date=RH_data_H_temp*256+RH_data_L_temp;
                                                        T_Date=T_data_H_temp*256+T_data_L_temp;
                                 }//fi
           }//fi
                AM2301A_OUT_GPIO_Config();
        }

具體整個驅動文件在附件,工程模塊采用正點原子的就可以。

原理圖: 無
仿真: 無
代碼(.c文件和.h文件  2個): AM2301A.zip (1.74 KB, 下載次數: 4)

評分

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

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 中文字幕在线播放不卡 | 成人不卡一区二区 | 人人干人人干人人干 | 久久久涩 | 成人免费在线观看 | 色婷婷精品久久二区二区蜜臂av | 日韩精品在线观看一区二区 | 日本在线一二 | 精品国产91久久久久久 | 91佛爷在线观看 | 欧美一区二区三区在线 | 国产成人免费视频 | 亚洲视频中文字幕 | 国产一区二区在线播放 | 久久久久久999 | 久久伊人一区 | 国产一区二区三区在线 | 精品亚洲一区二区三区 | 91精品久久久久久久久99蜜臂 | 少妇一区二区三区 | 国产欧美在线视频 | 都市激情亚洲 | 日本一区二区视频 | 国产成人精品一区二区三区四区 | 日韩欧美在线一区 | 日韩成人免费视频 | 国产精品欧美一区二区三区 | www.色综合| 欧美一区二区三区视频 | 久久综合一区二区 | 日韩精品中文字幕在线 | 天天碰夜夜操 | 久久99深爱久久99精品 | 人人做人人澡人人爽欧美 | 成人在线免费av | 日本一区二区三区视频在线 | 日韩免费视频一区二区 | 在线一区 | 欧美一级黄色片免费观看 | 91视频一区 | 免费在线观看成年人视频 |