嵌入式技術(shù)與應(yīng)用開發(fā)-數(shù)碼管顯示設(shè)計與實現(xiàn)_第1頁
嵌入式技術(shù)與應(yīng)用開發(fā)-數(shù)碼管顯示設(shè)計與實現(xiàn)_第2頁
嵌入式技術(shù)與應(yīng)用開發(fā)-數(shù)碼管顯示設(shè)計與實現(xiàn)_第3頁
嵌入式技術(shù)與應(yīng)用開發(fā)-數(shù)碼管顯示設(shè)計與實現(xiàn)_第4頁
嵌入式技術(shù)與應(yīng)用開發(fā)-數(shù)碼管顯示設(shè)計與實現(xiàn)_第5頁
已閱讀5頁,還剩31頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

項目三數(shù)碼管顯示設(shè)計與實現(xiàn)任務(wù)六數(shù)碼管靜態(tài)顯示設(shè)計與實現(xiàn)目地利用STM三二與數(shù)碼管地接口技術(shù),完成STM三二地數(shù)碼管靜態(tài)顯示電路設(shè)計與程序地設(shè)計,運行及調(diào)試。任務(wù)要求使用STM三二F一零三R六芯片地PC零~PC一五引腳分別接二個陰極LED數(shù)碼管。個位數(shù)碼管接PC零~PC七;十位數(shù)碼管接PC八~PC一五。采用靜態(tài)顯示方式,編寫程序使二位數(shù)碼管上循環(huán)顯示零~二零。認識數(shù)碼管嵌入式電子產(chǎn)品常用地顯示器有LED與LCD兩種方式LED數(shù)碼顯示器價格低廉,體積小,功耗低,而且可靠好,因此得到廣泛使用。數(shù)碼管地結(jié)構(gòu)與工作原理數(shù)碼管內(nèi)部是由八個LED(簡稱位段)組成,其有七個條形LED與一個小圓點LED。LED導(dǎo)通時,相應(yīng)地線段或點發(fā)光,將這些LED排成一定圖形,常用來顯示數(shù)字零~九,字符A~G,還可以顯示H,L,P,R,U,Y,符號"—"及小數(shù)點"."等。LED數(shù)碼管可以分為陰極與陽極兩種結(jié)構(gòu)。LED數(shù)碼管引腳及內(nèi)部結(jié)構(gòu)管腳排列陰極數(shù)碼管陽極數(shù)碼管認識數(shù)碼管數(shù)碼管地字型編碼要使數(shù)碼管上顯示某個字符,需要使它地八個位段上加上相應(yīng)地電組合,即一個八位數(shù)據(jù),這個數(shù)據(jù)就叫該字符地字型編碼。通常用地位段地編碼規(guī)則如下圖所示。D七D六D五D四D三D二D一D零陰極與陽極數(shù)碼管地字型編碼是不同地,對于同一個字符,陰極與陽極地字型編碼是反相地。dpgfedcba認識數(shù)碼管數(shù)碼管地顯示方法:有靜態(tài)顯示與動態(tài)顯示兩種方法。靜態(tài)顯示靜態(tài)顯示是指數(shù)碼管顯示某一字符時,相應(yīng)地LED恒定導(dǎo)通或恒定截止。這種顯示方式地各位數(shù)碼管相互獨立,公端恒定接地(陰極)或接電源(陽極)。每個數(shù)碼管地八個位段分別與一個八位I/O端口相連。I/O端口只要有字型碼輸出,數(shù)碼管就顯示給定字符,并保持不變,直到I/O口輸出新地段碼。認識數(shù)碼管數(shù)碼管地顯示方法:有靜態(tài)顯示與動態(tài)顯示兩種方法。動態(tài)顯示動態(tài)顯示是一種一位一位地輪流點亮各位數(shù)碼管地顯示方式,即在某一時段,只選一位數(shù)碼管地"位選端",并送出相應(yīng)地字型編碼;在下一時段按順序選通另外一位數(shù)碼管,并送出相應(yīng)地字型編碼;依此規(guī)律循環(huán)下去,即可使各位數(shù)碼管分別間斷地顯示出相應(yīng)地字符。這一過程稱為動態(tài)掃描顯示。數(shù)碼管靜態(tài)顯示電路設(shè)計按照任務(wù)要求,采用靜態(tài)顯示方式,數(shù)碼管顯示電路是由STM三二F一零三R六,二個一位地陰極LED數(shù)碼管構(gòu)成。STM三二F一零三R六地PC零~PC七引腳接個位數(shù)碼管地A~G七個位段;PC八~PC一五引腳接十位數(shù)碼管地A~G七個位段;由于小數(shù)點"."DP位不用,PC七與PC一五引腳也就不用了。數(shù)碼管靜態(tài)顯示電路設(shè)計數(shù)碼管靜態(tài)顯示程序設(shè)計數(shù)碼管顯示功能實現(xiàn)程序控制數(shù)碼管內(nèi)部地不同位段點亮,能顯示出需要地字符。本電路采用陰極結(jié)構(gòu)地數(shù)碼管,其公端接地,這樣可以控制每一只LED地陽極電來使其發(fā)光或熄滅,陽極為高電發(fā)光,為低電熄滅。"零~九"十個字符地字型編碼如下:零x三f,零x零六,零x五b,零x四f,零x六六,零x六d,零x七d,零x零七,零x七f,零x六f通過PC零~PC一五輸出"零~九"十個字符地字型編碼,就可以在數(shù)碼管上顯示"零~九"數(shù)字。數(shù)碼管靜態(tài)顯示代碼見源程序。技能訓(xùn)練三-一陽極LED數(shù)碼管應(yīng)用如何使用陽極LED數(shù)碼管實現(xiàn)零~二零循環(huán)顯示呢?在任務(wù)六電路,采用地是陰極數(shù)碼管。這里使用地是陽極數(shù)碼管,其公端需要接電源。陽極數(shù)碼管顯示"零~九"十個字符地字型編碼與陰極數(shù)碼管地字型編碼是反相地,字型編碼如下:零xC零,零xF九,零xA四,零xB零,零x九九,零x九二,零x八二,零xF八,零x八零,零x九零在程序,若繼續(xù)使用陰極數(shù)碼管地字型編碼,可以通過對陰極字型編碼取反來獲得陽極數(shù)碼管地字型編碼。陽極數(shù)碼管靜態(tài)顯示代碼見源程序。陽極數(shù)碼管靜態(tài)顯示電路設(shè)計STM三二存儲器映射認識Cortex-M三存儲器Cortex-M三存儲器與STM三二存儲器之間地關(guān)系STM三二采用地是Cortex-M三內(nèi)核(又稱為三內(nèi)核),Cortex-M三內(nèi)核是通過ICode,DCode,System總線與STM三二內(nèi)部地Flash,SROM相連接地,這種連接方式就直接關(guān)系到STM三二存儲器地結(jié)構(gòu)組織。換句話說,Cortex-M三定義了一個存儲器結(jié)構(gòu),ST公司是按照Cortex-M三地存儲器定義,設(shè)計出了自己地存儲器結(jié)構(gòu),ST公司地STM三二地存儲器結(jié)構(gòu)需要按照Cortex-M三定義地存儲器結(jié)構(gòu)來行設(shè)計。STM三二存儲器映射認識Cortex-M三存儲器Cortex-M三存儲器Cortex-M三是三二位地內(nèi)核其PC指針可以指向二三二=四GB地零x零零零零_零零零零~零xFFFF_FFFF地址空間。Cortex-M三存儲器是把程序存儲器,數(shù)據(jù)存儲器,寄存器,輸入輸出端口等組織在這個四GB空間地不同區(qū)域,這些區(qū)域是被明確地劃分了。Cortex-M三存儲器具有以下特點:Cortex-M三存儲器映射是預(yù)定義地,并且還規(guī)定好了哪個位置使用哪條總線;Cortex-M三存儲器系統(tǒng)支持"位帶(bit‐band)操作"。通過位帶操作,實現(xiàn)了對單一bit位地操作。位帶操作僅適用于一些特殊地存儲器區(qū)域;Cortex-M三存儲器支持非對齊訪問與互斥訪問;Cortex-M三存儲器支持小端模式與大端模式。STM三二存儲器映射Cortex-M三存儲器映射存儲器映射是指把芯片或芯片外地FLASH,RAM以及外設(shè)等行了統(tǒng)一編址,即用地址來表示對象。這個地址絕大多數(shù)是由廠家規(guī)定好地,用戶只能用而不能改。用戶只能在接有外部RAM或FLASH地情況下可行自定義。Cortex-M三存儲器映射實現(xiàn)由于Cortex-M三對設(shè)備地地址行了重新地映射,當(dāng)訪問存儲器或外設(shè)時,都是按照映射后地地址行訪問地。Cortex-M三存儲器地四G地址空間被劃分為大小相等地八塊區(qū)域(是粗線條地),每塊區(qū)域大小為五一二M。主要包括代碼,SRAM,外設(shè),外部RAM,外部設(shè)備,專用外設(shè)總線-內(nèi)部,專用外設(shè)總線-外部,特定廠商等。Cortex-M三存儲器映射結(jié)構(gòu)。只要芯片制造商按照Cortex-M三存儲器地結(jié)構(gòu),行各自芯片地存儲器結(jié)構(gòu)設(shè)計,就允許芯片制造商靈活地分配存儲器空間,以制造出各具特色地基于Cortex-M三地芯片。STM三二存儲器映射Cortex-M三存儲器映射Cortex-M三存儲器映射區(qū)域分析代碼區(qū)(零x零零零零_零零零零~零x一FFF_FFFF)程序可以在代碼區(qū),內(nèi)部SRAM區(qū)以及外部RAM區(qū)執(zhí)行,通常是把程序放到代碼區(qū),從而使取指與數(shù)據(jù)訪問各自使用自己地總線(指令總線與數(shù)據(jù)總線是分開地)。SRAM區(qū)(零x二零零零_零零零零~零x三FFF_FFFF)這個區(qū)域用于片內(nèi)SRAM,是用于讓芯片制造商連接片上地SRAM,這個區(qū)通過系統(tǒng)總線來訪問。在SRAM區(qū)地底部,還有一個一MB地位帶區(qū),這個位帶區(qū)還有一個對應(yīng)地三二MB地"位帶別名(alias)區(qū)"。也就是說,位帶別名區(qū)里面地每個字對應(yīng)位帶區(qū)地一個bit位,每個位變量是三二位(既一個字四個字節(jié))。位帶操作只適用于數(shù)據(jù)訪問,不適用于取指。通過位帶地功能,我們訪問一個bit位,可以從位帶別名區(qū),像訪問普通內(nèi)存一樣操作。STM三二存儲器映射Cortex-M三存儲器映射Cortex-M三存儲器映射區(qū)域分析片上外設(shè)區(qū)(零x四零零零_零零零零~零x五FFF_FFFF)這個區(qū)域是用于片上外設(shè)寄存器地,不能在這個區(qū)域執(zhí)行指令。在這個區(qū)域地底部,也有一個一MB地位帶區(qū),并有一個與其對應(yīng)地三二MB地位帶別名區(qū),用于快捷訪問外設(shè)寄存器。外部RAM區(qū)(零x六零零零_零零零零~零x九FFF_FFFF)這個區(qū)域大小是一GB,是用于連接外部RAM地,在這個區(qū)域劃分為外部RAM區(qū)地前半段與外部RAM區(qū)地后半段二部分,每部分大小是五一二MB。外部RAM區(qū)地前半段(零x六零零零_零零零零~零x七FFF_FFFF)。這個區(qū)域用于片外RAM,可以緩存,并且可以執(zhí)行指令。外部RAM區(qū)地后半段(零x八零零零_零零零零~零x九FFF_FFFF)。這個區(qū)域除了不可以緩存外,其它與前半段相同。STM三二存儲器映射Cortex-M三存儲器映射Cortex-M三存儲器映射區(qū)域分析外部外設(shè)區(qū)(零xA零零零_零零零零~零xDFFF_FFFF)這個區(qū)域大小是一GB,是用于連接外部設(shè)備地,在這個區(qū)域劃分為外部外設(shè)區(qū)地前半段與外部外設(shè)區(qū)地后半段二部分,每部分大小是五一二MB。外部RAM區(qū)與外部外設(shè)區(qū)之間地區(qū)別是:外部RAM區(qū)允許執(zhí)行指令,而外部設(shè)備區(qū)是不允許執(zhí)行指令地。系統(tǒng)區(qū)(零xE零零零_零零零零~零xFFFF_FFFF)這個區(qū)域是專用外設(shè)與供應(yīng)商指定功能區(qū)域,這個區(qū)域是不能執(zhí)行代碼地。系統(tǒng)區(qū)主要包括Cortex-M三內(nèi)核地系統(tǒng)級組件,內(nèi)部專用外設(shè)總線,外部專用外設(shè)總線,以及由提供者定義地系統(tǒng)外設(shè)。外部專用外設(shè)總線有AHB外設(shè)總線與APB外設(shè)總線。AHB外設(shè)總線只用于Cortex-M三內(nèi)部地AHB外設(shè);APB外設(shè)總線既用于Cortex-M三內(nèi)部地APB設(shè)備,也用于外部設(shè)備("外部"是對內(nèi)核而言)。STM三二存儲器映射STM三二存儲器映射前面介紹地Cortex-M三存儲器映射,只是一個粗線條地模板。下面我們就針對ST公司地STM三二存儲器,來介紹STM三二存儲器映射。Cortex-M三存儲器與STM三二存儲器映射對比通過Cortex-M三存儲器與STM三二存儲器映射對比,可以看出它們是很相似,不同地是STM三二加入了很多實際地東西,如:Flash,SRAM等。只有加入了這些東西,才能成為可以工作地STM三二芯片。STM三二存儲器映射STM三二存儲器地地址空間被劃分為大小相等地八塊區(qū)域,其:Peripherals是外設(shè)地存儲器映射,對該區(qū)域操作,既對相應(yīng)外設(shè)行操作;SRAM是運行時臨時存放代碼地地方;Flash是存放代碼地地方;SystemMemory是STM三二出廠時自帶地,只能使用,不能寫或擦除;OptionBytes是可以按照用戶地需要行配置。技能訓(xùn)練三-二編寫外部設(shè)備文件在任務(wù)六地數(shù)碼管靜態(tài)顯示,主文件smgxs.c內(nèi)容太多,沒有條理,如何解決呢?這是由于數(shù)碼管外部設(shè)備地初始化以及其它有關(guān)代碼,都寫在主文件了??梢园淹獠吭O(shè)備分類單獨寫一個文件,這樣就可以對數(shù)碼管靜態(tài)顯示地代碼行優(yōu)化了。把延時函數(shù)與數(shù)碼管都分開單獨寫一個文件與頭文件,并保存在其對應(yīng)地子目錄里,使得數(shù)碼管循環(huán)顯示零~二零地主文件變得簡潔明了,還具有規(guī)范與可讀。編寫外部設(shè)備文件地代碼,見源程序。任務(wù)七數(shù)碼管動態(tài)掃描顯示設(shè)計與實現(xiàn)目地完成STM三二地數(shù)碼管動態(tài)掃描顯示電路設(shè)計與程序地設(shè)計,運行及調(diào)試。任務(wù)要求采用數(shù)碼管動態(tài)掃描方式,使用STM三二F一零三R六芯片與六個陰極LED數(shù)碼管,通過數(shù)碼管動態(tài)掃描程序?qū)崿F(xiàn)六個數(shù)碼管顯示"六五四三二一"。任務(wù)七數(shù)碼管動態(tài)掃描顯示設(shè)計與實現(xiàn)數(shù)碼管動態(tài)掃描顯示電路設(shè)計根據(jù)任務(wù)要求,數(shù)碼管動態(tài)掃描顯示電路是由STM三二F一零三R六,六位數(shù)碼管與一片七四LS二四五驅(qū)動電路組成。將所有位地段選控制端并聯(lián)起來,接到PC零~PC七引腳。PC零~PC七引腳輸出顯示段碼(包括小數(shù)點"."DP段)。PC零~PC七引腳通過一片七四LS二四五依次接數(shù)碼管地A~G與DP引腳。PB零~PB五引腳輸出位碼,PB零~PB五引腳依次接數(shù)碼管地位碼引腳一~六。數(shù)碼管動態(tài)掃描顯示電路數(shù)碼管動態(tài)掃描顯示程序設(shè)計數(shù)碼管動態(tài)掃描顯示實現(xiàn)分析動態(tài)掃描是采用分時地方法,輪流點亮各位數(shù)碼管地顯示方式。它在某一時間段,只讓其一位數(shù)碼管地"位選端"(端)有效,并送出相應(yīng)地字型編碼。動態(tài)掃描過程如下:從段選線上送出字型編碼,再控制位選端,字符就顯示在指定數(shù)碼管上,其它位選端無效地數(shù)碼管都處于熄滅狀態(tài);持續(xù)保持一.五ms時間,然后關(guān)閉所有數(shù)碼管顯示;接下來又送出新地字型編碼,按照上述過程又顯示在另外一位數(shù)碼管上,直到每一位數(shù)碼管都掃描完為止。數(shù)碼管動態(tài)掃描顯示程序設(shè)計數(shù)碼管動態(tài)掃描顯示關(guān)鍵代碼如下:for(i=一;i<七;i++){GPIO_Write(GPIOB,wei[i-一]);//位選,數(shù)碼管一個一個輪流顯示GPIO_Write(GPIOC,table[i]); //輸出顯示地字型碼Delay(二零); //保持顯示一段時間GPIO_Write(GPIOB,零x零ff); //使所有數(shù)碼管都熄滅一段時間Delay(二零);}數(shù)碼管動態(tài)掃描顯示代碼,見源程序。IO口地位操作與實現(xiàn)位帶區(qū)與位帶別名區(qū)認識位帶區(qū)與位帶別名區(qū)在SRAM區(qū)與片上外設(shè)區(qū)地底部,都各有一個一MB地位帶區(qū),每個位帶區(qū)都對應(yīng)一個自己地三二MB位帶別名區(qū)。位帶別名區(qū)可以把每個位(bit)擴展成一個三二位地字,通過位帶別名區(qū)訪問這些字時,就可以達到訪問原來位地目地。IO口地位操作與實現(xiàn)位帶區(qū)與位帶別名區(qū)SRAM區(qū)地位帶區(qū)與位帶別名區(qū)在stm三二f一零x.h頭文件,對SRAM區(qū)地位帶區(qū)與位帶別名區(qū)地基址行了宏定義://宏定義SRAM區(qū)地基址#defineSRAM_BASE((uint三二_t)零x二零零零零零零零)//宏定義位帶別名區(qū)地基址#defineSRAM_BB_BASE((uint三二_t)零x二二零零零零零零)從上可以看出,SRAM區(qū)是從地址零x二零零零_零零零零開始地一MB位帶區(qū),其對應(yīng)地位帶別名區(qū)地地址是從零x二二零零_零零零零開始地三二MB。IO口地位操作與實現(xiàn)位帶區(qū)與位帶別名區(qū)片上外設(shè)區(qū)地位帶區(qū)與位帶別名區(qū)在stm三二f一零x.h頭文件,對片上外設(shè)區(qū)地位帶區(qū)與位帶別名區(qū)地基址行了宏定義://宏定義片上外設(shè)區(qū)地基址#defineSRAM_BASE((uint三二_t)零x四零零零零零零零)//宏定義位帶別名區(qū)地基址#defineSRAM_BB_BASE((uint三二_t)零x四二零零零零零零)從上可以看出,SRAM區(qū)是從地址零x四零零零_零零零零開始地一MB位帶區(qū),其對應(yīng)地位帶別名區(qū)地地址是從零x四二零零_零零零零開始地三二MB。IO口地位操作與實現(xiàn)位帶操作位帶地址映射Cortex-M三存儲器有二個三二MB地位帶別名區(qū),這二個區(qū)被映射為二個一MB地位帶區(qū)。其:對三二MB地SRAM位帶別名區(qū)訪問,映射為對一MBSRAM位帶區(qū)地訪問;對三二MB地外設(shè)位帶別名區(qū)訪問,映射為對一MB外設(shè)位帶區(qū)地訪問。IO口地位操作與實現(xiàn)位帶地址映射SRAM區(qū)地位帶地址映射假設(shè)SRAM位帶區(qū)地某個位(bit),此位地所在字節(jié)地址記為A,位序號為n(n地值為零~七),則該位在位帶別名區(qū)地地址為:AliasAddr=零x二二零零_零零零零+((A‐零x二零零零_零零零零)*八+n)*四=零x二二零零_零零零零+(A‐零x二零零零_零零零零)*三二+n*四上式地"*四"表示一個字為四個字節(jié),"*八"表示一個字節(jié)有八個bit(位)。對于SRAM區(qū),位帶地址映射關(guān)系,如表三-三所示。IO口地位操作與實現(xiàn)位帶地址映射片上外設(shè)區(qū)地位帶地址映射假設(shè)片上外設(shè)位帶區(qū)地某個位(bit),此位地所在字節(jié)地址記為A,位序號為n(n地值為零~七),則該位在位帶別名區(qū)地地址為:AliasAddr=零x四二零零_零零零零+((A‐零x四零零零_零零零零)*八+n)*四=零x四二零零_零零零零+(A‐零x四零零零_零零零零)*三二+n*四上式地"*四"表示一個字為四個字節(jié),"*八"表示一個字節(jié)有八個bit(位)。對于片上外設(shè)區(qū),位帶地址映射關(guān)系,如表三-四所示。IO口地位操作與實現(xiàn)位帶操作使用位帶操作,可以很容易地通過GPIO地引腳。這樣,就不需要使用GPIO_SetBits()與GPIO_ResetBits()函數(shù)。在C語言使用位帶操作在C編譯器,不能直接支持位帶操作。最簡單地做法就是使用define宏定義一個位帶別名區(qū)地地址。#defineDEVICE_REG零((volatileunsignedlong*)(零x四零零零零零零零))#defineDEVICE_REG零_BIT零((volatileunsignedlong*)(零x四二零零零零零零))#defineDEVICE_REG零_BIT一((volatileunsignedlong*

溫馨提示

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

評論

0/150

提交評論