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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機控制溫濕度傳感器DHt11程序錯誤 求幫助

[復制鏈接]
跳轉到指定樓層
樓主
ID:274459 發表于 2018-1-10 18:31 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
單片機源程序如下:
  1. //51單片機控制溫濕度傳感器DHT11 然后在LCD1602上顯示當前的溫濕度及單位 其中濕度在第一行顯示 溫度在第二行顯示。單片機為YL-9最小系統。
  2. # include <reg51.h>
  3. # include <intrins.h>
  4. typedef unsigned char BYTE;
  5. typedef unsigned int WORD;
  6. #define uint unsigned int
  7. #define uchar unsigned char
  8. sbit io=P1^0;//dht11data端接單片機的P1^0口//
  9. sbit rw=P2^1;//一下三行是設置lcd1602的使能端//
  10. sbit rs=P2^0;
  11. sbit ep=P2^2;
  12. typedef bit BOOL;//此聲明一個布爾型變量即真或假//
  13. uchar data_byte;
  14. uchar RH,RL,TH,TL;
  15. //***************延時函數*************************************
  16. void delay(uchar ms) //延時模塊//
  17. {
  18.   uchar i;
  19.   while(ms--)               
  20.       
  21. for(i=0;i<100;i++);
  22. }
  23. void delay1()//一個for循環大概需要8個多機器周期 一個機器周期為1us 晶振為12MHz  也就是說本函數延時8us多 此延時函數必須德稍微精確一點
  24. {
  25.   uchar i;
  26.   for(i=0;i<1;i++);
  27. }

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

以上代碼51hei提供下載:
51單片機控制溫濕度傳感器DH.doc (24.5 KB, 下載次數: 102)


評分

參與人數 1黑幣 +5 收起 理由
spirit小杰 + 5 能不能私發完整的代碼給我,急需 謝謝

查看全部評分

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

使用道具 舉報

沙發
ID:260698 發表于 2018-10-11 00:52 | 只看該作者
樓主自己都沒把程序弄明白!
回復

使用道具 舉報

板凳
ID:808911 發表于 2020-7-28 18:36 | 只看該作者
是程序有問題還是什么,為什么不能生產hex文件
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜精品一区二区三区在线观看 | 国产免费看 | 成人免费看片 | 日韩福利片 | 欧美啪啪网站 | 欧美视频精品 | 特a毛片 | 国产日产精品一区二区三区四区 | 男人的天堂中文字幕 | 日韩欧美在线播放 | 日韩在线欧美 | 日韩在线资源 | 午夜av一区二区 | 国产精品一区二区三区久久 | 日韩欧美电影在线 | 国产免费一区二区 | 日本视频在线播放 | 日韩欧美在线不卡 | 久久久黄色 | 爱综合 | 中文字幕在线二区 | 久草新视频 | 蜜臀久久 | 免费看黄色国产 | 日本一区二区三区在线观看 | 羞羞视频在线观看免费观看 | 懂色tv| 色在线免费视频 | 337p日韩 | 日韩国产中文字幕 | 黄色欧美 | 国产午夜精品一区二区三区四区 | 国产在线高清 | 99久久国产综合精品麻豆 | com.国产 | 免费看片国产 | 欧美成人激情视频 | 日韩超碰 | 九七午夜剧场福利写真 | 欧美视频1区 | 国产粉嫩尤物极品99综合精品 |