色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于51單片機設計的井下瓦斯監控系統

DS小龍哥-嵌入式技術 ? 來源:DS小龍哥-嵌入式技術 ? 作者:DS小龍哥-嵌入式技 ? 2023-06-12 08:43 ? 次閱讀

一、項目介紹

井下瓦斯監控系統是煤礦安全生產中非常重要的一部分,防止井下瓦斯爆炸事故的發生,保障煤礦工人的人身安全。由于地下環境特殊,需要特殊的監測系統來實時監測瓦斯濃度等關鍵指標,并及時報警以便采取措施進行處理。

瓦斯氣體,又稱沼氣,是一種輕質烴類氣體,主要成分是甲烷(CH4),也包含少量的乙烷、丙烷等。它是在地下煤炭層與泥巖等巖石中通過微生物作用或者煤炭化學反應形成的。在煤礦等地下工程中,瓦斯常常是一種具有危險性的氣體,如果采取不當的措施,就有可能發生瓦斯爆炸事故。

基于51單片機的井下瓦斯監控系統,可以通過傳感器檢測瓦斯氣體濃度,將檢測到的數據通過AD轉換后送入單片機處理,再通過LCD顯示器顯示出來。如果瓦斯濃度超過了預設閾值,系統會自動啟動報警裝置進行警示。同時,這種系統具有適用面廣、成本低、可靠性高等特點。

在目前環保意識提高的背景下,煤炭企業和政府對于井下瓦斯監控系統的需求越來越大,系統的市場潛力巨大。

image-20230606222108974

二、設計原理

2.1 傳感器選型

(1)瓦斯氣體檢測

MQ2傳感器是一種常用于氣體檢測的半導體傳感器,主要用于檢測多種易燃、易爆氣體,如瓦斯、丙烷、液化氣等。它采用了半導體氧化物層敏感元件技術,當檢測到目標氣體時,其電阻值會發生變化,從而可以通過測量電阻值的變化來檢測目標氣體的濃度。MQ2傳感器具有靈敏度高、響應速度快、使用方便等特點,因此在氣體檢測領域廣泛應用。

MQ2傳感器包括熱敏電阻、電化學傳感器、半導體敏感元件等部分,其中半導體敏感元件是其核心部件,也是影響傳感器性能的關鍵因素。在使用前需要進行預熱處理,一般預熱時間為1-2分鐘,然后將待測氣體與傳感器接觸,即可讀取傳感器的輸出信號并進行濃度計算。

image-20230606221409128

(2)ADC采集模塊

PCF8591模塊是一種集成了AD轉換器和DA轉換器的模塊,通過I2C總線可以連接到單片機或其他電子設備上,用于模擬信號的輸入和輸出。其主要特點是集成度高、精度高、使用方便、成本低廉等。

模塊由PCF8591芯片和相關外圍電路組成,其中PCF8591芯片是一個具有4個模擬輸入通道和1個模擬輸出通道的集成電路,內部集成了128級AD轉換器和8位DA轉換器,并且支持外部基準電壓輸入。同時,該模塊還包括4個可變電阻,可以通過調節來改變模擬輸入通道的電阻值,從而實現對信號的增益和衰減。通過I2C總線,可以方便地讀取和輸出模擬信號。

在實際應用中,PCF8591模塊廣泛用于傳感器信號的采集和處理,例如溫度、光強、聲音等信號的轉換和傳輸。

image-20230606222034100

2.2 設計思路

基于51單片機設計的井下瓦斯監控系統的原理如下:

(1)傳感器檢測瓦斯濃度:使用瓦斯傳感器檢測井下瓦斯濃度,并將檢測結果轉換為電信號輸出。

(2)單片機采集數據:使用ADC模塊將傳感器輸出的電信號轉換為數字信號,并將其存儲到單片機內部的RAM中。

(3)數據處理:單片機通過對采集到的數據進行處理,可以實現瓦斯濃度的實時監測,并根據預設閾值進行報警處理。

(4)報警處理:當瓦斯濃度超過預設閾值時,單片機會觸發報警器進行報警。同時,可以通過OLED顯示屏實時顯示瓦斯濃度,并通過蜂鳴器發出警報聲音。

