本来是需要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); /*中*/
最后一定不要忘了写刷新显示的函数
来看一下效果(界面框有线断了,是手机拍照的问题。。。实际是完整的)
|