wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

單片機密碼鎖課程設計

[復制鏈接]
跳轉到指定樓層
樓主
ID:212816 發表于 2017-6-20 09:05 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

一、基本組成:



    單片機小系統+4*4矩陣鍵盤+1602顯示+DC電機

    基本電路:


鍵盤和和顯示

鍵盤接P1口,液晶的電源的開、關通過P2.7口控制


電機(控制口P2.4)

      小系統就不貼上來了吧。。。

二、基本功能描述:

1.驗證密碼、修改密碼

a)鎖的初始密碼是123456(密碼最長為10位,最短為1位)。



2.恢復初始密碼

a)系統可以恢復初始密碼,否則一旦忘記密碼而又不能恢復初始密碼,該鎖就永遠打不開。但是又不能讓用戶自行修改密碼,否則其他人也可以恢復該初始密碼,使得鎖的安全性大大下降。



3.使系統進入低功耗狀態

a)在實際使用中,鎖只有在開門時才被使用。因而在大多數的時間里,應該讓鎖進入休眠狀態、以降低功耗,這使系統進入掉電狀態,可以大大降低系統功耗。

b)同時將LCD背光燈關閉



4.DC電機模擬開鎖動作。

a)DC電機啟動時解除開鎖把手的鎖定,允許通過把手開鎖。DC電機不直接開鎖,使得DC電機的功率不用太大,系統的組成和維護將變得簡單,功耗也降了下來。



三、密碼鎖特點說明:

1.0 輸入將被以字符形式輸入,最長為10位。

    超過10位時系統將自動截取前10位、但不作密碼長度溢出提示。

2.0 開鎖10秒后不允許更改密碼、并提示修改超時_進入初始態,需要重新輸入密碼方可再次修改密碼。

3.0 系統未使用存儲器存儲密碼故掉電后密碼自動恢復為初始密碼。

4.0 若2分鐘內無任何操作,系統自動進入省電模式運行,同時關閉液晶顯示,以節省電力。

5.0 輸入密碼正確后、電機允許開鎖時間為5秒, 5秒后需要再次輸入密碼才可以再次開鎖。

6.0 修改密碼鍵和恢復初始密碼鍵最好置于室內。



這是Proteus仿真結果:

輸入密碼123456:



顯示結果:



密碼正確時電機啟動、電機將持續5秒:

這是鍵盤:


開鎖鍵是接INT0引腳接的一個獨立按鍵,用于喚醒CPU工作、進而開啟整個系統



密碼正確時可以修改密碼:



再次輸入新密碼,兩次輸入相同時、更改有效


當然你可以隨時放棄修改密碼



改進:

1.0 密碼鎖的秘密沒有存儲,因而在掉電時最新的密碼將丟失,重新上電后密碼將恢復成為初始密碼。這使得每次換電池或停電后密碼都得恢復一次,給使用帶來不便,但是為了要存儲一個最多只有十幾字節的密碼就增加一個存儲器、似乎不是很值,最好是所選的單片機自帶這樣的存儲器(容量很小、如32B)。當然如果電源來自市電的話,就不會經常掉電了。

2.0 系統的最好再增加電源監測的設計,在電池電力不夠時發出提示。這時還可以增加備用電池,這樣就可以保證系統不會掉電。但是這些都要依賴于成本。

3.0 液晶的顯示最好采用中文。通過對1602的CGRAM的操作可以實現中文顯示,使得用戶界面更好。

主函數:



確認鍵操作:



確認函數_ confirm()操作:

0_將 '\0' 置于輸入table_input[]結尾

(table_input[]的長度返回值在length里面)

根據操作標識選擇任務:

1_確認密碼:判定輸入密碼正確與否

2_修改密碼:確認第一次輸入并保存

            要求第二次輸入

                     比較兩次輸入是否相同

根據比較結果選擇任務:

修改失敗,進入輸入密碼態

修改成功,將輸入復制到table_password[]



確認函數_confirm()相關標識位目錄:

flag_display;//根據其值可以確定顯示信息

flag_confirm;//確認鍵根據此標識判定任務,默認為0_即為確定密碼狀態

