自-C51的結(jié)構(gòu)體數(shù)據(jù)在單片機(jī)編程中的應(yīng)用_第1頁(yè)
自-C51的結(jié)構(gòu)體數(shù)據(jù)在單片機(jī)編程中的應(yīng)用_第2頁(yè)
自-C51的結(jié)構(gòu)體數(shù)據(jù)在單片機(jī)編程中的應(yīng)用_第3頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、隨著單片機(jī)應(yīng)用領(lǐng)域的逐漸擴(kuò)展和顯示、通信技術(shù)的不斷進(jìn)步,單片機(jī)開發(fā)所要求的人機(jī)界面越來越豐富,以單片機(jī)為核心應(yīng)用的產(chǎn)品已由純實(shí)用向功能化、可視化、網(wǎng)絡(luò)化發(fā) 展。HMI (人機(jī)界面)技術(shù)及產(chǎn)品在近兩年成為發(fā)展最快的領(lǐng)域。為了實(shí)現(xiàn)以更多的人 機(jī)交互信息、更清晰的儀表硬件描述為特征的HMI功能,相應(yīng)地,單片機(jī)編程中的參數(shù)量及參數(shù)類型不斷增加,僅有基本類型變量(如位、字節(jié)、整型、浮點(diǎn)型、指針型)和數(shù)組變量已不能完全有效地表達(dá)參數(shù)的特性。使用C5 1編譯支持的一種結(jié)構(gòu)體(s t ruct)數(shù)據(jù)類型,可有效地解決許多編程中所面臨的種種數(shù)據(jù)結(jié)構(gòu)管理問題。1結(jié)構(gòu)體數(shù)據(jù)除了基本類型數(shù)據(jù),數(shù)組是C5 1編程中一種

2、常用的構(gòu)造類型數(shù)據(jù)。它由上述基本類型數(shù)據(jù)(位、指針除外)組成,并且一個(gè)數(shù)組的各元素應(yīng)屬于同一個(gè)類型。但是,只有這些數(shù)據(jù)類型并不能很好地表達(dá)我們所要引用的數(shù)據(jù),有時(shí)需要將不同類型的數(shù)據(jù)組合成一個(gè)有 機(jī)的整體,以便于引用。例如,要保存一組采樣值:時(shí)間(月、日時(shí)、分)、溫度、流量等,如果分別將它們定義為互相獨(dú)立的簡(jiǎn)單變量,難以反映它們的內(nèi)在聯(lián)系。應(yīng)當(dāng)把它們 組織成一個(gè)組合項(xiàng),在一個(gè)組合項(xiàng)中包含若干個(gè)類型不同(也可以相同)的數(shù)據(jù)項(xiàng)。這樣的數(shù)據(jù)結(jié)構(gòu)稱為結(jié)構(gòu)體(st r uc t ur e)。定義一個(gè)結(jié)構(gòu)體類型的一般形式為:? struc t結(jié)構(gòu)體名成員表列; ?例如上面提到的一組數(shù)據(jù),可以表示為:str

3、 u c t sam p l e / * 結(jié)構(gòu)體名*/char m on t h; / *月 * /ch ar day ;/ * 日 */ ?c h ar h our ; /* 時(shí) */cha r minute; / * 分 */ ? int t em prat u re; /* 溫度 */ ? floa t flow ; /*流量等*/?s a mp 1 e1, Sa mpl e 2 ; ?它定義了一個(gè)反映某一時(shí)刻采得的溫度值、流量值等的結(jié)構(gòu)體sam pie,同時(shí)定義了兩個(gè)具有 s t ruct s ample類型的變量(或參數(shù))。2結(jié)構(gòu)體數(shù)據(jù)的優(yōu)點(diǎn)(1 )有效利用內(nèi)存空間? 在C5 1編譯

