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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機12864顯示光照強度和溫濕度 程序問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:377872 發表于 2019-10-14 10:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
10黑幣
基于51單片機的用12864顯示光照強度和溫濕度,想多加兩個溫度過高或過低的指示燈,不知道為什么只能一個燈亮,溫度變化燈也不會改變
單片機源程序如下:
  1. #include  <REG51.H>
  2. #include  <math.h>    //Keil library  
  3. #include  <stdio.h>   //Keil library
  4. #include  <INTRINS.H>
  5. #define   uchar unsigned char
  6. #define   uint unsigned int
  7. #define   DataPort P0  //LCD1602數據端口
  8. sbit   SCL=P2^1;      //IIC時鐘引腳定義
  9. sbit     SDA=P2^2;      //IIC數據引腳定義
  10. sbit CS=P2^5;     //片選信號
  11. sbit SID=P2^6;  //數據信號
  12. sbit SCLK=P2^7;  //時鐘信號
  13. sbit RST=P2^3;  //復位信號
  14. sbit CH = P2^4;  //并行、串行選擇信號
  15. sbit dht_dat=P2^0; //用哪個I/O口自選,注意不要用P3口
  16. sbit LED1=P1^0;
  17. sbit LED2=P1^1;
  18. sbit FAN=P1^2;
  19. sbit key1=P1^3;
  20. sbit key2=P1^4;
  21. sbit buzzer=P1^5;
  22. uchar dht_num=0; //用于while循環中計數,超時則跳出循環
  23. uchar code table[]={"溫度:"};
  24. uchar code table1[]={"濕度:"};
  25. uchar code table2[]={"℃"};
  26. uchar dht_d1=0,dht_d2=0,shidu=0        ;        //依次為濕度整數部分和濕度小數部
  27. uchar dht_t1=0,dht_t2=0 ,wendu=0       ;  //依次為溫度整數部分和溫度小數部分
  28. uchar dht_j=0;        //和校驗,可選擇是否使用,具體參照數據手
  29. uchar i,t11,t12,d11,d12;
  30. uchar t21,t22,d21,d22;
  31. #define   SlaveAddress   0x46 //定義器件在IIC總線中的從地址,根據ALT  ADDRESS地址引腳不同修改
  32.                             //ALT  ADDRESS引腳接地時地址為0x46,接電源時地址為0xB8
  33. typedef   unsigned char BYTE;
  34. typedef   unsigned short WORD;[/font]
  35. [font=黑體]BYTE    BUF[8];                         //接收數據緩存區      
  36. uchar   ge,shi,bai,qian,wan;            //顯示變量
  37. int     dis_data;                       //變量[/font]
  38. [font=黑體]void delay_nms(unsigned int k);
  39. void InitLcd();
  40. void Init_BH1750(void);[/font]
  41. [font=黑體]void WriteDataLCM(uchar dataW);
  42. void WriteCommandLCM(uchar CMD,uchar Attribc);
  43. void DisplayOneChar(uchar DData);
  44. void conversion(uint temp_data);[/font]
  45. [font=黑體]void  Single_Write_BH1750(uchar REG_Address);               //單個寫入數據
  46. uchar Single_Read_BH1750(uchar REG_Address);                //單個讀取內部寄存器數據
  47. void  Multiple_Read_BH1750();                               //連續的讀取內部寄存器數據
  48. //------------------------------------
  49. void Delay5us();
  50. void Delay5ms();
  51. void BH1750_Start();                    //起始信號
  52. void BH1750_Stop();                     //停止信號
  53. void BH1750_SendACK(bit ack);           //應答ACK
  54. bit  BH1750_RecvACK();                  //讀ack
  55. void BH1750_SendByte(BYTE dat);         //IIC單個字節寫
  56. BYTE BH1750_RecvByte();                 //IIC單個字節讀[/font]
  57. [font=黑體]//-----------------------------------[/font]
  58. [font=黑體]//*********************************************************
  59. void conversion(uint temp_data)  //  數據轉換出 個,十,百,千,萬
  60. {  
  61.     wan=temp_data/10000+0x30 ;
  62.     temp_data=temp_data%10000;   //取余運算
  63. qian=temp_data/1000+0x30 ;
  64.     temp_data=temp_data%1000;    //取余運算
  65.     bai=temp_data/100+0x30   ;
  66.     temp_data=temp_data%100;     //取余運算
  67.     shi=temp_data/10+0x30    ;
  68.     temp_data=temp_data%10;      //取余運算
  69.     ge=temp_data+0x30;  
  70. }[/font]
  71. [font=黑體]//毫秒延時**************************
  72. void delay_nms(unsigned int k)
  73. {      
  74. unsigned int i,j;   
  75. for(i=0;i<k;i++)
  76. {   
  77. for(j=0;j<121;j++)   
  78. {;}}      
  79. }
  80. void delay(unsigned int t)
  81. {
  82. unsigned int i,j;
  83. for(i=0; i<t;  i++)
  84.     for(j=0; j<10; j++);
  85. }
  86. void sendbyte(unsigned char zdata)
  87. {
  88. unsigned int i;
  89. for(i=0; i<8; i++)
  90. {
  91.   if((zdata << i) & 0x80)
  92.   {
  93.    SID = 1;
  94.   }
  95.   else
  96.   {
  97.    SID = 0;
  98.   }
  99.   SCLK = 0;
  100.   SCLK = 1;
  101. }
  102. }[/font]
  103. [font=黑體]/********************************************************************
  104. * 名稱 : write_com()
  105. * 功能 : 寫串口指令
  106. * 輸入 : cmdcode
  107. * 輸出 : 無
  108. ***********************************************************************/
  109. void write_com(unsigned char cmdcode)
  110. {
  111. CS = 1;
  112. sendbyte(0xf8);
  113. sendbyte(cmdcode & 0xf0);
  114. sendbyte((cmdcode << 4) & 0xf0);
  115. delay(2);
  116. }[/font]
  117. [font=黑體]/********************************************************************
  118. * 名稱 : write_data()
  119. * 功能 : 寫串口指令
  120. * 輸入 : cmdcode
  121. * 輸出 : 無
  122. ***********************************************************************/
  123. void write_data(unsigned char Dispdata)
  124. {
  125. CS = 1;
  126. sendbyte(0xfa);
  127. sendbyte(Dispdata & 0xf0);
  128. sendbyte((Dispdata << 4) & 0xf0);
  129. delay(2);
  130. }[/font]
  131. [font=黑體]/********************************************************************
  132. * 名稱 : lcdinit()
  133. * 功能 : 初始化函數
  134. * 輸入 : cmdcode
  135. * 輸出 : 無
  136. ***********************************************************************/
  137. void lcdinit()
  138. {  
  139. RST = 0;
  140. delay(100);
  141. RST = 1;
  142. delay(20000);
  143. write_com(0x30);
  144. delay(50);
  145. write_com(0x0c);
  146. delay(50);
  147. }[/font]
  148. [font=黑體]/********************************************************************
  149. * 名稱 : hzkdis()
  150. * 功能 : 顯示字符串
  151. * 輸入 : *s
  152. * 輸出 : 無
  153. ***********************************************************************/
  154. void hzkdis(unsigned char code *s)
  155. {  
  156. while(*s > 0)
  157.     {
  158.   write_data(*s);
  159.   s++;
  160.   delay(50);
  161.     }
  162. }[/font]
  163. [font=黑體]/********************************************************************
  164. * 名稱 : Test()
  165. * 功能 : 顯示子函數
  166. * 輸入 : 無
  167. * 輸出 : 無
  168. ***********************************************************************/[/font]
  169. [font=黑體]void DisplayOneChar(uchar DData)
  170. {      
  171. //Y&=4;      
  172. //X&=15;      
  173. //if(Y)X|=0x40;     
  174. //X|=0x80;   
  175. //WriteCommandLCM(X,0);  
  176. write_data(DData);  
  177. }      [/font]
  178. [font=黑體]/**************************************
  179. 延時5微秒(STC90C52RC@12M)
  180. 不同的工作環境,需要調整此函數,注意時鐘過快時需要修改
  181. 當改用1T的MCU時,請調整此延時函數
  182. **************************************/
  183. void Delay5us()
  184. {
  185.     _nop_();_nop_();_nop_();_nop_();
  186.     _nop_();_nop_();_nop_();_nop_();
  187. _nop_();_nop_();_nop_();_nop_();
  188. _nop_();_nop_();_nop_();_nop_();
  189. }[/font]
  190. [font=黑體]/**************************************
  191. 延時5毫秒(STC90C52RC@12M)
  192. 不同的工作環境,需要調整此函數
  193. 當改用1T的MCU時,請調整此延時函數
  194. **************************************/
  195. void Delay5ms()
  196. {
  197.     WORD n = 560;[/font]
  198. [font=黑體]    while (n--);
  199. }[/font]
  200. [font=黑體]/**************************************
  201. 起始信號
  202. **************************************/
  203. void BH1750_Start()
  204. {
  205.     SDA = 1;                    //拉高數據線
  206.     SCL = 1;                    //拉高時鐘線
  207.     Delay5us();                 //延時
  208.     SDA = 0;                    //產生下降沿
  209.     Delay5us();                 //延時
  210.     SCL = 0;                    //拉低時鐘線
  211. }[/font]
  212. [font=黑體]/**************************************
  213. 停止信號
  214. **************************************/
  215. void BH1750_Stop()
  216. {
  217.     SDA = 0;                    //拉低數據線
  218.     SCL = 1;                    //拉高時鐘線
  219.     Delay5us();                 //延時
  220.     SDA = 1;                    //產生上升沿
  221.     Delay5us();                 //延時
  222. }[/font]
  223. [font=黑體]/**************************************
  224. 發送應答信號
  225. 入口參數:ack (0:ACK 1:NAK)
  226. **************************************/
  227. void BH1750_SendACK(bit ack)
  228. {
  229.     SDA = ack;                  //寫應答信號
  230.     SCL = 1;                    //拉高時鐘線
  231.     Delay5us();                 //延時
  232.     SCL = 0;                    //拉低時鐘線
  233.     Delay5us();                 //延時
  234. }[/font]
  235. [font=黑體]/**************************************
  236. 接收應答信號
  237. **************************************/
  238. bit BH1750_RecvACK()
  239. {
  240.     SCL = 1;                    //拉高時鐘線
  241.     Delay5us();                 //延時
  242.     CY = SDA;                   //讀應答信號
  243.     SCL = 0;                    //拉低時鐘線
  244.     Delay5us();                 //延時[/font]
  245. [font=黑體]    return CY;
  246. }[/font]
  247. [font=黑體]/**************************************
  248. 向IIC總線發送一個字節數據
  249. **************************************/
  250. void BH1750_SendByte(BYTE dat)
  251. {
  252.     BYTE i;[/font]
  253. [font=黑體]    for (i=0; i<8; i++)         //8位計數器
  254.     {
  255.         dat <<= 1;              //移出數據的最高位
  256.         SDA = CY;               //送數據口
  257.         SCL = 1;                //拉高時鐘線
  258.         Delay5us();             //延時
  259.         SCL = 0;                //拉低時鐘線
  260.         Delay5us();             //延時
  261.     }
  262.     BH1750_RecvACK();
  263. }[/font]
  264. [font=黑體]/**************************************
  265. 從IIC總線接收一個字節數據
  266. **************************************/
  267. BYTE BH1750_RecvByte()
  268. {
  269.     BYTE i;
  270.     BYTE dat = 0;[/font]
  271. [font=黑體]    SDA = 1;                    //使能內部上拉,準備讀取數據,
  272.     for (i=0; i<8; i++)         //8位計數器
  273.     {
  274.         dat <<= 1;
  275.         SCL = 1;                //拉高時鐘線
  276.         Delay5us();             //延時
  277.         dat |= SDA;             //讀數據               
  278.         SCL = 0;                //拉低時鐘線
  279.         Delay5us();             //延時
  280.     }
  281.     return dat;
  282. }[/font]
  283. [font=黑體]//*********************************[/font]
  284. [font=黑體]void Single_Write_BH1750(uchar REG_Address)
  285. {
  286.     BH1750_Start();                  //起始信號
  287.     BH1750_SendByte(SlaveAddress);   //發送設備地址+寫信號
  288.     BH1750_SendByte(REG_Address);    //內部寄存器地址,
  289.   //  BH1750_SendByte(REG_data);       //內部寄存器數據,
  290.     BH1750_Stop();                   //發送停止信號
  291. }[/font]
  292. [font=黑體]//********單字節讀取*****************************************
  293. /*
  294. uchar Single_Read_BH1750(uchar REG_Address)
  295. {  uchar REG_data;
  296.     BH1750_Start();                          //起始信號
  297.     BH1750_SendByte(SlaveAddress);           //發送設備地址+寫信號
  298.     BH1750_SendByte(REG_Address);                   //發送存儲單元地址,從0開始
  299.     BH1750_Start();                          //起始信號
  300.     BH1750_SendByte(SlaveAddress+1);         //發送設備地址+讀信號
  301.     REG_data=BH1750_RecvByte();              //讀出寄存器數據
  302. BH1750_SendACK(1);   
  303. BH1750_Stop();                           //停止信號
  304.     return REG_data;
  305. }
  306. */
  307. //*********************************************************
  308. //
  309. //連續讀出BH1750內部數據
  310. //
  311. //*********************************************************
  312. void Multiple_read_BH1750(void)
  313. {   uchar i;
  314.     BH1750_Start();                          //起始信號
  315.     BH1750_SendByte(SlaveAddress+1);         //發送設備地址+讀信號

  316.   for (i=0; i<3; i++)                      //連續讀取2個地址數據,存儲中BUF
  317.     {
  318.         BUF[i] = BH1750_RecvByte();          //BUF[0]存儲0x32地址中的數據
  319.         if (i == 3)
  320.         {[/i][/font][i]
  321. [font=黑體]           BH1750_SendACK(1);                //最后一個數據需要回NOACK
  322.         }
  323.         else
  324.         {  
  325.           BH1750_SendACK(0);                //回應ACK
  326.        }
  327.    }[/font]
  328. [font=黑體]    BH1750_Stop();                          //停止信號
  329.     Delay5ms();
  330. }[/font]
  331. [font=黑體]
  332. //初始化BH1750,根據需要請參考pdf進行修改****
  333. void Init_BH1750()
  334. {
  335.    Single_Write_BH1750(0x01);  
  336. }
  337. void delay1(uint xms)
  338. {
  339. uint i,j;
  340. for(i=xms;i>0;i--)
  341.         for(j=110;j>0;j--);
  342. }
  343. /*****************us延時函數*****************************/
  344. void delay_10us()
  345. {
  346.         _nop_();
  347.         _nop_();
  348.         _nop_();
  349.         _nop_();
  350.         _nop_();
  351.         _nop_();
  352. }
  353. /*寫指令函數*/
  354. /*rs=l,rw=l,en=高脈沖,D0-D7=指令碼。*/
  355. void write_cmd(uchar cmd)
  356. {
  357.         CS=0;
  358.         SID=0;
  359.         SCLK=0;
  360.         P0=cmd;
  361.         delay1(5);
  362.         SCLK=1;
  363.         delay1(5);
  364.         SCLK=0;
  365. }
  366. /***************************寫顯示數據************************/
  367. /*rs=h,rw=l,*/
  368. void write_dat(uchar date)
  369. {
  370. CS=1;
  371. SID=0;
  372. SCLK=0;
  373. P0=date;
  374. delay1(5);
  375. SCLK=1;
  376. delay1(5);
  377. SCLK=0;
  378. }
  379. /*****************初始化************************/
  380. void init()
  381. {        
  382.       SCLK=0;
  383.        SID=0;
  384.        CH=1;                  //并口方式
  385.         write_cmd(0x30);                //基本指令操作
  386.         delay1(5);
  387.         write_cmd(0x0c);                //顯示開,關光標
  388.         delay1(5);
  389.         write_cmd(0x06);
  390.     delay1(2);
  391.         write_cmd(0x01);                //清除顯示內容
  392.         delay1(5);
  393.                                 
  394.                                                                                                         
  395. }
  396. void dht_init()
  397. {
  398.    delay1(1000);          //DHT11上電前準備時間,大概1s
  399.    dht_dat=1;             //         //總線準備
  400. }
  401. uchar read_date()        //接收一個8位數據,先高位后低位
  402. {
  403.         uchar i,dat;
  404.         for(i=0;i<8;i++)   //也就是說程序是循環八次,把判斷有“1”輸出到dat中,然后輸出一個八位的數據。
  405.         {
  406.                 dht_num=2;
  407.                 while((dht_dat==0)&&(dht_num++)); //dht_dat 數據線由DH11拉低準備發送數據
  408.                 delay_10us();
  409.                                 delay_10us();
  410.                 delay_10us();
  411.                                 delay_10us();
  412.                 dat=dat<<1;
  413.                 if(dht_dat==1)
  414.                 {
  415.                         dht_num=2;
  416.                         dat=dat|0x01;  //如果來自DQ的數據是高電平1,則把1放到dat的最低位
  417.                         while((dht_dat==1)&&(dht_num++));
  418.                 }
  419.         }
  420.         return dat;        
  421. }
  422. void get_temp()        //給DHT11一個開始信號,然后讀取一次數據,共五個8位字節
  423. {
  424.         dht_dat=0;
  425.         delay1(25);
  426.         dht_dat=1;        //單片機給起始脈沖信號
  427.         delay_10us();
  428.         delay_10us();
  429.         delay_10us();
  430.         delay_10us();
  431.         dht_dat=1;         //稍作延時,等待DHT11返回響應(響應為低電 平)
  432.         if(dht_dat==0)         //有響應才接收數據,否則不作處理
  433.         {
  434.                 dht_num=2;
  435.                 while((dht_dat==0)&&(dht_num++));
  436.                 dht_num=2;
  437.                 while((dht_dat==1)&&(dht_num++));
  438.                 dht_d1=read_date();
  439.                 dht_d2=read_date();
  440.                 dht_t1=read_date();
  441.                 dht_t2=read_date();
  442.                 dht_j=read_date(); //一次讀出五個數據
  443.         }
  444.         dht_dat=1;        //釋放總線
  445.         delay1(10);
  446.         d11=dht_d1/10;
  447.         d12=dht_d1%10;
  448.         t11=dht_t1/10;
  449.         t12=dht_t1%10;
  450.                
  451.         d21=dht_d2/10;
  452.         d22=dht_d2%10;
  453.         t21=dht_t2/10;
  454.         t22=dht_t2%10;
  455.          
  456. }
  457. void guangzhaochushi()
  458. {

  459.    CH = 0;
  460. delay(1);
  461. lcdinit();
  462. delay(10);
  463.    Init_BH1750();       //初始化BH1750
  464. }
  465. //void gz()

  466. //*********************************************************
  467. //主程序********
  468. //*********************************************************
  469. void wenshi()
  470. {
  471. get_temp();
  472.                
  473.         
  474.                
  475.                
  476.                 write_cmd(0x80);
  477.                 for(i=0;i<6;i++)
  478.                 {
  479.                 write_dat(table[i]);
  480.                 }
  481.                 write_cmd(0x83);        
  482.                 write_dat(0x30+t11);
  483.                 write_dat(0x30+t12);
  484.                 write_cmd(0x80+4);
  485.                 write_dat('.');                                         
  486.                 write_dat(0x30+t21);
  487.                 write_cmd(0x85);                                
  488.                 write_dat(0x30+t22);                                                      
  489.                 write_cmd(0x86);
  490.         for(i=0;i<4;i++)
  491.         {
  492.          write_dat(table2[i]);                                 
  493.         }
  494.                 write_cmd(0x90);
  495.         for(i=0;i<6;i++)
  496.         {
  497.           write_dat(table1[i]);
  498.         }
  499.                 write_cmd(0x93);
  500.                 write_dat(0x30+d11);
  501.                 write_dat(0x30+d12);
  502.                 write_cmd(0x94);
  503.                 write_dat('.');                                                
  504.                 write_dat(0x30+d21);
  505.                 write_cmd(0x95);
  506.                 write_dat(0x30+d22);
  507.                 write_cmd(0x96);
  508.                 write_dat('%');      
  509. }
  510. void kongzhi()
  511. {
  512. if(wendu<35)
  513.   {
  514.    LED1=0;
  515.    delay_nms(10);
  516. //   buzzer=0;delay_nms(10);
  517.    LED2=1;delay_nms(10);
  518. //   FAN=1;delay_nms(10);
  519.   }
  520.   if(wendu>35)
  521.   {
  522. //    buzzer=1;delay_nms(10);
  523.    LED1=1;delay_nms(10);
  524.    LED2=0; delay_nms(10);
  525. //   FAN=0;delay_nms(10);
  526.   }
  527. // if(key1==0)
  528. // { delay_nms(10);
  529. //  if(key1==0)
  530. //  {
  531. //   gz();
  532. //   key2=1;
  533. //  }
  534. // }
  535. // if(key2==0)
  536. // { delay_nms(10);
  537. //  if(key2==0)
  538. //  {
  539. //   gz();
  540. //   wenshi();
  541. //  }
  542. // }
  543. }
  544. void main()
  545. {float temp;  
  546. buzzer=0;
  547. { delay_nms(100);     //延時100ms
  548. guangzhaochushi();
  549. { Single_Write_BH1750(0x01);   // power on
  550.     Single_Write_BH1750(0x10);   // H- resolution mode
  551.      delay_nms(180);              //延時180ms
  552.     Multiple_Read_BH1750();       //連續讀出數據,存儲在BUF中
  553.     dis_data=BUF[0];
  554.     dis_data=(dis_data<<8)+BUF[1];//合成數據,即光照數據
  555.    
  556.     temp=(float)dis_data/1.2;
  557.     conversion(temp);         //計算數據和顯示
  558.   
  559. write_com(0x03);
  560. delay(50);   
  561. write_com(0x81);
  562. hzkdis("植物精準監控");
  563. write_com(0x91);
  564. hzkdis("17電子二班");
  565.   write_com(0x89);
  566.   hzkdis("光照強度:");
  567. write_com(0x98);
  568. hzkdis(" ");
  569. DisplayOneChar(wan);
  570. hzkdis(" ");
  571. DisplayOneChar(qian);
  572. hzkdis(" ");
  573. DisplayOneChar(bai);
  574. hzkdis(" ");
  575. DisplayOneChar(shi);
  576. hzkdis(" ");
  577. DisplayOneChar(ge);
  578. hzkdis(" ");
  579. hzkdis(" lx  ");  
  580. }
  581. }
  582. delay_nms(5000);
  583. dht_init();
  584. init();   
  585.   while(1)              //循環
  586.   {
  587.     wenshi();
  588.   delay_nms(5);
  589.   wendu=dht_d1+ (dht_d2)*10;
  590.     shidu=dht_t1+ (dht_t2)*10;
  591.     delay_nms(5);  
  592.   kongzhi();
  593.   delay_nms(5);
  594.   }
  595. }
