187|0

25

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

[技术]工控开发中怎么用按键输入有小数点的数据并显示 成都电路板设计 [复制链接]

在做工控开发的时候,有时需要获得按键输入的数值然后显示。当输入整数数据的时候是比较简单的,按键输入一个数字后,把之前的数据乘以10(十进制的话),然后加上当前输入的数字就可以,在需要显示的时候,把每一位数字按照规则编码后,用向左移位的方法依次存入一个显示数组中,然后再依次把显示数组每一位送出显示就行。
但是在处理有小数点的数据的时候要麻烦一点,因为你事前是不知道有多少位小数的,所以你就不能事前知道应该把那个小数点放到显示数组的哪一位。但是也不是没有解决的方法,可以这样做: 
(1)先记录按键输入的数据到一个变量,还需记录输入了多少位小数
●    记录按键输入的数字位,所有的数字键输入的数据都存入一个变量data,这个变量包含了整数部分和小数部分。假设数字按键值为key,且是十进制的数据,那么每输入一个数字按键就进行累计,C代码如下:
data=data*10+key; //将每次输入的按键值累加到变量data
●    记录有没有输入小数点,输入了几位小数。可以定义一个变量DecimalNumber,初始化为0,当操作者点击了小数点后令DecimalNumber=1,当按了小数点后继续输入数字,那么就要继续用累加的方法记录输入了多少位小数,如:
按了小数点后按了一位数字(1位小数),令DecimalNumber=2;
又按了一位数字(2位小数),令DecimalNumber=3;
以此类推,那么这个变量DecimalNumber就记录了按没有按小数点,有多少位小数。
●    在以后参与计算的时候可以定义一个浮点数变量data1,判断DecimalNumber,当DecimalNumber≥2时,令data1=data/(10^(DecimalNumber-1)),就可以得到按键输入的完整的小数数据data1。
(2) 知道了data和DecimalNumber,怎么存入显示数组发送去显示?
●    定义一个显示数组dis[],用于按位存放待显示的数据,包括了整数、小数点和小数部分;

●    分为三部分处理:小数部分、小数点、整数部分。分步骤,依次将这三部分存入显示数组:
I.小数部分用循环指令,for或者while都行,根据DecimalNumber的值来将data的小数部分存入dis[]数组的低段部分,例如:
unsigned char i=0;//循环变量
for(i=2;i++;i<=DecimalNumber) //依次将小数部分由低到高存入数组dis[]
{ dis[i-2]= (data/(10^( i-2)))%10+’0’;// +’0’表示转换为ASCII码。 ^是幂函数,这里为了显示方便用^,实际应当用pow函数
}
II.将小数点存入显示数组dis[];
dis[DecimalNumber-1]=’.’;
III.还是用循环指令,将整数部分继续往左存入显示数组dis[],C代码如下:
for(i=DecimalNumber;i++;i<=n) //依次将整数部分由低到高存入数组dis[],n表示整数和小数部分一共预期有多少位数
{ dis= data/(10^( i-1))%10+’0’; }
如此一来,就把小数的全部数据存入了显示数组dis[]中,包括小数点,再发送给显示设备就可以了。思路是这样的,不过程序没有验证,仅供参考。
全文完。

 

此帖出自信息发布论坛
点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表