(5)數據存儲:單片機還可以將采集到的數據存儲到外部存儲器中,以便后續的數據分析和處理。

基于51單片機設計的井下瓦斯監控系統通過傳感器檢測瓦斯濃度,單片機采集數據并進行處理,實現了對瓦斯濃度的實時監測和報警處理,同時還可以將數據存儲到外部存儲器中,方便后續的數據分析和處理。

三、代碼實現

3.1 采集MQ2濃度打印到串口

以下是基于STC89C52通過PCF8591采集MQ2煙霧傳感器的值,并轉為濃度打印到串口的詳細代碼。

#include < reg52.h >
 #include < intrins.h >
 ?
 #define uchar unsigned char
 #define uint unsigned int
 ?
 sbit SCL=P1^0;  // I2C時鐘
 sbit SDA=P1^1;  // I2C數據線
 ?
 sbit MQ2=P3^2;  // MQ2煙霧傳感器
 ?
 // 函數聲明
 void delay(uint n);
 void I2C_Start();
 void I2C_Stop();
 void I2C_SendACK(bit ack);
 bit I2C_RecvACK();
 void I2C_SendByte(uchar dat);
 uchar I2C_RecvByte();
 void PCF8591_Write(uchar addr, uchar dat);
 uchar PCF8591_Read(uchar addr);
 void InitPCF8591();
 uint ReadMQ2();
 ?
 // 主函數
 void main()
 {
     InitPCF8591();  // 初始化PCF8591
     while(1)
     {
         uint mq2val = ReadMQ2();  // 讀取MQ2傳感器的值
         float mq2con = (mq2val / 255.0) * 100.0;  // 將傳感器的值轉換為濃度
         printf("MQ2煙霧濃度:%f%%\\n", mq2con);  // 打印濃度到串口
         delay(1000);  // 延時1秒
     }
 }
 ?
 // 延時函數
 void delay(uint n)
 {
     uint i, j;
     for(i = 0; i < n; i++)
         for(j = 0; j < 125; j++);
 }
 ?
 // I2C總線函數
 ?
 // I2C起始信號
 void I2C_Start()
 {
     SDA = 1;
     SCL = 1;
     _nop_();
     _nop_();
     _nop_();
     SDA = 0;
     _nop_();
     _nop_();
     _nop_();
     SCL = 0;
 }
 ?
 // I2C停止信號
 void I2C_Stop()
 {
     SDA = 0;
     SCL = 1;
     _nop_();
     _nop_();
     _nop_();
     SDA = 1;
     _nop_();
     _nop_();
     _nop_();
 }
 ?
 // I2C發送應答信號
 void I2C_SendACK(bit ack)
 {
     SDA = ack;
     SCL = 1;
     _nop_();
     _nop_();
     _nop_();
     SCL = 0;
 }
 ?
 // I2C接收應答信號
 bit I2C_RecvACK()
 {
     SCL = 1;
     _nop_();
     _nop_();
     _nop_();
     bit ack = SDA;
     SCL = 0;
     return ack;
 }
 ?
 // I2C發送一個字節
 void I2C_SendByte(uchar dat)
 {
     uchar i;
     for(i = 0; i < 8; i++)
     {
         SDA = (dat & 0x80) > > 7;
         dat < <= 1;
         SCL = 1;
         _nop_();
         _nop_();
         _nop_();
         SCL = 0;
     }
     I2C_RecvACK();
 }
 ?
 // I2C接收一個字節
 uchar I2C_RecvByte()
 {
     uchar i, dat = 0;
     for(i = 0; i < 8; i++)
     {
         dat < <= 1;
         SCL = 1;
         _nop_();
         _nop_();
         _nop_();
         dat |= SDA;
         SCL = 0;
     }
     I2C_SendACK(1);
     return dat;
 }
 ?
 // PCF8591函數
 ?
 // 初始化PCF8591
 void InitPCF8591()
 {
     PCF8591_Write(0x40, 0x00);  // 設置PCF8591控制字節,模擬輸入通道為0
 }
 ?
 // 向PCF8591寫入一個字節
 void PCF8591_Write(uchar addr, uchar dat)
 {
     I2C_Start();  // 發送起始信號
     I2C_SendByte(0x90);  // 發送設備地址,并寫入模式
     I2C_RecvACK();
     I2C_SendByte(addr);  // 發送寄存器地址
     I2C_RecvACK();
     I2C_SendByte(dat);  // 發送數據
     I2C_RecvACK();
     I2C_Stop();  // 發送停止信號
 }
 ?
 // 從PCF8591讀取一個字節
 uchar PCF8591_Read(uchar addr)
 {
     uchar dat;
     I2C_Start();  // 發送起始信號
     I2C_SendByte(0x90);  // 發送設備地址,并寫入模式
     I2C_RecvACK();
     I2C_SendByte(addr);  // 發送寄存器地址
     I2C_RecvACK();
     I2C_Start();  // 發送起始信號
     I2C_SendByte(0x91);  // 發送設備地址,并讀取數據
     I2C_RecvACK();
     dat = I2C_RecvByte();  // 讀取數據
     I2C_SendACK(1);
     I2C_Stop();  // 發送停止信號
     return dat;
 }
 ?
 // 讀取MQ2傳感器的值
 uint ReadMQ2()
 {
     uchar val = PCF8591_Read(0x40);  // 讀取PCF8591的模擬輸入值
     if(MQ2 == 0)  // 如果MQ2傳感器檢測到煙霧
         return (uint)(val * 2.55);  // 返回模擬輸入值的百分比
     else
         return 0;  // 否則返回0
 }

