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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

給大家分享一個光照檢測儀單片機源碼與電路圖

[復制鏈接]
跳轉到指定樓層
樓主
給大家分享一個用1602顯示的光照檢測儀,干貨都在壓縮包里呢,請大家品嘗
電路原理圖如下:

單片機源程序如下:
  1. /*********************************************************************************************
  2. 聲明:此程序僅供大家學習使用,不得用于商業用途!
  3. *******************************************************************************************/
  4. #include  <REG51.H>       

  5. #include  <math.h>    //Keil library  
  6. #include  <stdio.h>   //Keil library       
  7. #include  <INTRINS.H>
  8. #define   uchar unsigned char
  9. #define   uint unsigned int


  10. uchar data_byte;
  11. uchar RH,RL,TH,TL;
  12.        
  13. sbit io = P3^2 ;
  14. //

  15. int BJReadTempDate;//取前2位出來與設置的報警溫度比較

  16. #define   DataPort P0         //LCD1602數據端口
  17. sbit          SCL=P3^3;      //IIC時鐘引腳定義
  18. sbit            SDA=P3^4;      //IIC數據引腳定義

  19. sbit      LCM_RS=P2^5;   //LCD1602命令端口               
  20. sbit      LCM_RW=P2^6;   //LCD1602命令端口               
  21. sbit      LCM_EN=P2^7;   //LCD1602命令端口

  22. sbit K1 = P1^0;
  23. sbit K2 = P1^1;
  24. sbit K3 = P1^2;

  25. sbit  control_bell = P1^7;

  26. sbit  control_light = P2^0;


  27. #define          SlaveAddress   0x46 //定義器件在IIC總線中的從地址,根據ALT  ADDRESS地址引腳不同修改
  28.                               //ALT  ADDRESS引腳接地時地址為0x46,接電源時地址為0xB8
  29. typedef   unsigned char BYTE;
  30. typedef   unsigned short WORD;

  31. float temp;

  32. BYTE    BUF[8];                         //接收數據緩存區             
  33. uchar   ge,shi,bai,qian,wan;            //顯示變量
  34. uchar Ntemp,Nhumi,Nlight;
  35. uchar yemian=0;

  36. int dis_data;      //變量

  37. int S_Temp,Light;
  38. uchar flag=0,flagone=1;

  39. #include "eeprom52.h"

  40. void delay_nms(unsigned int k);
  41. void InitLcd();
  42. void Init_BH1750(void);

  43. void WriteDataLCM(uchar dataW);
  44. void WriteCommandLCM(uchar CMD,uchar Attribc);
  45. void DisplayOneChar(uchar X,uchar Y,uchar DData);
  46. void conversion(uint temp_data);

  47. void  Single_Write_BH1750(uchar REG_Address);               //單個寫入數據
  48. uchar Single_Read_BH1750(uchar REG_Address);                //單個讀取內部寄存器數據
  49. void  Multiple_Read_BH1750();                               //連續的讀取內部寄存器數據
  50. //------------------------------------
  51. void Delay5us();
  52. void Delay5ms();
  53. void BH1750_Start();                    //起始信號
  54. void BH1750_Stop();                     //停止信號
  55. void BH1750_SendACK(bit ack);           //應答ACK
  56. bit  BH1750_RecvACK();                  //讀ack
  57. void BH1750_SendByte(BYTE dat);         //IIC單個字節寫
  58. BYTE BH1750_RecvByte();                 //IIC單個字節讀

  59. //-----------------------------------


  60. /***********************1ms延時函數*****************************/
  61. void delay_1ms(uint q)
  62. {
  63.         uint i,j;
  64.         for(i=0;i<q;i++)
  65.                 for(j=0;j<120;j++);
  66. }

  67. /****************************延時程序****************************/
  68. void delay(uchar ms)
  69. {       // 延時子程序
  70.          uchar i ;
  71.          while(ms--)
  72.          {
  73.                   for(i = 0 ; i<250;i++) ;
  74.          }
  75. }

  76. void delay1()//延時10us
  77. {
  78.         uchar i;
  79.         i--;
  80.         i--;
  81.         i--;
  82.         i--;
  83.         i--;
  84.         i--;
  85. }
  86. void longdelay(uchar s) //長延時
  87. {
  88.          while(s--)
  89.          {
  90.                   delay(20) ;
  91.          }
  92. }

  93. /******************把數據保存到單片機內部eeprom中******************/
  94. void write_eeprom()
  95. {
  96.         SectorErase(0x2000);

  97.         byte_write(0x2001, Nlight);
  98.         byte_write(0x2002, Ntemp);
  99.         byte_write(0x2003, Nhumi);


  100.         byte_write(0x2060, a_a);       
  101. }

  102. /******************把數據從單片機內部eeprom中讀出來*****************/
  103. void read_eeprom()
  104. {


  105.         Nlight = byte_read(0x2001);
  106.         Ntemp = byte_read(0x2002);
  107.         Nhumi  = byte_read(0x2003);
  108.     a_a      = byte_read(0x2060);
  109. }

  110. /**************開機自檢eeprom初始化*****************/
  111. void init_eeprom()
  112. {
  113.         read_eeprom();                //先讀
  114.         if(a_a != 2)                //新的單片機初始單片機內問eeprom
  115.         {
  116.         a_a=2;
  117.                 Nlight =10;
  118.                 Ntemp  =35;
  119.                 Nhumi  =30;
  120.                 write_eeprom();
  121.         }       
  122. }



  123. /*********************** DHT11測試模塊***************************************/

  124. void start()//開始信號
  125. {
  126.         io=1;
  127.         delay1();
  128.         io=0;
  129.         delay(20);//>18ms
  130.         io=1;
  131.         delay1();//20-40us
  132.         delay1();
  133.         delay1();
  134.         delay1();
  135.         delay1();
  136. }
  137. uchar receive_byte()//接收一個字節
  138. {
  139.         uchar i,temp,count;
  140.         for(i=0;i<8;i++)
  141.         {
  142.                 count=2;
  143.                 while((!io)&&count++)//等待50us低電平結束
  144.                 temp=0;
  145.                 delay1();delay1();delay1();delay1();
  146.                 if(io==1)temp=1;
  147.                 count=2;
  148.                 while((io)&&count++);
  149.                 if(count==1)break;
  150.                 data_byte<<=1;       
  151.                 data_byte|=temp;
  152.         }
  153.         return data_byte;
  154. }
  155. void receive()//接收數據
  156. {
  157.         uchar T_H,T_L,R_H,R_L,check,num_check;
  158.         uchar count;
  159.         start();//開始信號
  160.         io=1;
  161.         if(!io)//讀取DHT11響應信號
  162.         {

  163.         while((io)&&count++);
  164.         R_H=receive_byte();
  165.         R_L=receive_byte();
  166.         T_H=receive_byte();
  167.         T_L=receive_byte();
  168.         check=receive_byte();
  169.         io=0;//拉低延時50us
  170.         delay1();delay1();delay1();delay1();delay1();
  171.         io=1;
  172.         num_check=R_H+R_L+T_H+T_L;
  173.         if(num_check=check)
  174.         {
  175.                 RH=R_H;
  176.                 RL=R_L;
  177.                 TH=T_H;
  178.                 TL=T_L;
  179.                 check=num_check;
  180.         }
  181.         }
  182. }



  183. //*********************************************************
  184. void conversion(uint temp_data)  //  數據轉換出 個,十,百,千,萬
  185. {  
  186.     wan=temp_data/10000+0x30 ;
  187.     temp_data=temp_data%10000;   //取余運算
  188.           qian=temp_data/1000+0x30 ;
  189.     temp_data=temp_data%1000;    //取余運算
  190.     bai=temp_data/100+0x30   ;
  191.     temp_data=temp_data%100;     //取余運算
  192.     shi=temp_data/10+0x30    ;
  193.     temp_data=temp_data%10;      //取余運算
  194.     ge=temp_data+0x30;        
  195. }

  196. //毫秒延時**************************
  197. void delay_nms(unsigned int k)       
  198. {                                               
  199. unsigned int i,j;                               
  200. for(i=0;i<k;i++)
  201. {                       
  202. for(j=0;j<121;j++)                       
  203. {;}}                                               
  204. }

  205. /*******************************/
  206. void WaitForEnable(void)       
  207. {                                       
  208. DataPort=0xff;               
  209. LCM_RS=0;LCM_RW=1;_nop_();
  210. LCM_EN=1;_nop_();_nop_();
  211. while(DataPort&0x80);       
  212. LCM_EN=0;                               
  213. }                                       
  214. /*******************************/
  215. void WriteCommandLCM(uchar CMD,uchar Attribc)
  216. {                                       
  217. if(Attribc)WaitForEnable();       
  218. LCM_RS=0;LCM_RW=0;_nop_();
  219. DataPort=CMD;_nop_();       
  220. LCM_EN=1;_nop_();_nop_();LCM_EN=0;
  221. }                                       
  222. /*******************************/
  223. void WriteDataLCM(uchar dataW)
  224. {                                       
  225. WaitForEnable();               
  226. LCM_RS=1;LCM_RW=0;_nop_();
  227. DataPort=dataW;_nop_();       
  228. LCM_EN=1;_nop_();_nop_();LCM_EN=0;
  229. }               
  230. /***********************************/
  231. void InitLcd()                               
  232. {                       
  233. WriteCommandLCM(0x38,1);       
  234. WriteCommandLCM(0x08,1);       
  235. WriteCommandLCM(0x01,1);       
  236. WriteCommandLCM(0x06,1);       
  237. WriteCommandLCM(0x0c,1);
  238. }                       
  239. /***********************************/
  240. void DisplayOneChar(uchar X,uchar Y,uchar DData)
  241. {                                               
  242. Y&=1;                                               
  243. X&=15;                                               
  244. if(Y)X|=0x40;                                       
  245. X|=0x80;                       
  246. WriteCommandLCM(X,0);               
  247. WriteDataLCM(DData);               
  248. }                                               

  249. /**************************************
  250. 延時5微秒(STC90C52RC@12M)
  251. 不同的工作環境,需要調整此函數,注意時鐘過快時需要修改
  252. 當改用1T的MCU時,請調整此延時函數
  253. **************************************/
  254. void Delay5us()
  255. {
  256.     _nop_();_nop_();_nop_();_nop_();
  257.     _nop_();_nop_();_nop_();_nop_();
  258.         _nop_();_nop_();_nop_();_nop_();
  259.         _nop_();_nop_();_nop_();_nop_();
  260. }

  261. /**************************************
  262. 延時5毫秒(STC90C52RC@12M)
  263. 不同的工作環境,需要調整此函數
  264. 當改用1T的MCU時,請調整此延時函數
  265. **************************************/
  266. void Delay5ms()
  267. {
  268.     WORD n = 560;

  269.     while (n--);
  270. }

  271. /**************************************
  272. 起始信號
  273. **************************************/
  274. void BH1750_Start()
  275. {
  276.     SDA = 1;                    //拉高數據線
  277.     SCL = 1;                    //拉高時鐘線
  278.     Delay5us();                 //延時
  279.     SDA = 0;                    //產生下降沿
  280.     Delay5us();                 //延時
  281.     SCL = 0;                    //拉低時鐘線
  282. }

  283. /**************************************
  284. 停止信號
  285. **************************************/
  286. void BH1750_Stop()
  287. {
  288.     SDA = 0;                    //拉低數據線
  289.     SCL = 1;                    //拉高時鐘線
  290.     Delay5us();                 //延時
  291.     SDA = 1;                    //產生上升沿
  292.     Delay5us();                 //延時
  293. }

  294. /**************************************
  295. 發送應答信號
  296. 入口參數:ack (0:ACK 1:NAK)
  297. **************************************/
  298. void BH1750_SendACK(bit ack)
  299. {
  300.     SDA = ack;                  //寫應答信號
  301.     SCL = 1;                    //拉高時鐘線
  302.     Delay5us();                 //延時
  303.     SCL = 0;                    //拉低時鐘線
  304.     Delay5us();                 //延時
  305. }

  306. /**************************************
  307. 接收應答信號
  308. **************************************/
  309. bit BH1750_RecvACK()
  310. {
  311.     SCL = 1;                    //拉高時鐘線
  312.     Delay5us();                 //延時
  313.     CY = SDA;                   //讀應答信號
  314.     SCL = 0;                    //拉低時鐘線
  315.     Delay5us();                 //延時

  316.     return CY;
  317. }

  318. /**************************************
  319. 向IIC總線發送一個字節數據
  320. **************************************/
  321. void BH1750_SendByte(BYTE dat)
  322. {
  323.     BYTE i;

  324.     for (i=0; i<8; i++)         //8位計數器
  325.     {
  326.         dat <<= 1;              //移出數據的最高位
  327.         SDA = CY;               //送數據口
  328.         SCL = 1;                //拉高時鐘線
  329.         Delay5us();             //延時
  330.         SCL = 0;                //拉低時鐘線
  331.         Delay5us();             //延時
  332.     }
  333.     BH1750_RecvACK();
  334. }

  335. /**************************************
  336. 從IIC總線接收一個字節數據
  337. **************************************/
  338. BYTE BH1750_RecvByte()
  339. {
  340.     BYTE i;
  341.     BYTE dat = 0;

  342.     SDA = 1;                    //使能內部上拉,準備讀取數據,
  343.     for (i=0; i<8; i++)         //8位計數器
  344.     {
  345.         dat <<= 1;
  346.         SCL = 1;                //拉高時鐘線
  347.         Delay5us();             //延時
  348.         dat |= SDA;             //讀數據               
  349.         SCL = 0;                //拉低時鐘線
  350.         Delay5us();             //延時
  351.     }
  352.     return dat;
  353. }

  354. //*********************************

  355. void Single_Write_BH1750(uchar REG_Address)
  356. {

  357.     BH1750_SendByte(SlaveAddress);   //發送設備地址+寫信號
  358.     BH1750_SendByte(REG_Address);    //內部寄存器地址,
  359.   //  BH1750_SendByte(REG_data);       //內部寄存器數據,
  360.     BH1750_Stop();                   //發送停止信號
  361. }

  362. //********單字節讀取*****************************************
  363. /*
  364. uchar Single_Read_BH1750(uchar REG_Address)
  365. {  uchar REG_data;
  366.     BH1750_Start();                          //起始信號
  367.     BH1750_SendByte(SlaveAddress);           //發送設備地址+寫信號
  368.     BH1750_SendByte(REG_Address);                   //發送存儲單元地址,從0開始       
  369.     BH1750_Start();                          //起始信號
  370.     BH1750_SendByte(SlaveAddress+1);         //發送設備地址+讀信號
  371.     REG_data=BH1750_RecvByte();              //讀出寄存器數據
  372.         BH1750_SendACK(1);   
  373.         BH1750_Stop();                           //停止信號
  374.     return REG_data;
  375. }
  376. */
  377. //*********************************************************
  378. //
  379. //連續讀出BH1750內部數據
  380. //
  381. //*********************************************************
  382. void Multiple_read_BH1750(void)
  383. {   uchar i;       
  384.     BH1750_Start();                          //起始信號
  385.    
  386.        
  387.          for (i=0; i<3; i++)                      //連續讀取2個地址數據,存儲中BUF
  388.     {
  389.         BUF[i] = BH1750_RecvByte();          //BUF[0]存儲0x32地址中的數據
  390.         if (i == 3)
  391.         {

  392.            BH1750_SendACK(1);                //最后一個數據需要回NOACK
  393.         }
  394.         else
  395.         {               
  396.           BH1750_SendACK(0);                //回應ACK
  397.        }
  398.    }

  399.     BH1750_Stop();                          //停止信號
  400.     Delay5ms();
  401. }


  402. //初始化BH1750,根據需要請參考pdf進行修改****
  403. void Init_BH1750()
  404. {
  405.    Single_Write_BH1750(0x01);  

  406. }



  407. void set_temp()
  408.   {
  409.      DisplayOneChar(7,1,S_Temp/10+'0');
  410.          DisplayOneChar(8,1,S_Temp%10+'0');
  411.   }



  412. void set_light()
  413. {
  414.       conversion(Light);         //計算數據和顯示

  415.       DisplayOneChar(4,1,wan); //顯示數據
  416.       DisplayOneChar(5,1,qian);  
  417.       DisplayOneChar(6,1,bai);
  418.       DisplayOneChar(7,1,shi);
  419.           DisplayOneChar(8,1,ge);

  420.             DisplayOneChar(10,1,'L'); ////顯示數單位
  421.             DisplayOneChar(11,1,'x');  

  422. }



  423. void key() //按鍵程序 選擇菜單模式
  424. {
  425.      
  426.           if(!K1)
  427.                    {  
  428.                           delay_1ms(80);
  429.                             if(!K1)
  430.                          {   
  431.                                                          while(!K1)
  432.                                            ;
  433.                                                           yemian++;
  434.                                                                 if(yemian>=4) { yemian=0; }
  435.                                                                
  436.              }
  437.                    }

  438.        
  439.        
  440. }


  441. void shezhi()  //對里面的數值進行修改
  442. {
  443.     if(!K2)            //按下按鍵
  444.                   {
  445.                 delay_1ms(80);
  446.                         if(!K2)
  447.                            {
  448.                            ;
  449.                         //==============================光線====================
  450.                  if(yemian==1)        
  451.                    {                                                               
  452.                                      Nlight+=1;       //按下一次,數值加1
  453.                                          if(Nlight>=250)  {Nlight=250;}
  454.                      write_eeprom();       //保存數據
  455.                                          Light=Nlight*100;
  456.                                          set_light();
  457.                    }
  458.                         //==============================溫度===================
  459.                  if(yemian==2)        
  460.                    {                                                               
  461.                                      Ntemp+=1;       //按下一次,數值加1
  462.                                          if( Ntemp>=250)  { Ntemp=250;}
  463.                      write_eeprom();       //保存數據
  464.                                      S_Temp=Ntemp;
  465.                                          set_temp();
  466.                    }
  467.                   //=================================濕度====================
  468.                  if(yemian==3)        
  469.                    {                                                               
  470.                                      Nhumi+=1;       //按下一次,數值加1
  471.                                          if(Nhumi>=99)  {Nhumi=99;}
  472.                      write_eeprom();       //保存數據
  473.                                          S_Temp=Nhumi;
  474.                                          set_temp();
  475.                                
  476.                    }

  477.        
  478.                }
  479.         }
  480.                          
  481.        
  482.        
  483.                          
  484.          if(!K3)            //按下按鍵
  485.                    {
  486.                         delay_1ms(80);
  487.                           if(!K3)
  488.                             {
  489.                                 ;
  490.                         //==============================光線====================
  491.                    if(yemian==1)
  492.                       {                                                               
  493.                                          Nlight-=1;       //沒按下一次,數值加1
  494.                                              if(Nlight<=1)  {Nlight=1;}
  495.                          write_eeprom();       //保存數據
  496.                                              Light=Nlight*100;
  497.                                              set_light();
  498.                                           }

  499.                   //==============================溫度====================
  500.                    if(yemian==2)
  501.                       {                                                               
  502.                                          Ntemp-=1;       //沒按下一次,數值加1
  503.                                              if(Ntemp<=1)  {Ntemp=1;}
  504.                          write_eeprom();       //保存數據
  505.                                              S_Temp=Ntemp;
  506.                                              set_temp();
  507.                                           }

  508.               //==================================濕度=====================
  509.                  if(yemian==3)        
  510.                    {                                                               
  511.                                      Nhumi-=1;       //按下一次,數值加1
  512.                                          if(Nhumi<=1)  {Nhumi=1;}
  513.                      write_eeprom();       //保存數據
  514.                                          S_Temp=Nhumi;
  515.                                          set_temp();
  516.                    }

  517.        
  518.                     }
  519.                                   
  520.                             }

  521.                
  522. }









  523. void working()
  524. {
  525.     Single_Write_BH1750(0x01);   // power on
  526.     Single_Write_BH1750(0x10);   // H- resolution mode
  527.     Multiple_Read_BH1750();       //連續讀出數據,存儲在BUF中

  528.     dis_data=BUF[0];
  529.     dis_data=(dis_data<<8)+BUF[1];//合成數據,即光照數據
  530.    
  531.     temp=(float)dis_data/1.2;

  532.       conversion(temp);         //計算數據和顯示

  533.       DisplayOneChar(7,1,wan); //顯示數據
  534.       DisplayOneChar(8,1,qian);  
  535.       DisplayOneChar(9,1,bai);
  536.       DisplayOneChar(10,1,shi);
  537.           DisplayOneChar(11,1,ge);

  538.           
  539.                
  540. }

  541. void show_dht11() //溫度和濕度處理函數
  542. {
  543.                            receive();
  544.                    DisplayOneChar(3,0,RH/10+'0');
  545.                    DisplayOneChar(4,0,RH%10+'0');
  546.                    DisplayOneChar(11,0,TH/10+'0');
  547.                    DisplayOneChar(12,0,TH%10+'0');

  548. }


  549. void baojin()
  550. {
  551.    //control_temp
  552.    if(temp<=Nlight*100  )        { control_light=0; }
  553.    if(temp>Nlight*100  )        { control_light=1; }

  554.    if(TH>=Ntemp || RH<=Nhumi  )        { control_bell=0; }
  555.    if(TH<Ntemp  && RH>Nhumi )        { control_bell=1; }

  556.   // if(RH>Nhumi  )        { control_humi=1; }
  557.   // if(RH<=Nhumi  )        { control_humi=0; }

  558.   
  559.        
  560. }

  561. /*************定時器0初始化程序***************/
  562. void time_init()          
  563. {
  564.         EA   = 1;                   //開總中斷
  565.         TMOD = 0X01;          //定時器0、定時器1工作方式1
  566.         ET0  = 1;                  //開定時器0中斷
  567.         TR0  = 1;                  //允許定時器0定時
  568. }


  569. //*********************************************************
  570. //主程序********
  571. //*********************************************************
  572. void main()
  573. {  
  574.   
  575.     delay_nms(100);            //延時100ms       
  576.         time_init();                                //初始化定時器
  577.     InitLcd();           //初始化LCD
  578.     Init_BH1750();       //初始化BH1750
  579.     init_eeprom();                              //讀eeprom數據

  580.   while(1)              //循環
  581.   {
  582.      KEY(); //按鍵處理
  583.         //==================//進入工作狀態=====================               
  584.         if(yemian==0)  
  585.            {
  586.                  if(flagone==1)
  587.                    {  
  588.                       flagone=0;          
  589.                           if(flag==0)
  590.                                  {
  591.                   flag=1;
  592.                                   InitLcd();           //初始化LCD
  593.                   DisplayOneChar(0,0,' ');
  594.                       DisplayOneChar(1,0,'H');
  595.                       DisplayOneChar(2,0,':');
  596.                       DisplayOneChar(3,0,' ');
  597.                       DisplayOneChar(4,0,' ');
  598.                                   DisplayOneChar(5,0,'%');

  599.                                  
  600.                       DisplayOneChar(8,0,' ');
  601.                       DisplayOneChar(9,0,'T');
  602.                       DisplayOneChar(10,0,':');
  603.                       DisplayOneChar(11,0,' ');
  604.                                   DisplayOneChar(12,0,' ');
  605.                                   DisplayOneChar(13,0,0xdf);
  606.                                   DisplayOneChar(14,0,'C');
  607.                                   DisplayOneChar(15,0,' ');
  608.                                   
  609.                                   DisplayOneChar(1,1,'L');
  610.                       DisplayOneChar(2,1,'i');
  611.                       DisplayOneChar(3,1,'g');
  612.                       DisplayOneChar(4,1,'h');
  613.                       DisplayOneChar(5,1,'t');
  614.                                   DisplayOneChar(6,1,':');
  615.                                   DisplayOneChar(13,1,'L');
  616.                                   DisplayOneChar(14,1,'x');
  617.                 }

  618.                            show_dht11();
  619.                            working();
  620.                            baojin();
  621.                   }       
  622.          }
  623.                  
  624.   //==================//進入 Light_ 設置狀態=====================                         
  625.                 if(yemian==1)  //進入設置模式
  626.                  {
  627.                           
  628.                            if(flag==1)
  629.                                  {
  630.                        flag=2;
  631.                                           control_bell = 1;
  632.                      
  633.                       control_light = 1;
  634.                                          
  635.                                            InitLcd();           //初始化LCD

  636. ……………………

  637. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
程序.rar (82.81 KB, 下載次數: 21)
原理圖.pdf (50.1 KB, 下載次數: 24)


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

使用道具 舉報

沙發
ID:344087 發表于 2018-6-3 20:54 | 只看該作者
光照傳感器啊
回復

使用道具 舉報

板凳
ID:567233 發表于 2019-6-20 12:27 | 只看該作者
原理圖和程序都有DHT11,光照傳感器應該不用吧
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲人成在线播放 | 一级片子 | 久久久青草婷婷精品综合日韩 | 谁有毛片| www.色综合 | 99久久婷婷国产精品综合 | 日韩一区二区三区精品 | 中文字幕视频在线看5 | 日韩av在线一区二区三区 | 国产成人精品一区二区 | 午夜伦4480yy私人影院 | 国产精品国产三级国产aⅴ无密码 | 日本一区不卡 | 午夜99| 国产成人在线视频 | 一区二区视频在线 | 日日日日日日bbbbb视频 | 二区在线观看 | 九一精品 | 欧美日韩国产在线观看 | 欧美久久天堂 | 一区精品视频 | 亚洲最大的成人网 | 久操伊人 | 亚洲精品视频在线看 | 日韩在线欧美 | 一区二区精品视频 | 日本在线视频中文字幕 | 欧美老少妇一级特黄一片 | 永久免费在线观看 | 在线免费国产 | 影音先锋久久 | 欧美一级在线 | 91精品久久久久久久久久入口 | 欧美一区二区三区日韩 | 新超碰97 | 超碰在线免费 | 国产精品日韩在线观看一区二区 | 久久99精品久久 | 久久久精品一区 | 91偷拍精品一区二区三区 |