初级会员

- 积分
- 52
- 金钱
- 52
- 注册时间
- 2020-5-7
- 在线时间
- 10 小时
|
1金钱
各位,大神打扰了,请教一个问题,是关于TFT的
51单片机怎么画直线,线段,写入缓存里面,再显示出来,
我现在做了一个显示曲线,是实时显示的那种,但是现在问题是,当下一次显示时,上一次的曲线依然保留在屏幕上,他们说,把数据写入缓存再显示出来就不会了,
下面是别人spi接口的写一像素函数
bit _OLED_Overlap = 1;
uint8 _buf[WIDTH * PAGES]; //全屏缓存,横向WIDTH个像素,纵向PAGES页,页内每8个像素作为一个字节,共WIDTH * PAGES字节
/* 绘制一个像素至缓存
Draw one pixel to buffer */
void OLED_DrawPixel(uint8 x, uint8 y)
{
uint8 mask;
uint8 *pBuf;
if (_x > WIDTH - 1)
{
_x = 0;
_y += 1;
}
if (_y > HEIGHT - 1)
{
_y = 0;
}
pBuf = &_buf[(y >> 3) * WIDTH + x];
mask = 1 << (y & 7);
if (_OLED_Reverse)
{
*pBuf++ &= ~mask;
}
else
{
*pBuf++ |= mask;
}
}
/* 绘制垂直线至缓存
Draw vertical line to buffer*/
void OLED_DrawVLine(uint8 x, uint8 y, uint8 w)
{
uint8 mask;
uint8 *pBuf;
if (x > WIDTH - 1)
x = WIDTH - 1;
if (y + w > HEIGHT)
w = HEIGHT - y;
while (w--)
{
pBuf = &_buf[(y >> 3) * WIDTH + x];
mask = 1 << (y & 7);
if (_OLED_Reverse)
{
*pBuf++ &= ~mask;
}
else
{
*pBuf++ |= mask;
}
y++;
}
}
如果改成并口的话应该怎么写,谢谢各位了
|
|