劉悅武單片機(jī)設(shè)計(jì)_第1頁(yè)
劉悅武單片機(jī)設(shè)計(jì)_第2頁(yè)
劉悅武單片機(jī)設(shè)計(jì)_第3頁(yè)
劉悅武單片機(jī)設(shè)計(jì)_第4頁(yè)
劉悅武單片機(jī)設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、 網(wǎng)絡(luò)教育學(xué)院?jiǎn)纹瑱C(jī)原理及應(yīng)用大作業(yè) 基于8051單片機(jī)交通燈控制系統(tǒng)的設(shè)計(jì)學(xué)生學(xué)號(hào)學(xué)生姓名劉躍武學(xué)院名稱專業(yè)名稱年月日II摘要近年來(lái)隨著科技的飛速發(fā)展,單片機(jī)的應(yīng)用正在不斷深入,同時(shí)帶動(dòng)傳統(tǒng)控制檢測(cè)技術(shù)日益更新。在實(shí)時(shí)檢測(cè)和自動(dòng)控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往作為一個(gè)核心部件來(lái)使用,僅單片機(jī)方面知識(shí)是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu)軟硬件結(jié)合,加以完善。十字路口車輛穿梭,行人熙攘,車行車道,人行人道,有條不紊。那么靠什么來(lái)實(shí)現(xiàn)這井然秩序呢?靠的就是交通信號(hào)燈的自動(dòng)指揮系統(tǒng)。交通信號(hào)燈控制方式很多。本系統(tǒng)采用MSC-51系列單片機(jī)ATSC51和可編程并行I/O接口芯片8255A為中心器件來(lái)設(shè)計(jì)交

2、通燈控制器,實(shí)現(xiàn)了能根據(jù)實(shí)際車流量通過(guò)8051芯片的P1口設(shè)置紅、綠燈燃亮?xí)r間的功能;紅綠燈循環(huán)點(diǎn)亮,倒計(jì)時(shí)剩5秒時(shí)黃燈閃爍警示(交通燈信號(hào)通過(guò)PA口輸出,顯示時(shí)間直接通過(guò)8255的PC口輸出至雙位數(shù)碼管);車輛闖紅燈報(bào)警;綠燈時(shí)間可檢測(cè)車流量并可通過(guò)雙位數(shù)碼管顯示。本系統(tǒng)實(shí)用性強(qiáng)、操作簡(jiǎn)單、擴(kuò)展功能強(qiáng).當(dāng)今,紅綠燈安裝在各個(gè)道口上,已經(jīng)成為疏導(dǎo)交通車輛最常見(jiàn)和最有效的手段。但這一技術(shù)在19世紀(jì)就已出現(xiàn)了。1858年,在英國(guó)倫敦主要街頭安裝了以燃煤氣為光源的紅,藍(lán)兩色的機(jī)械扳手式信號(hào)燈,用以指揮馬車通行。這是世界上最早的交通信號(hào)燈。1868年,英國(guó)機(jī)械工程師納伊特在倫敦威斯敏斯特區(qū)的議會(huì)大廈前

3、的廣場(chǎng)上,安裝了世界上最早的煤氣紅綠燈。它由紅綠兩以旋轉(zhuǎn)式方形玻璃提燈組成,紅色表示“停止”,綠色表示“注意”。1869年1月2日,煤氣燈爆炸,使警察受傷,遂被取消。電氣啟動(dòng)的紅綠燈出現(xiàn)在美國(guó),這種紅綠燈由紅綠黃三色圓形的投光器組成,1914年始安裝于紐約市5號(hào)大街的一座高塔上。紅燈亮表示“停止”,綠燈亮表示“通行”。1918年,又出現(xiàn)了帶控制的紅綠燈和紅外線紅綠燈。帶控制的紅綠燈,一種是把壓力探測(cè)器安在地下,車輛一接近紅燈便變?yōu)榫G燈;另一種是用擴(kuò)音器來(lái)啟動(dòng)紅綠燈,司機(jī)遇紅燈時(shí)按一下嗽叭,就使紅燈變?yōu)榫G燈。紅外線紅綠燈當(dāng)行人踏上對(duì)壓力敏感的路面時(shí),它就能察覺(jué)到有人要過(guò)馬路。紅外光束能把信號(hào)燈的

