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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

51單片機(jī)AS608指紋代碼(通信失敗解決方法)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:550952 發(fā)表于 2019-7-22 15:25 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
主函數(shù)
#include<reg52.h>
#include<intrins.h>
#include"buzz.h"
#include"key.h"
#include"uart.h"
#include"delay.h"
#include"FPM10A.h"
#include"lcd_1602.h"
void main()
{      
LCD1602_Init();   //初始化液晶
LCD1602_Display(0x80,"Fingerprint Test",0,16);  //液晶開機(jī)顯示界面
   Uart_Init();   //初始化串口
Key_Init();    //初始化按鍵
  Delay_Ms(200);          //延時500MS,等待指紋模塊復(fù)位
Device_Check();      //校對指紋模塊是否接入正確,液晶做出相應(yīng)的提示
Delay_Ms(1000);   //對接成功界面停留一定時間
while(1)
{
     /**************進(jìn)入主功能界面****************/
  LCD1602_Display(0x80,"  search finger ",0,16);  //第一排顯示搜索指紋
  LCD1602_Display(0xc0,"  Add     delete",0,16);  //添加和刪除指紋
  if(local_date==0)
  {
   LCD1602_Display(0x80,  " *",0,2);
   LCD1602_Display(0xc0,  "  ",0,2);
   LCD1602_Display(0xc0+8,"  ",0,2);
  }
  else if(local_date==1)
  {
   LCD1602_Display(0x80,  "  ",0,2);
   LCD1602_Display(0xc0,  " *",0,2);
   LCD1602_Display(0xc0+8,"  ",0,2);
  }
  else if(local_date==2)
  {
   LCD1602_Display(0x80,  "  ",0,2);
   LCD1602_Display(0xc0,  "  ",0,2);
   LCD1602_Display(0xc0+8," *",0,2);
  }   
  //確認(rèn)鍵
  if(KEY_OK == 0)
  {  
    while(KEY_OK == 0);//等待松開按鍵        
   switch(local_date)
   {
     case 0:  //搜索指紋      
     FPM10A_Find_Fingerprint();                        
     break;
     
     case 1:  //添加指紋
     FPM10A_Add_Fingerprint();
     break;      
     
     case 2: //清空指紋
     FPM10A_Delete_All_Fingerprint();
       break;
    }
   }
      //切換鍵
   if(KEY_DOWN == 0)
   {
     while(KEY_DOWN == 0); //等待松開按鍵   
       if(local_date<=2)
    {
     local_date++;
     if(local_date==3)
      local_date=0;      
    }  
   }      
   Delay_Ms(100); //延時判斷100MS檢測一次  
}
}

LCD函數(shù)
#include<reg52.h>
#include <intrins.h>
#include "delay.h"
#include"lcd_1602.h"
#include <intrins.h>
char local_date=0,base_date=0;//全局變量,當(dāng)前箭頭位置

