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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4271|回復: 4
打印 上一主題 下一主題
收起左側

DHT11的stm32溫濕度測量源代碼

[復制鏈接]
跳轉到指定樓層
樓主
stm32的溫度測量
CMSIS 存放的是由ARM和ST官方提供的一些芯硬件底層定義
HARDWARE 存放開發者自己定義的外設 比如LED
STLib 存放ST官方對32的支持庫
startup 是STM32的啟動文件
USR 主函數入口 和一些用戶文件
SYSTEM 存放原子開發的系統函數
OBJ LIST 存放生成的中間文件和最后生成的hex文件
PROJ 存放工程文件


完整源碼下載:
DHT11.7z (243.25 KB, 下載次數: 86)




部分代碼預覽:
  1. /**********************************
  2. * 功能:讀取溫濕度傳感器數據
  3. * 版本:V1.0
  4. * 作者:zx
  5. * 日期:2016/5/29
  6. * 說明:不要試著在傳感器正常工作時將其拔掉,否則會使程序卡死,如果這種情況發生了,請重啟設備!
  7. *       原因是程序可能會卡在while循環上,解決的最有效辦法是加入限時跳出機制,但此版本沒有!
  8. ***********************************/
  9. #include "DHT11.h"
  10. //依次是濕度整數、小數部分、溫度整數、小數部分、校驗碼
  11. u8 HR,H_temp,Temp,T_temp,checkcode;

  12. void DHT11_Config(void)
  13. {
  14.     GPIO_InitTypeDef GPIO_InitStructure;
  15.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
  16.    
  17.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
  18.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  19.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  20.    
  21.     GPIO_Init(GPIOC,&GPIO_InitStructure);
  22.    
  23.     GPIO_SetBits(GPIOC,GPIO_Pin_0);
  24. }

  25. void Data_IO_IN(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
  26. {
  27.     GPIO_InitTypeDef GPIO_InitStructure;
  28.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin;
  29.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
  30.    
  31.     GPIO_Init(GPIOx,&GPIO_InitStructure);
  32. }

  33. void Data_IO_OUT(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
  34. {
  35.     GPIO_InitTypeDef GPIO_InitStructure;
  36.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin;
  37.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  38.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  39.    
  40.     GPIO_Init(GPIOx,&GPIO_InitStructure);
  41. }

  42. u8 DHT11_ReadByte(void)
  43. {
  44.     u8 i,dat = 0;
  45.     Data_IO_IN(GPIOC,GPIO_Pin_0);
  46.     for(i=0;i<8;++i)
  47.     {
  48.         while(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_0));
  49.         Delay_us(30);
  50.         if(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_0))
  51.         {
  52.             dat <<= 1;
  53.             dat |= 0x01;
  54.         }
  55.         else
  56.         {
  57.             dat <<= 1;
  58.         }
  59.         while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_0));
  60.     }
  61.     return dat;
  62. }

  63. u8 DHT11_ReadData(void)
  64. {
  65.     Data_IO_OUT(GPIOC,GPIO_Pin_0);
  66.     LINE_LOW(GPIOC,GPIO_Pin_0);
  67.     Delay_ms(25);
  68.     LINE_HIGH(GPIOC,GPIO_Pin_0);
  69.     Data_IO_IN(GPIOC,GPIO_Pin_0);
  70.     while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_0));
  71.     while(!GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_0));
  72.     while(GPIO_ReadInputDataBit(GPIOC,GPIO_Pin_0));
  73.         HR = DHT11_ReadByte();
  74.     H_temp = DHT11_ReadByte();
  75.     Temp = DHT11_ReadByte();
  76.     T_temp = DHT11_ReadByte();
  77.     checkcode = DHT11_ReadByte();   
  78.     if(HR+H_temp+Temp+T_temp==checkcode)
  79.        return SUCCESS;
  80.     else
  81.        return FAIL;
  82.            
  83. }


復制代碼


  1. #include "user_app.h"

  2. extern u8 HR,H_temp,Temp,T_temp,checkcode;

  3. extern char  LCD_Start_UI[];    //開機UI
  4. extern char  LCD_Menu_UI[];     //主界面菜單UI

  5. extern char  LCD_Temp_UI[];
  6. extern char  LCD_Hum_UI[];
  7. extern char  LCD_CPU_UI[];

  8. extern char Pos[];

  9. extern char DHT11_Init_OK[];
  10. extern char DS18B20_Init_OK[];
  11. extern char DS18B20_Init_ERROR[];
  12. extern char LED_Init_OK[];
  13. extern char BEEP_Init_OK[];

  14. int main(void)
  15. {
  16.     s16 i = 0;
  17.     u8 sta = 0;
  18.     //SysTick_Init();
  19.     Delay_init();
  20.     UART_Config(115200);

  21.     LCD_Show(LCD_Start_UI);
  22.     Delay_ms(1000);
  23.     BIOS_Check();
  24.     LCD_Show(LCD_Menu_UI);
  25.     Delay_ms(300);
  26.     for(;;)
  27.     {
  28.         
  29.        i = DS18B20_Get_Temp();
  30.        DHT11_ReadData();
  31.        Warning_Beep(i);   
  32.        Temp_Convert(i);
  33.        Hum_Convert(HR);
  34.        DrawGraph(i);
  35.        sta = !sta;
  36.        LED_RUN(sta);
  37.        //GPIOB->ODR ^= 1<<10;
  38.        LCD_Show(LCD_Temp_UI);
  39.        Delay_ms(100);
  40.        LCD_Show(LCD_Hum_UI);
  41.       

  42. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼


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

使用道具 舉報

沙發
ID:105206 發表于 2017-12-20 19:45 | 只看該作者
學習了。感謝分享。
回復

使用道具 舉報

板凳
ID:149537 發表于 2018-3-13 22:02 | 只看該作者
不能下載源代碼馬??
回復

使用道具 舉報

地板
ID:305939 發表于 2018-4-11 16:23 | 只看該作者
能使用proteus仿真嗎
回復

使用道具 舉報

5#
ID:234919 發表于 2018-4-24 14:09 | 只看該作者
好東西值得學習
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 特黄aaaaaaaaa真人毛片 | heyzo在线观看 | 天天拍夜夜操 | 一区二区三区免费 | 精品一区在线 | 一区二区三区在线免费观看 | 蜜桃视频成人 | 色婷婷色| 神马午夜嘿嘿 | 亚洲精品日韩精品 | 亚洲成人一区二区三区 | 欧美日韩在线一区二区 | 人体free性hd| 蜜桃成人av | 日韩精品毛片 | 成人在线小视频 | 成人免费视频视频 | 久久精品国产视频 | 免费视频久久久 | 日本免费视频 | 九色av | 国产三级在线播放 | 51免费看成人啪啪片 | 超碰在线中文字幕 | 日韩在线观看一区 | 亚洲免费在线视频 | 簧片在线免费观看 | 日本免费在线观看视频 | 亚洲人高潮女人毛茸茸 | 日韩三级在线播放 | 日日干av | 免费av网址在线观看 | 国产三级视频在线播放 | 亚洲国产成人av | 亚洲精品久 | 国产在线不卡 | www.夜夜| 涩涩视频免费观看 | 婷婷俺也去 | 黄色网在线 | 亚洲天堂网在线观看 |