flag_allow;//允許修改密碼標識,在密碼比較正確時置1

flag_amend;//第一/二次輸入新密碼標識

flag_M;//允許電機開鎖標識



相關變量

sbit M=P3^6;//電機控制口

flag_confirm;//操作任務標識位

flag_compare;//比較輸入與密碼|相等時返回1,否則返回0

                        static flag_amend;//修改密碼時的標識

第一次輸入前=1,輸入后置2

第二次輸入前=2,輸入后置0

          flag_display=0;//確認鍵操作的返回值根據返回值可以確定顯示信息

        flag_allow;//允許改密碼標識,在密碼比較正確時置1,不正確時置0

             process_char()函數::_M;//DC電機控制口

  process_char()函數::_length;//跟蹤記錄輸入table_input[11]的字符長度( <=10 )



lcd_display()函數中標識位flag_display的值與意義:

=0:不顯示|不刷新顯示

=1:密碼錯誤

=2:密碼正確

=3:請輸入新密碼

=4:請再次輸入新密碼

=5:密碼修改成功

=6:密碼修改失敗

=7:顯示輸入密碼狀態_The password!

=8:放棄修改密碼

=9:已開鎖



流圖不怎么清晰、不過下一篇就是程序了,可以從程序推出流圖。







程序比較多,所以寫成了幾個文件,同時應用了相當多的標識位來進行信號傳遞。



我覺得邊看程序邊畫它的流程圖會更好地幫助我們讀程序。



1.0  main.c文件







#include<reg52.h>

#include<string.h>

#include"mydefine_2.h"



static void delay(unsigned int N)//N ms延時_12MHz/準確性高

{

  unsigned int i=0,j=0;

  for(i=1;i<=N;i++)

  for(j=1;j<=355;j++) ;

}



void clock()

{

  key_clock=0;

  delay(15);

  key_clock=1;

}



void init()

{

  key_LCD=0;

  init_1602();



  TMOD=0x01;

  TH0=0x3C;//=(65535-5000)/256

  TL0=0xAF;//(65535-5000)%256

  EA=1;

  ET0=1;

  TR0=0;



  EA=1;//外部中斷0喚醒CPU(空閑方式)

  EX0=1;

  IT0=1;

  command(0x80);

  lcd_display(7);

}



void main()

{

  init();



  while(1)

  {

   temp=keyboard_matrix();//掃描輸入

   if(temp)//有按鍵輸入信息

   {

    clock();//按鍵聲

    TR0=0;//關閉計時

    timer=0;

    receive(temp);//輸入的字符串長度為length( <= 10)

    if(i!=length)//輸入時顯示"*"

    {

     command(0xC0+length);//為顯示密碼輸入設定位置

     display('*');

     i=length;

  }

  switch(temp)//根據按鍵號調用任務

  {

       //修改密碼

    case 12: if((flag_allow) && (flag_amend==0))//輸入密碼正確的條件下可以更改

             {

               table_input[0]='\0';

               flag_display=3;//請輸入新密碼

               flag_confirm=1;//確認鍵進入確認修改密碼功能

               flag_amend=1;//每次按下修改鍵時都是第一次輸入新密碼

               length=0;    //重按修改鍵時也是第一次輸入新密碼

               i=0;

             }

            else

            {

              flag_confirm=0;//恢復初始態

              flag_amend=0;

              lcd_display(1);//密碼不正確

              delay(500);

              flag_display=7;

              length=0;

              i=0;

           }

           break;

    case 11: //取消

       command(0xC0+length);//擦出顯示

       display(' ');//顯示后光標_顯示地址又加了1

       command(0xC0+length);//重置光標_顯示地址|實為將光標拉回來

       i=0;

       if(length > 0)

       {

         length--;//input[]位置后退一位

       }

       break;

    case 10: confirm();//確定      

             i=0;

             break;

    case 13: //修改密碼的過程中取消修改密碼|將系統置于初始態即可

       if((flag_amend==1) || (flag_amend==2))

       {

          flag_amend=0;

          flag_confirm=0;

          lcd_display(8);

          delay(500);

          flag_display=7;

          length=0;

          i=0;

       }

       break;

   }

   lcd_display(flag_display);

  }

  else

  {

    TR0=1;//開始計時等待

  }

  DC_Moter();

  resume_password();

  if(flag_clear)//恢復密碼和開鎖鍵_外部中斷有效時重新計時

  {

    flag_clear=0;

    timer=0;

  }

  if(timer==100)//10秒后不允許更改密碼

  {

    flag_allow=0;

    flag_amend=0;

    flag_confirm=0;

    length=0;

    i=0;

    lcd_display(7);//顯示初始態,以提示修改超時

  }

  if(timer==1200)//≈2分鐘后休眠|空閑方式

  {

    TR0=0;

    timer=0;

    clear_system();//恢復初始態

    i=0;

    key_clock=0;

    delay(250);

    key_clock=1;

    PCON|=0x01;

    lcd_display(7);//喚醒CPU后顯示初始態

  }

}

}