/***********************************************
函數(shù)名稱:Delay_us
功    能:STC 1T單片機(jī)1us延時程序
入口參數(shù):us:延時的微秒數(shù)
返 回 值:無
備    注:內(nèi)部時鐘11.0592MHz
************************************************/
void Delayus(unsigned int us)
{
   while( us--)
    {
     _nop_();
    }            
}
/***********************************************
函數(shù)名稱:Delay_ms
功    能:STC 1T單片機(jī)1ms延時程序
入口參數(shù):ms:延時的毫秒數(shù)
返 回 值:無
備    注:示波器實測1.05ms 內(nèi)部時鐘11.0592MHz
************************************************/
void Delayms(unsigned int ms)
{
   unsigned int i;
   while( (ms--) != 0)
    {
     for(i = 0; i < 600; i++);
    }            
}
/*************************************
* 函 數(shù) 名: LCD1602_WriteCMD
* 函數(shù)功能: 向lcd1602寫指令
* 入口參數(shù): cmd:指令
* 返    回: 無
* 備    注:無
**************************************/
void LCD1602_WriteCMD(unsigned char cmd)
{
   EN=0;
   RS=0;
   RW=0;
   Delayus(10);
   EN=1;
   Delayus(10);
   DataPort=cmd;
   Delayus(10);
   EN=0;
}
/***********************************************
函數(shù)名稱:LCD1602_WriteDAT
功    能:向lcd1602寫數(shù)據(jù)
入口參數(shù):dat:數(shù)據(jù)
返 回 值:無
備    注:無
************************************************/
void LCD1602_WriteDAT(unsigned char dat)
{
   EN=0;
   RS=1;
   RW=0;
   Delayus(10);
   EN=1;
   Delayus(10);
   DataPort=dat;
   Delayus(10);
   EN=0;
}
/***********************************************
函數(shù)名稱:LCD1602_CheckBusy
功    能:檢測lcd1602忙信號
入口參數(shù):無
返 回 值:無
備    注:無
************************************************/
void LCD1602_CheckBusy(void)
{
   unsigned char temp;
DataPort=0xff;    //做輸入先置高,12c系列單片機(jī)需轉(zhuǎn)換端口模式
   while(1)
   {   
     EN=0;      
     RS=0;
     RW=1;
     Delayus(10);
     EN=1;
     Delayus(10);
     temp=DataPort;    //讀取忙通道數(shù)據(jù)
     Delayus(10);
     EN=0;
     if((temp&0x80)!=0x80)
     {   
        break;
     }
   }
}
/***********************************************
函數(shù)名稱:LCD1602_Init
功    能:LCD1602初始化
入口參數(shù):無
返 回 值:無
備    注:詳見數(shù)據(jù)手冊定義。
************************************************/
void LCD1602_Init(void)  
{
   Delayms(15);        //上電延時15ms
   LCD1602_WriteCMD(0x38); //寫顯示指令(不檢測忙信號)
   Delayms(5);
   LCD1602_WriteCMD(0x38); //寫顯示指令(不檢測忙信號)
   Delayms(5);
   LCD1602_WriteCMD(0x38); //寫顯示指令(不檢測忙信號)
   LCD1602_CheckBusy();
   LCD1602_WriteCMD(0x38); //寫顯示指令
   LCD1602_CheckBusy();
   LCD1602_WriteCMD(0x08); //顯示關(guān)閉
   LCD1602_CheckBusy();
   LCD1602_WriteCMD(0x01); //清屏
   LCD1602_CheckBusy();
   LCD1602_WriteCMD(0x06); //顯示光標(biāo)移動設(shè)置
   LCD1602_CheckBusy();
   LCD1602_WriteCMD(0x0c); //顯示開及光標(biāo)設(shè)置  
}
/***********************************************
函數(shù)名稱:LCD1602_Display
功    能:寫多字節(jié)字符
入口參數(shù):addr起始地址,pointer指針地址,index下標(biāo),num個數(shù)
返 回 值:無
備    注:無
************************************************/
void LCD1602_Display(unsigned char addr,unsigned char* pointer,unsigned char index,unsigned char num)
{
   unsigned char i;
   LCD1602_CheckBusy(); //判斷忙信號
   LCD1602_WriteCMD(addr); //寫入地址
   for(i=0;i<num;i++)  //寫入數(shù)據(jù)
   {
      LCD1602_CheckBusy();      //判斷忙信號
      LCD1602_WriteDAT(pointer[index+i]);//寫入數(shù)據(jù)     
   }
}


