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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1230|回復: 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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区久久 | 一区二区国产精品 | 国产成人精品一区二区三区在线 | 成人深夜福利 | 亚洲精品一区二区冲田杏梨 | 日韩欧美天堂 | 欧美淫| 美女天天操 | 亚洲午夜网 | 中文字幕亚洲视频 | 一区二区小视频 | 欧美精品一区二区三区四区 | 欧美亚洲国产精品 | 亚洲免费在线 | 国产999精品久久久久久绿帽 | 亚洲精品一二三 | 免费高潮视频95在线观看网站 | 国产精品一区二区无线 | 99久久99热这里只有精品 | 亚洲 欧美 日韩 在线 | 黄色毛片网站在线观看 | 精品视频国产 | 中文字幕成人网 | 九九久久国产 | 欧美日本在线观看 | 欧美成人h版在线观看 | 欧美一级做a爰片免费视频 国产美女特级嫩嫩嫩bbb片 | 久久国产精品免费视频 | 在线免费观看黄网 | 人人天天操 | 性国产xxxx乳高跟 | 亚洲精品综合 | 国产一区二 | 狠狠综合久久av一区二区小说 | 亚洲人成人一区二区在线观看 | 狠狠做六月爱婷婷综合aⅴ 国产精品视频网 | 久久成人国产 | 成人影院午夜 | 亚洲成人精品一区 | 黑人精品 | 免费在线黄色av |