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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機+DHT11+1602顯示屏+Proteus仿真+JDY-31 SPP藍牙模塊資料

[復制鏈接]
ID:761006 發表于 2020-11-28 15:43 | 顯示全部樓層 |閱讀模式
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
51hei.png

Altium Designer畫的PCB圖如下:(51hei附件中可下載工程文件)
51hei.png

單片機源程序如下:
  1. /*********************************************************************************
  2.   本實驗僅限學習交流  AT89C52  12Mhz DHT11 LCD1602
  3.    接線如下
  4.    DHT11_DQ = P2^0
  5.    LCD1602_E= P2^7
  6.    LCD1602_RW=P2^5
  7.    LCD1602_RS=P2^6
  8.    D0—D7接到P0口
  9.    本實驗沒有用到DHT的校驗位Check_Init,想使用校驗位,定義一個變量t,t=HUMI_Buffer_Int+HUMI_Low_Int+TEM_Buffer_Int+TEM_Low_Int;
  10.    判斷t與Check_Init是否相等。
  11.          本實驗只顯示了整數部分,小數部分沒顯示,小數部分顯示和整數部分顯示一樣,類別進行。
  12. *********************************************************************************/
  13. #include"dht11.h"
  14. #include"reg52.h"
  15. #include"lcd.h"
  16. unsigned char dis[]="RH:";        //濕度字符串
  17. unsigned char dis1[]="TEMP:"; //溫度字符串
  18. unsigned char i;
  19. int main()
  20. { LcdInit();           //1602初始化
  21. DHT11_Init();           //DHT11初始化
  22. while(1)
  23. {
  24.    DHT11_Read();  //DHT11數值讀取
  25.    LcdWriteCom(0x80);//第一列第一個字符
  26.    for(i=0;i<3;i++)
  27.    {
  28.            LcdWriteData(dis[i]); //顯示“RH:”
  29.    }
  30.    LcdWriteData(HUMI_Buffer_Int/10+0x30);        //顯示濕度的十位
  31.    LcdWriteData(HUMI_Buffer_Int%10+0x30);        //顯示濕度的個位
  32.    LcdWriteData(0x25);                                                //顯示字符“%”
  33.    LcdWriteCom(0x80+0x40);                                        //第二行第一個
  34.    for(i=0;i<5;i++)
  35.    {
  36.                    LcdWriteData(dis1[i]);                           //顯示字符“TEMP”
  37.    }
  38.    LcdWriteData(TEM_Buffer_Int/10+0x30);   //顯示溫度的十位
  39.    LcdWriteData(TEM_Buffer_Int%10+0x30);   //顯示溫度的個位
  40.    LcdWriteData(0xDF);
  41.    LcdWriteData(0x43);                                   //顯示字符“%”
  42. }


  43. }
復制代碼
  1. #include "DHT11.h"

  2. //定義變量
  3. unsigned char HUMI_Buffer_Int = 0;            //濕度高位
  4. unsigned char HUMI_Low_Int=0;                        //濕度低位
  5. unsigned char TEM_Buffer_Int = 0;                //溫度高位
  6. unsigned char TEM_Low_Int=0;                        //溫度低位
  7. unsigned char Check_Init=0;                                //檢驗位
  8. //****************************************************
  9. //MS延時函數(12M晶振下測試)
  10. //****************************************************
  11. void DHT11_delay_ms(unsigned int n)
  12. {
  13.         unsigned int  i,j;
  14.         for(i=n;i>0;i--)
  15.         {
  16.         for(j=112;j>0;j--);
  17.         }
  18. }
  19. //****************************************************
  20. //延時函數
  21. //****************************************************
  22. void DHT11_Delay( unsigned int n )
  23. {
  24.         unsigned int i;
  25.         for(i = 0 ; i < n ; i++ );
  26. }

  27. //****************************************************
  28. //初始化DHT11
  29. //****************************************************
  30. bit DHT11_Init()
  31. {
  32.         bit Flag_DHT11 = 1;
  33.         DHT11_DQ = 0;
  34.         DHT11_delay_ms(25);                        //延時>18ms

  35.         DHT11_DQ = 1;
  36.         DHT11_Delay(2);                                //延時20~40us

  37.         DHT11_Delay(2);                                
  38.         Flag_DHT11 = DHT11_DQ;               
  39.         DHT11_Delay(2);                                //DHT11響應總時間80us

  40.         DHT11_Delay(4);                                //DHT11拉高信號80us

  41.         return Flag_DHT11;               
  42. }

  43. //****************************************************
  44. //讀一個字節DHT11數據
  45. //****************************************************
  46. unsigned char DHT11_Read_Byte()
  47. {
  48.         unsigned char i,dat,j;
  49.         while( DHT11_DQ == 1 );
  50.         for( i = 0 ; i < 8 ; i++ )
  51.         {
  52.                 while( DHT11_DQ == 0 );        
  53.                 dat <<= 1;
  54.                 for( j = 0 ; DHT11_DQ == 1 ; j++);
  55.                 if( j < 10 )
  56.                         dat &= 0xfe;                //低位清零
  57.                 else
  58.                         dat |= 0x01;                //低位置一
  59.         }
  60.         return dat;
  61. }

  62. //****************************************************
  63. //讀取溫濕度值,存放在TEM_Buffer和HUMI_Buffer
  64. //****************************************************
  65. void DHT11_Read()
  66. {
  67.         if( DHT11_Init() == 0 )
  68.         {
  69.                 HUMI_Buffer_Int = DHT11_Read_Byte();                   //讀取濕度的整數值
  70.                 HUMI_Low_Int=DHT11_Read_Byte();                                //讀取濕度的小數值
  71.                 TEM_Buffer_Int = DHT11_Read_Byte();                        //讀取溫度的整數值
  72.                 TEM_Low_Int=DHT11_Read_Byte();                    //讀取溫度的小數值
  73.                 Check_Init=DHT11_Read_Byte();                                //讀取校驗和
  74.                 DHT11_Delay(3);                                        //DHT11拉低總線50us

  75.                 DHT11_DQ = 1;                                        //釋放總線                        
  76.         }        
  77. }
復制代碼


所有資料51hei提供下載:
仿真程序資料.7z (5.09 MB, 下載次數: 108)

評分

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

查看全部評分

回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲国产成人在线观看 | 精品欧美一区二区三区久久久 | 日本超碰在线 | 欧美日韩午夜精品 | 日韩精品一区二区三区在线观看 | 999热在线视频| 久久久久国产 | 日韩一区二区三区精品 | 日韩在线免费视频 | 国产精品国产三级国产aⅴ中文 | 免费视频一区二区 | 国产探花在线精品一区二区 | 国产高清精品在线 | 欧美日韩91| 久久精品欧美一区二区三区不卡 | 91免费电影 | 欧美日韩中文字幕 | 日韩免费av | 国产色黄 | 中文字幕成人在线 | 欧美国产视频 | 九色91视频 | 成人区精品 | 91精品国产综合久久久密闭 | 国产精品波多野结衣 | 成人午夜激情 | 国产亚洲精品久久yy50 | 三级免费网 | 中文字幕在线观看一区二区 | 国产特一级黄色片 | 亚洲精品一区在线 | 99热这里 | 国产夜恋视频在线观看 | 精品91久久| 日韩成人一区二区 | 国产成人精品午夜视频免费 | 久久精品91久久久久久再现 | 一级做a爰片性色毛片视频停止 | 国产在线小视频 | 亚洲人成人一区二区在线观看 | 亚洲欧美一区二区三区视频 |