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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機智能調光臺燈電路原理圖+程序設計

  [復制鏈接]
跳轉到指定樓層
樓主
1.功能介紹

      智能臺燈可分成自動和手動兩種模式。在自動模式下,臺燈能根據環境光的亮暗與人是否被臺燈所檢測到(人是否在)來自動開啟臺燈。當人被微機檢測到,環境光又達到某個程度的時候(可以設定與調節),臺燈就會開啟。如果環境光沒有達到這個程度,臺燈不會開啟。當人沒有被微機檢測到,無論多暗,臺燈也不會開。  手動模式是為了不習慣使用自動模式的人或是臺燈中的微機出故障等緊急情況時用的。在手動模式下,智能臺燈和普通臺燈是一樣使用的。
主要功能 :
(1)亮度不夠且有人靠近時臺燈自動亮;
(2)靠的太近會提醒坐姿不正(蜂鳴器)
(3)附近無人時臺燈自動熄滅(30秒)  時間可調
(4)根據環境亮度調節等亮度
(5)可手動調節臺燈亮度
(6)設定學習時間

2.硬件設計
(1)總體硬件設計
      整體硬件電路是以AT89C52單片機為控制核心,主要由熱釋電紅外傳感器,光敏電阻信號處理電路,提醒電路,燈光控制電路,故障報警電路等組成。單片機可將熱釋電紅外傳感器檢測到的人體輻射紅外信號及光強信號的模擬量轉換成數字量。


(2)LED驅動電路
      LED驅動電路采用3路串聯、每路4顆的LED燈,使用三極管S8050來控制LED燈的亮滅。在軟件上采用PWM控制方式,以此達到控制LED燈的亮度。

(3)光敏感應電路
       對于臺燈亮度的感應采用了光敏電阻,利用光敏電阻的阻值隨著亮度的改變而改變,電阻值的改變會改變光敏電阻上的電壓值。這時,通過AD轉換器采集電壓,轉換成相應的光強數據傳輸給單片機。

(4)人體感應電路
      人體感應電路采用了HC-SR501基于紅外線技術的數字傳感器。當傳感器感應到人體時,傳感器IO引腳輸出高電平;當無人體時,傳感器輸出低電平。

(5)紅外接近傳感器
       紅外接近傳感器采用了E18- D80NK數字型傳感器,檢測到目標是低電平輸出,正常狀態是高電平輸出;此傳感器的功能為檢測用戶是否坐于臺燈前。

