Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,Keil公司是一家业界领先的微控制器(MCU)软件开发工具的独立供应商。Keil公司由两家私人公司联合运营,分别是德国慕尼黑的Keil Elektronik GmbH和美国德克萨斯的Keil Software Inc。Keil公司2005年由ARM公司收购,其两家公司分别更名为ARM Germany GmbH和ARM Inc。
2013年10月,Keil正式发布了Keil μVision5 IDE。
我们今天这个项目用的是μVision4版本。
用单片机做过嵌入式开发的朋友应该都深有体会,与后台的控制算法相比,前台的图形化界面开发也占了很大一部分精力,keil本身没有前台界面设计的功能,虽然各个屏幕厂家会给出底层的驱动库,但也并不是专业的上层界面设计软件。而我们非平面设计专业出身的门外汉,做起这些艺术类的东西,确实很头疼,界面做的不好看不说,还耗费了我们很多的精力。虽然有些公司有美工,但美工更多的是做整体的布局风格设计,以静态图为主,到了具体的控件设计,尤其人机交互这种动态的图形化这一块,也就无能为力了。
所以,嵌入式的图形化开发,最好能借助第三方的软硬件相结合的智能屏,界面的设计由组态软件来实现,界面留有和后台c程序交互的接口,这样我们就可以借助第三方的力量,快速完成界面设计,从而把更多的精力留在后台的控制程序上。
前些天小编接触到一款T5L迪文智慧屏,刚开始用,效果如何不予评论,不为某产品站台,也不刻意抹去人家的名姓,只把实现步骤做一介绍。
目录
一、开发环境搭建
1、下载安装Keil集成开发工具
这部分网上有很多资料,小编不再啰嗦,直接跳过。只需要注意要下载c51版本。
2、下载安装DGUS Tool界面设计工具
可以从迪文官方网站“服务中心”->"资料与工具下载"下载“智能屏开发工具:T5L DGUS2 V7版本。
3、下载安装DownLoadFor8051下载工具
该工具是用来将我们的C51代码下载到单片机OS内核上去的。
该网站资料说明不是很容易理解,经过琢磨,小编把常用的一些资料打包上传到百度网盘上了,需要的朋友可以自取。
链接:https://pan.baidu.com/s/1_20NZW182wWBlf1vLO1bAw
提取码:dwin
下载此链接中文件后解压缩此工具放在了”迪文T5L ASIC开发_T5L+芯片.rar”压缩包中,找到DownLoadFor8051 V1.4测试-DownLoadFor8051.exe即可运行。
4、安装AGDI驱动
安装AGDI驱动的作用是把T5L智能屏导入到Keil的芯片库中。此驱动的安装包在上述百度网盘文件”迪文T5L ASIC开发_T5L+芯片.rar”压缩包中的”驱动程序\KEIL AGDI T5”文件夹下“agdi_installation_dwin.exe”。
双击此文件进行安装,安装的路径与Keil C51软件的安装位置一样。如果之前已经安装好了Keil C51软件的话,那么此驱动安装包会自动定位到这个位置的。
安装完AGDI驱动后,我们还需要将”迪文T5L ASIC开发_T5L+芯片.rar”压缩包中的”dwin-T5L-master”文件夹下的T5L_OS_8051.INC和T5LOS8051.h这俩个文件拷贝到Keil C51安装目录下的”C51\INC\DWIN”文件夹内,如下图所示。
二、创建C51项目工程模板
1、创建功能文件夹
在桌面建立一个Demo1/C51/template文件夹,在其内再创建一个template文件夹,在此文件夹下依次创建USER、 OBJ、 HANDWARE、GUI_APP、FUNC_HANDLER5个子文件夹,如图所示。
这5个子文件夹的作用分别如下:
USER: 用来存放Keil项目工程文件、STARTUP_M5.A51启动文件、main.c文件、sys.c系统文件和 T5LOS8051.h文件。
OBJ: 用来存放编译之后的输出文件和临时文件。
HANDWARE: 用来存放硬件驱动文件的,比如UART串口驱动,NOR FLASH存储驱动。
GUI_APP: 用来存放GUI应用界面文件。假如我们整个项目就只有欢迎界面和主界面这2个界面,那么我们可以在GUI_APP目录下创建这些界面对应的.c和.h文件,如下所 示:
FUNC_HANDLER: 用来存放我们整个项目的业务逻辑代码的,在GUI_APP目录下的文件最好只处理跟界面相关的东西,而跟业务逻辑相关的代码最好放到FUNC_HANDLER目录下。
2、硬件环境配置
创建Keil项目时,选择device的时候在Select a CPU Data Base File对话框中,点下拉列表框时,可以看到已经有了DWIN Device选项,选中这个选项。
然后选择DWIN下的T5器件,如下图所示:
创建好Keil工程之后,我们需要点击图标,来对我们的工程进行配置。
(1)Device配置
device配置如图所示:
以上两步配置的作用是: 禁止Keil输出”WARNING L16: UNCALLED SEGMENT, IGNORED FOR OVERLAY PROCESS” 警告。
(2)Target配置
配置存储模式和Xdata存储区域,我们T5L中的OS核具有64KB的flash,32KB的片内ram,这32KB的ram属于xdata区域,必须得正确配置,否则会出问题的。
(3)Output配置
点击Select Folder for Objects配置输出目录为OBJ目录和输出名称为template。
(4)C51配置
点击"C51"标签,配置Level为:3:Peephole optimization,Emphasis为"Favor size"。
三、HELLOW WORD例程
1.1GUI界面设计
双击打开DGUS Tool界面设计工具,然后点击左上角的”新建”按钮,如下图所示:
选择对应的屏幕分辨率,我这里选择的是480*272,储存路径为桌面上的TEMPLATE文件夹。
这样,一个简单的GUI项目工程就创建好了,目录结构如下图所示:
2、导入背景图
将事前做好的一张分辨率为480*272的图片导入到dgus软件中。
点击“+”号图标,将名为0bj.jpg的图片导入后的效果如图所示。图片的格式可以为jpg或者bmp,但图片名称必须以数字开头。
3、在背景上添加控件
接着往”0bj”上添加一个”数据变量显示”控件,同时设置好此控件的相应属性,如下图所示。这里的变量地址选择2000,变量类型选择长整数(4字节),整数位数改为8就可以了。
4、生成配置文件
最后点击”生成”按钮来让DGUS Tool开发工具自动生成下载文件,如下图所示:
5、生成icl文件
设置->DGUS
在弹出下图所示的对话框中,点ICL工具标签,然后点击“选择图片”按钮,然后选中刚生成的obj.jpg背景文件,JPG图片质量选中100%,选中“全部设置”,然后点击导入后边的“生成”按钮。
然后在弹出的对话框中选择ICL文件的存储路径和文件名称如下所示,然后点“保存”按钮。
6、C51程序文件编制
本例程是在背景文件的数据框内显示一个每秒自增1的可变数字。
#include "sys.h"
#define START_WIN_NUM_VP 0x2000 //启动界面上的数据变量显示控件的VP地址
//因为数据变量显示控件的变量类型设置为了"长整数(4字节)",
//所以num变量的数据类型得设为u32,即也是4字节,保持一致
xdata u32 num;
void main(void)
{
sys_init();//系统初始化
//num变量赋予初值0,注意,对于xdata存储区域的变量,在定义的时候,不能
//直接赋初值,即对于xdata u32 num = 0;这种定义变量的方式是有问题的,
//这是由于T5L芯片内部自身原因造成的,因为T5L芯片内部扩展的32KB ram
//必须得在sys_init()系统初始化之后才能够被正常的访问,
//如果你想在定义变量的时候进行赋初值,那么你可以使用data或者idata关键字,
//如 idata u32 num = 0;所示
num = 0;
while(1)
{
sys_delay_ms(1000);//精确延时1秒
num++;//加1
sys_write_vp(START_WIN_NUM_VP,(u8*)&num,2);//把当前的数值更新到VP地址,4字节也就是2个字
}
}
将此程序文件编译后生成hex文件。
7、hex文件转bin文件
打开DOWMLOADFOR 80C51,选择这个程序的hex文件位置,点击hex2bin并保存,生成的bin文件就在原hex文件所在的位置。
8、烧录文件到控制器
本例用的烧录方式为SD卡烧录方式。
(1)格式化SD
T5L迪文屏对下载时所用的SD卡有要求,其文件系统必须为FAT32的,分配单元大小为4096字节,容量大小范围为1-16GB,如果你的SD卡不满足此条件的话,可以对此SD卡进行格式化,如下图所示:
(2)SD卡内创建文件夹
格式化完成后在SD卡中建立一个DWIN_SET文件夹,否则迪文屏无法识别,再将之前生成好的以下文件导入到SD卡中。
(3)烧录
将SD卡插入T5L迪文屏的SD卡座内,上电,待其烧写完成后,屏幕上会显示End字样,之后断电,取出SD 卡,再次通电,刚刚做好的界面就会显示在迪文屏上了。
最终程序运行的结果如下图所示。
(全文结束)