復制代碼

STC_BH1750.zip

59.3 KB, 下載次數: 24

51單片機控制12864顯示光照和溫濕

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

使用道具 舉報

沙發
ID:624334 發表于 2019-10-15 10:47 | 只看該作者
#在這里快速回復#51單片機控制12864顯示光照和溫濕
回復

使用道具 舉報

板凳
ID:688460 發表于 2020-4-24 23:28 | 只看該作者
謝謝樓主的分享!好好學習天天向上!
回復

使用道具 舉報

地板
ID:728680 發表于 2020-5-3 11:21 來自手機 | 只看該作者
樓上迷惑行為
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线观看一区 | 成人精品一区二区三区中文字幕 | 一区二区免费视频 | 伊人网综合 | 麻豆久久久9性大片 | 日韩综合在线播放 | 午夜伦理影院 | 一区二区国产精品 | 国产高清视频在线播放 | 午夜欧美一区二区三区在线播放 | 欧美另类视频 | 亚洲高清视频一区 | 欧美日韩电影一区二区 | 国产精品1区2区3区 中文字幕一区二区三区四区 | 亚洲成av| 精品国偷自产在线 | 中文字幕免费在线 | 精品一区二区三区四区五区 | 亚洲电影第1页 | 日本成人三级电影 | 久久久免费电影 | 欧美精品一区二区三区四区 在线 | 午夜精品久久久久久久星辰影院 | 一区二区久久电影 | 在线a视频网站 | 日本亚洲欧美 | 亚洲精品高清视频在线观看 | 国产一级一片免费播放 | 日韩免费av| 特黄特色大片免费视频观看 | 91精品国产91综合久久蜜臀 | 一区二区三区免费在线观看 | 欧美日产国产成人免费图片 | 国产成人免费视频网站视频社区 | 天天宗合网 | 91伊人网| 久久69精品久久久久久久电影好 | 国产人成在线观看 | av天天澡天天爽天天av | 午夜精品一区二区三区在线播放 | 国产欧美一区二区三区免费 |