上面代碼里,主要包括了I2C總線函數和PCF8591函數,用于與PCF8591芯片進行通信。其中,InitPCF8591()函數用于初始化PCF8591芯片,PCF8591_Write()函數用于向PCF8591芯片寫入數據,PCF8591_Read()函數用于從PCF8591芯片讀取數據。另外,ReadMQ2()函數用于讀取MQ2傳感器的值,并將其轉換為濃度值。最后,在主函數中,通過調用ReadMQ2()函數讀取MQ2傳感器的值,并將其轉換為濃度值,然后通過printf()函數將濃度值打印到串口。

3.2 采用煙霧濃度顯示到OLED

下面代碼是STC89C52通過PCF8591采集MQ2煙霧傳感器的值,并轉為濃度顯示到IIC接口的OLED顯示屏上。

#include < reg52.h >
 #include < intrins.h >
 ?
 #define uchar unsigned char
 #define uint unsigned int
 ?
 typedef enum { false = 0, true = !false } bool;
 ?
 sbit SCL=P3^6;   //IIC總線時鐘引腳定義
 sbit SDA=P3^7;   //IIC總線數據引腳定義
 ?
 sbit LED = P1^0;  // 測試用LED燈,可選
 ?
 uchar code tabel[]="Smog: ";  //OLED屏幕顯示內容
 uchar code dis[]="%";
 ?
 /*------------------函數聲明------------------*/
 void delayms(uint); //毫秒延時函數
 void IIC_Start(); //IIC起始信號
 void IIC_Stop();  //IIC停止信號
 void IIC_Send_Byte(uchar); //發送一個字節
 uchar IIC_Read_Byte(bool); //讀取一個字節
 void LCD_SetPos(uchar,uchar); //設置位置
 void LCD_WriteCmd(uchar); //寫命令
 void LCD_WriteData(uchar); //寫數據
 void LCD_Init(); //初始化
 void MQ2_Init(); //MQ2傳感器初始化
 int MQ2_Read(); //讀取MQ2傳感器的值并返回濃度值
 ?
 /*------------------主函數------------------*/
 void main()
 {
     uchar i=0,j=0,k=0;
     int result = 0; //存儲MQ2傳感器讀取的值
     uchar buf[5] = {0}; //存儲MQ2濃度值字符串
     uchar MQ2_data[10]={0}; //存儲OLED屏幕顯示數據
 ?
     EA = 1;  //開放總中斷
     IIC_Init();
     LCD_Init();
     MQ2_Init();
 ?
     while(1)
     {
         result = MQ2_Read();    //讀取MQ2傳感器的值
         if(result >= 0)         //讀取成功
         {
             itoa(result,buf,10); //將讀取結果轉為字符串格式
             for(i=0;i< 6;i++)    //將OLED顯示內容清空,準備寫入新數據
                 MQ2_data[i]=0;
             for(i=0;i< 6;i++)    //拼接OLED顯示內容
             {
                 if(tabel[i]!=0) //判斷是否有顯示內容
                     MQ2_data[i]=tabel[i];
                 else
                     break;
             }
             j=0; //記錄MQ2字符串長度
             while(buf[j]!=0 && i+j< 7)   //拼接MQ2濃度值字符串,最多顯示5位數
             {
                 MQ2_data[i+j] = buf[j];
                 j++;
             }
             if(j< 5) //MQ2濃度值不足5位數字,換行再拼接“%”字符
             {
                 MQ2_data[i+j] = '\\n';
                 MQ2_data[i+j+1] = dis[0];
             }
             for(k=0;k< i+j+2;k++)    //將OLED屏幕顯示MQ2濃度值
             {
                 LCD_WriteData(MQ2_data[k]);
             }
             delayms(1000);  //延時1秒(可根據實際需求調整)
         }
     }
 }
 ?
 /*------------------IIC總線控制函數------------------*/
 void IIC_Init()
 {
     SCL = 1;  //初始化,總線空閑狀態時SCL和SDA都為高電平
     SDA = 1;
 }
 void IIC_Start()
 {
     SDA = 1;
     _nop_();
     SCL = 1;
     _nop_();
     SDA = 0;  //起始信號的形成:在SCL高電平期間,SDA從高電平轉為低電平
     _nop_();
     SCL = 0;
 }
 void IIC_Stop()
 {
     SDA = 0;
     _nop_();
     SCL = 1;
     _nop_();
     SDA = 1;  //停止信號的形成:在SCL高電平期間,SDA從低電平轉到高電平
     _nop_();
 }
 void IIC_Send_Byte(uchar dat)
 {
     uchar i;
     for(i=0;i< 8;i++)
     {
         SDA = dat & 0x80;
         dat < <= 1;
         SCL = 1;
         _nop_();
         SCL = 0;
         _nop_();
     }
 }
 uchar IIC_Read_Byte(bool ack)
 {
     uchar i,dat=0;
     for(i=0;i< 8;i++)
     {
         SCL = 1;
         _nop_();
         dat < <= 1;
         dat |= SDA;
         SCL = 0;
         _nop_();
     }
     if(ack)
         SDA = 0;   //發送ACK
     else
         SDA = 1;   //不發送ACK
     SCL = 1;
      _nop_();
     SCL = 0;
     _nop_();
     SDA = 1;
     return dat;
 }
 ?
 /*------------------OLED屏幕控制函數------------------*/
 void LCD_SetPos(uchar x,uchar y)
 {
     LCD_WriteCmd(0xb0+y);
     LCD_WriteCmd(((x&0xf0) >>4)|0x10);
     LCD_WriteCmd((x&0x0f)|0x00);
 }
 void LCD_WriteCmd(uchar cmd)
 {
     IIC_Start();
     IIC_Send_Byte(0x78);
     IIC_Send_Byte(0x00);  //寫命令
     IIC_Send_Byte(cmd);
     IIC_Stop();
 }
 void LCD_WriteData(uchar dat)
 {
     IIC_Start();
     IIC_Send_Byte(0x78);
     IIC_Send_Byte(0x40);  //寫數據
     IIC_Send_Byte(dat);
     IIC_Stop();
 }
 void LCD_Init()
 {
     LCD_WriteCmd(0xae);
     LCD_WriteCmd(0x00);
     LCD_WriteCmd(0x10);
     LCD_WriteCmd(0x40);
     LCD_WriteCmd(0xb0);
     LCD_WriteCmd(0x81);
     LCD_WriteCmd(0xcf);
     LCD_WriteCmd(0xa1);
     LCD_WriteCmd(0xa6);
     LCD_WriteCmd(0xa8);
     LCD_WriteCmd(0x3f);
     LCD_WriteCmd(0xc8);
     LCD_WriteCmd(0xd3);
     LCD_WriteCmd(0x00);
     LCD_WriteCmd(0xd5);
     LCD_WriteCmd(0x80);
     LCD_WriteCmd(0xd9);
     LCD_WriteCmd(0xf1);
     LCD_WriteCmd(0xda);
     LCD_WriteCmd(0x12);
     LCD_WriteCmd(0xdb);
     LCD_WriteCmd(0x40);
     LCD_WriteCmd(0x20);
     LCD_WriteCmd(0x02);
     LCD_WriteCmd(0xaf);
     LCD_WriteCmd(0xff);
 }
 ?
 /*------------------MQ2傳感器控制函數------------------*/
 void MQ2_Init()
 {
     IIC_Start();
     IIC_Send_Byte(0x90); //寫入設備地址 1001A2A1A0(0) R/W = 0(PCF8591 寫操作)
     IIC_Send_Byte(0x40); //寫入控制字節,選擇通道0,并開啟模擬轉換器
     IIC_Stop();
 }
 int MQ2_Read()
 {
     int result=0;
     uchar buf[10]={0};
     IIC_Start();
     IIC_Send_Byte(0x90); //寫入設備地址
     IIC_Send_Byte(0x41); //讀取數據
     result = IIC_Read_Byte(true)*256; //讀取高位數據
     result += IIC_Read_Byte(true);   //讀取低位數據
     IIC_Stop();
     if(result < 0)
         return -1;  //讀取失敗
     else
         return result;  //返回讀取的值
 }
 ?
 /*------------------輔助函數------------------*/
 void delayms(uint n)
 {
     uint i, j;
     for(i=0;i< n;i++)
         for(j=0;j< 114;j++);
 }

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 傳感器
    +關注

    關注

    2550

    文章

    51035

    瀏覽量

    753076
  • 單片機
    +關注

    關注

    6035

    文章

    44554

    瀏覽量

    634642
  • 監控系統
    +關注

    關注

    21

    文章

    3904

    瀏覽量

    174416
  • 51單片機
    +關注

    關注

    274

    文章

    5702

    瀏覽量

    123491
