网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61EDA中国电子网 >> 技术文库 >> NIOSII >> 正文
  [图文]uC/GUI NIOS II移植及应用笔记(3)           ★★★ 【字体:
uC/GUI NIOS II移植及应用笔记(3)
作者:FREE    文章来源:电子开发    点击数:    更新时间:2008-4-15    

uC/GUI NIOS II移植之Text显示

今天研究了uC/GUI的文字显示系统。
这个系统的功能相当强大,提供了一下几个函数。
GUI_DispChar() 显示一个字符
GUI_DispCharAt() 在某个位置显示一个字符
GUI_DispChars() 显示n个设定的字符
GUI_DispString() 显示一个字符串
GUI_DispStringAt() 在某个位置显示一个字符串

还有好大一堆函数,不过这几个是最基本的。
先看一段有关这些代码的事例程序:
void MainTask(void) {
    unsigned int i;
    GUI_Init();
                                                       初始化,设置的默认字体是6*8的一种字体,具体叫什么忘了
    GUI_SetColor(GUI_YELLOW);    设置显示颜色为YELLOW,这里指的是字符的颜色
    GUI_DispChars('*', 108);           从当前坐标起显示108个*,就是截图里面的最上面的那排*
    for(i = 0; i < 480; i+=8)   {
        GUI_DispCharAt('*', 1, i);
    }                                                   在第一列显示一列*
    GUI_DispChars('*', 108);            在最下面一行显示一排*
    for(i = 0; i <= 480; i+=8)   {
        GUI_DispCharAt('*', 634, i);   
    }                                                   在最右边的一列显示一列*

   
    GUI_SetColor(GUI_GREEN);          设置显示的颜色为GREEN
    GUI_SetFont(&GUI_Font8x10_ASCII);  设置字体为GUI_Font8*10_ASCII
    GUI_DispCharAt('A', 100, 100);             在坐标100,100处显示一个A
    GUI_DispString("! Hello World!   ");        显示Hello World!大家注意这是紧跟着A显示出来的,即它是在当前光标处显示字符的
    GUI_SetFont(&GUI_Font32_ASCII);     设置字体
    GUI_SetColor(GUI_YELLOW);                  设置显示颜色为YELLOW,下面代码显示的字符都是黄色的
    GUI_DispChars('*', 15);                        显示15个*
    GUI_SetBkColor(GUI_BLUE);               设置背景颜色为BLUE,大家注意这个背景颜色,是衬在字下面的,而不是整个的背景
    GUI_DispCharAt('B', 600, 400);        
    GUI_SetFont(&GUI_Font32B_ASCII);
    GUI_SetColor(GUI_RED);
    GUI_DispStringAt("Hello World!", 1, 200); 
在1,100这个地方显示字符串,注意覆盖掉了原先显示出来的*   
    GUI_Delay(1000);
}
效果图
 
这样基本的字符显示函数就完了。大家都会使用了。
在前提到这个GUI支持UNICODE。
既然支持UNICODE那就应该能显示中文才对啊!
当然能显示中文,但关键问题是字体!
这里就讲一讲有关字体的提取。
首先要用到一个字体转换工具,因为我们得到的uC/GUI代码基本上都是D版的,里面所附的字体转换工具都是DOME版,根本转换不出来正常的字体.c文件。在这里要用到另外一个程序。
声明:该程序转载自www.ucgui.com,所有权归原作者ucgui所有,这里只是转载。仅上船该程序的可执行文件
http://www.ednchina.com/Upload/Blog/cecb4a69-b388-4a9f-916d-2b216f8edcc9.rar
声明:在这里特便感谢原作者做出的贡献!
首先运行程序,看到如图的程序界面,相当的简单。
 
然后点击选择字体。按扭出现新的对话框,我选择的字体如图所示。
 
确定后回到主界面,点击
看到这个对话框文件就转换好了!
 
直接加载进模拟器工程就可以享受中文字体带来喜悦了!
在这里上传两个转换好的字体宋体(5号字)和Times new roman(5号字)两个字体,供大家参考,其中Times字体去掉了除ascii码之外所有的其他字模。
http://www.ednchina.com/Upload/Blog/622a4994-39aa-4380-a8cc-4cef5e57b7df.rar
说一下这里的5号字对应的就是16*16的汉字字体。

宋体那个文件体积巨大3Mb多,如果是大字体的话就有十几MB了!
我们现在运行下面的程序,体验一下中文的喜悦!
#include "GUI.h"
extern GUI_FLASH const GUI_FONT GUI_FontHZ_FangSong_GB2312_14;
extern GUI_FLASH const GUI_FONT GUI_FontHZ_Times_New_Roman_14;
extern GUI_FLASH const GUI_FONT GUI_Font8x10_ASCII;
extern GUI_FLASH const GUI_FONT GUI_Font32_ASCII;
extern GUI_FLASH const GUI_FONT GUI_Font32B_ASCII; /*这几行一定要有,声明从外部引用这个数据结构,建议大家将所有的字体的定义弄成一个头文件,这样子比较方便!*/
void MainTask(void) {
    unsigned int i;
    GUI_Init();
    GUI_SetColor(GUI_YELLOW);
    GUI_DispChars('*', 108);
    for(i = 0; i < 480; i+=8)   {
        GUI_DispCharAt('*', 1, i);
    }
    GUI_DispChars('*', 108);
    for(i = 0; i <= 480; i+=8)   {
        GUI_DispCharAt('*', 634, i);
    }    
    GUI_SetColor(GUI_GREEN);
    GUI_SetFont(&GUI_FontHZ_Times_New_Roman_14);
    GUI_DispCharAt('A', 100, 100);
    GUI_DispString("! Hello World!   "); /*仔细看这里的字体已经是Times new roman了和上面的是不一样的*/
    GUI_SetFont(&GUI_Font32_ASCII);
    GUI_SetColor(GUI_YELLOW);
    GUI_DispChars('*', 15);
    GUI_SetBkColor(GUI_BLUE);
    GUI_DispCharAt('B', 600, 400);
    GUI_SetFont(&GUI_FontHZ_FangSong_GB2312_14);
    GUI_SetColor(GUI_RED);
    GUI_DispStringAt("大家好这里是中文显示演示程序!", 1, 200); /*将上面程序中的Hello World替换成了中文!*/   
    GUI_Delay(10000);
}
 
还有一个郁闷的问题,文件太大了有的编译器有限制!例如VC.NET的编译器。好在NIOS II编译器没有这个限制。 看看图:
  
实际测试不影响使用,我们测试了4000多个汉字没有发现什么问题。

文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章: 没有了
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    uC/GUI NIOS II移植及应用笔…
    uC/GUI NIOS II移植及应用笔…
    NiosII多处理器系统方案设计
    基于Nios II系统1553B总线网…
    基于NIOS嵌入式软核的硬盘录…
    Nios II的Boot过程分析…
    基于Nios II的自动指纹识别系…
    基于Nios软核的嵌入式Intern…
    Nios II嵌入式Web服务器的实…
    基于Nios嵌入式软核处理器的…
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    湘ICP备08001332号 站长:61EDA