3.軟件設計
(1)數碼管驅動程序
  1. #define DUAN P0                                  //數碼管段位
  2. sbit W0=P2^7;                //數碼管位端
  3. sbit W1=P2^6;
  4. sbit W2=P2^5;
  5. sbit W3=P2^4;

  6. /**********************************************************************
  7. * 名稱 : display();
  8. * 功能 : 數碼管顯示
  9. * 輸入 : 無
  10. * 輸出 : 無
  11. ***********************************************************************/         
  12. void display()
  13. {
  14.         if(flag_set==0)                           //正常模式下
  15.         {
  16.                 DUAN=tab[min/10];           //送入段碼,秒數高位
  17.                 W0=0;                                   //打開位地址
  18.                 delay(1);                           //小延時
  19.                 W0=1;                                   //關閉位地址
  20.                 DUAN=tab_dian[min%10]; //送入段碼,秒數低位
  21.                 W1=0;
  22.                 delay(1);
  23.                 W1=1;
  24.                 DUAN=tab[sec/10];           //送入段碼,分鐘數高位
  25.                 W2=0;
  26.                 delay(1);
  27.                 W2=1;
  28.                 DUAN=tab[sec%10];           //送入段碼,分鐘數高位
  29.                 W3=0;
  30.                 delay(1);
  31.                 W3=1;
  32.         }
  33.         else if(flag_set==1)           //設置模式下閃爍相應位
  34.         {
  35.                 if(ss==1)                           //閃爍標志  ss=1 正常顯示
  36.                 {
  37.                         DUAN=~tab[min/10];
  38.                         W0=0;
  39.                         delay(1);
  40.                         W0=1;
  41.                         DUAN=~tab_dian[min%10];
  42.                         W1=0;
  43.                         delay(1);
  44.                         W1=1;
  45.                 }
  46.                 else                                   //閃爍標志  ss=0 熄滅相應位 達到閃爍效果         ss在定時器里500ms取反一次
  47.                 {
  48.                         DUAN=~tab[10];           //
  49.                         W0=0;
  50.                         delay(1);
  51.                         W0=1;
  52.                         DUAN=~tab_dian[10];
  53.                         W1=0;
  54.                         delay(1);
  55.                         W1=1;
  56.                 }
  57.                 DUAN=~tab[sec/10];
  58.                 W2=0;
  59.                 delay(1);
  60.                 W2=1;
  61.                 DUAN=~tab[sec%10];
  62.                 W3=0;
  63.                 delay(1);
  64.                 W3=1;
  65.         }
  66.         else
  67.         {
  68.                 DUAN=~tab[min/10];
  69.                 W0=0;
  70.                 delay(1);
  71.                 W0=1;
  72.                 DUAN=~tab_dian[min%10];
  73.                 W1=0;
  74.                 delay(1);
  75.                 W1=1;
  76.                 if(ss==1)
  77.                 {
  78.                         DUAN=~tab[sec/10];
  79.                         W2=0;
  80.                         delay(1);
  81.                         W2=1;
  82.                         DUAN=~tab[sec%10];
  83.                         W3=0;
  84.                         delay(1);
  85.                         W3=1;
  86.                 }
  87.                 else
  88.                 {
  89.                         DUAN=~tab[10];
  90.                         W2=0;
  91.                         delay(1);
  92.                         W2=1;
  93.                         DUAN=~tab[10];
  94.                         W3=0;
  95.                         delay(1);
  96.                         W3=1;
  97.                 }
  98.         }
  99. }
復制代碼

