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

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

QQ登錄

只需一步,快速開始

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

基于STM32的DHT11 oled顯示源碼

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:282147 發(fā)表于 2018-7-14 17:33 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
通過(guò)DHT11測(cè)出溫濕度值,oled顯示出來(lái)。
#include "stm32f10x.h"
#include "DHT11.h"
#include "Delay.h"
#include "bsp_usart.h"
#include "oled.h"
DHT11_Data DHT11;

void DHT11_GPIO_IN(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
        
GPIO_InitStructure.GPIO_Pin = DHT11_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //設(shè)置浮空輸入
GPIO_Init(DHT11_PORT,&GPIO_InitStructure);
}

/********************************************************
函數(shù):DHT11_GPIO_OUT
描述:設(shè)置GPIO口為輸出狀態(tài)
參數(shù):無(wú)
返回:無(wú)
********************************************************/
void DHT11_GPIO_OUT(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
        
GPIO_InitStructure.GPIO_Pin = DHT11_PIN;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //設(shè)置推挽輸出
GPIO_Init(DHT11_PORT,&GPIO_InitStructure);
}

/********************************************************
函數(shù):DHT11WriteStart
描述:發(fā)起開始信號(hào)
參數(shù):無(wú)
返回:無(wú)
********************************************************/
void DHT11WriteStart(void)//開始標(biāo)志
{
DHT11_GPIO_OUT(); //設(shè)置io為輸出模式
DHT11_DATA_OUT(1); //拉高
DHT11_DATA_OUT(0); //拉低
Delay_Ms(20); //主機(jī)拉低總線必須大于18ms
DHT11_DATA_OUT(1); //拉高
Delay_Us(30); //主機(jī)發(fā)送開始信號(hào)結(jié)束后延時(shí)等待20-40us
DHT11_GPIO_IN(); //啟動(dòng)信號(hào)開始后,為如數(shù)據(jù)將io設(shè)置設(shè)置為輸入模式
}

/********************************************************
函數(shù):DHT11ReadByte
描述:從DHT11中讀取一位數(shù)據(jù)
參數(shù):無(wú)
返回:返回讀出來(lái)的數(shù)據(jù)
********************************************************/
u8 DHT11ReadByte(void)
{
u8 temp=0,i;
for(i=0;i<8;i++)//讀取8位數(shù)據(jù)
{
while(DHT11_DATA_IN()==0);//等待變高電平[DHT在單片機(jī)采集DATA引腳輸出低電平時(shí),從低功耗模式轉(zhuǎn)至高速模式,等待DATA引腳變?yōu)楦唠娖絔
/*DHT11 以26us~28us的高電平表示“0”,以70us的高電平表示“1”
每一bit數(shù)據(jù)都以50us低電平時(shí)隙開始,當(dāng)檢測(cè)到60us后的電平區(qū)別狀態(tài)*/
Delay_Us(60);//1.DHT輸出 60us低電平 作為應(yīng)答信號(hào)2.DHT輸出 80us高電平 通知微處理器準(zhǔn)備接受數(shù)據(jù)
if(DHT11_DATA_IN()==1) //60us后還是高電平則是“1”
{
while(DHT11_DATA_IN()==1);
temp|=(u8)(0x01<<(7-i));
}
else //否則是“0”
{
temp&=(u8)~(0x01<<(7-i));
}
}
return temp;
}

/********************************************************
函數(shù):DHT11Read
描述:采樣當(dāng)前溫濕度值
參數(shù):
RH:濕度值的整數(shù)部分
RL: 濕度值的小數(shù)部分
TH: 溫度值的整數(shù)部分
TL: 溫度值的小數(shù)部分
返回:
********************************************************/
char a[5];
int temp;
void DHT11Read(void)
{
DHT11WriteStart(); //發(fā)起開始信號(hào)
if(DHT11_DATA_IN()==0)
{
while(DHT11_DATA_IN()==0);
while(DHT11_DATA_IN()==1);
DHT11.RH= DHT11ReadByte(); //濕度高8位
DHT11.RL= DHT11ReadByte(); //濕度低8位
DHT11.TH= DHT11ReadByte(); //溫度高8位
DHT11.TL= DHT11ReadByte(); //溫度低8位
DHT11.sum= DHT11ReadByte(); //校驗(yàn)和

DHT11_GPIO_OUT(); //采樣結(jié)束后設(shè)置io口為輸出,等待下一次開始信號(hào)
DHT11_DATA_OUT(1); //設(shè)置總線空閑狀態(tài)為高電平
}
if(DHT11.sum== DHT11.RH+DHT11.RL+DHT11.TH+DHT11.TL) //校驗(yàn)和與計(jì)算出的數(shù)據(jù)相等
        {
//                OLED_ShowString(6,6,"c");
//                printf("當(dāng)前環(huán)境濕度為%d.%d﹪,當(dāng)前環(huán)境溫度為%d.%d℃\r\n",DHT11.RH,DHT11.RL,DHT11.TH,DHT11.TL);
//                DHT11.TL=2;
               
                OLED_16x16CNStr(0,0,"23");
                OLED_ShowChar(32,0,':');
               
                temp=(int)DHT11.RH;
                sprintf(a,"%d",temp);
                OLED_ShowString(48,0,a);
               
                OLED_ShowChar(64,0,'.');
               
                temp=(int)DHT11.RL;
                sprintf(a,"%d",temp);
                OLED_ShowString(72,0,a);
                OLED_ShowChar(80,0,'%');
               
                OLED_16x16CNStr(0,2,"45");
                OLED_ShowChar(32,2,':');
               
                temp=(int)DHT11.TH;
                sprintf(a,"%d",temp);
                OLED_ShowString(48,2,a);
               
                OLED_ShowChar(64,2,'.');
               
                temp=(int)DHT11.TL;
                sprintf(a,"%d",temp);
                OLED_ShowString(72,2,a);
                OLED_16x16CNStr(80,2,"6");
               
}

}



DHT11.rar

41.99 KB, 下載次數(shù): 222, 下載積分: 黑幣 -5

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:494287 發(fā)表于 2019-3-25 22:51 | 只看該作者
頂一下,看懂再回來(lái)。哈哈
回復(fù)

使用道具 舉報(bào)

板凳
ID:393260 發(fā)表于 2019-4-9 08:35 來(lái)自觸屏版 | 只看該作者
昨天把兩個(gè)歷程兌一起,死在oled初始化了,過(guò)來(lái)借鑒一下
回復(fù)

使用道具 舉報(bào)

地板
ID:204748 發(fā)表于 2019-4-13 17:03 | 只看該作者
下載來(lái)看看,剛好用到
回復(fù)

使用道具 舉報(bào)

5#
ID:548519 發(fā)表于 2019-6-9 18:21 | 只看該作者
下載來(lái)研究下,非常感謝!
回復(fù)

使用道具 舉報(bào)

6#
ID:610983 發(fā)表于 2019-9-14 10:25 | 只看該作者
為啥燒進(jìn)去,OLED不亮,是管腳定義有問題嗎
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表