我是用串口驱动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);
}
在main.c中
InitLCD();
GUI_X_Init();
GUI_SetBkColor(GUI_WHITE);
GUI_SetColor(GUI_BLACK);
GUI_DrawCircle(60,60,10);
LCM_Refresh();
while(1)
{
}
没有动静
后来改用这款完美解决,自带字库,绘图(画线,画点,画圆)功能,坐标定位横向纵向均以像素点为单位。
分享资料:http://pan.baidu.com/s/1c1Ic1kk
运行STemWin要启用CRC校验:
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE);
另外ST7920驱动STemWin好像没有支持
一周热门 更多>