void int0() interrupt 0

{

  key_LCD=0;//開液晶電源

  key_clock=0;

  delay(250);

  key_clock=1;

  flag_clear=1;

}



void Timer0() interrupt 1 //50ms

{

  TH0=0x3C;//(65535-50000)/256

  TL0=0xAF;//(65535-50000)%256

  timer++;

}







2.0  負責實現具體操作的 process_char.c 文件







#include<reg52.h>

#include<string.h>

#include"mydefine.h"



sbit key_self=P2^1;//獨立按鍵,用于恢復初始密碼

sbit key_LED=P2^0;

sbit key_M=P2^4;//DC電機控制口

sbit key_LCD=P2^7;//液晶電源控制口



extern bit flag_clear;//恢復密碼和開鎖鍵_外部中斷的有效標識



extern unsigned int timer;//定時器0計數時段標記_50ms一次定時中斷

extern unsigned char length=0;//跟蹤記錄輸入table_input[11]的字符長度( <=10 )

extern unsigned char flag_display=0;//根據其值可以確定顯示信息

extern unsigned char flag_confirm=0;//確認鍵根據此標識判定任務,默認為0_即為確定密碼狀態

extern unsigned char flag_allow=0;//允許修改密碼標識,在密碼比較正確時置1

extern unsigned char flag_amend=0;//第一/二次輸入新密碼標識

unsigned char flag_M=0;//允許電機開鎖標識



extern void command(unsigned char command);

extern void display(unsigned char date);

//向I2C地址為address處寫入數據date

extern void write_I2C(unsigned char address,unsigned char date);

//讀出I2C地址為address處的數據

extern unsigned char read_I2C(unsigned char address);



static void delay(unsigned int N)//N ms延時/準確性高

{

  unsigned int i=0,j=0;

  for(i=1;i<=N;i++)

  for(j=1;j<=355;j++) ;

}



//休眠前清除table_input中的值

extern void clear_system()

{

table_input[0]='\0';//恢復初始態

length=0;

flag_allow=0;

flag_confirm=0;

flag_amend=0;

flag_clear=0;

key_LCD=1;//關液晶電源

}



//接收鍵盤輸入|以字符形式存入table_input[11]

extern void receive(unsigned char temp)

{

//按鍵在松手時讀取按鍵號,故不會重復讀取按鍵值



if(temp && length<=9)//如此,則無按鍵時執行效率高

{

  switch(temp)

  {

   case 1:

   case 2:

   case 3:

   case 4:

   case 5:

   case 6:

   case 7:

   case 8:

   case 9: table_input[length++]=temp+48;//以字符形式存入table_input[11]

     break;

   case 14: table_input[length++]=48;//字符0

  }

}

}



//根據任務選擇顯示信息

extern void lcd_display(unsigned char temp)

