單片機(jī)程序設(shè)計(jì)實(shí)踐教程-第08章-流水燈_第1頁
單片機(jī)程序設(shè)計(jì)實(shí)踐教程-第08章-流水燈_第2頁
單片機(jī)程序設(shè)計(jì)實(shí)踐教程-第08章-流水燈_第3頁
單片機(jī)程序設(shè)計(jì)實(shí)踐教程-第08章-流水燈_第4頁
單片機(jī)程序設(shè)計(jì)實(shí)踐教程-第08章-流水燈_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第八講流水燈控制

單片機(jī)程序設(shè)計(jì)實(shí)踐教程18.0項(xiàng)目演示效果圖XP_8_01步驟1-打開電源后D10燈首先被點(diǎn)亮

2圖XP_8_02步驟2-D12燈被點(diǎn)亮的截圖3圖XP_8_03步驟3-D17燈最后被點(diǎn)亮48.1項(xiàng)目目標(biāo)設(shè)計(jì)

加深對單片機(jī)最小系統(tǒng)的工作原理理解;掌握并行擴(kuò)展芯片82C55的使用方法;掌握STC89C52與82C55之間在協(xié)同工作時(shí)各個(gè)控制信號的狀態(tài);理解給出的C語言源程序的結(jié)構(gòu)和各語句所起作用;在達(dá)到以上四個(gè)目標(biāo)之后,根據(jù)本章“項(xiàng)目擴(kuò)展任務(wù)”中提出的問題,以組或個(gè)人為單位,在規(guī)定時(shí)間里完成任務(wù)。58.2項(xiàng)目任務(wù)

流水燈的電路原理圖如圖8-1所示,82C55的PA輸出口PA0~PA7依次與8個(gè)LED發(fā)光管D10~D17相連,編寫相應(yīng)程序?qū)崿F(xiàn)8個(gè)LED發(fā)光管依次周而復(fù)始單獨(dú)點(diǎn)亮,時(shí)間間隔大約1s。由于點(diǎn)亮效果看似流水,因此叫流水燈。6圖8-1流水燈的電路原理圖78.3系統(tǒng)板上硬件連線

流水燈控制系統(tǒng)板硬件連線圖如圖8-2所示,硬件連線圖和C語言源程序和流程圖中出現(xiàn)的8255即代表芯片82C55(后續(xù)章節(jié)同)。圖8-2流水燈系統(tǒng)板硬件連線圖88.4程序流程圖流水燈的C語言程序流程圖如圖8-3所示。圖8-3流水燈的C語言程序流程圖98.5C語言源程序(略)

8.6系統(tǒng)構(gòu)成和程序分析

