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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

TCS34725顏色傳感器實現色彩RGB還原(PWM)含電腦PC還原加12864液晶顯示

  [復制鏈接]
跳轉到指定樓層
樓主
弄了幾天終于實現了,就是傳感器照在什么顏色物質上,RGB燈還還原出來,并上傳電腦,和12864液晶顯示器。哈哈哈哈,機器人有眼睛了。關鍵一點還是全開源。

制作出來的實物圖如下:


單片機源碼如下:
  1. #include <reg52.h>
  2. #include "usart.h"
  3. #include "iic.h"
  4. #include  <intrins.h>
  5. #define uchar unsigned char
  6. #define uint  unsigned int
  7. /*
  8. 硬件接法:
  9. GY-33---c51
  10. 1、GY-33_RX---c51_TX,c51復位將發送A5 01 A6 給模塊
  11. 2、c51_TX---FT232,STM32將數據上傳給上位機
  12. 3、GY-33_TX---c51_RX,接收模塊角度數據
  13. 軟件說明:
  14. 該程序采用串口方式獲取模塊rgb數據,波特率9600
  15. 所以得用上位機先將模塊串口設置成9600,然后再進行以上操作:
  16. 指令:A5 AE 53,模塊需復位生效
  17. 注:中斷函數位于stc_it.c
  18. */
  19. sfr T2MOD =0xC9;  //定時器中斷2TMOD必須定義




  20. /*-----------------------PWM定義---------------------------*/


  21. uchar PWM_T=0;//PWM脈沖周期PWM_T(max)=256*中斷定時時間(1ms)


  22. //PWM物理地址通道定義,物理地址根據需要自由定義
  23. sbit PWM_IO0 = P1^0;
  24. sbit PWM_IO1 = P1^1;
  25. sbit PWM_IO2 = P1^2;


  26. //PWM脈沖占空比
  27. uchar PWM_IO0_ZKB=0;  //脈沖占空比,0~255,=0時輸出最大
  28. uchar PWM_IO1_ZKB=0;
  29. uchar PWM_IO2_ZKB=0;


  30. /*---------------定時器2初始化-------------------*/
  31. void timer2_init()//定時器2初始化
  32. {
  33.         RCAP2H=0xff;  //16位計數器,定時39us
  34.         RCAP2L=0xdc;  //X=0xffdc=65500;T=(65536-X)*機器周期(11.0592MHz,1.085us)
  35.         //TH2=RCAP2H;     //會自動重裝
  36.         //TL2=RCAP2L;
  37.         T2CON=0;
  38.         T2MOD=0;
  39.         EA=1;
  40.         ET2=1;
  41.         TR2=1;
  42. }


  43. /*--------------定時器2中斷服務程序----------------------------*/
  44. void timer2() interrupt 5
  45. {        
  46.         TF2=0; //注意:定時器2必須由軟件對溢出標志位清零,
  47.                //這里與定時器0和定時器1不同
  48.         //PWM處理
  49.            PWM_T++;
  50.         if(PWM_T == 255)//取到最大值
  51.         {PWM_T = PWM_IO0 = PWM_IO1 = PWM_IO2  = 0;}        //所有通道脈沖拉至低電平
  52.         
  53.         //通道脈沖電平拉高
  54.         if(PWM_T == PWM_IO0_ZKB)  //通道0脈沖得高電平
  55.                 PWM_IO0 = 1;        
  56.         
  57.         if(PWM_T == PWM_IO1_ZKB)  //通道1脈沖得高電平
  58.                 PWM_IO1 = 1;
  59.         
  60.         if(PWM_T == PWM_IO2_ZKB)  //通道2脈沖得高電平
  61.         PWM_IO2 = 1;
  62.                
  63.         
  64. }










  65. void send_com(u8 datas)
  66. {
  67.         u8 bytes[3]={0};
  68.         bytes[0]=0xa5;
  69.         bytes[1]=datas;//功能字節
  70.         USART_Send(bytes,3);//發送幀頭、功能字節、校驗和
  71. }
  72. typedef struct
  73. {
  74.     uint8_t Red;
  75.     uint8_t Green;
  76.     uint8_t Blue;
  77. } RGB;


  78. /***************************功能定義***************************/
  79. #define LCD12864_W_COM                        0xF8        //寫指令
  80. #define LCD12864_R_COM                        0xFC        //讀指令
  81. #define LCD12864_W_DAT                        0xFA        //寫數據
  82. #define LCD12864_R_DAT                        0xFE        //讀數據
  83. #ifndef __LCD12864_H__
  84. #define __LCD12864_H__
  85. #define LCD12864_COM 0        //輸入指令
  86. #define LCD12864_DAT 1        //輸入數據
  87. #define LCD12864_CLEAR                        0x01        //清除顯示
  88. #define LCD12864_CURSOR                        0x02        //位址歸位,游標回原點
  89. #define LCD12864_CURSOR_RLF                0x04        //光標左移,整體顯示不移動
  90. #define LCD12864_CURSOR_RRF                0x06        //光標右移,整體顯示不移動
  91. #define LCD12864_CURSOR_RLN                0x05        //光標左移,整體顯示移動
  92. #define LCD12864_CURSOR_RRN                0x07        //光標右移,整體顯示移動
  93. #define LCD12864_DIS_OFF                0x08        //顯示狀態全關
  94. #define LCD12864_DIS_ON                        0x0E        //顯示狀態開
  95. #define LCD12864_DIS_CUR_ON                0x0E        //游標顯示開
  96. #define LCD12864_DIS_CURS_ON        0x0F        //游標位置顯示開
  97. #define LCD12864_CURSOR_RL                0x10        //游標左移
  98. #define LCD12864_CURSOR_RR                0x14        //游標右移
  99. #define LCD12864_CURDIS_RL                0x18        //整體顯示左移,光標跟隨
  100. #define LCD12864_CURDIS_RR                0x1C        //整體顯示又移,光標跟隨
  101. #define LCD12864_COM_BASIC                0x30        //基本指令集動作
  102. #define LCD12864_COM_PLOT_ON        0x36        //擴展指令集動作,繪圖顯示ON
  103. #define LCD12864_COM_PLOT_OFF        0x34        //擴展指令集動作,繪圖顯示OFF
  104. #define LCD12864_STAND_TO                0x31        //進入待命模式
  105. #define LCD12864_PLACE_ROLL                0x03        //允許輸入卷動位址
  106. #define LCD12864_PLACE_IRAM                0x02        //允許輸入IRAM位址
  107. #define LCD12864_REVERES_13                0x04        //選擇一、三行同時作反白顯示
  108. #define LCD12864_REVERES_24                0x05        //選擇二、四行同時作反白顯示
  109. #define LCD12864_REST_ON                0x08        //進入睡眠模式
  110. #define LCD12864_REST_OFF                0x0C        //脫離睡眠模式
  111. #define LCD12864_W_COM                        0xF8        //寫指令
  112. #define LCD12864_R_COM                        0xFC        //讀指令
  113. #define LCD12864_W_DAT                        0xFA        //寫數據
  114. #define LCD12864_R_DAT                        0xFE        //讀數據
  115. //======串口模式=======
  116. sbit LCD12864_CS = P2^7;   //片選信號輸入
  117. sbit LCD12864_STD = P2^6;  //串行數據輸入
  118. sbit LCD12864_SCLK = P2^5; //串行移位脈沖輸入
  119. sbit LCD12864_PSB = P2^4;  //串并模式選擇 0:串口,1:并口
  120. sbit LCDRST  = P2^3;
  121. unsigned char code tabe[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};//查表法//0-9數字
  122. /*****************************向12864寫入8位數據*************************************/
  123. void LCD12864_Wbyte(uchar byte)
  124. {
  125.         uchar i;


  126.         for(i=0;i<8;i++)
  127.                 {
  128.                 LCD12864_SCLK = 0;
  129.                 byte <<= 1;                         //左移待寫入數據,使最高位移至CY
  130.                 LCD12864_STD = CY;        //寫入一位數據
  131.                 LCD12864_SCLK = 1;
  132.                 LCD12864_SCLK = 0;   
  133.                 }
  134. }
  135. /***************************從12864讀出8位數據***返回:sdat************************************/
  136. uchar LCD12864_Rbyte(void)
  137. {
  138.      uchar i,sdat,temp1,temp2;
  139.      temp1 = 0;
  140.      temp2 = 0;
  141. //==========12864的串行數據輸出形式是D7-D6-D5-D4-0-0-0-0-D3-D2-D1-D0-0-0-0-0,故要度兩個八位整合==============
  142.      for(i=0;i<8;i++)
  143.                 {
  144.                 temp1=temp1 << 1;
  145.                 LCD12864_SCLK = 0;
  146.                 LCD12864_SCLK = 1;            
  147.                 LCD12864_SCLK = 0;
  148.                 if( LCD12864_STD )        temp1|=0x01;        //tempe1:D7-D6-D5-D4-0-0-0-0
  149.                 }
  150.      for(i=0;i<8;i++)
  151.                 {
  152.                 temp2=temp2 << 1;
  153.                 LCD12864_SCLK = 0;
  154.                 LCD12864_SCLK = 1;            
  155.                 LCD12864_SCLK = 0;
  156.                 if( LCD12864_STD ) temp2|=0x01;   //tempe2:D3-D2-D1-D0-0-0-0-0
  157.                 }
  158.         sdat = ((temp1 & 0xf0)|(temp2 >> 4));  //取出D7\D6\D5\D4\D3\D2\D1\D0                    
  159.         return sdat;  //返回一個值(sdat)
  160. }
  161. /****************************讀忙狀態**************************************/
  162. void LCD12864_busy( void )
  163. {
  164.         do        LCD12864_Wbyte( LCD12864_R_COM );                //LCD12864_RW=11111,RW(1),RS(0),0
  165.         while( LCD12864_Rbyte() & 0x80 );         //讀BF,直到BF == 0
  166. }
  167. /*************************dat_com=0寫指令,dat_com=1寫數據*****************************************/
  168. void LCD12864_W (bit dat_com,uchar byte)
  169. {
  170.         uchar temp;
  171.         if(dat_com == 0)         //為零,寫入指令
  172.                 temp = LCD12864_W_COM;        //11111,RS(0),RW(0),0
  173.         else                            //否則,寫入數據
  174.                 temp = LCD12864_W_DAT;        //11111,RS(1),RW(0),0
  175.         LCD12864_CS = 1;                //片選使能
  176.         LCD12864_busy();                //LCD忙檢測
  177.         LCD12864_Wbyte(temp);        //寫入模式選擇,指令還是數據
  178.         LCD12864_Wbyte(byte&0xf0);        //寫入字節
  179.         LCD12864_Wbyte((byte<<4)&0xf0);        //寫入字節
  180.     LCD12864_CS = 0;                //片選關閉
  181. }
  182. /****************************LCD12864初始化**************************************/


  183. void LCD12864_Init(void)
  184. {
  185.         LCDRST=1;
  186.         LCD12864_PSB = 0;        //選擇串口模式
  187.         LCD12864_W(LCD12864_COM,0x30);        //基本指令功能.
  188.         LCD12864_W(LCD12864_COM,0x03);        //允許輸入卷動位址
  189.         LCD12864_W(LCD12864_COM,0x0c);                //脫離隨眠狀態,顯示打開,關光標,反白關.
  190.         LCD12864_W(LCD12864_COM,0x01);                //清屏指令.
  191.         LCD12864_W(LCD12864_COM,0x06);        //AC自動加一,光標右移,整體顯示不移動   
  192. }
  193. /**************************LCD12864字符位置自定義顯示****************************************/
  194. void LCD12864_WPoss(uchar x,uchar y,uchar *buff)
  195. {
  196.         uchar addr,i=0;
  197.         switch (x)
  198.                 {
  199.                 case 0:addr=0x80;break;
  200.                 case 1:addr=0x90;break;
  201.                 case 2:addr=0x88;break;
  202.                 case 3:addr=0x98;break;
  203.                 }
  204.         addr=addr+y;


  205.         LCD12864_W(LCD12864_COM,LCD12864_COM_BASIC);        //8BitMCU,基本指令集合
  206.         LCD12864_W(LCD12864_COM,addr);                                        //顯示在自定義位置


  207.         while(buff[i]!='\0')[/i][i]
  208.                 {        
  209.                 LCD12864_W(LCD12864_DAT,buff[i++]);
  210.                 if(++y==16)
  211.                         {
  212.                         y=0;
  213.                         if(++x==4) x=0;


  214.                         switch (x)
  215.                                 {
  216.                                 case 0:addr=0x80;break;
  217.                                 case 1:addr=0x90;break;
  218.                                 case 2:addr=0x88;break;
  219.                                 case 3:addr=0x98;break;
  220.                                 }
  221.                         addr=addr+y;
  222.                         LCD12864_W(LCD12864_COM,addr);
  223.                         }
  224.         
  225.                 }
  226. }
  227. void Disp_img(unsigned char  *img)        //圖形方式12864顯示字模221 橫向取膜
  228. {
  229.         unsigned char i,j;
  230.         unsigned int k = 0;


  231.         LCD12864_W(0,0x36); //圖形方式
  232.         for(i=0;i<32;i++)
  233.           {
  234.                 LCD12864_W(0,0x80+i);
  235.                 LCD12864_W(0,0x80);
  236.             for(j=0;j<16;j++)
  237.                 {
  238.                         LCD12864_W(1,img[k++]);
  239.                 }
  240.           }


  241.          for(i=0;i<32;i++)
  242.           {
  243.                 LCD12864_W(0,0x80+i);
  244.                 LCD12864_W(0,0x88);
  245.             for(j=0;j<16;j++)
  246.                 {
  247.                         LCD12864_W(1,img[k++]);
  248.                   }
  249.         }
  250. }
  251. /************************顯示1************************************/


  252. void display1(long temp)
  253. {
  254.     uchar dt1,dt2,dt3,dt4,dt5,dt6,dt7,dt8;
  255.         //temp=12345678;
  256.         dt1 = temp%10;//1位
  257.         dt2 = temp%100/10;//2位
  258.         dt3 = temp%1000/100;//3位
  259.         dt4 = temp%10000/1000;//4位


  260.         dt5 = temp%100000/10000;//5位
  261.         dt6 = temp%1000000/100000;//6位
  262.         dt7 = temp%10000000/1000000;//7位
  263.         dt8 = temp/10000000;//8位             最高位  


  264.         LCD12864_WPoss(1,0,"紅色R:");//第1行顯示表1
  265.     // LCD12864_W(0,0x80+3);//LCD12864_W ((0或1),****)  0寫指令  1寫數據


  266.     // LCD12864_W(1,tabe[dt8]);//6位
  267.      //LCD12864_W(1,tabe[dt7]);//5位
  268.     // LCD12864_W(1,tabe[dt6]);//4位
  269.     // LCD12864_W(1,tabe[dt5]);//3位
  270.          //LCD12864_W(1,0x2e);
  271.            //LCD12864_W(1,tabe[dt4]);//4位
  272.      LCD12864_W(1,tabe[dt3]);//3位
  273.            LCD12864_W(1,tabe[dt2]);//4位
  274.      LCD12864_W(1,tabe[dt1]);//3位
  275.      LCD12864_WPoss(1,7,"%");//第1行顯示表1
  276. }
  277. /************************顯示2************************************/


  278. void display2(long temp)
  279. {
  280.     uchar dt1,dt2,dt3,dt4,dt5,dt6,dt7,dt8;
  281.         //temp=12345678;
  282.         dt1 = temp%10;//1位
  283.         dt2 = temp%100/10;//2位
  284.         dt3 = temp%1000/100;//3位
  285.         dt4 = temp%10000/1000;//4位


  286.         dt5 = temp%100000/10000;//5位
  287.         dt6 = temp%1000000/100000;//6位
  288.         dt7 = temp%10000000/1000000;//7位
  289.         dt8 = temp/10000000;//8位             最高位  


  290.         LCD12864_WPoss(2,0,"綠色G:");//第1行顯示表1
  291.     // LCD12864_W(0,0x80+3);//LCD12864_W ((0或1),****)  0寫指令  1寫數據


  292.     // LCD12864_W(1,tabe[dt8]);//6位
  293.     // LCD12864_W(1,tabe[dt7]);//5位
  294.     // LCD12864_W(1,tabe[dt6]);//4位
  295.     // LCD12864_W(1,tabe[dt5]);//3位
  296.          //LCD12864_W(1,0x2e);
  297.           // LCD12864_W(1,tabe[dt4]);//4位
  298.      LCD12864_W(1,tabe[dt3]);//3位
  299.            LCD12864_W(1,tabe[dt2]);//4位
  300.      LCD12864_W(1,tabe[dt1]);//3位
  301.      LCD12864_WPoss(2,7,"%");//第1行顯示表1
  302. }
  303. /************************顯示3************************************/


  304. void display3(long temp)
  305. {
  306.     uchar dt1,dt2,dt3,dt4,dt5,dt6,dt7,dt8;
  307.         //temp=12345678;
  308.         dt1 = temp%10;//1位
  309.         dt2 = temp%100/10;//2位
  310.         dt3 = temp%1000/100;//3位
  311.         dt4 = temp%10000/1000;//4位


  312.         dt5 = temp%100000/10000;//5位
  313.         dt6 = temp%1000000/100000;//6位
  314.         dt7 = temp%10000000/1000000;//7位
  315.         dt8 = temp/10000000;//8位             最高位  


  316.         LCD12864_WPoss(3,0,"蘭色B:");//第1行顯示表1
  317.     // LCD12864_W(0,0x80+3);//LCD12864_W ((0或1),****)  0寫指令  1寫數據


  318.      //LCD12864_W(1,tabe[dt8]);//6位
  319.      //LCD12864_W(1,tabe[dt7]);//5位
  320.      //LCD12864_W(1,tabe[dt6]);//4位
  321.      //LCD12864_W(1,tabe[dt5]);//3位
  322.          //LCD12864_W(1,0x2e);
  323.           // LCD12864_W(1,tabe[dt4]);//4位
  324.      LCD12864_W(1,tabe[dt3]);//3位
  325.            LCD12864_W(1,tabe[dt2]);//4位
  326.      LCD12864_W(1,tabe[dt1]);//3位
  327.      LCD12864_WPoss(3,7,"%");//第1行顯示表1
  328. }


  329. int main(void)
  330. {


  331.     u8 sum=0,i=0;
  332.         RGB rgb={0,0,0};
  333.         Usart_Int(9600);
  334.         send_com(0x01);//發送讀方位角指令
  335.         
  336.         LCD12864_Init();        
  337.         LCD12864_WPoss(0,1,"TCS34725顏色");//第1行顯示表1
  338.         
  339.         timer2_init();//定時器2初始化
  340.         
  341.          while(1)
  342.         {
  343.                 if(Receive_ok)//串口接收完畢
  344.                 {
  345.                         for(sum=0,i=0;i<(rgb_data[3]+4);i++)//rgb_data[3]=3
  346.                         sum+=rgb_data[i];[/i][i]
  347.                         if(sum==rgb_data[i])//校驗和判斷[/i][i]
  348.                         {
  349.                                 rgb.Red=rgb_data[4];
  350.                                 rgb.Green=rgb_data[5];
  351.                 rgb.Blue=rgb_data[6];
  352.                                 send_3out(&rgb_data[4],3,0x45);//上傳給上位機
  353.                                 
  354.                                 
  355.                                 display1(rgb.Red);//顯示紅色R:
  356.                                 display2(rgb.Green);//顯示綠色G:G:
  357.                                 display3(rgb.Blue);//顯示蘭色B:         
  358.                                 
  359.                         //通過TCS34725傳感器感受的光線進行PWM三基色彩還原、、
  360.                                                 
  361.                                 PWM_IO0_ZKB = 255-rgb.Red; //紅色R:
  362.                                 PWM_IO1_ZKB = 255-rgb.Green;//綠色G:
  363.                                 PWM_IO2_ZKB = 255-rgb.Blue;//蘭色B:
  364.                                 
  365.                                 
  366.                                 
  367.                         }
  368.                         Receive_ok=0;//處理數據完畢標志
  369.                 }        
  370.         }
  371. }
