@@ -648,20 +648,23 @@ const uint32_t GUI_Pow10[10] = {
648
648
649
649
void GUI_DispDec (int16_t x , int16_t y ,int32_t num , uint8_t len , uint8_t mode , uint8_t leftOrRight )
650
650
{
651
- uint8_t t ,temp ,i = 0 ;
652
- uint8_t enshow = 0 ;
653
- char isNegative = 0 ;
651
+ uint8_t i ;
652
+ uint8_t bit_value ;
653
+ uint8_t blank_bit_len = 0 ;
654
+ uint8_t notZero = 0 ;
655
+ char isNegative = 0 ;
656
+
654
657
if (num < 0 )
655
658
{
656
659
num = - num ;
657
660
isNegative = 1 ;
658
661
}
659
- for (t = 0 ;t < len ;t ++ )
662
+ for (i = 0 ;i < len ;i ++ )
660
663
{
661
- temp = (num /GUI_Pow10 [len - t - 1 ])%10 ;
662
- if (enshow == 0 )
664
+ bit_value = (num /GUI_Pow10 [len - i - 1 ])%10 ;
665
+ if (notZero == 0 )
663
666
{
664
- if (temp == 0 && t < (len - 1 ))
667
+ if (bit_value == 0 && i < (len - 1 ))
665
668
{
666
669
if (leftOrRight == RIGHT )
667
670
{
@@ -670,65 +673,86 @@ void GUI_DispDec(int16_t x, int16_t y,int32_t num, uint8_t len, uint8_t mode, ui
670
673
}
671
674
else
672
675
{
673
- i ++ ;
676
+ blank_bit_len ++ ;
674
677
}
675
678
continue ;
676
679
}
677
680
else
678
681
{
679
- enshow = 1 ;
682
+ notZero = 1 ;
680
683
if (isNegative )
681
684
{
682
685
GUI_DispChar (x - BYTE_WIDTH ,y ,'-' ,mode );
683
686
}
684
687
}
685
688
}
686
- GUI_DispChar (x ,y ,temp + '0' ,mode );
689
+ GUI_DispChar (x ,y ,bit_value + '0' ,mode );
687
690
x += BYTE_WIDTH ;
688
691
}
689
- for (;i > 0 ;i -- )
692
+ for (; blank_bit_len > 0 ; blank_bit_len -- )
690
693
{
691
694
GUI_DispChar (x ,y ,' ' ,mode );
692
695
x += BYTE_WIDTH ;
693
696
}
694
697
}
695
698
696
- void GUI_DispFloat (int16_t x , int16_t y , float num , uint8_t llen , uint8_t rlen )
699
+ void GUI_DispFloat (int16_t x , int16_t y , float num , uint8_t llen , uint8_t rlen , uint8_t mode , uint8_t leftOrRight )
697
700
{
698
701
uint8_t alen = 0 ;
699
702
uint8_t i = 0 ;
700
703
uint8_t notZero = 0 ;
701
- GUI_DispChar (x ,y ,num >=0 ? ' ' :'-' ,1 );
702
- x += BYTE_WIDTH ;
703
- num = num >=0 ? num : (- num );
704
+ char isNegative = 0 ;
705
+
706
+ if (num < 0 )
707
+ {
708
+ num = - num ;
709
+ isNegative = 1 ;
710
+ }
704
711
705
712
num *= GUI_Pow10 [(unsigned )rlen ];
706
713
num += 0.5f ;
707
- num = (float ) floor (num );
708
- for (i = 0 ;i < llen ;i ++ )
714
+ num = (float ) floor (num );
715
+ for (i = 0 ; i < llen ; i ++ )
709
716
{
710
717
uint8_t bit_value = ((uint32_t )(num /GUI_Pow10 [llen + rlen - 1 - i ]))%10 ;
711
- if (bit_value != 0 || notZero != 0 || i == llen - 1 )
718
+ if (notZero == 0 )
712
719
{
713
- notZero = 1 ;
714
- GUI_DispChar (x ,y ,bit_value + '0' ,1 );
715
- x += BYTE_WIDTH ;
716
- alen ++ ;
720
+ if (bit_value == 0 && i < (llen - 1 ))
721
+ {
722
+ if (leftOrRight == RIGHT )
723
+ {
724
+ GUI_DispChar (x ,y ,' ' ,mode );
725
+ x += BYTE_WIDTH ;
726
+ alen ++ ;
727
+ }
728
+ continue ;
729
+ }
730
+ else
731
+ {
732
+ notZero = 1 ;
733
+ if (isNegative )
734
+ {
735
+ GUI_DispChar (x - BYTE_WIDTH ,y ,'-' ,mode );
736
+ }
737
+ }
717
738
}
739
+ GUI_DispChar (x ,y ,bit_value + '0' ,mode );
740
+ x += BYTE_WIDTH ;
741
+ alen ++ ;
718
742
}
719
- GUI_DispChar (x ,y ,'.' ,1 );
743
+ GUI_DispChar (x ,y ,'.' ,mode );
720
744
x += BYTE_WIDTH ;
721
745
alen ++ ;
722
746
723
747
for (i = 0 ;i < rlen ;i ++ )
724
748
{
725
- GUI_DispChar (x ,y ,(int )(num /GUI_Pow10 [rlen - 1 - i ])%10 + '0' ,1 );
749
+ GUI_DispChar (x ,y ,(int )(num /GUI_Pow10 [rlen - 1 - i ])%10 + '0' ,mode );
726
750
x += BYTE_WIDTH ;
727
751
alen ++ ;
728
752
}
729
753
for (; alen < llen + rlen ; alen ++ )
730
754
{
731
- GUI_DispChar (x ,y ,' ' ,1 );
755
+ GUI_DispChar (x ,y ,' ' ,mode );
732
756
x += BYTE_WIDTH ;
733
757
}
734
758
}
0 commit comments