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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7781|回復: 1
收起左側

[原創分享][實驗成功]5110lcd顯示四行中文可以錯列顯示同時內存占用小

[復制鏈接]
ID:85740 發表于 2015-7-21 11:09 | 顯示全部樓層 |閱讀模式
本帖最后由 萊鳥 于 2015-7-21 11:12 編輯

從學校的時候對器件成本不敏感,凡是顯示,基本都用12864,一來不用花錢買,二來是操作簡單,(串行模式)占用io少,顯示內容還多,
前段時間偶然從廢品站買了幾十片5110的lcd,雖然成色很爛,但是價格便宜,5塊錢一個,個個都能顯示,有點占小便宜的感覺,哈哈
之前就看到很多人玩5110的屏,屏倒是不貴,10元不到,運費卻要10元了,一直也沒買過,
剛好這兩天很閑,而且做得轉接板也到手了,就把5110的文字顯示學了一下


以前做的計價器樣機,帶字庫的12864 面積大,使用方便,
   })}VESV_%M}}BMK~%FO%2%S.png
5110價格便宜,價格便宜,價格便宜
   nEO_IMG_主圖.jpg
對于單片機來說,存儲較小,51的話,內置64k,存放3種ASCII點陣,加上 16x16和12x12的中文就基本可以滿足一般的顯示需要,比如上面diy的激光測,
標題用16的字體,其他用12的字體,感覺不算違和,
至于6x8的ASCII可以顯示不太重要的數據或者比較長的數據,
最后一行的8x12的ascii則可以用來顯示重要一點的數據,第一樣就能看到,比如測距狀態,OK還是ERROR等等
  
nEO_IMG_20150713_180442.jpg

5110的lcd控制器的y地址尋址是以字節為單位的,而不是像x一樣以位為單位,這就導致了,顯示英文比較方便,可以在某一行任意地址顯示,y方向就固定6行好了,
顯示16點陣的字體也方便,因為一個漢字剛好占據兩個y地址,不過實際來看,16的字體顯得太大,和這塊小屏幕不太和諧,而且顯示內容少,所以可以選用比較秀氣的12像素字體,效果也很好,但是有個小問題,12像素字體有的筆畫會缺失,但是沒有什么太大影響,比如下圖,順序都不會影響,缺個點之類的更不用擔心啦
  
來看5110的控制器y地址尋址和12像素字體的關系,第0,2,4行顯示是沒問題到只不過 1 3 5行會空出來4個像素,比較常見的取模軟件都是不足8位補足8位的,所以,y1的下半部分就是0,
顯示兩行12的漢字,需要用3個y地址,把第二行的漢字上移4就可以了,
   地址.png
單獨來看y1,它包含了第一行漢字的下半部分,還包含了第二行漢字的上半部分,而且,第二行漢字的上半部分顯示在了y1的下半部分(比較繞口)看圖可以看得出來
   地址 - 副本.png
不過這樣看好像就比較清楚了,其實第二行中文的y方向起始地址還是y1,和第一行漢字的y地址重合,數據移位處理即可
   地址 - 副本 (2).png
那就可以使用單片機的xdata內存區存放交叉區的緩存數據,
顯示12像素的漢字,可以顯示4行,
我們把第一行的漢字的y1區0-83個地址都存下來,叫做y0ram,
第二行中文的y1區0-83個地址都存下來叫做 y1ram  
每當顯示到這兩個地址的時候,就把這兩個ram緩存保存下來,
再顯示下一行的時候進行移位沒然后數據或運算在寫到控制器里,就可以了,
當然也可以按照控制器的地址來劃分,y1就叫y1ram,y3就叫y3ram,這樣在數據保存的時候進行移位,而且還節約了84*2字節的內存,效果是一樣的,
可以用一張圖來表示
   原理.png
在程序中
   原理 - 副本.png
