久久久久久久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 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品毛片久久久久久久 | 精品欧美一区二区在线观看视频 | 天天爽网站 | 欧美1区| 一级大黄色片 | www日韩高清 | 日本成人片在线观看 | 欧洲亚洲视频 | 亚洲欧美日韩精品久久亚洲区 | 黑人巨大精品欧美一区二区免费 | 精品一区二区三区中文字幕 | av在线免费观看网站 | 一区二区三区国产在线观看 | 国产亚洲欧美在线 | av看片| 亚洲精品1区 | 艹逼网 | 一区二区三区在线 | www.久久| 欧美精品一区在线 | 九九伦理片 | 91精品国产综合久久婷婷香蕉 | 欧美一级一 | 亚洲午夜在线 | 三级av在线 | 国产精品极品美女在线观看免费 | 午夜免费小视频 | 午夜理伦三级理论三级在线观看 | 91国内精精品久久久久久婷婷 | 国产精品综合色区在线观看 | 国产精品成人一区二区三区夜夜夜 | 精品国产一区二区三区久久久蜜月 | 视频在线日韩 | 国产精品国产a级 | 一区二区三区在线播放 | 国产精品性做久久久久久 | 久久精品一区 | 国产欧美日韩一区 | 久久精品无码一区二区三区 | 国产三区av | 一二三区在线 |