{

unsigned char i=0,*p=NULL;

if(temp)

{

  switch(temp)//選擇顯示信息

  {

   case 1: p=table_error;//密碼不正確

           break;

   case 2: p=table_pass;//密碼正確

           break;

   case 3: p=table_new;//請輸入新密碼

           break;

   case 4: p=table_again;//請再次輸入新密碼

           break;

   case 5: p=table_changed;//密碼修改成功

           break;

   case 6: p=table_fail;//密碼修改失敗

           break;

   case 7: p=table_enter;//顯示輸入密碼:The password!

           break;

   case 8: p=table_abandon;//放棄修改密碼

           break;

   case 9: p=table_close;//鎖閉

           break;

   case 10: p=table_resume;//鎖閉

            break;

  }

  command(0x01);

  delay(1);

  command(0x80);

  while(*p!='\0')

  {

    display(*(p++));

  }

  flag_display=0;//顯示后清0,避免重復顯示

}

}



//確認

extern void confirm(void)

{

unsigned char flag_compare=0;//用于記錄比較輸入與密碼的結果|相等時返回1,否則返回0

unsigned char flag_compare_2=0;//用于記錄對兩次輸入的新密碼的比較結果|相等時返回1,否則返回0

unsigned char i=0;



if(length > 0)//輸入不為空

{

   table_input[length]='\0';

   length=0;//輸入字符串長度清0



  if(flag_confirm)//修改密碼

  {

   switch(flag_amend)

   {

    case 1: strcpy(table_newpassword,table_input);//第一次輸入新密碼

            table_input[1]='\0';//避免第一次輸入的內容在放棄修改時再次被利用

            flag_amend=2;

            flag_display=4;//請再次輸入密碼

            break;

    case 2: flag_compare_2=strcmp(table_input,table_newpassword);//第二次輸入新密碼

            flag_amend=0;//清0,允許再次修改

            flag_confirm=0;//進入初始之確認密碼狀態

      if(!flag_compare_2)//兩次輸入相同==0

      {

       strcpy(table_password,table_input);

       table_input[1]='\0';//避免修改完成后再次被利用,造成重復修改,同時避免剛修改了就是pass狀態

       lcd_display(5);//修改成功

       delay(500);

       flag_display=7;

      }

      else

      {

        lcd_display(6);//修改失敗

        delay(500);

        flag_display=7;

      }

      break;

   }

  }

  else//驗證密碼

  {

   flag_compare=strcmp(table_input,table_password);

   if(!flag_compare)//密碼正確==0

   {

     flag_allow=1;//允許修改密碼

     flag_M=1;//允許開鎖

     flag_display=2;//密碼正確信息:Pass!

     table_input[1]='\0';//改變輸入,使不致出亂

   }

   else//密碼錯誤

   {

     flag_allow=0;//不允許修改密碼

     lcd_display(1);//密碼錯誤信息:Error!

     delay(500);

     flag_display=7;

   }

  }

}

}



//電機控制

extern void DC_Moter()

{

if(flag_M)//允許開鎖

{

  flag_M=0;

  key_M=0;//開鎖

  key_LED=0;

  delay(1250);

  key_M=1;

  key_LED=1;

  timer=0;

  lcd_display(7);//進入初始態

}

}





//恢復初始密碼

extern void resume_password()

{

if(!key_self)//==0

{

  delay(3);

  if(!key_self)//==0

  {

    while(!key_self) ;//==0

    strcpy(table_password,table_original);

    flag_clear=1;

    lcd_display(10);

    delay(500);

    lcd_display(7);

  }

}

}







  



確認函數_ confirm()操作:



0_將 '\0' 置于輸入table_input[]結尾



(table_input[]的長度返回值在length里面)



根據操作標識選擇任務:



1_確認密碼:判定輸入密碼正確與否



2_修改密碼:確認第一次輸入并保存



            要求第二次輸入



                     比較兩次輸入是否相同



根據比較結果選擇任務:



修改失敗,進入輸入密碼態



修改成功,將輸入復制到table_password[]







確認函數_confirm()相關標識位目錄:



flag_display;//根據其值可以確定顯示信息



flag_confirm;//確認鍵根據此標識判定任務,默認為0_即為確定密碼狀態



flag_allow;//允許修改密碼標識,在密碼比較正確時置1



flag_amend;//第一/二次輸入新密碼標識



flag_M;//允許電機開鎖標識







相關變量



sbit M=P3^6;//電機控制口