4、紅燈延長(zhǎng)一段時(shí)間,推遲汽車放行,以免發(fā)生交通事故。信號(hào)燈的出現(xiàn),使交通得以有效管制,對(duì)于疏導(dǎo)交通流量、提高道路通行能力,減少交通事故有明顯效果。1968年,聯(lián)合國(guó)道路交通和道路標(biāo)志信號(hào)協(xié)定對(duì)各種信號(hào)燈的含義作了規(guī)定。綠燈是通行信號(hào),面對(duì)綠燈的車輛可以直行,左轉(zhuǎn)彎和右轉(zhuǎn)彎,除非另一種標(biāo)志禁止某一種轉(zhuǎn)向。左右轉(zhuǎn)彎車輛都必須讓合法地正在路口內(nèi)行駛的車輛和過(guò)人行橫道的行人優(yōu)先通行。紅燈是禁行信號(hào),面對(duì)紅燈的車輛必須在交叉路口的停車線后停車。黃燈是警告信號(hào),面對(duì)黃燈的車輛不能越過(guò)停車線,但車輛已十分接近停車線而不能安全停車時(shí)可以進(jìn)入交叉路口。1.1 單片機(jī)的應(yīng)用單片機(jī)的應(yīng)用很廣,分別在以下領(lǐng)域中得到了廣

5、泛的應(yīng)用。工業(yè)自動(dòng)化:在自動(dòng)化技術(shù)中,無(wú)論是過(guò)程控制技術(shù)、數(shù)據(jù)采集技術(shù)還是測(cè)控技術(shù),都離不開(kāi)單片機(jī)。在工業(yè)自動(dòng)化的領(lǐng)域中,機(jī)電一體化技術(shù)將發(fā)揮愈來(lái)愈重要的作用,在這種機(jī)械、微電子和計(jì)算機(jī)技術(shù)為一體的綜合技術(shù)(例如機(jī)器人技術(shù)、數(shù)控技術(shù))中,單片機(jī)將發(fā)揮非常重要的作用特別是近些年來(lái),隨著計(jì)算機(jī)技術(shù)的發(fā)展,工業(yè)自動(dòng)化也發(fā)展到了一個(gè)新的高度,出現(xiàn)了無(wú)人工廠、機(jī)器人作業(yè)、網(wǎng)絡(luò)化工廠等,不僅將人從繁重、重復(fù)和危險(xiǎn)的工業(yè)現(xiàn)場(chǎng)解放出來(lái),還大大提高了生產(chǎn)效率,降低了生產(chǎn)成本。儀器儀表:目前對(duì)儀器儀表的自動(dòng)化和智能化要求越來(lái)越高。在自動(dòng)化測(cè)量?jī)x器中,單片機(jī)應(yīng)用十分普及。單片機(jī)的使用有助于提高儀器儀表的精度和準(zhǔn)確度

6、,簡(jiǎn)化結(jié)構(gòu),減小體積,易于攜帶和使用,加速儀器儀表向數(shù)字化、智能化和多功能化方向發(fā)展。消費(fèi)類電子產(chǎn)品:該應(yīng)用主要反映在家電領(lǐng)域。目前家電產(chǎn)品的一個(gè)重要發(fā)展趨勢(shì)是不斷提高其智能化程度。例如,電子游戲、照相機(jī)、洗衣機(jī)、電冰箱、空調(diào)、電視機(jī)、微波爐、手機(jī)、IC卡、汽車電子設(shè)備等。在這些設(shè)備中使用了單片機(jī)后,其功能和性能大大提高,并實(shí)現(xiàn)了智能化、最優(yōu)化控制信方面:較高檔的單片機(jī)都具有通信接口,因而為單片機(jī)在通信設(shè)備中的應(yīng)用創(chuàng)造了很好的條件。例如,在微波通信、短波通信、載波通信、光纖通信、程控交換等通信設(shè)備和儀器中都能找到單片機(jī)的應(yīng)用。武器裝備:在現(xiàn)代化的武器裝備中, 如飛機(jī)、軍艦、坦克、導(dǎo)單、魚雷制導(dǎo)

7、、智能武器設(shè)備、航天飛機(jī)導(dǎo)航系統(tǒng),都有單片機(jī)在其中發(fā)揮重要作用。終端及外部設(shè)備控制:計(jì)算機(jī)網(wǎng)絡(luò)終端設(shè)備,如銀行終端,以及計(jì)算機(jī)外部設(shè)備如打印機(jī)、硬盤驅(qū)動(dòng)器、繪圖機(jī)、傳真機(jī)、復(fù)印機(jī)等,在這些設(shè)備中都使用了單片機(jī)。近年來(lái)隨著科技的飛速發(fā)展,同時(shí)帶動(dòng)自動(dòng)控制系統(tǒng)日新月異更新,單片機(jī)的應(yīng)用正在不斷地走向深入。2 芯片簡(jiǎn)介2.1 MCS-51芯片簡(jiǎn)介MCS-51單片機(jī)內(nèi)部結(jié)構(gòu)8051是MCS-51系列單片機(jī)的典型產(chǎn)品,我們以這一代表性的機(jī)型進(jìn)行系統(tǒng)的講解。 8051單片機(jī)包含中央處理器、程序存儲(chǔ)器(ROM)、數(shù)據(jù)存儲(chǔ)器(RAM)、定時(shí)/計(jì)數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和

