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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2656|回復: 2
收起左側(cè)

分享一個nrf24l01單向傳輸溫度和土壤濕度的單片機程序源碼

[復制鏈接]
ID:413530 發(fā)表于 2019-5-21 11:16 | 顯示全部樓層 |閱讀模式
V(VQ]NF@7)E}O{GD098WR`P.png

單片機源程序如下:
  1. // Define SPI pins
  2. #include <reg51.h>
  3. #include <string.h>

  4. #define uchar unsigned char
  5. #define uint  unsigned int
  6. #define ulong unsigned long
  7. /****************************/
  8. #define     LCDIO      P0  //1602數(shù)據(jù)口
  9. /*
  10. sbit rs=P2^6;  //1602數(shù)據(jù)命令選擇引腳
  11. sbit rd=P2^5;        //讀寫選擇
  12. sbit lcden=P2^7;        //1602選通引腳
  13. */
  14. sbit rs=P2^5;  //1602數(shù)據(jù)命令選擇引腳
  15. sbit rd=P2^6;        //讀寫選擇
  16. sbit lcden=P2^7;        //1602選通引腳
  17. sbit key=P2^2;
  18. sbit beep=P2^4;
  19. uchar xiao,ge,shi,bai;
  20. float f_temp; //浮點型溫度值   
  21. long int tvalue;//溫度值
  22. uchar tflag;
  23. uchar code table[]=        {"T:        TH:30 "};    //每行顯示16個字符
  24. uchar code table1[]=        {"S:              "};
  25. uchar data disdata[5];
  26. uchar a,b;
  27. /****************************/
  28. /***************************************************/
  29. #define TX_ADR_WIDTH   5  // 5???????/????
  30. #define TX_PLOAD_WIDTH 5  // ??????????

  31. sbit LED = P2^3;

  32. uchar code TX_ADDRESS[TX_ADR_WIDTH] = {0x34,0x43,0x10,0x10,0x01};  // ??????????
  33. uchar RX_BUF[TX_PLOAD_WIDTH];
  34. uchar TX_BUF[TX_PLOAD_WIDTH];
  35. uchar flag;
  36. uchar DATA = 0x01;
  37. uchar bdata sta;
  38. sbit  RX_DR     = sta^6;
  39. sbit  TX_DS     = sta^5;
  40. sbit  MAX_RT = sta^4;

  41. sbit CE =  P1^5;
  42. sbit CSN=  P1^0;
  43. sbit SCK=  P1^4;
  44. sbit MOSI= P1^1;
  45. sbit MISO= P1^3;
  46. sbit IRQ = P1^2;

  47. /*sbit CE =  P3^3;
  48. sbit CSN=  P2^4;
  49. sbit SCK=  P2^0;
  50. sbit MOSI= P2^2;
  51. sbit MISO= P2^1;
  52. sbit IRQ = P2^3;*/

  53. // SPI(nRF24L01) commands
  54. #define READ_REG    0x00  // Define read command to register
  55. #define WRITE_REG   0x20  // Define write command to register
  56. #define RD_RX_PLOAD 0x61  // Define RX payload register address
  57. #define WR_TX_PLOAD 0xA0  // Define TX payload register address
  58. #define FLUSH_TX    0xE1  // Define flush TX register command
  59. #define FLUSH_RX    0xE2  // Define flush RX register command
  60. #define REUSE_TX_PL 0xE3  // Define reuse TX payload register command
  61. #define NOP         0xFF  // Define No Operation, might be used to read status register

  62. // SPI(nRF24L01) registers(addresses)
  63. #define CONFIG      0x00  // 'Config' register address
  64. #define EN_AA       0x01  // 'Enable Auto Acknowledgment' register address
  65. #define EN_RXADDR   0x02  // 'Enabled RX addresses' register address
  66. #define SETUP_AW    0x03  // 'Setup address width' register address
  67. #define SETUP_RETR  0x04  // 'Setup Auto. Retrans' register address
  68. #define RF_CH       0x05  // 'RF channel' register address
  69. #define RF_SETUP    0x06  // 'RF setup' register address
  70. #define STATUS      0x07  // 'Status' register address
  71. #define OBSERVE_TX  0x08  // 'Observe TX' register address
  72. #define CD          0x09  // 'Carrier Detect' register address
  73. #define RX_ADDR_P0  0x0A  // 'RX address pipe0' register address
  74. #define RX_ADDR_P1  0x0B  // 'RX address pipe1' register address
  75. #define RX_ADDR_P2  0x0C  // 'RX address pipe2' register address
  76. #define RX_ADDR_P3  0x0D  // 'RX address pipe3' register address
  77. #define RX_ADDR_P4  0x0E  // 'RX address pipe4' register address
  78. #define RX_ADDR_P5  0x0F  // 'RX address pipe5' register address
  79. #define TX_ADDR     0x10  // 'TX address' register address
  80. #define RX_PW_P0    0x11  // 'RX payload width, pipe0' register address
  81. #define RX_PW_P1    0x12  // 'RX payload width, pipe1' register address
  82. #define RX_PW_P2    0x13  // 'RX payload width, pipe2' register address
  83. #define RX_PW_P3    0x14  // 'RX payload width, pipe3' register address
  84. #define RX_PW_P4    0x15  // 'RX payload width, pipe4' register address
  85. #define RX_PW_P5    0x16  // 'RX payload width, pipe5' register address
  86. #define FIFO_STATUS 0x17  // 'FIFO Status Register' register address

  87. //--??SPI???? IO--//
  88. /*sbit MOSIO = P3^4;
  89. sbit R_CLK = P3^5;
  90. sbit S_CLK = P3^6;*/

  91. void blink(char i);
  92. //--??????--//

  93. /**************************************************
  94. ??: init_io()

  95. ??:
  96.     ???IO
  97. /**************************************************/
  98. void init_io(void)
  99. {
  100.     CE  = 0;        // ??
  101.     CSN = 1;        // SPI??
  102.     SCK = 0;        // SPI????
  103.     IRQ = 1;        // ????
  104.     LED = 1;        // ?????
  105. }
  106. /**************************************************/

  107. /**************************************************
  108. ??:delay_ms()

  109. ??:
  110.     ??x??
  111. /**************************************************/
  112. void delay_ms(uchar x)
  113. {
  114.     uchar i, j;
  115.     i = 0;
  116.     for(i=0; i<x; i++)
  117.     {
  118.        j = 250;
  119.        while(--j);
  120.        j = 250;
  121.        while(--j);
  122.     }
  123. }
  124. /**************************************************/

  125. /**************************************************
  126. ??:SPI_RW()

  127. ??:
  128.     ??SPI??,???????nRF24L01,???nRF24L01
  129.     ?????
  130. /**************************************************/
  131. uchar SPI_RW(uchar byte)
  132. {
  133.     uchar i;
  134.        for(i=0; i<8; i++)          // ??8?
  135.        {
  136.            MOSI = (byte & 0x80);   // byte??????MOSI
  137.            byte <<= 1;             // ?????????
  138.            SCK = 1;                // ??SCK,nRF24L01?MOSI??1???,???MISO??1???
  139.            byte |= MISO;           // ?MISO?byte???
  140.            SCK = 0;                // SCK??
  141.        }
  142.     return(byte);               // ????????
  143. }
  144. /**************************************************/

  145. /**************************************************
  146. ??:SPI_RW_Reg()

  147. ??:
  148.     ???value?reg???
  149. /**************************************************/
  150. uchar SPI_RW_Reg(uchar reg, uchar value)
  151. {
  152.     uchar status;
  153.       CSN = 0;                   // CSN??,??????
  154.       status = SPI_RW(reg);      // ?????,???????
  155.       SPI_RW(value);             // ??????????
  156.       CSN = 1;                   // CSN??,??????
  157.       return(status);            // ???????
  158. }
  159. /**************************************************/

  160. /**************************************************
  161. ??:SPI_Read()

  162. ??:
  163.     ?reg???????
  164. /**************************************************/
  165. uchar SPI_Read(uchar reg)
  166. {

  167.     uchar reg_val;
  168.       //blink(4);
  169.     CSN = 0;                    // CSN??,??????
  170.       SPI_RW(reg);                // ?????
  171.       reg_val = SPI_RW(0);        // ??????????
  172.     //delay_ms(200);
  173.       CSN = 1;                    // CSN??,??????
  174.       return(reg_val);            // ???????
  175. }
  176. /**************************************************/

  177. /**************************************************
  178. ??:SPI_Read_Buf()

  179. ??:
  180.     ?reg?????bytes???,??????????
  181.     ?????/????
  182. /**************************************************/
  183. uchar SPI_Read_Buf(uchar reg, uchar * pBuf, uchar bytes)
  184. {
  185.     uchar status, i;
  186.       CSN = 0;                    // CSN??,??????
  187.       status = SPI_RW(reg);       // ?????,???????
  188.       for(i=0; i<bytes; i++)
  189.         pBuf[i] = SPI_RW(0);    // ?????nRF24L01??
  190.       CSN = 1;                    // CSN??,??????
  191.       return(status);             // ???????
  192. }
  193. /**************************************************/

  194. /**************************************************
  195. ??:SPI_Write_Buf()

  196. ??:
  197.     ?pBuf?????????nRF24L01,???????
  198.     ????????/????
  199. /**************************************************/
  200. uchar SPI_Write_Buf(uchar reg, uchar * pBuf, uchar bytes)
  201. {
  202.     uchar status, i;
  203.       CSN = 0;                    // CSN??,??????
  204.       status = SPI_RW(reg);       // ?????,???????
  205.       for(i=0; i<bytes; i++)
  206.         SPI_RW(pBuf[i]);        // ??????nRF24L01
  207.       CSN = 1;                    // CSN??,??????
  208.       return(status);             // ???????
  209. }
  210. /**************************************************/

  211. /**************************************************
  212. ??:RX_Mode()

  213. ??:
  214.     ??????nRF24L01?????,????????????
  215. /**************************************************/
  216. void RX_Mode(void)
  217. {
  218.     CE = 0;
  219.       SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH);  // ????????0??????????????
  220.       SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);               // ??????0????
  221.       SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);           // ??????0
  222.       SPI_RW_Reg(WRITE_REG + RF_CH, 40);                 // ??????0x40
  223.       SPI_RW_Reg(WRITE_REG + RX_PW_P0, TX_PLOAD_WIDTH);  // ????0???????????????
  224.       SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);            // ?????1Mbps,????0dBm,????????
  225.       SPI_RW_Reg(WRITE_REG + CONFIG, 0x0f);              // CRC??,16?CRC??,??,????
  226.     delay_ms(150);
  227.       CE = 1;                                            // ??CE??????
  228. }
  229. /**************************************************/

  230. /**************************************************
  231. ??:TX_Mode()

  232. ??:
  233.     ??????nRF24L01?????,(CE=1????10us),
  234.     130us?????,???????,??????????
  235.     ?????????
  236. /**************************************************/
  237. void TX_Mode(uchar * BUF)
  238. {
  239.     CE = 0;
  240.       SPI_Write_Buf(WRITE_REG + TX_ADDR, TX_ADDRESS, TX_ADR_WIDTH);     // ??????
  241.       SPI_Write_Buf(WRITE_REG + RX_ADDR_P0, TX_ADDRESS, TX_ADR_WIDTH);  // ????????,????0?????????
  242.       SPI_Write_Buf(WR_TX_PLOAD, BUF, TX_PLOAD_WIDTH);                  // ?????TX FIFO
  243.       SPI_RW_Reg(WRITE_REG + EN_AA, 0x01);       // ??????0????
  244.       SPI_RW_Reg(WRITE_REG + EN_RXADDR, 0x01);   // ??????0
  245.       SPI_RW_Reg(WRITE_REG + SETUP_RETR, 0x0a);  // ????????250us+86us,????10?
  246.       SPI_RW_Reg(WRITE_REG + RF_CH, 40);         // ??????0x40
  247.       SPI_RW_Reg(WRITE_REG + RF_SETUP, 0x07);    // ?????1Mbps,????0dBm,????????
  248.       SPI_RW_Reg(WRITE_REG + CONFIG, 0x0e);      // CRC??,16?CRC??,??
  249.     delay_ms(150);
  250.     CE = 1;
  251. }
  252. /**************************************************/

  253. /**************************************************
  254. ??:Check_ACK()

  255. ??:
  256.     ??????????????,?????????
  257.     ?????
  258. /**************************************************/
  259. uchar Check_ACK(bit clear)
  260. {
  261.     while(IRQ);
  262.     sta = SPI_RW(NOP);                    // ???????
  263.     if(TX_DS)
  264.     {
  265.         //blink(3);
  266.     }
  267.     //blink(5);
  268.     if(MAX_RT)
  269.         if(clear)                         // ????TX FIFO,???????MAX_RT???????
  270.             SPI_RW(FLUSH_TX);
  271.     SPI_RW_Reg(WRITE_REG + STATUS, sta);  // ??TX_DS?MAX_RT????
  272.     IRQ = 1;
  273.     if(TX_DS)
  274.         return(0x00);
  275.     else
  276.         return(0xff);
  277. }
  278. /**************************************************/

  279. /**************************************************
  280. ??:CheckButtons()

  281. ??:
  282.     ????????,??????????
  283. /**************************************************/
  284. void CheckButtons()
  285. {
  286.     P3 |= 0x00;
  287.     if(!(P3 & 0x01))                    // ??P3^0??
  288.     {
  289.         delay_ms(20);
  290.         if(!(P3 & 0x01))                // ??P3^0??
  291.         {
  292.             TX_BUF[0] = ~DATA;          // ??????
  293.             //TX_BUF[0] = 0xff;          // ??????
  294.             TX_Mode(TX_BUF);            // ?nRF24L01????????????            
  295.             //LED = ~DATA;                // ????LED??
  296.             Check_ACK(0);               // ??????,??TX FIFO
  297.             LED = 1;                    // ??LED
  298.             RX_Mode();                    // ???????
  299.             while(!(P3 & 0x01));
  300.             DATA <<= 1;
  301.             if(!DATA)
  302.                 DATA = 0x01;
  303.         }
  304.     }
  305. }
  306. /**************************************************/

  307. /*void blink(char i)
  308. {
  309.     while(i--)
  310.     {
  311.         LED = 1;
  312.         delay_ms(50);
  313.         LED = 0;
  314.         delay_ms(50);
  315.     }

  316. }*/

  317. /***********************
  318. 1602
  319. ***********************/
  320. void delay(uint z)        //短延時
  321. {
  322.         uint x,y;
  323.         for(x=z;x>0;x--)
  324.                 for(y=110;y>0;y--);
  325. }

  326. void write_com(uchar com)        //1602寫命令子程序
  327. {
  328.         rs=0;                //RS是數(shù)據(jù)命令選擇短,高電平寫數(shù)據(jù),低電平寫命令
  329.         rd=0;                //RD是讀寫選擇短,高電平讀,低電平寫
  330.         lcden=0;        //1602選通端,高電平選通,低電平禁止
  331.         LCDIO=com;
  332.         delay(5);
  333.         lcden=1;
  334.         delay(5);
  335.         lcden=0;       
  336. }

  337. void write_date(uchar date)        //1602寫數(shù)據(jù)子程序
  338. {
  339.         rs=1;        //RS是數(shù)據(jù)命令選擇短,高電平寫數(shù)據(jù),低電平寫命令
  340.         rd=0;        //RD是讀寫選擇短,高電平讀,低電平寫
  341.         lcden=0;        //1602選通端,高電平選通,低電平禁止
  342.         LCDIO=date;
  343.         delay(5);
  344.         lcden=1;
  345.         delay(5);
  346.         lcden=0;       
  347. }



  348. void init()                                //1602初始化程序
  349. {
  350.         uchar num;
  351.         lcden=0;

  352.         write_com(0x38);        //0011 1000B,功能模式設(shè)置,設(shè)置為8為數(shù)據(jù)口,兩行顯示,5*7點陣
  353.         write_com(0x0c);        //0000 1011B,顯示開及光標設(shè)置,關(guān)顯示,顯示光標,光標閃爍
  354.         write_com(0x06);        //0000 0110B,顯示光標移動設(shè)置,讀或?qū)懸粋字符,地址指針減一且光標減一,寫一個字符屏幕顯示不移動
  355.         write_com(0x01);        //0000 0001B,顯示清屏,數(shù)據(jù)指針和所有顯示清屏
  356.         write_com(0x80);        //1000 000B,關(guān)閉顯示
  357.         delay(5);
  358.         write_com(0x80);        //1000 000B,設(shè)置為2行顯示,寫入第一行字符的地址,第一行地址是00-2F
  359.         for(num=0;num<16;num++)
  360.                 {
  361.                         write_date(table[num]);        //寫入第一行數(shù)據(jù)
  362.                         delay(5);
  363.                 }
  364.         write_com(0x80+0x40);        //1100 0000B,設(shè)置為2行顯示,寫入第二行字符的地址,第而行地址是40-67
  365.         for(num=0;num<16;num++)        //寫入第二行數(shù)據(jù)
  366.                 {
  367.                         write_date(table1[num]);//寫入第二行數(shù)據(jù)
  368.                         delay(5);
  369.                 }      
  370.        

  371. }

  372. void ds1820disp()//溫度值顯示
  373.         { uchar flagdat;
  374.           disdata[0]=tvalue/1000+0x30;//百位數(shù)
  375.      disdata[1]=tvalue%1000/100+0x30;//十位數(shù)
  376.      disdata[2]=tvalue%100/10+0x30;//個位數(shù)
  377.      disdata[3]=tvalue%10+0x30;//小數(shù)位
  378.    
  379.      if(tflag==0)
  380.             flagdat=0x2b;//正溫度不顯示符號
  381.      else
  382.        flagdat=0x2d;//負溫度顯示負號:-

  383.      if(disdata[0]==0x30)
  384.            {disdata[0]=0x20;//如果百位為0,不顯示
  385.                  if(disdata[1]==0x30)
  386.                   {disdata[1]=0x20;//如果百位為0,十位為0也不顯示
  387.                   }
  388.                 }
  389.            write_com(0x80+2);            //1100 0000B,設(shè)置為2行顯示,寫入第二行字符的地址,第而行地址是40-67
  390.            write_date(flagdat);//顯示符號位
  391.            write_com(0x80+3);
  392.            write_date(disdata[0]);//顯示百位
  393.            write_com(0x80+4);
  394.            write_date(disdata[1]);//顯示十位        
  395.            write_com(0x80+5);
  396.            write_date(disdata[2]);//顯示個位        
  397.            write_com(0x80+6);
  398.            write_date(0x2e);//顯示小數(shù)點        
  399.            write_com(0x80+7);
  400.            write_date(disdata[3]);//顯示小數(shù)位
  401.            write_com(0x80+8);
  402.            write_date('C');
  403.    }

  404. void ADdisp()
  405.          {
  406.         long int shidu;
  407.   shidu=RX_BUF[3];
  408.         xiao=((shidu)*50*20/255)%10+0x30;
  409.         ge=((shidu)*50*20/255)%100/10+0x30;
  410.         shi=((shidu)*50*20/255)%1000/100+0x30;
  411.         bai=((shidu)*50*20/255)/1000+0x30;
  412.         if(bai==0x30)
  413.            {bai=0x20;//如果百位為0,不顯示
  414.                  if(shi==0x30)
  415.                   {shi=0x20;//如果百位為0,十位為0也不顯示
  416.                   }
  417.                 }
  418.   write_com(0x80+0x45);
  419.         write_date(0x2e);//顯示小數(shù)點
  420.        
  421.        
  422.         write_com(0x80+0x46);
  423.         write_date(xiao);//顯示小數(shù)位
  424.        
  425.        
  426.         write_com(0x80+0x44);
  427.         write_date(ge);//顯示個位
  428.        
  429.        
  430.         write_com(0x80+0x43);
  431.         write_date(shi);//顯示十位
  432.                  
  433.                  write_com(0x80+0x42);
  434.         write_date(bai);//顯示百位
  435.                  
  436.        
  437.        
  438.         write_com(0x80+0x47);
  439.            write_date('%');
  440.     }
  441.          
  442.          read_temp()/*讀取溫度值并轉(zhuǎn)換*/
  443. {  
  444.       a=RX_BUF[1];
  445.                         b=RX_BUF[2];
  446.   tvalue=b;
  447.   tvalue<<=8;
  448.   tvalue=tvalue|a;
  449.     if(tvalue<0x0fff)
  450.    tflag=0;
  451.     else
  452.    {tvalue=~tvalue+1;
  453.          tflag=1;
  454.    }
  455. f_temp=tvalue*(0.0625);// 溫度在寄存器中為12位,分辨率為0.0625
  456. tvalue=f_temp*10+0.5;//乘以10表示小數(shù)點后面只取1位,加0.5時四舍五入
  457.        
  458.          return(tvalue);
  459.   }
  460. /**************************************************
  461. ??:main()

  462. ??:
  463.     ???
  464. /**************************************************/
  465. void baojing()
  466. {
  467.         if(tvalue>=280)
  468.         {
  469.                 beep=1;
  470.         write_com(0x80+0x4e);
  471.         write_date('!');
  472.                 write_com(0x80+0x4f);
  473.                 write_date('!');
  474.         }
  475.         else
  476.         {
  477.         beep=0;
  478.         write_com(0x80+0x4e);
  479.         write_date(0x20);
  480.                 write_com(0x80+0x4f);
  481.         write_date(0x20);
  482.         }
  483. }       
  484.        
  485. void main(void)
  486. {   
  487.           LED=1;
  488.           beep=0;
  489.     init_io();                      // ???IO
  490.           init();
  491.     RX_Mode();                      // ???????

  492.     while(1)
  493.     {

  494.         sta = SPI_Read(STATUS);      // ??????
  495.         //delay_ms(200);
  496.         if(RX_DR)                  // ?????????
  497.         {
  498.             SPI_Read_Buf(RD_RX_PLOAD, RX_BUF, TX_PLOAD_WIDTH);  // ?RX FIFO????
  499.             flag = 1;
  500.         }
  501.         SPI_RW_Reg(WRITE_REG + STATUS, sta);  // ??RX_DS????

  502.         if(flag)                   // ????
  503.         {
  504.             if(RX_BUF[0] == 1)
  505.             {   beep=0;
  506.                 LED=~LED;
  507.                                                           read_temp();
  508.                        ds1820disp();//顯示
  509.                                                          baojing();          
  510.             }

  511.             if(key==0)
  512.             {
  513.                                                          ADdisp();
  514.             }
  515.             flag = 0;               // ???
  516.         }

  517.     }
  518. }
復制代碼

所有資料51hei提供下載:
NRF24L01測溫測濕.rar (105.22 KB, 下載次數(shù): 36)


評分

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

查看全部評分

回復

使用道具 舉報

ID:400250 發(fā)表于 2020-4-5 17:08 | 顯示全部樓層
感謝分享,最近正在做NRF24L01相關(guān)設(shè)計,值得參考!贊!
回復

使用道具 舉報

ID:759890 發(fā)表于 2021-3-26 21:49 | 顯示全部樓層
我還是沒搞定這個,唉
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品污www一区二区三区 | 午夜精品一区二区三区在线观看 | 久久福利| 精品久久久久久久久久久久久久 | 日韩aⅴ在线观看 | 在线精品一区二区 | 国产精品毛片无码 | a级片www | 一级黄色日本片 | 婷婷国产一区二区三区 | 亚洲午夜精品视频 | a级毛片免费高清视频 | 五月天综合网 | 久久精品国产免费 | 国产精品一区二区三 | 亚洲成人一区二区三区 | 亚洲精品一区国语对白 | 超碰人人做| 天天干天天插天天 | 久草在线在线精品观看 | 激情一区二区三区 | 大象一区 | 国产一级毛片精品完整视频版 | 久久精品国产免费高清 | 欧美精品一区在线发布 | 亚洲精品视频导航 | 午夜国产一区 | 久久精品亚洲国产奇米99 | 亚洲成人免费av | 精品日韩一区 | 伊人久久伊人 | 手机看黄av免费网址 | 91精品久久久久久久久99蜜臂 | 久草.com| 成人av色| 黄色一级片在线播放 | 一区视频在线 | 精品一二三区在线观看 | 亚洲免费在线观看 | 国产亚洲成av人在线观看导航 | 日韩成人在线观看 |