單片機之數組的應用_第1頁
單片機之數組的應用_第2頁
單片機之數組的應用_第3頁
單片機之數組的應用_第4頁
單片機之數組的應用_第5頁
已閱讀5頁,還剩2頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、【實驗題目】 數組【目的要求】1.學習一維和二維數組的定義,初始化,引用。 2.利用數組做流水燈。 3.要求三個學時完成。【實驗平臺】電腦,偉福,Proteus7等仿真軟件。【實驗原理】我們在數學上學過數列,用一大括號將一組數字括起來,就變成一個整體,用一個大寫字母來表示,數列具有無序性,不重復性。且根據數列中數的類型來判斷數列的類型。如果將數列的不重復性去掉,并用a10來代表,10為整數代表數的個數,a0,a1.a9來表示數列中的數,這就變成了我們今天要說的數組。定義數組: 類型符 數組名常量表達式;數組名即為變量名,定義數組時須指定元素的個數,即方括號中的數,即為數組長度,注意數組長度和數

2、組元素的表示,a10表示數組有十個元素,儲存形式為:a0a1a2a3a4a5a6a7a8a9特別注意沒有a10。常量表達式中可以包括常量和符號常量,例如“a3+5”,如果是在被調用的函數中定義數組,其長度可以是變量或變量表達式,例如:void func(int n) int a2*n; /n的值從實參傳來 .一維數組的初始化:為了使程序簡潔,常在定義數組的同時,給各數組元素賦值,這稱為數組的初始化。將數組各元素的初值順序放在一對花括號內,數據間用逗號隔開。例如:int a10=0,1,2,3,4,5,6,7,8,9; 則a0=0,a1=1,a2=2.a8=8,a9=9。也可以給數組的一部分賦值

3、,例如:a10=1,2,3,4,5;則只給前五個賦初值,剩下的系統自動給后面元素賦值為0。在對全部數組元素賦初值時,由于數據的個數已確定,因此可以不指定數組長度。例如:int a=1,2,3,4,5;二維數組:我們都學過平面坐標,利用平面上兩個垂直的坐標軸,用到兩坐標軸的距離來確定平面的位置。二維數組也是這個原理,二維數組常稱為矩陣。把二維數組寫成行和列的排列形式。定義二維數組: 類型說明符 數組名常量表達式(行)常量表達式(列) 例如:int a34a00 a01 a02 a03a10 a11 a12 a13a20 a21 a22 a23二維數組的初始化:分行賦值,可以將所有數據寫在一個大括

4、號中,系統會自動按順序賦值。也可對部分元素賦值。其實與一維數組類似,只要以一維數組類推便可得出,由于單片機中對二維數組運用較少,便不做具體講述。字符型數組:用來存放字符串,定義類型為char型。規定以“0”為結束符,在此先不做詳解。【實驗過程】 針對單片機的編程#include"reg51.h"main() int i , x , y , a2=0x00;0xff; /定義變量與整型數組含兩個元素for(i=0;i<2;i+)/由于中括號內為變量利用for循環語句給P1口變換賦值使燈變滅變換 P1=ai; /數組的引用 for(x=0;x<200;x+) for

5、(y=0;y<200;y+); /利用for語句的延時 思考:數組就是一個數據源,我們不斷的從中取出值來利用,如果數據源是能夠讓二極管單個閃亮的數據,那么我們將這些數據按一定規律引用,那么就能做出流水燈的效果。#include"reg51.h"main() int i , x , y,a8=0xfe,oxfd,oxfb,oxf7,oxef,oxdf,oxbf,ox7f;/此初始化數值分別讓燈從上至下一個個閃亮 for(i=0;i<8;i+) P1=ai; /數組的引用 for(x=0;x<200;x+) for(y=0;y<200;y+); 思考:用

6、數組跟前面用位移動做流水燈相似,但用數組還能達到更大的功能,讓燈更多樣式的閃亮。#include"reg51.h"main()int i,x,y,a10=0x7e,0x3c,0x99,0xc3,0xe7,0xc3,0x99,0x3c,0x7e,0xff; for(i=0;i<10;i+) P1=ai; for(x=0;x<500;x+) for(y=0;y<200;y+); 此程序可以實現從上至下,從下至上以兩個燈共同閃亮的流動,我們可以發揮自己的想像力,創造更多的閃亮方式。【實驗擴展】1.思考:如果我們把七個二極管做成長形的,擺放成“ ”的形狀并根據各二

7、極管與單片機接口的順序編排出讓其顯示從0到9所對應的十六進制數,并對一定義的數組初始化,我們就做出了“數碼管”此想法在第二次實驗中就已提到。根據上圖中二極管的連接順序我們可以編排出讓其顯示0到9數字對應的十六進制數分別為:0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f。由此我們可進行如下編程:#include"reg51.h"void delay(); /對delay函數的聲明main()int i ; /定義一循環變量 int a10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7

8、f,0x6f; /用編排出的數對數組初始化 for(i=0;i<10;i+) P1=ai; /利用for循環給P1口賦值 delay(); /對延時函數的調用 void delay() /延時函數 int j,k; for(j=0;j<400;j+) for(k=0;k<600;k+); 具體的顯示方式以視頻格式在附件,“數形燈”2. 思考:上邊我們用二極管做出數碼管的顯示,只是一種近似于流水燈的形式,一種固定死的顯示方式,如果我們在程序中多加入一些邏輯思維,就更加接近于真正的數碼管。#include"reg51.h"void delay(int); /對含參delay函數的聲明main() int i,s=0; /定義兩個變量并賦值 int a10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; while(1) i=s%10; /s除10求余數并賦予i P1=ai; /i作為一變量改變引用數組元素 s+; /S值逐步加1 if(s=10) s=0; /s值判斷條件使s值在0至10間循環 delay(200)

溫馨提示

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

評論

0/150

提交評論