(2)按鍵驅動程序
  1.     sbit change= P2^3;        //自動模式切換按鍵
  2.     sbit set = P2^2;        //設置按鍵
  3.     sbit add = P2^1;        //加按鍵
  4.     sbit sub = P2^0;        //減按鍵

  5.     /**********************************************************************
  6.     * 名稱 : KEY();
  7.     * 功能 : 按鍵控制
  8.     * 輸入 : 無
  9.     * 輸出 : 無
  10.     ***********************************************************************/
  11.     void KEY()
  12.     {
  13.             uint lum_mean,lum_all;
  14.             uchar b,c;
  15.             if(change==0)                                  //自動切換按鍵按下
  16.             {
  17.                     delay(10);                                  //去抖
  18.                     if(change==0)                          //再次判斷按鍵按下
  19.                     {
  20.                             buzz=0;                                  //蜂鳴器鳴響
  21.                             flag_auto=!flag_auto; //自動模式標志位取反
  22.                             if(flag_auto==1)          //當切換到手動模式時  首先將LED發光比例PWM設置在50%
  23.                             scale=20;
  24.                     }
  25.                     while(!change) display();buzz=1; //等待按鍵釋放  松開按鍵后關閉蜂鳴器、刷新顯示
  26.             }
  27.             if(jiejin==0&&flag_jiejin==1) //接近傳感器檢測到障礙時  開啟報警
  28.             {
  29.                     buzz=0;
  30.                     flag_jiejin=0;
  31.             }
  32.             if(jiejin!=flag_jiejin)              //接近傳感器檢測不到障礙時  關閉報警
  33.             {
  34.                     buzz=1;
  35.                     flag_jiejin=1;
  36.             }
  37.             if(set==0)                                      //設置鍵按下時
  38.             {
  39.                     delay(10);
  40.                     if(set==0)
  41.                     {
  42.                             buzz=0;
  43.                             flag_set++;                          //設置變量++
  44.                             if(flag_set==3)                  //加到3時回復回正常模式
  45.                             flag_set=0;
  46.                             flag_bs=0;                          //按下設置 關閉報警
  47.                     }
  48.                     while(!set) display(); buzz=1;//等待按鍵釋放  松開按鍵后關閉蜂鳴器、刷新顯示
  49.             }
  50.             if(flag_set==1)                                          //加鍵按鍵只有在設置狀態(flag_set!=0)時按下才有效          調分
  51.             {                                                                 
  52.                     if(add==0)                                          //加按鍵按下時
  53.                     {
  54.                             delay(10);                                  //消抖
  55.                             if(add==0)
  56.                             {
  57.                                     buzz=0;                                  //蜂鳴器響
  58.                                     min++;                                  //分++
  59.                                     if(min>=60)
  60.                                     min=0;
  61.                             }
  62.                             while(!add) display(); buzz=1;         //等待按鍵釋放  松開按鍵后關閉蜂鳴器、刷新顯示
  63.                     }
  64.                     if(sub==0)                                          //減按鍵按下時
  65.                     {
  66.                             delay(10);                                  //消抖
  67.                             if(sub==0)
  68.                             {
  69.                                     buzz=0;                                  //蜂鳴器響
  70.                                     min--;                                  //分--
  71.                                     if(min>0)
  72.                                     min=59;
  73.                             }
  74.                             while(!sub) display(); buzz=1;         //等待按鍵釋放  松開按鍵后關閉蜂鳴器、刷新顯示
  75.                     }
  76.             }
  77.             if(flag_set==2)                                        //調秒
  78.             {                                                               
  79.                     if(add==0)                                        //加鍵按下
  80.                     {                                                
  81.                             delay(10);                                //消抖
  82.                             if(add==0)
  83.                             {
  84.                                     buzz=0;                                //蜂鳴器響
  85.                                     sec++;                                //秒++
  86.                                     if(sec>=60)
  87.                                     sec=0;
  88.                             }
  89.                             while(!add) display(); buzz=1;          //等待按鍵釋放  松開按鍵后關閉蜂鳴器、刷新顯示
  90.                     }
  91.                     if(sub==0)                                         //減鍵按下
  92.                     {
  93.                             delay(10);
  94.                             if(sub==0)                                 //消抖
  95.                             {
  96.                                     buzz=0;                                 //蜂鳴器響
  97.                                     sec--;                                 //秒--
  98.                                     if(sec<0)
  99.                                     sec=59;
  100.                             }
  101.                             while(!sub) display();        buzz=1;          //等待按鍵釋放  松開按鍵后關閉蜂鳴器、刷新顯示
  102.                     }
  103.                     while(!sub);
  104.             }
  105.             if(flag_auto==0)                                        //自動模式
  106.             {
  107.                     if(flag_rsd==1)                                        //且有人在范圍內時        環境發光強度控制燈光變化
  108.                     {
  109.                             for(b=0;b<49;b++)                         //將空數組tt[]內數值整體左移一位
  110.                             {
  111.                                     tt[ b]=tt[b+1];                        //將后一數值放到前一位置
  112.                             }
  113.                             tt[49]=ADC0809();                        //將讀出的ad0809數值放入tt[49]
  114.                             for(c=0;c<50;c++)                        //將tt[]內數值相加
  115.                             {
  116.                                     lum_all=lum_all+tt[c];
  117.                             }
  118.                             lum_mean=lum_all/50;                //將總數/50取出平均值
  119.     //                        lum_all=0;                                        //將總數清零
  120.                             if(lum_mean<=30) scale=1;                           //判斷取出平均值大小  小于30  發光強度0%
  121.                             else if(lum_mean>=150) scale=41;           //大于150  發光強度100%
  122.                             else scale=((lum_mean-30)/3)+1;                   //其他值時將其計算得到發光強度 (計算目的是為了得到一個1-41之間的數值 控制燈光變化)
  123.                     }
  124.                     else
  125.                     scale=1;                                         //沒有人在范圍內時 將燈光亮度調至0%
  126.             }
  127.             else                                                           //手動模式下
  128.             {
  129.                     if(flag_set==0)                                 //正常模式下
  130.                     {
  131.                             if(add==0)                                 //加鍵按下
  132.                             {
  133.                                     delay(10);
  134.                                     if(add==0)
  135.                                     {
  136.                                     //        buzz=0;           //蜂鳴器響
  137.                                             scale++;                  //燈光比例++
  138.                                             if(scale>=41)
  139.                                             scale=41;
  140.                                             display();
  141.                                     }
  142.                             //        while(!add) display();        buzz=1;
  143.                             }
  144.                             if(sub==0)                                  //減鍵按下時
  145.                             {
  146.                                     delay(10);
  147.                                     if(sub==0)
  148.                                     {
  149.                                     //        buzz=0;                           //蜂鳴器響
  150.                                             scale--;                   //燈光比例--
  151.                                             if(scale>1)
  152.                                             scale=1;
  153.                                             display();
  154.                                     }
  155.                     //                while(!sub) display(); buzz=1;
  156.                             }
  157.                     }
  158.             }
  159.     }
