我是用串口驱动12864点阵屏(ST7920)的,现在已经用调用字库设计了菜单。后来想把节目做的绚烂一些,所以想到在
STM32F105上移植STemWin。
参考网上的一些攻略,已经把打点、画线等底层函数写好,且修改了有关文件。但调用STemWin的函数,就是不理会呢!
/******************下面是打点和读点函数,测试可用**********************/
void LCM_PutPixel(uint16_t x, uint16_t y, uint8_t color)
{
uint16_t newHalfWordValue;
uint8_t xHalfWordPlace,xHolfWordOfBit;
if((x>=128)||(y>=64))
return;
xHalfWordPlace = x / 16; //
if(y >= 32)
{
y = y - 32;
xHalfWordPlace = xHalfWordPlace + 8;
}
newHalfWordValue = localcachebuf[y][xHalfWordPlace];
xHolfWordOfBit = x % 0x10;
if(0 == color)
{
newHalfWordValue &= clearBitTable[xHolfWordOfBit];
}
else
{
newHalfWordValue |= setBitTable[xHolfWordOfBit];
}
localcachebuf[y][xHalfWordPlace]=newHalfWordValue;
}
bool LCM_GetPixel(uint16_t x, uint16_t y)
{
uint16_t oldHalfWordValue;
uint8_t xHalfWordPlace,xHolfWordOfBit;
xHalfWordPlace = x / HALF_WORD_OF_ROWS;
if(y >= 32)
{
y = y - 32;
xHalfWordPlace = xHalfWordPlace + 8;
}
oldHalfWordValue = localcachebuf[y][xHalfWordPlace];
xHolfWordOfBit = x % 0x10;
oldHalfWordValue=oldHalfWordValue & setBitTable[xHolfWordOfBit];
return oldHalfWordValue << xHolfWordOfBit;
}
/*******************刷屏函数 在RAM中开辟1024字节存放显示内容,在级别较低的任务中用SPI写************************/
void LCM_Refresh()
{
uint16_t x,y,i;
for(y=0;y<32;y++)
{
LCM_WriteCommand(0x80+y);
Delay_CLK(120);
LCM_WriteCommand(0x80);
Delay_CLK(120);
for(x=0;x<8;x++)
{
i=localcachebuf[y][x];
LCM_WriteData(i>>8);
Delay_CLK(120);
LCM_WriteData((uint8_t)i);
Delay_CLK(120);
}
}
for(y=0;y<32;y++)
{
LCM_WriteCommand(0x80+y);
Delay_CLK(120);
LCM_WriteCommand(0x88);
Delay_CLK(120);
for(x=0;x<8;x++)
{
i=localcachebuf[y][x+8];
LCM_WriteData(i>>8);
Delay_CLK(120);
LCM_WriteData((uint8_t)i);
Delay_CLK(120);
}
}
LCM_WriteCommand(0x36);
}
建议使用示波器,看看对应端口的波形,是否正确。
一周热门 更多>