8、控制總線等三大總線。中央處理器中央處理器(CPU)是整個(gè)單片機(jī)的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進(jìn)制數(shù)據(jù)或代碼,CPU負(fù)責(zé)控制、指揮和調(diào)度整個(gè)單元系統(tǒng)協(xié)調(diào)的工作,完成運(yùn)算和控制輸入輸出功能等操作。數(shù)據(jù)存儲(chǔ)器(RAM)8051內(nèi)部有128個(gè)8位用戶數(shù)據(jù)存儲(chǔ)單元和128個(gè)專用寄存器單元,它們是統(tǒng)一編址的,專用寄存器只能用于存放控制指令數(shù)據(jù),用戶只能訪問(wèn),而不能用于存放用戶數(shù)據(jù),所以,用戶能使用的RAM只有128個(gè),可存放讀寫的數(shù)據(jù),運(yùn)算的中間結(jié)果或用戶定義的字型表。圖3-1 8051單片機(jī)內(nèi)部結(jié)構(gòu)程序存儲(chǔ)器(ROM)8051共有4096個(gè)8位掩膜ROM,用于存放用戶程序,原始數(shù)據(jù)或表

9、格。定時(shí)/計(jì)數(shù)器(ROM)8051有兩個(gè)16位的可編程定時(shí)/計(jì)數(shù)器,以實(shí)現(xiàn)定時(shí)或計(jì)數(shù)產(chǎn)生中斷用于控制程序轉(zhuǎn)向。并行輸入輸出(I/O)口8051共有4組8位I/O口(P0、 P1、P2或P3),用于對(duì)外部數(shù)據(jù)的傳輸。全雙工串行口8051內(nèi)置一個(gè)全雙工串行通信口,用于與其它設(shè)備間的串行數(shù)據(jù)傳送,該串行口既可以用作異步通信收發(fā)器,也可以當(dāng)同步移位器使用。2.2 中斷系統(tǒng)8051具備較完善的中斷功能,有兩個(gè)外中斷、兩個(gè)定時(shí)/計(jì)數(shù)器中斷和一個(gè)串行中斷,可滿足不同的控制要求,并具有2級(jí)的優(yōu)先級(jí)別選擇。2.3 時(shí)鐘電路8051內(nèi)置最高頻率達(dá)12MHz的時(shí)鐘電路,用于產(chǎn)生整個(gè)單片機(jī)運(yùn)行的脈沖時(shí)序,但8051單

10、片機(jī)需外置振蕩電容。單片機(jī)的結(jié)構(gòu)有兩種類型,一種是程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分開(kāi)的形式,即哈佛(Harvard)結(jié)構(gòu),另一種是采用通用計(jì)算機(jī)廣泛使用的程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器合二為一的結(jié)構(gòu),即普林斯頓(Princeton)結(jié)構(gòu)。INTEL的MCS-51系列單片機(jī)采用的是哈佛結(jié)構(gòu)的形式,而后續(xù)產(chǎn)品16位的MCS-96系列單片機(jī)則采用普林斯頓結(jié)構(gòu)。下圖是MCS-51系列單片機(jī)的內(nèi)部結(jié)構(gòu)示意圖3-2。圖3-2 MCS-51系列單片機(jī)內(nèi)部結(jié)構(gòu)示意圖MCS-51的引腳說(shuō)明:MCS-51系列單片機(jī)中的8031、8051及8751均采用40Pin封裝的雙列直接DIP結(jié)構(gòu),右圖是它們的引腳配置,40個(gè)引腳中,正電源

11、和地線兩根,外置石英振蕩器的時(shí)鐘線兩根,4組8位共32個(gè)I/O口,中斷口線與P3口線復(fù)用。現(xiàn)在我們對(duì)這些引腳的功能加以說(shuō)明:MCS-51的引腳說(shuō)明:MCS-51系列單片機(jī)中的8031、8051及8751均采用40Pin封裝的雙列直接DIP結(jié)構(gòu),右圖是它們的引腳配置,40個(gè)引腳中,正電源和地線兩根,外置石英振蕩器的時(shí)鐘線兩根,4組8位共32個(gè)I/O口,中斷口線與P3口線復(fù)用。現(xiàn)在我們對(duì)這些引腳的功能加以說(shuō)明:如圖3-3圖3-3 MCS-51引腳說(shuō)明Pin9:RESET/Vpd復(fù)位信號(hào)復(fù)用腳,當(dāng)8051通電,時(shí)鐘電路開(kāi)始工作,在RESET引腳上出現(xiàn)24個(gè)時(shí)鐘周期以上的高電平,系統(tǒng)即初始復(fù)位。初始化