flag_confirm;//操作任務標識位



flag_compare;//比較輸入與密碼|相等時返回1,否則返回0



                        static flag_amend;//修改密碼時的標識



第一次輸入前=1,輸入后置2



第二次輸入前=2,輸入后置0



          flag_display=0;//確認鍵操作的返回值根據返回值可以確定顯示信息



        flag_allow;//允許改密碼標識,在密碼比較正確時置1,不正確時置0



            process_char()函數::_M;//DC電機控制口



process_char()函數::_length;//跟蹤記錄輸入table_input[11]的字符長度( <=10 )







lcd_display()函數中標識位flag_display的值與意義:



=0:不顯示|不刷新顯示



=1:密碼錯誤



=2:密碼正確



=3:請輸入新密碼



=4:請再次輸入新密碼



=5:密碼修改成功



=6:密碼修改失敗



=7:顯示輸入密碼狀態_The password!



=8:放棄修改密碼



=9:已開鎖







3.0  定義各個數組的頭文件mydefine.h







extern unsigned char table_input[11]={0};  //接收鍵盤輸入

unsigned char table_password[11]="123456";  //密文

unsigned char table_newpassword[11]="456";  //接收新密碼



unsigned char code table_original[11]="123456"; //初始密碼



//顯示信息

unsigned char code table_pass[]="Pass!";  //成功進入

unsigned char code table_error[]="Operate Error!";  //密碼錯誤信息

unsigned char code table_enter[]="The password:";  //輸入密碼

unsigned char code table_new[]="New password:";  //輸入新密碼

unsigned char code table_again[]="Enter again:";  //再次輸入新密碼

unsigned char code table_changed[]="Changed!";  //密碼修改成功

unsigned char code table_fail[]="Fail changce!";  //密碼修改失敗

unsigned char code table_abandon[]="Abandon changce!";//放棄修改密碼

unsigned char code table_close[]="Locked!";//鎖閉

unsigned char code table_resume[]="Resumed!";//恢復初始密碼







4.0  頭文件mydefine_2.h



     定義了各個外部文件向主函數用到的操作函數和外部變量







#ifndef _mydefine_2_h_

#define _mydefine_2_h_







sbit key_LED=P2^0;

sbit key_clock=P3^3;//蜂鳴器

sbit key_LCD=P2^7;//液晶電源控制口



extern bit flag_clear=0;//恢復密碼和開鎖鍵_外部中斷的有效標識

extern unsigned int timer=0;//定時器0計數時段標記_50ms一次定時中斷

static unsigned char i=0;//顯示*用變量

unsigned char temp=0;//用于接收鍵盤輸入(按鍵在松手時讀取按鍵號)



extern unsigned int table_input[11];//接收輸入

extern unsigned char flag_allow;//允許改密碼標識,在密碼比較正確時置1

extern unsigned char flag_confirm;//確認鍵根據此標識判定任務,默認為0_即為確定密碼狀態

extern unsigned char flag_display;//確認鍵操作的返回值,根據返回值可以確定顯示信息

extern unsigned char flag_amend;//第一/二次輸入新密碼標識

extern unsigned char length;//輸入input的字符長度(length <= 16)



//1602液晶:extern_1602.c *****************************************************************



extern void init_1602();

extern void command(unsigned char command);

extern void display(unsigned char date);





//鍵盤:extern_keyboard_no_T0_2.c *********************************************************



//矩陣鍵盤.無按鍵動作時其返回值num_key=0,否則返回按鍵號num_key

extern unsigned char keyboard_matrix();//(在松手時讀取按鍵號****檢測高四位)





//密碼處理:process_char.c ****************************************************************



//電機控制

extern void DC_Moter();

//接收鍵盤輸入|以bit形式存入input__返回值為輸入的字符串長度length(length <= 10)

extern void receive(unsigned char temp);//涉及文件間變量length

//確認按鍵操作

extern void confirm(void);//涉及跨文件調用的變量flag_confirm,flag_allow,flag_amend

//根據任務選擇顯示信息

extern void lcd_display(unsigned char flag_display);//涉及跨文件調用的變量flag_display

