直接贴上处理部分代码。
12864 思路。 建立缓存, 每次显示整屏刷写, 操作缓存。
代码如下
- #define array(array_name,x,y) array_name[x][y]
- uint8_t CogLCDBuf[CogLCDMAXPAGE][CogLCDMAXCOLUMN];//缓存
- void DisPlay_Picture(uint8_t str,uint8_t x,uint8_t y,uint8_t wight,uint8_t high)
- {
- uint8_t Cache,HighByte;
- uint8_t Page,OverLong;
- uint8_t PageNum,CountPage,CountXcolumn;
- Page=y/8; //star in ? page
- OverLong=y%8;// over data size
- PageNum=high/8; //字模站几页
- if(high%8)
- PageNum++;
- #define array_name LCD_48X48_4CODE //定义缓存的字模
- for(CountPage=0;CountPage<PageNum;CountPage++)
- {
- for(CountXcolumn=0;CountXcolumn<wight;CountXcolumn++)
- {
- Cache=CogLCDBuf[Page][x+CountXcolumn];
- HighByte=array(array_name,CountPage,CountXcolumn)<<OverLong;//LCD_48X48_CODE[CountPage][CountXcolumn]<<OverLong;
- CogLCDBuf[Page][x+CountXcolumn]=Cache|HighByte;
- }
- Page++;
- for(CountXcolumn=0;CountXcolumn<wight;CountXcolumn++)
- {
- Cache=CogLCDBuf[Page][x+CountXcolumn];
- HighByte=array(array_name,CountPage,CountXcolumn)>>(8-OverLong);
- CogLCDBuf[Page][x+CountXcolumn]=Cache|HighByte;
- }
- }
- CogLCDRedraw(); //刷屏
- }
实现任意坐标显示任意大小的图标文字。 这是现实一个,多个大家都会,就不发了。
想弄的完善点, 所以发上来,希望大家多多指教!
目前无任何bug
|