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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

可用手機APP控制的智能插座制作 附單片機源碼

  [復制鏈接]
跳轉到指定樓層
樓主
1.作品的整機外觀圖片或焊接組裝好的PCBA圖片;
智能插座實物圖:

手機APP:

2.作品的研究背景、目的和功能、市場應用前景;
隨著科技的不斷進步,各種各樣的電子產品已經慢慢進入到了我們的日常生活中,由于人們的不合理的使用,經常導致電能的無故浪費。然而在當今這個社會,人口數量的不斷增加,再生能源的不斷減少,全球溫室效應日益嚴重,節能減排尤為重要。為了解決這樣一對矛盾,我們了解到,越來越多的產品有了待機功能,如電視機,電腦,冰箱,空調等家用電器。據調查,我國城市家庭的平均待機能耗,相當于每個家庭每天都在亮著一盞15瓦到30瓦的長明燈。據測算,家電待機能耗占到中國家庭電力消耗的10%以上。而正是由于這種長期的待機狀態,使得插座的負荷也越來越大,帶來了非常嚴重的安全隱患。故需要一款能夠控制使用時間的插座來解決這個問題,這款插座也可以由此走進千家萬戶!

3.趣味性
    用戶再通過手機APP控制插座時,可通過插座中央的喜趣表情判斷插座狀態,給用戶在使用的過程中帶來些許的樂趣

二、系統構架圖

三、硬件部分的描述
1.附上原理圖&PCB實物圖的圖片或者源文件(官方建議大家盡量用源文件上傳),如果是圖片,請確保圖片是清晰可辨的;

2.用文字把該作品的實現原理、系統的工作過程大致講解一下。

該系統采用51單片機STC89C52在Keil開發平臺上通過C語言編程控制繼電器的通、斷來實現控制插座的通、斷電,而繼電器的通、斷由定時組別確定。在定時范圍內繼電器導通,否則斷開。并用LCD1602顯示出時鐘及定時時間等信息。當時鐘走到定時開始時間時,繼電器接通,插座給負載供電;時鐘走到定時結束時間時,繼電器斷開,插座停止給負載供電。
1.實現功能
系統總體設計主要實現以下功能:
(1)時間預設功能:設置預設時間,控制繼電器各個時間段的工作狀態。
(2)數據存儲功能:將數據存儲在外部儲存芯片中,防止單片機意外掉電數據清零。
(3)時間溫度功能:實時顯示環境溫度和時間。
(4)藍牙遙控功能:單片機通過藍牙模塊與手機進行通訊,用戶通過手機APP控制單片機工作。


四、材料清單(BOM列表)

(1)單片機STC89C52:CPU
(2)LCD1602液晶顯示屏:專門用來顯示字母、數字、符號等的點陣型液晶模塊
(3)DS1302時鐘模塊:本設計的時間預設模式需要精準時間來控制繼電器的動作,為為保證單片機掉電后時間信號依舊繼續工作,故采用DS1302外部時間計時。DS1302一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周、時、分、秒進行計時,具有閏年補償功能
(4)繼電器模塊:該系統通過單片機控制繼電器轉而控制插座的通斷。
(5)AT24C02存儲模塊:AT24C02作為外部存儲芯片,將數據實時儲存,防止單片機意外掉電導致數據清零
(6)BT-08B藍牙模塊:通過此模塊實現單片機與手機的通信
(7)DS18B20溫度模塊:它具有微型化,低功耗,高性能,抗干擾能力強,易配微處理器等優點,可直接將溫度轉化成數字信號處理器處理。


五、軟件部分的描述(選填)

設計思想:將該項目每一個功能獨立成每一模塊,然后每一個模塊單獨開發,并獨立測試。

(1)主程序:主要是在單片機的控制下,建立人機操作界面,對設定時間進行儲存,對相關功能進行設置,驅動液晶顯示出相關信息,并通過判斷定時時間,控制繼電器的通、斷,從而達到控制插座的通、斷電。
主程序流程圖
(2) AT24C02程序:包括I2C總線程序和AT24C02寫入和讀取程序

寫入流程圖和讀取流程圖


(3)DS1302程序:包含寫操作、讀操作、初始化操作和讀取時間操作函數