12、后,程序計(jì)數(shù)器PC指向0000H,P0-P3輸出口全部為高電平,堆棧指針寫入07H,其它專用寄存器被清“0”。RESET由高電平下降為低電平后,系統(tǒng)即從0000H地址開(kāi)始執(zhí)行程序。然而,初始復(fù)位不改變RAM(包括工作寄存器R0-R7)的狀態(tài),8051的初始態(tài)。8051的復(fù)位方式可以是自動(dòng)復(fù)位,也可以是手動(dòng)復(fù)位,見(jiàn)圖3-4。此外,RESET/Vpd還是一復(fù)用腳,Vcc掉電其間,此腳可接上備用電源,以保證單片機(jī)內(nèi)部RAM的數(shù)據(jù)不丟失。圖3-4 8051的復(fù)位方式Pin30:ALE/當(dāng)訪問(wèn)外部程序器時(shí),ALE(地址鎖存)的輸出用于鎖存地址的低位字節(jié)。而訪問(wèn)內(nèi)部程序存儲(chǔ)器時(shí),ALE端將有一個(gè)1/6時(shí)鐘

13、頻率的正脈沖信號(hào),這個(gè)信號(hào)可以用于識(shí)別單片機(jī)是否工作,也可以當(dāng)作一個(gè)時(shí)鐘向外輸出。更有一個(gè)特點(diǎn),當(dāng)訪問(wèn)外部程序存儲(chǔ)器,ALE會(huì)跳過(guò)一個(gè)脈沖。如果單片機(jī)是EPROM,在編程其間,將用于輸入編程脈沖。Pin29:當(dāng)訪問(wèn)外部程序存儲(chǔ)器時(shí),此腳輸出負(fù)脈沖選通信號(hào),PC的16位地址數(shù)據(jù)將出現(xiàn)在P0和P2口上,外部程序存儲(chǔ)器則把指令數(shù)據(jù)放到P0口上,由CPU讀入并執(zhí)行。Pin31:EA/Vpp程序存儲(chǔ)器的內(nèi)外部選通線,8051和8751單片機(jī),內(nèi)置有4kB的程序存儲(chǔ)器,當(dāng)EA為高電平并且程序地址小于4kB時(shí),讀取內(nèi)部程序存儲(chǔ)器指令數(shù)據(jù),而超過(guò)4kB地址則讀取外部指令數(shù)據(jù)。如EA為低電平,則不管地址大小,一

14、律讀取外部程序存儲(chǔ)器指令。顯然,對(duì)內(nèi)部無(wú)程序存儲(chǔ)器的8031,EA端必須接地。在編程時(shí),EA/Vpp腳還需加上21V的編程電壓。3.4 8255芯片簡(jiǎn)介8255可編程并行接口芯片簡(jiǎn)介: 8255可編程并行接口芯片有三個(gè)輸入輸出端口,即A口、B口和C口,對(duì)應(yīng)于引腳PA7PA0、PB7PB0和PC7PC0。其內(nèi)部還有一個(gè)控制寄存器,即控制口。通常A口、B口作為輸入輸出的數(shù)據(jù)端口。C口作為控制或狀態(tài)信息的端口,它在方式字的控制下,可以分成4位的端口,每個(gè)端口包含一個(gè)4位鎖存器。它們分別與端口A配合使用,可以用作控制信號(hào)輸出或作為狀態(tài)信號(hào)輸入。8255可編程并行接口芯片方式控制字格式說(shuō)明:8255有兩

15、種控制命令字;一個(gè)是方式選擇控制字;另一個(gè)是C口按位置位復(fù)位控制字。其中C口按位置位復(fù)位控制字方式使用較為繁難,說(shuō)明也較冗長(zhǎng),故在此不作敘述,需要時(shí)用戶可自行查找有關(guān)資料。D7:設(shè)定工作方式標(biāo)志,1有效。D6、D5:A口方式選擇0 0 方式00 1 方式11 ×方式2D4:A口功能 (1=輸入,0=輸出)D3:C口高4位功能 (1=輸入,0=輸出)D2:B口方式選擇 (0=方式0,1=方式1)D1:B口功能 (1=輸入,0=輸出)D0:C口低4位功能 (1=輸入,0=輸出)8255可編程并行接口芯片工作方式說(shuō)明:方式0:基本輸入輸出方式。適用于三個(gè)端口中的任何一個(gè)。每一個(gè)端口都可以用

