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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

函數信號發生器設計論文 uCOS-II多任務程序 AD9850+ARM1138+ARM1138

[復制鏈接]
跳轉到指定樓層
樓主
這是我很早之前做的,大家可以看看,附件中包含有完整的論文和源碼.

       采用基于DDS專用芯片AD9850作為信號產生模塊,并以基于ARM7的微控制器ARM1138作為整個系統的控制核心。在ARM1138中嵌入UCOSII操作系統方便實現多任務處理。例如波形轉換,頻率調節,幅值調節,12864顯示,I2C掉電保護等。本方案融合了如方案一頻率合成的優點,并能發揮ARM控制器強大的系統管理能力。同時可利于分工合作,以最快的時間完成題目的所有要求。此方案比較靈活、可擴展性好,能完全達到設計要求,故采用此方案。

ARM微控制器從鍵盤獲得控制信息,通過計算得到控制字并通過IO口送給DDS的頻率和相位的控制端口,同時,將信息顯示在LCD上。DDS輸出信號由程序控制其預置頻率和相位的正弦信號或方波信號,再通過放大倍數可調的運算放大系統來控制調幅。三角波則由方波信號經過一級方大后通過積分電路獲得。掉電保護功能則由ARM1138內部AD把數據讀回再通過I2C寫入24C04來完成。結構圖如圖2-1。

2.2 DDS的實現設計
DDS的基本原理是利用采樣定理,通過查表法產生波形,其基本架構如圖2-2所示:

相位累加器由N位加法器與N位累加寄存器級聯構成。 每來一個時鐘脈沖fs,加法器將頻率控制字k與累加寄存器輸出的累加相位數據相加,把相加后的結果送至累加寄存器的數據輸入端。累加寄存器將加法器在上一個時鐘脈沖作用后所產生的新相位數據反饋到加法器的輸入端,以使加法器在下一個時鐘脈沖的作用下繼續與頻率控制字相加。這樣,相位累加器在時鐘作用下,不斷對頻率控制字進行線性相位累加。 由此可以看出, 相位累加器在每一個時鐘脈沖輸入時,把頻率控制字累加一次,相位累加器輸出的數據就是合成信號的相位,相位累加器的溢出頻率就是DDS輸出的信號頻率。 用相位累加器輸出的數據作為波形存儲器(ROM)的相位取樣地址,這樣就可把存儲在波形存儲器內的波形抽樣值 (二進制編碼) 經查找表查出,完成相位到幅值轉換。波形存儲器的輸出送到D/A轉換器,D/A轉換器將數字量形式的波形幅值轉換成所要求合成頻率的模擬量形式信號。低通濾波器用于濾除不需要的取樣分量,以便輸出頻譜純凈的正弦波信號。 DDS在相對帶寬、頻率轉換時間、高分辨力、相位連續性、 正交輸出以及集成化等一系列性能指標方面遠遠超過了傳統頻率合成技術所能達到的水平,為系統提供了優于模擬信號源的性能。


系統測試
4.1測試條件
表1  儀器儀表
  
儀器儀表名稱
  
型號
數量(臺)
  
數字示波器
  
Tektronix
1
  
函數信號發生器
  
RIGOL
1
  
直流穩壓電源
  
YB1732
1
  
萬用表
  
DT9025
1
4.2測試方案與測試結果
       4.2.1觀察示波器,記錄頻率值和輸出電壓峰-峰值。
表二    頻率值和輸出電壓峰-峰值測量記錄表
  
預置頻率/Hz
  
測量頻率/Hz
相對誤差/%
峰-峰值/V
  
50
  
48
4
2
  
100
  
98
2
4
  
500
  
497
0.6
3
  
1k
  
1000
0
5
  
5k
  
4998
0.4
4
  
10k
  
9990
0.1
2
  
15k
  
15100
0.6
        3
  
20k
  
20108
0.54
1
4.2.2 觀察示波器,記錄步進頻率值。
                              表三  步進頻率值記錄表
  
預置頻率
  
Hz
  
步進值
  
