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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6150|回復: 0
收起左側

51單片機TFT9325液晶顯示SD卡中的圖片源程序

[復制鏈接]
ID:83710 發表于 2015-6-23 16:54 | 顯示全部樓層 |閱讀模式
經過近兩個星期的奮戰!今天我敢說我成功了,因為我在液晶屏上成功的顯示了彩色圖片!真是不容易啊。回顧這些日子,我沒睡一個安穩覺,實驗達一百多次,與現在興奮相比,都是浮云了!再一次次失敗中我也在總結經驗,一直在問位什么?下面:
我開始做TFT液晶實在做完SD卡之后,雖然我沒有弄文件系統,可是SD作為一個超大容量的RAM還是可以的,這一點我在技術上是能實現的!那么怎樣才能把SD卡上的數據準確無誤的顯示在TFT液晶上呢?沒有任何頭緒,雖然做過12864但是你看看TFT的數據手冊,你就明白了什么叫做不是一個級別!做之前,我在網上瘋狂的搜著關于TFT液晶的資料,最后只找到了一份英文的TFT手冊,我不懂英文!但還沒有中文的!在網上的大都是只言片語的簡介!于是開始用金山詞霸翻譯!大約有一個星期左右,關于TFT大概的知識懂了一點g點,當然現在的我也只是知道一點!因為他的功能實在是太強了!知道了控制器是9325的!知道了他的數據操作時分很多種的(16,8,SPI,...)。知道了他內部的寄存器很多!但是那是的我認為,不就是一塊液晶嗎!能難倒哪去?我現在才知道我當時錯了!大概有個了解后,我開始搭接實驗板!單片機驅動液晶調試正式開始,按照8位數據傳輸模式連接接口!數據按照一次傳送8位,傳兩次(因為不論是數據還是指令都是16位的數據結構)高字節在前的順序!開始我只想運行刷屏的程序,可是遲遲不能運行,后來發現是數據跟指令沒搞明白!RS=1表示寫的是數據,RS=0表示寫的是寄存器的地址。然后初始化,這里的初始話我是調用別人的做好的!后來程序開始在液晶上運行了!當然是刷屏程序!接下來市讓屏幕上顯示彩條!就想電視里的那種一條紅一條綠,一樣,這是為了測試液晶的GRAM你能可靠地控制!我實現這一步也要感謝網絡!正式網絡我才一點點的積累經驗,實現了自如的控制GRAM的顯示!(我想在液晶的任意坐標系內顯示任意的顏色或色條。┑竭@里我不禁想起了12864,因為當你控制了這一點時,你基本上離顯示圖片不遠了!因為你控制了這一點很容易的能實現行和場的掃描!有了行場掃描你就可以顯示一幅畫了!當然這是理論上!這是前天晚上的事!昨天一天我都在調一個東西!那就是關鍵的也是最后一步!SD卡和TFT液晶聯合試驗!單片機要完成從SD卡中讀取數據!然后送入到TFT液晶的控制器里,并且提供行掃描光和場掃描!SD卡的程序我以前調好的,直接拿來用!液晶的也拿來用,組合起來用XDATE中的RAM作為聯系兩個期間的數據緩沖單元!當我寫入內存卡一幅圖片!想著顯示出的畫面有多好時!打開電源!掃描開始!然而我失望了!出來的竟然是無數的紅綠白黑的點!俗稱花屏!為什么會這樣那?我開始考慮!是不是取模有問題!然后改變image2lcd的取模方式!復制粘貼!WINHEX中查看數據!這樣反復,還是不能顯示!相反出現了一個有趣的現象!出現了很多網文!這是行場不同步,像素沒有正確的寫入自己的位置造成的!這個問題從昨天下午直到半夜!還是沒解決!心情很郁悶!但是我總感覺我里成功很近了,一步之遙!昨晚上做到很晚,夢里還在想!結果誰大了,7:30才醒!醒了我就在想這個網文!我忽略了一個細節!當時我掃描方式時!我曾采用過行逆程顯示!結果表明有一部分圖像顯現出來!不過在邊緣!,里面都是網文!和亂踢八糟的彩色點!只有在邊緣是細膩的圖像,只有一小塊,而且每隔多少行一塊!突然一個想法在腦子里閃現!是不是我重復數據掃描了!有一想我主程序里是512個掃描周期,分了兩個字節!總共是1024!而我讀一扇區只有512,所以肯定有一半的數據是重復的!,想到這里我想趕緊驗證下!電話響了!安保近的,說工地有事讓我去趟!我也沒顧得實驗!直接去工地,辦完事回來吧程序改了,512改成了256,這樣正是512字節,然后又實驗!這次能顯示圖像的輪廓了,但是很模糊!我有WINHEX開查看!是字節未按高字節在前的順序,排列,調整后,一點也不大差的顯示在屏幕上了!IMAGE取模吧JPG轉換成BMP的彩色圖片寬度240,高度320,16位色,高位在前,水平掃描!生成BIN文件存入存儲卡中OVER!當然在中間還要用串口查看數據是否正確!

}
程序:


  1. #include <reg52.h>

  2. #define uchar unsigned char

  3. #define uint unsigned int

  4. #define DATE P0

  5. //bit flage;

  6. //SD卡的

  7. sbit p1_7=P1^7;

  8. sbit CS=P2^0; //片選信號(低電平有效)

  9. sbit DATEIN =P2^1;//主-從數據輸入

  10. sbit SCLK=P2^2;//時鐘信號

  11. sbit DATEOUT=P2^3;//從-主數據輸出



  12. //液晶的

  13. sbit RS=P3^7;

  14.    sbit RW=P3^6;

  15.    sbit RES=P3^5;

  16.    sbit CStft=P3^4;





  17. uint btime;

  18. uchar c;



  19. unsigned char bdata dat;

  20. sbit dat_0=dat^0;

  21. sbit dat_1=dat^1;

  22. sbit dat_2=dat^2;

  23. sbit dat_3=dat^3;

  24. sbit dat_4=dat^4;

  25. sbit dat_5=dat^5;

  26. sbit dat_6=dat^6;

  27. sbit dat_7=dat^7;



  28. bit is_init;//決定是否延時;

  29.   uchar lpp;

  30. unsigned char fhz;//返回值

  31. uchar fhz_buff; //讀返回值中間量

  32. unsigned char xdata tab[512];





  33. void delay(uint time)

  34. {  while(time)

  35.   time--;

  36. }



  37. //**********************************************

  38. /*讀sd卡子程序,無返回值,有參函數,參數為要寫入DATEIN數據線的字節*/

  39. void write(unsigned char wr_)// 寫入一個字節SD卡

  40. {

  41.             dat=wr_;

  42.           DATEIN=dat_7;

  43.    

  44.           SCLK=0;

  45.        if(is_init)delay(200);

  46.         if(!is_init)delay(2);

  47.           SCLK=1;

  48.           if(is_init) delay(200);

  49.             if(!is_init)delay(2);

  50.    

  51.           DATEIN=dat_6;

  52.    

  53.           SCLK=0;

  54.           if(!is_init)delay(2);

  55.          if(is_init)delay(200);

  56.           SCLK=1;

  57.           if(is_init) delay(200);

  58.           if(!is_init)delay(2);



  59.           DATEIN=dat_5;

  60.    

  61.           SCLK=0;

  62.          if(is_init)delay(200);

  63.           if(!is_init)delay(2);

  64.           SCLK=1;

  65.           if(is_init) delay(200);

  66.          if(!is_init)delay(2);



  67.           DATEIN=dat_4;

  68.    

  69.           SCLK=0;

  70.          if(is_init)delay(200);

  71.            if(!is_init)delay(2);

  72.           SCLK=1;

  73.           if(is_init) delay(200);

  74.           if(!is_init)delay(2);



  75.          DATEIN=dat_3;

  76.    

  77.           SCLK=0;

  78.          if(is_init)delay(200);

  79.            if(!is_init)delay(2);

  80.           SCLK=1;

  81.           if(is_init) delay(200);

  82.          if(!is_init)delay(2);



  83.          DATEIN=dat_2;

  84.    

  85.           SCLK=0;

  86.          if(is_init)delay(200);

  87.            if(!is_init)delay(2);

  88.           SCLK=1;

  89.           if(is_init) delay(200);

  90.            if(!is_init)delay(2);



  91.          DATEIN=dat_1;

  92.    

  93.           SCLK=0;

  94.          if(is_init)delay(200);

  95.           if(!is_init)delay(2);

  96.           SCLK=1;

  97.           if(is_init) delay(200);

  98.           if(!is_init)delay(2);



  99.          DATEIN=dat_0;

  100.    

  101.           SCLK=0;

  102.          if(is_init)delay(200);

  103.            if(!is_init)delay(2);

  104.           SCLK=1;

  105.           if(is_init) delay(200);

  106.           if(!is_init)delay(2);

  107. }

  108. unsigned char read()// 讀取一個字節SD卡

  109. {

  110.           DATEOUT=1;

  111.          SCLK=1;

  112.       if(is_init)delay(200);

  113.         if(!is_init)delay(2);

  114.       SCLK=0;

  115.        if(is_init)delay(200);

  116.        if(!is_init)delay(2);

  117.        dat_7=DATEOUT;



  118.         SCLK=1;

  119.       if(is_init)delay(200);

  120.       if(!is_init)delay(2);

  121.       SCLK=0;

  122.        if(is_init)delay(200);

  123.         if(!is_init)delay(2);

  124.        dat_6=DATEOUT;



  125.        SCLK=1;

  126.       if(is_init)delay(200);

  127.         if(!is_init)delay(2);

  128.       SCLK=0;

  129.        if(is_init)delay(200);

  130.         if(!is_init)delay(2);

  131.        dat_5=DATEOUT;



  132.        SCLK=1;

  133.       if(is_init)delay(200);

  134.          if(!is_init)delay(2);

  135.       SCLK=0;

  136.        if(is_init)delay(200);

  137.        if(!is_init)delay(2);

  138.        dat_4=DATEOUT;



  139.       SCLK=1;

  140.       if(is_init)delay(200);

  141.          if(!is_init)delay(2);

  142.       SCLK=0;

  143.        if(is_init)delay(200);

  144.             if(!is_init)delay(2);

  145.        dat_3=DATEOUT;



  146.      SCLK=1;

  147.       if(is_init)delay(200);

  148.             if(!is_init)delay(2);

  149.       SCLK=0;

  150.        if(is_init)delay(200);

  151.             if(!is_init)delay(2);

  152.        dat_2=DATEOUT;



  153.       SCLK=1;

  154.       if(is_init)delay(200);

  155.                if(!is_init)delay(2);

  156.       SCLK=0;

  157.        if(is_init)delay(200);

  158.               if(!is_init)delay(2);

  159.        dat_1=DATEOUT;





  160.       SCLK=1;

  161.       if(is_init)delay(200);

  162.                   if(!is_init)delay(2);

  163.       SCLK=0;

  164.        if(is_init)delay(200);

  165.                    if(!is_init)delay(2);

  166.        dat_0=DATEOUT;





  167.    return (dat);



  168. }



  169. void restsd()//復位SD卡

  170. {  uchar i;

  171.   uchar pcmd[6]={0x40,0x00,0x00,0x00,0x00,0x95};

  172.   is_init=1;



  173.   CS=1;

  174.   for(i=0;i<15;i++)

  175.   {

  176.                 //120時鐘

  177.     write(0xff);

  178.   }





  179.   

  180.   

  181.        CS=1;

  182.     write(0xff);//據說是提高兼容性

  183.     CS=0;//片選開



  184.     write( pcmd[0]);

  185.     write( pcmd[1]);

  186.     write( pcmd[2]);

  187.     write( pcmd[3]);

  188.     write( pcmd[4]);

  189.     write( pcmd[5]);



  190.     fhz=read();

  191.   for(;;)

  192.   {

  193.     fhz=read();

  194.     if(fhz==0x01)break;





  195.   }



  196.   

  197.   CS=1;

  198.   write(0xff);



  199. }









  200. void initsd()//初始化

  201. {

  202. //

  203.    uchar pcmd[6]={0x41,0x00,0x00,0x00,0x00,0xff};//

  204. //



  205.       CS=1;

  206.     write(0xff);//據說是提高兼容性

  207.     CS=0;//片選開



  208.     write( pcmd[0]);

  209.     write( pcmd[1]);

  210.     write( pcmd[2]);

  211.     write( pcmd[3]);

  212.     write( pcmd[4]);

  213.     write( pcmd[5]);

  214.    

  215.    

  216.     fhz=read();

  217.   for(;;)

  218.   {

  219.     fhz=read();

  220.     if(fhz==0x00)break;





  221.   }



  222.   

  223.   CS=1;

  224.   write(0xff);

















  225. }

  226. void readsd(unsigned long addstart)//讀SD卡物理扇區

  227.       

  228. {  unsigned long sdbuff1,sdbuff2,sdbuff3,sdbuff4;   

  229.    uint j,n;

  230. uchar zh1,zh2,zh3,zh4;

  231.    sdbuff1=addstart;

  232.    sdbuff2=addstart;

  233.    sdbuff3=addstart;

  234.    sdbuff4=addstart;



  235.       zh1=(sdbuff1>>24)&0x000000ff;

  236.        zh2=(sdbuff2>>16)&0x000000ff;

  237.          zh3=(sdbuff3>>8)&0x000000ff;

  238.          zh4=sdbuff4&0x000000ff;

  239.    // uchar pcmd[6]={0x51,zh1,zh2,zh3,zh4,0xff};//原來這里是高地址字節在前地地址在后啊201012月14日邏輯扇區在253*512=0X0001fa00







  240.    CS=1;

  241.     write(0xff);//據說是提高兼容性

  242.     CS=0;//片選開



  243.     write( 0x51);

  244.     write( zh1);

  245.     write( zh2);

  246.     write( zh3);

  247.     write( zh4);

  248.     write( 0xff);

  249.     DATEOUT=1;

  250.    

  251.   for(;;)

  252.   {

  253.     fhz=read();

  254.     if(fhz==0x00)break;





  255.   }

  256.   DATEOUT=1;



  257.   for(;;)

  258.   {

  259.     fhz=read();

  260.     if(fhz==0xfe)break;





  261.   }



  262.   DATEOUT=1;

  263.   n=0;

  264. for(j=512;j;j--)

  265. {  

  266.    tab[n]=read();

  267.     n++;



  268. }

  269. fhz=read();

  270. fhz=read();

  271. CS=1;

  272. write(0xff);

















  273. }

  274. /*

  275. //********************************一下是液晶的

  276. void delay1ms(uint x) //延時程序

  277. {  unsigned char a,b,c;

  278.          uint z;

  279.          for(z=x;z;z--)

  280.          {

  281.          for(c=8;c>0;c--)

  282.              for(b=197;b>0;b--)

  283.             for(a=2;a>0;a--);

  284.             }

  285.   }



  286. void write_date(uchar hight,uchar low) //定義搞八位字節和低八位字節寫然后寫入數據

  287. {

  288.    CStft=0;

  289.    RS=1;

  290.    DATE=hight;

  291.    RW=0;

  292.    RW=1;

  293.    DATE=low;

  294.    RW=0;

  295.      RW=1;

  296.    CStft=1;



  297. }

  298. void write_cmd(uchar hight,uchar low )//定義搞八位字節和低八位字節寫然后寫入指令

  299. {



  300.      CStft=0;

  301.    RS=0;

  302.    DATE=hight;

  303.    RW=0;

  304.    RW=1;

  305.    DATE=low;

  306.    RW=0;

  307.      RW=1;

  308.    CStft=1;



  309. }

  310. void wr_cmd_date(uint cmmd,uint datesh) //寫入指令和相應的數據;

  311. {

  312.    uchar g,d,g1,d1;              /*  2010年12月21日與天津第四項目部終于做完了9325的TFT262萬色彩色液晶,感覺比他媽的12864爽多了,

  313.                                               畢竟一個是黑白的一個是彩色的,呵呵,加油啊,下一步是組合SD卡和TFT液晶,讓液晶顯示彩色圖片,加油吧!*/

  314.                         



  315.        d=datesh;

  316.        d=(d&0x00ff);

  317.        g=(datesh>>8)&0x0ff;

  318.       

  319.       

  320.        d1=cmmd;

  321.        d1=(d1&0x00ff);

  322.        g1=(cmmd>>8)&0x0ff;

  323.       

  324.     write_cmd(g1,d1 );

  325.      write_date(g,d ) ;





  326. }

  327. void initTFT()//注意:這里是用的設置庫,網絡上多的很,感謝網絡啊。

  328. {   

  329.   wr_cmd_date(0x0001,0x0100); //s1-s720

  330.   wr_cmd_date(0x0002,0x0700);

  331.   wr_cmd_date(0x0003,0x1030);

  332. wr_cmd_date(0x0004,0x0000);

  333.   wr_cmd_date(0x0008,0x0207);

  334.   wr_cmd_date(0x0009,0x0000);

  335.   wr_cmd_date(0x000A,0x0000);

  336.   wr_cmd_date(0x000C,0x0000);

  337.   wr_cmd_date(0x000D,0x0000);

  338. wr_cmd_date(0x000F,0x0000);

  339. //power on sequence VGHVGL

  340.   wr_cmd_date(0x0010,0x0000);  

  341.   wr_cmd_date(0x0011,0x0007);

  342.   wr_cmd_date(0x0012,0x0000);

  343.   wr_cmd_date(0x0013,0x0000);

  344. //vgh

  345.   wr_cmd_date(0x0010,0x1290);  

  346.   wr_cmd_date(0x0011,0x0227);

  347. delay1ms(100);

  348. //vregiout

  349.   wr_cmd_date(0x0012,0x001d); //0x001b

  350. delay1ms(100);

  351. //vom amplitude

  352.   wr_cmd_date(0x0013,0x1500);

  353. delay1ms(100);

  354. //vom H

  355.   wr_cmd_date(0x0029,0x0018);

  356.   wr_cmd_date(0x002B,0x000D);



  357. //gamma

  358.   wr_cmd_date(0x0030,0x0004);

  359.   wr_cmd_date(0x0031,0x0307);

  360.   wr_cmd_date(0x0032,0x0002);// 0006

  361.   wr_cmd_date(0x0035,0x0206);

  362.   wr_cmd_date(0x0036,0x0408);

  363.   wr_cmd_date(0x0037,0x0507);

  364.   wr_cmd_date(0x0038,0x0204);//0200

  365.   wr_cmd_date(0x0039,0x0707);

  366.   wr_cmd_date(0x003C,0x0405);// 0504

  367.   wr_cmd_date(0x003D,0x0F02);

  368. //ram

  369.   wr_cmd_date(0x0050,0x0000);

  370.   wr_cmd_date(0x0051,0x00EF);

  371.   wr_cmd_date(0x0052,0x0000);

  372.   wr_cmd_date(0x0053,0x013F);

  373.   wr_cmd_date(0x0060,0xA700);

  374.   wr_cmd_date(0x0061,0x0001);

  375.   wr_cmd_date(0x006A,0x0000);

  376. //

  377.   wr_cmd_date(0x0080,0x0000);

  378.   wr_cmd_date(0x0081,0x0000);

  379.   wr_cmd_date(0x0082,0x0000);

  380.   wr_cmd_date(0x0083,0x0000);

  381.   wr_cmd_date(0x0084,0x0000);

  382.   wr_cmd_date(0x0085,0x0000);

  383. //

  384.   wr_cmd_date(0x0090,0x0010);

  385.   wr_cmd_date(0x0093,0x0003);

  386.   wr_cmd_date(0x0095,0x0110);

  387.   wr_cmd_date(0x0097,0x0000);

  388.   wr_cmd_date(0x0098,0x0000);

  389.   wr_cmd_date(0x0007,0x0133);





  390. }

  391. //****************以上是液晶的

  392. void lcm_coordinate(unsigned int x1,unsigned int y1 )//掃描地

  393. {

  394.   wr_cmd_date(0x0050,x1);

  395.   wr_cmd_date(0x0051,x1);

  396.   wr_cmd_date(0x0052,y1);

  397.   wr_cmd_date(0x0053,y1);

  398.   wr_cmd_date(0x0020,x1);

  399.   wr_cmd_date(0x0021,y1);

  400. }

  401. void main()



  402. { unsigned long numb;

  403. unsigned int x,y; //掃描地址;

  404.     uint a;

  405.    uint f,buff_sd_tft;

  406.   uint  m1,m2;

  407. delay1ms(30);

  408.    CS=1;

  409.    RES=0;

  410.    delay1ms(150);

  411.    RES=1;

  412.    delay1ms(50);



  413. //******

  414.    initTFT();

  415. //InitUART(); //串口初始化

  416. is_init=1;

  417. restsd();

  418. initsd();

  419. is_init=0;//提高始終頻率

  420. //p1_7=0;

  421. //********

  422. while(1)

  423. {

  424.   /* x=0;y=0;



  425.    for(;;)

  426.            {

  427.       lcm_coordinate(x,y );

  428.   wr_cmd_date(0x0022,0x0000);

  429. x++;

  430. delay20us();



  431.      if(x==240){x=0;y++;}

  432.      if(y==80)break;                        //檢測是否寫到屏的邊緣 240x320

  433.    

  434.        }



  435.    for(;;)

  436.            {

  437.       lcm_coordinate(x,y );

  438.   wr_cmd_date(0x0022,0xf800);

  439. x++;

  440. delay20us();  //必須加延時,實時勝于雄辯,如果不加延時的話,極易出現花屏,及掃描過高引起的數據無法寫入,他媽的耽誤了我一下午時間。2010年12月22日

  441.      if(x==240){x=0;y++;}

  442.      if(y==160)break;                        //檢測是否寫到屏的邊緣 240x320

  443.    

  444.        }



  445.   for(;;)

  446.            {

  447.       lcm_coordinate(x,y );

  448.   wr_cmd_date(0x0022,0x0000);

  449. x++;

  450. delay20us();  //必須加延時,實時勝于雄辯,如果不加延時的話,極易出現花屏,及掃描過高引起的數據無法寫入,他媽的耽誤了我一下午時間啊!2010年12月22日

  451.      if(x==240){x=0;y++;}

  452.      if(y==240)break;                        //檢測是否寫到屏的邊緣 240x320

  453.    

  454.        }

  455.   for(;;)

  456.            {

  457.       lcm_coordinate(x,y );

  458.   wr_cmd_date(0x0022,0x001f);

  459. x++;

  460. delay20us();  //必須加延時,實時勝于雄辯,如果不加延時的話,極易出現花屏,及掃描過高引起的數據無法寫入,他媽的耽誤了我一下午時間。2010年12月22日

  461.      if(x==240){x=0;y++;}

  462.      if(y==320)break;                        //檢測是否寫到屏的邊緣 240x320

  463.    

  464.        }

  465. }*/



  466. // while(1);

  467. //p1_7=1;

  468.   // btime=65536;



















  469. // SendOneByte(0x88);

  470. x=0;y=0;

  471.    numb=4327936;

  472. do

  473.   {





  474. readsd(numb);//讀物理扇區

  475.       //SendOneByte(0x88);

  476.        f=0;

  477.   for(a=256;a;a--)

  478.       {

  479.       

  480.       m1=tab[f];

  481.      // SendOneByte(m1);

  482.       m1=(m1<<8)&0xff00;

  483.       f++;

  484.       m2=tab[f];

  485.      // SendOneByte(m2);

  486.       f++;

  487.       buff_sd_tft=m1+m2;



  488.       

  489.       lcm_coordinate(x,y );

  490.   wr_cmd_date(0x0022,buff_sd_tft);

  491.            x++;

  492.          delay1ms(1);                                //必須加延時,實時勝于雄辯,如果不加延時的話,極易出現花屏,及掃描過高引起的數據無法寫入,他媽的耽誤了我一下午時間!2010年12月22日

  493.      if(x==240){x=0;y++;}

  494.      if(y==320)y=0;                       //檢測是否寫到屏的邊緣 240x320

  495.        }

  496.       //SendOneByte(0xcc);

  497.       numb=(numb+512);

  498.   }

  499.    while(0x0044620!=numb);

  500. // EA=0;



  501.   //  ES = 0;

  502.    // TR1 = 0;



  503. while(1);







  504. }
復制代碼


回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产精品资源在线 | 国产91视频免费 | 91成人免费观看 | 久久99精品国产自在现线小黄鸭 | 国产成人福利视频在线观看 | 欧美理论片在线 | 精品国产不卡一区二区三区 | 精品中文字幕视频 | 国产成人精品久久二区二区91 | 日韩成人影院在线观看 | 日韩1区2区 | 天天综合国产 | 欧美不卡一区二区 | 中日av| 亚洲不卡在线观看 | www.久久| 欧美日韩亚洲国产综合 | 中文字幕福利视频 | 亚洲 中文 欧美 日韩 在线观看 | 6996成人影院网在线播放 | 麻豆国产一区二区三区四区 | 国产精品二区三区在线观看 | 国产精品久久久久久久久久 | 午夜精品久久久久久久久久久久久 | 国产精品色 | 欧美日韩亚 | 久久6视频 | 亚洲一区二区免费 | 成人在线看片 | 欧美精品一区二区三区在线播放 | 日本精品视频在线 | 国产精产国品一二三产区视频 | 欧美亚洲在线视频 | 天天人人精品 | 亚洲精品美女视频 | 91久久精品一区二区二区 | 电影91久久久 | 中文字幕av亚洲精品一部二部 | 男女啪啪网址 | 香蕉视频久久久 | 亚洲一区二区三区免费视频 |