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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

c51單片機電子密碼鎖六位改為八位,并能實現功能。急求助;

[復制鏈接]
跳轉到指定樓層
樓主
源碼如下

  1. #include <reg52.h>                 //調用單片機頭文件
  2. #define uchar unsigned char  //無符號字符型 宏定義        變量范圍0~255
  3. #define uint  unsigned int         //無符號整型 宏定義        變量范圍0~65535

  4. uchar value,i;                //變量

  5. sbit relay = P2^2;  //繼電器定義
  6. sbit beep  = P3^3;  //蜂鳴器定義

  7. sbit beiguan = P2^3;  //背光

  8. uint flag_time;

  9. uint flag_guan;

  10. uchar smg_i;
  11. uchar dis_smg[7]={0};

  12. uchar password[7]={6,5,4,3,2,1};            //密碼保存
  13. uchar password_bj[7]={1,2,3,4,5,6};        //密碼比較
  14. uchar code password_r[6] = {1,2,3,1,2,3} ;
  15. uchar code password_gl[6] = {5,2,0,0,2,5} ;
  16. uchar password_xg[6];        //密碼修改
  17. uchar flag_password;      //密碼正確否
  18. uchar flag_password_cichu1;//密碼錯誤次數

  19. bit flag_200ms=1;     //200ms標志位

  20. uchar key_can;

  21. uchar menu_1,menu_i;

  22. sbit scl = P2^1;        //24C02 IO口定義
  23. sbit sda = P2^0;        //24C02 IO口定義

  24. uchar code table_num[]="0123456789abcdefg";

  25. sbit rs=P2^5;         //寄存器選擇信號 H:數據寄存器          L:指令寄存器
  26. sbit rw=P2^6;         //寄存器選擇信號 H:數據寄存器          L:指令寄存器
  27. sbit e =P2^7;         //片選信號   下降沿觸發

  28. /***********************延時函數************************/
  29. void delay_uint(uint q)
  30. {
  31.         while(q--);
  32. }

  33. /***********************lcd1602寫命令函數************************/
  34. void write_com(uchar com)
  35. {
  36.         e=0;
  37.         rs=0;
  38.         rw=0;
  39.         P0=com;
  40.         delay_uint(3);
  41.         e=1;
  42.         delay_uint(25);
  43.         e=0;
  44. }

  45. /***********************lcd1602寫數據函數************************/
  46. void write_data(uchar dat)
  47. {
  48.         e=0;
  49.         rs=1;
  50.         rw=0;
  51.         P0=dat;
  52.         delay_uint(3);
  53.         e=1;
  54.         delay_uint(25);
  55.         e=0;        
  56. }

  57. /*********************光標控制***********************/
  58. void lcd1602_guanbiao(uchar open_off,uchar add)
  59. {
  60.         if(open_off == 1)   //開光標
  61.         {
  62.                 write_com(0x80+add);              //將光標移動到秒個位
  63.                 write_com(0x0f);                //顯示光標并且閃爍
  64.         }
  65.         else
  66.         {
  67.                 write_com(0x0c);   //關光標
  68.         }               
  69. }

  70. /***********************lcd1602上顯示兩位十進制數************************/
  71. void write_sfm2(uchar hang,uchar add,uchar date)
  72. {
  73.         uchar shi,ge;
  74.         if(hang==1)   
  75.                 write_com(0x80+add);
  76.         else
  77.                 write_com(0x80+0x40+add);
  78.         shi=date%100/10;
  79.         ge=date%10;                  
  80.         write_data(0x30+shi);
  81.         write_data(0x30+ge);        
  82. }

  83. /***********************lcd1602上顯示這字符函數************************/
  84. void write_string(uchar hang,uchar add,uchar *p)
  85. {
  86.         if(hang==1)   
  87.                 write_com(0x80+add);
  88.         else
  89.                 write_com(0x80+0x40+add);
  90.                 while(1)                                                                                                                 
  91.                 {
  92.                         if(*p == '\0')  break;
  93.                         write_data(*p);
  94.                         p++;
  95.                         delay_uint(50);
  96.                 }        
  97. }


  98. /***********************lcd1602初始化設置************************/
  99. void init_1602()
  100. {
  101.         write_com(0x38);        //
  102.         write_com(0x0c);
  103.         write_com(0x06);
  104.         delay_uint(1000);
  105.         write_string(1,0," Password Lock  ");        
  106.         write_string(2,0," Input:         ");
  107.         lcd1602_guanbiao(1,7+0x40);  //開光標
  108. }


  109. /***************啟始信號 ***************************/
  110. void start()
  111. {
  112.         sda = 1;
  113.         scl = 1;
  114.         sda = 0;
  115.         scl = 0;
  116. }

  117. /****************結束信號 **************************/
  118. void stop()
  119. {
  120.         sda = 0;
  121.         scl = 1;
  122.         sda = 1;
  123.         scl = 0;
  124. }

  125. /*****************檢測應答*************************/
  126. void ack()
  127. {
  128.         uchar i;
  129.         sda = 1;   
  130.         scl = 1;        
  131.         while((i < 100) & (sda == 1))        i++;
  132.         scl =0;
  133. }


  134. void ack_zhuji()
  135. {
  136.         sda = 0;
  137.         scl = 1;
  138.         scl = 0;
  139.         sda = 1;
  140. }

  141. /*****************非應答*************************/
  142. void no_ack()
  143. {
  144.         sda = 1;
  145.         scl = 1;
  146.         scl = 0;
  147. }

  148. /*****************寫一個字節*************************/
  149. void write_iic(uchar dat)
  150. {
  151.         uchar i;
  152.         for(i=0;i<8;i++)
  153.         {
  154.                 scl = 0;
  155.                 dat <<= 1 ;
  156.                 sda = CY;
  157.                 scl = 1;
  158.         }
  159.         scl = 0;
  160. }

  161. /*******************讀一個字節***********************/
  162. uchar read_iic()
  163. {
  164.         uchar i,value;
  165.         for(i=0;i<8;i++)
  166.         {
  167.                 scl = 1;
  168.                 value <<= 1;
  169.                 if(sda == 1)
  170.                         value |= 0x01;
  171.                 scl = 0;
  172.         }
  173.         return value;
  174. }

  175. /*****************向24C02寫一個字節進去*************************/
  176. void write_24c02(uchar add,uchar dat)
  177. {
  178.         start();
  179.         write_iic(0xa0);
  180.         ack();
  181.         write_iic(add);
  182.         ack();
  183.         write_iic(dat);
  184.         no_ack();
  185.         stop();
  186. }

  187. /******************從24C02讀一個字節進去************************/
  188. uchar read_24c02(uchar add)
  189. {
  190.         uchar value;
  191.         start();
  192.         write_iic(0xa0);
  193.         ack();
  194.         write_iic(add);
  195.         ack();

  196.         start();
  197.         write_iic(0xa1);
  198.         ack();
  199.         value = read_iic();
  200.         no_ack();
  201.         stop();
  202.         return value;
  203. }

  204. /*****************向24C02寫多個字節進去*************************/
  205. void write_24c02_8(uchar n,uchar add,uchar *p)
  206. {
  207.         uchar i;
  208.         EA = 0;
  209.         start();
  210.         write_iic(0xa0);
  211.         ack();
  212.         write_iic(add);        
  213.         for(i=0;i<n;i++)
  214.         {        
  215.                 ack();
  216.                 write_iic(*p);
  217.                 p++;                        
  218.         }  
  219.         no_ack();   
  220.         stop();        
  221.         EA = 1;
  222. }
  223. /******************從24C02讀多個字節進去************************/
  224. void read_24c02_8(uchar n,uchar add,uchar *p)
  225. {
  226.         uchar i;
  227.         EA = 0;
  228.         start();
  229.         write_iic(0xa0);
  230.         ack();
  231.         write_iic(add);
  232.         ack();

  233.         start();
  234.         write_iic(0xa1);
  235.         ack();
  236.         for(i=0;i<n;i++)
  237.         {
  238.                 p[i] = read_iic();
  239.                 if(i == n-1)
  240.                 {
  241.                         ack();
  242.                         stop();
  243.                 }
  244.                 else
  245.                         ack_zhuji();
  246.         }
  247.         EA = 1;
  248. }


  249. /***********************1ms延時函數*****************************/
  250. void delay_1ms(uint q)
  251. {
  252.         uint i,j;
  253.         for(i=0;i<q;i++)
  254.                 for(j=0;j<120;j++);
  255. }


  256. void key()         //獨立按鍵程序
  257. {
  258.         static uchar key_new = 0, key_l;
  259.         key_can = 20;                   //按鍵值還原
  260.         P1 = 0x0f;
  261.         if((P1 & 0x0f) != 0x0f)                //按鍵按下
  262.         {
  263.                 delay_1ms(1);                     //按鍵消抖動
  264.                 if(((P1 & 0x0f) != 0x0f) && (key_new == 1))
  265.                 {                                                //確認是按鍵按下
  266.                         key_new = 0;
  267.                         key_l = (P1 | 0xf0);   //矩陣鍵盤掃描
  268.                         P1 = key_l;
  269.                         switch(P1)
  270.                         {
  271.                                 case 0xee:  key_can = 1;  break;  //得到按鍵值
  272.                                 case 0xde:  key_can = 4;  break;   //得到按鍵值
  273.                                 case 0xbe:  key_can = 7;  break;   //得到按鍵值
  274.                                 case 0x7e:  key_can = 10;  break;   //得到按鍵值
  275.         
  276.                                 case 0xed:  key_can = 0;  break;  //得到按鍵值
  277.                                 case 0xdd:  key_can = 8;  break;   //得到按鍵值
  278.                                 case 0xbd:  key_can = 5;  break;   //得到按鍵值
  279.                                 case 0x7d:  key_can = 2;  break;   //得到按鍵值
  280.         
  281.                                 case 0xeb:  key_can = 3;  break;  //得到按鍵值
  282.                                 case 0xdb:  key_can = 6;  break;   //得到按鍵值
  283.                                 case 0xbb:  key_can = 9;  break;   //得到按鍵值
  284.                                 case 0x7b:  key_can = 11;  break;   //得到按鍵值
  285.         
  286.                                 case 0xe7:  key_can = 15;  break;  //得到按鍵值
  287.                                 case 0xd7:  key_can = 14;  break;  //得到按鍵值
  288.                                 case 0xb7:  key_can = 13;  break;   //得到按鍵值
  289.                                 case 0x77:  key_can = 12;  break;  //得到按鍵值  

  290.                         }        
  291.                 }                        
  292.         }
  293.         else
  294.         {
  295.                 key_new = 1;
  296.         }        
  297. }


  298. /***************把數組清空**********************/
  299. void clear_shuzu(uchar *p)
  300. {
  301.         for(i=0;i<7;i++)
  302.                 p[i] = 0;
  303. }

  304. /*************定時器0初始化程序***************/
  305. void time_init()         
  306. {
  307.         EA   = 1;                   //開總中斷
  308.         TMOD = 0X01;          //定時器0、工作方式1
  309.         ET0  = 1;                  //開定時器0中斷
  310.         TR0  = 1;                  //允許定時器0定時
  311. }

  312. /******************下載程序密碼初始化**********************/           
  313. void password_chushifa()
  314. {
  315.         scl = 0;
  316.         value = read_24c02(10) ;
  317.         if(value != 75)
  318.         {
  319.                 value = 75;
  320.                 beep = 0;
  321.                 write_24c02(10,value);
  322.                 delay_1ms(200);
  323.                 write_24c02_8(6,0,password_r);
  324.                 delay_1ms(200);
  325.                 read_24c02_8(6,0,password);
  326.                 beep = 1;         
  327.         }
  328. }


  329. /****************按鍵功能處理********************/           
  330. void key_with()
  331. {
  332.         static uchar value;
  333.         if(key_can == 14)   //手動關閉密碼鎖
  334.                 relay = 1;
  335.         if(menu_1 == 0)
  336.         {
  337.                 if(key_can <= 9)
  338.                 if(menu_i < 6)   //密碼輸入
  339.                 {
  340.                         menu_i ++;
  341.                         if(menu_i > 6)
  342.                                 menu_i = 6;
  343.                         smg_i = menu_i;
  344.                         for(i=6;i>0;i--)
  345.                                 password_bj[i] = password_bj[i-1];        
  346.                         password_bj[0] = key_can;
  347.                         for(i=0;i<smg_i;i++)
  348.                                 dis_smg[i] ='*';//0x30 + password_bj[i];
  349.                         write_string(2,7,dis_smg);        
  350.                         lcd1602_guanbiao(1,7 + menu_i + 0x40);  //開光標
  351.                 }        
  352.                 if(key_can == 11)         //密碼刪除
  353.                 {
  354.                         for(i=0;i<menu_i;i++)
  355.                                 password_bj[i] = password_bj[i+1];         
  356.                         menu_i --;
  357.                         password_bj[menu_i] = ' ';        
  358.                         dis_smg[menu_i] = ' ';
  359.                         write_string(2,7,dis_smg);        
  360.                         lcd1602_guanbiao(1,7 + menu_i + 0x40);  //開光標
  361.                 }
  362.                 if(key_can == 15)  //確認鍵
  363.                 {
  364.                         value = 0;
  365.                         for(i=0;i<6;i++)
  366.                         {
  367.                                 if(password_bj[i] == password_gl[i]) //判斷管理員密碼
  368.                                 {
  369.                                          value ++;
  370.                                         if(value >= 6)  //密碼正確
  371.                                         {
  372.                                                 write_string(2,0,"    return      ");
  373.                                                 beep = 0;
  374.                                                 delay_1ms(200);
  375.                                                 read_24c02_8(6,0,password);
  376.                                                 beep = 1;         
  377.                                                 delay_1ms(2000);
  378.                                         }
  379.                                 }
  380.                         }
  381.                         if(value < 6)
  382.                         for(i=0;i<6;i++)
  383.                         {
  384.                                 if(password_bj[i] == password[i])
  385.                                 {
  386.                                         flag_password = 1;         //密碼正確
  387.                                         relay = 0;     //打開密碼鎖
  388.                                         for(i=0;i<6;i++)
  389.                                                 dis_smg[i] = 0xbf;
  390.                                 }
  391.                                 else
  392.                                 {
  393.                                         flag_password = 0;
  394.                                         flag_password_cichu1 ++;
  395.                                         write_string(1,0," Password error ");        
  396.                                         write_string(2,0,"   cishu:       ");
  397.                                         write_sfm2(2,9,flag_password_cichu1);
  398.                                         delay_1ms(280);
  399.                         
  400.                                         for(i=0;i<6;i++)
  401.                                         {
  402.                                                 beep = ~beep;
  403.                                                 delay_1ms(200);
  404.                                         }
  405.                                         beep = 1;
  406.                                         delay_1ms(800);
  407.                                         break;               //密碼不正確
  408.                                 }
  409.                         }
  410.                         clear_shuzu(dis_smg);
  411.                         write_string(1,0," Password Lock  ");        
  412.                         write_string(2,0," Input:         ");
  413.                         lcd1602_guanbiao(1,7+0x40);  //開光標
  414.                         menu_i = 0;
  415.                 }
  416.         }                                                                        
  417. }

  418. /****************修改密碼********************/           
  419. void xiugai_password()
  420. {
  421.         if(key_can == 13)   //修改密碼
  422.         {
  423.                 if((relay == 0) && (menu_1 == 0))
  424.                 {
  425.                         menu_1 = 1;        menu_i = 0;
  426.                         clear_shuzu(password_bj);          //數據清空
  427.                         clear_shuzu(dis_smg);
  428.                         write_string(1,0,"Input1:          ");        
  429.                         write_string(2,0,"Input2:          ");
  430.                         lcd1602_guanbiao(1,7);  //開光標
  431.                 }        
  432.         }
  433.         if(menu_1 == 1)   //第一次輸入修改的密碼
  434.         {
  435.                 if(key_can <= 9)
  436.                 {
  437.                         if(menu_i < 6)
  438.                         {
  439.                                 menu_i ++;
  440.                                 if(menu_i > 6)
  441.                                         menu_i = 6;
  442.                                 smg_i = menu_i;
  443.                                 for(i=7;i>0;i--)
  444.                                         password_bj[i] = password_bj[i-1];        
  445.                                 password_bj[0] = key_can;
  446.                                 for(i=0;i<menu_i;i++)
  447.                                         dis_smg[i] ='*';
  448.                                 write_string(1,7,dis_smg);
  449.                                 lcd1602_guanbiao(1,7 + menu_i);  //開光標        
  450.                         }        
  451.                 }
  452.                 if(key_can == 11)  //刪除鍵
  453.                 {
  454.                         for(i=0;i<menu_i;i++)
  455.                                 password_bj[i] = password_bj[i+1];        
  456.                         menu_i --;
  457.                         password_bj[menu_i] = ' ';        
  458.                         dis_smg[menu_i] = ' ';
  459.                         write_string(1,7,dis_smg);        
  460.                         lcd1602_guanbiao(1,7 + menu_i);  //開光標        
  461.                 }        
  462.                 if(key_can == 15)  //確定鍵
  463.                 {
  464.                         clear_shuzu(password_xg);
  465.                         clear_shuzu(dis_smg);
  466.                         lcd1602_guanbiao(1,8 + 0x40);  //開光標
  467.                         menu_1 = 2;
  468.                     menu_i = 0;
  469.                         key_can = 20;
  470.                 }
  471.         }
  472.         if(menu_1 == 2)   //第二次輸入修改的密碼
  473.         {
  474.                 if(key_can <= 9)
  475.                 {
  476.                         if(menu_i < 6)
  477.                         {
  478.                                 menu_i ++;               
  479.                                 if(menu_i > 6)
  480.                                         menu_i = 6;
  481.                                 for(i=5;i>0;i--)
  482.                                         password_xg[i] = password_xg[i-1];        
  483.                                 password_xg[0] = key_can;
  484.                                 for(i=0;i<menu_i;i++)
  485.                                         dis_smg[i] ='*';//0x30 + password_xg[i];
  486.                                 write_string(2,7,dis_smg);           
  487.                                 lcd1602_guanbiao(1,7 + menu_i + 0x40);  //開光標
  488.                         }        
  489.                 }
  490.                 if(key_can == 11)  //刪除鍵
  491.                 {
  492.                         for(i=0;i<menu_i;i++)
  493.                                 password_xg[i] = password_xg[i+1];        
  494.                         password_xg[menu_i] = ' ';        
  495.                         dis_smg[menu_i] = ' ';
  496.                         write_string(2,7,dis_smg);        
  497.                         lcd1602_guanbiao(1,7 + menu_i + 0x40);  //開光標
  498.                 }        
  499.                 if(key_can == 15)  //確定鍵
  500.                 {
  501.                         for(i=0;i<6;i++)
  502.                         {
  503.                                 if(password_bj[i] == password_xg[i])
  504.                                 {
  505.                                         flag_password = 1;         //兩次輸入的密碼一樣                        
  506.                                 }
  507.                                 else
  508.                                 {
  509.                                         flag_password = 0;
  510.                                         write_string(1,0," Password Error ");        
  511.                                         write_string(2,0,"     reenter    ");
  512.                                         delay_1ms(300);
  513.                                         for(i=0;i<6;i++)
  514.                                         {
  515.                                                 beep = ~beep;                //提示三聲
  516.                                                 delay_1ms(300);
  517.                                         }
  518.                                         beep = 1;
  519.                                         delay_1ms(1000);
  520.                                         break;               //密碼不正確
  521.                                 }
  522.                         }
  523.                         if(flag_password == 1)                 //兩次輸入的密碼一樣的
  524.                         {                        
  525.                                 for(i=0;i<6;i++)
  526.                                 {
  527.                                         write_string(1,0,"    Password    ");        
  528.                                         write_string(2,0,"    Succeed     ");
  529.                                         password[i] = password_bj[i];   //保存密碼
  530.                                 }
  531.                                 write_24c02_8(6,0,password);
  532.                                 delay_1ms(300);
  533.                                 beep = 0;
  534.                                 delay_1ms(2000);
  535.                                 beep = 1;
  536.                         }
  537.                         clear_shuzu(password_xg);
  538.                         clear_shuzu(dis_smg);
  539.                         write_string(1,0," Password Lock  ");        
  540.                         write_string(2,0," Input:         ");
  541.                         lcd1602_guanbiao(1,7+0x40);  //開光標
  542.                         menu_1 = 0;
  543.                     menu_i = 0;

  544.                 }
  545.         }        
  546. }


  547. /******************主程序**********************/           
  548. void main()
  549. {
  550.         static uint value ;
  551.         password_chushifa();
  552.         time_init();   //定時器初始化
  553.         read_24c02_8(6,0,password);
  554.         init_1602();
  555.         beiguan = 0;
  556.         while(1)
  557.         {        
  558.                 if(flag_password_cichu1 < 3)     //錯誤三次按鍵不能用了
  559.                 {
  560.                         key();                                         //按鍵函數
  561.                         if(key_can < 20)
  562.                         {
  563.                                 if(beiguan == 0)
  564.                                 {
  565.                                         if(menu_1 == 0)
  566.                                                 key_with();                         //按鍵處理函數
  567.                                         xiugai_password();       //修改密碼
  568.                                 }
  569.                                 else
  570.                                         beiguan = 0;
  571.                                 flag_time = 0;               
  572.                         }
  573.                 }

  574.                 if(flag_200ms == 1)
  575.                 {
  576.                         flag_200ms = 0;         
  577.                         if(beiguan == 0)         //延時關閉鎖20秒關閉背光
  578.                         {
  579.                                 flag_time ++;
  580.                                 if(flag_time >= 5 * 30)        //30秒  
  581.                                 {
  582.                                         flag_time = 0;
  583.                                         beiguan = 1;        //關閉背光
  584.                                 }
  585.                         }
  586.                         if(relay == 0)  //延時關閉鎖
  587.                         {
  588.                                 flag_guan++;
  589.                                 if(flag_guan >= 5 * 10)        //10秒  
  590.                                 {
  591.                                         flag_guan = 0;
  592.                                     relay = 1;   //關閉密碼鎖
  593.                                 }
  594.                         }else
  595.                                 flag_guan = 0;        
  596.                         if(flag_password_cichu1 >= 3)
  597.                         {
  598.                                 value ++;           //200ms
  599.                                 beep = ~beep;  //蜂鳴器報警
  600.                                 if(value >= 5 * 60)        //1分鐘  
  601.                                 {
  602.                                         value = 0;
  603.                                         beep = 1;
  604.                                         flag_password_cichu1 = 0;
  605.                                 }
  606.                         }
  607.                 }
  608.                 delay_1ms(1);  
  609.         }
  610. }

  611. /*************定時器0中斷服務程序***************/
  612. void time0_int() interrupt 1
  613. {        
  614.         static uchar value;
  615.         TH0 = 0x3c;
  616.         TL0 = 0xb0;     // 50ms         12M

  617.     value ++;
  618.         if(value % 4 == 0)  
  619.         {         
  620.                 flag_200ms = 1;
  621.         }
  622.         
  623. }
