亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2346|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于15w系列單片機(jī)的溫濕度傳感器DHT11程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
親測可行。頭文件網(wǎng)上隨便搜都有。LCD  數(shù)據(jù)口是P4端口。


單片機(jī)源程序如下:
  1. #include<15w.H>
  2. #include<intrins.h>
  3. #define uchar unsigned char
  4. #define uint unsigned int
  5. sbit RS = P5^5;   //定義端口
  6. sbit RW = P5^4;
  7. sbit EN = P5^3;



  8. sbit io=P1^0;//dht11data端接單片機(jī)的P1^0口//

  9. typedef bit BOOL;//此聲明一個(gè)布爾型變量即真或假//

  10. uchar data_byte;

  11. uchar RH,RL,TH,TL;






  12. void Delay25ms()                //@11.0592MHz
  13. {
  14.         unsigned char i, j, k;

  15.         _nop_();
  16.         _nop_();
  17.         i = 2;
  18.         j = 13;
  19.         k = 237;
  20.         do
  21.         {
  22.                 do
  23.                 {
  24.                         while (--k);
  25.                 } while (--j);
  26.         } while (--i);
  27. }


  28. void Delay8us()                //@11.0592MHz
  29. {
  30.         unsigned char i;

  31.         _nop_();
  32.         _nop_();
  33.         i = 19;
  34.         while (--i);
  35. }


  36. void Delay27us()                //@11.0592MHz
  37. {
  38.         unsigned char i;

  39.         _nop_();
  40.         i = 72;
  41.         while (--i);
  42. }

  43. /**************************dht11測試某塊*************************************/

  44. void start()//開始信號(hào)

  45. {

  46.   io=1;

  47. Delay8us();

  48.   io=0;

  49. Delay25ms();// 主機(jī)把總線拉低必須大于18ms保證DHT11能檢測到起始信號(hào)

  50.   io=1;    //發(fā)送開始信號(hào)結(jié)束后拉高電平延時(shí)20-40us

  51. Delay8us();//以下三個(gè)延時(shí)函數(shù)差不多為24us符合要求

  52.   Delay8us();

  53.   Delay8us();

  54. }



  55. uchar receive_byte()//接收一個(gè)字節(jié)//

  56. {

  57.   uchar i,temp;

  58.   for(i=0;i<8;i++)//接收8bit的數(shù)據(jù)

  59.   {

  60.         while(!io);//等待50us的低電平開始信號(hào)結(jié)束

  61. Delay27us();//開始信號(hào)結(jié)束之后延時(shí)26us-28us以下三個(gè)延時(shí)函數(shù)





  62.         temp=0;//時(shí)間為26us-28us表示接收的為數(shù)據(jù)'0'

  63.         if(io==1)

  64.          temp=1; //如果26us-28us之后還為高電平則表示接收的數(shù)據(jù)為'1'

  65.     while(io);//等待數(shù)據(jù)信號(hào)高電平'0'為26us-28us'1'為70us

  66.         data_byte<<=1;//接收的數(shù)據(jù)為高位在前右移

  67.          data_byte|=temp;

  68.   }

  69.   return data_byte;

  70. }

  71.    

  72. void receive()//接收數(shù)據(jù)//

  73. {

  74.   uchar T_H,T_L,R_H,R_L,check,num_check,i;

  75.   start();//開始信號(hào)//

  76.   io=1;   //主機(jī)設(shè)為輸入判斷從機(jī)DHT11響應(yīng)信號(hào)

  77.   if(!io)//判斷從機(jī)是否有低電平響應(yīng)信號(hào)//

  78.   {  
  79.         while(!io);//判斷從機(jī)發(fā)出 80us 的低電平響應(yīng)信號(hào)是否結(jié)束//

  80.         while(io);//判斷從機(jī)發(fā)出 80us 的高電平是否結(jié)束如結(jié)束則主機(jī)進(jìn)入數(shù)據(jù)接收狀態(tài)

  81.         R_H=receive_byte();//濕度高位

  82.         R_L=receive_byte();//濕度低位

  83.         T_H=receive_byte();//溫度高位

  84.         T_L=receive_byte();//溫度低位

  85.         check=receive_byte();//校驗(yàn)位

  86.         io=0; //當(dāng)最后一bit數(shù)據(jù)接完畢后從機(jī)拉低電平50us//

  87.         for(i=0;i<7;i++)//差不多50us的延時(shí)

  88.      Delay8us();

  89.         io=1;//總線由上拉電阻拉高進(jìn)入空閑狀態(tài)

  90.         num_check=R_H+R_L+T_H+T_L;

  91.         if(num_check==check)//判斷讀到的四個(gè)數(shù)據(jù)之和是否與校驗(yàn)位相同

  92.         {

  93.    RH=R_H;

  94.    RL=R_L;

  95.    TH=T_H;

  96.    TL=T_L;

  97.    check=num_check;

  98.         }

  99.   }

  100. }

  101. /*------------------------------------------------
  102. uS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值
  103. unsigned char 是定義無符號(hào)字符變量,其值的范圍是
  104. 0~255 這里使用晶振12M,精確延時(shí)請使用匯編,大致延時(shí)
  105. 長度如下 T=tx2+5 uS
  106. ------------------------------------------------*/
  107. void DelayUs2x(unsigned char t)
  108. {   
  109. while(--t);
  110. }
  111. /*------------------------------------------------
  112. mS延時(shí)函數(shù),含有輸入?yún)?shù) unsigned char t,無返回值
  113. unsigned char 是定義無符號(hào)字符變量,其值的范圍是
  114. 0~255 這里使用晶振12M,精確延時(shí)請使用匯編
  115. ------------------------------------------------*/
  116. void DelayMs(unsigned char t)
  117. {
  118.      
  119. while(t--)
  120. {
  121.      //大致延時(shí)1mS
  122.      DelayUs2x(245);
  123.          DelayUs2x(245);
  124. }
  125. }
  126. /*------------------------------------------------
  127.               判忙函數(shù)
  128. ------------------------------------------------*/
  129. bit LCD_Check_Busy(void)
  130. {
  131. P4= 0xFF;
  132. RS=0;
  133. RW=1;
  134. EN=0;
  135. _nop_();
  136. EN=1;
  137. return (bit)(P4 & 0x80);
  138. }
  139. /*------------------------------------------------
  140.               寫入命令函數(shù)
  141. ------------------------------------------------*/
  142. void LCD_Write_Com(unsigned char com)
  143. {  
  144. while(LCD_Check_Busy()); //忙則等待
  145. RS=0;
  146. RW=0;
  147. EN=1;
  148. P4= com;
  149. _nop_();
  150. EN=0;
  151. }
  152. /*------------------------------------------------
  153.               寫入數(shù)據(jù)函數(shù)
  154. ------------------------------------------------*/
  155. void LCD_Write_Data(unsigned char Data)
  156. {
  157. while(LCD_Check_Busy()); //忙則等待
  158. RS=1;
  159. RW=0;
  160. EN=1;
  161. P4= Data;
  162. _nop_();
  163. EN=0;
  164. }

  165. /*------------------------------------------------
  166.                 清屏函數(shù)
  167. ------------------------------------------------*/
  168. void LCD_Clear(void)
  169. {
  170. LCD_Write_Com(0x01);
  171. DelayMs(5);
  172. }
  173. /*------------------------------------------------
  174.               寫入字符串函數(shù)
  175. ------------------------------------------------*/
  176. void LCD_Write_String(unsigned char x,unsigned char y,unsigned char *s)
  177. {     
  178. if (y == 0)
  179.         {     
  180.          LCD_Write_Com(0x80 + x);     //表示第一行
  181.         }
  182. else
  183.         {      
  184.         LCD_Write_Com(0xC0 + x);      //表示第二行
  185.         }        
  186. while (*s)
  187.         {     
  188. LCD_Write_Data( *s);     
  189. s ++;     
  190.         }
  191. }
  192. /*------------------------------------------------
  193.               寫入字符函數(shù)
  194. ------------------------------------------------*/
  195. void LCD_Write_Char(unsigned char x,unsigned char y,unsigned char Data)
  196. {     
  197. if (y == 0)
  198.         {     
  199.         LCD_Write_Com(0x80 + x);     
  200.         }   
  201. else
  202.         {     
  203.         LCD_Write_Com(0xC0 + x);     
  204.         }        
  205. LCD_Write_Data( Data);  
  206. }
  207. /*------------------------------------------------
  208.               初始化函數(shù)
  209. ------------------------------------------------*/
  210. void LCD_Init(void)
  211. {
  212.    LCD_Write_Com(0x38);    /*顯示模式設(shè)置*/
  213.    DelayMs(5);
  214.    LCD_Write_Com(0x38);
  215.    DelayMs(5);
  216.    LCD_Write_Com(0x38);
  217.    DelayMs(5);
  218.    LCD_Write_Com(0x38);  
  219.    LCD_Write_Com(0x08);    /*顯示關(guān)閉*/
  220.    LCD_Write_Com(0x01);    /*顯示清屏*/
  221.    LCD_Write_Com(0x06);    /*顯示光標(biāo)移動(dòng)設(shè)置*/
  222.    DelayMs(5);
  223.    LCD_Write_Com(0x0C);    /*顯示開及光標(biāo)設(shè)置*/
  224.    }



  225. void main()                                       
  226. {

  227.     P0M0 = 0x00;
  228.     P0M1 = 0x00;
  229. ……………………

  230. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼

全部資料51hei下載地址:
DHT11.rar (25.27 KB, 下載次數(shù): 16)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評分

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

使用道具 舉報(bào)

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

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表