emWin(ucGui)数值显示例程 -【worldsing笔记】

本例程下载:2.emWin5.26(ucGui)VS2008数字显示.zip

?

emWin显示文本字符还是容易,我们也可以使用字符串和标准 C 库的函数来显示数值。然而,有时候这会是件困难的事。通常,较为容易(也更为有效)的是调用一个例程显示所需结

构的数值。 emWin 支持各种十进制、十六进制和二进制输出。本章将对这些例程进行逐一描述。所有函数不需要使用浮点库,并对速度和大小进行了优化。当然"Sprintf"可以用于任何系统。使

用本章介绍的例程,有时可以简化操作,节省 ROM 空间和执行时间,下表按字母顺序列出了相应类别中与数值相关的可用例程。各例程将在后续章节中详细描述。

?

显示十进制数值接口

GUI_DispDec() 在当前位置显示指定字符数的十进制数值。

GUI_DispDecAt() 在指定位置显示指定字符数的十进制数值。

GUI_DispDecMin() 在当前位置显示最小字符数的十进制数值。

GUI_DispDecShift() 在当前位置显示指定字符数、带小数点的十进制长数值。

GUI_DispDecSpace() 在当前位置显示指定字符数的十进制数值,用空格代替首位的 0。

GUI_DispSDec() 在当前位置显示指定字符数的十进制数值并显示符号。

GUI_DispSDecShift() 在当前位置显示指定字符数、带小数点的十进制长数值并显示符号。

?

显示浮点数值接口

GUI_DispFloat() 显示指定字符数的浮点数值。

GUI_DispFloatFix() 显示指定小数点右边位数的浮点数值。

GUI_DispFloatMin() 显示最小字符数的浮点数值。

GUI_DispSFloatFix() 显示指定小数点右边位数的浮点数值并显示符号。

GUI_DispSFloatMin() 显示最小字符数的浮点数值并显示符号。

?

显示二进制数值接口

GUI_DispBin() 在当前位置显示二进制数值。

GUI_DispBinAt() 在指定位置显示二进制数值。

?

显示十六进制数值接口

GUI_DispHex() 在当前位置显示十六进制数值。

GUI_DispHexAt() 在指定位置显示十六进制数值。

?

emWin 版版本接口

GUI_GetVersionString() 返回 emWin 的当前版本。

?

接下来对以上的接口写个例程,演示各种接口的使用方法

本例程演示效果

?
?

#include
"GUI.h"

#include
"WM.h"

?
?

#include
"CHECKBOX.h"

#include
"FRAMEWIN.h"

#include
"PROGBAR.h"

#include
"TEXT.h"

#include
"BUTTON.h"

#include
"SLIDER.h"

#include
"HEADER.h"

#include
"GRAH.h"

#include
"ICONVIEW.h"

#include
"LISTVIEW.h"

#include
"TREEVIEW.h"

?
?

void MainTask(void)

