原创 ucGUI第二篇:Displaying Values(显示数值)

2011-9-27 00:43 5344 8 8 分类: MCU/ 嵌入式

          ucGUI第二篇:Displaying Values(显示数值)

说明:我的硬件平台STM32F103ZET6,开发软件是KEIL V4.12 OS系统和GUI的版本分别是uCOS-II V2.86ucGUI V3.94

数值的显示部分也比较的简单些,总体来说有几点要注意,我下面就把要注意的问题说说。

-)十进制数的显示

 GUI_DispDec()

这个要注意的是首位不能是0,是0的话显示会出现错误。

显示负数的话,负号也要算在No. of digits里面,切记,要不也会出错。

设置的No. of digits比实际要显示的字符串大的话,前面会补0

设置的No. of digits比实际要显示的字符串小的话,会出现错位。

GUI_DispDecAt()

这个的显示类似上面,只是多了个可以设置显示的坐标。

GUI_DispDecMin()

不需要指定长度,自动的用最少的字符显示,如果需要对其方式且显示的个数不一样的话,这个方式不太合适。

这个的首位也不可以是0,是0的话也会出现错位。

GUI_DispDecShift()

首位也不可以是0

负号和小数点都要算在No. of digits,最大支持9位。

No. of digits设置的大了的话前面要补0

GUI_DispSDec()

类似于GUI_DispDec(),不支持首位是0,不管是正的,还是负的,都要显示负号,而且这个正负号也要算在No. of digits里面。

GUI_DispSDecShift()

这个是GUI_DispSDec()GUI_DispDecShift()的合并版,只要注意No. of digits里面要包括正号负号还有小数点。

总结:用时一定要保证自己设置的No. of digits要大于等于自己实际要显示的。

多了的话前面会补零,少了的话就会出错的,显示一堆9.

(二)十六进制和二进制

     GUI_DispBin()

     GUI_DispBinAt()

     GUI_DispHex()

     GUI_DispHexAt()

这四个差不多,第一个最大支持32位的显示,后面三个中最大支持16位,No. of digits设置的多了的话前面会补零,少了的话有几个显示几个。

关于这几个函数附上自己设计的例子,很能说明问题

GUI_SetBkColor(GUI_BLUE);                                                             

GUI_SetColor(GUI_LIGHTRED);

GUI_SetFont(&GUI_Font13B_ASCII);

GUI_Clear();

GUI_GotoXY(0,0);

GUI_DispDec(-123,4);                       

GUI_GotoXY(100,0);

GUI_DispDec(012,4);                                        

GUI_GotoXY(200,0);

GUI_DispDec(1234,7);                        

GUI_GotoXY(300,0);

GUI_DispDec(1234,2);

                          

GUI_DispDecAt(-123,0,20,5);                 

GUI_DispDecAt(045 ,100,20,3);

GUI_DispDecAt(345 ,200,20,5);                

GUI_DispDecAt(345 ,300,20,2);

                         

GUI_GotoXY(0,40);                                               

GUI_DispDecMin(-33232);                               

GUI_GotoX(100);                                                                                 

GUI_DispDecMin(0032);                 

GUI_GotoX(200);                                                                                 

GUI_DispDecMin(00330);                     

GUI_GotoX(300);                                                                                 

GUI_DispDecMin(5980);              

GUI_GotoXY(0,60);

GUI_DispDecShift(1234,4,2);                    

GUI_GotoX(100);

GUI_DispDecShift(01234,6,2);           

GUI_GotoX(200);

GUI_DispDecShift(-1234,6,2);            

GUI_GotoX(300);

GUI_DispDecShift(1234,5,2);      

        

GUI_GotoXY(0,80);

GUI_DispDecShift(123456789,9,2);   

GUI_GotoX(200);

GUI_DispDecShift(12345678,9,2);     

  

  GUI_GotoXY(0,100);

  GUI_DispSDec(-1234,5);                

  GUI_GotoX(100);

  GUI_DispSDec(1234,5);                      

  GUI_GotoX(200);

  GUI_DispSDec(1234,3);

 

  GUI_GotoX(300);                                  

  GUI_DispSDec(0234,5);

  GUI_GotoXY(0,120);

  GUI_DispSDecShift(02345,7,3);    

  GUI_GotoX(100);

  GUI_DispSDecShift(345,6,2);

  GUI_GotoX(200);

  GUI_DispSDecShift(12345,3,3);

  GUI_GotoX(300);

  GUI_DispSDecShift(-1234,6,3);

 

  //测试二进制

  GUI_GotoXY(0,140);

  GUI_DispBin(0x08,8);        

  GUI_GotoX(100);

  GUI_DispBin(0x88,9);           

  GUI_GotoX(200);

  GUI_DispBin(0x08,6);

  GUI_GotoX(300);

  GUI_DispBin(0x08,2);

 

  GUI_DispBinAt(0x55,0,160,8);    

  GUI_DispBinAt(0x55,100,160,7);  

  GUI_DispBinAt(0x05,200,160,4);  

  GUI_DispBinAt(0x05,300,160,16);

(三)浮点数

      关于浮点的ucGUI里面有个很好的说明的例子,我这里直接的贴上

    float f = 123.45678;

GUI_Clear()

GUI_SetFont(&GUI_Font8x8);

GUI_DispStringAt("GUI_DispFloat:\n",0,0);

GUI_DispFloat (f,9);

GUI_GotoX(100);

GUI_DispFloat (-f,9);

GUI_DispStringAt("GUI_DispFloatFix:\n",0,20);

GUI_DispFloatFix (f,9,2);

GUI_GotoX(100);

GUI_DispFloatFix (-f,9,2);

GUI_DispStringAt("GUI_DispSFloatFix:\n",0,40);

GUI_DispSFloatFix (f,9,2);

GUI_GotoX(100);

GUI_DispSFloatFix (-f,9,2);

GUI_DispStringAt("GUI_DispFloatMin:\n",0,60);

GUI_DispFloatMin (f,3);

GUI_GotoX(100);

GUI_DispFloatMin (-f,3);

GUI_DispStringAt("GUI_DispSFloatMin:\n",0,80);

GUI_DispSFloatMin (f,3);

GUI_GotoX(100);

GUI_DispSFloatMin (-f,3);

GUI_SetFont(&GUI_Font6x8);

GUI_DispStringAt("Press any key",0,GUI_VYSIZE-8);

 

文章评论0条评论)

登录后参与讨论
我要评论
0
8
关闭 站长推荐上一条 /2 下一条