本例程下载: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);
? ?
}
}