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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2604|回復: 5
收起左側

求助利用DHT11進行溫濕度調節的風扇的程序傳輸困難的問題

[復制鏈接]
ID:350909 發表于 2018-6-13 10:56 | 顯示全部樓層 |閱讀模式
現在急需大神幫助解決DHT11傳輸困難的問題,具體程序如下
  1. #include<reg51.h>
  2. #include<intrins.h>

  3. #define   uint         unsigned int
  4. #define   uchar unsigned char //宏的定義變量類型 uchar 代替 unsigned char

  5. typedef unsigned char  BYTE;
  6. typedef unsigned char  WORD;
  7. typedef         bit BOOL;//聲明一個布爾型變量,即真或假
  8. sbit io=P2^3;         //dht11data端接單片機的P2^3
  9. sbit rw=P2^0;
  10. sbit rs=P2^1;
  11. sbit ep=P2^2;   //設置LCD1602的使能端
  12. uchar  data_byte;        //單片機接收DHT11的數據
  13. uchar  RH,RL,TH,TL;         //濕度、溫度各自的高八位和低八位
  14. void  delay1()  //用于一個FOR循環大概需要8個多機器周期,一個機器周期為1us,晶振12mhz,本延遲函數8us多
  15. {
  16.   uchar  i;                                 
  17.   for(i=0;i<1;i++);
  18. }

  19. BOOL  lcd_bz()    //測試LCD忙碌狀態,返回值為布爾型數值,真或假“1”、“‘0”
  20. {
  21.     BOOL   result;
  22.         rs=0; //讀忙信號
  23.         rw=1;
  24.         ep=1;
  25.         _nop_();
  26.         _nop_();
  27.         _nop_();
  28.         _nop_();
  29.         result=(BOOL)(P2&0x80);
  30.         ep=0;
  31.         return(result);
  32. }
  33. void  write_cmd(uchar cmd)    //寫指令
  34. {
  35.     while(lcd_bz());
  36.     rs=0;
  37.     rw=0;
  38.     ep=0;
  39.     _nop_();
  40.     _nop_();
  41.     P0=cmd;
  42.          _nop_();
  43.     _nop_();
  44.          _nop_();
  45.     _nop_();
  46.         ep=1;
  47.          _nop_();
  48.     _nop_();
  49.          _nop_();
  50.     _nop_();
  51.         ep=0;
  52. }
  53. void write_addr(uchar addr) //寫地址
  54. {
  55. write_cmd(addr|0x80);//LCD第一行的首地址為0X80,第二行的首地址為0X80+0X40+0XC0
  56. }
  57. void write_byte(uchar  dat)          //寫字節
  58. {
  59.      while(lcd_bz());
  60.     rs=1;
  61.     rw=0;
  62.     ep=0;
  63.     _nop_();
  64.     _nop_();
  65.     P0=dat;
  66.          _nop_();
  67.     _nop_();
  68.          _nop_();
  69.     _nop_();
  70.         ep=1;
  71.          _nop_();
  72.     _nop_();
  73.          _nop_();
  74.     _nop_();
  75.         ep=0;
  76. }
  77. void lcd_init()//LCD初始化
  78. {
  79.   write_cmd(0x38);//設置lcd兩行顯示,一個數據由5*7點陣表示 ,8位數據接口
  80.   delay(1);
  81.   write_cmd(0x0c);//清除屏幕顯示
  82.   delay(1);
  83.   write_cmd(0x06);//設定輸入方式,增量不移位
  84.   delay(1);
  85. }
  86. void display(uchar addr,uchar q)//在某地址上顯示內容,addr表示的是地址偏移量,q表示的是顯示的字符或者數字
  87. {
  88.      delay(10);
  89.          write_addr(addr);
  90.          write_byte(q);
  91.          delay(10);  //修改此時間,可以改變lcd上數值跳變的速度
  92. }
  93. //*****DHT11測試模塊**
  94. void  start()//開始信號
  95. {
  96.    io=1;
  97.    delay1();
  98.    io=0;
  99.    delay(25);//主機把總線拉低必須大于18MS  DHT11能檢測到起始信號
  100.    io=1;//  20-40us
  101.    delay1();
  102.    delay1();
  103.    delay1();//三個延時函數差不多為24us
  104. }
  105. uchar receive_byte()//接收一個字節
  106. {
  107.      uchar i,temp;
  108.      for(i=0;i<8;i++)//        接收8bit的數據
  109.         {
  110.          while(!io);      //等待50US的低電平開始信號結束
  111.          delay1();       //開始信號結束之后,延時26US-28US以下是三個延時函數
  112.          delay1();
  113.          delay1();
  114.          temp=0;       //時間為26us-28us ,表示接收的數據為“0”
  115.          if(io==1)
  116.          temp=1;      //如果26us-28us之后,還為高電平,則表示接收的數據為“1”
  117.          while(io);   //等待數據信號高電平,“0'為26us-28us,’1‘為70us
  118.          data_byte<<=1;        //接受的數據為高位在前,右移
  119.          data_byte|=temp;
  120.          }
  121.          return data_byte;
  122.         }
  123. void receive()//單片機接收DHT11數據
  124. {
  125.      uchar T_H,T_L,R_H,R_L,check,num_check,i;
  126.          start();//開始信號
  127.          io=1;//主機設為輸入,判斷從機  DHT11響應信號
  128.          if(!io)//判斷從機有低電平響應信號是否結束
  129.         {
  130.           while(!io); //判斷從機發出80us的低電平響應信號是否結束
  131.           while(io);//判斷從機發出80us的高電平是否結束,如結束則主機進入數據接收狀態
  132.          R_H=receive_byte();//濕度高位
  133.          R_L=receive_byte();//濕度低位
  134.          T_H=receive_byte();//溫度高位
  135.          T_L=receive_byte();//溫度低位
  136.      check=receive_byte();//校驗位
  137.      io=0;//當最后一BIT數據接完畢后,從機拉低電平50US
  138.      for(i=0;i<7;i++)  //差不多50US的延時
  139.      delay1();
  140.      io=1;//總線由上拉電阻拉高,進入空閑狀態
  141.       num_check=R_H+R_L+T_H+T_L;
  142.       if(num_check==check)//判斷讀到四個數據之和是否與校驗位相同
  143.    {
  144.             RH=R_H;
  145.          RL=R_L;
  146.          TH=T_H;
  147.          TL=T_L;
  148.          check=num_check;
  149.    }
  150.   }
  151. }
  152. //DHT11數據顯示程序
  153. void  main()
  154. {
  155.   lcd_init();//初始化LCD
  156.   while(1)
  157.   {
  158.         display(0x00,'R');//LCD的第一行顯示
  159.         display(0x01,':');
  160.         display(0x02,RH/10+0x30);//表示帶字庫的LCD1602中的0x30的位置放有數字0RH/10+0x30即表示濕度的十位數字在字庫RH/10+0x30的位置處放著
  161.         display(0x03,RH%10+0x30);
  162.         display(0x04,'%');
  163.         display(0x40,'T');//LCD的第二行顯示
  164.         display(0x41,':');
  165.         display(0x42,TH/10+0x30);
  166.         display(0x43,TH%10+0x30);
  167.         display(0x44,0xdf);//以下是兩個溫度單位的處理
  168.         display(0x45,0x43);
  169.   }
  170. }