復制代碼

全部資料51hei下載地址:
顏色傳感器電腦端程序.zip (1.28 MB, 下載次數: 152)
128顯串STC89TCS34725顏色OK2.zip (71.07 KB, 下載次數: 183)


評分

參與人數 2黑幣 +127 收起 理由
楊雪飛 + 27 很給力!
admin + 100 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:358930 發表于 2018-12-31 01:30 | 只看該作者
論壇也沒有找到TCS34725顏色傳感器相關參考,只能自己弄了,希望各位指點迷津,本程序只是實現了功能,電腦顏色還原和12864液晶顯示都很精彩,就是RGB燈有點不準,因為是用一毛錢的小RGB燈珠自己裝進LED燈泡內做成的,下一步打算用一個微型投影機RGB投影頭試試,有點不忍心拆呀,太浪費了,不個要是做個機器人,給她看一下東西能用燈光還原并投影在你面前并加個語音模塊說出來我好喜歡你送的紅色玫瑰花。那一定會開心❤❤❤❤❤!!!!支持我拆投影機的點贊。
回復

使用道具 舉報

板凳
ID:1 發表于 2018-12-31 03:02 | 只看該作者
好資料,51黑有你更精彩!!!
回復

使用道具 舉報

地板
ID:386989 發表于 2018-12-31 14:33 | 只看該作者
這個能完全測出顏色嗎
回復

