国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

嵌入式系統(tǒng)中數(shù)據(jù)與字符串的轉(zhuǎn)換及應(yīng)用

2012-09-25 03:00:10權(quán)建軍胡佩琦
關(guān)鍵詞:浮點(diǎn)數(shù)字符串語句

權(quán)建軍,胡佩琦

(蘭州石化職業(yè)技術(shù)學(xué)院 電子電氣工程系,蘭州 730050)

引 言

在嵌入式應(yīng)用系統(tǒng)的開發(fā)中,經(jīng)常遇到通過LCD顯示數(shù)據(jù)、通過鍵盤鍵入數(shù)據(jù)之類的問題。

LCD顯示,由于顯示方式靈活、界面友好,在嵌入式應(yīng)用系統(tǒng)中得到了廣泛的應(yīng)用。在嵌入式應(yīng)用系統(tǒng)中,較為常用的LCD有字符型的1602、點(diǎn)陣型的LCM12864,以及帶漢字庫的12864Z等。無論哪種LCD,其顯示字符都用ASCII碼。而要顯示數(shù)值,就必須進(jìn)行數(shù)值到字符串的變換。

同樣,在嵌入式系統(tǒng)中,經(jīng)常使用矩陣鍵盤進(jìn)行數(shù)據(jù)等的鍵入,如輸入“幅值”、“相位”等數(shù)據(jù)信息。對于數(shù)字的鍵入,就必然涉及字符串到數(shù)據(jù)的轉(zhuǎn)換問題。

1 數(shù)據(jù)轉(zhuǎn)字符串的方法及應(yīng)用

從數(shù)據(jù)到字符串的轉(zhuǎn)換,典型方法是先進(jìn)行字位分離,將每個(gè)字轉(zhuǎn)為ASCII碼(數(shù)字+0x30即轉(zhuǎn)為ASCII碼)后送LCD顯示。這種方法比較繁瑣,每次顯示都要進(jìn)行這樣的工作。

當(dāng)然,也可以利用itoa函數(shù)編寫從整型到字符串的轉(zhuǎn)換函數(shù),把整型數(shù)轉(zhuǎn)換為字符串,進(jìn)而送LCD顯示。下面就是把整型數(shù)轉(zhuǎn)為字符串的程序:

這種方法對空間占用不大,對于無符號整型數(shù)是比較方便的;對于有符號的整型數(shù),需要判斷正負(fù),程序編寫方法也類似;對于浮點(diǎn)數(shù),編制這種程序比較繁瑣。

其實(shí),除此之外,KEIL C和ICC還提供了更為有效的方法,實(shí)現(xiàn)數(shù)據(jù)到字符串的轉(zhuǎn)換。

1.1 KEIL C環(huán)境下數(shù)據(jù)到字符串的轉(zhuǎn)換

在KEIL C的stdio.h中提供了sprintf語句可以進(jìn)行數(shù)據(jù)到字符串的格式轉(zhuǎn)換。以下是在KEIL C環(huán)境下編寫的LCD1602顯示整型數(shù)和浮點(diǎn)數(shù)的程序:

運(yùn)行的結(jié)果是在LCD1602第1行顯示“a=-1235”,第2行顯示“b=1.235”。

程序中,“sprintf(Buf1,"a=%d",a)”是將整型變量a轉(zhuǎn)換為字符型變量,并存在數(shù)組Buf1[10]中;“sprintf(Buf2,"b=%2.3f",b)”是將浮點(diǎn)變量b轉(zhuǎn)換為字符型變量,并存在數(shù)組Buf2[10]中。若使用“sprintf(Buf2,"%2.3f",b)”語句,產(chǎn)生的hex代碼要增加約7KB。

1.2 ICC開發(fā)環(huán)境下數(shù)據(jù)到字符串的轉(zhuǎn)換

在AVR系統(tǒng)中,ICC開發(fā)平臺允許使用sprintf語句進(jìn)行數(shù)據(jù)到字符串的格式轉(zhuǎn)換。同時(shí),為了高精度顯示,AVR允許使用浮點(diǎn)數(shù)。下面是整型數(shù)和浮點(diǎn)數(shù)轉(zhuǎn)換為字符串顯示的例子:

需要注意的是,使用sprintf語句時(shí),要在ICC開發(fā)平臺下project的option選項(xiàng)中,對target選項(xiàng)進(jìn)行設(shè)置,在PRINTF Version中選擇float選項(xiàng),同時(shí),將return stack size設(shè)為30。