復制代碼


回復

使用道具 舉報

ID:320306 發表于 2018-6-13 13:35 | 顯示全部樓層
傳輸困難是什么問題!。。。。。。。。。。。。
回復

使用道具 舉報

ID:350909 發表于 2018-6-15 12:38 | 顯示全部樓層
就是傳感器不能把數據傳輸到單片機,啟動后完全沒有反應
回復

使用道具 舉報

ID:498899 發表于 2019-3-27 09:26 來自手機 | 顯示全部樓層
DHT11濕度傳感器當開關控制風扇程序如何寫
回復

使用道具 舉報

ID:246251 發表于 2019-4-1 19:08 | 顯示全部樓層
一個個模塊功能的排查,先看下DHT11是否正常工作
回復

使用道具 舉報

ID:299872 發表于 2019-4-2 04:16 來自手機 | 顯示全部樓層
2290692143 發表于 2018-6-15 12:38
就是傳感器不能把數據傳輸到單片機,啟動后完全沒有反應

你搞個熱敏電阻,不就完事了,搞這復雜!
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久久久久综合 | 国产乱人伦精品一区二区 | 天堂视频免费 | 国产精品a久久久久 | 久久综合色综合 | 国产精品永久免费视频 | 欧美激情一区二区三区 | 日韩在线欧美 | 欧美在线免费 | 色一情一乱一伦一区二区三区 | 精品视频一区在线 | 欧美在线天堂 | 亚洲一区在线观看视频 | 日韩视频成人 | 国外成人在线视频网站 | 中文字幕 国产精品 | 91精品国产一区二区三区动漫 | 成人精品一区二区 | 久久伊人精品一区二区三区 | 成人99 | 久久久一区二区三区 | 精品久久免费 | 国产一级片久久久 | 青青草av网站 | 日韩精品一区二区三区在线播放 | 亚洲免费在线观看 | 在线欧美一区二区 | 国产三区四区 | 精品在线播放 | 国产欧美日韩综合精品一 | 欧美一区免费 | 91精品久久久久久久久中文字幕 | 日韩一区二区久久 | 亚洲美女一区二区三区 | 99在线播放 | 99精品国产一区二区三区 | 午夜精品久久 | 日韩成人在线播放 | 国产成人一区二区三区精 | 欧美视频三区 | 中文字幕第一页在线 |