完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我是用串口驱动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); } |
|
相关推荐
11个回答
|
|
本帖最后由 modu8888 于 2017-10-20 08:57 编辑
在GUI.c中修改 #define GUI_NUMBYTES (10*1024) 修改GUIDRV_Template.c中 读点函数、写点函数是自己定义的: static void _SetPixelIndex(GUI_DEVICE * pDevice, int x, int y, int PixelIndex) { LCM_PutPixel(x,y,PixelIndex); } static unsigned int _GetPixelIndex(GUI_DEVICE * pDevice, int x, int y) { unsigned int PixelIndex; // // Convert logical into physical coordinates (Dep. on LCDConf.h) // #if (LCD_MIRROR_X == 1) || (LCD_MIRROR_Y == 1) || (LCD_SWAP_XY == 1) int xPhys, yPhys; xPhys = LOG2PHYS_X(x, y); yPhys = LOG2PHYS_Y(x, y); #else #define xPhys x #define yPhys y #endif GUI_USE_PARA(pDevice); GUI_USE_PARA(x); GUI_USE_PARA(y); { PixelIndex = LCM_GetPixel(x,y); } #if (LCD_MIRROR_X == 0) && (LCD_MIRROR_Y == 0) && (LCD_SWAP_XY == 0) #undef xPhys #undef yPhys #endif return PixelIndex; } 在LCDConf_FlexColor_Template.c中修改显示屏的尺寸 // Physical display size // #define XSIZE_PHYS 128 // To be adapted to x-screen size #define YSIZE_PHYS 64 // To be adapted to y-screen size #define VXSIZE_PHYS 128 #define VYSIZE_PHYS 64 色彩转换也改了 void LCD_X_Config(void) { // // Set display driver and color conversion // GUI_DEVICE_CreateAndLink(GUIDRV_FLEXCOLOR, GUICC_1, 0, 0); // // Display driver configuration, required for Lin-driver // LCD_SetSizeEx (0, XSIZE_PHYS , YSIZE_PHYS); LCD_SetVSizeEx(0, VXSIZE_PHYS, VYSIZE_PHYS); } |
|
|
|
在main.c中 InitLCD(); GUI_X_Init(); GUI_SetBkColor(GUI_WHITE); GUI_SetColor(GUI_BLACK); GUI_DrawCircle(60,60,10); LCM_Refresh(); while(1) { } 没有动静 |
|
|
|
|
|
|
|
之前也用过这款12864,控制起来很繁琐,显示字符坐标夸字节。
后来改用这款完美解决,自带字库,绘图(画线,画点,画圆)功能,坐标定位横向纵向均以像素点为单位。 分享资料:http://pan.baidu.com/s/1c1Ic1kk |
|
|
|
大牛拉小车,12864推荐使用ugfx
|
|
|
|
本帖最后由 wenyangzeng 于 2018-1-4 11:23 编辑
运行STemWin要启用CRC校验: RCC_AHBPeriphClockCmd(RCC_AHBPeriph_CRC, ENABLE); 另外ST7920驱动STemWin好像没有支持 |
|
|
|
12864 点阵直接写内存就好,GUI效果用STemWin有点浪费内存,非要用字库嘛,GB2312不是很多点阵的选择。而且小。
|
|
|
|
|
|
|
|
编译过了吗?是编译鼓励跑不起阿狸还是其它什么问题啊?
|
|
|
|
|
|
|
|
好想法,如果StemWin能驱成12864,再做彩色的应该更容易。我也试试,谢谢
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2162 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1997 浏览 3 评论
4593 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2140 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2659 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 17:39 , Processed in 0.939367 second(s), Total 91, Slave 75 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号