收藏 人收藏

    評論

    相關推薦

    基于單片機井下瓦斯報警系統

    現在小弟正在做畢業設計,題目是基于單片機井下瓦斯報警系統,各位帥哥,靚妹,你能不能給點建設性的意見,給點這方面的資料,最好把原理圖和程序讓我學習一下,不勝感激!!!{:4_95:}{
    發表于 03-08 13:01

    求一種基于單片機井下安全監測系統設計方案

    和蜂鳴器進行聲光報警。標簽:51單片機、LCD1602、ADC0832、PM2.5、MQ-2、風速檢測題目擴展:室外空氣質量檢測系統井下安全監控
    發表于 02-18 06:42

    基于單片機井下安全監控的設計相關資料下載

    項目編號:mcuclub-203設計簡介:資料下載網址:項目名:基于單片機井下安全監控系統單片機:STC89C52功能:1、通過DS18B
    發表于 02-18 07:16

    基于單片機井下安全監控的設計資料分享

    項目編號:mcuclub-203設計簡介:資料下載網址:www.mcuclub.cn項目名:基于單片機井下安全監控系統單片機:STC89C
    發表于 02-28 09:02

    51單片機設置軟件工具

    51單片機設置軟件工具:51單片機設置軟件工具可以進行波特率,定時器,TO/T1方式控制,串口工作方式,T2控制,中斷開關,中斷優先級,電源模式,T2波特率,8252狗/EE,8252
    發表于 08-16 13:08 ?51次下載
    <b class='flag-5'>51</b><b class='flag-5'>單片機設</b>置軟件工具

    51系列單片機設計實例下載

    51系列單片機設計實例下載 本書可作為單片機設計與應用技術人員的參考用書,也是電子設計愛好者自學單片機應用技術難得的學習用書。
    發表于 11-03 10:36 ?349次下載
    <b class='flag-5'>51</b>系列<b class='flag-5'>單片機設</b>計實例下載

    基于單片機瓦斯報警器設計

    基于單片機瓦斯報警器設計   引言   當前,隨著采礦技術的不斷發展,井下作業的安全越來越有保障,但是仍然有許多采礦企業的機械化程度低
    發表于 11-25 08:42 ?2543次閱讀

    采用AT89C51單片機設計的變頻調速控制系統

    采用AT89C51單片機設計的變頻調速控制系統 摘 要:本文介紹了一種由AT89C51單片機為主控制器的變頻調速
    發表于 04-27 09:33 ?3510次閱讀
    采用AT89C<b class='flag-5'>51</b><b class='flag-5'>單片機設</b>計的變頻調速控制<b class='flag-5'>系統</b>

    51系列單片機設計實例

    51系列單片機設計實例,2009年度暢銷榜 非常實用的資料
    發表于 12-29 13:44 ?0次下載

    基于51單片機的輸液監控系統設計

    單片機資料。基于51單片機的輸液監控系統設計。
    發表于 03-22 17:23 ?26次下載

    51單片機設計超聲波測距系統的設計原理及電路(附源程序)

    51單片機設計超聲波測距系統的設計原理及電路(附源程序)。
    發表于 05-11 13:49 ?31次下載

    ZigBee技術應用實例之井下瓦斯監控和人員定位系統設計的詳細資料概述

    對ZigBee技術的特點和優勢,基于JN5121無線微控制器和ZigBee技術搭建井下瓦斯監控和人員定位系統。提出了節點硬件設計方案,分析了ZigBee協議棧和操作
    發表于 09-07 17:14 ?4次下載
    ZigBee技術應用實例之<b class='flag-5'>井下</b><b class='flag-5'>瓦斯</b><b class='flag-5'>監控</b>和人員定位<b class='flag-5'>系統</b>設計的詳細資料概述

    基于單片機井下安全監測系統

    和蜂鳴器進行聲光報警。標簽:51單片機、LCD1602、ADC0832、PM2.5、MQ-2、風速檢測題目擴展:室外空氣質量檢測系統井下安全監控
    發表于 12-23 19:30 ?13次下載
    基于<b class='flag-5'>單片機</b>的<b class='flag-5'>井下</b>安全監測<b class='flag-5'>系統</b>

    單片機俱樂部】基于單片機井下安全監控的設計【仿真設計】

    項目編號:mcuclub-203設計簡介:資料下載網址:www.mcuclub.cn項目名:基于單片機井下安全監控系統單片機:STC89C
    發表于 12-23 19:33 ?11次下載
    【<b class='flag-5'>單片機</b>俱樂部】基于<b class='flag-5'>單片機</b>的<b class='flag-5'>井下</b>安全<b class='flag-5'>監控</b>的設計【仿真設計】

    51單片機設計智能小車的制作資料合集

    51單片機設計智能小車的制作資料合集
    發表于 03-21 15:50 ?13次下載
    主站蜘蛛池模板: 芭乐草莓樱桃丝瓜18岁大全| 亚洲精品国产乱码AV在线观看| 欧美日韩亚洲一区视频二区| 欧美最猛黑人XXXXWWW| 日本理论片和搜子同居的日子2| 色综合久久网女同蕾丝边| 午夜影院视费x看| 亚洲AV色香蕉一区二区三区 | 男人的天堂黄色片| 欧美性最猛xxxx在线观看视频| 日韩在线 无码 精品| 秀婷程仪公欲息肉婷在线观看| 尤物国产在线精品三区| 99视频福利| 国产 亚洲 日韩 欧美 在线观看 | 寂寞夜晚视频在线观看| 麻豆国产自制在线观看| 秋霞电影在线观看午夜伦| 午夜福利电影网站鲁片大全| 伊人久久大香线蕉影院95 | 一边吃奶一边啪啪真舒服| 99久久人妻无码精品系列性欧美| 成人在免费视频手机观看网站| 国产亚洲精品久久久久久一区二区| 好嗨哟在线看片免费| 纯肉小黄文高H| 啊灬啊灬啊灬快灬深高潮啦| 国产色无码精品视频国产| 老师别揉我胸啊嗯小说| 三级网站视频| 又爽又黄又粗又大免费视频| 朝鲜黄色录像| 久久精品国产免费播高清无卡| 日本美女抠逼| 一受多攻高h| 夫妻主vk| 麻豆出品国产AV在线观看| 熟妇的味道HD中文字幕| 最近中文字幕MV免费高清视频8| 高傲教师麻麻被同学调教123| 久久久精品3d动漫一区二区三区|