extern void clear_system();//恢復初始態

extern void resume_password();//恢復初始密碼



//****************************************************************************************







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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
色鬼7777久久| 亚洲精品视频大全| 亚洲色图图片区| 四色永久网址| 精品成人影院| 日韩欧美在线第一页| 激情小说综合网| 日韩人妻精品中文字幕| 老司机精品影院| 欧美另类专区| 欧美videos大乳护士334| 免费人成自慰网站| 2019年中文字幕| 99精品在免费线中文字幕网站一区 | 久久婷婷五月综合| 少妇高潮露脸国语对白| 国产精品久久久久9999高清| 国产一区二区欧美日韩| 高清无码视频直接看| 懂色av成人一区二区三区| 日日干天天干| 综合在线视频| 亚洲欧洲国产一区| 女同性αv亚洲女同志| 国产.com| 日本成人在线一区| 亚洲高清色综合| 中文字幕 91| xfplay每日更新av资源在线| 国内成人在线| 北条麻妃在线一区二区| 久久福利小视频| 在线观看的av网站| 影音先锋一区| 在线精品国产欧美| 杨幂毛片午夜性生毛片| 中文字幕久热精品视频免费| 日本成人a网站| 欧美一区二区三区在线看| 日韩欧美电影一区二区| 一级片中文字幕| 中文字幕在线免费| 91在线视频免费观看| 91精品视频在线| 欧美人与禽zoz0善交| 国产精品久久久久永久免费看| 国产日韩欧美一区在线| 美女精品久久久| 永久免费av无码网站性色av| 97超碰国产一区二区三区| aaa亚洲精品一二三区| 国产69久久精品成人看| 欧美人妻一区二区| 国模私拍一区二区国模曼安| 亚洲国产精品影院| 久久久久99精品成人片| 清清草免费视频| 国产精品五区| 欧美中文字幕精品| 中文字幕免费观看| 精品国产不卡一区二区| 91精品国模一区二区三区| 国产精品区在线| 亚洲精选av在线| 丁香六月久久综合狠狠色| 亚洲最大av网| 成人免费一级片| 免费一级欧美在线大片| 日韩视频免费观看高清完整版 | 欧美激情1区2区3区| 一区二区三区在线视频免费观看| 91免费福利视频| 国产巨乳在线观看| 欧美午夜18电影| 亚洲欧美日韩区| 麻豆网站免费观看| 天堂91在线| 国产欧美日韩在线看| 婷婷五月色综合| 99re这里有精品| 天堂成人免费av电影一区| 久久精品一偷一偷国产| 影音先锋人妻啪啪av资源网站| 男女污视频在线观看| 中文字幕欧美三区| 国产一二三四五| www日本黄色| 国产精品自在在线| 26uuu亚洲国产精品| 欧产日产国产69| 成人午夜大片| 中文字幕日韩在线观看| www.av视频| 四虎国产精品永久在线国在线 | 国产xxxxxx| 欧美日韩中文一区二区| 久久精品一区中文字幕| 成年免费在线观看| 911亚洲精品| 在线播放亚洲激情| 欧美又粗又大又长| 青青国产精品| 精品中文字幕久久久久久| 国产精品酒店视频| 欧美aaa视频| 欧美日韩国产黄| 天天综合网久久| 国产原创av在线| 亚洲一区二区在线免费看| 国产自偷自偷免费一区 | 亚洲精品一线二线三线| 香蕉久久久久久久| 素人啪啪色综合| 亚洲精品久久久久久下一站| 男人晚上看的视频| 亚洲免费资源| 中文字幕欧美在线| 亚洲中文一区二区| 色综合色综合| 国产精品极品尤物在线观看| 免费av一级片| 午夜av不卡| 欧美一级高清大全免费观看| 超碰97av在线| www.成人| 久久视频在线观看免费| 中文在线免费观看| 亚洲成人一区| 欧美激情一区二区三级高清视频| 午夜久久久久久久久久影院| 黑丝美女一区二区| 欧美一区二区三区……| 空姐吹箫视频大全| 亚洲欧美网站| 噜噜噜噜噜久久久久久91| eeuss影院第1页在线| 91丝袜美腿高跟国产极品老师| 玖玖精品在线视频| 中文在线三区| 亚洲二区视频在线| 国产伦精品一区三区精东| 日韩伦理在线| 日韩电影在线观看中文字幕 | 日韩av一区二区三区在线观看| 美女欧美视频在线观看免费| 三级在线观看视频| 天天久久综合| 久久精品午夜一区二区福利| 亚洲欧美色图区| 国产精品一区免费在线观看| 精品无码av无码免费专区| 免费国产在线视频| 欧美图片一区二区三区| www中文在线| 日韩三级视频| 国产高清在线不卡| 桃花网日韩影视在线观看视频| 经典三级在线一区| 国产日韩精品久久| 变态黄色小视频网站| 欧美激情一区二区三区四区| 中文字幕 日韩 欧美| 97人人在线视频| 亚洲欧洲日产国产网站| 在线观看视频二区| 香蕉亚洲视频| 亚洲欧洲免费无码| 日色在线视频| 欧美日韩精品三区| 久久国产精品波多野结衣av| 欧美精品乱码| 亚洲第一精品福利| 国产精品美女毛片真酒店| 日韩在线理论| 国产精品v欧美精品∨日韩| 一二三四在线观看视频韩国| 国产精品影视网| 日韩av在线播放不卡| a视频免费看| 伊人色综合久久天天| 香港三级日本三级| 一区中文字幕电影| 国产成人精品午夜| 91av福利| 国产精品久久久爽爽爽麻豆色哟哟 | 成人免费视频国产在线观看| 久久国产亚洲精品无码| 污影院在线观看| 欧美日韩成人一区| 欧美成人aaaaⅴ片在线看| 欧美在线91| 色乱码一区二区三在线看| 国产一区二区影视| 精品国产伦一区二区三区免费| 久久久精品毛片| 天使萌一区二区三区免费观看| 影音先锋男人的网站| 欧美日本高清| 国产一区二区三区三区在线观看| 亚洲国产精品18久久久久久| 亚洲欧美卡通另类91av| 香蕉视频在线网址| 国产黄色在线观看| 日韩中文字幕免费| 天堂中文www在线| 久久久美女毛片| www.超碰com| 欧美日韩在线精品一区二区三区激情综合| 久久久99免费视频| 久久精品亚洲牛牛影视| 17c精品麻豆一区二区免费| 美女脱光内衣内裤| 色小子综合网| 亚洲一区二区在线看| 欧美69xxxx| 日韩中文字幕网站| 国产美女极度色诱视频www| 亚洲精品中文字幕乱码三区| 黑人操日本美女| 国内一区二区三区| 国内少妇毛片视频| 免费福利视频一区二区三区| 91大神在线播放精品| 成年黄网站在线观看免费| 国产精品色在线| 欧美色图亚洲激情| 国产精品国产| 超碰在线观看97| 暖暖视频在线免费观看| 亚洲欧美中文字幕| 欧美日本黄色片| 一区二区国产视频| 精品一级少妇久久久久久久| 久久婷婷丁香| 免费男同深夜夜行网站| 猫咪成人官网| 欧美日韩卡一卡二| 99久久99久久久精品棕色圆| 97国产一区二区| 无码人妻精品一区二区中文| 亚洲香蕉av| 9色porny| 亚洲成人高清| 国产成人精品福利一区二区三区 | 国产乱码精品一区二区三区五月婷 | 日本在线观看一区二区| 成人免费看片| 91国语精品自产拍在线观看性色 | 亚洲激情中文1区| 免费在线一级片| 免费黄网站欧美| 日本一二三四区视频| 欧美理论视频| 亚洲色婷婷久久精品av蜜桃| japanese23hdxxxx日韩| 国产欧美精品日韩| 九一国产在线| 精品中文字幕乱| jizzjizzjizz亚洲女| 精品国免费一区二区三区| 中文字字幕一区二区三区四区五区| 亚洲精品免费播放| 国产超碰人人爽人人做人人爱| 国产精品亚洲成人| 中文幕无线码中文字蜜桃| 亚洲福利免费| 亚洲精品乱码久久久久久动漫| av在线不卡免费观看| 大胆欧美熟妇xx| 亚洲精品tv| 国产在线一区二区三区四区| 在线观看操人| 国产精品免费观看在线| 电影av在线| 91超碰caoporn97人人| 美女黄视频在线播放| 日韩中文在线中文网在线观看 | 日韩成人a**站| 黄色片网址在线观看| 丁香婷婷成人| 日韩视频在线免费播放| 99久热在线精品视频观看| 免费h精品视频在线播放| 亚洲最大网站| 国产午夜精品在线| 是的av在线| 国产精品久久久对白| 四虎精品在永久在线观看| 久久精品99久久香蕉国产色戒| eeuss免费天堂影院| 亚洲第一精品夜夜躁人人爽 | 国产 福利 在线| 日韩高清一级| 99久久久精品视频| 久久人人爽人人爽人人片av不| 欧美三级午夜理伦三级老人| 亚洲开心激情| 免费在线精品视频| 成人动态视频| 国产成人永久免费视频| 欧美做受69| 日韩av黄色网址| 欧美经典影片视频网站| 亚洲日本japanese丝袜| 精品美女一区| 成人a免费视频| 四虎成人免费在线| 亚洲**2019国产| 国产黄在线播放| 国产91色在线|| 国产黄a三级三级三级av在线看| 成人写真视频福利网| 午夜在线激情影院| 亚洲精品第一页| 看全色黄大色黄大片免责看的| 日韩精品久久久久久久玫瑰园| 菠萝蜜视频网址| 色偷偷91综合久久噜噜| 日本在线中文电影| 欧美激情在线一区| 国产在线观看网站| 国产美女精品免费电影| 超级碰碰不卡在线视频| 国产精品久久亚洲| 久久久精品一区二区毛片免费看| 亚洲免费精品视频| 欧美亚洲大陆| 欧美在线观看成人| 91精品观看| 波多野结衣先锋影音| 另类欧美日韩国产在线| 欧美xxxx日本和非洲| 亚洲尤物精选| 综合 欧美 亚洲日本| 99久久精品一区二区| 成人h动漫精品一区二区下载| 亚洲精品视频观看| 中国人xxxxx69免费视频| 欧美一区二区三区人| jizz.www| 久久久久久尹人网香蕉| 亚洲奶水xxxx哺乳期| 欧美大香线蕉线伊人久久| 亚洲3区在线| 亚洲中文字幕无码不卡电影| 欧美视频二区| 韩国女同性做爰三级| 99热这里都是精品| 在线播放一级片| 日本精品一区二区三区高清 | 欧美国产91| 久久久国产精品无码| 国产成人在线观看| 69xxxx国产| 91福利资源站| 国内拍拍自拍视频在线观看| 美女福利精品视频| 在线观看操人| 一区二区成人国产精品| 操欧美老女人| 亚洲av成人片色在线观看高潮| 成人午夜视频在线| 又骚又黄的视频| 欧美日本一区二区在线观看| 成人xxx免费视频播放| 97在线精品国自产拍中文| 德国一级在线视频| 国产精品高潮呻吟久久av无限| 欧美极度另类| 一二三四视频社区在线| 99国产精品| 久久精品国产亚洲av无码娇色| 一区二区三区精品在线| 精品国语对白精品自拍视| www.精品av.com| 成人免费高清| 永久免费在线看片视频| 一区二区中文字| 99热这里只有精品4| 中文字幕亚洲在| 欧美性xxxxx极品视频| 中文字幕精品国产| h片在线播放| eeuss中文| 亚洲黄色视屏| 亚洲国产精品成人综合久久久| 不卡视频在线观看| 亚洲精品成人电影| 日韩精品中文字幕久久臀| 国内精品在线视频| 欧美精品一区二区三区四区五区| 激情综合网五月| av黄色免费网站| 亚洲视频你懂的| 香蕉视频黄在线观看| 亚洲一品av免费观看| 黄色网页在线免费看| 一区二区欧美日韩| 东京一区二区| 国产极品在线视频|