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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1907|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

51單片機驅(qū)動溫濕度芯片AHT20和RX8025時鐘芯片

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1059811 發(fā)表于 2023-12-8 16:07 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
//新時鐘芯片搞定,讀寫都可以,在OLED屏和串口正常顯示,溫濕度參數(shù)和時間日期參數(shù)

制作出來的實物圖如下:



電路原理圖如下:


STC15W4K56S4單片機源程序如下:
  1. //** Descriptions:                       
  2. //------------------------------------------------------------------------------------
  3. #define MAIN_Fosc        11059200L    //定義主時鐘
  4. #include    "15W4KxxS4.H"
  5. #include <intrins.h>         // 加入此頭文件后,可使用_nop_庫函數(shù)
  6. #include <string.h>           // 加入此頭文件后,可使用strstr庫函數(shù)
  7. #include "oled.h"
  8. #include "bmp.h"
  9. #include "AHT20.h"
  10. #include "stdio.h"
  11. #define  uint8 unsigned char  //0-256
  12. #define  uint16  unsigned int //0-65535
  13. #define  uint32  unsigned long  //-100億--+100億


  14. #define BAUD 9600               
  15. #define TM (65536 - (MAIN_Fosc/4/BAUD))   
  16. #define Buf_Max 20    //串口7S1這里要設(shè)定到34,日期就可以正常顯示了
  17. #define S2_S  0x01   

  18. #define S2RI 0x01
  19. #define S2TI 0x02

  20. #define S3RI 0x01
  21. #define S3TI 0x02

  22. #define S4RI 0x01
  23. #define S4TI 0x02

  24. #define Write 0X64
  25. #define Read  0X65

  26. uint8 xdata Rec_Buf1[Buf_Max];//4個串口的接收緩存     
  27. uint8 xdata Rec_Buf2[Buf_Max];     
  28. uint8 xdata Rec_Buf3[Buf_Max];      
  29. uint8 xdata Rec_Buf4[Buf_Max];

  30. uint8 i = 0; //串口3數(shù)組計數(shù)器            
  31. uint8 j = 0; //串口4數(shù)組計數(shù)器

  32. #define ACK 0
  33. #define NOACK 1
  34. sbit RX8025SCL = P0^2;
  35. sbit RX8025SDA = P0^3;

  36. //extern u8 xdata RX8025TimeBuffH[];RX8025SDA        

  37. u8 xdata RX8025YMD[]="2020-12-07"; //這里不設(shè)定參數(shù),下面數(shù)組設(shè)
  38. u8 xdata RX8025HMS[]="12:34:56";

  39. u8 xdata RX8025TimeBuffH[]={11,24,9,4,8,12,23};//修改日期時鐘,中間的是星期
  40. u8 xdata RX8025TImeBuffB[]={0X01,0X02,0X03,0X04,0X05,0X06,0X07};

  41. //----------------------------------------------------------------------------------------
  42. //-----------------------串口1初始化函數(shù).注意該芯片有4個串口,1口中斷優(yōu)先級最高
  43. void Uart1_Init(void)
  44. {   
  45.            SCON = 0x50;                //8位數(shù)據(jù),可變波特率
  46.         AUXR |= 0x40;                //定時器時鐘1T模式
  47.         AUXR &= 0xFE;                //串口1選擇定時器1為波特率發(fā)生器
  48.         TMOD &= 0x0F;                //設(shè)置定時器模式
  49.         TL1 = 0xE0;                        //設(shè)置定時初始值
  50.         TH1 = 0xFE;                        //設(shè)置定時初始值
  51.         ET1 = 0;                        //禁止定時器中斷
  52.         TR1 = 1;                        //定時器
  53. }
  54. //---------------------------------- 串口1發(fā)送數(shù)據(jù)函數(shù)
  55. void SendDataByUart1(uint8 dat)
  56. {
  57.     SBUF = dat;                 //寫數(shù)據(jù)到UART數(shù)據(jù)寄存器
  58.         while(TI == 0);             //在停止位沒有發(fā)送時,TI為0即一直等待
  59.         TI = 0;                     //清除TI位(該位必須軟件清零)
  60. }
  61. //------------------------===========串口1發(fā)送字符串函數(shù)

  62. void SendStringByUart1(uint8 *s)
  63. {
  64.     while(*s)
  65.     {
  66.         SendDataByUart1(*s++);//將字符串中的字符一個一個發(fā)送
  67.     }
  68. }
  69. //----------------------清除串口1緩存內(nèi)容函數(shù)

  70. void CLR_Buf1(void)
  71. {
  72.     uint8 k;
  73.     for(k=0;k<Buf_Max;k++)      //將串口1緩存數(shù)組的值都清為零
  74.         {
  75.                Rec_Buf1[k] = 0;
  76.           }
  77.     i = 0;                    
  78. }
  79. //-----------------------------------串口1握手判斷函數(shù)
  80. bit Hand1(uint8 *a)
  81. {
  82.     if(strstr(Rec_Buf1,a)!=NULL)     //判斷字符串a(chǎn)是否是字符串Rec_Buf1的子串
  83.         return 1;                      //如果字符串a(chǎn)是字符串Rec_Buf1的子串
  84.       else
  85.           return 0;                      //如果字符串a(chǎn)不是字符串Rec_Buf1的子串
  86. }

  87. //------------------------------------下面串口1接收中斷-----------------------

  88. void Uart1() interrupt UART1_VECTOR using 1
  89. {
  90.     ES = 0;                       // 串口1中斷關(guān)閉
  91.     if (RI)                       //串行接收到停止位的中間時刻時,該位置1
  92.   {
  93.       RI = 0;                     //清除RI位 (該位必須軟件清零)
  94.             Rec_Buf1[i] = SBUF;       //把串口1緩存SBUF寄存器數(shù)據(jù)依次存放到數(shù)組Rec_Buf1中
  95.             i++;                     
  96.         if(i>Buf_Max)             //接收數(shù)大于定義接收數(shù)組最大個數(shù)時,覆蓋接收數(shù)組之前值
  97.                 {   

  98.                     i = 0;                 
  99.                 }           
  100.    }

  101.      ES =  1;                   // 串口1中斷打開
  102. }
  103. //================================================================================
  104. //----------------------------------------------------------------------------------------
  105. /*********BCD碼轉(zhuǎn)十六進制************/
  106. u8 BCDtoHEX(u8 BCD )
  107. {
  108.         return ( ( (BCD/16)*10) +BCD%16 );
  109. }

  110. /**********十六進制轉(zhuǎn)BCD碼*************/
  111. u8  HEXtoBCD(u8 Hex)
  112. {
  113.         return  ( ((Hex/10)<<4) +Hex%10 );
  114. }

  115. /*********I2C延時***********/
  116. void I2CWait()
  117. {        
  118.         u8 i;
  119.         for(i=0;i<10;i++)
  120.         {
  121.                 _nop_();_nop_();_nop_();_nop_();
  122.         }
  123. }

  124. bit I2C_Start2()
  125. {
  126.         RX8025SDA = 1;        //釋放總線
  127.         RX8025SCL = 1;
  128.         I2CWait();
  129.         if(!RX8025SDA)        return 0;        //總線忙退出
  130.         RX8025SDA = 0;
  131.         I2CWait();
  132.         while(RX8025SDA) return 0;        //總線為高電平則總線出錯,退出
  133.         RX8025SCL = 0;
  134.         I2CWait();
  135.         //return 1;
  136. }

  137. void I2C_Stop()
  138. {
  139.         RX8025SCL = 0;
  140.         RX8025SDA = 0;
  141.         I2CWait();
  142.         RX8025SCL = 1;
  143.         I2CWait();
  144.         RX8025SDA = 1;        
  145. }

  146. /********主機向從機發(fā)送ACK****
  147. a=0,發(fā)送ACk        a=1,發(fā)送NO ACK
  148. ******************************/
  149. void I2CSendACK(u8 a)
  150. {
  151.         RX8025SDA = a;
  152.         RX8025SCL = 0;
  153.         I2CWait();
  154.         RX8025SCL = 1;
  155.         I2CWait();
  156.         RX8025SCL = 0;
  157. }

  158. /*********主機讀取從機ACK信號***/
  159. bit I2CReceivedACK()
  160. {
  161.         u8 errtime=255;
  162.         RX8025SCL = 0;
  163.         RX8025SDA = 1;        //釋放總線
  164.         I2CWait();
  165.         RX8025SCL = 1;
  166.         I2CWait();
  167.         while(RX8025SDA)        //讀取 SDA上的電平,變?yōu)榈碗娖剑从袕臋C回復(fù)ACK信號
  168.         {
  169.                 errtime--;
  170.                 if(!errtime)        //超時退出
  171.                 {
  172.                         RX8025SCL=0;
  173.                         return 0;
  174.                 }
  175.         }
  176.         RX8025SCL=0;
  177.         return 1;
  178. }

  179. /******************************************
  180. 主機向從機發(fā)送一字節(jié)數(shù)據(jù)-->dat
  181. order=0:先發(fā)送LSB,最后發(fā)送MSB
  182. order=1:先發(fā)送MSB;最后發(fā)送LSB
  183. 之所以設(shè)置order這個入口參數(shù),是為了程序方便
  184. 移植,適應(yīng)多個IIC芯片,只需設(shè)置order就能改變
  185. 數(shù)據(jù)傳輸方向,RX8025芯片 order 一直為 1
  186. ******************************************/
  187. void IIC_Send_Byte(u8 dat, bit order)
  188. {
  189.         u8 i;
  190.         if(order)
  191.         {
  192.                 for(i=0;i<8;i++)
  193.                 {
  194.                         RX8025SDA = dat&0X80;
  195.                         RX8025SCL = 1;
  196.                         I2CWait();
  197.                         RX8025SCL = 0;
  198.                         dat<<=1;
  199.                         I2CWait();
  200.                 }
  201.         }
  202.         else
  203.         {
  204.                 for(i=0;i<8;i++)
  205.                 {
  206.                         RX8025SDA = dat&0X01;
  207.                         RX8025SCL = 1;
  208.                         I2CWait();
  209.                         RX8025SCL = 0;
  210.                         dat>>=1;
  211.                         I2CWait();
  212.                 }
  213.         }
  214. }

  215. /*********讀取一字節(jié)數(shù)據(jù)*********
  216. order=0:先讀取LSB,最后讀取MSB
  217. order=1:先去讀MSB,最后讀取LSB
  218. ********************************/
  219. u8 IIC_Receive_Byte(bit order)
  220. {
  221.         u8 i,j,Rdat;
  222.         RX8025SDA = 1;        //釋放總線
  223.         if(order)        //MSB-->LSB
  224.         {
  225.                 for(i=0;i<8;i++)
  226.                 {
  227.                         RX8025SCL = 0;
  228.                         I2CWait();
  229.                         Rdat =( Rdat<<1 )| RX8025SDA;
  230.                         RX8025SCL = 1;
  231.                         I2CWait();
  232.                 }
  233.         }
  234.         else        //LSB-->MSB
  235.         {
  236.                 for(i=0;i<8;i++)
  237.                 {
  238.                         RX8025SCL = 0;
  239.                         I2CWait();
  240.                         j=RX8025SDA;
  241.                         Rdat =( Rdat>>1 )| (j<<7);
  242.                         RX8025SCL = 1;
  243.                         I2CWait();
  244.                 }
  245.         }
  246.         RX8025SCL=0;
  247.         return Rdat;
  248. }

  249. /******讀取RX8025一個寄存器的數(shù)據(jù)*****/
  250. //u8 Read_RX8025_Byte(u8 add)
  251. //{
  252. //        u8 Ridat;
  253. //        I2C_Start2();
  254. //        IIC_Send_Byte(Write,1);
  255. //        if(!I2CReceivedACK())        //判斷有無ACK信號
  256. //                I2C_Stop();
  257. //        IIC_Send_Byte(add,1);
  258. //        if(!I2CReceivedACK())        //判斷有無ACK信號
  259. //                I2C_Stop();
  260. //        
  261. //        I2C_Start2();
  262. //        IIC_Send_Byte(Read,1);
  263. //        if(!I2CReceivedACK())        //判斷有無ACK信號
  264. //                I2C_Stop();
  265. //        Ridat = IIC_Receive_Byte(1);        //讀取數(shù)據(jù)
  266. //        I2CSendACK(1);
  267. //        I2C_Stop();
  268. //        return Ridat;
  269. //}

  270. //--單獨向一個寄存器寫數(shù)據(jù)
  271. void Write_RX8025_Byt(u8 add,u8 dat)
  272. {
  273.         u8 Bdat;
  274.         Bdat = dat;
  275.         //Bdat = HEXtoBCD(dat);        //將十六進制轉(zhuǎn)換為BCD碼
  276. //---開始寫入數(shù)據(jù)               
  277.         I2C_Start2();
  278.         IIC_Send_Byte(Write,1);
  279.         if(!I2CReceivedACK())        //判斷有無ACK信號
  280.                 I2C_Stop();
  281.         IIC_Send_Byte(add<<4,1);        //--根據(jù)手冊在寫入時地址要右移4位
  282.         if(!I2CReceivedACK())        //判斷有無ACK信號
  283.                 I2C_Stop();
  284.         IIC_Send_Byte(Bdat,1);
  285.         I2CReceivedACK();
  286.         I2C_Stop();
  287. }

  288. //--連續(xù)讀取時間、日歷數(shù)據(jù)--
  289. //--add:讀取的起始地址
  290. //--Num:讀取數(shù)據(jù)的個數(shù)
  291. //--標(biāo)準(zhǔn)IIC連續(xù)讀寄存器時序
  292. void Read_RX8025_Dat(u8 add, u8 Num)
  293. {
  294.         u8 i;
  295. //---先寫讀寄存器地址
  296.         I2C_Start2();
  297.         IIC_Send_Byte(Write,1);
  298.         if(!I2CReceivedACK())        //判斷有無ACK信號
  299.                 I2C_Stop();
  300.         IIC_Send_Byte(add,1);        //秒寄存器地址
  301.         if(!I2CReceivedACK())        //判斷有無ACK信號
  302.                 I2C_Stop();
  303. //---連續(xù)讀取數(shù)據(jù)        
  304.         I2C_Start2();
  305.         IIC_Send_Byte(Read,1);
  306.         if(!I2CReceivedACK())        //判斷有無ACK信號
  307.                 I2C_Stop();
  308.         for(i=0;i<Num;i++)
  309.         {
  310.                 RX8025TImeBuffB[i] = IIC_Receive_Byte(1);        //讀取數(shù)據(jù)
  311.                 if(i!=6)I2CSendACK(0);
  312.         }
  313.         I2CSendACK(1);
  314.         I2C_Stop();
  315.         for(i=0;i<Num;i++)
  316.         {
  317.                 RX8025TimeBuffH[i] = BCDtoHEX(RX8025TImeBuffB[i]);
  318.         }
  319. }

  320. /*****向RX8025連續(xù)寫num個數(shù)據(jù)******/
  321. void Write_RX8025_Byte(u8 add,u8 *Buff)
  322. {
  323.         u8 i;
  324. //---先寫讀寄存器地址
  325.         I2C_Start2();
  326.         IIC_Send_Byte(Write,1);
  327.         if(!I2CReceivedACK())        //判斷有無ACK信號
  328.                 I2C_Stop();
  329.         IIC_Send_Byte(add<<4,1);
  330.         if(!I2CReceivedACK())        //判斷有無ACK信號
  331.                 I2C_Stop();
  332.         for(i=0;i<7;i++)        //--連續(xù)寫入7個時間日歷數(shù)據(jù)
  333.         {
  334.                 Buff[i] = HEXtoBCD(Buff[i]);
  335.                 IIC_Send_Byte(Buff[i],1);
  336.                 I2CReceivedACK();
  337.         }
  338.         I2C_Stop();
  339. }

  340. void RX8025_Init()
  341. {
  342. //--12/24小時寄存器地址為0X0E,
  343.         Write_RX8025_Byt(0X0E,0X20);                //RX8025-T                24小時制
  344. //        Write_RX8025_Byt(0X0E,0X00);                //RX8025-T                12小時制
  345. }

  346. void DisplayTime()
  347. {

  348. //--顯示RX8025的時間
  349.         Read_RX8025_Dat(0,7);        

  350.         RX8025YMD[2] = RX8025TimeBuffH[6]/10; //+0X30; 年
  351.         RX8025YMD[3] = RX8025TimeBuffH[6]%10; //+0X30;
  352.         
  353.         RX8025YMD[5] = RX8025TimeBuffH[5]/10; //+0X30;         月
  354.         RX8025YMD[6] = RX8025TimeBuffH[5]%10; //+0X30;
  355.         
  356.         RX8025YMD[8] = RX8025TimeBuffH[4]/10;// +0X30; 日
  357.         RX8025YMD[9] = RX8025TimeBuffH[4]%10; //+0X30;
  358.         
  359.         RX8025HMS[0] = RX8025TimeBuffH[2]/10;// +0X30;         時
  360.         RX8025HMS[1] = RX8025TimeBuffH[2]%10; //+0X30;
  361.         
  362.         RX8025HMS[3] = RX8025TimeBuffH[1]%100/10; //+0X30; 分
  363.         RX8025HMS[4] = RX8025TimeBuffH[1]%10;// +0X30;
  364.         
  365.         RX8025HMS[6] = RX8025TimeBuffH[0]%100/10; //+0X30; 秒
  366.         RX8025HMS[7] = RX8025TimeBuffH[0]%10; //+0X30;        

  367. //        Write_ASCII3X16_N(0,7,0,"T3:RX8025");
  368. //        Write_ASCII3X16_N(0,8,0,RX8025YMD);        
  369. //        Write_ASCII3X16_N(2,9,0,RX8025HMS);        Write_6x16Font_N(12,9,0,WeekD);

  370. }   

  371. //==============================================================================
  372. int main()
  373. {
  374.   uint32 CT_data[2];
  375.         volatile float  c1,t1;
  376.         //
  377.         P0M0=0x00,P0M1=0x00;//我自己加的代碼 3
  378.         P2M0=0x00,P2M1=0x00;//我自己加的代碼 3
  379.         P1M0=0x00,P1M1=0x00;//我自己加的代碼 3
  380.         P4M0=0x00,P4M1=0x00;//我自己加的代碼 3
  381.         P5M0=0x00,P5M1=0x00;//我自己加的代碼

  382.         Uart1_Init();
  383.         delay_msT(500);//①剛上電,產(chǎn)品芯片內(nèi)部就緒需要時間,延時100~500ms,建議500ms
  384.          WDT_CONTR = 0x35;//        
  385.          OLED_Init(); //注意OLED的數(shù)據(jù)線正好在15W4K56的P06,P07端口,先等這兩個IO打開才能正常啟動OLED   
  386.      RX8025_Init();
  387.          Write_RX8025_Byte(0,RX8025TimeBuffH);//RX8025時鐘芯片里寫入日期時間參數(shù),2020-5-1-12:00:00,

  388.         if((AHT20_Read_Status()&0x18)!=0x18)//②上電第一次發(fā)0x71讀取狀態(tài)字,判斷狀態(tài)字是否為0x18,如果不是0x18,進行寄存器初始化
  389.         {
  390.         AHT20_Start_Init(); //重新初始化寄存器
  391.         delay_msT(10);
  392.         }
  393.         

  394.         while(1)//③根據(jù)客戶自己需求發(fā)測量命令讀取溫濕度數(shù)據(jù),當(dāng)前while(1)循環(huán)發(fā)測量命令讀取溫濕度數(shù)據(jù),僅供參考
  395.         {          WDT_CONTR = 0x35;//

  396.       AHT20_Read_CTdata_crc(CT_data);  //crc校驗后,讀取AHT20的溫度和濕度數(shù)據(jù)
  397.           c1 = ((float)CT_data[0]/1024/1024)*100;  //計算得到濕度值c1放大10倍
  398.       t1 = ((float)CT_data[1]/1024/1024)*200-50;//計算得到溫度值t1放大10倍
  399.            
  400.                DisplayTime();

  401.           OLED_ShowString(0,0,"T=",8);//
  402.       OLED_ShowString(60,0,"H=",8);//
  403.             OLED_ShowNum(16,0,t1,4,12);//溫度        
  404.           OLED_ShowNum(76,0,c1,4,12);//濕度        
  405.         
  406.          
  407.           OLED_ShowNum(0,1,2,1,12);// 年 2
  408.       OLED_ShowNum(8,1,0,1,12);// 年 0
  409.           OLED_ShowNum(16,1,RX8025YMD[2],1,12);// 年 2
  410.           OLED_ShowNum(24,1,RX8025YMD[3],1,12);// 年 3
  411.          
  412.       OLED_ShowNum(32,1,RX8025YMD[5],1,12);// 月
  413.           OLED_ShowNum(40,1,RX8025YMD[6],1,12);// 月

  414.           OLED_ShowNum(48,1,RX8025YMD[8],1,12);// 日 3         
  415.       OLED_ShowNum(56,1,RX8025YMD[9],1,12);// 日 3
  416.             OLED_ShowString(64,1,"-",8);//
  417.          
  418.           OLED_ShowNum(76,1,RX8025HMS[0],1,12);// 時 十位 1         
  419.           OLED_ShowNum(84,1,RX8025HMS[1],1,12);// 時 個位 2
  420.           OLED_ShowNum(92,1,RX8025HMS[3],1,12);// 分 十位 3         
  421.           OLED_ShowNum(100,1,RX8025HMS[4],1,12);//分 個位 4
  422.           OLED_ShowNum(108,1,RX8025HMS[6],1,12);//秒 十位 5         
  423.           OLED_ShowNum(116,1,RX8025HMS[7],1,12);//秒 個位 6
  424.          
  425.           SendDataByUart1(0x32);
  426.           SendDataByUart1(0x30);
  427.           SendDataByUart1(RX8025YMD[2]+0x30);//串口發(fā) 年        
  428.           SendDataByUart1(RX8025YMD[3]+0x30);
  429.                 SendDataByUart1(0x20);//發(fā)空格
  430.       SendDataByUart1(RX8025YMD[5]+0x30);//串口發(fā) 月        
  431.           SendDataByUart1(RX8025YMD[6]+0x30);
  432.                   SendDataByUart1(0x20);
  433.           SendDataByUart1(RX8025YMD[8]+0x30);//串口發(fā) 日        
  434.           SendDataByUart1(RX8025YMD[9]+0x30);
  435.                 SendDataByUart1(0x20);

  436.           SendDataByUart1(RX8025HMS[0]+0x30);//串口發(fā) 時
  437.           SendDataByUart1(RX8025HMS[1]+0x30);//
  438.                  SendDataByUart1(0x3a);//發(fā)冒號
  439.           SendDataByUart1(RX8025HMS[3]+0x30);//串口發(fā) 分
  440.           SendDataByUart1(RX8025HMS[4]+0x30);//
  441.                  SendDataByUart1(0x3a);
  442.           SendDataByUart1(RX8025HMS[6]+0x30);//串口發(fā) 秒
  443.           SendDataByUart1(RX8025HMS[7]+0x30);//
  444.                                  
  445.                
  446.                 delay_msT(4000);
  447.                  delay_msT(4000);
  448.          }

  449. }