讀取流程圖和寫入流程圖

(4)LCD1602液晶程序:包含延時函數、寫入命令子函數、寫入數據子函數、初始化函數


  寫指令和寫數據流程圖



(5)BT-08B藍牙模塊程序:包含串口初始化函數和延時函數

藍牙串口控制流程圖


(6)DS18B20溫度模塊程序:包含延時函數、初始化函數、寫數據函數、讀數據函數、轉換溫度函數、發送讀取溫度命令函數和讀取溫度函數
  
溫度讀取流程圖


單片機源程序如下:
  1. #include <reg52.h>                        
  2. #include "ds1302.h"
  3. #include "temp.h"        
  4. #include "lcd.h"
  5. #include "BT.h"
  6. #include "i2c.h"
  7. #define GPIO_KEY P1

  8. sbit relay=P2^3;        //繼電器信號輸入管腳定義
  9. sbit beep=P1^5;                //定義蜂鳴器

  10. typedef unsigned int u16;          //對數據類型進行聲明定義
  11. typedef unsigned char u8;

  12. u8 sign=0;//聲音判斷標志        
  13. u8 h,m,s;//時,分,秒
  14. u8 KeyValue=16;        //用來存放讀取到的鍵值
  15. u8 tempData[3];//接收溫度數據
  16. u8 dateData[8];        //接收日期數據
  17. u8 timingData[8];//接收定時數據        
  18. u8 timeData[8];//接收時間數據
  19.                               
  20. /*******************************************************************************
  21. * 函 數 名         : delay()
  22. * 函數功能                   : 延時函數
  23. * 輸    入         : i
  24. * 輸    出         : 無
  25. *******************************************************************************/
  26. void delay(u16 i)
  27. {
  28.            while(i--);
  29. }
  30. /*******************************************************************************
  31. * 函 數 名         : sound()
  32. * 函數功能                   : 聲音函數
  33. * 輸    入         : 無
  34. * 輸    出         : 無
  35. *******************************************************************************/
  36. void sound()
  37. {
  38.         u8 i=100;
  39.         while(i--)
  40.         {
  41.                 beep=~beep;
  42.                 delay(30);
  43.                 beep=~beep;
  44.                 delay(10);        
  45.         }
  46. }

  47. /*******************************************************************************
  48. * 函 數 名         : Timer0Init()
  49. * 函數功能                   : 定時器0初始化
  50. * 輸    入         : 無
  51. * 輸    出         : 無
  52. *******************************************************************************/
  53. void Timer0Init()
  54. {
  55.         TMOD|=0X01;//選擇為定時器0模式,工作方式1,僅用TR0打開啟動。                                    
  56.         TH0=0XFC;        //給定時器賦初值,定時1ms
  57.         TL0=0X18;        
  58.         ET0=1;//打開定時器0中斷允許
  59.         EA=1;//打開總中斷
  60.         TR0=1;//打開定時器                                
  61. }
  62. /*******************************************************************************
  63. * 函 數 名         : KeyChoose()
  64. * 函數功能                   : 按鍵選擇
  65. * 輸    入         : 無
  66. * 輸    出         : 無
  67. *******************************************************************************/
  68. void KeyChoose()
  69. {
  70.         if(sign!=switch_pattern)        //判斷聲音標志sign是否與switch_pattern相等,不相等則表明開關狀態有變化,輸出提示音,并令sign=switch_pattern
  71.         {
  72.                 sound();
  73.                 sound();
  74.                 sign=switch_pattern;
  75.         }
  76.    switch(KeyValue)
  77.         {
  78.                 case 0:
  79.                         sound();
  80.                         sound();
  81.                         if(switch_pattern==1)
  82.                          switch_pattern=0;
  83.                     else
  84.                          switch_pattern=1;
  85.                     timing_pattern=2;//重置非定時狀態
  86.                     KeyValue=16;//防止未按鍵依舊進入該條選擇語句,下同
  87.                         break;
  88.                 case 1:
  89.                         sound();
  90.                         sound();
  91.                         switch_pattern=1;
  92.                         timing_pattern=0;//定時關閉;
  93.                         KeyValue=16;
  94.                         break;
  95.                 case 2:
  96.                         sound();
  97.                         sound();
  98.                         switch_pattern=0;
  99.                         timing_pattern=1;//定時開啟;
  100.                         KeyValue=16;
  101.                         break;
  102.                 case 3:
  103.                         sound();
  104.                         sound();
  105.                         h=0;  //將其他兩位置為0,下同
  106.                         s=0;
  107.                         m=1;// 定時1分鐘,下同
  108.                         KeyValue=16;
  109.                         break;           
  110.                 case 4:
  111.                         sound();
  112.                         sound();
  113.                         h=0;
  114.                         s=0;
  115.                         m=30;
  116.                         KeyValue=16;
  117.                         break;
  118.                 case 5:
  119.                         sound();
  120.                         sound();
  121.                         m=0;
  122.                         s=0;
  123.                         h=1;
  124.                         KeyValue=16;
  125.                         break;
  126.                 case 6:
  127.                         sound();
  128.                         sound();
  129.                     m=0;
  130.                         s=0;
  131.                         h=2;
  132.                         KeyValue=16;
  133.                         break;
  134.                 case 7:
  135.                         sound();
  136.                         sound();
  137.                         m=0;
  138.                         s=0;
  139.                         h=3;
  140.                         KeyValue=16;
  141.                         break;
  142.                 case 8:
  143.                         sound();
  144.                         sound();
  145.                         m=0;
  146.                         s=0;
  147.                         h=4;
  148.                         KeyValue=16;
  149.                         break;
  150.                 case 9:
  151.                         sound();
  152.                         sound();
  153.                         m=0;
  154.                         s=0;
  155.                         h=6;
  156.                         KeyValue=16;
  157.                         break;
  158.                 case 10:
  159.                         sound();
  160.                         sound();
  161.                         m=0;
  162.                         s=0;
  163.                         h=8;
  164.                         KeyValue=16;
  165.                         break;
  166.                 case 11:
  167.                         sound();
  168.                         sound();
  169.                         m=0;
  170.                         s=0;
  171.                         h=10;
  172.                         KeyValue=16;
  173.                         break;
  174.                 case 12:
  175.                         sound();
  176.                 sound();
  177.                         m=0;
  178.                         s=0;
  179.                         h=12;
  180.                         KeyValue=16;
  181.                         break;
  182.                 case 13:
  183.                         sound();
  184.                         sound();
  185.                         m=0;
  186.                         s=0;
  187.                         h=14;
  188.                         KeyValue=16;
  189.                         break;
  190.                 case 14:
  191.                         sound();
  192.                         sound();
  193.                         m=0;
  194.                         s=0;
  195.                         h=20;
  196.                         KeyValue=16;
  197.                         break;
  198.                 case 15:
  199.                         sound();
  200.                         sound();        
  201.                         m=0;
  202.                         s=0;
  203.                         h=24;
  204.                         KeyValue=16;
  205.                         break;
  206.                         
  207.         }

  208. }
  209. /*******************************************************************************
  210. * 函 數 名         : Timer0()
  211. * 函數功能                   : 實現1s定時操作
  212. * 輸    入         : 無
  213. * 輸    出         : 無
  214. *******************************************************************************/
  215. void Timer0() interrupt 1
  216. {
  217.         static u16 i;

  218.         TH0=0XFC;        //給定時器賦初值,定時1ms
  219.         TL0=0X18;               
  220.         i++;
  221.         if(i>=1000)//定時一秒則
  222.         {
  223.            i=0;
  224.            if((h||m||s)&&timing_pattern<=1)//如果定時沒有結束且為定時狀態,則定時繼續
  225.                 {
  226.                    if(s==0)
  227.                    {
  228.                           s=59;
  229.                           if(m==0)
  230.                           {
  231.                                   m=59;
  232.                                 h--;
  233.                           }
  234.                           else
  235.                           m--;
  236.                    }
  237.                    else
  238.                    s--;
  239.                if(s==0&&m==0&&h==0)//如果定時結束
  240.                    {
  241.                       relay=~relay;        
  242.                           if(switch_pattern==0)
  243.                                   switch_pattern=1;
  244.                           else
  245.                                 switch_pattern=0;                                          
  246.                           timing_pattern=2;//重置為非定時狀態
  247.                           sound();
  248.                           sound();
  249.                           sound();
  250.                           sound();                                          
  251.                }
  252.                 }
  253.         }
  254.         if(switch_pattern!=0)//如果狀態為開則relay=0;
  255.         {        
  256.                 relay=0;
  257.                 while(!switch_pattern);//判斷開關是否切換
  258.         }
  259.         if(!switch_pattern)        //如果狀態為關則relay=1;
  260.         {               
  261.                 relay=1;
  262.                 while(switch_pattern);//判斷開關是否切換        
  263.         }
  264.         if(timing_pattern==2)//非定時狀態時將時間重置為00:00:00
  265.         {
  266.                    h=0;
  267.             m=0;
  268.             s=0;
  269.         }
  270.         if(timing_pattern<=1&&timing_time!=0)//獲取藍牙傳入的時間
  271.         {
  272.                 sound();
  273.                 sound();
  274.                    h=timing_time-1;
  275.                 m=59;
  276.                 s=59;
  277.                 timing_time=0;
  278.         }
  279. }


  280. /*******************************************************************************
  281. * 函 數 名         : KeyDown()
  282. * 函數功能                   : 按鍵判斷函數
  283. * 輸    入         : 無
  284. * 輸    出         : 無
  285. *******************************************************************************/
  286. void KeyDown(void)
  287. {
  288.         char a=0;
  289.         GPIO_KEY=0x0f;
  290.         if(GPIO_KEY!=0x0f)//讀取按鍵是否按下
  291.         {
  292.                 Delay1ms(10);//延時10ms進行消抖
  293.                 if(GPIO_KEY!=0x0f)//再次檢測鍵盤是否按下
  294.                 {        
  295.                         //測試列
  296.                         GPIO_KEY=0X0F;
  297.                         switch(GPIO_KEY)
  298.                         {
  299.                                 case(0x07):        KeyValue=0;break;
  300.                                 case(0X0b):        KeyValue=1;break;
  301.                                 case(0X0d):        KeyValue=2;break;
  302.                                 case(0X0e): KeyValue=3;break;
  303.                         }
  304.                         //測試行
  305.                         GPIO_KEY=0XF0;
  306.                         switch(GPIO_KEY)
  307.                         {
  308.                                 case(0x70):        KeyValue=KeyValue;break;
  309.                                 case(0Xb0):        KeyValue=KeyValue+4;break;
  310.                                 case(0Xd0):        KeyValue=KeyValue+8;break;
  311.                                 case(0Xe0): KeyValue=KeyValue+12;break;
  312.                         }
  313.                         while((a<50)&&(GPIO_KEY!=0xf0))         //檢測按鍵松手檢測
  314.                         {
  315.                                 Delay1ms(10);
  316.                                 a++;
  317.                         }
  318.                 }
  319.         }

  320. }

  321. /*******************************************************************************
  322. * 函 數 名         : datapros_temp()
  323. * 函數功能                   : 溫度讀取處理函數
  324. * 輸    入         : temp
  325. * 輸    出         : 無
  326. *******************************************************************************/
  327.   
  328. void datapros_temp(int temp)         
  329. {
  330.            float tp;  
  331.         if(temp<0)                                //當溫度值為負數
  332.           {
  333.                 tempData[0]='-';
  334.                 temp=temp-1;
  335.                 temp=~temp;
  336.                 tp=temp;
  337.                 temp=tp*0.0625*100+0.5;        
  338.           }
  339.          else                                        //當溫度為正數
  340.           {        
  341.                 tempData[0]='+';               
  342.                 tp=temp;
  343.                 temp=tp*0.0625*100+0.5;        
  344.         }
  345.         tempData[1] =temp/1000+'0';
  346.         tempData[2] =temp%1000/100+'0';
  347. }
  348. /*******************************************************************************
  349. * 函 數 名         : datapros_time()
  350. * 函數功能                   : 時間讀取處理函數
  351. * 輸    入         : 無
  352. * 輸    出         : 無
  353. *******************************************************************************/
  354. void datapros_time()         
  355. {
  356.            Ds1302ReadTime();
  357.         timingData[0] = h/10+'0';                                //定時-時
  358.         timingData[1] = h%10+'0';                                          
  359.         timingData[2] = ':';
  360.         timingData[3] = m/10+'0';                                //定時-分
  361.         timingData[4] = m%10+'0';        
  362.         timingData[5] = ':';
  363.         timingData[6] = s/10+'0';                                //定時-秒
  364.         timingData[7] =s%10+'0';
  365.         dateData[0]= (TIME[6]/16)+'0';                                //年
  366.         dateData[1]=(TIME[6]&0x0f)+'0';
  367.         dateData[2]='-';
  368.         dateData[3]= (TIME[4]/16)+'0';                                  //月                                
  369.         dateData[4]=(TIME[4]&0x0f)+'0';
  370.         dateData[5]='-';
  371.         dateData[6]= (TIME[3]/16)+'0';                                  //日                                
  372.         dateData[7]=(TIME[3]&0x0f)+'0';
  373.         timeData[0]=(TIME[2]/16)+'0';                                //時
  374.         timeData[1]=(TIME[2]&0x0f)+'0';
  375.         timeData[2]=':';
  376.         timeData[3]=(TIME[1]/16)+'0';                                //分
  377.         timeData[4]=(TIME[1]&0x0f)+'0';
  378.         timeData[5]=':';
  379.         timeData[6]=(TIME[0]/16)+'0';                                //秒
  380.         timeData[7]=(TIME[0]&0x0f)+'0';

  381. }


  382. /*******************************************************************************
  383. * 函 數 名         : lcdDisplay()
  384. * 函數功能                   : 顯示函數
  385. * 輸    入         : 無
  386. * 輸    出         : 無
  387. *******************************************************************************/
  388. void lcdDisplay()
  389. {
  390.         u8 i;
  391.         LcdWriteCom(0x80);//從第一行開始寫入        
  392.         LcdWriteData('2');
  393.         LcdWriteData('0');
  394.     for(i=0;i<8;i++)                 //顯示日期
  395.         {
  396.                  LcdWriteData(dateData[i]);
  397.         }
  398.         LcdWriteData(' ');
  399.         LcdWriteData(' ');
  400.         if(switch_pattern==0)//顯示開關狀態
  401.         {
  402.                 LcdWriteData('O');
  403.                 LcdWriteData('F');
  404.                 LcdWriteData('F');
  405.                 LcdWriteData(' ');
  406.         }
  407.         else
  408.         {
  409.                 LcdWriteData('O');
  410.                 LcdWriteData('N');
  411.                 LcdWriteData(' ');
  412.                 LcdWriteData(' ');
  413.         }
  414.         LcdWriteCom(0x80+0x40);        //換到lcd第二行開頭
  415.         for(i=0;i<3;i++)                //顯示溫度
  416.         {
  417.                  LcdWriteData(tempData[i]);
  418.         }
  419.         LcdWriteData(' ');
  420.         LcdWriteData(' ');
  421.         LcdWriteData(' ');
  422.         if(timing_pattern<2)        //判斷是否是定時狀態。timing_pattern<2則是非定時狀態,顯示時間信息;否則顯示定時信息                                                
  423.                 for(i=0;i<8;i++)
  424.                 {        
  425.                         LcdWriteData(timingData[i]);
  426.                 }
  427.         else
  428.                 for(i=0;i<8;i++)
  429.                 {        
  430.                          LcdWriteData(timeData[i]);
  431.                 }
  432.         LcdWriteData(' ');
  433.         LcdWriteData(' ');
  434.         LcdWriteCom(0x80);        
  435. }
  436. /*******************************************************************************
  437. * 函 數 名         : save_write()
  438. * 函數功能                   : 將定時數據存儲在At24c02中
  439. * 輸    入         : 無
  440. * 輸    出         : 無
  441. * 備    注                     :要注意每寫入一次,應有一段延時。
  442. *******************************************************************************/                  
  443. void save_write()
  444. {                                   
  445.      At24c02Write(6,timing_pattern);
  446.          Delay1ms(2);
  447.          At24c02Write(5,switch_pattern);
  448.          Delay1ms(2);
  449. ……………………

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

所有資料51hei提供下載:
單片機源代碼.rar (83.06 KB, 下載次數: 202)
藍牙開關app.rar (362.22 KB, 下載次數: 188)



評分

參與人數 3黑幣 +79 收起 理由
lzp0425 + 8 絕世好帖!
kevin666999 + 21 共享資料的黑幣獎勵!
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:146874 發表于 2018-8-20 08:52 | 只看該作者
謝謝樓主分享  
回復

使用道具 舉報

板凳
ID:384558 發表于 2018-8-22 11:01 | 只看該作者
謝謝樓主分享
回復

使用道具 舉報

地板
ID:392360 發表于 2018-9-1 21:34 | 只看該作者
謝謝樓主分享
回復

使用道具 舉報

5#
ID:171327 發表于 2019-1-14 02:10 | 只看該作者
你好,請問您這個app的源碼有嗎?我想請教一下,最近在弄這個想在宿舍裝一個,
回復

使用道具 舉報

6#
ID:66761 發表于 2019-1-17 10:59 | 只看該作者
最近正研究這個呢,謝謝樓主分享
回復

使用道具 舉報

7#
ID:471573 發表于 2019-1-23 16:27 | 只看該作者
太強大了!!!
回復

使用道具 舉報

8#
ID:430254 發表于 2019-1-24 17:06 | 只看該作者
非常不錯,好帖
回復

使用道具 舉報

9#
ID:508022 發表于 2019-4-9 16:58 | 只看該作者

請問您會做這個嗎,想請教一下您
回復

使用道具 舉報

10#
ID:508022 發表于 2019-4-9 16:59 | 只看該作者
請問怎么聯系作者啊,想請教一下
回復

使用道具 舉報

11#
ID:692945 發表于 2020-2-15 00:10 | 只看該作者
你好,你還有這個app的源碼嗎?我想學習一下
回復

使用道具 舉報

12#
ID:692945 發表于 2020-3-11 18:12 | 只看該作者
小白請教,不是用藍牙控制嗎,為什么還用到按鍵?
回復

使用道具 舉報

13#
ID:65956 發表于 2020-3-12 08:47 | 只看該作者
這個充其量也只能是算局部室內手機遙控器,算不上什么智能
回復

使用道具 舉報

14#
ID:540642 發表于 2020-3-15 17:25 | 只看該作者
這個插座是220v交流電嗎
回復

使用道具 舉報

15#
ID:342911 發表于 2020-3-17 11:38 | 只看該作者
感謝分享 太強了
回復

使用道具 舉報

16#
ID:555216 發表于 2020-3-20 17:33 | 只看該作者
謝謝,請問這個APP時可以用AS打開嗎
回復

使用道具 舉報

17#
ID:494479 發表于 2020-4-5 12:23 | 只看該作者
這個有全部的元器件清單么
回復

使用道具 舉報

18#
ID:281879 發表于 2020-4-5 14:11 | 只看該作者
謝謝分享 太牛了
回復

使用道具 舉報

19#
ID:630878 發表于 2020-4-24 11:38 來自手機 | 只看該作者
作者您好,請問app在哪開發
回復

使用道具 舉報

20#
ID:739951 發表于 2020-4-28 11:16 | 只看該作者
感謝分享
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人av在线播放 | 亚洲视频免费观看 | 亚洲一区二区三区在线视频 | 在线免费视频一区 | av手机在线播放 | 成人自拍视频网站 | 美女久久久久 | 九九九久久国产免费 | 欧美一区二区三区久久精品 | 久久久人成影片一区二区三区 | 国产成人影院 | 日p视频免费看 | 国产高清一区二区三区 | 99re视频 | 伊人久久在线观看 | 午夜视频在线观看网址 | 97色伦网 | 国产成人综合久久 | 久久99深爱久久99精品 | 日韩欧美在线视频 | 在线成人免费av | av在线成人 | 97成人精品 | 国产精品国产a级 | 天堂一区二区三区 | 日韩在线一区二区三区 | 国产综合视频 | 久久久久久99 | 亚洲欧美国产精品久久 | 亚洲激情第一页 | 欧美性a视频 | 日韩中字幕 | 日日干夜夜操天天操 | 亚洲国产精品99久久久久久久久 | 欧美一区二区久久 | 一久久久| 在线一区观看 | 天天插天天狠天天透 | 亚洲福利一区二区 | 久久久久久久久91 | 成人激情视频在线播放 |