使用道具 舉報

5#
ID:358930 發表于 2018-12-31 17:27 來自手機 | 只看該作者
壞孩子ii 發表于 2018-12-31 14:33
這個能完全測出顏色嗎

能的,TCS34725是最新芯片,能還原RGB三基色,但是每個人的眼都有色差,但是我們應用主要取值RGB數值分分辨率是255,不用太再意,色彩感受主要是要有好的環境,不過還可以通過軟件軟件濾波,這個幾十塊錢的東西能給出255的分辨率就不錯了,先解決智能識別的有無問題吧,慢慢來,另外我們的RGB也要能支持256級PWM調節才行,所以我想到了千元級的投影機,哈哈哈哈
回復

使用道具 舉報

6#
ID:757976 發表于 2020-6-23 11:54 | 只看該作者
謝謝分享,下載學習
回復

使用道具 舉報

7#
ID:881365 發表于 2021-1-29 20:34 | 只看該作者
樓主:您好。看了你的顯示顏色的圖片,以為是你自己寫的TCS34725 單片機端的程序,下載工程文件,里面沒看到有關任何TCS34725的程序。可能是我理解錯了。你買的別人就識別號的開發板,只是串口接收RGB結果嗎???
回復

使用道具 舉報

8#
ID:927341 發表于 2021-8-22 11:33 | 只看該作者
/PWM物理地址通道定義   這個怎么理解
回復

