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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

超聲液位控制報警的單片機(jī)程序 帶水泵控制和排水控制即雙繼電器功能

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:249614 發(fā)表于 2017-11-15 11:45 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
附件,里面有程序,自己測試

單片機(jī)源程序如下:

  1. /***************************************************************
  2.         名稱:基于51單片機(jī)的超聲波水位監(jiān)測報警系統(tǒng)
  3.         單片機(jī)型號:AT89C51
  4.         單片機(jī)設(shè)置:時鐘12T,晶體12MHZ
  5.         作者:學(xué)長電子工作室
  6.         注:修改增加水泵控制和排水控制,即雙繼電器
  7. ***************************************************************/

  8. #include <reg51.h>
  9. #include <intrins.h>                // 包含循環(huán)移位:_cror_
  10. #include "main.h"     
  11. //----------------------------------------------------------------------

  12. uchar code TabNumASCII[10] =    {'0','1','2','3','4','5','6','7','8','9'};

  13. bool        g_flag = isNo;                //用于標(biāo)記超時(65.536ms)           
  14. bool        g_flag05s = isNo;        //用于標(biāo)記0.52秒  
  15. uchar         ucCount = 0;                        //用于計數(shù)0.52秒     
  16.    
  17. uint        uiH = 80;                        //設(shè)定的最高報警水位 H
  18. uint        uiL = 30;                        //設(shè)定的最低報警水位 L
  19. uint        uiD = 100;                         //檢測探頭到水庫底部的距離 D

  20. bool        g_flagSwitch = isNo;                //控制閥門連續(xù)開啟間隔延時(保護(hù))標(biāo)志
  21. bool        g_flagBeepTimer = isNo;        //定時提醒標(biāo)志
  22.                

  23. //-----------------------------------------------------------------------
  24. // 延時10us
  25. void delay10us(void)                //@12MHz
  26. {
  27.         unsigned char i;

  28.         _nop_();
  29.         i = 2;
  30.         while (--i);
  31. }

  32. // 延時100us
  33. void delay100us(void)                //@12MHz
  34. {
  35.         uchar i;

  36.         _nop_();
  37.         i = 47;
  38.         while (--i);
  39. }

  40. // 延時125us
  41. void delay125us(void)                //@12MHz
  42. {
  43.         unsigned char i;
  44.         i = 60;
  45.         while (--i);
  46. }

  47. // 延時5ms
  48. void delay5ms(void)                //@12.000MHz
  49. {
  50.         unsigned char i, j;

  51.         i = 10;
  52.         j = 183;
  53.         do
  54.         {
  55.                 while (--j);
  56.         } while (--i);
  57. }

  58. // 延時500ms
  59. void delay500ms(void)                //@12MHz
  60. {
  61.         unsigned char i, j, k;

  62.         _nop_();
  63.         i = 4;
  64.         j = 205;
  65.         k = 187;
  66.         do
  67.         {
  68.                 do
  69.                 {
  70.                         while (--k);
  71.                 } while (--j);
  72.         } while (--i);
  73. }

  74. //-----------------------------------------------------------------------
  75. //初始化IO端口                       
  76. void initIO(void)                                       
  77. {
  78.         P0 = 0xff;
  79.         P1 = 0xff;
  80.         P2 = 0xff;
  81.         P3 = 0xff;
  82. }

  83. // 初始化定時器0,定時器時鐘12T模式 模式1,16位 @12.000MHz
  84. void initTimer0(void)               
  85. {
  86.         TMOD &= 0xF0;                //設(shè)置定時器模式
  87.         TMOD |= 0x01;                //設(shè)置定時器模式
  88.         TL0 = 0;                                //定時器初值清零
  89.         TH0 = 0;                                //定時器初值清零
  90.         //TR0 = 1;                           //開定時器0
  91.     ET0 = 1;                          //開定時器0中斷
  92.     EA = 1;                             //開總中斷           
  93.        
  94. }

  95. // 初始化定時器1,定時器時鐘12T模式 模式1,16位 @12.000MHz
  96. void initTimer1(void)                //50毫秒@12.000MHz
  97. {       
  98.         TMOD &= 0x0F;                //設(shè)置定時器模式
  99.         TMOD |= 0x10;                //設(shè)置定時器模式
  100.         TL1 = 0xB0;                //設(shè)置定時初值
  101.         TH1 = 0x3C;                //設(shè)置定時初值       
  102.         TR1 = 1;                //定時器1開始計時
  103.         ET1 = 1;          //開定時器0中斷
  104. }

  105. //-----------------------------------------------------------------------
  106. //定時器0中斷
  107. void zd0(void) interrupt 1                  
  108. {
  109.        
  110.         g_flag = isYes;                                                        //中斷溢出標(biāo)志,g_flag = isYes超過測距范圍
  111.         if(++ucCount >= 8)
  112.         {
  113.                 ucCount = 0;
  114.                 g_flag05s = isYes;                                        //g_flag05s = isYes定時0.52秒到,用于測量周期延時
  115.         }
  116.         TL0 = 0;                //設(shè)置定時初值
  117.         TH0 = 0;                //設(shè)置定時初值
  118.        
  119. }


  120. //定時器1中斷 定時50ms
  121. void tm1_isr() interrupt 3 using 1
  122. {
  123.         static uchar count = DATA_switchTime;        //50ms的200倍 = 10S
  124.         static uchar uiCount = 1200;                                //                        = 1分鐘               
  125.         static uint uiCount_BeepTimer = DATA_BeepTimer;

  126.         TL1 = 0xB0;                //設(shè)置定時初值
  127.         TH1 = 0x3C;                //設(shè)置定時初值

  128.         if (g_flagSwitch == isNo)
  129.         {
  130.                 if (count-- == 0)               //50ms * 200 -> 10s
  131.                 {
  132.                         count = DATA_switchTime;
  133.                         g_flagSwitch = isYes;
  134.                         // TR1 = 0;
  135.                 }
  136.         }       
  137.        
  138.         if(g_flagBeepTimer == isNo)
  139.         {
  140.                 if (uiCount-- == 0)               //= 1分鐘
  141.                 {
  142.                         uiCount = 1200;
  143.                         if(uiCount_BeepTimer-- == 0)
  144.                         {
  145.                                 uiCount_BeepTimer = DATA_BeepTimer;
  146.                                 g_flagBeepTimer = isYes;
  147.                                 // TR1 = 0;
  148.                         }                       
  149.                        
  150.                 }

  151.         }
  152. }

  153. //-----------------------------------------------





  154. //外部中斷1
  155. void exint1() interrupt 2
  156. {
  157.     EX1 = 0;                         //關(guān)閉當(dāng)前中斷
  158.         TR0 = 0;                           //關(guān)閉時器0
  159.        
  160. }
  161. //-----------------------------------------------------------------------
  162.   
  163. //讀LCD忙狀態(tài)并等待忙狀態(tài)結(jié)束
  164. void LCD_waitNotBusy(void)
  165. {
  166.         IO_LCD_Data = 0xFF;
  167.         io_LCD_RS = 0;
  168.         io_LCD_RW = 1;
  169.         io_LCD_E = 0;
  170.         _nop_();
  171.         _nop_();
  172.         io_LCD_E = 1;
  173.         while(IO_LCD_Data & 0x80); //檢測如果是忙信號,一直等到不忙
  174. }

  175. //給LCD寫指令
  176. void LCDWriteCommand(uchar command,bool ifReadBusy) //ifReadBusy = 1 時先進(jìn)行忙檢測
  177. {
  178.         if (ifReadBusy == isReadBusy) LCD_waitNotBusy(); //根據(jù)需要檢測忙
  179.         IO_LCD_Data = command;
  180.         io_LCD_RS = 0;
  181.         io_LCD_RW = 0;       
  182.         io_LCD_E = 0;
  183.         _nop_();
  184.         _nop_();
  185.         io_LCD_E = 1;       
  186. }

  187. //給LCD寫數(shù)據(jù)
  188. void LCDWriteData(uchar dat)
  189. {
  190.         LCD_waitNotBusy(); //等到不忙
  191.         IO_LCD_Data = dat;
  192.         io_LCD_RS = 1;
  193.         io_LCD_RW = 0;
  194.         io_LCD_E = 0;
  195.         _nop_();
  196.         _nop_();
  197.         io_LCD_E = 1;
  198. }




  199. // 初始化LCD1602液晶顯示屏
  200. void initLCD1602(void)
  201. {
  202.         uchar        i;       
  203.         IO_LCD_Data = 0;                                                                // 數(shù)據(jù)端口清零
  204.         for(i = 0; i < 3; i++)                                                // 設(shè)置三次顯示模式
  205.         {
  206.                 LCDWriteCommand(0x38,isNotReadBusy);        // 不檢測忙信號
  207.                 delay5ms();
  208.         }
  209.        
  210.         LCDWriteCommand(0x38,isReadBusy); // 設(shè)置顯示模式,檢測忙信號
  211.         LCDWriteCommand(0x08,isReadBusy); // 關(guān)閉顯示
  212.         LCDWriteCommand(0x01,isReadBusy); // 顯示清屏
  213.         LCDWriteCommand(0x06,isReadBusy); // 顯示光標(biāo)移動設(shè)置
  214.         LCDWriteCommand(0x0F,isReadBusy); // 顯示開及光標(biāo)設(shè)置
  215. }



  216. //按指定位置顯示一個字符
  217. void putOneCharToLCD1602(uchar line, uchar position, uchar ucData)
  218. {

  219.         line &= DATA_LineMax;
  220.         position &= DATA_PositionMax;
  221.         if (line == DATA_LineTow) position |= 0x40;                         //當(dāng)要顯示第二行時地址碼+0x40;
  222.         position |= 0x80;                                                                         //設(shè)置兩行顯示格式 D7 = 1;
  223.         LCDWriteCommand(position, isReadBusy);                         //發(fā)送命令 設(shè)置字符地址
  224.         LCDWriteData(ucData);                                                                  //寫入字符的數(shù)據(jù)       
  225. }

  226. //按指定位置顯示一串字符
  227. void putLineCharsToLCD1602(uchar line, uchar position, uchar count, uchar code *ucData)
  228. {
  229.         uchar i;
  230.         for(i = 0; i < count; i++)                                                        //連續(xù)顯示單個字符
  231.         {
  232.                 putOneCharToLCD1602(line, position + i, ucData[i]);       
  233.         }
  234. }


  235. //按指定位置連續(xù)顯示三個字符(三位數(shù)字)
  236. void        putThreeCharToLCD1602(uchar line, uchar position, uint uiNumber)
  237. {
  238.         uiNumber %= 1000;
  239.         putOneCharToLCD1602(line, position, TabNumASCII[uiNumber / 100]);
  240.         putOneCharToLCD1602(line, ++position, TabNumASCII[uiNumber % 100 / 10]);
  241.         putOneCharToLCD1602(line, ++position, TabNumASCII[uiNumber % 100 % 10]);       
  242.        
  243. }
  244.        


  245. // 按鍵檢測子程序,有鍵按下返回鍵端口數(shù)據(jù),無鍵返回0
  246. uchar GetKey(void)
  247. {       
  248.     uchar KeyTemp = (IO_KEY | DATA_KEY_ORL);                //獲取按鍵端口數(shù)據(jù)       
  249.        
  250.         if( KeyTemp != DATA_KEY_Null )                                // 如果不為空
  251.         {
  252.                 uchar CountTemp = 0;
  253.                 do
  254.                 {
  255.                         delay125us();
  256.                         if(KeyTemp != (IO_KEY | DATA_KEY_ORL)) return 0;        //在延時期間檢測鍵,如果不穩(wěn)定保持則退出       
  257.                        
  258.                 } while(++CountTemp > Data_Key20msCountMax);                                 // 延時20ms去抖動
  259.                
  260.                 while((IO_KEY | DATA_KEY_ORL) != DATA_KEY_Null);         //等鍵釋放               
  261.                
  262.                 return KeyTemp;        // 有鍵按下返回鍵端口數(shù)據(jù)
  263.         }
  264.        
  265.         return 0;        // 無有效鍵返回0
  266. }



  267. //加一
  268. uchar  INC_Number(uchar Number, uchar Min, uchar Max)
  269. {
  270.         if(Number >= Max) return Min; else return (++ Number);
  271.                
  272. }

  273. //減一
  274. uchar  DEC_Number(uchar Number, uchar Min, uchar Max)
  275. {
  276.         if(Number <= Min) return Max; else return (-- Number);
  277.                
  278. }

  279. // 檢測到有按鍵后 這里執(zhí)行按鍵任務(wù)                       
  280. void execute_key_task(uchar ucKeyValue)       
  281. {
  282.         uchar state = 0;                                                //定義調(diào)整數(shù)據(jù)的狀態(tài)變量
  283.         uchar keyValue = 0;                                        //定義鍵值的臨時變量
  284.        
  285.         if(ucKeyValue != DATA_KEY_Set) return;        //不是設(shè)置鍵退出
  286.        
  287.         //是設(shè)置鍵繼續(xù)-----------------------------------------------------
  288.        
  289.         putLineCharsToLCD1602(lineTow, 8, 8, "C:000cm ");        //清零顯示當(dāng)前距離CURRENT               
  290.         putThreeCharToLCD1602(lineOne, 8 + 2, uiD);                //光標(biāo)調(diào)整到調(diào)整總距離(檢測探頭到水庫底部的距離“D:000cm”)       
  291.        
  292.         while(1)
  293.         {
  294.                 keyValue = GetKey();       
  295.                 if(keyValue == 0) continue;
  296.                
  297.                 switch(keyValue)
  298.                 {
  299.                         case DATA_KEY_Set:
  300.                         {
  301.                                 // 如果按的是設(shè)置鍵,順序設(shè)置總距離D——高水位H——低水位L——退出
  302.                                 switch(state)
  303.                                 {
  304.                                         case 0:                        // 如果是設(shè)置總距離狀態(tài),改變?yōu)樵O(shè)置高水位狀態(tài),并顯示高水位,實現(xiàn)移動光標(biāo)到高水位后面
  305.                                         {
  306.                                                 state = 1;                                               
  307.                                                 putThreeCharToLCD1602(lineOne, 0 + 2, uiH);                                               
  308.                                         }
  309.                                         break;
  310.                                         case 1:
  311.                                         {
  312.                                                 uchar tempMax = uiD - DATA_uiD_Min;
  313.                                                 if(tempMax < 2 + 2) tempMax = 2 + 2;                                                                                       
  314.                                                 if(uiH > tempMax)
  315.                                                 {
  316.                                                         uiH = tempMax;
  317.                                                         putThreeCharToLCD1602(lineOne, 0 + 2, uiH);
  318.                                                 }
  319.                                                 else if(uiH < 2 + 2)
  320.                                                 {
  321.                                                         uiH = 2 + 2;       
  322.                                                         putThreeCharToLCD1602(lineOne, 0 + 2, uiH);
  323.                                                 }                                                       
  324.                                                 state = 2;
  325.                                                 putThreeCharToLCD1602(lineTow, 0 + 2, uiL);
  326.                                         }
  327.                                         break;
  328.                                         case 2:
  329.                                         {
  330.                                                 if(uiL > uiH - 2)
  331.                                                 {
  332.                                                         uiL = uiH - 2;
  333.                                                         putThreeCharToLCD1602(lineTow, 0 + 2, uiL);
  334.                                                 }
  335.                                                 return;       
  336.                                                
  337.                                         }
  338.                                         break;
  339.                                 }
  340.                                
  341.                         }
  342.                         break;
  343.                         // 如果按的是增加鍵,改變相應(yīng)數(shù)據(jù)并顯示
  344.                         case DATA_KEY_INC:
  345.                         {
  346.                                 switch(state)
  347.                                 {
  348.                                         case 0:
  349.                                         {
  350.                                                 uiD = INC_Number(uiD, DATA_uiD_Min, DATA_uiD_Max);
  351.                                                 putThreeCharToLCD1602(lineOne, 8 + 2, uiD);                                                       
  352.                                         }
  353.                                         break;
  354.                                         case 1:
  355.                                         {
  356.                                                 uchar tempMax = uiD - DATA_uiD_Min;
  357.                                                 if(tempMax < 2 + 2) tempMax = 2 + 2;
  358.                                                 uiH = INC_Number(uiH, 2, tempMax);                                               
  359.                                                 putThreeCharToLCD1602(lineOne, 0 + 2, uiH);       
  360.                                         }
  361.                                         break;
  362.                                         case 2:
  363.                                         {
  364.                                                 uiL = INC_Number(uiL, 0, uiH - 2);       
  365.                                                 putThreeCharToLCD1602(lineTow, 0 + 2, uiL);       
  366.                                         }
  367.                                         break;
  368.                                 }
  369.                                
  370.                         }
  371.                         break;
  372.                         // 如果按的是減少鍵,改變相應(yīng)數(shù)據(jù)并顯示
  373.                         case DATA_KEY_DEC:
  374.                         {
  375.                                 switch(state)
  376.                                 {
  377.                                         case 0:
  378.                                         {
  379.                                                 uiD = DEC_Number(uiD, DATA_uiD_Min, DATA_uiD_Max);                                       
  380.                                                 putThreeCharToLCD1602(lineOne, 8 + 2, uiD);
  381.                                         }
  382.                                         break;
  383.                                         case 1:
  384.                                         {
  385.                                                 uchar tempMax = uiD - DATA_uiD_Min;
  386.                                                 if(tempMax < 2 + 2) tempMax = 2 + 2;
  387.                                                 uiH = DEC_Number(uiH, 2, tempMax);                                               
  388.                                                 putThreeCharToLCD1602(lineOne, 0 + 2, uiH);       

  389.                                         }
  390.                                         break;
  391.                                         case 2:
  392.                                         {
  393.                                                 uiL = DEC_Number(uiL, 0, uiH - 2);       
  394.                                                 putThreeCharToLCD1602(lineTow, 0 + 2, uiL);       

  395.                                         }
  396.                                         break;
  397.                                 }
  398.                                
  399.                         }
  400.                         break;
  401.                        
  402.                 }
  403.                
  404.         }
  405.        
  406. }



  407. // 蜂鳴器       
  408. void        buzzerCall(void)
  409. {
  410.         uchar        i;
  411.        
  412.                 for(i = 0; i < 90; i++)
  413.                 {
  414.                         io_Buzzer = 0;
  415.                         delay100us();
  416.                         io_Buzzer = 1;
  417.                         delay100us();
  418.                         delay100us();               
  419.                 }
  420.                 delay100us();       
  421.                 delay100us();       
  422. }

  423. //計算水位
  424. bool CalculatedWaterLevel(void)
  425. {
  426.         uchar         i = 8 + 2;                                        //當(dāng)前水位的數(shù)字在LCD屏顯示的起點位置
  427.         uint          uiTime;                                                //聲波傳播時間
  428.         ulong         ulDis;                                                //實時測量到距離       
  429.        
  430.         uiTime = TH0 << 8 | TL0;       
  431.         ulDis = (uiTime * 3.40) / 200;             //計算當(dāng)前測量的距離,單位cm
  432.        
  433.         TH0 = 0;
  434.         TL0 = 0;       
  435.        
  436.         if((ulDis > uiD) || (g_flag == isYes ))         // ulDis > uiD 超出測量范圍;g_flag == isYes超時;
  437.         {         
  438.                 g_flag = isNo;               
  439.                 TR0 = 0;
  440.                 putLineCharsToLCD1602(lineTow, i, 3, "Err");        // 顯示Err                
  441.                
  442.                 //閥門動作:               
  443.                 // if(g_flagSwitch == isYes)
  444.                 // {               
  445.                         // io_Control_Inlet = isio_Control_Inlet_OFF;               
  446.                         // io_Control_Outlet = isio_Control_Outlet_ON;
  447.                         // g_flagSwitch = isNo;
  448.                 // }               
  449.                
  450.                 //指示燈:
  451.                 ioLed_Red = ! ioLed_Red;                                                        // 三個燈同時快速閃亮
  452.                 ioLed_Green = ! ioLed_Green;
  453.                 ioLed_Yellow = ! ioLed_Yellow;
  454.                
  455.                 // 蜂鳴器叫:       
  456.                 if(buzzerCallFlag == isCall)
  457.                 {
  458.                         buzzerCall();                                        // 蜂鳴器叫       
  459.                 }
  460.                
  461.                 return isNo;                                                                        // 返回錯誤信息
  462.         }
  463.         else
  464.         {
  465.                 ulDis = uiD - ulDis;                                        // 當(dāng)前水位C = 總距離 - 當(dāng)前檢測到的距離
  466.                
  467.                 if(ulDis > uiH)                                                // 如果水位超高
  468.                 {
  469.                        
  470.                         //閥門動作:
  471.                         io_Control_Inlet = isio_Control_Inlet_OFF;
  472.                         io_Control_Outlet = isio_Control_Outlet_ON;       
  473.                         g_flagSwitch = isNo;
  474.                        
  475.                         //指示燈:
  476.                         ioLed_Red = ! ioLed_Red;                        // 紅燈閃
  477.                         ioLed_Green = isLedOFF;               
  478.                         ioLed_Yellow = isLedOFF;                               
  479.                         // 蜂鳴器叫:
  480.                         if(ulDis - uiH > (uiD - uiH) / DATA_alarmCoefficient) //當(dāng)“當(dāng)前水位”超出最高水位“ ((“總高度減高水位)除以2的值”)時報警
  481.                         {
  482.                                 buzzerCall();                                        // 蜂鳴器叫
  483.                         }
  484.                        
  485.                 }
  486.                 else if(ulDis < uiL)                                        // 如果水位超低
  487.                 {
  488.                         //閥門動作:       
  489.                         if(g_flagSwitch == isYes)
  490.                         {               
  491.                                 io_Control_Outlet = isio_Control_Outlet_OFF;       
  492.                                 io_Control_Inlet = isio_Control_Inlet_ON;       
  493.                                 g_flagSwitch = isNo;
  494.                         }       
  495.                        
  496.                         //指示燈:
  497.                         ioLed_Red = isLedOFF;
  498.                         ioLed_Green = isLedOFF;
  499.                         ioLed_Yellow = ! ioLed_Yellow;        //黃燈閃
  500.                         // 蜂鳴器叫:                                               
  501.                         if( uiL - ulDis > uiL / DATA_alarmCoefficient)//uiL / 2 當(dāng)“當(dāng)前水位”低于“低水位” “低水位除以2的值”時報警
  502.                         {
  503.                                 buzzerCall();                                        // 蜂鳴器叫
  504.                         }
  505.                        
  506.                        
  507.                 }
  508.                 else                                                                // 水位在正常范圍
  509.                 {       
  510.                         ioLed_Red = isLedOFF;
  511.                         ioLed_Green = ! ioLed_Green;
  512.                         ioLed_Yellow = isLedOFF;       
  513.                        
  514.                 }
  515.                 putThreeCharToLCD1602(lineTow, i, ulDis);
  516.                 return isYes;       
  517.                
  518.         }
  519.         return isYes;
  520. }

  521. /*********************************************************/
  522. void main(void)
  523. {
  524.         initIO();                        //初始化IO端口       
  525.         delay500ms();                 //啟動延時,給器件進(jìn)入正常工作狀態(tài)留夠時間       
  526.         initLCD1602();         //LCD初始化       
  527.         putLineCharsToLCD1602(lineOne, 8, 8, "D:000cm ");        //顯示distance (總)距離(檢測探頭到水庫底部的距離)D
  528.         putThreeCharToLCD1602(lineOne, 8 + 2, uiD);                //顯示三位數(shù)值
  529.         putLineCharsToLCD1602(lineOne, 0, 8, "H:000cm ");        //顯示設(shè)定的最高報警水位H
  530.         putThreeCharToLCD1602(lineOne, 0 + 2, uiH);                //顯示三位數(shù)值
  531.         putLineCharsToLCD1602(lineTow, 0, 8, "L:000cm ");        //顯示設(shè)定的最低報警水位L
  532.         putThreeCharToLCD1602(lineTow, 0 + 2, uiL);                //顯示三位數(shù)值
  533.         putLineCharsToLCD1602(lineTow, 8, 8, "C:000cm ");        //顯示當(dāng)前CURRENT水位C
  534.        
  535.         initTimer0();                //初始化定時器0
  536.         initTimer1();
  537.        
  538.         //閥門動作:初始先排水
  539. ……………………

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

所有資料51hei提供下載:
程序.zip (68.74 KB, 下載次數(shù): 52)


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

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 一级黄色毛片子 | 日韩欧美精品一区 | 涩涩视频大全 | 国产精品免费一区二区三区 | 337p日本欧洲亚洲大胆精蜜臀 | 久久大陆| 欧美激情一区 | 国产日韩av一区二区 | 成人在线观看免费 | 在线观看精品视频网站 | 日韩精品视频在线 | 国产黄色大片 | 老司机久久 | 国户精品久久久久久久久久久不卡 | 青青草一区 | 成人福利电影 | 精品九九| 精品国产91亚洲一区二区三区www | 91精品国产麻豆 | 色吧久久 | 夜夜操天天操 | 久久久久亚洲 | 欧美国产亚洲一区二区 | 波多野结衣一区二区 | 蜜臀久久99精品久久久久野外 | 日本高清视频在线播放 | 亚洲精品一区二区三区四区高清 | 手机看片169| 久久一区二区视频 | 亚洲性视频 | a黄视频| 99久久精品国产一区二区三区 | 亚洲高清av| 天天射天天操天天干 | 狠狠操婷婷 | 午夜一级黄色片 | 成人小视频在线观看 | 成人av网站在线观看 | 台湾佬久久 | 亚洲精品一区二三区不卡 | 精品视频一区二区三区 |