16、作輸入或輸出。輸出可被鎖存,輸入不能鎖存。方式1:選通輸入輸出方式。這時(shí)A口或B口的8位外設(shè)線用作輸入或輸出,C口的4條線中三條用作數(shù)據(jù)傳輸?shù)穆?lián)絡(luò)信號(hào)和中斷請(qǐng)求信號(hào)。方式2 :雙向總線方式。只有A口具備雙向總線方式,8位外設(shè)線用作輸入或輸出,此時(shí)C口的5條線用作通訊聯(lián)絡(luò)信號(hào)和中斷請(qǐng)求信號(hào)。74LS373簡(jiǎn)介74LS373 是一種帶三態(tài)門的8D鎖存器,其管腳示意圖如3-5示:其中:1D-8D為8個(gè)輸入端。 1Q-8Q為8個(gè)輸出端。 LE為數(shù)據(jù)打入端:當(dāng)LE為“1”時(shí),鎖存器輸出 狀態(tài)同輸入狀態(tài);當(dāng)LE由“1”變“0”時(shí),數(shù)據(jù) 打入鎖存器 OE為輸出允許端:當(dāng)OE=0時(shí),三態(tài)門打開(kāi); 當(dāng)OE=1時(shí)

17、,三態(tài)門關(guān)閉,輸出高阻。圖3-5 三態(tài)門鎖存器管腳示意圖4系統(tǒng)硬件設(shè)計(jì)4.1交通管理的方案論證東西、南北兩干道交于一個(gè)十字路口,各干道有一組紅、黃、綠三色的指示燈,指揮車輛和行人安全通行。紅燈亮禁止通行,綠燈亮允許通行。黃燈亮提示人們注意紅、綠燈的狀態(tài)即將切換,且黃燈燃亮?xí)r間為東西、南北兩干道的公共停車時(shí)間。設(shè)東西道比南北道的車流量大,指示燈燃亮的方案如表3-1。表3-1 指示燈亮滅方案60S5S80S5S東西道紅燈亮黃燈亮綠燈亮黃燈亮南北道綠燈亮黃燈亮紅燈亮黃燈亮表3-1說(shuō)明:(1)當(dāng)東西方向?yàn)榧t燈,此道車輛禁止通行,東西道行人可通過(guò);南北道為綠燈,此道車輛通過(guò),行人禁止通行。時(shí)間為60秒。

18、(2)黃燈閃爍5秒,警示車輛和行人紅、綠燈的狀態(tài)即將切換。 (3)當(dāng)東西方向?yàn)榫G燈,此道車輛通行;南北方向?yàn)榧t燈,南北道車輛禁止通過(guò),行人通行。時(shí)間為80秒。 東西方向車流大 通行時(shí)間長(zhǎng)。(4)這樣如上表的時(shí)間和紅、綠、黃出現(xiàn)的順序依次出現(xiàn)這樣行人和車輛就能安全暢通的通行。(5)此表可根據(jù)車流量動(dòng)態(tài)設(shè)定紅綠燈初始值。4.2系統(tǒng)硬件設(shè)計(jì)選用設(shè)備8051單片機(jī)一片選用設(shè)備:8031彈片機(jī)一片,8255并行通用接口芯片一片,74LS07兩片,MAX692看門狗一片,共陰極的七段數(shù)碼管兩個(gè)雙向晶閘管若干,7805三端穩(wěn)壓電源一個(gè),紅、黃、綠交通燈各兩個(gè),開(kāi)關(guān)鍵盤、連線若干。4.2.1系統(tǒng)總框圖如圖4-

19、1:圖4-1 系統(tǒng)框圖4.2.2交通燈硬件線路圖(見(jiàn)附錄2)4.2.3系統(tǒng)工作原理(1)開(kāi)關(guān)鍵盤輸入交通燈初始時(shí)間,通過(guò)8051單片機(jī)P1輸入到系統(tǒng) (2) 由8051單片機(jī)的定時(shí)器每秒鐘通過(guò)P0口向8255的數(shù)據(jù)口送信息,由8255的PA 口顯示紅、綠、黃燈的燃亮情況;由8255的PC口顯示每個(gè)燈的燃亮?xí)r間。 (3)8051通過(guò) 設(shè)置 各個(gè)信號(hào)等的燃亮?xí)r間、通過(guò)8031設(shè)置,綠、紅時(shí)間分別為60秒、80秒循環(huán)由8051的 P0口向8255的數(shù)據(jù)口輸出。(4) 通過(guò)8051單片機(jī)的P3.0位來(lái)控制系統(tǒng)是工作或設(shè)置初值,當(dāng).牌位0就對(duì)系統(tǒng)進(jìn)行初始化,為1系統(tǒng)就開(kāi)始工作。(5)紅燈倒計(jì)時(shí)時(shí)間,當(dāng)有