然后再從主函數里調用
   6ZCYTEO1{0@3@H)J[NZAFEX.png
再說一下字庫吧,因為畢竟不是完整真正的字庫,所以顯示不知尋址來的,是查表來的,字庫呢,分為兩部分呢,一部分是索引,放在后面,一部分是點陣數據,放前面,比如我查找到"滾"是結構體中第0個元素索引中
那就調取播放圖標進行顯示,其他同理
F8ZX_SQ6N[`"3~8P~%NYU.png

  
實際效果如下
  
   nEO_IMG_WP_20150721_00_32_58_Pro.jpg nEO_IMG_WP_20150721_00_23_59_Pro.jpg nEO_IMG_WP_20150721_00_22_46_Pro.jpg nEO_IMG_WP_20150721_00_22_11_Pro.jpg
  
代碼部分,完整版
  1. /*
  2. 顯示12*12的字體,任意地址,上下錯開也解決了
  3. */
  4. #include<reg51.h>
  5. #include"Nokia5110Lcd.h"
  6. #include "lcd5110font.c"

  7. #include<intrins.h>
  8. #define   nop() _nop_()
  9. #define uchar unsigned char
  10. #define uint unsigned int

  11. uchar xdata Y0Ram[84]; //第0行漢字的臨時緩存
  12. uchar xdata Y1Ram[84];
  13. uchar xdata Y2Ram[84];
  14. uchar xdata Y3Ram[84];
  15. void delay(int t)
  16. {
  17.         uchar i;
  18.         while (t--)
  19.         {
  20.                 for (i=0;i<125;i++)
  21.                         {}
  22.         }
  23. }
  24. void Lcd5110WriteDta(uchar dat)
  25. {
  26.         unsigned char i;
  27.         sce=0;
  28.         dc=1;
  29.         for (i=0;i<8;i++)
  30.         {
  31.                 if (dat&0x80)
  32.                         sdin=1;
  33.                 else
  34.                         sdin=0;
  35.                 dat=dat<<1;
  36.                 sclk=0;
  37.                 nop();
  38.                 sclk=1;
  39.         }
  40.         dc=1;
  41.         sce=1;
  42.         sdin=1;
  43. }
  44. void Lcd5110WriteCMD(uchar dat)
  45. {
  46.         unsigned char i;
  47.         sce=0;
  48.         dc=0;
  49.         for (i=0;i<8;i++)
  50.         {
  51.                 if (dat&0x80)
  52.                         sdin=1;
  53.                 else
  54.                         sdin=0;
  55.                 dat=dat<<1;
  56.                 sclk=0;
  57.                 nop();
  58.                 sclk=1;

  59.         }
  60.         dc=1;
  61.         sce=1;
  62.         sdin=1;
  63. }
  64. /*---------------------------------------
  65. LCD_init: 3310LCD初始化
  66. 編寫日期:20080918
  67. -----------------------------------------  */
  68. void Lcd5110Init(void)
  69. {
  70.         char i;
  71.         // res=0;
  72.         // delay(10);
  73.         // res=1; //以上三句 不用也行
  74.         Lcd5110WriteCMD(0x21 );//初始化Lcd,功能設定使用擴充指令
  75.         Lcd5110WriteCMD(0xb2 );//設定液晶偏置電壓
  76.         //Lcd5110WriteCMD(0xc0);//設定液晶偏置電壓 //調試用 顯示全黑
  77.         Lcd5110WriteCMD(0x02 );//溫度校正
  78.         Lcd5110WriteCMD(0x13 );//1:48
  79.         Lcd5110WriteCMD(0x20 );//使用基本指令
  80.         Lcd5110WriteCMD(0x0C );//設定顯示模式,正常顯示
  81.         for (i=0;i<84;i++)
  82.         {
  83.                 Y0Ram[i]=Y1Ram[i]=Y2Ram[i]=Y3Ram[i]=0;
  84.         }
  85. }
  86. /*-------------------------------------------
  87. LCD_set_XY: 設置LCD坐標函數
  88. 輸入參數:X:0-83  Y:0-5
  89. 編寫日期:20080918
  90. ---------------------------------------------*/
  91. void Lcd5110SetXY(uchar X,Y)
  92. {
  93.         Lcd5110WriteCMD(0x40 | Y  );// 垂直方向 0-5
  94.         Lcd5110WriteCMD(0x80 | X  );// 水平方向0-83
  95. }
  96. /*------------------------------------------
  97. LCD_clear: LCD清屏函數
  98. 編寫日期:20080918
  99. --------------------------------------------*/
  100. void Lcd5110Clear(void)
  101. {
  102.         unsigned char t;
  103.         unsigned char k;
  104.         Lcd5110SetXY(0,0);
  105.         for (t=0;t<6;t++)
  106.         {
  107.                 for (k=0;k<84;k++)
  108.                         Lcd5110WriteDta(0x00);
  109.         }
  110. }
  111. /*---------------------------------------------
  112. LCD_write_shu: 顯示8(寬)*16(高)點陣列數字字母符號等半角類

  113. addr:寫入地址
  114. row: 第幾行 對于6*8點陣 實際5*7留有空邊,字高8個點, 屏幕一共6行  豎著48個點
  115. dd:字符
  116. -----------------------------------------------*/
  117. void Lcd5110Write6x8AtAddr(uchar row, addr, dat)
  118. {
  119.         unsigned char i;

  120.         dat=dat-32; //ascii轉換為字庫偏移地址
  121.         Lcd5110SetXY(addr, row-1);// 某行的某個地址 行1-6地址0-83
  122.         for (i=0; i<6;i++)
  123.         {
  124.                 Lcd5110WriteDta(Ascii6x8[dat*6+i]);
  125.         }

  126. }
  127. void Lcd5110show6x8AscWithNoAddr(uchar  dat)//顯示一個6*8點陣
  128. {
  129.         uchar i;
  130.         dat-=32;
  131.         for (i=0; i<6;i++)
  132.                 Lcd5110WriteDta(Ascii6x8[dat*6+i]);
  133. }


  134. void Lcd5110String6x8(uchar row , addr, uchar *p)
  135. {

  136.         Lcd5110SetXY(addr, row);// 列,頁

  137.         while (*p!='\0')
  138.         {
  139.                 Lcd5110show6x8AscWithNoAddr(*p++);
  140.         }

  141. }
  142. void Lcd5110show8x16AscAtAddr(uchar row,addr,  dat)
  143. {
  144.         uchar i ;
  145.         dat-=32;
  146.         Lcd5110SetXY(addr,row);
  147.         for (i=0; i<8;i++)
  148.                 Lcd5110WriteDta(Ascii8x16[dat*16+i]);
  149.         Lcd5110SetXY(addr,row+1);
  150.         for (i=8; i<16;i++)
  151.                 Lcd5110WriteDta(Ascii8x16[dat*16+i]);
  152. }


  153. /*
  154. 行 范圍 1-6一共6行,但在行=6的時候會顯示不全
  155. */
  156. void Lcd5110String8x16(uchar row , addr, uchar *p)
  157. {
  158.         //不再用8*16的ascii了,直接屏蔽掉,想用的時候在解除屏蔽即可
  159.         uchar dat;
  160.         while (*p!='\0')
  161.         {
  162.                 dat =*p;
  163.                 Lcd5110show8x16AscAtAddr(row-1 ,addr, dat);
  164.                 *p++;
  165.                 addr+=8;
  166.         }
  167. }

  168. void Lcd5110DisplayAscii8x12AtAddr(uchar row,addr, dat)
  169. {

  170.         uchar i, LocalHalfWidth,LocalFullWidth; //半寬字體,全寬字體
  171.         LocalHalfWidth=8;//8*12的字體,光看上面一半8字節
  172.         LocalFullWidth=16;//8*12的字體,上下兩行就是16字節

  173.         dat-=32;
  174.         if (row==0)//按照4行顯示,首行為0,地址就是0-3行,不是控制器的地址
  175.         {
  176.                 Lcd5110SetXY(addr, row);// 列,頁
  177.                 for (i=0; i<LocalHalfWidth;i++) //上半部分 12個像素
  178.                 {
  179.                         Lcd5110WriteDta(Ascii8x12[dat*LocalFullWidth+i]);
  180.                 }
  181.                 Lcd5110SetXY(addr, row+1);// 列,頁
  182.                 for (i=LocalHalfWidth; i<LocalFullWidth;i++) //下半部分 12個像素
  183.                 {
  184.                         Y0Ram[addr+i-LocalHalfWidth]=Ascii8x12[dat*LocalFullWidth+i]; //第0行的下半部分12個字節存起來
  185.                         Lcd5110WriteDta(Y0Ram[addr+i-LocalHalfWidth] | Y1Ram[addr+i-LocalHalfWidth]<<4 );
  186.                 }

  187.         }
  188.         if (row==1)
  189.         {
  190.                 Lcd5110SetXY(addr, row);// 列,頁
  191.                 for (i=0; i<LocalHalfWidth;i++) //上半部分 12個像素
  192.                 {
  193.                         Y1Ram[addr+i]=Ascii8x12[dat*LocalFullWidth+i];//第1行上半部分存起來
  194.                         Lcd5110WriteDta(Y1Ram[addr+i]<<4 | Y0Ram[addr+i]);
  195.                 }
  196.                 Lcd5110SetXY(addr, row+1);// 列,頁
  197.                 for (i=LocalHalfWidth; i<LocalFullWidth;i++) //下半部分 12個像素
  198.                 {
  199.                         Lcd5110WriteDta(Ascii8x12[dat*LocalFullWidth+i]<<4 | Ascii8x12[dat*LocalFullWidth+i-LocalHalfWidth]>>4  );
  200.                 }

  201.         }

  202.         if (row==2)//按照4行顯示,首行為0,地址就是0-3行,不是控制器的地址
  203.         {
  204.                 Lcd5110SetXY(addr, row+1);// 列,頁
  205.                 for (i=0; i<LocalHalfWidth;i++) //上半部分 12個像素
  206.                 {
  207.                         Lcd5110WriteDta(Ascii8x12[dat*LocalFullWidth+i]);
  208.                 }
  209.                 Lcd5110SetXY(addr, row+2);// 列,頁
  210.                 for (i=LocalHalfWidth; i<LocalFullWidth;i++) //下半部分 12個像素
  211.                 {
  212.                         Y2Ram[addr+i-LocalHalfWidth]=Ascii8x12[dat*LocalFullWidth+i]; //第0行的下半部分12個字節存起來
  213.                         Lcd5110WriteDta(Y2Ram[addr+i-LocalHalfWidth] | Y3Ram[addr+i-LocalHalfWidth]<<4 );
  214.                 }

  215.         }
  216.         if (row==3)//按照4行顯示的話,地址就是0-3行
  217.         {
  218.                 Lcd5110SetXY(addr, row+1);// 列,頁
  219.                 for (i=0; i<LocalHalfWidth;i++) //上半部分 12個像素
  220.                 {
  221.                         Y3Ram[addr+i]=Ascii8x12[dat*LocalFullWidth+i];//第1行上半部分存起來
  222.                         Lcd5110WriteDta(Y3Ram[addr+i]<<4 | Y2Ram[addr+i]);
  223.                 }
  224.                 Lcd5110SetXY(addr, row+2);// 列,頁
  225.                 for (i=LocalHalfWidth; i<LocalFullWidth;i++) //下半部分 12個像素
  226.                 {
  227.                         Lcd5110WriteDta(Ascii8x12[dat*LocalFullWidth+i]<<4 | Ascii8x12[dat*LocalFullWidth+i-LocalHalfWidth]>>4);
  228.                 }

  229.         }
  230. }

  231. void Lcd5110String8x12(uchar row,addr,uchar *p)
  232. {
  233.         uchar dat;
  234.         while (*p!='\0')
  235.         {
  236.                 dat =*p;
  237.                 Lcd5110DisplayAscii8x12AtAddr(row ,addr, dat);
  238.                 *p++;
  239.                 addr+=8;
  240.                 //delay(6000); //調試用 慢動作
  241.         }
  242. }
  243. /*---------------------------------------------
  244.               在某行某地址顯示中文字符,
  245. -----------------------------------------------*/
  246. void DispOneChs12x12(uchar row,addr,uchar *p)
  247. {

  248.         uchar i, LocalHalfWidth,LocalFullWidth; //半寬字體,全寬字體
  249.         if (row==0)//按照4行顯示,首行為0,地址就是0-3行,不是控制器的地址
  250.         {
  251.                 Lcd5110SetXY(addr, row);// 列,頁
  252.                 for (i=0; i<12;i++) //上半部分 12個像素
  253.                 {
  254.                         Lcd5110WriteDta(p[i]);
  255.                 }
  256.                 Lcd5110SetXY(addr, row+1);

  257.                 /*字體的下半部分需要存儲起來*/
  258.                 for (i=12; i<24;i++) //下半部分 12個像素
  259.                 {
  260.                         Y0Ram[addr+i-12]=p[i]; //第0行的下半部分12個字節存起來,數組要保存文字的下半部分和這些數據在什么位置 0-83
  261.                         Lcd5110WriteDta(Y0Ram[addr+i-12] | Y1Ram[addr+i-12]<<4 );
  262.                 }

  263.         }
  264.         if (row==1)
  265.         {
  266.                 Lcd5110SetXY(addr, row);// 列,頁
  267.                 for (i=0; i<12;i++) //上半部分 12個像素
  268.                 {
  269.                         Y1Ram[addr+i]=p[i];//第1行上半部分存起來
  270.                         Lcd5110WriteDta(Y1Ram[ addr+i]<<4 |Y0Ram[addr+i]);
  271.                 }
  272.                 Lcd5110SetXY(addr, row+1);// 列,頁
  273.                 for (i=12; i<24;i++) //下半部分 12個像素
  274.                 {
  275.                         Lcd5110WriteDta(p[i]<<4 | p[i-12]>>4  );
  276.                 }

  277.         }
  278.         if (row==2)//按照4行顯示,首行為0,地址就是0-3行,不是控制器的地址
  279.         {
  280.                 Lcd5110SetXY(addr, row+1);// 列,頁
  281.                 for (i=0; i<12;i++) //上半部分 12個像素
  282.                 {
  283.                         Lcd5110WriteDta(p[i]);
  284.                 }
  285.                 Lcd5110SetXY(addr, row+2);

  286.                 /*字體的下半部分需要存儲起來*/
  287.                 for (i=12; i<24;i++) //下半部分 12個像素
  288.                 {
  289.                         Y2Ram[addr+i-12]=p[i]; //第0行的下半部分12個字節存起來,數組要保存文字的下半部分和這些數據在什么位置 0-83
  290.                         Lcd5110WriteDta(Y2Ram[addr+i-12] | Y3Ram[addr+i-12]<<4 );
  291.                 }

  292.         }
  293.         if (row==3)
  294.         {
  295.                 Lcd5110SetXY(addr, row+1);// 列,頁
  296.                 for (i=0; i<12;i++) //上半部分 12個像素
  297.                 {
  298.                         Y3Ram[addr+i]=p[i];//第1行上半部分存起來
  299.                         Lcd5110WriteDta(Y3Ram[ addr+i]<<4 |Y2Ram[addr+i]);
  300.                 }
  301.                 Lcd5110SetXY(addr, row+2);// 列,頁
  302.                 for (i=12; i<24;i++) //下半部分 12個像素
  303.                 {
  304.                         Lcd5110WriteDta(p[i]<<4 | p[i-12]>>4  );
  305.                 }

  306.         }

  307. }
  308. void FindHZ12fromGBK12(uchar row ,addr ,uchar *dat)
  309. {
  310.         uchar i;
  311.         for (i=0;i<LenthOfGbk12;i++) //索引
  312.         {
  313.                 if ( (GBK12[i].Index[0] == dat[0]) && (GBK12[i].Index[1] == dat[1])) break;
  314.         }

  315.         DispOneChs12x12(row,addr,GBK12[i].Matrix);

  316. }
  317. void Lcd5110ChString12(uchar row,addr, uchar*dat)
  318. {
  319.         while (*dat)
  320.         {
  321.                 FindHZ12fromGBK12(row,addr,dat);
  322.                 addr+=12;//12寬的字體,寫完一個x地址加12
  323.                 dat+=2;        //dat是索引數據,一個漢字的索引由兩個字節組成
  324.         }
  325. }
  326. //顯示一個 16*16的漢字,參數是指針,指向點陣數組
  327. void DispOneChs16x16(uchar row,addr,uchar *dat)
  328. {
  329.         uchar i,j;
  330.         for (j=0; j<2;j++)
  331.         {
  332.                 Lcd5110SetXY(addr, row+j);// 列,頁
  333.                 for (i=0; i<16;i++)
  334.                         Lcd5110WriteDta(dat[16*j+i]);

  335.         }
  336. }
  337. /*從字庫里 用 漢字的指針 查找一個漢字 并顯示出來   調用上面的函數 */
  338. void FindHZ16fromGBK16(uchar row,addr, uchar *dat)
  339. {
  340.         uchar i;
  341.         for (i=0;i<LenthOfGbk16;i++) //索引
  342.         {
  343.                 if ( (GBK16[i].Index[0] == dat[0]) && (GBK16[i].Index[1] == dat[1])) break;
  344.         }
  345.         switch (row)
  346.         {
  347.         case 0:
  348.                 row=0;
  349.                 break;
  350.         case 1:
  351.                 row=2;
  352.                 break;
  353.         case 2:
  354.                 row=4;
  355.                 break;
  356.         default:
  357.                 break;
  358.         }
  359.         DispOneChs16x16(row,addr,GBK16[i].Matrix);//把這個漢字顯示出來,指向點陣區

  360. }
  361. //把數組的漢字顯示出來,傳入的參數是指針 雙引號
  362. void Lcd5110ChString16(uchar row,addr,uchar *dat)
  363. {
  364.         while (*dat)
  365.         {
  366.                 FindHZ16fromGBK16(row,addr,dat);
  367.                 addr+=16;//16寬的字體,寫完一個x地址加16
  368.                 dat+=2;        //dat是索引數據,一個漢字的索引由兩個字節組成
  369.         }
  370. }
  371. /*使用一個6x8的字體顯示一個3位整數*/
  372. void Lcd5110DispHundredIn6x8(uchar row,addr, int dat)
  373. {
  374.         Lcd5110SetXY(addr,row);
  375.         Lcd5110show6x8AscWithNoAddr(48+dat/100);
  376.         Lcd5110show6x8AscWithNoAddr(48+dat%100/10);
  377.         Lcd5110show6x8AscWithNoAddr(48+dat%100%10);
  378. }
  379. //row,地址,傳入
  380. void Lcd5110DispHundredIn12x12(uchar row,addr,int dat)
  381. {
  382.         Lcd5110DisplayAscii8x12AtAddr(row,addr,48+dat/100);
  383.         Lcd5110DisplayAscii8x12AtAddr(row,addr+8,48+dat%100/10);
  384.         Lcd5110DisplayAscii8x12AtAddr(row,addr+16,48+dat%100%10);

  385. }
復制代碼




_~6CN6GWTX1XN81EYWX]JX0.png

評分

參與人數 1威望 +50 黑幣 +50 收起 理由
admin + 50 + 50 共享資料的積分獎勵!

查看全部評分

回復

使用道具 舉報

ID:1989 發表于 2018-1-16 13:50 | 顯示全部樓層
試了,似乎缺少文件。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
先锋男人资源站| 亚洲成人最新网站| 在线观看黄网址| 天天干天天色天天干| 丰满爆乳一区二区三区| 一区二区三区在线视频111| 久久婷婷开心| 国产精品观看在线亚洲人成网| 国产69精品久久久久9999| 久久久成人的性感天堂| 久久久91精品国产| 色婷婷av一区二区三区在线观看| 亚洲免费成人av电影| 日韩av在线导航| 亚洲精品在线观看网站| 精品国产乱子伦一区| 日韩一区精品视频| 国产亚洲毛片在线| 久久国产欧美| 日日夜夜一区二区| 另类小说综合欧美亚洲| 久久狠狠亚洲综合| 国产成人在线观看| 日韩aaa久久蜜桃av| 91久久偷偷做嫩草影院电| 免费一级欧美片在线观看网站| 国产精品2区| 巨人精品**| 精品一区二区三区在线| 99久久婷婷国产综合精品电影√| 福利一区二区| 免费一级欧美片在线观看网站| 成人福利一区| 亚洲警察之高压线| 五月久久久综合一区二区小说| 在线看片你懂得| 国产午夜在线观看| 黄a在线观看| 忘忧草在线日韩www影院| 国产极品一区| 香蕉久久夜色精品国产更新时间| 日本一区二区三区视频| 国产在线88av| 国产精品久久久久久久久免费高清 | 日本综合视频| 风间由美性色一区二区三区四区| 亚洲婷婷丁香| 欧美日韩精品| 另类综合日韩欧美亚洲| 99这里都是精品| 自拍av一区二区三区| 色香蕉成人二区免费| 色综合激情久久| 亚洲国产天堂网精品网站| 深夜福利日韩在线看| 国产999精品| 欧美大香线蕉线伊人久久| 一级黄色片播放| 性欧美videossex精品| 五十路六十路七十路熟婆| 免费在线观看一级片| 一级片视频网站| 黄网站在线观看永久免费| 国产女人18毛片水真多18| 精品亚洲乱码一区二区| 中文字幕日本人妻久久久免费| luxu259在线中文字幕| 成 人免费视频播放| 在线视频1区| 麻豆mv在线看| 你微笑时很美电视剧整集高清不卡 | 国产精品国产三级国产传播| 一个人看的www日本高清视频| 青青青青久久精品国产一百度| 夜夜操 天天摸| 日本免费中文字幕在线| av国产精品| 午夜日韩av| 成人av网站免费| 色综合久久久久久久久久久| 亚洲免费一级电影| 国产精品女视频| 伊人久久大香线蕉成人综合网| 国产精品区在线| 99re6热在线精品视频| 国产伦精品一区二区三区视频痴汉| 精品中文字幕不卡在线视频| 深夜福利视频在线观看| 欧洲成人一区| 欧美1区2区| 久久久久成人黄色影片| 6080亚洲精品一区二区| 久久免费在线观看| 亚洲成色最大综合在线| 国产乱国产乱老熟300部视频| 日韩精品在线不卡| 色就是色欧美色图| 免费a在线观看| 久久国产精品免费一区二区三区| 日韩午夜激情| 一区二区三区四区在线播放| 亚洲精品一区二区三区婷婷月| 国产精品久久久精品| www成人免费| 人成免费在线视频| 天天干视频在线观看| 作爱视频免费观看视频在线播放激情网 | 九九免费视频| 国产蜜臀在线| 国产精品美女久久久久人| 亚洲精品极品| 一区二区久久久久| 美女av一区二区三区| 日韩免费av电影| 丝袜熟女一区二区三区 | 欧美日韩综合一区二区| 欧美五级在线观看视频播放| 国产一二三区在线| 亚洲欧洲美洲国产香蕉| 成人午夜电影小说| 精品国产一区二区三区四区四| 国产热re99久久6国产精品| 97在线免费公开视频| 日韩精品一区三区| 变态黄色小视频网站| 欧美极品免费| 日本不卡视频在线| 欧美在线视频日韩| 国产精品视频导航| 波多结衣在线观看| 在线免费看91| 性色a∨人人爽网站| 日韩精品久久久久久久软件91| 久久99精品久久久久久| 欧美日韩在线三级| 91丨九色丨国产在线| 在线成人精品视频| 可以免费看毛片的网站| 欧美色图俺去了| 亚洲s色大片| 我不卡影院28| 亚洲精品日韩专区silk| 欧美激情亚洲一区| 日本丰满少妇xxxx| 亚洲熟女综合色一区二区三区| 男女免费网站| 视频一区中文字幕精品| 99视频在线观看一区三区| 日韩精品中文字幕久久臀| 蜜桃视频日韩| 在线看的片片片免费| 你懂的网站在线播放| 久久久久毛片| 播五月开心婷婷综合| 亚洲美女av在线| 男女啪啪的视频| 粉嫩aⅴ一区二区三区| 爱爱永久免费视频| 日韩激情网站| 亚洲色图在线看| 91超碰caoporn97人人| 一区二区三区 日韩| 亚洲国产精品欧美久久| 成人av福利| 久久亚洲风情| 精品国产91洋老外米糕| 亚洲精品高清视频| 女人十八岁毛片| 亚洲成人影院少妇| 国产精品v欧美精品v日本精品动漫| 色婷婷亚洲精品| 国产精品一区二区欧美黑人喷潮水 | 色综合一个色综合| 亚洲一区二区免费| 91视频免费在观看| 天天爽夜夜爽| 色综合综合网| 欧美日韩在线观看视频| 亚洲影院在线看| 四季av中文字幕| 麻豆美女网站| 日韩精品水蜜桃| 一本色道亚洲精品aⅴ| 国产精华一区二区三区| 日韩av手机在线免费观看| 97在线观看| 91日韩免费| 欧美精品99久久久**| 视频二区一区| 日本精品人妻无码77777| 人猿泰山h版在线观看| 91精品国产麻豆国产在线观看| 91成人网在线| 亚洲精品高清视频| 91中文字幕在线视频| 四虎影院观看视频在线观看 | 日韩久久久久久久久久久久久| 免费观看成人毛片| 9191在线观看| 精品视频网站| 欧美专区亚洲专区| 日韩一区二区三区资源| 亚洲中文无码av在线| 另类视频在线| 成人va在线观看| 国产91精品青草社区| 国产熟妇搡bbbb搡bbbb| 白天操夜夜操| 最新国产拍偷乱拍精品 | 91精品国产综合久久久久久久久久| 一区二区日本伦理| www.超碰在线.com| 欧洲精品一区二区三区| 综合久久久久久| 国产精品区一区| 一级片视频在线观看| 欧美高清另类hdvideosexjaⅴ | 久久精品久久综合| 久久久久久久久久av| 无码一区二区精品| 天堂在线看视频| 久久久久久久波多野高潮日日| 国产亚洲精品成人av久久ww| 午夜福利123| 涩涩漫画在线观看| 国产亚洲在线观看| 欧美xxxx18性欧美| 欧美多人猛交狂配| 日本福利在线观看| 国产精品一二三四| 国产精品入口日韩视频大尺度| 欧美成欧美va| 婷婷在线播放| 亚洲欧洲精品一区二区三区| 久久精品99| www.天堂av.com| 亚洲欧美日本国产| 91麻豆精品国产91| 亚洲综合色在线观看| 99免费视频| 男女男精品视频网| 国产999在线| 国产精品7777777| 深夜成人影院| 一本大道久久a久久精品综合| 五月天激情图片| 国产美女视频一区二区二三区| 91精品国产成人观看| 色偷偷噜噜噜亚洲男人| 丁香激情五月少妇| 麻豆网在线观看| 中文字幕精品一区二区精品绿巨人| 久久riav二区三区| 毛片中文字幕| 欧美www视频在线观看| 色偷偷噜噜噜亚洲男人的天堂| 少妇太紧太爽又黄又硬又爽小说| 免费在线看黄网站| 综合久久综合久久| 日韩精品福利片午夜免费观看| 欧美成人高清手机在线视频| 亚洲天天影视网| 欧美精品在线极品| 日韩精品视频免费播放| 久久久久毛片| 精品捆绑美女sm三区| 你懂的在线观看网站| 色影院视频在线| 亚洲精品视频免费看| 91九色在线观看| 欧美在线 | 亚洲| 日韩av在线中文字幕| 久久精品夜夜夜夜夜久久| 青青草国产在线观看| 国产69精品久久久久9999人| 欧美一区二区三区白人| 国产女主播在线播放| 国产网友自拍视频导航网站在线观看| 日韩美女啊v在线免费观看| 韩国无码av片在线观看网站| 9l视频自拍蝌蚪9l视频| 国产在线国偷精品免费看| 国产精品美女xx| 欧美日韩久久中文字幕| 久久久夜精品| 99久久精品免费看国产一区二区三区 | 五月婷婷亚洲综合| 一区二区三区在线免费看| 亚洲欧美国产另类| 九九热精品免费视频| 欧美一级免费| 亚洲人高潮女人毛茸茸| 久久久99精品| 日韩免费成人| 中文字幕精品久久| 中文在线观看免费网站| 91久久偷偷做嫩草影院电| 综合网日日天干夜夜久久| 91精品国产乱码在线观看| 红杏aⅴ成人免费视频| zzijzzij亚洲日本成熟少妇| 日本一区二区免费电影| 精品在线99| 91精品国产91久久久久久久久| 国产伦精品一区二区三区免.费| 亚洲澳门在线| 国产日韩在线看| 欧美性性性性性ⅹxxbbbb| 久久综合九色| 开心色怡人综合网站| 欧洲一级毛片| 不卡一区二区三区四区| 男女裸体影院高潮| 天海翼一区二区三区免费| 亚洲男人天堂av网| 黄色小视频免费网站| 最新超碰在线| 日韩免费在线观看| 老妇女50岁三级| 亚洲春色h网| 日韩av电影免费观看高清| 2018中文字幕在线观看| 久久99精品久久久久久| 超碰免费在线公开| 亚洲人av在线| 中文字幕国产一区| 亚州精品一二三区| 激情图片在线观看高清国产| 亚洲国产成人精品电影| 风韵丰满熟妇啪啪区老熟熟女| 欧美videosex性欧美黑吊| 日韩欧美一区二区三区在线| 91精品国产高清一区二区三蜜臀| 日本韩国欧美超级黄在线观看| 日本伊人精品一区二区三区介绍 | 久久精品日产第一区二区 | 国产成人免费91av在线| 亚洲国产精品区| 成人免费高清在线| 日日摸天天爽天天爽视频| 在线不卡日本v二区707| 日韩欧美国产1| 成人毛片在线播放| 黄色在线成人| 蜜桃久久精品乱码一区二区 | 欧美日韩免费一区| 中文字幕第69页| 亚洲美女久久| 91嫩草国产在线观看| 992tv在线观看在线播放| 亚洲图片欧美视频| 激情五月深爱五月| 欧美综合在线视频观看 | 国产男女无套免费网站| 欧美bbbbb| 97国产精东麻豆人妻电影| 精品51国产黑色丝袜高跟鞋| 亚洲精品一区二区三区婷婷月| 国产美女明星三级做爰| 久久精品国产免费看久久精品| 每日在线观看av| 青草在线视频在线观看| 色婷婷久久av| 思思99精品视频在线观看| 中文字幕在线观看一区二区| 自拍偷拍视频亚洲| 久久免费av| 午夜精品区一区二区三| а√天堂官网中文在线| 久久精品99无色码中文字幕| 精品一区二区观看| 亚洲福利一区二区三区| 五月婷婷一区二区| 天堂午夜影视日韩欧美一区二区| 国产成人精品视频免费看| jizz欧美| 亚洲最大的网站| 青青久草在线| 在线观看精品自拍私拍| 日韩不卡高清| 亚洲成人av中文| 无码人妻精品一区二| 国产精品自拍av| 美女黄色一级视频| 精品国产乱码久久久久久1区2匹| 日韩欧美亚洲v片| 色婷婷av在线| 97香蕉超级碰碰久久免费软件| h视频免费看| 欧美一区二区三区四区久久| 亚洲精品国产手机| 国产精品亲子伦对白| 午夜剧场免费在线观看| 每日更新成人在线视频| 在线观看国产一级片| 亚洲精品456| 91制片厂免费观看| 成人精品一区二区三区电影| 国产精品三级久久久久久电影| 超碰在线94|