久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
STM32 TFT3.5寸源程序,驅動芯片IL9488
[打印本頁]
作者:
huangfu112000
時間:
2022-3-22 15:43
標題:
STM32 TFT3.5寸源程序,驅動芯片IL9488
#include "stm32f10x.h"
#include "ili9325.h"
void DataToWrite(u16 data)
{
GPIOB->ODR=((GPIOB->ODR&0x00ff)|(data&0xff00));
Clr_nWr;
Set_nWr;
GPIOB->ODR=((GPIOB->ODR&0x00ff)|(data<<8));
}
/*
* 函數名:LCD_GPIO_Config
* 描述 :根據FSMC配置LCD的I/O
* 輸入 :無
* 輸出 :無
* 調用 :內部調用
*/
static void LCD_GPIO_Config(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
/* Enable the FSMC Clock */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_FSMC, ENABLE);
/* config lcd gpio clock base on FSMC */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC | RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE , ENABLE);
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
/* config tft back_light gpio base on the PT4101 */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13;
GPIO_Init(GPIOD, &GPIO_InitStructure);
/* config tft BL gpio */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1 ;
GPIO_Init(GPIOA, &GPIO_InitStructure);
/* config tft data lines base on FSMC
* data lines,FSMC-D0~D15: PD 14 15 0 1,PE 7 8 9 10 11 12 13 14 15,PD 8 9 10
*/
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_8 | GPIO_Pin_9 |
GPIO_Pin_10 | GPIO_Pin_14 | GPIO_Pin_15;
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7 | GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 |
GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13 | GPIO_Pin_14 |
GPIO_Pin_15;
GPIO_Init(GPIOE, &GPIO_InitStructure);
/* config tft control lines base on FSMC
* PD4-FSMC_NOE :LCD-RD
* PD5-FSMC_NWE :LCD-WR
* PD7-FSMC_NE1 :LCD-CS
* PD11-FSMC_A16 :LCD-DC
*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_Init(GPIOD, &GPIO_InitStructure);
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_11 ;
GPIO_Init(GPIOD, &GPIO_InitStructure);
/* tft control gpio init */
GPIO_SetBits(GPIOD, GPIO_Pin_13); // RST
GPIO_SetBits(GPIOD, GPIO_Pin_4); // RD = 1
GPIO_SetBits(GPIOD, GPIO_Pin_5); // WR = 1
GPIO_SetBits(GPIOD, GPIO_Pin_11); // RS
GPIO_SetBits(GPIOD, GPIO_Pin_7); // CS = 1
GPIO_SetBits(GPIOC, GPIO_Pin_5); // BL = 1
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //按鍵 OK
GPIO_Init(GPIOA, &GPIO_InitStructure);
// right up left down
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_1 | GPIO_Pin_5 | GPIO_Pin_6;
GPIO_Init(GPIOE, &GPIO_InitStructure);
}
/*
* 函數名:LCD_FSMC_Config
* 描述 :LCD FSMC 模式配置
* 輸入 :無
* 輸出 :無
* 調用 :內部調用
*/
static void LCD_FSMC_Config(void)
{
FSMC_NORSRAMInitTypeDef FSMC_NORSRAMInitStructure;
FSMC_NORSRAMTimingInitTypeDef p;
p.FSMC_AddressSetupTime = 0x02; //地址建立時間
p.FSMC_AddressHoldTime = 0x00; //地址保持時間
p.FSMC_DataSetupTime = 0x05; //數據建立時間
p.FSMC_BusTurnAroundDuration = 0x00;
p.FSMC_CLKDivision = 0x00;
p.FSMC_DataLatency = 0x00;
p.FSMC_AccessMode = FSMC_AccessMode_B; // 一般使用模式B來控制LCD
FSMC_NORSRAMInitStructure.FSMC_Bank = FSMC_Bank1_NORSRAM1;
FSMC_NORSRAMInitStructure.FSMC_DataAddressMux = FSMC_DataAddressMux_Disable;
FSMC_NORSRAMInitStructure.FSMC_MemoryType = FSMC_MemoryType_NOR;
FSMC_NORSRAMInitStructure.FSMC_MemoryDataWidth = FSMC_MemoryDataWidth_16b;
FSMC_NORSRAMInitStructure.FSMC_BurstAccessMode = FSMC_BurstAccessMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalPolarity = FSMC_WaitSignalPolarity_Low;
FSMC_NORSRAMInitStructure.FSMC_WrapMode = FSMC_WrapMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignalActive = FSMC_WaitSignalActive_BeforeWaitState;
FSMC_NORSRAMInitStructure.FSMC_WriteOperation = FSMC_WriteOperation_Enable;
FSMC_NORSRAMInitStructure.FSMC_WaitSignal = FSMC_WaitSignal_Disable;
FSMC_NORSRAMInitStructure.FSMC_ExtendedMode = FSMC_ExtendedMode_Disable;
FSMC_NORSRAMInitStructure.FSMC_WriteBurst = FSMC_WriteBurst_Disable;
FSMC_NORSRAMInitStructure.FSMC_ReadWriteTimingStruct = &p;
FSMC_NORSRAMInitStructure.FSMC_WriteTimingStruct = &p;
FSMC_NORSRAMInit(&FSMC_NORSRAMInitStructure);
/* Enable FSMC Bank1_SRAM Bank */
FSMC_NORSRAMCmd(FSMC_Bank1_NORSRAM1, ENABLE);
}
volatile void LCD_delay(char j)
{
volatile u16 i;
while(j--)
for(i=7200;i>0;i--);
}
static void LCD_Rst(void)
{
GPIO_ResetBits(GPIOD, GPIO_Pin_13);
LCD_delay(10);
GPIO_SetBits(GPIOD, GPIO_Pin_13 );
LCD_delay(10);
}
static void WriteComm(u16 CMD)
{
*(__IO u16 *) (Bank1_LCD_C) = CMD;
}
static void WriteData(u16 tem_data)
{
*(__IO u16 *) (Bank1_LCD_D) = tem_data;
}
/**********************************************
Lcd初始化函數
***********************************************/
void Lcd_Initialize(void)
{
LCD_GPIO_Config();
LCD_FSMC_Config();
LCD_delay(20);
LCD_Rst();
WriteComm(0x11);
LCD_delay(20);
WriteComm(0xD0);
WriteData(0x07);
WriteData(0x42);
WriteData(0x18);
WriteComm(0xD1);
WriteData(0x00);
WriteData(0x07);//07
WriteData(0x10);
WriteComm(0xD2);
WriteData(0x01);
WriteData(0x02);
WriteComm(0xC0);
WriteData(0x10);
WriteData(0x3B);
WriteData(0x00);
WriteData(0x02);
WriteData(0x11);
WriteComm(0xC5);
WriteData(0x03);
WriteComm(0x00C8);//Gamma Setting,有12個參數,P114
WriteData(0x0000);//P114
WriteData(0x0014);//P114
WriteData(0x0033);//P114
WriteData(0x0010);//P114
WriteData(0x0000);//P114
WriteData(0x0016);//P114
WriteData(0x0044);//P114
WriteData(0x0036);//P114
WriteData(0x0077);//P114
WriteData(0x0000);//P114
WriteData(0x000F);//P114
WriteData(0x0000);//P114
WriteComm(0x3A);
WriteData(0x55);
WriteComm(0x2A);
WriteData(0x00);
WriteData(0x00);
WriteData(0x01);
WriteData(0x3F);
WriteComm(0x2B);
WriteData(0x00);
WriteData(0x00);
WriteData(0x01);
WriteData(0xE0);
LCD_delay(120);
WriteComm(0x29);
WriteComm(0x2c);
WriteComm(0x36); //Set_address_mode
WriteData(0x28); //橫屏,從左下角開始,從左到右,從下到上
Lcd_Light_ON;
// Lcd_ColorBox(0,0,320,480,Yellow);Delay(5000000);
// Lcd_ColorBox(0,0,320,480,Blue);Delay(5000000);
// Lcd_ColorBox(0,0,320,480,Red);Delay(5000000);
// Lcd_ColorBox(0,0,320,480,Green);Delay(5000000);
// Lcd_ColorBox(0,0,320,480,Magenta);Delay(5000000);
// Lcd_ColorBox(0,0,320,480,Cyan);Delay(5000000);
// Lcd_ColorBox(0,0,320,480,White);Delay(5000000);
}
/******************************************
函數名:Lcd寫命令函數
功能:向Lcd指定位置寫入應有命令或數據
入口參數:Index 要尋址的寄存器地址
ConfigTemp 寫入的數據或命令值
******************************************/
void LCD_WR_REG(u16 Index,u16 CongfigTemp)
{
*(__IO u16 *) (Bank1_LCD_C) = Index;
*(__IO u16 *) (Bank1_LCD_D) = CongfigTemp;
}
/************************************************
函數名:Lcd寫開始函數
功能:控制Lcd控制引腳 執行寫操作
************************************************/
void Lcd_WR_Start(void)
{
*(__IO u16 *) (Bank1_LCD_C) = 0x2C;
}
void BlockWrite(unsigned int Xstart,unsigned int Xend,unsigned int Ystart,unsigned int Yend)
{
//ILI9481
Ystart += 24;
Yend += 24;
WriteComm(0x2a);
WriteData(Xstart>>8);
WriteData(Xstart&0xff);
WriteData(Xend>>8);
WriteData(Xend&0xff);
WriteComm(0x2b);
WriteData(Ystart>>8);
WriteData(Ystart&0xff);
WriteData(Yend>>8);
WriteData(Yend&0xff);
WriteComm(0x2c);
}
u16 GetPoint(u16 x,u16 y)
{
volatile u16 a;
WriteComm(0x2a);
WriteData(x>>8);
WriteData(x&0xff);
WriteComm(0x2b);
WriteData(y>>8);
WriteData(y&0xff);
a=0;a=0;a=0;a=0;a=0;
WriteComm(0x2E);
a=0;a=0;a=0;a=0;a=0;a=0;
a = *(__IO u16 *) (Bank1_LCD_D);
a=0;a=0;a=0;a=0;a=0;
a = *(__IO u16 *) (Bank1_LCD_D);
return a;
// return (a&0xf800)|((a&0x03f0)<<1)|((a&0x3)<<3)|(b>>13);
}
/**********************************************
函數名:Lcd塊選函數
功能:選定Lcd上指定的矩形區域
注意:xStart和 yStart隨著屏幕的旋轉而改變,位置是矩形框的四個角
入口參數:xStart x方向的起始點
ySrart y方向的終止點
xLong 要選定矩形的x方向長度
yLong 要選定矩形的y方向長度
返回值:無
***********************************************/
void Lcd_ColorBox(u16 xStart,u16 yStart,u16 xLong,u16 yLong,u16 Color)
{
u32 temp;
BlockWrite(xStart,xStart+xLong-1,yStart,yStart+yLong-1);
for (temp=0; temp<xLong*yLong; temp++)
{
*(__IO u16 *) (Bank1_LCD_D) = Color>>8;
*(__IO u16 *) (Bank1_LCD_D) = Color;
}
}
/************************************************
函數名:Lcd寫開始函數
功能:控制Lcd控制引腳 執行寫操作
入口參數:無
返回值:無
************************************************/
void Lcd_CMD_WR_Start(void)
{
Clr_Cs;
Clr_Rs;
DataToWrite(0x0000);
Clr_nWr;
Set_nWr;
Set_Rs;
}
/**********************************************
函數名:Lcd全屏擦除函數
功能:將Lcd整屏擦為指定顏色
入口參數:color 指定Lcd全屏顏色 RGB(5-6-5)
返回值:無
***********************************************/
void Lcd_Clear(u16 Color)
{
u32 temp;
Lcd_Start();
if((Color>>8)==(Color&0x00ff))
{
DataToWrite(Color);
for (temp = 0; temp < 76800*2-1; temp++)
{
Clr_nWr;
Set_nWr;
}
}
else
{
for (temp = 0; temp < 76800; temp++)
{
DataToWrite(Color);
Clr_nWr;
Set_nWr;
}
}
}
/*************************************************
函數名:Lcd光標起點定位函數
功能:指定320240液晶上的一點作為寫數據的起始點
入口參數:x 坐標 0~239
y 坐標 0~319
返回值:無
*************************************************/
void Lcd_SetCursor(u16 x,u16 y)
{
//坐標調轉
LCD_WR_REG(0x20,y);//水平坐標
LCD_WR_REG(0x21,x);//垂直坐標
}
/**********************************************
函數名:Lcd塊選函數
功能:選定Lcd上指定的矩形區域
注意:xStart和 yStart隨著屏幕的旋轉而改變,位置是矩形框的四個角
入口參數:xStart x方向的起始點
ySrart y方向的終止點
xLong 要選定矩形的x方向長度
yLong 要選定矩形的y方向長度
返回值:無
***********************************************/
void Lcd_SetBox(u16 xStart,u16 yStart,u16 xLong,u16 yLong,u16 x_offset,u16 y_offset)
{
Lcd_SetCursor(xStart+x_offset,yStart+y_offset);
LCD_WR_REG(0x0050,yStart+y_offset);//水平GRAM起始位置
LCD_WR_REG(0x0051,yStart+yLong-1+y_offset);//水平GRAM終止位置
//x,y坐標對調
LCD_WR_REG(0x0052,xStart+x_offset);//垂直 GRAM起始位置
LCD_WR_REG(0x0053,xStart+xLong-1+x_offset);//垂直GRAM終止位置
}
void Lcd_ClearCharBox(u16 x,u16 y,u16 Color)
{
u32 temp;
Lcd_SetBox(x*8,y*16,8,16,0,0);
Lcd_WR_Start();
Set_Rs;
for (temp=0; temp < 128; temp++)
{
DataToWrite(Color);
Clr_nWr;
Set_nWr;
}
}
////////////////////////////////////////////////////////////////////////////////
void DrawPixel(u16 x, u16 y, int Color)
{
BlockWrite(x,x,y,y);
*(__IO u16 *) (Bank1_LCD_D) = Color>>8;
*(__IO u16 *) (Bank1_LCD_D) = Color;
}
/******************************************
函數名:Lcd圖像填充100*100
功能:向Lcd指定位置填充圖像
入口參數:Index 要尋址的寄存器地址
ConfigTemp 寫入的數據或命令值
******************************************/
void LCD_Fill_Pic(u16 x, u16 y,u16 pic_H, u16 pic_V, const unsigned char* pic)
{
unsigned long i;
unsigned int j;
// WriteComm(0x36); //Set_address_mode
// WriteData(0x08); //橫屏,從左下角開始,從左到右,從下到上
BlockWrite(x,x+pic_H-1,y,y+pic_V-1);
for (i = 0; i < pic_H*pic_V*2; i++)
{
// j=pic[i];
// j=j<<8;
// j=j+pic[i+1];
*(__IO u16 *) (Bank1_LCD_D) = pic[i];
}
// WriteComm(0x36); //Set_address_mode
// WriteData(0x68);
}
//開始全屏寫,設置地址
void Lcd_Start(void)
{
Lcd_SetCursor(0,239);
LCD_WR_REG(0x0050,0x00);//垂直 GRAM起始位置
LCD_WR_REG(0x0051,239);//垂直GRAM終止位置
LCD_WR_REG(0x0052,0x00);//水平GRAM起始位置
LCD_WR_REG(0x0053,319);//水平GRAM終止位置
Lcd_WR_Start();
}
/****************************************************************************
* 名 稱:void Put32_32HZ(u16 x,u16 y,const unsigned char *c,u16 charColor,u16 bkColor,u8 flag)
* 功 能:在指定座標顯示一個點陣的漢字
* 入口參數:x 行座標
* y 列座標
* charColor 字符的顏色
* bkColor 字符背景顏色
* 出口參數:無
* 說 明:顯示范圍限定為可顯示的ascii碼
* 調用方法:ssd1289_PutChar(10,10,'a',0x0000,0xffff, 1);
****************************************************************************/
// void Put32_32HZ(u16 x,u16 y,const unsigned char *c,u16 charColor,u16 bkColor,u8 flag)
// {
// u8 i,j,k;
// u8 tmp_char=0;
// Lcd_SetBox(x,y,32,32,0,0);
// Lcd_WR_Start();
// Set_Rs;
// for (i=31;i>=0;i--)//32行
// {
// for (j=3;j>=0;j--)//每行4字節
// {
// tmp_char=c[4*i+j];
// for (k=0;k<8;k++)//每字節8位
// {
// if (((tmp_char << k) & 0x80) == 0x80)
// {
// DataToWrite(charColor);
// Clr_nWr;
// Set_nWr;
// }
// else
// {
// if(flag){
// DataToWrite(bkColor);
// Clr_nWr;
// Set_nWr;
// }
// }
// }
// }
// }
// Set_Cs;
// }
/****************************************************************************
* 名 稱:void Put16_16HZ(u16 x,u16 y,const unsigned char *c,u16 charColor,u16 bkColor,u8 flag)
* 功 能:在指定座標顯示一個點陣的漢字
* 入口參數:x 行座標
* y 列座標
* charColor 字符的顏色
* bkColor 字符背景顏色
* 出口參數:無
* 說 明:顯示范圍限定為可顯示的ascii碼
* 調用方法:ssd1289_PutChar(10,10,'a',0x0000,0xffff, 1);
****************************************************************************/
void Put16_16HZ(u16 x,u16 y,const unsigned char *c,u16 charColor,u16 bkColor,u8 flag)
{
char i,j,k;
u8 tmp_char=0;
Lcd_SetBox(x,y,16,16,0,0);
Lcd_SetCursor(x,y+15);
Lcd_WR_Start();
Set_Rs;
for (i=0;i<16;i++)//16行
{
for (j=0;j<2;j++)//每行2字節
{
tmp_char=c[2*(15-i)+j];
for (k=0;k<8;k++)//每字節8位
{
if (((tmp_char << k) & 0x80) == 0x80)
{
DataToWrite(charColor);
Clr_nWr;
Set_nWr;
}
else
{
DataToWrite(bkColor);
Clr_nWr;
Set_nWr;
}
}
}
}
Set_Cs;
}
void Put8_16Char(u16 x,u16 y,const unsigned char *ascii_8x16,u8 ch,u16 charColor,u16 bkColor,u8 flag)
{
char i=0,j=0;
u8 tmp_char=0;
Lcd_SetBox(x,y,8,16,0,0);
Lcd_SetCursor(x,y+15);
Lcd_WR_Start();
Set_Rs;
for (i=0;i<16;i++)
{
tmp_char=ascii_8x16[((ch-0x20)*16)+(15-i)];
for (j=0;j<8;j++)
{
if(((tmp_char<<j) & 0x80) == 0x80)
{
DataToWrite(charColor);
Clr_nWr;
Set_nWr;
}
else
{
DataToWrite(bkColor); //0x7BEF
Clr_nWr;
Set_nWr;
}
}
}
Set_Cs;
}
void Put16x32Num(u16 x,u16 y,const unsigned char *num_16x32,u8 ch,u16 charColor,u16 bkColor,u8 flag)
{
char i=0,j=0,k=0;
u8 tmp_char=0;
Lcd_SetBox(x,y,16,32,0,0);
Lcd_SetCursor(x,y+31);
Lcd_WR_Start();
for (i=0;i<32;i++)
{
for (k=0;k<2;k++)
{
tmp_char=num_16x32[ch*32*2+(31-i)*2+k];
for (j=0;j<8;j++)
{
if(((tmp_char<<j) & 0x80) == 0x80)
{
DataToWrite(charColor);
Clr_nWr;
Set_nWr;
}
else
{
DataToWrite(bkColor); //0x7BEF
Clr_nWr;
Set_nWr;
}
}
}
}
}
void LCD_Scan_Set(char i)
{
if(i==0) {LCD_WR_REG(0x0003,0x1038);Lcd_SetCursor(0,239);}//
if(i==1) {LCD_WR_REG(0x0003,0x1028);Lcd_SetCursor(0,239);}//
if(i==2) {LCD_WR_REG(0x0003,0x1008);Lcd_SetCursor(319,0);}//
if(i==3) {LCD_WR_REG(0x0001,0x0100);return;}//
LCD_WR_REG(0x0050,0x00);//垂直GRAM起始位置
LCD_WR_REG(0x0051,239);//垂直GRAM終止位置
LCD_WR_REG(0x0052,0x00);//水平GRAM起始位置
LCD_WR_REG(0x0053,319);//水平GRAM終止位置
Lcd_WR_Start();
}
/*---------------------------------------------------------------------------
功能: 豎直滾屏
入口參數:line_num 滾動行數
---------------------------------------------------------------------------*/
void lcd_scrol_screen(unsigned int line_num)
{
LCD_WR_REG(0x006a, line_num);// set scrolling line
LCD_WR_REG(0x0061, 0x0003);//enable scrol
// LCD_WR_REG(0x006a, line_num);// set scrolling line
// LCD_WR_REG(0x0061, 0x0001);////disable scrol
}
/*---------------------------------------------------------------------------
功能: 禁止豎直滾屏
---------------------------------------------------------------------------*/
void lcd_scrol_disable(void)
{
LCD_WR_REG(0x006a, 0x0000);// set scrolling line
LCD_WR_REG(0x0061, 0x0001);//disable scrol
}
復制代碼
Keil代碼下載:
uc_gui_4.63_IL9488.7z
(2.37 MB, 下載次數: 28)
2022-3-22 21:57 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
免费在线观看黄色av
|
97国产在线观看
|
欧美日韩亚洲一区二区
|
欧美 中文字幕
|
91 在线
|
亚洲视频免费观看
|
九一视频在线播放
|
91精品国产91久久综合桃花
|
羞羞的视频免费观看
|
日韩一区二区福利
|
一级欧美
|
国产91亚洲精品
|
久久综合久久自在自线精品自
|
精品欧美乱码久久久久久
|
亚洲精品大全
|
中文字幕色站
|
亚洲国产成人精品女人久久久
|
美女午夜影院
|
午夜三级视频
|
久久久久国产精品午夜一区
|
美女爽到呻吟久久久久
|
91影库
|
美女视频.
|
日韩午夜网站
|
成人在线中文字幕
|
av黄色免费在线观看
|
欧美一级做a爰片免费视频 国产美女特级嫩嫩嫩bbb片
|
国产精品色婷婷久久58
|
国产中文区二幕区2012
|
香蕉久久久
|
欧美一级特黄aaa大片在线观看
|
日韩电影免费观看中文字幕
|
欧美大片一区二区
|
国产免费一区二区三区最新6
|
精品久久久久一区二区国产
|
国产精品成av人在线视午夜片
|
91大神在线资源观看无广告
|
99精品国产一区二区三区
|
亚洲综合无码一区二区
|
国产精品久久久久久吹潮
|
亚洲理论在线观看电影
|