采用此方法的缺點(diǎn)是生成的代碼較大(增加約7.5 KB)。最后的顯示結(jié)果為:第1行顯示“ch0:1256”;第2行顯示“ch1:-3579”;第3行顯示“ch2:127.5”;第4行顯示”ch3:-0.985”。

注意,如要將小數(shù)后位數(shù)保留2位,采用sprintf(Buf4,"%2.2f",w)時(shí)編譯不能通過。字符串的長度是通過“unsigned char Buf1[7],Buf2[7],Buf3[7],Buf4[7];”來定義的。

2 字符串轉(zhuǎn)換為數(shù)據(jù)的方法及應(yīng)用

字符串到數(shù)據(jù)轉(zhuǎn)換的常規(guī)方法是用數(shù)位分離的方法,如下面的程序:

采用該方法對整型數(shù)進(jìn)行轉(zhuǎn)換時(shí),必須知道數(shù)據(jù)長度,而且,對其他類型的數(shù)據(jù)轉(zhuǎn)換不太方便。

其實(shí),在KEIL和ICC中,都提供了頭文件stdlib.h,利用該文件提供的atoi轉(zhuǎn)換函數(shù)可以方便實(shí)現(xiàn)轉(zhuǎn)換。該文件可以在KEIL和ICC的安裝路徑下看到。

2.1 MCS51開發(fā)中字符串到數(shù)據(jù)的轉(zhuǎn)換

在KEIL的安裝根目錄下的INC文件夾中,可以查看stdlib.h文件,該文件提供了字符串到數(shù)據(jù)的轉(zhuǎn)換函數(shù),使用這些函數(shù)必須包含該頭文件。

下面的程序?qū)崿F(xiàn)了字符串轉(zhuǎn)換為整型數(shù)和浮點(diǎn)數(shù):

2.2 AVR開發(fā)中字符串到數(shù)據(jù)的轉(zhuǎn)換

在AVR的ICC開發(fā)平臺中也有“stdlib.h”頭文件,它提供的atoi函數(shù)可以實(shí)現(xiàn)字符串轉(zhuǎn)數(shù)字。程序如下:

在AVR Studio的VIEW窗口進(jìn)行調(diào)試時(shí),觀察p、q分別為-598和-5.98。

結(jié) 語

介紹了MCS51和AVR開發(fā)中,LCD應(yīng)用開發(fā)中經(jīng)常使用的數(shù)據(jù)到字符串的轉(zhuǎn)換方法,以及鍵盤應(yīng)用開發(fā)中從字符串到數(shù)據(jù)的轉(zhuǎn)換方法。該方法充分利用KEIL和ICC開發(fā)平臺資源,可有效提高開發(fā)效率。

[1]戴佳,戴衛(wèi)恒.51單片機(jī)C語言應(yīng)用程序設(shè)計(jì)實(shí)例[M].北京:電子工業(yè)出版社,2006:123-135.

[2]彭偉.單片機(jī)C語言程序設(shè)計(jì)實(shí)訓(xùn)100例——基于AVR+Proteus[M].北京:北京航空航天大學(xué)出版社,2011.

[3]劉建清.輕松玩轉(zhuǎn)AVR單片機(jī)C語言[M].北京:北京航空航天大學(xué)出版社,2011.

猜你喜歡
浮點(diǎn)數(shù)字符串語句
四種Python均勻浮點(diǎn)數(shù)生成方法
重點(diǎn):語句銜接
精彩語句
在C語言中雙精度浮點(diǎn)數(shù)線性化相等比較的研究
非精確浮點(diǎn)數(shù)乘法器設(shè)計(jì)
一種新的基于對稱性的字符串相似性處理算法
如何搞定語句銜接題
語文知識(2014年4期)2014-02-28 21:59:52
依據(jù)字符串匹配的中文分詞模型研究
一種針對Java中字符串的內(nèi)存管理方案
Visual Basic處理浮點(diǎn)DSP芯片數(shù)據(jù)的方法
通化市| 上饶县| 郴州市| 郯城县| 西丰县| 满城县| 罗甸县| 大洼县| 望谟县| 邢台市| 湄潭县| 富民县| 阿瓦提县| 上饶县| 陕西省| 延安市| 林周县| 自贡市| 高要市| 嘉兴市| 栾城县| 东乡| 瑞丽市| 玛沁县| 贞丰县| 云南省| 大余县| 西吉县| 铜梁县| 阿巴嘎旗| 桃园市| 阳信县| 新和县| 桐城市| 大庆市| 宜黄县| 湘潭市| 聂拉木县| 临潭县| 区。| 宁南县|