{

?
?

int Min = -2;

int Sec = 60;

float f = 3.141592;

?
?

int state;

?
?

#if GUI_WINSUPPORT

WM_SetCreateFlags(WM_CF_MEMDEV);

#endif

GUI_Init();

#if GUI_WINSUPORT

WM_MULTIBUF_Enable(1);

#endif

while(1)

{

/*---------------10进制显示-------------------*/

?
?

GUI_SetFont(&GUI_Font8x8);

GUI_GotoXY(0,0);

GUI_DispString("\nGUI_DispDec:\n\n");

?
?

GUI_SetFont(&GUI_Font6x8);

?
?

?
?

//在当前位置显示字符串

GUI_DispString("Min:");

?
?

//在当前位置显示Min的值,长度是

GUI_DispDec(-Min,2);

?
?

//在当前位置显示字符串

GUI_DispString(" Sec:");

?
?

//在当前位置显示Sec的值,长度是

GUI_DispDec(Sec,2);

?
?

?
?

//延时

GUI_Delay(90);

Sec++;

Sec %= 61;

?
?

//在, 100,显示Min的值,长度

GUI_DispDeAt(Min, 0, 50, 3);

?
?

//在, 110,显示,长度超出范围不显示

GUI_DispDecAt(59009, 50, 50, 3);

?
?

//在, 110,显示,长度前面补

GUI_DispDecAt(89, 100, 50, 3);

?
?

//在, 110,显示,长度前面补

GUI_DispDecAt(887, 150, 50, 9);

?
?

//当前位置换行

GUI_DispString("\n");

?
?

//当前位置显示,长度自动

GUI_DispDecMin(530);

?
?

//当前位置加入空格

GUI_DispString(" ");

?
?

//位置显示-83492

GUI_DispDecMin(-83492);

?
?

//当前位置加入空格

GUI_DispString(" ");

?
?

//当前位置显示-388/(10^1),长度前面补

GUI_DispDecShift(-388, 9, 1);

?
?

//当前位置加入空格

GUI_DispString(" ");

?
?

//当前位置显示-388/(10^2),长度前面补

GUI_DispDecShIft(-388, 6, 2);

?
?

//当前位置换行

GUI_DispString("\n");

?
?

//当前位置显示Start:

GUI_DispString("Start:");

?
?

//当前位置显示-3415,前面补空格

GUI_DispDecSpace(-3415, 8);

?
?

//当前位置加入空格

GUI_DispString(" ");

?
?

//当前位置显示-12455

GUI_DispSDec(-12455, 10);

?
?

//当前位置加入空格

GUI_DispString(" ");

?
?

//当前位置显示+12455

GUI_DispSDec(12455, 10);

?
?

//当前位置加入空格

GUI_DispString(" ");

?
?

//当前位置-12455/(10^2), 长度,前面补

GUI_DispSDecShift(-12455, 9, 2);

?
?

//当前位置加入空格

GUI_DispString(" ");

?
?

//当前位置+12455/(10^1), 长度,前面补

GUI_DispSDecShift(12455, 8, 1);

?
?

/*---------------浮点数值显示-------------------*/

?
?

?
?

GUI_SetFont(&GUI_Font8x8);

//当前位置加入换行

GUI_DispString("\n\n\n\nGUI_DispFloat:\n\n");

?
?

GUI_SetFont(&GUI_Font6x8);

?
?

//显示f值,长度为,后面补

GUI_DispFloat(f, 10);

?
?

//当前位置加入空格

GUI_DispString(" ");

?
?

//显示-f值,长度为,后面补

GUI_DispFloat(-f, 10);

?
?

GUI_DispString(" ");

?
?

//显示f值,长度为,前面补,小数位

GUI_DispFloatFix(f, 1O, 3);

?
?

GUI_DispString(" ");

?
?

//显示f值,长度自动,小数位

GUI_DispFloatMin(f, 5);

?
?

GUI_DispString(" ");

?
?

//显示f值,长度,小数位,带符号

GUI_DispSFloatFix(f, 10, 2);

?
?

GUI_DispString(" ");

//显示-f值,长度,小数位,带符号

GUI_DispSFloatFix(-f, 10, 2);

?
?

?
?

GUI_DispString("\n");

?
?

//显示f值,长度自动,小数位,带符号

GUI_DispSFloatMin(f, 3);

?
?

GUI_DispString(" ");

?
?

//显示f值,长度自动,小数位,带符号

GUI_DispSFloatMin(-f, 3);

?
?

?
?

?
?

/*---------------二进制数值显示-------------------*/

?
?

?
?

GUI_SetFont(&GUI_Font8x8);

//当前位置加入换行

GUI_DispString("\n\n\n\nGUI_DispBin:\n\n");

?
?

GUI_SetFont(&GUI_Font6x8);

?
?

GUI_DispBin(0xaa, 8);

?
?

GUI_DispBinAt(0xaa5587, 100, 17O, 24);

?
?

?
?

?
?

/*---------------十六进制数值显示-------------------*/

?
?

?
?

GUI_SetFont(&GUI_Font8x8);

//当前位置加入换行

GUI_DispString("\n\n\n\nGUI_DispHex:\n\n");

?
?

GUI_SetFont(&GUI_Font6x8);

?
?

GUI_DispHex(0xaa, 8);

?
?

GUI_DispHexAt(0xaa5587, 110, 218, 8);

?
?

GUI_SetFont(&GUI_Font8x8);

?
?

//当前位置加入换行

GUI_DispString("\n\n\n\nThis is emWin V");

?
?

GUI_DispString(GUI_GetVersionString());

?
?

?
?

GUI_DispString("\n\nThe emWin demo for Worldsing");

?
?

state = Sec % 4;

switch(state)

{

case 0:

????GUI_DispString(" - ");break;

case 1:

????GUI_DispString(" / ");break;

case 2:

????GUI_DispString(" | ");break;

case 3:

????GUI_DispString(" \ "); break;

}

GUI_SetFont(&GUI_Font6x8);

?
?

}

}

时间: 2024-10-22 06:18:40

emWin(ucGui)数值显示例程 -【worldsing笔记】的相关文章

emWin(ucGui) Edit控件数值模式 ——符号编辑 worldsing

emWin(ucGui) Edit控件数值模式出现负数值编辑时,如果键盘按键全可以设置独立的"-","+"键,这样可以正常编辑正数和负数,但是要没有设置这两个键,编辑Edit的数值会比较麻烦,可以使用"上"键和"下"键修改符号,但是光标无法移动到后面的数值位,必须借助"左"键和"右"键来移动光标,在嵌入式里的按键比较有限制,如果不单独设立"+","+&quo