指紋模塊
#include<reg52.h>
#include"FPM10A.h"
#include"key.h"
#include"uart.h"
#include"lcd_1602.h"
#include"delay.h"
#include "buzz.h"
volatile unsigned char FPM10A_RECEICE_BUFFER[32];
unsigned int finger_id = 0;
//FINGERPRINT通信協(xié)議定義
code unsigned char FPM10A_Get_Device[10] ={0x01,0x00,0x07,0x13,0x00,0x00,0x00,0x00,0x00,0x1b};//口令驗證
code unsigned char FPM10A_Pack_Head[6] = {0xEF,0x01,0xFF,0xFF,0xFF,0xFF};  //協(xié)議包頭
code unsigned char FPM10A_Get_Img[6] = {0x01,0x00,0x03,0x01,0x00,0x05};    //獲得指紋圖像
code unsigned char FPM10A_Get_Templete_Count[6] ={0x01,0x00,0x03,0x1D,0x00,0x21 }; //獲得模版總數(shù)
code unsigned char FPM10A_Search[11]={0x01,0x00,0x08,0x04,0x01,0x00,0x00,0x03,0xE7,0x00,0xF8}; //搜索指紋搜索范圍0 - 999,使用BUFFER1中的特征碼搜索
code unsigned char FPM10A_Search_0_9[11]={0x01,0x00,0x08,0x04,0x01,0x00,0x00,0x00,0x13,0x00,0x21}; //搜索0-9號指紋
code unsigned char FPM10A_Img_To_Buffer1[7]={0x01,0x00,0x04,0x02,0x01,0x00,0x08}; //將圖像放入到BUFFER1
code unsigned char FPM10A_Img_To_Buffer2[7]={0x01,0x00,0x04,0x02,0x02,0x00,0x09}; //將圖像放入到BUFFER2
code unsigned char FPM10A_Reg_Model[6]={0x01,0x00,0x03,0x05,0x00,0x09}; //將BUFFER1跟BUFFER2合成特征模版
code unsigned char FPM10A_Delete_All_Model[6]={0x01,0x00,0x03,0x0d,0x00,0x11};//刪除指紋模塊里所有的模版
volatile unsigned char  FPM10A_Save_Finger[9]={0x01,0x00,0x06,0x06,0x01,0x00,0x0B,0x00,0x19};//將BUFFER1中的特征碼存放到指定的位置
//volatile:系統(tǒng)總是重新從它所在的內(nèi)存讀取數(shù)據(jù),即使它前面的指令剛剛從該處讀取過數(shù)據(jù)
/*------------------ FINGERPRINT命令字 --------------------------*/
//發(fā)送包頭
void FPM10A_Cmd_Send_Pack_Head(void)
{
int i;
for(i=0;i<6;i++) //包頭
   {
     Uart_Send_Byte(FPM10A_Pack_Head[i]);   
    }  
}
//發(fā)送指令
void FPM10A_Cmd_Check(void)
{
int i=0;
FPM10A_Cmd_Send_Pack_Head(); //發(fā)送通信協(xié)議包頭
for(i=0;i<10;i++)
  {  
  Uart_Send_Byte(FPM10A_Get_Device[i]);
   }
}
//接收反饋數(shù)據(jù)緩沖
void FPM10A_Receive_Data(unsigned char ucLength)
{
  unsigned char i;
  for (i=0;i<ucLength;i++)
     FPM10A_RECEICE_BUFFER[i] = Uart_Receive_Byte();
}
//FINGERPRINT_獲得指紋圖像命令
void FPM10A_Cmd_Get_Img(void)
{
    unsigned char i;
    FPM10A_Cmd_Send_Pack_Head(); //發(fā)送通信協(xié)議包頭
    for(i=0;i<6;i++) //發(fā)送命令 0x1d
{
       Uart_Send_Byte(FPM10A_Get_Img[i]);
}
}
//講圖像轉(zhuǎn)換成特征碼存放在Buffer1中
void FINGERPRINT_Cmd_Img_To_Buffer1(void)
{
  unsigned char i;
FPM10A_Cmd_Send_Pack_Head(); //發(fā)送通信協(xié)議包頭      
    for(i=0;i<7;i++)   //發(fā)送命令 將圖像轉(zhuǎn)換成 特征碼 存放在 CHAR_buffer1
     {
      Uart_Send_Byte(FPM10A_Img_To_Buffer1[i]);
      }
}
//將圖像轉(zhuǎn)換成特征碼存放在Buffer2中
void FINGERPRINT_Cmd_Img_To_Buffer2(void)
{
     unsigned char i;
     for(i=0;i<6;i++)    //發(fā)送包頭
  {
     Uart_Send_Byte(FPM10A_Pack_Head[i]);   
     }
     for(i=0;i<7;i++)   //發(fā)送命令 將圖像轉(zhuǎn)換成 特征碼 存放在 CHAR_buffer1
      {
       Uart_Send_Byte(FPM10A_Img_To_Buffer2[i]);
      }
}
//搜索全部用戶999枚
void FPM10A_Cmd_Search_Finger(void)
{
       unsigned char i;         
    FPM10A_Cmd_Send_Pack_Head(); //發(fā)送通信協(xié)議包頭
       for(i=0;i<11;i++)
           {
           Uart_Send_Byte(FPM10A_Search[i]);   
        }
}
void FPM10A_Cmd_Reg_Model(void)
{
       unsigned char i;   
     
    FPM10A_Cmd_Send_Pack_Head(); //發(fā)送通信協(xié)議包頭
       for(i=0;i<6;i++)
           {
           Uart_Send_Byte(FPM10A_Reg_Model[i]);   
        }

}
//刪除指紋模塊里的所有指紋模版
void FINGERPRINT_Cmd_Delete_All_Model(void)
{
     unsigned char i;   
    for(i=0;i<6;i++) //包頭
      Uart_Send_Byte(FPM10A_Pack_Head[i]);   
    for(i=0;i<6;i++) //命令合并指紋模版
    {
      Uart_Send_Byte(FPM10A_Delete_All_Model[i]);   
   }
}
//保存指紋
void FPM10A_Cmd_Save_Finger( unsigned int storeID )
{
       unsigned long temp = 0;
     unsigned char i;
       FPM10A_Save_Finger[5] =(storeID&0xFF00)>>8;
       FPM10A_Save_Finger[6] = (storeID&0x00FF);
     for(i=0;i<7;i++)   //計算校驗和
         temp = temp + FPM10A_Save_Finger[i];
     FPM10A_Save_Finger[7]=(temp & 0x00FF00) >> 8; //存放校驗數(shù)據(jù)
     FPM10A_Save_Finger[8]= temp & 0x0000FF;     
       FPM10A_Cmd_Send_Pack_Head(); //發(fā)送通信協(xié)議包頭
       for(i=0;i<9;i++)  
        Uart_Send_Byte(FPM10A_Save_Finger[i]);      //發(fā)送命令 將圖像轉(zhuǎn)換成 特征碼 存放在 CHAR_buffer1
}
//添加指紋
void FPM10A_Add_Fingerprint()
{
unsigned char id_show[]={0,0,0};
LCD1602_WriteCMD(0x01); //清屏
finger_id=0;  
while(1)
{
LCD1602_Display(0x80,"   Add  finger  ",0,16);
LCD1602_Display(0xc0,"    ID is       ",0,16);
//按返回鍵直接回到主菜單
if(KEY_CANCEL == 0)
{
   while(KEY_CANCEL==0);
   break;
}
//按切換鍵指紋iD值加1
if(KEY_DOWN == 0)
{
  while(KEY_DOWN==0);
  if(finger_id == 1000)
  {
   finger_id = 0;
  }
  else
  finger_id = finger_id + 1;
}
  //指紋iD值顯示處理
  LCD1602_WriteCMD(0xc0+10);
  LCD1602_WriteDAT(finger_id/100+48);
  LCD1602_WriteDAT(finger_id%100/10+48);
  LCD1602_WriteDAT(finger_id%100%10+48);
  //按確認(rèn)鍵開始錄入指紋信息      
  if(KEY_OK == 0)
   {
     while(KEY_OK==0);
     LCD1602_Display(0x80," Please  finger ",0,16);
     LCD1602_Display(0xc0,"                ",0,16);
   while(KEY_CANCEL == 1)
     {
     //按下返回鍵退出錄入返回fingerID調(diào)整狀態(tài)   
    if(KEY_CANCEL == 0)
     {
      while(KEY_CANCEL==0);
      break;
      }
    FPM10A_Cmd_Get_Img(); //獲得指紋圖像
    FPM10A_Receive_Data(12);
    //判斷接收到的確認(rèn)碼,等于0指紋獲取成功
    if(FPM10A_RECEICE_BUFFER[9]==0)
     {
     Delay_Ms(100);
     FINGERPRINT_Cmd_Img_To_Buffer1();
        FPM10A_Receive_Data(12);
     LCD1602_Display(0x80,"Successful entry",0,16);
     Buzz_Times(1);
     Delay_Ms(1000);
     LCD1602_Display(0x80," Please  finger ",0,16);
       LCD1602_Display(0xc0,"                ",0,16);
     while(1)
     {
      if(KEY_CANCEL == 0)
      {
       while(KEY_CANCEL==0);
       break;
      }
      FPM10A_Cmd_Get_Img(); //獲得指紋圖像
      FPM10A_Receive_Data(12);
     //判斷接收到的確認(rèn)碼,等于0指紋獲取成功
     if(FPM10A_RECEICE_BUFFER[9]==0)
     {
      Delay_Ms(200);
      LCD1602_Display(0x80,"Successful entry",0,16);
      LCD1602_Display(0xc0,"    ID is       ",0,16);
       //指紋iD值顯示處理
       LCD1602_WriteCMD(0xc0+10);
       LCD1602_WriteDAT(finger_id/100+48);
       LCD1602_WriteDAT(finger_id%100/10+48);
       LCD1602_WriteDAT(finger_id%100%10+48);
      FINGERPRINT_Cmd_Img_To_Buffer2();
        FPM10A_Receive_Data(12);
      FPM10A_Cmd_Reg_Model();//轉(zhuǎn)換成特征碼
             FPM10A_Receive_Data(12);
        FPM10A_Cmd_Save_Finger(finger_id);                           
              FPM10A_Receive_Data(12);
      Buzz_Times(1);
      Delay_Ms(1000);
      finger_id=finger_id+1;
         break;
       }
       }
      
           break;
     }
    }
//   ClrScreen(); //清空顯示屏
   }
  // Delay_Ms(500);
  }
}
//搜索指紋
void FPM10A_Find_Fingerprint()
{
unsigned int find_fingerid = 0;
unsigned char id_show[]={0,0,0};
do
{
  LCD1602_Display(0x80," Please  finger ",0,16);
  LCD1602_Display(0xc0,"                ",0,16);
  FPM10A_Cmd_Get_Img(); //獲得指紋圖像
  FPM10A_Receive_Data(12);  
  //判斷接收到的確認(rèn)碼,等于0指紋獲取成功
  if(FPM10A_RECEICE_BUFFER[9]==0)
  {   
   Delay_Ms(100);
   FINGERPRINT_Cmd_Img_To_Buffer1();
   FPM10A_Receive_Data(12);  
   FPM10A_Cmd_Search_Finger();
   FPM10A_Receive_Data(16);   
   if(FPM10A_RECEICE_BUFFER[9] == 0) //搜索到  
   {
    LCD1602_Display(0x80," Search success ",0,16);
    LCD1602_Display(0xc0,"    ID is       ",0,16);
    Buzz_Times(1);     
    //拼接指紋ID數(shù)
    find_fingerid = FPM10A_RECEICE_BUFFER[10]*256 + FPM10A_RECEICE_BUFFER[11];     
     //指紋iD值顯示處理
     LCD1602_WriteCMD(0xc0+10);
     LCD1602_WriteDAT(find_fingerid/100+48);
     LCD1602_WriteDAT(find_fingerid%100/10+48);
     LCD1602_WriteDAT(find_fingerid%100%10+48);      
    Delay_Ms(2000);   
      }
    else //沒有找到
    {
     LCD1602_Display(0x80," Search  failed ",0,16);
     LCD1602_Display(0xc0,"                ",0,16);
      Buzz_Times(3);
    }
   }  
  }while(KEY_CANCEL == 1);
}
//刪除所有存貯的指紋庫
void FPM10A_Delete_All_Fingerprint()
{
  unsigned char i=0;
    LCD1602_Display(0x80,"   empty all    ",0,16);
    LCD1602_Display(0xc0,"   Yes or no ?  ",0,16);
  do
   {
   if(KEY_OK==0)
   {
    while(KEY_OK==0);
    LCD1602_Display(0x80,"   emptying     ",0,16);
    LCD1602_Display(0xc0,"                ",0,16);
    Delay_Ms(300);
    LCD1602_WriteCMD(0xc0);
    for(i=0;i<16;i++)
     {
     LCD1602_WriteDAT(42);
     Delay_Ms(100);
     }
    FINGERPRINT_Cmd_Delete_All_Model();
     FPM10A_Receive_Data(12);
    LCD1602_Display(0x80,"   All empty    ",0,16);
    LCD1602_Display(0xc0,"                ",0,16);
    Buzz_Times(3);
    break;
   }
   }while(KEY_CANCEL==1);
}
void Device_Check(void)
{
  unsigned char i=0;
  FPM10A_RECEICE_BUFFER[9]=1;               //串口數(shù)組第九位可判斷是否通信正常
  LCD1602_Display(0xc0,"Loading",0,7);            //設(shè)備加載中界面         
  for(i=0;i<8;i++)                 //進(jìn)度條式更新,看起來美觀
  {
   LCD1602_WriteDAT(42);                        //42對應(yīng)ASIC碼的 *
   Delay_Ms(200);                 //控制進(jìn)度條速度
  }         
  LCD1602_Display(0xc0,"Docking  failure",0,16);      //液晶先顯示對接失敗,如果指紋模塊插對的話會將其覆蓋
  FPM10A_Cmd_Check();         //單片機(jī)向指紋模塊發(fā)送校對命令
  FPM10A_Receive_Data(12);       //將串口接收到的數(shù)據(jù)轉(zhuǎn)存
   if(FPM10A_RECEICE_BUFFER[9] == 0)     //判斷數(shù)據(jù)低第9位是否接收到0
  {
   LCD1602_Display(0xc0,"Docking  success",0,16); //符合成功條件則顯示對接成功
  }
}

