版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
5.1單片機控制數(shù)碼管顯示5.2數(shù)組5.3指針段顯示(7段、米字型等)和點陣顯示(5×8、8×8點陣等)。5.1
單片機控制數(shù)碼管顯示發(fā)光二極管LED(LightEmittingDiode)顯示器液晶LCD(LiquidCrystalDisplay)顯示器CRT顯示器……5.1.1LED顯示器結(jié)構(gòu)
LED顯示器內(nèi)部由多個發(fā)光二極管組成。5.1.2顯示字形與字段碼關系
aabcdefgabcedgfGNDGND7691254938dpdpP07P06P05P04P03P02P01P00字dpgfedcba011000000111111001210100100310110000410011001510010010610000010711111000810000000910010000LED數(shù)碼管顯示字形與字段碼關系
顯示字形共陽極字段碼共陰極字段碼顯示字形共陽極字段碼共陰極字段碼00xC00x3F90x900x6F10xF90x06A0x880x7720xA40x5Bb0x830x7C30xB00x4FC0xC60x3940x990x66d0xA10x5E50x920x6DE0x860x7960x820x7DF0x8E0x7170xF80x07“熄滅”0xFF0x0080x800x7F
數(shù)碼管與P1口接口連接電路
P1=0x3F(共陰極)P1=0xC0(共陽極)dpgfedcba5.2數(shù)組5.2.1一維數(shù)組在許多程序中,可能需要保留一塊連續(xù)的存儲空間,相應的存儲空間就是數(shù)組。數(shù)組是一組變量,具有相同的數(shù)據(jù)類型,在某種意義上具有一定的關系。這些變量是所屬數(shù)組的成分分量,稱為數(shù)組元素,既可以是基本數(shù)據(jù)類型,也可以是構(gòu)造數(shù)據(jù)類型。1.一維數(shù)組的定義和初始化數(shù)據(jù)類型數(shù)組名[常量表達式];定義了一個一維整形數(shù)組a,10表示有10個元素:a[0],a[1],a[2],……a[8],a[9]Exampleinta[10];chars1[5];定義了一個一維字符數(shù)組s1,5表示有5個元素:s1[0],s1[1],s1[2],s1[3],s1[4]1.一維數(shù)組的定義和初始化常量表達式中可以包括常量和符號常量,不能包含變量。即C語言不允許對數(shù)組的大小作動態(tài)定義。如:inti=5;inta[i];inta[5]={0,1,2,3,4};inta[]={0,1,2,3,4};1.一維數(shù)組的定義和初始化在定義數(shù)組的同時,為數(shù)組元素賦值,稱為數(shù)組的初始化。(1)在定義數(shù)組時,對全部數(shù)組元素賦初值此時可以省略數(shù)組的長度Exampleinta[5]={1,2,3};系統(tǒng)為其余元素賦01.一維數(shù)組的定義和初始化(2)在定義數(shù)組時,對部分數(shù)組元素賦初值Example1.一維數(shù)組的定義和初始化(3)在對全部數(shù)組元素賦初值時,可以不指定數(shù)據(jù)長度Exampleunsignedchara[5]={1,2,5,9,3};可以寫成:unsignedchara[]={1,2,5,9,3};inta[5]={1,2,3,4,5,6,7};1.一維數(shù)組的定義和初始化(4)當初值的個數(shù)多于數(shù)組元素的個數(shù)時,編譯出錯Example2、一維數(shù)組元素的引用數(shù)組名[下標];下標可以是整型常量、整型變量和整型表達式。表示引用數(shù)組a中的第2個元素Exampleintn=5,a[20];a[1]a[n]a[3*n]表示引用數(shù)組a中的第6個元素表示引用數(shù)組a中的第16個元素2、一維數(shù)組元素的引用注意:數(shù)組必須先定義后使用。只能逐個引用數(shù)據(jù)元素而不能整體引用。若一個數(shù)組長度為n,其下標值范圍是0~(n-1)3、一維數(shù)組的應用一維數(shù)組大量用在查表程序中。由于單片機的數(shù)據(jù)處理能力有限,因此對一些復雜的、高精度的數(shù)學運算往往無能為力,這時候就可以把數(shù)組作為一個表格,預先存儲在存儲器中,需要的時候可以通過查找數(shù)組元素快速地獲得其中的數(shù)據(jù)。對于這些運行時無需修改的數(shù)組,通常將其定義為code存儲器類型,將其存放在程序存儲器中以節(jié)省數(shù)據(jù)存儲器的空間。實驗1數(shù)碼管靜態(tài)顯示,利用下圖所示的電路實現(xiàn)循環(huán)顯示0~9,假設圖中數(shù)碼管共陽極。5.1.3LED數(shù)碼顯示方式
特點:每個數(shù)碼管必須接一個8位鎖存器用來鎖存待顯示的字形碼。送入一次字形碼顯示字形一直保持,直到送入新字形碼為止。優(yōu)點:占用CPU時間少,顯示便于監(jiān)測和控制。缺點:硬件電路比較復雜,成本較高。靜態(tài)顯示接口電路有許多種,1.靜態(tài)顯示方式:并行口靜態(tài)顯示電路
字段碼位選線實驗2數(shù)碼管靜態(tài)顯示案例利用下圖,在三個數(shù)碼管中分別顯示0~2。輪流向各位數(shù)碼管送出字形碼和相應的位選,利用發(fā)光管的余輝和人眼視覺暫留作用,使人的感覺好像各位數(shù)碼管同時都在顯示。(2)動態(tài)顯示特點:將所有數(shù)碼管的段選線并聯(lián)在一起,通過控制位選信號來控制數(shù)碼管的點亮。數(shù)碼管采用動態(tài)掃描顯示。動態(tài)顯示的亮度比靜態(tài)顯示要差一些,所以在選擇限流電阻時應略小于靜態(tài)顯示電路中的限流電阻。
4位LED動態(tài)顯示電路
實驗3利用下圖實現(xiàn)從左至右分別顯示0~3共4個數(shù)字,單片機P1口送出的欲顯示數(shù)字的字形碼作為數(shù)碼管的段選,P2.0~P2.3作為數(shù)碼管的位選。實驗1開發(fā)板數(shù)碼管顯示實驗實驗內(nèi)容: 實現(xiàn)數(shù)碼管顯示0-7。實驗步驟:1位選擇2段選擇3延時4循環(huán)1-3實驗2開發(fā)板數(shù)碼管顯示實驗實驗內(nèi)容: 結(jié)合定時器工作方式1實現(xiàn)數(shù)碼管100ms間隔循環(huán)顯示0-7。實驗步驟:1定時器初始化2開中斷3編寫中斷服務函數(shù)實驗3開發(fā)板計時器顯示實驗實驗內(nèi)容: 結(jié)合定時器工作方式1實現(xiàn)計時功能。實驗步驟:1定時器初始化2開中斷3編寫中斷服務函數(shù)實現(xiàn)計時x[0][0]x[0][1]x[0][2]x[1][0]x[1][1]x[1][2]5.2.2二維數(shù)組1.二維數(shù)組的定義和初始化數(shù)據(jù)類型數(shù)組名[常量表達式1][常量表達式2];Exampleintx[2][3];行列inta[3,4],b(3,4);intc[][],d(3)(4);5.2.2二維數(shù)組1.二維數(shù)組的定義和初始化(1)分行對二維數(shù)組初始化Exampleinta[2][3]={{1,2,3},{4,5,6}};初始化后:
123456方法直觀!5.2.2二維數(shù)組1.二維數(shù)組的定義和初始化(1)分行對二維數(shù)組初始化Exampleinta[2][3]={1,2,3,4,5,6};初始化后:
123456(2)按數(shù)組排列的順序初始化數(shù)據(jù)較多時容易遺漏,不易檢查!5.2.2二維數(shù)組1.二維數(shù)組的定義和初始化(1)分行對二維數(shù)組初始化Exampleinta[][3]={1,2,3,4,5,6};初始化后:
123456(2)按數(shù)組排列的順序初始化(3)對全部數(shù)組元素初始化省略行號5.2.2二維數(shù)組1.二維數(shù)組的定義和初始化(1)分行對二維數(shù)組初始化Exampleinta[][3]={1,2,3,4,5,6,7};結(jié)果:
123456700(2)按數(shù)組排列的順序初始化(3)對全部數(shù)組元素初始化(4)給部分元素賦初值5.2.2二維數(shù)組1.二維數(shù)組的定義和初始化(1)分行對二維數(shù)組初始化Exampleintb[][4]={{1},{4,5}};結(jié)果:
10004500
(2)按數(shù)組排列的順序初始化(3)對全部數(shù)組元素初始化(4)給部分元素賦初值5.2.2二維數(shù)組1.二維數(shù)組的定義和初始化(1)分行對二維數(shù)組初始化Exampleinta[2][3]={{1},{4}};結(jié)果:
100400(2)按數(shù)組排列的順序初始化(3)對全部數(shù)組元素初始化(4)給部分元素賦初值5.2.2二維數(shù)組2.二維數(shù)組的引用數(shù)組名[行下標][列下標]Exampleinta[3][4];a[0][0]=3;a[0][1]=a[0][0]+10;a[3][4]=3;a[1,2]=1;引用:/*下標越界*//*a[1][2]=1;*/5.2.2二維數(shù)組3.二維數(shù)組的使用用二層循環(huán)語句處理數(shù)組,通常外循環(huán)控制行,內(nèi)循環(huán)控制列。Examplefor(i=0;i<3;i++)
for(j=0;j<4;j++)
a[i][j]=i+j;01232343453.二維數(shù)組的應用在現(xiàn)代工業(yè)控制和一些智能化儀器儀表中,越來越多的場所需要用點陣圖形顯示器顯示數(shù)字、字母或漢字,其顯示方式是先根據(jù)所需要的字符提取字符點陣(如16×16點陣),將點陣文件存入ROM,形成新的字符編碼;而在使用時則需要先根據(jù)新的字符編碼組成語句,再由單片機根據(jù)新編碼提取相應的點陣進行顯示。LED點陣中要用到的一個典型數(shù)據(jù)結(jié)構(gòu)就是二維數(shù)組。3.二維數(shù)組的應用不論顯示圖形還是文字,都是控制與組成這些圖形或文字的各個點所在位置相對應的LED器件發(fā)光。通常事先把需要顯示的圖形文字轉(zhuǎn)換成點陣圖形,再按照顯示控制的要求以一定的格式形成顯示數(shù)據(jù)。對于只控制通斷的圖文顯示屏來說,每個LED發(fā)光器件占據(jù)數(shù)據(jù)中的1位(lbit),在需要該LED器件發(fā)光的數(shù)據(jù)中相應的位填1,否則填0。3.二維數(shù)組的應用當然,根據(jù)控制電路的安排,相反的定義同樣是可行的。這樣依照所需顯示的圖形文字,按顯示屏的各行各列逐點填寫顯示數(shù)據(jù),就可以構(gòu)成一個顯示數(shù)據(jù)文件。顯示圖形的數(shù)據(jù)文件,其格式相對自由,只要能夠滿足顯示控制的要求即可,例如,可以用一個5×7(5行7列)的LED點陣顯示數(shù)字“1”或“2”
3.二維數(shù)組的應用把同一列發(fā)光管的陽極連接在一起,把所有同一行的陰極連在一起,先送出對應第1列發(fā)光管亮滅的數(shù)據(jù),然后選通第1列使其點亮一段時間后熄滅;再送出第2列的數(shù)據(jù),然后選通第2列使其點亮相同的時間后熄滅;第5列之后又重新點亮第1列,這樣反復輪回,當這樣輪回的速度足夠快時(每秒24次以上),由于人眼的視覺暫留現(xiàn)象就能看到顯示屏上穩(wěn)定的顯示了。3.二維數(shù)組的應用設用P1的低7位控制行的顯示(最低位對應最上端的LED),用(P3的低5位控制列的顯示。可以看出從左到右每一列的顯示數(shù)據(jù)依次為0x00,0x42,0x7f,0x40,0x00。因此可以用下面的數(shù)組表示“1”:{0x00,0x42,0x7f,0x40,0x00}同理,可以用下面的數(shù)組表示“2”:{0x42,0x61,0x51,0x49,0x46}3.二維數(shù)組的應用unsignedcharcodedigit_code[10][5]={{0x3e,0x41,0x41,0x41,0x3e},//0{0x00,0x42,0x7f,0x40,0x00},//1{0x42,0x61,0x51,0x49,0x46},//2
{0x22,0x41,0x49,0x49,0x36},//3{0x18,0x14,0x12,0x7f,0x10},//4{0x27,0x45,0x45,0x45,0x39},//5{0x3c,0x4a,0x49,0x49,0x30},//6{0x01,0x71,0x09,0x05,0x36},//7{0x36,0x49,0x49,0x49,0x36},//8{0x06,0x49,0x49,0x29,0x1e}//9};3.二維數(shù)組的應用5×7LED點陣的控制電路如右圖所示。由于LED點陣中發(fā)光管的數(shù)量較多,單片初本身的端口達不到控制的要求,因此對于LED點陣的控制一般要對單片機的端口進行擴展。但本例主要介紹二維數(shù)組的應用,故對這些枝節(jié)問題沒有過多地考慮,仍直接用單片機端作為列驅(qū)動。實例7-4用二維數(shù)組實現(xiàn)LED點陣的顯示在程序中定義了一個delay()函數(shù),該函數(shù)是一個延時,確定了輪流顯示字符時每個字符顯示的時間;定時器0初始化為24MHz下的4ms中斷,這個4ms是顯示某個字符時每一列顯示的持續(xù)時間,5列循環(huán)顯示,直到上述的delav()所確定的時間段耗完,轉(zhuǎn)去顯示下一個字符。由于Proteus所用的點陣是共陰極的,所以數(shù)組與前述不一致,正好反相。5.2.3字符數(shù)組所謂字符數(shù)組就是存放字符型數(shù)據(jù)的數(shù)組,字符數(shù)組中一個元素存放一個字符。1.字符數(shù)組的定義和初始化字符數(shù)組的定義方法和一維數(shù)組的定義方法類似。unsignedchara[10]={‘C’,’5’,’1’};注意:如果大括號中提供的初值個數(shù)(即字符個數(shù))大于數(shù)組長度,則作語法錯誤處理;如果初值個數(shù)小于數(shù)組長度,則只將這些字符賦給數(shù)組中前面的那些元素,其余的元素自動定為空字符(即’\0’)。1.字符數(shù)組的定義和初始化unsignedchara[10]={‘C’,’5’,’1’};C51\0\0\0\0\0\0\01.字符數(shù)組的定義和初始化如果提供的初值個數(shù)與預定的數(shù)組長度相同,在定義的時候可以忽略數(shù)組長度,系統(tǒng)會自動根據(jù)初值個數(shù)確定數(shù)組長度,例如:staticchara[]=”Welcomeyou!”數(shù)組a的長度自動定為12。用這種方式,編程人員不必數(shù)出一個字符數(shù)組中包含多少個字符,尤其在賦初值的字符個數(shù)較多時比較方便。二維字符數(shù)組的定義:通過定義二維數(shù)組的方法定義一個二維字符數(shù)組例如:staticchara[2][3]={{‘h’,’o’,’w’},{‘w’,’h’,’y’}};2.字符數(shù)組元素的引用可以引用字符數(shù)組中的一個元素而得到一個字符。在單片機中,很少引用字符數(shù)組元素,直接用字符數(shù)組的比較多。案例9數(shù)碼管動態(tài)顯示倒計時案例5.3指針指針變量的概念指針指針與一維數(shù)組指針與二維數(shù)組指針數(shù)組與指向指針變量的指針變量地址知識分布網(wǎng)絡5.3.1變量的地址變量的地址:它們所占連續(xù)的內(nèi)存單元的最低字節(jié)單元的地址。單元地址ldata的單元200778200656200534200412longldata=0x12345678,地址為2004
5.3.2指針變量的概念指針變量是一種特殊的變量,特殊在它只能存放地址值。1.指針變量的定義
類型說明符*指針變量名;類型說明符指定該指針變量中只能存放這種類型變量的地址*號說明這個變量是指針變量2.指針變量的使用1)&——取地址運算符。當把某變量的地址賦給一個指針變量后,就說該指針變量指向該變量。(2)*——取指向運算符。即取指針變量所指向的變量的值。如:inta,*pointer,b;pointer=&a;//指針變量pointer指向變量如:b=*pointer;=>b=a;3.C51的指針類型(1)基于存儲器的指針:基于存儲器的指針是在說明一個指針變量時,指定它所指向的對象的存儲類型。如:charxdata*px;3.C51的指針類型(2)通用指針:在函數(shù)的調(diào)用中,函數(shù)的指針參數(shù)需要用通用指針。通用指針的說明形式如下:
char*px;地址+0+1+2內(nèi)容存儲類型的編碼高位地址偏移量低位地址偏移量存儲類型data/idata/bdataxdatapdatacode編碼值0x000x010xFE0xFF3.C51的指針類型可以使用常數(shù)來作為指針,一般僅針對通用指針,如定義外部端口的地址。例如,要將數(shù)值0x41寫入地址為0x8000的外部數(shù)據(jù)存儲器中,可用下列代碼實現(xiàn):
#include”absacc.h”XBYTE[0x8000]=0x41;其中XBYTE是一個指針,它在頭文件absacc.h中定義的,定義如下:#defineXBYTE((unsignedchar*)0x20000L)XBYTE被定義為(unsignedchar*)0x20000L,為一般指針,其存儲器類型為2,即為xdata型,偏移量0000,這樣,XBYTE成為指向外部數(shù)據(jù)存儲器零地址單元的指針。5.3.3指針與一維數(shù)組1.一維數(shù)組的地址
一
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙教版數(shù)學七年級下冊《3.5 整式的化簡》聽評課記錄1
- 湘教版地理八年級下冊《第一節(jié) 北京市的城市特征與建設成就》1課時聽課評課記錄
- 八年級道德與法治下冊第二單元理解權利義務第四課公民義務第1框公民基本義務聽課評課記錄(新人教版)
- 湘教版數(shù)學九年級上冊第一章《反比例函數(shù)》復習聽評課記錄
- 人教部編版九年級歷史上冊:第15課 探尋新航路 聽課評課記錄
- 蘇科版七年級數(shù)學上冊《3.4.2合并同類項》聽評課記錄
- 通??谛W一年級口算測試卷
- 蘇教版四年級數(shù)學下冊期末復習口算練習題一
- 月業(yè)務經(jīng)理聘用協(xié)議書范本
- 二手房房屋買賣協(xié)議書范本
- Q-HN-1-0000.08.004《風力發(fā)電場電能質(zhì)量監(jiān)督技術標準》
- 多指畸形-課件
- 5G NSA站點開通指導書(臨時IP開站)
- 宗教與社會課件
- 3人-機-環(huán)-管理本質(zhì)安全化措施課件
- 生殖醫(yī)學中心建設驗收標準分析-講座課件PPT
- DB44∕T 1811-2016 石灰?guī)r山地造林技術規(guī)程
- 慶陽煤炭資源開發(fā)調(diào)研報告
- 橋博常見問題
- 貴州省電梯日常維護保養(yǎng)合同范本
- 《我們的方言》-教案(共4頁)
評論
0/150
提交評論