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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

TA3116做的200W功放 附單片機程序和PCB文件

  [復制鏈接]
跳轉到指定樓層
樓主
閑來無事,做了一塊200*2.1聲道功放板
貢獻出來學習
PADS畫的原理圖和PCB圖如下:(51hei附件中可下載工程文件)



單片機源程序如下:
  1. #include <INTRINS.H>
  2. #include        "STC15.h"                //主控芯片的頭文件
  3. #include  "intrins.h"        //需要使用nop()函數故而包含該頭文件
  4. #include  "delay.h"
  5. #include  "i2c.h"
  6. #include  "sc2314.h"
  7. #include  "key.h"
  8. #include  "tm1618.h"
  9. //#include "iap.h"        

  10. //寄存器引用及申明
  11. /************************常用數據類型定義*************************/
  12. #define u8  uint8_t
  13. #define u16 uint16_t
  14. #define u32 uint32_t

  15. typedef unsigned char    uint8_t;
  16. typedef unsigned int     uint16_t;
  17. typedef unsigned long    uint32_t;

  18. unsigned char idata sound_dats;   //音量常數
  19. unsigned char idata sound_ch;     //通道常數
  20. unsigned char idata sub_dats;     //低音常數
  21. unsigned char idata tre_dats;     //高音常數
  22. unsigned char idata test_data;

  23. /****************************************************************************/
  24. #define SetdatAdd   0x0002  //設置參數存儲初始地址
  25. #define voladd    0x00      //音量存儲地址
  26. #define chadd     0x01      //通道存儲地址
  27. #define subadd    0x03      //低音存儲地址
  28. #define treadd    0x04      //低音存儲地址
  29. #define test      0x05 //測試存儲地址

  30. #define FOSC 11059200UL     //系統外部時鐘頻率(無符號長整型)
  31. #define BAUD 9600           //欲配置的串口通信波特率值
  32. /************************端口/引腳定義區域************************/

  33. sbit MUTE=P1^2;                                                        //
  34. sbit STBY=P1^3;                                                  //
  35. sbit BLUE=P3^6;                                                        //

  36. //----------------------------------------------------------------

  37. /************************用戶自定義數據區域***********************/

  38. bit IR_KEY=0;                                                                //遙控按鍵按下標志
  39. bit IR_Flag=0;                                                        //紅外數據接收完成標志位
  40. u8 IR_time=0;                                                          //下降沿之間的時間計數值
  41. u8 IR_code[4];                                                        //用戶碼+用戶碼+數據碼+數據反碼
  42. u8 IR_data[33];                                                        //引導碼+32個位數據各自占用的時間
  43. //unsigned char IR_Key        = 0x0;        //IR待處理鍵值
  44. /**************************函數聲明區域***************************/
  45. void delay(u16 Count);                        //延時函數聲明
  46. void Time0_init(void);                        //定時計數器0初始化函數
  47. void Int0_init(void);                                //外部中斷0初始化函數
  48. void IR_decode(void);                                //紅外解碼函數(用于得到鍵值)
  49. void IR_control(void);                        //紅外控制函數(用戶控制LED燈)
  50. void IR_deal(void);                                                //紅外解碼
  51. void Key_deal(unsigned char dat);
  52. void Key_scanf(void);
  53. void UART_init(void);                                //串口初始化函數聲明
  54. void SendData(u8 dat);                        //串口發送單字節數據函數聲明
  55. void SendString(u8 *s);                        //串口發送字符串函數聲明

  56. /****************************************************************/
  57. //定時計數器0初始化函數Time0_init(),無形參,無返回值
  58. /****************************************************************/
  59. void IO_init(void)        //
  60. {
  61. //        P1M0 = 0x0c;     //STC15W204S IO配置
  62. //        P1M1 = 0x30;
  63. //        P5M0 = 0x00;
  64. //        P5M1 = 0x30;
  65. //        P3M0 = 0x40;
  66. //        P3M1 = 0x00;

  67. //      //STC15W408AS IO配置
  68.     P0M0 = 0x00; P0M1 = 0x00;
  69.     P1M0 = 0x0c; P1M1 = 0x10;
  70.     P2M0 = 0x00; P2M1 = 0x00;
  71.     P3M0 = 0x40; P3M1 = 0x04;
  72.     P4M0 = 0x00; P4M1 = 0x00;
  73.     P5M0 = 0x00; P5M1 = 0x00;
  74.     P6M0 = 0x00; P6M1 = 0x00;
  75.     P7M0 = 0x00; P7M1 = 0x00;

  76. }

  77. /****************************************************************/
  78. //定時計數器0初始化函數Time0_init(),無形參,無返回值
  79. /****************************************************************/
  80. void Time0_init(void)        //278微秒@11.0592MHz
  81. {
  82.         AUXR &= 0x7F;        //定時器時鐘12T模式
  83.         TMOD &= 0xF0;        //T0工作在工作方式2,8位自動重裝載模式
  84.         TMOD |= 0x02;        //T0工作在工作方式2,8位自動重裝載模式
  85.         TL0 = 0x00;                //定時初值為0,則T0定時時間達到最大(約0.278ms)
  86.         TH0 = 0x00;                //定時初值為0,則T0定時時間達到最大(約0.278ms)
  87.         TF0 = 0;                        //清除TF0標志
  88.         ET0=1;                                //使能T0的溢出中斷
  89.         TR0=1;                                //開啟T0運行控制位,允許T0開始計數
  90.         //定時時間計算:t=256*12/11.0592=277.77us
  91. }
  92. /****************************************************************/
  93. //外部中斷0初始化函數Int0_init(),無形參,無返回值
  94. /****************************************************************/
  95. void Int0_init(void)
  96. {
  97.         IT0=1;        //配置外部中斷0信號觸發方式為邊沿觸發(下降沿有效)
  98.         EX0=1;        //使能INT0中斷
  99.         EA=1;                //打開單片機總中斷開關EA
  100. }
  101. /****************************************************************/
  102. //紅外解碼函數IR_decode(),用于得到鍵值,無形參,無返回值
  103. /****************************************************************/
  104. void IR_decode(void)
  105. {
  106.         u8 i,j,k;                                                               
  107.         u8 Timer_Value,IR_Value;

  108.         k=1;                                                                                                        //先讓變量k等于1,因為k為0時取出的將會是“引導碼的時間間隔”
  109.         for(i=0;i<4;i++)                                                        //外層循環4次為了得到4個數據字節
  110.         {
  111.                 for(j=0;j<=7;j++)                                                //內層循環8次為了拼合8個數據位為1個字節
  112.                 {
  113.                         Timer_Value=IR_data[k];                //取出相應紅外位的“時間間隔”數據
  114.                         if(Timer_Value>7)                                        //若“時間間隔”比7大那肯定是“1碼”反之為“0碼”
  115.                                 IR_Value|=0x80;                                        //通過按位或運算高位填1
  116.                         if(j<7)                                                                                
  117.                                 IR_Value>>=1;                                                
  118.                         k++;                                                                                
  119.                 }
  120.                 IR_code[i]=IR_Value;                                //得到紅外數據后放回IR_code[]數組
  121.                 IR_Value=0;                                                                        //清零IR_Value變量
  122.         }
  123.         IR_KEY=1;                                                                                        //紅外按鍵按下標志位置1
  124. }
  125. /****************************************************************/
  126. //紅外控制函數IR_control(),無返回值
  127. /****************************************************************/
  128. void IR_control(void)
  129. {
  130.   wir_1618((IR_code[2])/10,0);
  131.   wir_1618((IR_code[2])%10,1);
  132.   wir_1618((IR_code[3])/10,2);
  133.   wir_1618((IR_code[3])%10,3);
  134.                 switch(IR_code[2])
  135.                 {
  136.                                 case 0x45:               //開關機按鍵
  137.                            {
  138.           BLUE = ~BLUE;
  139.                                         STBY = ~STBY;        
  140.                                         MUTE = ~MUTE;
  141.                                         if(STBY ==1)     //開機
  142.                                                 {        
  143.                                                         sound_ch=RdFROM(chadd);
  144.                                                         Delay_50us(4);
  145.                                                         crl_dsp();
  146.                                                         ch(sound_ch);
  147.                                                         if(sound_ch==0){WrToROM(chadd,0);AUX1();}
  148.                                                         if(sound_ch==1){WrToROM(chadd,1);DVD();}
  149.                                                         if(sound_ch==2){WrToROM(chadd,2);}               
  150.                                                         if(sound_ch==3){WrToROM(chadd,3);}        
  151.                                                 }                                 
  152.                                  };break;
  153. //*************************************               
  154.         
  155.                          case 0x46:              //聲道切換
  156.           {
  157.                                  if(STBY==1)        
  158.                                          {
  159.                                                 sound_ch=RdFROM(chadd);
  160.             Delay_50us(2);
  161.                                                  crl_dsp();
  162.                                                 if(sound_ch>=3)//4)
  163.                                                          {
  164.                                                          sound_ch=0;
  165.                                                          }
  166.                                                 else
  167.                                                          sound_ch++;
  168.                                                 ch(sound_ch);
  169.                                                 if(sound_ch==0){WrToROM(chadd,0);AUX1();}
  170.                                                 if(sound_ch==1){WrToROM(chadd,1);DVD();}
  171.                                                 if(sound_ch==2){WrToROM(chadd,2);}
  172.                                                 if(sound_ch==3){WrToROM(chadd,3);}
  173.                                          }
  174.                                         };
  175.                                         break;
  176. //***************************
  177.                         case 0x15://09************************VOL -
  178.           {
  179.                                  if(STBY==1)        
  180.                                          {
  181.                                                 sound_dats=RdFROM(voladd);
  182.                                                 if(sound_dats>0)
  183.                                                  {
  184. //                                                         BLUE = ~BLUE;
  185.                                                          sound_dats--;
  186.                                                         write_add(0x88,sound_dats);
  187. //                                                vol_dsp();
  188.                                                   dis_str(3,(30-sound_dats)/10);
  189.                                                   dis_str(4,(30-sound_dats)%10);
  190.                                                          WrToROM(voladd,sound_dats);                                                                                             
  191.                                                          }
  192.                                                  if(sound_dats==0)
  193.                                                 {
  194.                                                         BLUE = 1;
  195.                                                         sound_dats++;                                                        
  196.                                                 }
  197.                                   }
  198.                                         };break;
  199. //************************************
  200.                         case 0x07:            //09************************VOL +
  201.           {
  202.                                  if(STBY==1)        
  203.                                          {
  204.                                         sound_dats=RdFROM(voladd);
  205.                                         if(sound_dats<30)
  206.                                                 {
  207.                                                         sound_dats++;
  208.                                                         write_add(0x88,sound_dats);
  209.                                                         WrToROM(voladd,sound_dats);                                                                                                      
  210.                                                         }
  211.                                         if(sound_dats==30)
  212.                                                         {
  213.                                                                 BLUE = 1;
  214.                                                     sound_dats--;
  215.                                                         }
  216.                                                 }

  217.                                         };break;

  218. //************************************      
  219.                         case 0x16:     //靜音
  220.           {
  221.                                  if(STBY==1)        
  222.                                          {
  223.                                                 MUTE = ~MUTE;
  224.                                                 BLUE = ~BLUE;
  225.                                          }
  226.                                         };break;        
  227. //***********************************************************
  228.                 case 0x40:          //***********高音+
  229.                                  {
  230.                                 if(STBY==1)        
  231.                                          {
  232.                                         tre_dats=RdFROM(treadd);
  233.                                         if(tre_dats<10)
  234.                                                 {
  235.                                                         tre_dats++;
  236.                                                         tre(tre_dats);
  237.                                                         WrToROM(treadd,tre_dats);                                                                                                      
  238.                                                         }
  239.                                         if(tre_dats==10)
  240.                                                         {
  241.                                                  tre_dats--;
  242.                                                         }
  243.                                                 }

  244.                                  break;
  245.                                  }
  246. //***********************************************************
  247.                 case 0x44:          //***********高音-
  248.                                  {
  249.                                 if(STBY==1)        
  250.                                          {
  251.                                         tre_dats=RdFROM(treadd);
  252.                                         if(tre_dats>0)
  253.                                                 {
  254.                                                         tre_dats--;
  255.                                                         tre(tre_dats);
  256.                                                         WrToROM(treadd,tre_dats);                                                                                                      
  257.                                                         }
  258.                                         if(tre_dats==0)
  259.                                                         {
  260.                                                  tre_dats++;
  261.                                                         }
  262.                                                 }

  263.                                  break;
  264.                                  }
  265. //***********************************************************
  266.                 case 0x0d:          //***********低音+
  267.                                  {
  268.                                 if(STBY==1)        
  269.                                          {
  270.                                         sub_dats=RdFROM(subadd);
  271.                                         if(sub_dats<10)
  272.                                                 {
  273.                                                         sub_dats++;
  274.                                                         bass(sub_dats);
  275.                                                         WrToROM(subadd,tre_dats);                                                                                                      
  276.                                                         }
  277.                                         if(sub_dats==0)
  278.                                                         {
  279.                                                  sub_dats++;
  280.                                                         }
  281.                                                 }

  282.                                  break;
  283.                                  }
  284. //***********************************************************
  285.                 case 0x19:          //***********低音-
  286.                                  {
  287.                                 if(STBY==1)        
  288.                                          {
  289.                                         sub_dats=RdFROM(subadd);
  290.                                         if(sub_dats>0)
  291.                                                 {
  292.                                                         sub_dats--;
  293.                                                         bass(sub_dats);
  294.                                                         WrToROM(subadd,tre_dats);                                                                                                      
  295.                                                         }
  296.                                         if(sub_dats==0)
  297.                                                         {
  298.                                                  sub_dats++;
  299.                                                         }
  300.                                                 }

  301.                                  break;
  302.                                  }
  303. //*************************************               
  304.                         case 0x43:     //關藍燈
  305.           {

  306.                                                 BLUE = 0;
  307.                                                 crl_dsp();
  308.                                                 break;        
  309.                                   }               
  310. //*************************************               
  311.                         case 0x0c:     //關藍燈
  312.           {

  313.             DVD();
  314.                                                 break;        
  315.                                   }        
  316. //*************************************               
  317.                         case 0x09:     //2314初始化
  318.           {
  319.                  sc2314_init();
  320.                                          BLUE =1;
  321.                                          WrToROM(test,0x01);
  322.                                          Delay_ms(100);               
  323.                                          test_data=RdFROM(test);        
  324.                                          BLUE = ~BLUE;
  325.                                          Delay_ms(100);                                                
  326.                                          if(test_data==1)
  327.                                                 {
  328.                                                         BLUE = ~BLUE;
  329.                                                         Delay_ms(100);
  330.                                                         BLUE = ~BLUE;
  331.                                                 }        
  332.                                                 else
  333.                                                         MUTE = 0;                                       
  334.                                    break;        
  335.                                   }                                                
  336.                         default: break;

  337.         }
  338.         
  339.         IR_KEY=0;//遙控處理完成,清零該標志位
  340. }

  341. /****************************************************************/
  342. //紅外調用函數
  343. //***************************************************
  344. void IR_deal()
  345. {
  346.         u8 x,y,z;                                   //變量x控制循環
  347.                                                                            //變量y用于存放紅外碼高位,變量z用于存放紅外碼低位
  348.         if(IR_Flag)        //紅外數據接收完成標志位                                
  349.                 {
  350.                         IR_decode();         //遙控數據解碼        
  351.                         IR_Flag=0;                        
  352.                 }
  353.                 if(IR_KEY)                         //遙控按鍵按下標志               
  354.                 {
  355.                                 IR_control();               
  356.                                 SendString("|****遙控碼值****:");
  357.                                 for(x=0;x<4;x++)                                                //輸出紅外的4個字節碼
  358.                                 {
  359.                                         if(IR_code[x]/16<0x10)                //若數據高8位為數字則轉換為對應ASCII碼打印出來
  360.                                                 y=IR_code[x]/16+0x30;
  361.                                         if(IR_code[x]/16>0x09)                //若數據高8位為字母則轉換為對應ASCII碼打印出來
  362.                                                 y=IR_code[x]/16+0x37;
  363.                                         if(IR_code[x]%16<0x10)                //若數據低8位為數字則轉換為對應ASCII碼打印出來
  364.                                                 z=IR_code[x]%16+0x30;
  365.                                         if(IR_code[x]%16>0x09)                //若數據低8位為字母則轉換為對應ASCII碼打印出來
  366.                                                 z=IR_code[x]%16+0x37;
  367.                                         SendData(' ');                                                //打印空格為了優化顯示
  368.                                         SendData('0');                                                //打印'0'字符
  369.                                         SendData('x');                                                //打印'x'字符
  370.                                         SendData(y);                                                        //打印數據高8位
  371.                                         SendData(z);                                                        //打印數據低8位
  372.                                         SendData(' ');                                                //打印空格為了優化顯示
  373.                                 }
  374.                                 SendString("\r\n");                                        //打印回車換行
  375.                                 SendString("|***************************************************|\r\n");               
  376.                                 IR_KEY=0;//清除紅外按鍵按下標志位
  377.            }
  378. }
  379. /****************************************************************/
  380. //串口初始化函數UART_init(),無形參,無返回值
  381. /****************************************************************/
  382. void UART_init(void)
  383. {
  384.         SCON=0x50;                                                                                //10位數據異步通信模式,允許接收
  385.         T2L=(65536-(FOSC/4/BAUD));           //設置波特率重裝值
  386.   T2H=(65536-(FOSC/4/BAUD))>>8;        //設置波特率重裝值
  387.   AUXR|=0x14;                                //T2為1T模式,并啟動定時器2
  388.   AUXR|=0x01;                               //選擇定時器2為串口1的波特率發生器
  389.   EA=1;                                                                                                        //使能單片機總中斷開關EA
  390. }
  391. /****************************************************************/
  392. //串口發送單字節數據SendData(),有形參dat用于接收欲發送的單字節數據,
  393. //無返回值
  394. /****************************************************************/
  395. void SendData(u8 dat)
  396. {
  397.         SBUF=dat;                        //發送數據到發送緩沖區內
  398.         while(TI==0);        //等待串口數據發送完畢
  399.         TI=0;                                        //清除發送完成標志位TI        
  400. }
  401. /****************************************************************/
  402. //串口發送字符串函數SendString(),有形參*s屬于指針變量,用于指向要
  403. //發送的字符串首字節,通過指針的自增,逐一取出字符依次發送直至字符串
  404. //結束標志'\0',無返回值
  405. /****************************************************************/
  406. void SendString(u8 *s)
  407. {
  408.         while(*s!='\0')
  409.         {
  410.                 SendData(*s);        //調用SendData()函數依次發送單字節數據
  411.                 s++;                                        //指針自增,便于發送下一個數據
  412.         }
  413. }
  414. /****************************************************************/

  415. /***************************主函數區域****************************/

  416. void main(void)
  417. {
  418.         Delay_50us(10);
  419.         IO_init();
  420.         Time0_init();                //定時計數器0初始化函數
  421.         Int0_init();                //外部中斷0初始化函數
  422.         WrToROM(voladd,20);
  423.   Delay_ms(1);
  424.         WrToROM(chadd,0);
  425.         Delay_ms(1);
  426.         WrToROM(subadd,5);
  427.         Delay_ms(1);
  428.         WrToROM(treadd,5);
  429.         Delay_ms(1);
  430.         sc2314_init();
  431.         UART_init();                //串口初始化
  432.         Delay_ms(1);
  433.         SendString("|******串口準備完畢******|\r\n");
  434.   BLUE=1;
  435.         MUTE=1;
  436.         STBY=0;        
  437.         while(1)
  438.         {
  439. //                if(ON_flag==0)BLUE =0;
  440.                 IR_deal();
  441.                 if(IR_KEY==0)                                
  442.                 {
  443.                 Key_scanf();                //按鍵掃描
  444.                 key_process();
  445.                         
  446. //    IR_KEY==0;

  447.                 }
  448.         }
  449. }

  450. /****************************************************************/
  451. //外部中斷0中斷服務函數INT0_ISR(),無形參,無返回值
  452. /****************************************************************/
  453. void INT0_ISR() interrupt 0
  454. {
  455.         static u8 IR_bit;                                                  //變量IR_bit用于指示紅外數據的位數
  456.         static bit Start_Flag;                                //位變量Start_Flag用于指示是否開始處理
  457.         if(Start_Flag)                                                               
  458.         {
  459.                 if(IR_time<70&&IR_time>32)        //判斷引導碼(9ms+4.5ms)
  460.                 //IR_time大約要溢出32次(9ms/0.278ms)到70次(可以大于(9+4.5)/0.278)
  461.                         IR_bit=0;                                                                        //清除位數變量,確保當前IR_bit為0,表示引導碼
  462.                 IR_data[IR_bit]=IR_time;                //存儲相應位時間寬度
  463.                 IR_time=0;                                                                        //清零時間寬度計數值
  464.                 IR_bit++;                                                                                //位數變量自增
  465.                 if(IR_bit==33)                                                        //如果達到了33位(引導碼+32個數據位)
  466.                 {
  467.                         IR_Flag=1;                                                                //紅外數據接收完成標志位置1
  468.                         IR_bit=0;                                                                        //位數變量清零
  469.                 }
  470.         }
  471.         else                                                                                                        //外部中斷0檢測到下降沿,即將開始引導碼
  472.         {
  473.                 IR_time=0;                                                                        //清零時間計數值
  474.                 Start_Flag=1;                                                                //紅外數據產生第一次下降沿,意味著數據即將開始
  475.         }
  476. }
  477. /****************************************************************/
  478. //定時計數器0中斷服務函數TIMER0_ISR(),無形參,無返回值
  479. /****************************************************************/
  480. void TIMER0_ISR() interrupt 1
  481. {
  482.         IR_time++;

  483. }