20、車輛闖紅燈時(shí),啟動(dòng)蜂鳴器進(jìn)行報(bào)警,3S后然后恢復(fù)正常。(6)增加每次綠燈時(shí)間車流量檢測(cè)的功能,并且通過(guò)查詢P2.0端口的電平是否為低,開(kāi)關(guān)按下為低電平,雙位數(shù)碼管顯示車流量,直到下一次綠燈時(shí)間重新記入。(7)綠燈時(shí)間倒計(jì)時(shí)完畢,重新循環(huán)。控制器的軟件設(shè)計(jì)5.1計(jì)數(shù)器硬件延時(shí)5.1.1 計(jì)數(shù)器初值計(jì)算定時(shí)器工作時(shí)必須給計(jì)數(shù)器送計(jì)數(shù)器初值,這個(gè)值是送到TH和TL中的。他是以加法記數(shù)的,并能從全1到全0時(shí)自動(dòng)產(chǎn)生溢出中斷請(qǐng)求。因此,我們可以把計(jì)數(shù)器記滿為零所需的計(jì)數(shù)值設(shè)定為C和計(jì)數(shù)初值設(shè)定為TC 可得到如下計(jì)算通式: TC=M-C式中,M為計(jì)數(shù)器摸值,該值和計(jì)數(shù)器工作方式有關(guān)。在方式0時(shí)M為213

21、;在方式1時(shí)M的值為216;在方式2和3為285.1.2 秒的方法我們采用在主程序中設(shè)定一個(gè)初值為20的軟件計(jì)數(shù)器和使T0定時(shí)50毫秒這樣每當(dāng)T0到50毫秒時(shí)CPU就響應(yīng)它的溢出中斷請(qǐng)求,進(jìn)入他的中斷服務(wù)子程序。在中斷服務(wù)子程序中,CPU先使軟件計(jì)數(shù)器減,然后判斷它是否為零。為零表示秒已到可以返回到輸出時(shí)間顯示程序。5.1.3 相應(yīng)程序代碼)主程序定時(shí)器需定時(shí)50毫秒,故T0工作于方式。初值:TCMT T計(jì)數(shù)250ms/1us=15536=3CBOHORG 1000HSTART:MOV TMOD,#01H; 令T0為定時(shí)器方式MOV TH0,#3CH;裝入定時(shí)器初值MOV TL0,#BOH;M

22、OV IE,#82H;開(kāi)T0中斷SEBT TRO;啟動(dòng)T0計(jì)數(shù)器MOV RO,#14H;軟件計(jì)數(shù)器賦初值LOOP:SJMP $;等待中斷()中斷服務(wù)子程序ORG 000BHAGMP BRT0ORG 00BHBRT0:DJNZ R0,NEXTAJMP TIME 跳轉(zhuǎn)到時(shí)間及信號(hào)燈顯示子程序 DJNZ:MOV R0,14H;恢復(fù)R0值MOV TH0, #3CH ;重裝入定時(shí)器初值MOV TL0, #BOH;MOV IE,#82H RET1END5.2 軟件延時(shí)MCS-51的工作頻率為2-12MHZ,我們選用的8031單片機(jī)的工作頻率為6MHZ。機(jī)器周期與主頻有關(guān),機(jī)器周期是主頻的12倍,所以一個(gè)機(jī)

23、器周期的時(shí)間為12*(1/6M)=2us。我們可以知道具體每條指令的周期數(shù),這樣我們就可以通過(guò)指令的執(zhí)行條數(shù)來(lái)確定1秒的時(shí)間。具體的延時(shí)程序分析:DELAY:MOV R4,#08H 延時(shí)1秒子程序DE2:LCALL DELAY1 DJNZ R4,DE2RETDELAY1:MOV R6,#0 延時(shí)125ms 子程序MOV R5,#0DE1:DJNZ R5,$DJNZ R6,DE1RETMOV RN,#DATA 字節(jié)數(shù)數(shù)為2 機(jī)器周期數(shù)為1所以此指令的執(zhí)行時(shí)間為2ms DELAY1 為一個(gè)雙重循壞 循環(huán)次數(shù)為256*256=65536所以延時(shí)時(shí)間=65536*2=131072us約為125us D

24、ELAY R4設(shè)置的初值為8 主延時(shí)程序循環(huán)8次,所以125us*8=1秒 由于單片機(jī)的運(yùn)行速度很快其他的指令執(zhí)行時(shí)間可以忽略不計(jì)。5.3 時(shí)間及信號(hào)燈的顯示5.3.1 8051并行口的擴(kuò)展8051雖然有4個(gè)8位I/O端口,但真正能提供借用的只有P1口,因?yàn)镻2和P0口通常用于傳送外部傳送地址和數(shù)據(jù),P3口也有它的第二功能。因此,8031通常需要擴(kuò)展。由于我們用外部輸入設(shè)定紅綠燈倒計(jì)時(shí)初值、數(shù)碼管的輸出顯示、紅綠黃信號(hào)燈的顯示都要用到一個(gè)I/O端口,顯然8031的端口是不夠,需要擴(kuò)展。擴(kuò)展的方法有兩種:(1)借用外部RAM地址來(lái)擴(kuò)展I/O端口;(2)采用I/O接口新片來(lái)擴(kuò)充。我們用8255并行