(10Hz/步
測量頻率
  
(Hz)
步進頻率
  
Hz
相對誤差
  
%
  
20
  
1
28
30
6
  
100
  
1
105
110
4.5
  
500
  
1
510
510
0
  
1k
  
1
1010
1010
0
  
5k
  
1
5010
5010
0
  
10k
  
1
10008
10010
0.019
  
15k
  
1
15015
15010
0.03
  
20k
  
1
20008
20010
0.009
4.3測試結果分析
    由實驗調試結果及測試結果,該函數信號發生器達到了題目的所有指示要求,在選擇波形與調節幅度頻率試時采用LCD人機交互界面,界面友好方便,具有直觀性。
五、結語
本次設計的低頻三相信號源,主要運用了DDS基本原理,利用ARM1138作為仿真測試和實際測量(測量結果見上表)符合題目給定的基本要求。

本次軟件設計流程如圖3-1所示:程序初始化后進入初始界面,再判斷KEY1是否被按下,按下KEY1是選擇波形型號,按下KEY2選擇頻率遞增,按下KEY3選擇頻率遞減,按下KEY4選擇幅值遞增,按下KEY5選擇幅值遞減。本設計最大的優點就是能實現掉電保護,實時保存數據,防止電壓過低或者突然斷電造成的數據丟失。

源程序:
  1. /******************************/
  2. /******************************/

  3. #include <includes.h>
  4. #include  "AD9850.h"
  5. #define  SysCtlPeriEnable       SysCtlPeripheralEnable
  6. #define  SysCtlPeriDisable      SysCtlPeripheralDisable
  7. #define  GPIOPinTypeOut         GPIOPinTypeGPIOOutput
  8. #define  TASK_STK_SIZE                  64
  9. /**************************************
  10.   CONSTANTS 常量
  11. **************************************/

  12. /************************************
  13.   VARIABLES 變量
  14. *************************************/
  15. uint16 now_color=0;             //當前色
  16. uint16 state=0,flag=0;                 //狀態
  17. uint16 frist_in=0;              //初次進入標志
  18. unsigned  char  num=0,aa=1;
  19. unsigned  int  tt;
  20. unsigned long ulData  =  0;
  21. unsigned  char  buff[5];
  22. unsigned  char  display[10];   
  23. float   temp=0;
  24. unsigned long dat= 0,dat2=0,dat3=0;
  25. unsigned  char wan=0, qian=0,ge=0,shi=0,bai=0;
  26. unsigned  char wan2=0, qian2=0,ge2=0,shi2=0,bai2=0;
  27. unsigned  char wan3=0, qian3=0,ge3=0,shi3=0,bai3=0;


  28. static OS_STK  GstkStart[TASK_START_STK_SIZE];//啟動任務的堆棧   
  29. static OS_STK  GstkLED[TASK_LED_STK_SIZE];
  30. OS_STK        Task1Stk[TASK_STK_SIZE];
  31. OS_STK        Task2Stk[TASK_STK_SIZE];


  32. /*************************************
  33.    FUNCTION PROTOTYPES 函數聲明
  34. **************************************/
  35. static void taskStart (void  *parg);          //啟動任務
  36. static void taskLED(void *parg);              //任務0
  37. void  Task1(void *data);
  38. void  Task2(void *data);


  39. /***********************************************
  40.     功能:主程序
  41. ************************************************/
  42. int main (void)
  43. {
  44.     OSInit();                                 //  OS-II 初始化uC/OS-II的內核

  45.     OSTaskCreate( taskStart,                                          
  46.                   (void *)0,
  47.                   &GstkStart[TASK_START_STK_SIZE-1],
  48.                   TASK_START_PRIO );                    
  49.    /*  初始化啟動任務   */       
  50.     OSStart();                                // 啟動uC/OS-II*/

  51.     return(0);
  52. }


  53. /****************************************
  54. ** Function name:           Task_Start          
  55. ** input parameters:        *p_arg
  56. *****************************************/
  57. static void taskStart (void  *parg)
  58. {
  59.     (void)parg;

  60.     targetInit();                             // 初始化目標單片機     

  61.     #if OS_TASK_STAT_EN > 0
  62.     OSStatInit();                             // 使能統計功能
  63.     #endif
  64.    
  65.     /* 在這里創建其他任務 */
  66.     OSTaskCreate( taskLED,                                          
  67.                   (void *)0,
  68.                   &GstkLED[TASK_LED_STK_SIZE-1],
  69.                   TASK_LED_PRIO );            //  建處理任務
  70.     OSTaskCreate(Task1, (void *)2, &Task1Stk[TASK_STK_SIZE - 1],2);       
  71.     OSTaskCreate(Task2, (void *)3, &Task2Stk[TASK_STK_SIZE - 1], 3);
  72.    
  73.    
  74.     KEY_Init(KEY1 | KEY2); //按鍵初始化
  75.     LCDInit();   //LCD12864初始化                                               //  LCD初始化
  76.     clear_all(); // 清屏
  77.    
  78.     while (1)
  79.     {                             
  80.         /* 啟動任務可在這里掛起  */
  81.        OSTaskSuspend(OS_PRIO_SELF);
  82.     }
  83. }


  84. /***********************************************
  85. 名稱:任務0
  86. 功能:
  87. **********************************************/
  88. static void taskLED(void  *parg)
  89. {
  90.     (void)parg;
  91.     Display(ulData);//開機顯示
  92.     for(;;)
  93.     {   
  94.         if(KEY_Get(KEY1))//KEY1選波形型號
  95.         {
  96.            OSTimeDlyHMSM(0,0,0,150);
  97.            if(KEY_Get(KEY1))
  98.            {
  99.               num++;
  100.               if(num==4)
  101.               {
  102.                 num=0;              
  103.               }   
  104.            }
  105.         }
  106.         
  107.         
  108.      
  109.       if(num==1)////正弦波
  110.       {
  111.         LCD_ComdWrite(0x93);
  112.         LCD_ComdWrite(0x0C);//關光標
  113.         Displaysin();//正弦波
  114.         dat=wan*10000+qian*1000+bai*100+shi*10;
  115.         Write_9850(dat);
  116.         display[4]=dat%100000/10000+0X30;//顯示千位
  117.         display[3]=dat%10000/1000+0X30;//顯示千位
  118.         display[2]=dat%1000/100+0X30;//顯示百位
  119.         display[1]=dat%100/10+0X30;//顯示十位
  120.         display[0]=dat%10+0X30;//顯示個位
  121.            if(display[4]==0x30)
  122.            {
  123.              display[4]=0x20;
  124.             if(display[3]==0x30)        //高位為0,不顯示
  125.             {
  126.                display[3]=0x20;              
  127.                if(display[2]==0x30)//次高位為0,不顯示
  128.                {
  129.                display[2]=0x20;
  130.                if(display[1]==0x30)
  131.                display[1]=0x20;
  132.                }
  133.              }
  134.            }
  135.           LCD_ComdWrite(0x9B);
  136.           LCD_DataWrite(display[4]);
  137.           LCD_DataWrite(display[3]);
  138.           LCD_DataWrite(display[2]);
  139.           LCD_DataWrite(display[1]);
  140.           LCD_DataWrite(display[0]);
  141.          LCD_DataWrite('H');
  142.          LCD_DataWrite('Z');
  143.         if(KEY_Get(KEY2))//KEY2光標移動
  144.         {
  145.            OSTimeDlyHMSM(0,0,0,100);
  146.            if(KEY_Get(KEY2))
  147.            {
  148.                 //LCD_ComdWrite(0x9c);
  149.                 //LCD_ComdWrite(0x0F);//開光標顯示
  150.                 //LCD_DataWrite(aa+0x30);
  151.                 shi++;
  152.                 if(shi==10)  
  153.                 {
  154.                   //aa=1;
  155.                   shi=0;
  156.                   bai++;
  157.                   if(bai==10)
  158.                   {
  159.                     bai=0;
  160.                     qian++;
  161.                     if(qian==10)
  162.                     {
  163.                       qian=0;
  164.                       wan++;
  165.                       if(wan==10)
  166.                       {
  167.                         wan=0;
  168.                       }
  169.                       dat=wan*10000+qian*1000+bai*100+shi*10;
  170.                       Write_9850(dat);  
  171.                     }
  172.                    dat=wan*10000+qian*1000+bai*100+shi*10;
  173.                    Write_9850(dat);   

  174.                   }
  175.                  dat=wan*10000+qian*1000+bai*100+shi*10;
  176.                  Write_9850(dat);
  177.                 }
  178.                   
  179.               dat=wan*10000+qian*1000+bai*100+shi*10;
  180.               Write_9850(dat);   
  181.                
  182.             }
  183.            display[4]=dat%100000/10000+0X30;//顯示千位
  184.            display[3]=dat%10000/1000+0X30;//顯示千位
  185.            display[2]=dat%1000/100+0X30;//顯示百位
  186.            display[1]=dat%100/10+0X30;//顯示十位
  187.            display[0]=dat%10+0X30;//顯示個位
  188.            if(display[4]==0x30)
  189.            {
  190.              display[4]=0x20;
  191.             if(display[3]==0x30)        //高位為0,不顯示
  192.             {
  193.                display[3]=0x20;              
  194.                if(display[2]==0x30)//次高位為0,不顯示
  195.                {
  196.                     display[2]=0x20;
  197.                     if(display[1]==0x30)
  198.                       display[1]=0x20;
  199.                }
  200.              }
  201.            }
  202.           LCD_ComdWrite(0x9B);
  203.           LCD_DataWrite(display[4]);
  204.           LCD_DataWrite(display[3]);
  205.           LCD_DataWrite(display[2]);
  206.           LCD_DataWrite(display[1]);
  207.           LCD_DataWrite(display[0]);
  208.           LCD_DataWrite('H');
  209.           LCD_DataWrite('Z');
  210.         }
  211.       }////正弦波
  212.       
  213.       
  214.       if(num==2)//  顯示方波
  215.       {
  216.          LCD_ComdWrite(0x93);
  217.          LCD_ComdWrite(0x0C);//關光標
  218.          Displayfang();//  顯示方波
  219.          dat2=wan2*10000+qian2*1000+bai2*100+shi2*10;
  220.          Write_9850(dat2);
  221.          display[4]=dat2%100000/10000+0X30;//顯示千位
  222.            display[3]=dat2%10000/1000+0X30;//顯示千位
  223.           display[2]=dat2%1000/100+0X30;//顯示百位
  224.           display[1]=dat2%100/10+0X30;//顯示十位
  225.           display[0]=dat2%10+0X30;//顯示個位
  226.            if(display[4]==0x30)
  227.            {
  228.              display[4]=0x20;
  229.             if(display[3]==0x30)        //高位為0,不顯示
  230.             {
  231.                display[3]=0x20;              
  232.                if(display[2]==0x30)//次高位為0,不顯示
  233.                {
  234.                     display[2]=0x20;
  235.                     if(display[1]==0x30)
  236.                       display[1]=0x20;
  237.                }
  238.              }
  239.            }
  240.           LCD_ComdWrite(0x9B);
  241.           LCD_DataWrite(display[4]);
  242.           LCD_DataWrite(display[3]);
  243.           LCD_DataWrite(display[2]);
  244.           LCD_DataWrite(display[1]);
  245.           LCD_DataWrite(display[0]);
  246.           LCD_DataWrite('H');
  247.           LCD_DataWrite('Z');
  248.         if(KEY_Get(KEY2))//KEY2光標移動
  249.         {
  250.            OSTimeDlyHMSM(0,0,0,100);
  251.            if(KEY_Get(KEY2))
  252.            {
  253.                 //LCD_ComdWrite(0x9c);
  254.                 //LCD_ComdWrite(0x0F);//開光標顯示
  255.                 //LCD_DataWrite(aa+0x30);
  256.                 shi2++;
  257.                 if(shi2==10)  
  258.                 {
  259.                   //aa=1;
  260.                   shi2=0;
  261.                   bai2++;
  262.                   if(bai2==10)
  263.                   {
  264.                     bai2=0;
  265.                     qian2++;
  266.                     if(qian2==10)
  267.                     {
  268.                       qian2=0;
  269.                       wan2++;
  270.                       if(wan2==10)
  271.                       {
  272.                         wan2=0;
  273.                       }
  274.                       dat2=wan2*10000+qian2*1000+bai2*100+shi2*10;
  275.                       Write_9850(dat2);  
  276.                     }
  277.                     dat2=wan2*10000+qian2*1000+bai2*100+shi2*10;
  278.                     Write_9850(dat2);   

  279.                   }
  280.                   dat2=wan2*10000+qian2*1000+bai2*100+shi2*10;
  281.                   Write_9850(dat2);
  282.                 }
  283.                   
  284.               dat2=wan2*10000+qian2*1000+bai2*100+shi2*10;
  285.               Write_9850(dat2);   
  286.                
  287.             }
  288.            display[4]=dat2%100000/10000+0X30;//顯示千位
  289.            display[3]=dat2%10000/1000+0X30;//顯示千位
  290.           display[2]=dat2%1000/100+0X30;//顯示百位
  291.           display[1]=dat2%100/10+0X30;//顯示十位
  292.           display[0]=dat2%10+0X30;//顯示個位
  293.            if(display[4]==0x30)
  294.            {
  295.              display[4]=0x20;
  296.             if(display[3]==0x30)        //高位為0,不顯示
  297.             {
  298.                display[3]=0x20;              
  299.                if(display[2]==0x30)//次高位為0,不顯示
  300.                {
  301.                     display[2]=0x20;
  302.                     if(display[1]==0x30)
  303.                       display[1]=0x20;
  304.                }
  305.              }
  306.            }
  307.           LCD_ComdWrite(0x9B);
  308.           LCD_DataWrite(display[4]);
  309.           LCD_DataWrite(display[3]);
  310.           LCD_DataWrite(display[2]);
  311.           LCD_DataWrite(display[1]);
  312.           LCD_DataWrite(display[0]);
  313.           LCD_DataWrite('H');
  314.           LCD_DataWrite('Z');
  315.         }
  316.       }//  顯示方波
  317.       
  318.       
  319.       
  320.        if(num==3)//  顯示三角波
  321.       {
  322.         LCD_ComdWrite(0x93);
  323.         LCD_ComdWrite(0x0C);//關光標
  324.         Displaythree();//  顯示三角波
  325.         dat3=wan3*10000+qian3*1000+bai3*100+shi3*10;
  326.         Write_9850(dat3);
  327.         display[4]=dat3%100000/10000+0X30;//顯示千位
  328.         display[3]=dat3%10000/1000+0X30;//顯示千位
  329.         display[2]=dat3%1000/100+0X30;//顯示百位
  330.         display[1]=dat3%100/10+0X30;//顯示十位
  331.         display[0]=dat3%10+0X30;//顯示個位
  332.         if(display[4]==0x30)
  333.         {
  334.             display[4]=0x20;//高位為0,不顯示
  335.             if(display[3]==0x30)        //高位為0,不顯示
  336.             {
  337.                display[3]=0x20;              
  338.                if(display[2]==0x30)//次高位為0,不顯示
  339.                {
  340.                     display[2]=0x20;
  341.                     if(display[1]==0x30)
  342.                       display[1]=0x20;
  343.                }
  344.              }
  345.            }
  346.           LCD_ComdWrite(0x9B);
  347.           LCD_DataWrite(display[4]);
  348.           LCD_DataWrite(display[3]);
  349.           LCD_DataWrite(display[2]);
  350.           LCD_DataWrite(display[1]);
  351.           LCD_DataWrite(display[0]);
  352.           LCD_DataWrite('H');
  353.           LCD_DataWrite('Z');
  354.         if(KEY_Get(KEY2))//KEY2光標移動
  355.         {
  356.            OSTimeDlyHMSM(0,0,0,100);
  357.            if(KEY_Get(KEY2))
  358.            {
  359.                 //LCD_ComdWrite(0x9c);
  360.                 //LCD_ComdWrite(0x0F);//開光標顯示
  361.                 //LCD_DataWrite(aa+0x30);
  362.                 shi3++;
  363.                 if(shi3==10)  
  364.                 {
  365.                   shi3=0;
  366.                   bai3++;
  367.                   if(bai3==10)
  368.                   {
  369.                     bai3=0;
  370.                     qian3++;
  371.                     if(qian3==10)
  372.                     {
  373.                       qian3=0;
  374.                       wan3++;
  375.                       if(wan3==10)
  376.                       {
  377.                         wan3=0;
  378.                       }
  379.                       dat3=wan3*10000+qian3*1000+bai3*100+shi3*10;
  380.                       Write_9850(dat3);  
  381.                     }
  382.                     dat3=wan3*10000+qian3*1000+bai3*100+shi3*10;
  383.                     Write_9850(dat3);   

  384.                   }
  385.                   dat3=wan3*10000+qian3*1000+bai3*100+shi3*10;
  386.                    Write_9850(dat3);
  387.                 }
  388.                   
  389.                dat3=wan3*10000+qian3*1000+bai3*100+shi3*10;
  390.               Write_9850(dat3);   
  391.                
  392.             }
  393.            display[4]=dat3%100000/10000+0X30;//顯示千位
  394.            display[3]=dat3%10000/1000+0X30;//顯示千位
  395.            display[2]=dat3%1000/100+0X30;//顯示百位
  396.            display[1]=dat3%100/10+0X30;//顯示十位
  397.            display[0]=dat3%10+0X30;//顯示個位
  398.            if(display[4]==0x30)
  399.            {
  400.              display[4]=0x20;
  401.             if(display[3]==0x30)        //高位為0,不顯示
  402.             {
  403.                display[3]=0x20;              
  404.                if(display[2]==0x30)//次高位為0,不顯示
  405.                {
  406.                display[2]=0x20;
  407.                if(display[1]==0x30)
  408.                display[1]=0x20;
  409.                }
  410.              }
  411.            }
  412.           LCD_ComdWrite(0x9B);
  413.           LCD_DataWrite(display[4]);
  414.           LCD_DataWrite(display[3]);
  415.           LCD_DataWrite(display[2]);
  416.           LCD_DataWrite(display[1]);
  417.           LCD_DataWrite(display[0]);
  418.           LCD_DataWrite('H');
  419.           LCD_DataWrite('Z');
  420.         }
  421.       }  //  顯示三角波
  422.     }
  423. }
  424. /**********************************************************
  425. 名稱:Task1()
  426. 功能:執行相應功能
  427. ***********************************************************/
  428. void  Task1(void *pdata)
  429. {  
  430.    pdata=pdata;
  431.     while(1)           
  432.     {       
  433.       if(state==0)
  434.       {
  435.           temp=4.8;
  436.           tt=temp*10;
  437.           buff[0]=tt/10+0x30;
  438.           buff[1]=tt%10+0x30;
  439.           LCD_ComdWrite(0x8B);
  440.           LCD_DataWrite(buff[0]);
  441.           LCD_DataWrite('.');
  442.           LCD_DataWrite(buff[1]);
  443.           LCD_DataWrite('V');
  444.           //LED_Toggle(LED1);
  445.           state=1;   
  446.       }
  447.     }
  448. }
  449. /****************************************
  450. 名稱:Task2()
  451. 功能:按鍵控制
  452. *****************************************/
  453. void  Task2(void *pdata)
  454. {   
  455.     pdata=pdata;
  456.    
  457.     while(1)
  458.     {  
  459.       if(flag==0)
  460.       {
  461.           LED_Toggle(LED3);
  462.           flag=1;
  463. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

下載:
函數信號發生器多任務程序(完成2 24C02).rar (220.1 KB, 下載次數: 21)
完整論文下載word格式:
函數信號發生器.doc (340.5 KB, 下載次數: 18)


評分

參與人數 1黑幣 +5 收起 理由
liaoyx0214 + 5 回帖助人的獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:559107 發表于 2019-6-25 15:23 | 只看該作者
這個怎么樣啊
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 99精品在线 | 日韩三级电影一区二区 | 亚洲欧美日韩精品久久亚洲区 | 中文字幕一区二区三区日韩精品 | 日日夜夜天天久久 | 欧美成年人视频在线观看 | 91视频网址 | 欧美a在线| 亚洲第一女人av | 日韩高清在线观看 | 天天看片天天干 | 国产精品久久久 | 日韩免费毛片 | 欧美国产日韩一区 | 欧美激情啪啪 | 欧美人妇做爰xxxⅹ性高电影 | 久久综合九九 | 国产精品美女久久久免费 | 欧美一区二区三区四区五区无卡码 | 天天操天天插 | 精品日韩一区二区三区av动图 | 99精品久久 | 欧美日韩成人影院 | 亚洲日韩欧美一区二区在线 | 超碰人人人 | 草草网| 中文字幕亚洲精品 | 99精品亚洲国产精品久久不卡 | 在线色网址 | 在线免费亚洲视频 | 久久久精品一区二区三区 | 欧美最猛黑人xxxx黑人 | av网站在线免费观看 | 中文字幕乱码一区二区三区 | 国产精品一区二区欧美 | 久久69精品久久久久久久电影好 | 午夜网| 亚洲va国产日韩欧美精品色婷婷 | 人人爱干| 日韩1区2区 | 亚洲a视频 |