本例程下載:2.emWin5.26(ucGui)VS2008數字顯示.zip c++
在emWin顯示文本字符仍是容易,咱們也能夠使用字符串和標準 C 庫的函數來顯示數值。然而,有時候這會是件困難的事。一般,較爲容易(也更爲有效)的是調用一個例程顯示所需結 函數
構的數值。 emWin 支持各類十進制、十六進制和二進制輸出。本章將對這些例程進行逐一描述。全部函數不須要使用浮點庫,並對速度和大小進行了優化。固然"Sprintf"能夠用於任何系統。使 優化
用本章介紹的例程,有時能夠簡化操做,節省 ROM 空間和執行時間,下表按字母順序列出了相應類別中與數值相關的可用例程。各例程將在後續章節中詳細描述。 ui
顯示十進制數值接口 spa
GUI_DispDec() 在當前位置顯示指定字符數的十進制數值。 blog
GUI_DispDecAt() 在指定位置顯示指定字符數的十進制數值。 接口
GUI_DispDecMin() 在當前位置顯示最小字符數的十進制數值。 ip
GUI_DispDecShift() 在當前位置顯示指定字符數、帶小數點的十進制長數值。 字符串
GUI_DispDecSpace() 在當前位置顯示指定字符數的十進制數值,用空格代替首位的 0。 it
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);
}
}