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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2381|回復: 1
收起左側

基于51單片機的1602液晶屏顯示DHT11溫濕度程序

[復制鏈接]
ID:439115 發表于 2018-12-4 12:09 | 顯示全部樓層 |閱讀模式
基于51單片機的1602液晶屏顯示DHT11溫濕度

單片機源程序如下:
  1. #include<reg52.h>
  2. #include <intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit leden=P1^0;   //EN使能
  6. sbit ledrs=P1^2;   //高寫指令低寫數據
  7. sbit ledbj=P1^4;
  8. sbit Data=P3^6;   //定義數據線
  9. uchar rec_dat[11];   //用于顯示的接收數據數組
  10. uchar num,i;
  11. uchar code table[]="I LIKE QAU";
  12. void csh();
  13. void delay1ms(uint a);
  14. void DHT11_delay_us(uchar n);
  15. void DHT11_delay_ms(uint z);
  16. void DHT11_start();
  17. void DHT11_receive();
  18. void com(uchar c);
  19. void dat(uchar d);        
  20. void main()
  21.         {  

  22.                 com(0x01);         //清屏
  23.                 csh();         
  24.                 while(1)
  25.                 {
  26.                 DHT11_delay_ms(1500);    //DHT11上電后要等待1S以越過不穩定狀態在此期間不能發送任何指令
  27.                 com(0x80+0x02);
  28.                 DHT11_receive();
  29.                 for(i=0;i<11;i++)                //顯示溫度數據
  30.                 dat(rec_dat[i]);
  31.                 }  
  32.                                                         
  33. }
  34. void csh()         //1602初始化
  35. {        ledbj=0;
  36.         leden=0;
  37.         com(0x38);
  38.         com(0x0C);
  39.         com(0x06);
  40.         com(0x80);
  41.         com(0x80+0x43);
  42.                 for(num=0;num<10;num++)          //顯示table1值
  43.         {
  44.                 dat(table[num]);
  45.                 delay1ms(200);
  46.         }         
  47. }
  48. void delay1ms(uint a) //100000=1s,1ms=100
  49. {        uint i,j;
  50.         for(i=a;i>0;i--)
  51.         for(j=100;j>0;j--);
  52. }
  53. void com(uchar com)          //寫指令
  54. {
  55.         ledrs=0;
  56.         P2=com;
  57.         delay1ms(5); //
  58.         leden=1;
  59.         delay1ms(5);
  60.         leden=0;        
  61. }
  62. void dat(uchar dat)          //寫數據
  63. {
  64.         ledrs=1;
  65.         P2=dat;
  66.         delay1ms(5);
  67.         leden=1;
  68.         delay1ms(5);
  69.         leden=0;        
  70. }

  71. void DHT11_delay_us(uchar n)
  72. {
  73.     while(--n);
  74. }

  75. void DHT11_delay_ms(uint z)
  76. {
  77.    uint i,j;
  78.    for(i=z;i>0;i--)
  79.       for(j=110;j>0;j--);
  80. }
  81. void DHT11_start()
  82. {
  83.    Data=1;
  84.    DHT11_delay_us(2);
  85.    Data=0;
  86.    DHT11_delay_ms(20);   //延時18ms以上
  87.    Data=1;
  88.    DHT11_delay_us(30);
  89. }
  90. uchar DHT11_rec_byte()      //接收一個字節
  91. {
  92.    uchar i,dat=0;
  93.   for(i=0;i<8;i++)    //從高到低依次接收8位數據
  94.    {         
  95.       while(!Data);   ////等待50us低電平過去
  96.       DHT11_delay_us(8);     //延時60us,如果還為高則數據為1,否則為0
  97.       dat<<=1;           //移位使正確接收8位數據,數據為0時直接移位
  98.       if(Data==1)    //數據為1時,使dat加1來接收數據1
  99.          dat+=1;
  100.       while(Data);  //等待數據線拉低   
  101.     }  
  102.     return dat;
  103. }  
  104. void DHT11_receive()      //接收40位的數據
  105. {
  106.     uchar R_H,R_L,T_H,T_L,RH,RL,TH,TL,revise;
  107.     DHT11_start();
  108.     if(Data==0)
  109.     {
  110.         while(Data==0);   //等待拉高     
  111.         DHT11_delay_us(40);  //拉高后延時80us
  112.         R_H=DHT11_rec_byte();    //接收濕度高八位  
  113.         R_L=DHT11_rec_byte();    //接收濕度低八位  
  114.         T_H=DHT11_rec_byte();    //接收溫度高八位  
  115.         T_L=DHT11_rec_byte();    //接收溫度低八位
  116.         revise=DHT11_rec_byte(); //接收校正位

  117.         DHT11_delay_us(25);    //結束

  118.         if((R_H+R_L+T_H+T_L)==revise)      //校正
  119.         {
  120.             RH=R_H;
  121.             RL=R_L;
  122.             TH=T_H;
  123.             TL=T_L;
  124.         }
  125.         /*數據處理*/
  126.             rec_dat[0]=' ';
  127.         rec_dat[1]='T';
  128.         rec_dat[2]='E';
  129.         rec_dat[3]='M';
  130.         rec_dat[4]=' ';
  131.                 rec_dat[5]=' ';
  132.         rec_dat[6]='0'+(TH/10);
  133.         rec_dat[7]='0'+(TH%10);        
  134.                 rec_dat[8]='.';
  135.                 rec_dat[9]='0'+TL;
  136.                 rec_dat[10]='C';

  137.                 if(TH>=32)
  138.                 {
  139.                 ledbj=1;
  140.                 }
  141.                 else
  142.                 {
  143.                 ledbj=0;
  144.                 }
  145.     }
  146. }
復制代碼

所有資料51hei提供下載:
測量溫度顯示.zip (90.98 KB, 下載次數: 41)
回復

使用道具 舉報

ID:303240 發表于 2018-12-19 23:38 | 顯示全部樓層
你寫的是些什么東西啊 直接亂搞
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品高清一区二区三区 | 九七午夜剧场福利写真 | 91一区二区在线观看 | 日本不卡免费新一二三区 | 成人一区二区视频 | 免费网站国产 | 中文字幕99| 国产精品一区三区 | 成人在线免费网站 | 久久精品| 久久性 | 一级片在线免费看 | 国产农村妇女精品一二区 | 91社区在线观看播放 | av一区二区三区四区 | 91免费版在线观看 | 日韩在线观看 | 91精品久久久久久久久久小网站 | 91视频在线 | 成人免费黄色片 | 老外黄色一级片 | www.国产视频 | 99久久日韩精品免费热麻豆美女 | 欧美日韩在线精品 | 老外黄色一级片 | 在线a视频| 免费v片| 国产精品一区二区三区久久 | 国产第一亚洲 | 国产精品国产成人国产三级 | 在线免费观看毛片 | 国内精品久久影院 | 免费黄色网址视频 | 一区二区三区不卡视频 | 久久精品亚洲一区二区三区浴池 | 亚洲精品小视频在线观看 | 欧美一级在线观看 | 久久夜夜 | 国产成人免费视频网站高清观看视频 | 欧美激情综合色综合啪啪五月 | 曰韩三级 |