8.6.182C55并行擴(kuò)展接口芯片的特點(diǎn)和引腳介紹82C55是一種通用的可編程序并行I/O接口芯片,又稱“可編程外設(shè)接口芯片”,可通過程序來改變其功能,通用性強(qiáng)、使用靈活。對于82C55,CPU可通過它直接同外設(shè)相連接,是應(yīng)用最廣的并行I/O接口芯片。圖8-4是82C55的外部引腳【11】和實(shí)物圖,其引腳含義與功能見表8-1。10圖8-482C55的外部引腳和實(shí)物圖11引腳標(biāo)識名稱功能37~40、1~4PA7~PA0端口A的數(shù)據(jù)線雙向,三態(tài)輸出25~18PB7~PB0端口B的數(shù)據(jù)線可輸入,也可輸出10~17PC7~PC0端口C的數(shù)據(jù)線可輸入,也可輸出,還可做A口或B口的控制信號線27~34D7~D0數(shù)據(jù)線與系統(tǒng)總線連接5RD讀信號輸入,低電平有效,從82C55讀取數(shù)據(jù)36WR寫信號輸入,低電平有效,把數(shù)據(jù)寫入82C556CS片選信號輸入,低電平有效,決定芯片地址9、8A0、A1端口選擇信號82C55的四個(gè)端口地址組合35RESET復(fù)位信號輸入,高電平有效,復(fù)位后清所有內(nèi)部寄存器表8-182C55并行擴(kuò)展接口芯片的各引腳功能1282C55具有以下基本特性:(1)、82C55是一個(gè)具有兩個(gè)8位(A和B口)和兩個(gè)4位(C口高/低四位),最多可達(dá)24位并行輸入輸出端口的接口芯片。它與外部設(shè)備之間提供TTL電平兼容的接口,如,打印機(jī)、A/D轉(zhuǎn)換器、D/A轉(zhuǎn)換器、鍵盤、步進(jìn)電機(jī)以及需要同時(shí)兩位以上信息傳送的一切形式的并行接口。(2)、82C55能適應(yīng)CPU與I/O接口之間的多種數(shù)據(jù)傳送方式的要求。如,無條件傳送、應(yīng)答方式(查詢)傳送、中斷方式傳送、與此相對應(yīng),82C55設(shè)置了方式0、方式1以及方式2(雙向傳送)。13(3)、82C55可執(zhí)行功能強(qiáng)大、內(nèi)容豐富的兩條命令(方式字和控制字)為用戶如何根據(jù)外界條件(I/O設(shè)備需要哪些信號線以及它能提供哪些狀態(tài)線)來使用82C55構(gòu)成多種接口電路,為組建微機(jī)應(yīng)用系統(tǒng)提供了靈活方便的編程環(huán)境,是一種名副其實(shí)的通用并行接口芯片。82C55執(zhí)行命令過程中和執(zhí)行命令完畢之后,所產(chǎn)生的狀態(tài)保留在狀態(tài)字中,以供程序查詢。(4)、82C55PC口的使用比較特殊,除作數(shù)據(jù)口外,當(dāng)工作在方式1和方式2時(shí),它的部分信號線被分配作專用聯(lián)絡(luò)信號線;PC口可以進(jìn)行按位控制;在CPU取82C55狀態(tài)時(shí),PC口又作方式1、2的狀態(tài)口。(5)、82C55芯片內(nèi)部主要由控制寄存器、狀態(tài)寄存器和數(shù)據(jù)寄存器組成,因此,編程主要也是對這三類寄存器進(jìn)行訪問。148.6.282C55的內(nèi)部結(jié)構(gòu)與引腳功能圖8-582C55的內(nèi)部結(jié)構(gòu)與引腳功能圖1582C55的內(nèi)部結(jié)構(gòu)與引腳功能圖如圖8-5所示,它具有以下內(nèi)部結(jié)構(gòu):(1)、數(shù)據(jù)總線緩沖器三態(tài)8位雙向緩沖器,是與系統(tǒng)數(shù)據(jù)總線連接的緩沖部件,是傳送數(shù)據(jù)、控制字、狀態(tài)字的通道。(2)、3個(gè)8位數(shù)據(jù)端口(PA、PB、PC)通常PA口與PB口用作輸入輸出的數(shù)據(jù)端口,PC口用作數(shù)據(jù)傳輸或提供聯(lián)絡(luò)線的端口。在方式字的控制下,PC口可以分成兩個(gè)4位的端口,其中PC7~PC4同端口A配合使用,PC3~PC0同端口B配合使用。(3)、A組、B組控制電路這兩組控制電路根據(jù)CPU發(fā)出的方式選擇控制字來控制82C55的工作方式,每個(gè)控制組都接收來自讀寫控制邏輯的“命令”,接收來自內(nèi)部數(shù)據(jù)總線的“控制字”,并向與其相連的端口發(fā)出適當(dāng)?shù)目刂菩盘枴組控制電路控制PA口和PC口高4位,B組控制電路控制PB口和PC口低4位。16(4)、讀/寫控制邏輯用來管理數(shù)據(jù)、控制字和狀態(tài)字的傳送,接收系統(tǒng)總線發(fā)來的有關(guān)信號,并向A、B兩組控制部件發(fā)送命令。圖8-6給出了82C55讀/寫控制邏輯組合示意圖,讀/寫控制邏輯由nCS、A1、A0、nRD、nWR引腳的不同組合實(shí)現(xiàn)不同的功能。A1、A0端口由單片機(jī)的擴(kuò)展地址線引入,它們的不同組合表示對A、B、C口和控制口的不同選擇情況。17圖8-6