25、接口信片來(lái)擴(kuò)展I/O端口。5.3.2 顯示原理當(dāng)定時(shí)器定時(shí)為1秒,時(shí)程序跳轉(zhuǎn)到時(shí)間顯示及信號(hào)燈顯示子程序,它將依次顯示信號(hào)燈時(shí)間 ,同時(shí)一直顯示信號(hào)燈的顏色,這時(shí)在返回定時(shí)子程序定時(shí)一秒,在顯示黃燈的下一個(gè)時(shí)間,這樣依次把所有的燈色的時(shí)間顯示完后在重新給時(shí)間計(jì)數(shù)器賦初值 ,重新進(jìn)入循環(huán)。5.3.3 8255輸出信號(hào)與數(shù)碼管的連接LED 燈的顯示原理:通過(guò)同名管腳上所加電平的高低來(lái)控制發(fā)光二極管是否點(diǎn)量而顯示不同的字形如 SP,g,f,e,d,c,b,a 管角上加上所以上為伏,不亮其余為高電平,全亮則顯示為采用共陰級(jí)連接:其中 PC0PB0-a,PC1PB1-b, PC2PB2-c,PC3PB3

26、-d,PC4PB4-e, PC5PB5-f,PC6PB6-gPC7PB7 -SP接地、表5-1 驅(qū)動(dòng)代碼表顯示數(shù)值dop g f e d c b a 驅(qū)動(dòng)代碼(16進(jìn)制)00 0 1 1 1 1 1 1 3FH1 0 0 0 0 0 1 1 006H2 0 1 0 1 1 0 1 15BH3 0 1 0 0 1 1 1 14FH4 0 1 1 0 0 1 1 066H5 0 1 1 0 1 1 0 06DH6 0 1 1 1 1 1 0 07DH7 0 0 0 0 0 1 1 107H8 0 1 1 1 1 1 1 17FH5.3.4 8255與8051的連接:用8051的P0 口的 p0.7

27、 連接8255的片選信號(hào)cs 我們用8031的地址采用全譯碼方式,當(dāng)p0.7 =0 時(shí)片選有效, 其他無(wú)效, p0.1 p0.1 用于選擇8255端口 P0.7 p0.6 p0.5 p0.4 p0.3 p0.2 P0.1 P0.0A7 A6 A5 A4 A3 A2 A1 A01 X X X X X 0 0 00H為8255 的PA口1 X X X X X 0 1 01H 為8255的PB口1 X X X X X 1 0 02H 為8255的PC口1 X X X X X 1 1 03H 為8255的控制口由于8051是分時(shí)對(duì)8255和儲(chǔ)存器進(jìn)行訪問(wèn)所以8051的P0口不會(huì)發(fā)生沖突5.4 程序設(shè)計(jì)

28、開(kāi)始初始化等待鍵盤事件顯示程序處理鍵盤事件處理圖5-1 程序設(shè)計(jì)流程圖圖5-2 程序流程圖程序程序源代碼ORG 0000H ;主程序的入口地址LJMP MAIN ;跳轉(zhuǎn)到主程序的開(kāi)始處ORG 0003H ;外部中斷0的中斷程序入口地址 ORG 000BH ;定時(shí)器0的中斷程序入口地址LJMP T0_INT ;跳轉(zhuǎn)到中斷服務(wù)程序處ORG 0013H ;外部中斷1的中斷程序入口地址 MAIN : MOV SP,#50HMOV IE,#8EH ;CPU開(kāi)中斷,允許T0中斷,T1中斷和外部中斷1中斷MOV TMOD,#51H ;設(shè)置T1為計(jì)數(shù)方式,T0為定時(shí)方式,且都工作于模式1MOV TH1,#00

29、H ;T1計(jì)數(shù)器清零MOV TL1,#00HSETB TR1 ;啟動(dòng)T1計(jì)時(shí)器SETB EX1 ;允許INT1中斷SETB IT1 ;選擇邊沿觸發(fā)方式MOV DPTR ,#0003HMOV A, #80H ;給8255賦初值,8255工作于方式0MOVX DPTR, AAGAIN: JB P3.1,N0 ;判斷是否要設(shè)定東西方向紅綠燈時(shí)間的初值,若P3.1為1 則跳轉(zhuǎn)MOV A,P1 JB P1.7,RED ;判斷P1.7是否為1,若為1則設(shè)定紅燈時(shí)間,否則設(shè)定綠燈時(shí)間 MOV R0,#00H ;R0清零MOV R0,A ;存入東西方向綠燈初始時(shí)間MOV R3,ALCALL DISP1LCAL

