OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6113|回复: 8

没看懂LCD_showNum函数,求助大佬能解读下

[复制链接]

1

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2020-4-6
在线时间
27 小时
发表于 2020-5-7 20:46:01 | 显示全部楼层 |阅读模式
5金钱
//显示数字,高位为0,则不显示
//x,y :起点坐标         
//len :数字的位数
//size:字体大小
//color:颜色
//num:数值(0~4294967295);         
void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 size)
{                
        u8 t,temp;
        u8 enshow=0;                                                  
        for(t=0;t<len;t++)
        {
                temp=(num/LCD_Pow(10,len-t-1))%10;
                if(enshow==0&&t<(len-1))
                {
                        if(temp==0)
                        {
                                LCD_ShowChar(x+(size/2)*t,y,' ',size,0);
                                continue;
                        }else enshow=1;
                          
                }
                 LCD_ShowChar(x+(size/2)*t,y,temp+'0',size,0);
        }
}

最佳答案

查看完整内容[请看2#楼]

x,y 就是你要在哪里开始显示数字,len就是你想显示的数字的位数比如32是两位。size 是字体大小格式,宽默认为高的一般,size那个参数位置填写数字的高就行了,一般选择高为16个像素点的格式。color是显示的数字的颜色,num是你实际想要显示的数字。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

140

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1705
金钱
1705
注册时间
2019-5-2
在线时间
169 小时
发表于 2020-5-7 20:46:02 | 显示全部楼层
x,y 就是你要在哪里开始显示数字,len就是你想显示的数字的位数比如32是两位。size 是字体大小格式,宽默认为高的一般,size那个参数位置填写数字的高就行了,一般选择高为16个像素点的格式。color是显示的数字的颜色,num是你实际想要显示的数字。
回复

使用道具 举报

0

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
62
金钱
62
注册时间
2018-12-27
在线时间
0 小时
发表于 2020-5-7 20:46:03 | 显示全部楼层
原子哥,快来帮楼主解答吧,等不及了
回复

使用道具 举报

0

主题

89

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1286
金钱
1286
注册时间
2020-4-7
在线时间
309 小时
发表于 2020-5-7 21:12:54 | 显示全部楼层
哪里有问题呢
回复

使用道具 举报

1

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
58
金钱
58
注册时间
2020-4-6
在线时间
27 小时
 楼主| 发表于 2020-5-8 09:58:06 | 显示全部楼层

主要是以下这些没理解吧1.temp在该函数中作为变量是干啥的?2.LCD_POW的作用是什么(该函数代码已放在下面了)3.x+(size/2)*t是什么意思
//m^n函数
//返回值:m^n次方.
u32 LCD_Pow(u8 m,u8 n)
{
        u32 result=1;         
        while(n--)result*=m;   
        return result;
}       
回复

使用道具 举报

22

主题

2251

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4480
金钱
4480
注册时间
2013-4-22
在线时间
337 小时
发表于 2020-5-8 11:47:54 | 显示全部楼层
电子DD 发表于 2020-5-8 09:58
主要是以下这些没理解吧1.temp在该函数中作为变量是干啥的?2.LCD_POW的作用是什么(该函数代码已放在下 ...

取每个数据位上的数使用的,比方说1234这个数,你要分别取1、2、3、4,那你肯定就要用1234除法和取余操作,这个函数就是做了找到每次除法用的除数,其实这种方式我个人觉得效率不高
回复

使用道具 举报

0

主题

57

帖子

0

精华

初级会员

Rank: 2

积分
56
金钱
56
注册时间
2020-4-29
在线时间
0 小时
发表于 2020-5-8 16:15:59 | 显示全部楼层
技术不行,没办法帮到楼主,只能帮顶以表支持......
回复

使用道具 举报

13

主题

57

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
407
金钱
407
注册时间
2016-5-26
在线时间
108 小时
发表于 2020-6-2 14:01:55 | 显示全部楼层
num1=123456/100000;
num2=123456%100000/10000;
num3=123456%100000%10000/1000;
num4=123456%100000%10000%1000/100;

类似 51单片机中学习的这段代码 。
for(t=0;t<len;t++) 就是不断的计算每一位要显示的数
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
18
金钱
18
注册时间
2020-11-23
在线时间
4 小时
发表于 2020-12-12 00:45:45 | 显示全部楼层
什么叫高位为零不显示,看程序,所有零都会替换成空格
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-15 21:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表