復(fù)制代碼
STC15W單片機同時驅(qū)動溫濕度AHT20 時鐘RX8025
原理圖: 無
仿真: 無
代碼: 程序.7z (74.71 KB, 下載次數(shù): 53)

評分

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

查看全部評分

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

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 欧美一区二区三区久久精品视 | 久久av一区二区三区 | 欧美亚州 | 一区二区三区在线电影 | 五月激情婷婷六月 | 美女在线观看国产 | 欧美日韩视频在线 | 婷婷在线视频 | 国产欧美一区二区三区在线看 | 黄视频网址 | 三级免费毛片 | 亚洲精品在线免费观看视频 | 欧美一区二区大片 | 亚洲成人av | 国产精品久久a | 免费看91 | 免费在线视频精品 | 亚洲不卡视频 | 精品精品视频 | 精品国产三级 | 精品av| 91免费视频 | 99国产精品久久久久老师 | 亚洲国产精品一区 | 台湾佬伊人| 亚洲精品视频免费观看 | 亚洲黄色在线免费观看 | 国产羞羞视频在线观看 | 看a网站 | 亚洲欧美国产毛片在线 | 青娱乐av| 亚洲国产一区二区三区在线观看 | 超碰成人在线观看 | 欧美色综合天天久久综合精品 | 最新日韩av | 毛片毛片毛片毛片毛片 | 欧美日韩一区二区在线观看 | 91麻豆精品国产91久久久久久久久 | 国产乱精品一区二区三区 | 日韩精品在线观看一区二区 | 国产精品黄色 |