u16 Read_Pixel(u16 x,u16 y)
{
u16 temp;
if(x>=LCD_SIZE_X || y>=LCD_SIZE_Y)
return(0);
LCD_CS_L;
LCD_RS_L;
LCD_RD_H;
GPIOA->ODR = 0x0000;
LCD_WR_L;
LCD_WR_H;
GPIOA->ODR = 0x0020;
LCD_WR_L;
LCD_WR_H;
LCD_RS_H;
LCD_RD_H;
GPIOA->ODR = y>>8;
LCD_WR_L;
LCD_WR_H;
GPIOA->ODR = y;
LCD_WR_L;
LCD_WR_H;
LCD_RS_L;
LCD_RD_H;
GPIOA->ODR = 0x0000;
LCD_WR_L;
LCD_WR_H;
GPIOA->ODR = 0x0021;
LCD_WR_L;
LCD_WR_H;
LCD_RS_H;
LCD_RD_H;
GPIOA->ODR = x>>8; //我使用的是横屏模式
LCD_WR_L;
LCD_WR_H;
GPIOA->ODR = x;
LCD_WR_L;
LCD_WR_H;
LCD_RS_L;
LCD_RD_H;
GPIOB->ODR = 0x0000;
LCD_WR_L;
LCD_WR_H;
GPIOB->ODR = 0x0022;
LCD_WR_L;
LCD_WR_H;
GPIOB->CRL=0X88888888; //PB0-7 上拉输入
GPIOB->ODR=0X00FF; //全部输出高
LCD_RS_H;
LCD_RD_L;
LCD_RD_H;
LCD_RD_L;
LCD_RD_H;
LCD_RD_L;
LCD_RD_H;
temp = GPIOA->IDR;
temp = temp<<8;
LCD_RD_L;
LCD_RD_H;
temp|= (GPIOA->IDR&0xff);
GPIOA->CRL=0X33333333; //PB0-7 上拉输出
GPIOA->ODR=0X00FF; //全部输出高
return (((temp) & 0x1f)<<11) + (((temp>>5) & 0x3f)<<5) + (((temp>>11) & 0x1f)); //转换成RGB数据
}
|