嵌入式系统中数据与字符串的转换及应用

2012-09-25 03:00权建军胡佩琦
单片机与嵌入式系统应用 2012年4期
关键词:字符串语句单片机

权建军,胡佩琦

(兰州石化职业技术学院 电子电气工程系,兰州 730050)

引 言

在嵌入式应用系统的开发中,经常遇到通过LCD显示数据、通过键盘键入数据之类的问题。

LCD显示,由于显示方式灵活、界面友好,在嵌入式应用系统中得到了广泛的应用。在嵌入式应用系统中,较为常用的LCD有字符型的1602、点阵型的LCM12864,以及带汉字库的12864Z等。无论哪种LCD,其显示字符都用ASCII码。而要显示数值,就必须进行数值到字符串的变换。

同样,在嵌入式系统中,经常使用矩阵键盘进行数据等的键入,如输入“幅值”、“相位”等数据信息。对于数字的键入,就必然涉及字符串到数据的转换问题。

1 数据转字符串的方法及应用

从数据到字符串的转换,典型方法是先进行字位分离,将每个字转为ASCII码(数字+0x30即转为ASCII码)后送LCD显示。这种方法比较繁琐,每次显示都要进行这样的工作。

当然,也可以利用itoa函数编写从整型到字符串的转换函数,把整型数转换为字符串,进而送LCD显示。下面就是把整型数转为字符串的程序:

这种方法对空间占用不大,对于无符号整型数是比较方便的;对于有符号的整型数,需要判断正负,程序编写方法也类似;对于浮点数,编制这种程序比较繁琐。

其实,除此之外,KEIL C和ICC还提供了更为有效的方法,实现数据到字符串的转换。

1.1 KEIL C环境下数据到字符串的转换

在KEIL C的stdio.h中提供了sprintf语句可以进行数据到字符串的格式转换。以下是在KEIL C环境下编写的LCD1602显示整型数和浮点数的程序:

运行的结果是在LCD1602第1行显示“a=-1235”,第2行显示“b=1.235”。

程序中,“sprintf(Buf1,"a=%d",a)”是将整型变量a转换为字符型变量,并存在数组Buf1[10]中;“sprintf(Buf2,"b=%2.3f",b)”是将浮点变量b转换为字符型变量,并存在数组Buf2[10]中。若使用“sprintf(Buf2,"%2.3f",b)”语句,产生的hex代码要增加约7KB。

1.2 ICC开发环境下数据到字符串的转换

在AVR系统中,ICC开发平台允许使用sprintf语句进行数据到字符串的格式转换。同时,为了高精度显示,AVR允许使用浮点数。下面是整型数和浮点数转换为字符串显示的例子:

需要注意的是,使用sprintf语句时,要在ICC开发平台下project的option选项中,对target选项进行设置,在PRINTF Version中选择float选项,同时,将return stack size设为30。

采用此方法的缺点是生成的代码较大(增加约7.5 KB)。最后的显示结果为:第1行显示“ch0:1256”;第2行显示“ch1:-3579”;第3行显示“ch2:127.5”;第4行显示”ch3:-0.985”。

注意,如要将小数后位数保留2位,采用sprintf(Buf4,"%2.2f",w)时编译不能通过。字符串的长度是通过“unsigned char Buf1[7],Buf2[7],Buf3[7],Buf4[7];”来定义的。

2 字符串转换为数据的方法及应用

字符串到数据转换的常规方法是用数位分离的方法,如下面的程序:

采用该方法对整型数进行转换时,必须知道数据长度,而且,对其他类型的数据转换不太方便。

其实,在KEIL和ICC中,都提供了头文件stdlib.h,利用该文件提供的atoi转换函数可以方便实现转换。该文件可以在KEIL和ICC的安装路径下看到。

2.1 MCS51开发中字符串到数据的转换

在KEIL的安装根目录下的INC文件夹中,可以查看stdlib.h文件,该文件提供了字符串到数据的转换函数,使用这些函数必须包含该头文件。

下面的程序实现了字符串转换为整型数和浮点数:

2.2 AVR开发中字符串到数据的转换

在AVR的ICC开发平台中也有“stdlib.h”头文件,它提供的atoi函数可以实现字符串转数字。程序如下:

在AVR Studio的VIEW窗口进行调试时,观察p、q分别为-598和-5.98。

结 语

介绍了MCS51和AVR开发中,LCD应用开发中经常使用的数据到字符串的转换方法,以及键盘应用开发中从字符串到数据的转换方法。该方法充分利用KEIL和ICC开发平台资源,可有效提高开发效率。

[1]戴佳,戴卫恒.51单片机C语言应用程序设计实例[M].北京:电子工业出版社,2006:123-135.

[2]彭伟.单片机C语言程序设计实训100例——基于AVR+Proteus[M].北京:北京航空航天大学出版社,2011.

[3]刘建清.轻松玩转AVR单片机C语言[M].北京:北京航空航天大学出版社,2011.

猜你喜欢
字符串语句单片机
基于文本挖掘的语词典研究
重点:语句衔接
基于单片机的SPWM控制逆变器的设计与实现
基于单片机的层次渐变暖灯的研究
基于单片机的便捷式LCF测量仪
Microchip推出两个全新PIC单片机系列
一种新的基于对称性的字符串相似性处理算法
如何搞定语句衔接题
高效的top-k相似字符串查询算法
一种针对Java中字符串的内存管理方案