emWin(ucGUI)在PC机上模拟的按键响应多次解决办法 worldsing

emWin(ucgui) 在PC端的模拟器,默认的按键机制是"按抬都Msg",当在按下键盘时,会收到一个key值-1,在按键没有离开时一直维持,当按键松开时还发送一个key值-0的标记.所以在你手速多快的情况下都会有一个 key,1和key,0两个操作.程序中没有对按键的状态做判定,所以在PC上不管是按下,还是按下后离开都会进行响应(两次响应). ? 假设有以下的应用场景,一级菜单->(ENTER键)->二级菜单>(ENTER键)->三级菜单,即,在一级菜单是可

STM32移植uCGUI+触摸屏显示,没有加入uCOS Ⅱ

实验板子 ——李想STM32开发板 开发工具—— keil uVision5.0 for MDK 本次终极任务为显示示波器的GUI界面,此文章只是简单总结移植uCGUI+触摸屏,之后会加入视窗管理器及uCOSⅡ. 下面说说移植步骤,会穿插一些个人简单的理解,为像我一样的新手提供方便. 步骤分为三大步: 一.移植uCGUI 二.显示汉字 三.移植触摸屏 一.移植uCGUI 1.建立工程模版. 个人会先建立一个工程模板,里边只包含系统的一些文件,主函数是while(1);的循环.每次项目用到就直接复

js 将数值显示为金额

项目中常遇到要将数值显示为金额.例如:3000 => $3,000.00 function formateMoney(number, places, symbol, thousand, decimal) { number = number || 0; places = !isNaN(places = Math.abs(places)) ? places : 2; symbol = symbol !== undefined ? symbol : "$"; thousand = th

Unity3D游戏开发之伤害数值显示

众所周知,在RPG游戏策划中最为重要的一个环节是数值策划.数值策划是一个关于游戏平衡方面的概念,它是一种非常深奥的概念.游戏从某种意义上 是多种选择的组合,因此如果一个游戏失去平衡,那么就会减少选择而影响游戏的乐趣.数值策划人员通常需要按照一定的规则和方法将整个游戏系统的相关数值调整到一个合适的范围,以确保玩家可以有更多地选择以增强游戏的可玩性.数值策划是近年来国内游戏行业从国外游戏业引申过来的一个概念,我们在学习游戏设计的过程中,除了专注于技术上的实现以外,还应该对游戏设计中的相关理论有所了解

ECHARTS柱形图和饼图数值显示

ECHARTS柱形图和饼图数值显示,官方文档写的很不错,这里自己单独梳理一下,以后可能会用的到. 1.柱形图数值显示 在option添加: label:{ normal:{ show: true, position: 'top'} }, 其中position为数值显示的位置,具体属性可以查看官方的配置项. 2.饼图 在option中series添加: itemStyle:{ normal:{ label:{ show: true, formatter: '{b} : {c} ({d}%)', t

[Unity3D]Unity3D游戏开发之伤害数值显示

大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.众所周知,在RPG游戏策划中最为重要的一个环节是数值策划.数值策划是一个关于游戏平衡方面的概念,它是一种非常深奥的概念. 游戏从某种意义上 是多种选择的组合,因此假设一个游戏失去平衡,那么就会降低选择而影响游戏的乐趣. 数值策划人员通常须要依照一定的规则和方法将整个游戏系统的相关数值调整到一个合适的范围.以确保玩家能够有很多其它地选择以增强游戏的可玩性.数值策划是近年来国内游戏行业从国外游戏

emWin显示文本字符-【worldsing笔记】

在emWin显示文本字符还是容易的,提供了各种不同的接口,下面是有关于字符显示的常用的用法,可以直接复制到VS2008的模拟ucGui(emWin模拟工程)中运行: 工程代码下载:1.emWin5.26(ucGui)VS2008字符显示 ? #include "GUI.h" #include "WM.h" ? #include "CHECKBOX.h" #include "FRAMEWIN.h" #include "

3.emWin5.26(ucGui)VS2008 2-D图形库-基本绘图【Worldsing笔记】

UCGUI(emWin) 2-D图形库--之基本板绘图,在ucgui的基本绘图功能上来看,功能还是比较全的,本例程主要使用基本的接口,两个主要的概念是绘制(draw)和填充(Fill),这两的区别是一个空心的,另一个是实心的,用时注意加于区分,另一个值得注意的是绘制模式,GUI_SetDrawMode(),目前emWin5.2有两模式,一个是正常的绘制,另一个是取反的方式绘制. ? 例程代码下载:3.emWin5.26(ucGui)VS2008 2-D图形库-基本绘图.zip ? GUI_Get