復制代碼
(3)ADC控制程序
  1. #define Data_ADC0809 P1
  2. //ADC0809 控制引腳定義
  3. sbit ST=P3^1;
  4. sbit EOC=P3^2;
  5. sbit OE=P3^3;

  6. extern uchar ADC0809();           //函數聲明
  7. /**********************************************************************
  8. * 名稱 : ADC0809();
  9. * 功能 : ADC0809把模擬量轉化為八位數字量
  10. * 輸入 : 無
  11. * 輸出 : 無
  12. ***********************************************************************/
  13. uchar ADC0809()
  14. {
  15.         uchar temp_=0x00;        
  16.         OE=0;                 //初始化高阻態           轉化初始化   低電平,禁止輸出允許
  17.         ST=0;
  18.         ST=1;                 //上升沿 清零   
  19.         ST=0;                 //下降沿 開始轉換
  20.         while(EOC==0);            //外部中斷 等待AD轉換結束        EOC為1時AD轉換結束跳出
  21.         OE=1;                                  //高電平,輸出允許
  22.         temp_=Data_ADC0809;        //讀取轉換的AD值
  23.         OE=0;                                //低電平,禁止輸出允許
  24.         return temp_;                //返回ADC讀取值
  25. }
復制代碼

(4)LED亮度控制程序
  1. //管腳聲明
  2. sbit LED = P3^4;        //PWM輸出
  3. sbit change= P2^3;        //自動模式切換按鍵
  4. sbit rsd = P3^6;    //熱釋電
  5. sbit jiejin=P3^5;   //接近開關
  6. sbit buzz=P3^7;     //蜂鳴器報警電路
  7. /**********************************************************************
  8. * 名稱 : init();
  9. * 功能 : 初始化定時器
  10. * 輸入 : 無
  11. * 輸出 : 無
  12. ***********************************************************************/
  13. void init()
  14. {
  15.         TMOD=0x11;           //工作方式1
  16.         TH1=0x3c;
  17.         TL1=0xb0;           //T1賦初值50ms
  18.         TH0=0xff;
  19.         TL0=0xe7;           //T0賦初值25us         
  20.         ET0=1;
  21.         ET1=1;                   //打開中斷允許開關
  22.         EA=1;                   //中斷總開關
  23.         TR0=1;                   //開定時器0 開關
  24.         TR1=0;                   //關定時器0 開關
  25. }

  26. /**********************************************************************
  27. * 名稱 : void time0() interrupt 1
  28. * 功能 : 定時器T0 中斷服務函數:PWM脈沖發生函數
  29. * 輸入 : 無
  30. * 輸出 : 無
  31. ***********************************************************************/
  32. void time0() interrupt 1
  33. {
  34.         uchar n;
  35.         TH0=0xff;
  36.         TL0=0xe7;                 //重新賦初值
  37.         n++;                         //每25us  n++
  38.         if(n>scale)                 //n<設置比例時,打開燈
  39.         {
  40.                 LED=1;
  41.         }
  42.         else if(n<=scale)//n大于等于設置比例時 關閉燈
  43.         {
  44.                 LED=0;
  45.         }
  46.         if(n==40)                 //n==40  :25us*40=1ms   1kHZ
  47.         {
  48.                 n=0;                 //n=0
  49.         }
  50.         else ;        
  51. }

  52. /**********************************************************************
  53. * 名稱 : void time1() interrupt 3
  54. * 功能 : 定時器T1 中斷服務函數:計時和閃爍控制          紅外熱釋
  55. * 輸入 : 無
  56. * 輸出 : 無
  57. ***********************************************************************/
  58. void time1() interrupt 3
  59. {
  60.         uchar m;
  61.         TH1=0x3c;
  62.         TL1=0xb0;                 //重新賦初值
  63.         m++;                         //50ms  m++
  64.         if((m==10||m==20)&&flag_set!=0)          //每過500ms  并且 在設置狀態時
  65.         {
  66.                 ss=!ss;                                                  //閃爍變量取反
  67.         }
  68.         if(m==20)                                                  //到達1s時
  69.         {
  70.                 m=0;                                                  //m=0
  71.                 if(rsd==0)                                          //熱釋電無信號時
  72.                 rsd_sec++;                                          //熱釋電計時秒++
  73.                 if(rsd_sec<=30&&rsd==1)                  //熱釋電計時秒小于等于30 并且 熱釋電有信號時
  74.                 {
  75.                         rsd_sec=0;                                  //將熱釋電秒清零
  76.                         flag_rsd=1;                                  //標志位置1 控制AD0809采集數值 調節燈光亮度
  77.                 }
  78.                 else if(rsd_sec>30&&rsd==0)          //熱釋電計時秒大于30 并且 熱釋電無信號時
  79.                 {
  80.                         flag_rsd=0;                                  //標志位置0 停止ad0809轉換 關閉燈光
  81.                         rsd_sec=0;                                  //熱釋電計時秒清零
  82.                 }
  83.                 if(flag_set==0&&flag_bs==0&&((min+sec)!=0))                 //正常模式下&&未報警&&定時時間不為零時
  84.                 {
  85.                         sec--;
  86.                         if(sec<0)                                                                         //定時秒--  小于0時
  87.                         {
  88.                                 sec=59;                                                                         //復位到59秒
  89.                                 min--;                                                                         //分--
  90.                         }
  91.                         if(min<=0&&sec==0)                                                         //分和秒都減到零時
  92.                         {
  93.                                 min=0;
  94.                                 flag_bs=1;
  95.                                 buzz=0;                                                                         //蜂鳴器報警提示時間到
  96.                         }
  97.                 }
  98. //                else buzz=1;        
  99.         }        
  100. }