初始化函數(shù)(單片機(jī)與指紋模塊通信失敗可以看一下)
#include"uart.h"
#include<reg52.h>
void Uart_Init(void)
{
   
    TMOD&=0x0f;   //T1方式2,用于UART波特率
TMOD|=0X20;
    TH1=0xFD;
    TL1=0xFD; //UART波特率設(shè)置:FDFD,9600;FFFF,57600
ET1 = 0;
    TR1=1;  //允許T1計數(shù)
   SCON|=0x50;   //UART方式1:8位UART;   REN=1:允許接收
    PCON=0x00;   //SMOD=0:波特率不加倍
}

void Uart_Send_Byte(unsigned char c)//UART Send a byte
{
SBUF = c;
while(!TI);  //發(fā)送完為1
TI = 0;
}
unsigned char Uart_Receive_Byte()//UART Receive a byteg
{
unsigned char dat;
while(!RI);  //接收完為1
RI = 0;
dat = SBUF;
return (dat);
}



代碼.zip

6.06 KB, 下載次數(shù): 27, 下載積分: 黑幣 -5

全部代碼

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

使用道具 舉報

沙發(fā)
ID:812588 發(fā)表于 2021-7-12 20:52 | 只看該作者
口令驗證出問題了嗎
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 精精国产xxxx视频在线播放 | www.色.com | 久热9 | 成人精品一区二区三区中文字幕 | 一级毛片在线播放 | 中文字幕在线一区二区三区 | 波多野结衣av中文字幕 | www.成人在线视频 | 久久精品欧美一区二区三区不卡 | 免费一区在线观看 | 精品欧美乱码久久久久久1区2区 | 欧美一级在线 | 国产成人精品一区二区三区在线 | 日日夜夜av | 久久91| 高清视频一区二区三区 | 四虎影院一区二区 | 中文字幕成人 | 中文字幕一区二区三区四区五区 | 欧美精品在线免费 | 亚洲欧美在线一区 | 久久久久成人精品免费播放动漫 | 日韩不卡一区二区三区 | 在线免费国产视频 | 欧美一级久久 | 波多野结衣在线观看一区二区三区 | 久草视频观看 | 欧美激情精品久久久久久免费 | 日韩一二三区视频 | 国产一区二区麻豆 | 国产精品免费看 | 中文一区| 九色国产 | 欧美一区二区三区视频在线 | 日韩在线视频免费观看 | 国产91丝袜在线熟 | 成人精品国产一区二区4080 | 嫩草黄色影院 | 国产成人免费一区二区60岁 | 999精品视频| 日日淫|