82C55讀/寫控制邏輯組合示意圖188.6.382C55的控制字與工作方式82C55有三種工作方式,每種方式既可以輸入也可以輸出。(1)、方式0無條件(基本)輸入輸出。(2)、方式1查詢(選通)輸入輸出。(3)、方式2雙向方式。值得一提的是,A口有三種工作方式,B口僅有方式0和方式1兩種工作方式。在方式1和方式2中C口作為聯(lián)絡(luò)信號線。對于方式1和方式2本書不作介紹,請讀者參閱參考文獻(xiàn)【11】和【2】中相關(guān)部分的介紹。19方式0為基本輸入/輸出方式,在這種工作方式下,82C55相當(dāng)于三個(gè)獨(dú)立的8位數(shù)據(jù)口,各端口既可設(shè)置為輸入口,也可設(shè)置為輸出口,但不能同時(shí)實(shí)現(xiàn)輸入及輸出。C端口既可以是一個(gè)8位的簡單接口,也可以分為兩個(gè)獨(dú)立的4位端口,設(shè)置為輸出口時(shí)有鎖存能力;設(shè)置為輸入口時(shí)無鎖存能力。這種工作方式適用于無條件端口擴(kuò)展輸入輸出方式。82C55是通過方式選擇控制字來確定3個(gè)端口的工作方式的,控制字的格式見圖8-7??刂谱值臉?biāo)識必須為1,標(biāo)識為0代表C口置位/復(fù)位控制字,本文對此也不作詳細(xì)介紹,請參閱參考文獻(xiàn)【11】和【2】的相關(guān)內(nèi)容。20圖8-782C55的控制字218.6.4開發(fā)板上82C55的系統(tǒng)連接和控制方法圖8-8是流水燈項(xiàng)目的系統(tǒng)功能圖,若對82C55PA口連接的8個(gè)LED發(fā)光二極管進(jìn)行控制,必須進(jìn)行PA口地址的確定和方式選擇控制字的寫入工作。如何確定82C55的PA、PB和PC端口的地址是本章的重要知識點(diǎn),建議讀者一定要認(rèn)真加以理解。22圖8-8流水燈項(xiàng)目的系統(tǒng)功能圖23以PA口的地址定義為例,在圖8-8所示系統(tǒng)功能圖中,若82C55的PA口被選中,應(yīng)滿足以下3個(gè)條件:(1)、STC89C52的P16引腳連接CS138信號,必須設(shè)為低電平,三八譯碼器74HC138使能端nE1,nE2被同時(shí)選中才能工作。(2)、若要82C55的nCS片選端使能,則74HC138的nY1引腳CS8255必須為低電平才行,這就要求74HC138譯碼輸入端的CBA編碼為001,則STC89C52的P27~P20的值為00111111B(3FH),P24~P20懸空應(yīng)設(shè)為1。(3)、82C55的A0和A1為PA、PB、PC和控制口的地址選擇端,若選擇PA端,由圖8-6可知A0和A1的編碼為00,74HC373的地址引出腳A7~A0的值為11111100B(FCH),A7~A2與PA口的選取無關(guān),應(yīng)設(shè)為1。滿足以上3個(gè)條件后,82C55的PA地址即可確定為0x3ffc。24在確定82C55的PA、PB和PC端口和控制字地址之后,就可以進(jìn)行方式控制字的設(shè)置了,源程序中:cs138=0;//選通74HC138的使能端COM8255=0x80;//82C55的初始化第二句隱含了將控制字0x80送入到COM8255的地址0x3fff處,控制字0x80表示82C55的所有三個(gè)端口都設(shè)置為輸出狀態(tài)。最后還有一個(gè)問題,nWR信號為寫控制信號,程序中無指令對其進(jìn)行操作,控制字0x80是如何寫到COM8255地址中的呢?如圖8-9所示為82C55工作方式0的寫入時(shí)序圖。程序運(yùn)行到第二句時(shí),COM8255地址顯式給出,指令在尋址過程中,會(huì)置A0、A1為00。由于第一句已置nCS為低電平,nCS、A0和A1信號即為有效,82C55根據(jù)賦值關(guān)系(此處為給定常數(shù)寫到82C55的確定地址處),判定是自身要接收數(shù)據(jù),因此nWR信號自動(dòng)置低電平,允許0x80寫入到內(nèi)部的方式控制字中。25圖8-982C55工作方式0的寫入時(shí)序圖26上面介紹的這種單片機(jī)控制方式稱為總線控制方式,與第7章介紹中的端口控制方式不同,這種控制方式是對一個(gè)字節(jié)的數(shù)據(jù)進(jìn)行同時(shí)傳送的,傳送數(shù)據(jù)多于前者。在送出或接收數(shù)據(jù)前要確定相應(yīng)外設(shè)的端口地址,因此較端口控制方式復(fù)雜。MCS-51單片機(jī)對外部設(shè)備的控制方式只有這兩種,在后續(xù)的章節(jié)中將會(huì)較多的使用總線控制方式,請讀者對比兩者之間的不同點(diǎn)并加以區(qū)分和理解。278.6.5其它的頭文件

程序的頭文件包除了包含reg51.h外,還包括了absacc.h和intrins.h。其中,reg51.h在第7章中已做了介紹,為寄存器說明頭文件,定義了特殊功能寄存器和位寄存器的地址;intrins.h為本征函數(shù)說明頭文件,C51提供的本征函數(shù)在編譯時(shí)直接將固定的代碼插入當(dāng)前行,而不是用ACALL和LCALL語句來實(shí)現(xiàn),這樣就大大加強(qiáng)了函數(shù)訪問的效率,而非本征函數(shù)不必由ACALL及LCALL調(diào)用。流水燈控制的C語言源程序中,_crol_()即為C51的本征函數(shù)。absacc.h中實(shí)際只定義了

溫馨提示

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

評論

0/150

提交評論