日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

51单片机学习笔记(郭天祥版)(4)——练习、动态扫描、练习、数码管消影...

發布時間:2025/3/20 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 51单片机学习笔记(郭天祥版)(4)——练习、动态扫描、练习、数码管消影... 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

  • ?讓P1.0輸出方波,周期為1s,那么就是高電平500ms,低電平500ms,這樣P1.0的發光二極管就閃爍了,頻率是周期的倒數,1s的倒數還是1,假設12MHz,其實電路板是11.0592MHz,只是為了計算方便。
  • 讓P1口的八個二極管流水燈,1秒鐘10次。
  • 第一個300ms輸出頻率為1KHz的方波,第二個300ms輸出10KHz的方波,以此類推。(改變頻率可以使其唱歌,這里是有源蜂鳴器,效果不好,無源的聲音很清脆)
  • 例題就是。
  • 接下里一個練習,流水燈1s間隔(延時函數),數碼管2s間隔顯示0~F(定時器),用延時函數和定時器,把前面的復習一遍

    1 #include<reg51.h> 2 #include<intrins.h> 3 4 #define uchar unsigned char 5 #define uint unsigned int 6 7 void Delay1ms(); 8 void delay(int n); 9 10 sbit WEI=P2^7; 11 sbit DUAN=P2^6; 12 13 void Delay1ms(); 14 void delay(int n); 15 16 uchar code Table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; 17 // 0 1 2 3 4 5 6 7 8 9 A B C D E F 無顯示 18 //[]括號內可以不寫,編譯時會自動數元素數然后分配內存 19 20 uchar num=0,n=0; 21 void main() 22 { 23 TMOD=0x01;//設置定時器0為工作方式1 24 TH0=(65536-50000)/256; 25 TL0=(65536-50000)%256; 26 EA=1;//開總中斷 27 ET0=1;//開啟定時器中斷 28 TR0=1;//開啟定時器 29 30 WEI=1; 31 P0=0x00; 32 WEI=0; 33 34 DUAN=1; 35 P0=Table[num]; 36 DUAN=0; 37 P1=0xfe; 38 while(1) 39 { 40 P1=_crol_(P1,1); 41 delay(1000); 42 if(n==40) 43 { 44 n=0; 45 num++; 46 if(num==16) 47 { 48 num=0; 49 } 50 DUAN=1; 51 P0=Table[num]; 52 DUAN=0; 53 } 54 } 55 } 56 57 void timer0() interrupt 1 //有的會寫 interrupt 1 using 0~3, 暫時不需要知道,好麻煩...... 58 59 { 60 TH0=(65536-50000)/256; 61 TL0=(65536-50000)%256; 62 n++; 63 } 64 65 void delay(int n) 66 { 67 while(n--) 68 { 69 Delay1ms(); 70 } 71 } 72 void Delay1ms() //@12.000MHz 73 { 74 unsigned char i, j; 75 76 i = 2; 77 j = 239; 78 do 79 { 80 while (--j); 81 } while (--i); 82 }

    你會發現這樣寫,是有問題的,開始還能好,過一會數碼管就不會變了,單獨運行流水燈和數碼管的程序都可以正常運行。

    原因:

    兩個delay的時間n就達到了40,但是其它語句的運行也是需要時間的,若P1=_crol還有if兩個語句分別需要20ms(當然肯定沒這么久,而且只有if成功時才占用的時間比較長),那么從頭開始執行到if結束時,n=20,并且定時器已經計時到了40ms,然后再次循環,執行完P1=,那么就是n=21,執行完delay,n=41,開始if判斷時,需要的是n==40,這樣才能數碼管變化,但是這時已經n=41了,所以以后永遠不會變化了。

    解決方法:

  • 將n==40改為>=40,這里就不給代碼了。
  • 將if判斷放在中斷函數里,當然這樣還是有誤差的,就像上面說的,P1=也是用時間的,但是太小太小了,所以誤差不大。
    1 #include<reg51.h> 2 #include<intrins.h> 3 4 #define uchar unsigned char 5 #define uint unsigned int 6 7 void Delay1ms(); 8 void delay(int n); 9 10 sbit WEI=P2^7; 11 sbit DUAN=P2^6; 12 13 void Delay1ms(); 14 void delay(int n); 15 16 uchar code Table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; 17 // 0 1 2 3 4 5 6 7 8 9 A B C D E F 無顯示 18 //[]括號內可以不寫,編譯時會自動數元素數然后分配內存 19 20 uchar num=0,n=0; 21 void main() 22 { 23 TMOD=0x01;//設置定時器0為工作方式1 24 TH0=(65536-50000)/256; 25 TL0=(65536-50000)%256; 26 EA=1;//開總中斷 27 ET0=1;//開啟定時器中斷 28 TR0=1;//開啟定時器 29 30 WEI=1; 31 P0=0x00; 32 WEI=0; 33 34 DUAN=1; 35 P0=Table[num]; 36 DUAN=0; 37 P1=0xfe; 38 while(1) 39 { 40 P1=_crol_(P1,1); 41 delay(1000); 42 // if(n==40) 43 // { 44 // n=0; 45 // num++; 46 // if(num==16) 47 // { 48 // num=0; 49 // } 50 // DUAN=1; 51 // P0=Table[num]; 52 // DUAN=0; 53 // } 54 } 55 } 56 57 void timer0() interrupt 1 //有的會寫 interrupt 1 using 0~3, 暫時不需要知道,好麻煩...... 58 59 { 60 TH0=(65536-50000)/256; 61 TL0=(65536-50000)%256; 62 n++; 63 if(n==40) 64 { 65 n=0; 66 num++; 67 if(num==16) 68 { 69 num=0; 70 } 71 DUAN=1; 72 P0=Table[num]; 73 DUAN=0; 74 } 75 } 76 77 void delay(int n) 78 { 79 while(n--) 80 { 81 Delay1ms(); 82 } 83 } 84 void Delay1ms() //@12.000MHz 85 { 86 unsigned char i, j; 87 88 i = 2; 89 j = 239; 90 do 91 { 92 while (--j); 93 } while (--i); 94 }
  • ?

    接下里再寫一個程序,讓8個數碼管一個一個顯示,從1到8,一秒一次,意思是,第一秒第一個數碼管亮,顯示1,第二秒第二個數碼管亮,顯示2,以此類推。

    1 #include<reg51.h> 2 #include<intrins.h> 3 4 #define uchar unsigned char 5 #define uint unsigned int 6 7 sbit WEI=P2^7; 8 sbit DUAN=P2^6; 9 10 void Delay1ms(); 11 void delay(int n); 12 13 uchar code Table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; 14 // 0 1 2 3 4 5 6 7 8 9 A B C D E F 無顯示 15 uchar code Wei_Table[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; 16 //位選表,也可以用位循環來做 17 uchar num=0,n=0,wei_num=0; 18 void main() 19 { 20 TMOD=0x01;//設置定時器0為工作方式1 21 TH0=(65536-50000)/256; 22 TL0=(65536-50000)%256; 23 EA=1;//開總中斷 24 ET0=1;//開啟定時器中斷 25 TR0=1;//開啟定時器 26 27 while(1) 28 { 29 if(n==20) 30 { 31 n=0; 32 num++; 33 if(num==9) 34 num=1; 35 DUAN=1; 36 P0=Table[num]; 37 DUAN=0; 38 39 WEI=1; 40 P0=Wei_Table[wei_num]; 41 WEI=0; 42 43 wei_num++; 44 if(wei_num==8) 45 wei_num=0; 46 } 47 } 48 } 49 50 void timer0() interrupt 1 51 { 52 TH0=(65536-50000)/256; 53 TL0=(65536-50000)%256; 54 n++; 55 }

    如果我們把上面的時間改一下,改的短一點,比如50ms一次,即n=1,這樣就會更快,如果再小,就可以看見有幾個燈像是一直亮著,如果再小比如5ms,就可以發現8個燈一直亮著,這就是動態掃描了。(注意嘗試了,用鎖存器的電路圖的話,那么仿真這里是不能出現12345678的,所以從這里開始要用單片機了

    電阻要小這是針對典型電路的,我們這里用了鎖存器,每一個大致能輸出10mA電流,所以足夠亮,還能簡化電路。


    ?

    其實這里不需要用到定時器,所以接下來我們用延時函數,來讓數碼管顯示12,同時不能用數組的形式儲存段選值

    1 #include<reg51.h> 2 #include<intrins.h> 3 4 #define uchar unsigned char 5 #define uint unsigned int 6 7 void Delay1ms(); 8 void delay(int n); 9 10 sbit WEI=P2^7; 11 sbit DUAN=P2^6; 12 13 uchar code Table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; 14 // 0 1 2 3 4 5 6 7 8 9 A B C D E F 無顯示 15 16 uchar num=0,shi,ge,temp; 17 void main() 18 { 19 temp=12; 20 shi=temp/10; 21 ge=temp%10; 22 while(1) 23 { 24 DUAN=1; 25 P0=Table[shi]; 26 DUAN=0; 27 28 WEI=1; 29 P0=0xfe; 30 WEI=0; 31 delay(5); 32 33 DUAN=1; 34 P0=Table[ge]; 35 DUAN=0; 36 37 WEI=1; 38 P0=0xfd; 39 WEI=0; 40 delay(5); 41 } 42 } 43 44 void delay(int n) 45 { 46 while(n--) 47 { 48 Delay1ms(); 49 } 50 } 51 void Delay1ms() //@12.000MHz 52 { 53 unsigned char i, j; 54 55 i = 2; 56 j = 239; 57 do 58 { 59 while (--j); 60 } while (--i); 61 }

    ?那么接下來要顯示三位數,如352怎么辦?

    你可能會這樣寫

    1 #include<reg51.h> 2 #include<intrins.h> 3 4 #define uchar unsigned char 5 #define uint unsigned int 6 7 void Delay1ms(); 8 void delay(int n); 9 10 sbit WEI=P2^7; 11 sbit DUAN=P2^6; 12 13 uchar code Table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; 14 // 0 1 2 3 4 5 6 7 8 9 A B C D E F 無顯示 15 16 uchar num=0,shi,ge,temp,bai; 17 void main() 18 { 19 temp=352; 20 bai=temp/100; 21 shi=temp/10%10; 22 ge=temp%10; 23 while(1) 24 { 25 DUAN=1; 26 P0=Table[bai]; 27 DUAN=0; 28 29 WEI=1; 30 P0=0xfe; 31 WEI=0; 32 delay(5); 33 34 DUAN=1; 35 P0=Table[shi]; 36 DUAN=0; 37 38 WEI=1; 39 P0=0xfd; 40 WEI=0; 41 delay(5); 42 43 DUAN=1; 44 P0=Table[ge]; 45 DUAN=0; 46 47 WEI=1; 48 P0=0xfb; 49 WEI=0; 50 delay(5); 51 } 52 } 53 54 void delay(int n) 55 { 56 while(n--) 57 { 58 Delay1ms(); 59 } 60 } 61 void Delay1ms() //@12.000MHz 62 { 63 unsigned char i, j; 64 65 i = 2; 66 j = 239; 67 do 68 { 69 while (--j); 70 } while (--i); 71 }

    ?

    咦,為什么是96呢???!

    發現沒有,temp是unsigned char類型的,char類型的變量是1個字節,8位的,那么最大是2的8次方,即256,那么超過了這個數就會取超過的部分(352-256=96),如果是600,超出了兩個256,同樣是再取超過的,即88。

    如果是小于256的三位數就是對的,如152。想要顯示352,只要換成int就好了。

    然后我們可以把顯示內容寫成函數,這樣就成了一個模板了。

    1 #include<reg51.h> 2 #include<intrins.h> 3 4 #define uchar unsigned char 5 #define uint unsigned int 6 7 void Delay1ms(); 8 void delay(int n); 9 void display(uchar bai,uchar shi,uchar ge); 10 sbit WEI=P2^7; 11 sbit DUAN=P2^6; 12 13 uchar code Table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; 14 // 0 1 2 3 4 5 6 7 8 9 A B C D E F 無顯示 15 16 uchar num=0,shi,ge,temp,bai; 17 void main() 18 { 19 temp=152; 20 bai=temp/100; 21 shi=temp/10%10; 22 ge=temp%10; 23 while(1) 24 { 25 display(bai,shi,ge); 26 } 27 } 28 29 void display(uchar bai,uchar shi,uchar ge) 30 { 31 DUAN=1; 32 P0=Table[bai]; 33 DUAN=0; 34 35 WEI=1; 36 P0=0xfe; 37 WEI=0; 38 delay(5); 39 40 DUAN=1; 41 P0=Table[shi]; 42 DUAN=0; 43 44 WEI=1; 45 P0=0xfd; 46 WEI=0; 47 delay(5); 48 49 DUAN=1; 50 P0=Table[ge]; 51 DUAN=0; 52 53 WEI=1; 54 P0=0xfb; 55 WEI=0; 56 delay(5); 57 } 58 void delay(int n) 59 { 60 while(n--) 61 { 62 Delay1ms(); 63 } 64 } 65 void Delay1ms() //@12.000MHz 66 { 67 unsigned char i, j; 68 69 i = 2; 70 j = 239; 71 do 72 { 73 while (--j); 74 } while (--i); 75 }

    ?寫一個程序,顯示計時,這次規范點。

    1 #include<reg51.h> 2 #include<intrins.h> 3 4 #define uchar unsigned char 5 #define uint unsigned int 6 7 void Delay1ms(); 8 void delay(int n); 9 void display(uchar bai,uchar shi,uchar ge); 10 void init(); 11 sbit WEI=P2^7; 12 sbit DUAN=P2^6; 13 14 uchar code Table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; 15 // 0 1 2 3 4 5 6 7 8 9 A B C D E F 無顯示 16 17 uchar num=0,shi,ge,temp=0,bai,a=0; 18 void main() 19 { 20 init(); 21 bai=temp/100; 22 shi=temp/10%10; 23 ge=temp%10; 24 while(1) 25 { 26 if(a==20) 27 { 28 a=0; 29 temp++; 30 if(temp==101) 31 { 32 temp=0; 33 } 34 bai=temp/100; 35 shi=temp/10%10; 36 ge=temp%10; 37 } 38 display(bai,shi,ge); 39 } 40 } 41 42 void display(uchar bai,uchar shi,uchar ge) 43 { 44 DUAN=1; 45 P0=Table[bai]; 46 DUAN=0; 47 48 WEI=1; 49 P0=0xfe; 50 WEI=0; 51 delay(5); 52 53 DUAN=1; 54 P0=Table[shi]; 55 DUAN=0; 56 57 WEI=1; 58 P0=0xfd; 59 WEI=0; 60 delay(5); 61 62 DUAN=1; 63 P0=Table[ge]; 64 DUAN=0; 65 66 WEI=1; 67 P0=0xfb; 68 WEI=0; 69 delay(5); 70 } 71 void init() 72 { 73 TH0=(65536-50000)/256; 74 TL0=(65536-50000)%256; 75 EA=1; 76 ET0=1; 77 TR0=1; 78 } 79 void delay(int n) 80 { 81 while(n--) 82 { 83 Delay1ms(); 84 } 85 } 86 void Delay1ms() //@12.000MHz 87 { 88 unsigned char i, j; 89 90 i = 2; 91 j = 239; 92 do 93 { 94 while (--j); 95 } while (--i); 96 } 97 void timer0() interrupt 1 98 { 99 TMOD=0x01; 100 TH0=(65536-50000)/256; 101 TL0=(65536-50000)%256; 102 a++; 103 }

    會發現出了前三個數碼管以外,后面的數碼管顯示的很淺。之所以這樣,是因為段選關閉,開啟位選以前,P0也是有值的。

    接下來說一下消影的方法

  • 我們可以在開啟位選以前先讓P0=0xff,關閉所有數碼管
    1 #include<reg51.h> 2 #include<intrins.h> 3 4 #define uchar unsigned char 5 #define uint unsigned int 6 7 void Delay1ms(); 8 void delay(int n); 9 void display(uchar bai,uchar shi,uchar ge); 10 void init(); 11 sbit WEI=P2^7; 12 sbit DUAN=P2^6; 13 14 uchar code Table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; 15 // 0 1 2 3 4 5 6 7 8 9 A B C D E F 無顯示 16 17 uchar num=0,shi,ge,temp=0,bai,a=0; 18 void main() 19 { 20 init(); 21 bai=temp/100; 22 shi=temp/10%10; 23 ge=temp%10; 24 while(1) 25 { 26 if(a==20) 27 { 28 a=0; 29 temp++; 30 if(temp==101) 31 { 32 temp=0; 33 } 34 bai=temp/100; 35 shi=temp/10%10; 36 ge=temp%10; 37 } 38 display(bai,shi,ge); 39 } 40 } 41 42 void display(uchar bai,uchar shi,uchar ge) 43 { 44 DUAN=1; 45 P0=Table[bai]; 46 DUAN=0; 47 48 P0=0xff; 49 WEI=1; 50 P0=0xfe; 51 WEI=0; 52 delay(5); 53 54 DUAN=1; 55 P0=Table[shi]; 56 DUAN=0; 57 58 P0=0xff; 59 WEI=1; 60 P0=0xfd; 61 WEI=0; 62 delay(5); 63 64 DUAN=1; 65 P0=Table[ge]; 66 DUAN=0; 67 68 P0=0xff; 69 WEI=1; 70 P0=0xfb; 71 WEI=0; 72 delay(5); 73 } 74 void init() 75 { 76 TH0=(65536-50000)/256; 77 TL0=(65536-50000)%256; 78 EA=1; 79 ET0=1; 80 TR0=1; 81 } 82 void delay(int n) 83 { 84 while(n--) 85 { 86 Delay1ms(); 87 } 88 } 89 void Delay1ms() //@12.000MHz 90 { 91 unsigned char i, j; 92 93 i = 2; 94 j = 239; 95 do 96 { 97 while (--j); 98 } while (--i); 99 } 100 void timer0() interrupt 1 101 { 102 TMOD=0x01; 103 TH0=(65536-50000)/256; 104 TL0=(65536-50000)%256; 105 a++; 106 }

    ?

  • 我們可以改變P0賦值的順序,可以先賦值,再開啟段選和位選
    1 #include<reg51.h> 2 #include<intrins.h> 3 4 #define uchar unsigned char 5 #define uint unsigned int 6 7 void Delay1ms(); 8 void delay(int n); 9 void display(uchar bai,uchar shi,uchar ge); 10 void init(); 11 sbit WEI=P2^7; 12 sbit DUAN=P2^6; 13 14 uchar code Table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}; 15 // 0 1 2 3 4 5 6 7 8 9 A B C D E F 無顯示 16 17 uchar num=0,shi,ge,temp=0,bai,a=0; 18 void main() 19 { 20 init(); 21 bai=temp/100; 22 shi=temp/10%10; 23 ge=temp%10; 24 while(1) 25 { 26 if(a==20) 27 { 28 a=0; 29 temp++; 30 if(temp==101) 31 { 32 temp=0; 33 } 34 bai=temp/100; 35 shi=temp/10%10; 36 ge=temp%10; 37 } 38 display(bai,shi,ge); 39 } 40 } 41 42 void display(uchar bai,uchar shi,uchar ge) 43 { 44 P0=Table[bai]; 45 DUAN=1; 46 DUAN=0; 47 48 P0=0xfe; 49 WEI=1; 50 WEI=0; 51 delay(5); 52 53 P0=Table[shi]; 54 DUAN=1; 55 DUAN=0; 56 57 P0=0xfd; 58 WEI=1; 59 WEI=0; 60 delay(5); 61 62 P0=Table[ge]; 63 DUAN=1; 64 DUAN=0; 65 66 P0=0xfb; 67 WEI=1; 68 WEI=0; 69 delay(5); 70 } 71 void init() 72 { 73 TH0=(65536-50000)/256; 74 TL0=(65536-50000)%256; 75 EA=1; 76 ET0=1; 77 TR0=1; 78 } 79 void delay(int n) 80 { 81 while(n--) 82 { 83 Delay1ms(); 84 } 85 } 86 void Delay1ms() //@12.000MHz 87 { 88 unsigned char i, j; 89 90 i = 2; 91 j = 239; 92 do 93 { 94 while (--j); 95 } while (--i); 96 } 97 void timer0() interrupt 1 98 { 99 TMOD=0x01; 100 TH0=(65536-50000)/256; 101 TL0=(65536-50000)%256; 102 a++; 103 }

    ?


  • 作業

    ?

    轉載于:https://www.cnblogs.com/Lieyuanbingshi/p/10629667.html

    總結

    以上是生活随笔為你收集整理的51单片机学习笔记(郭天祥版)(4)——练习、动态扫描、练习、数码管消影...的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: aa亚洲 | 七月色 | 欧美69囗交视频 | 中文av在线播放 | 青青伊人网 | 91亚洲精品乱码久久久久久蜜桃 | 亚洲人性生活视频 | 福利视频在线播放 | 麻豆综合网 | 欧美三级网 | 久操福利 | 丝袜 中出 制服 人妻 美腿 | 狠狠激情| 无码一区二区三区 | 国产精品国产精品国产专区 | 美女无遮挡免费网站 | 亚洲综合色网站 | 美国一区二区 | 中国女人做爰视频 | 天堂在线8 | 久久综合88 | 日日夜夜狠狠干 | 三级久久 | 玖玖爱这里只有精品 | 欧美亚洲一级 | 高潮一区二区三区 | 精品国产123| 精品少妇人妻一区二区黑料社区 | 日日干天天射 | 国产美女特级嫩嫩嫩bbb | 日本精品一二三 | 成人免费视频国产免费麻豆 | 国产视频精品免费 | 亚洲精品影片 | 欧美大片黄色 | 国产精品免费久久 | 欧美一级黑人 | 亚洲αv | 森林影视官网在线观看 | 一区二区三区三区在线 | 成人免费毛片视频 | 男人天堂影院 | 在线国产精品一区 | 亚洲国产一区视频 | 国产一级性生活片 | 黄色性网站 | 国产精品久久精品 | 农村少妇无套内谢粗又长 | 国内免费精品视频 | 50度灰在线 | 夜夜操操操 | 黄色欧美视频 | 亚洲成a人无码 | 中文字幕av在线播放 | 91欧美国产 | 亚洲熟女乱色一区二区三区久久久 | 毛片久久久久久久 | 国产a级片免费看 | 影音先锋激情 | 亚洲av日韩av高潮潮喷无码 | 两个人做羞羞的视频 | 色婷婷国产精品视频 | 五月激情六月丁香 | 亚洲一区二区三区国产 | 中国av毛片 | 免费视频爱爱太爽 | 亚洲aaaaa特级| 国产精品天天狠天天看 | 六月婷婷中文字幕 | 亚洲欧美另类激情 | 成年人黄色大全 | 美国黄色av | 欧美综合一区二区 | 国产特级黄色录像 | 国产一区免费在线观看 | 国产69精品久久久久999小说 | 亚洲在线成人 | 波多野结衣乳巨码无在线 | 欧美性视频网站 | 成人精品视频网站 | 天天综合天天色 | 变态另类丨国产精品 | xvideos永久免费入口 | 欲色综合| 理伦毛片| 91福利小视频| 岛国av免费在线 | 亚洲一区二区高清视频 | 欧美拍拍视频 | 一区二区三区国产视频 | 97人人爽人人爽人人爽人人爽 | 校园春色自拍偷拍 | 国产在线观看一区 | 美女mm131爽爽爽免费动视频 | 黄网站免费入口 | 天天躁日日躁狠狠躁av麻豆 | 成人性生交大片免费看96 | 国产精品久久福利 | 国产伦精品一区二区三区视频黑人 |