30、L DELAYAJMP AGAINRED: MOV A,P1ANL A,#7FH ;P1.7置0MOV R7,#00H ;R7清零MOV R7,A ;存入東西方向紅燈初始時(shí)間MOV R3,ALCALL DISP1LCALL DELAYAJMP AGAIN;-N0: SETB TR0 ;啟動(dòng)T0計(jì)時(shí)器MOV 76H,R7 ;紅燈時(shí)間存入76HN00: MOV A,76H ;東西方向禁止,南北方向通行MOV R3,A MOV DPTR,#0000H ;置8255A口,東西方向紅燈亮,南北方向綠燈亮MOV A,#0DDHMOVX DPTR, AN01: JB P2.0,B0N02: SETB P3.

31、0CJNE R3,#00H,N01 ;比較R3中的值是否為0,不為0轉(zhuǎn)到當(dāng)前指令處執(zhí)行;-黃燈閃爍5秒程序-N1: SETB P3.0MOV R3,#05HMOV DPTR,#0000H ;置8255A口,東西,南北方向黃燈亮MOV A,#0D4HMOVX DPTR,AN11: MOV R4,#00HN12: CJNE R4,#7DH,$ ;黃燈持續(xù)亮0.5秒N13: MOV DPTR,#0000H ; 置8255A口,南北方向黃燈滅MOV A,#0DDHMOVX DPTR,AN14: MOV R4,#00HCJNE R4,#7DH,$ ;黃燈持續(xù)滅0.5秒CJNE R3,#00H,N1 ;閃

32、爍時(shí)間達(dá)5秒則退出;-N2: MOV R7,#00HMOV A,R0 ;東西通行,南北禁止MOV R3,AMOV DPTR,#0000H ; 置8255A口,東西方向綠燈亮,南北方向紅燈亮MOV A,#0EBHMOVX DPTR,AN21: JB P2.0,T03 N22: CJNE R3,#00H,N21;-黃燈閃爍5秒程序-N3: MOV R3,#05HMOV DPTR,#0000H ;置8255A口,東西,南北方向黃燈亮MOV A,#0E2HMOVX DPTR,AN31: MOV R4,#00HCJNE R4,#7DH,$ ;黃燈持續(xù)亮0.5秒N32: MOV DPTR,#0000H ;

33、 置8255A口,南北方向黃燈滅MOV A,#0EBHMOVX DPTR,AN33: MOV R4,#00HCJNE R4,#7DH,$ ;黃燈持續(xù)滅0.5秒CJNE R3,#00H,N3 ;閃爍時(shí)間達(dá)5秒則退出SJMP N00;-闖紅燈報(bào)警程序-B0: MOV R2,#03H ;報(bào)警持續(xù)時(shí)間3秒B01: MOV A,R3JZ N1 ;若倒計(jì)時(shí)完畢,不再報(bào)警CLR P3.0 ;報(bào)警 CJNE R2,#00H,B01 ;判斷3秒是否結(jié)束SJMP N02;-1秒延時(shí)子程序-N7: RETIT0_INT:MOV TL0,#9AH ;給定時(shí)器T0送定時(shí)10ms的初值MOV TH0,#0F1H INC

34、R4INC R5CJNE R5,#0FAH,T01 ;判斷延時(shí)是否夠一秒,不夠則調(diào)用顯示子程序MOV R5,#00H ;R5清零DEC R3 ;倒計(jì)時(shí)初值減一DEC R2 ;報(bào)警初值減一T01: ACALL DISP ;調(diào)用顯示子程序RETI ;中斷返回;-顯示子程序-DISP: JNB P2.4,T02DISP1: MOV B,#0AHMOV A,R3 ;R3中值二轉(zhuǎn)十顯示轉(zhuǎn)換DIV ABMOV 79H,AMOV 7AH,BDIS: MOV A,79H ;顯示十位MOV DPTR,#TABMOVC A,A+DPTRMOV DPTR,#0002HMOVX DPTR,AMOV DPTR,#0001HMOV A,#0F7HMOVX DPTR,ALCALL DELAYDS2: MOV A,7AH ;顯示個(gè)位MOV DPTR,#TAB MOVC A,A+DPTRMOV DPTR,#0002HMOVX DPTR,AMOV DPTR,#0001HMOV A,#0FBHMOVX DPTR,ARET;-東西方向車流量檢測(cè)程序-T

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論