復制代碼



單片機程序和PCB文件下載: TA3116功放.zip (6.31 MB, 下載次數: 89)

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:1083996 發表于 2023-10-19 15:06 | 只看該作者
TPA3116這個片子已經有點落伍了;
現在比較好的是TPA3251和TPA3255,價格不貴,容易制作,音質好;
搭配藍牙5.3和32bit/384kHz解碼芯片,效果感人;
當然不能忘記了助教--單片機
回復

使用道具 舉報

板凳
ID:499742 發表于 2023-10-19 16:06 | 只看該作者
TA3116以前還是用得比較多效率高,功率大
回復

使用道具 舉報

地板
ID:128989 發表于 2023-10-29 00:36 | 只看該作者
不錯的功放,學習了
回復

使用道具 舉報

5#
ID:187261 發表于 2023-11-11 02:50 | 只看該作者
PCB需要用pads這個軟件才能打開
回復

使用道具 舉報

6#
ID:1034178 發表于 2023-11-26 17:34 來自手機 | 只看該作者
現在很多自帶i2c接囗的功放芯片不需要用pt2314
回復

使用道具 舉報

7#
ID:774081 發表于 2023-12-29 15:22 | 只看該作者
這個代碼又是紅外又是串口又是LED點陣的,就是沒看到關鍵的用I2C控制TPA3116的代碼。
回復

