求助:请教ssd2805设置x和y坐标的函数
屏的分辨率是320*320,但是在设置屏幕的点时,xy的坐标只能最大到255,mcu8080并口的传输是16bit,但是8bit的传输时屏幕没有问题,好像在屏幕读取的时候只能拿到16bit的低字节,忽略高字节void LCD_SetCursor(uint16_t startX, uint16_t startY)
{
uint16_t startX_H, startX_L;
uint16_t endX_H, endX_L;
uint16_t startY_H, startY_L;
uint16_t endY_H, endY_L;
startX_H = (startX>>8)&0x00ff;
startX_L = (startX)&0x00ff;
startX = (startX_L<<8) | startX_H;
startY_H = (startY>>8)&0x00ff;
startY_L = (startY)&0x00ff;
startY = (startY_L<<8) | startY_H;
// 表明是generic packet
Write_Generic_Packet(0x04);
//Set column address
Write_DATA(0x2A);
//Write_DATA(startX_H);
Write_DATA(startX_L);
Write_DATA(0x3f00);
再补充详细一点:mcu data为16位,经2805到st7796后,颜色可以正常设置,但是地址坐标,st7796丢失了高8位的数据,求大神们解答 已经解决了,相对坐标的写入需要通过DCS打包,DCS打包为2个字节,高低位要进行转换.
void LCD_SetCursor(uint16_t startX, uint16_t startY)
{
uint16_t startX_H, startX_L;
uint16_t endX_H, endX_L;
uint16_t startY_H, startY_L;
uint16_t endY_H, endY_L;
startX_H = (startX>>8)&0x00FF;
startX_L = startX&0x00FF;
startX =startX_H | ((startX_L<<8)&0xFF00);
Write_DCS_Packet(2);
Write_REG(0X2A);
//发送3个数据 BGR格式
Write_DATA(startX);
startY_H = (startY>>8)&0x00FF;
startY_L = (startY)&0x00FF;
startY =startY_H | ((startY_L<<8)&0xFF00);
Write_DCS_Packet(2);
Write_REG(0X2B);
//发送3个数据 BGR格式
Write_DATA(startY);
}
页:
[1]