本来是需要AT32F425制作离线烧录器,结果一直没时间,现在补上。
1、首先离线烧录器肯定需要屏幕显示,这里选择0.96寸的OLED屏作为显示屏
2、OLED选用的为IIC接口的屏幕,因为不需要太快的刷新率
3、重头戏,屏幕界面如果只用例程的话显示几个字有点略显单薄,所以网上找到了很古老的ZLG_GUI库,可以根据里面的接口函数来显示一些内容
首先Keil工程中添加ZLG_GUI的库函数
头文件设置好
#include "LCMDRV.H"
#include "FONT_MACRO.H"
#include "GUI_CONFIG.H"
#include "GUI_BASIC.H"
#include "GUI_STOCKC.H"
#include "FONT24_32.H"
#include "FONT5_7.H"
#include "FONT8_8.H"
#include "LOADBIT.H"
#include "WINDOWS.H"
#include "MENU.H"
#include "spline.H"
#include "ConvertColor.H"
在lcmdrv.c中找到void GUI_Initialize(void)函数,此函数为一个空的接口函数,为OLED的初始化函数,需要将你的屏幕的一些初始化内容放进去
同样在lcmdrv.c中找到void GUI_Exec(void)函数,此函数为一个空的接口函数,为OLED的刷新显示函数,需要将你的屏幕的显示和刷新放进去
同上,找到 void GUI_Point(uint16 x, uint8 y, TCOLOR color)函数,此函数为画点的空函数接口,将你屏幕画点的驱动放进去
清屏函数void GUI_ClearSCR()同理
全屏填充函数同理 void GUI_FillSCR(TCOLOR dat)
之后准备做一个界面函数,使用库里自带的界面函数
void Win_Dis(u8 pos_x,u8 pos_y,u8 width,u8 high,u8 *headline,u8 *contain)
{
WINDOWS winxp;
winxp.x=pos_x;
winxp.y=pos_y;
winxp.with=width;
winxp.hight=high;
winxp.title=headline;
winxp.state=contain;
GUI_WindowsDraw(&winxp);
GUI_Exec();
}
调用此函数
u8 head[]={"Init"};
u8 text_init[]={"AT32F425"};
Win_Dis(0, 0, 128, 64, head, text_init);
然后在界面里写入点内容
OLED_ShowFontHZ(0 + 5, 0 + 16, 12, 16, 1); /*初*/
OLED_ShowFontHZ(16 + 5, 0 + 16, 13, 16, 1); /*始*/
OLED_ShowFontHZ(32 + 5, 0 + 16, 14, 16, 1); /*化*/
OLED_ShowFontHZ(48 + 5, 0 + 16, 17, 16, 1); /*中*/
最后一定不要忘了写刷新显示的函数
来看一下效果(界面框有线断了,是手机拍照的问题。。。实际是完整的)
|