使用道具 舉報

9#
ID:305517 發表于 2022-3-13 17:14 | 只看該作者
好資料,謝謝你的提供
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 黄网站免费在线 | 日韩精品一区二区在线观看 | 欧美精品网 | 奇米超碰 | 亚洲福利免费 | 国产精品免费播放 | 91看片免费| 国产一区二区三区免费观看视频 | 日韩精品免费在线观看 | 国产精品久久久久一区二区三区 | 国产成人免费视频 | 在线观看亚洲专区 | 嫩草国产| 国产在线一区二区三区 | 久久91 | 欧美日韩在线观看一区二区三区 | 亚洲一区二区三区高清 | 国产精品成人一区二区三区夜夜夜 | 很黄很污的网站 | 欧美中文在线 | 免费国产视频 | 偷牌自拍 | 欧美日韩综合一区 | 亚洲视频免费观看 | 欧美国产视频 | 欧美日韩亚洲在线 | 免费一区在线观看 | 国产一区二区三区在线看 | 国产成人免费观看 | 成人免费视频网站在线观看 | 亚洲高清视频一区二区 | 久久er精品 | 国产一级精品毛片 | 999在线精品 | 国产免费色 | 美女福利视频一区 | 久久久久久久久99精品 | 色婷婷激情 | 日韩欧美在线视频一区 | av中文在线| 久久不卡 |