使用道具 舉報

8#
ID:370415 發表于 2024-3-30 00:56 | 只看該作者
老兄,沒見到原理圖呢
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91麻豆精品一区二区三区 | 91亚洲精品国偷拍自产在线观看 | 免费精品视频 | 国产综合网址 | 手机看黄av免费网址 | 国产成人一区二区 | 成人精品免费视频 | 国产高清毛片 | 日本在线黄色 | 日韩精品 | 欧美一区二区三区在线播放 | 夜夜爽99久久国产综合精品女不卡 | 综合久 | 九九久久99| 黄片毛片免费看 | 日韩精品一区二区三区四区视频 | 色毛片 | 97在线超碰| avav在线看 | 成人av鲁丝片一区二区小说 | 精品亚洲一区二区 | 五月槐花香 | 日韩欧美在线播放 | 中文字幕在线免费视频 | 欧美一区二区三区 | 成人黄色网址大全 | 亚洲福利在线观看 | 欧美日韩在线不卡 | 国产精品一区二区av | 在线成人| 久久久精品一区 | 国产小u女发育末成年 | 九九导航 | 天堂久久天堂综合色 | 色噜噜色综合 | 黄色大片在线免费观看 | 国产原创在线观看 | 一本大道久久a久久精二百 国产成人免费在线 | 天天看天天操 | 午夜资源 | 国产原创视频 |