復制代碼


(5)主函數
  1. /**********************************************************************
  2. * 名稱 : main();
  3. * 功能 : 主函數
  4. * 輸入 : 無
  5. * 輸出 : 無
  6. ***********************************************************************/
  7. void main()
  8. {
  9.         init();                  //調用初始化函數
  10.         flag_auto=1;  //初始化手動模式
  11.         rsd=0;                  //熱釋電引腳置低(有信號時時高電平)
  12.         delay(500);          //延時500ms后開機

  13.         while(1)          //大循環
  14.         {
  15.                 KEY();                 //調用按鍵函數
  16.                 display();         //調用顯示函數
  17.         }
  18. }
復制代碼
源碼+AD電路圖資料51hei下載地址:
智能臺燈.rar (244.17 KB, 下載次數: 529)


評分

參與人數 2黑幣 +60 收起 理由
a1075511750 + 10 很好
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:110278 發表于 2019-3-25 10:09 | 只看該作者
很不錯的設計
回復

使用道具 舉報

板凳
ID:487422 發表于 2019-4-2 15:13 | 只看該作者
太強了,我找這個找好久,一直在思考怎么加學習時間功能
回復

使用道具 舉報

地板
ID:497335 發表于 2019-5-8 14:03 來自手機 | 只看該作者
想要仿真圖
回復

使用道具 舉報

5#
ID:532850 發表于 2019-5-11 01:05 | 只看該作者
能請教下lum_mean平均數為什么是all除以50得到的?這個50怎么來的?謝謝
回復

使用道具 舉報

6#
ID:546802 發表于 2019-5-25 20:42 | 只看該作者
這個和不錯
回復

使用道具 舉報

7#
ID:548584 發表于 2019-5-27 17:57 | 只看該作者
ljx944848837 發表于 2019-4-2 15:13
太強了,我找這個找好久,一直在思考怎么加學習時間功能

你下載了沒?
回復

使用道具 舉報