4、時(shí),結(jié)構(gòu)成員在內(nèi)存中是順序存放的,因而不同類型的數(shù)據(jù)被有機(jī)地結(jié)合成了一個(gè)數(shù)據(jù)塊,使單片機(jī)有限的內(nèi)存資源空間得以充分利用。?(2 )參數(shù)組織結(jié)構(gòu)緊密、清晰結(jié)構(gòu)體數(shù)據(jù)在多參數(shù)的智能化儀表設(shè)計(jì)中尤為適用,它可將同一屬性、不同類型的數(shù)據(jù)組織在一起,參數(shù)便于識(shí)別、調(diào)用。如編制某些通用型儀表 的程序,可定義下列結(jié)構(gòu)體數(shù)據(jù)。?例1 :放大環(huán)節(jié)描述? struct am pl if ier? int gain ; ? ch a r of fs et; in put_amp,o ut p ut_ a mp; ?以上定義了一個(gè)表示放大環(huán)節(jié)(a mpli fi er)的結(jié)構(gòu)體類 型。它由放大環(huán)節(jié)增益(gain )和

5、放大環(huán)節(jié)零點(diǎn)(o f fset)組成,并且定義了輸入環(huán)節(jié)(i nput_a mp )和輸出環(huán)節(jié)(ou tpu t_ a mp)兩個(gè)結(jié)構(gòu)體數(shù)據(jù)。?例2 :儀表特征描述 描述儀表特征的數(shù)據(jù)可以組合成一個(gè)有機(jī)的結(jié)構(gòu)體,以便于識(shí)別與調(diào)用。?struct m e t er? int meter no; / *儀表編號(hào) * /char meter_code10; /* 儀表編碼* /i n t meter_ s ize; /* 儀表口徑 * /float m ete r _factor ; /*儀表系數(shù)* /? ch ar me t er_ze r o; / *儀表零點(diǎn) */me terl ;(3)參數(shù)調(diào)

6、用方便?結(jié)構(gòu)體數(shù)據(jù)的調(diào)用方式有多種,最直接的方式為:結(jié)構(gòu)體變量名成員名如例2中,可以對(duì)變量賦值:met e rl.met e r_fac t or= l .0;這里著重介紹一種通過指針調(diào)用的方式。該方式在對(duì)結(jié)構(gòu)體數(shù)據(jù)作順序存取時(shí)尤為方便。在數(shù)據(jù)存儲(chǔ)區(qū)有以下結(jié)構(gòu):? stru c t p a ra ? int prO ;ch a r pr1 ;fl o at pr2 ;? par a me te r; ?在程序存儲(chǔ)區(qū)與之相對(duì)應(yīng)存放一組成員名數(shù)據(jù)表paramete r_name m n。該表包含表 1所列內(nèi)容。參數(shù)類型地址偏移量參數(shù)名備注i0"XXXXXX"成員0c2"

7、;XXXXXX"成員lf3"XX XXXX"成員2成員n在引用時(shí),先設(shè)計(jì)兩個(gè)指針變量,分別指向數(shù)據(jù)存儲(chǔ)區(qū)和程序存儲(chǔ)區(qū):?p 指向數(shù)據(jù)存儲(chǔ)區(qū);p c c指向程序存儲(chǔ)區(qū);? p =&pa ra meter. p r0;定位指針指向參數(shù)值首地址;?p cc=&pa r ameter name; 定位指針指向參數(shù)名首地址。需要調(diào)用第i個(gè)參數(shù)時(shí):? p + *( p cc +n*i +l )指向第m 個(gè)參數(shù);?(pcc + n*i)中存 放的是該參數(shù)的數(shù)據(jù)類型。?這樣,就可以根據(jù)數(shù)據(jù)類型的不同分支,對(duì)不同類型的數(shù)據(jù)進(jìn)行相應(yīng)的處理。?( 4 )提高編程效率數(shù)據(jù)變量的有效組織使得程序的編制更便于結(jié)構(gòu)化、模塊化,從而方便了程序后續(xù)的擴(kuò)展,可以極大地加快單片機(jī)開發(fā)者的開發(fā)進(jìn)度。3總結(jié)? 由于單片機(jī)內(nèi)存資源的限制, 如何合理、有

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論