復制代碼



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

使用道具 舉報

沙發
ID:303383 發表于 2018-9-18 22:00 | 只看該作者
提示: 作者被禁止或刪除 內容自動屏蔽
回復

使用道具 舉報

板凳
ID:111634 發表于 2018-9-19 07:39 | 只看該作者
本帖最后由 zl2168 于 2018-9-19 13:07 編輯

功能齊全的電子密碼鎖
⑴ 電路設計    …


⑵ 功能設計    …

⑶ 程序設計    …

⑷ Proteus仿真    …
電子密碼鎖1.rar (1.13 MB, 下載次數: 102)
Proteus仿真一下,確認有效,驗證上述功能。
以上摘自張志良編著《80C51單片機實用教程》ISBN 978-7-04-044532-9,高教社出版。書中電路和程序設計有詳細說明,程序語句條條有注解。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲性网 | 亚洲人va欧美va人人爽 | 欧美日韩一二三区 | 亚洲国产一区二区视频 | 日韩中文字幕 | 免费在线看黄视频 | 免费看a| 久久久国产精品 | 久久久中文 | 一级a性色生活片久久毛片 一级特黄a大片 | 久久高清 | 一区二区三区在线 | 国产91丝袜在线播放 | 人和拘一级毛片c | 免费黄色日本 | 久久精品一区二区三区四区 | 欧美激情视频一区二区三区在线播放 | 国产视频2021 | 91看片在线观看 | 特a毛片| 在线免费观看欧美 | av在线播放一区二区 | 永久网站 | 久久精品久久久 | 欧美网站一区二区 | 精品久久久久久久人人人人传媒 | 日日夜夜精品视频 | 日韩欧美高清 | 国产亚洲欧美在线视频 | 亚洲国产精品一区 | 国产精品a免费一区久久电影 | 欧美一区视频 | 久草青青| 欧美精品在线视频 | 在线国产视频观看 | 三级黄色片在线 | 精品国产一区久久 | 欧美三区视频 | 蜜桃臀av一区二区三区 | 国产精品日韩欧美一区二区 | 中文字幕电影在线观看 |