8#
ID:579808 發表于 2019-7-17 20:22 | 只看該作者
為什么仿真不出來
回復

使用道具 舉報

9#
ID:651341 發表于 2019-12-8 12:15 | 只看該作者
程序怎么有好多錯誤
回復

使用道具 舉報

10#
ID:676283 發表于 2019-12-29 18:15 | 只看該作者
這個壓縮包里面都有哪些內容呢
回復

使用道具 舉報

11#
ID:65956 發表于 2019-12-30 09:05 | 只看該作者
根據你提供的原理來看,可省去檢測光敏的芯片,用MCU自身的ADC功能代替就行了
回復

使用道具 舉報

12#
ID:758116 發表于 2020-5-22 18:05 | 只看該作者
有仿真嗎?
回復

使用道具 舉報

13#
ID:781931 發表于 2020-6-18 11:27 | 只看該作者
樓主的東西很有用 真好
回復

使用道具 舉報

14#
ID:785330 發表于 2020-6-21 11:54 | 只看該作者
很nice,謝了大佬
回復

使用道具 舉報

15#
ID:797466 發表于 2020-8-11 20:26 來自手機 | 只看該作者
兩個USB借口都是什么作用的
回復

使用道具 舉報

16#
ID:797466 發表于 2020-8-11 20:33 來自手機 | 只看該作者
小YY嘿 發表于 2019-5-27 17:57
你下載了沒?

小哥哥能加加好友問幾個問題嗎?

回復

使用道具 舉報

17#
ID:846087 發表于 2020-11-25 22:38 | 只看該作者
仿真在哪里
回復

使用道具 舉報

18#
ID:733976 發表于 2020-12-18 15:45 | 只看該作者

樓主的東西很有用 真好
回復

使用道具 舉報

19#
ID:712560 發表于 2021-3-30 18:38 | 只看該作者
很好的貼子,正在學數碼管
回復

使用道具 舉報

20#
ID:712560 發表于 2021-3-30 18:38 | 只看該作者
正在學數碼管顯示,很不錯
回復

使用道具 舉報

21#
ID:97678 發表于 2021-3-31 08:22 | 只看該作者
這么強大的功能! 學習一下!
回復

使用道具 舉報

22#
ID:92810 發表于 2021-6-8 16:44 | 只看該作者
謝謝樓主分享了,先下載寫來學習
回復

使用道具 舉報

23#
ID:935260 發表于 2021-6-9 10:14 | 只看該作者
aking991 發表于 2019-12-30 09:05
根據你提供的原理來看,可省去檢測光敏的芯片,用MCU自身的ADC功能代替就行了

問題是一般的51沒有啊,STC的可能有
回復

使用道具 舉報

24#
ID:942388 發表于 2021-6-22 13:26 來自手機 | 只看該作者
gemxie 發表于 2021-6-8 16:44
謝謝樓主分享了,先下載寫來學習

請問這個壓縮包怎么下載
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 97成人免费| 午夜免费福利片 | 日韩在线欧美 | 一二三在线视频 | 五月花丁香婷婷 | 熟女毛片 | 一久久久 | 欧美日韩综合视频 | 99精品视频在线观看免费播放 | 偷拍自拍网 | 久草欧美视频 | 日批免费在线观看 | 日本免费视频在线观看 | 亚洲精品一区二区三区蜜桃久 | 国产精品视频网站 | 精品久久久久久亚洲精品 | 久久精品国产99国产 | 久久久久高清 | 黄色片在线免费看 | 色婷婷综合久久久久中文一区二区 | 伊人网99 | 婷婷桃色网 | 伊人免费视频二 | 久草中文在线 | 国产一区二区不卡 | www.天天操.com | 国产欧美日韩一区二区三区在线观看 | 精品欧美乱码久久久久久1区2区 | 精品久久香蕉国产线看观看亚洲 | 亚洲国产精品美女 | 国产精品日韩 | 国内自拍真实伦在线观看 | 国产一区二区在线播放 | 亚洲精品免费在线 | 久久精品国产99国产精品 | 免费毛片网| 精品视频久久久久久 | 免费黄色成人 | 欧美国产精品 | 九九九久久国产免费 | 中文字幕一区在线 |