0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

單片機(jī)的交通燈設(shè)計(jì):MCS-51單片機(jī)內(nèi)部結(jié)構(gòu)

multisim ? 來源:multisim ? 作者:multisim ? 2021-01-07 15:23 ? 次閱讀

摘要:

近年來隨著科技的飛速發(fā)展,單片機(jī)的應(yīng)用正在不斷深入,同時帶動傳統(tǒng)控制檢測技術(shù)日益更新。在實(shí)時檢測和自動控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往作為一個核心部件來使用,僅單片機(jī)方面知識是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu)軟硬件結(jié)合,加以完善。

十字路口車輛穿梭,行人熙攘,車行車道,人行人道,有條不紊。那么靠什么來實(shí)現(xiàn)這井然秩序呢?靠的就是交通信號燈的自動指揮系統(tǒng)。交通信號燈控制方式很多。本系統(tǒng)采用MSC-51系列單片機(jī)ATSC51和可編程并行I/O接口芯片8255A為中心器件來設(shè)計(jì)交通燈控制器,實(shí)現(xiàn)了能根據(jù)實(shí)際車流量通過8051芯片的P1口設(shè)置紅、綠燈燃亮?xí)r間的功能;紅綠燈循環(huán)點(diǎn)亮,倒計(jì)時剩5秒時黃燈閃爍警示(交通燈信號通過PA口輸出,顯示時間直接通過8255的PC口輸出至雙位數(shù)碼管);車輛闖紅燈報(bào)警;綠燈時間可檢測車流量并可通過雙位數(shù)碼管顯示。本系統(tǒng)實(shí)用性強(qiáng)、操作簡單、擴(kuò)展功能強(qiáng)。

1 引言

當(dāng)今,紅綠燈安裝在各個道口上,已經(jīng)成為疏導(dǎo)交通車輛最常見和最有效的手段。但這一技術(shù)在19世紀(jì)就已出現(xiàn)了。

1858年,在英國倫敦主要街頭安裝了以燃煤氣為光源的紅,藍(lán)兩色的機(jī)械扳手式信號燈,用以指揮馬車通行。這是世界上最早的交通信號燈。1868年,英國機(jī)械工程師納伊特在倫敦威斯敏斯特區(qū)的議會大廈前的廣場上,安裝了世界上最早的煤氣紅綠燈。它由紅綠兩以旋轉(zhuǎn)式方形玻璃提燈組成,紅色表示“停止”,綠色表示“注意”。1869年1月2日,煤氣燈爆炸,使警察受傷,遂被取消。

電氣啟動的紅綠燈出現(xiàn)在美國,這種紅綠燈由紅綠黃三色圓形的投光器組成,1914年始安裝于紐約市5號大街的一座高塔上。紅燈亮表示“停止”,綠燈亮表示“通行”。

1918年,又出現(xiàn)了帶控制的紅綠燈和紅外線紅綠燈。帶控制的紅綠燈,一種是把壓力探測器安在地下,車輛一接近紅燈便變?yōu)榫G燈;另一種是用擴(kuò)音器來啟動紅綠燈,司機(jī)遇紅燈時按一下嗽叭,就使紅燈變?yōu)榫G燈。紅外線紅綠燈當(dāng)行人踏上對壓力敏感的路面時,它就能察覺到有人要過馬路。紅外光束能把信號燈的紅燈延長一段時間,推遲汽車放行,以免發(fā)生交通事故。

信號燈的出現(xiàn),使交通得以有效管制,對于疏導(dǎo)交通流量、提高道路通行能力,減少交通事故有明顯效果。1968年,聯(lián)合國《道路交通和道路標(biāo)志信號協(xié)定》對各種信號燈的含義作了規(guī)定。綠燈是通行信號,面對綠燈的車輛可以直行,左轉(zhuǎn)彎和右轉(zhuǎn)彎,除非另一種標(biāo)志禁止某一種轉(zhuǎn)向。左右轉(zhuǎn)彎車輛都必須讓合法地正在路口內(nèi)行駛的車輛和過人行橫道的行人優(yōu)先通行。紅燈是禁行信號,面對紅燈的車輛必須在交叉路口的停車線后停車。黃燈是警告信號,面對黃燈的車輛不能越過停車線,但車輛已十分接近停車線而不能安全停車時可以進(jìn)入交叉路口。

2 單片機(jī)概述

單片機(jī)微型計(jì)算機(jī)是微型計(jì)算機(jī)的一個重要分支,也是頗具生命力的機(jī)種。單片機(jī)微型計(jì)算機(jī)簡稱單片機(jī),特別適用于控制領(lǐng)域,故又稱為微控制器

通常,單片機(jī)由單塊集成電路芯片構(gòu)成,內(nèi)部包含有計(jì)算機(jī)的基本功能部件:中央處理器、存儲器和I/O接口電路等。因此,單片機(jī)只需要和適當(dāng)?shù)能浖巴獠吭O(shè)備相結(jié)合,便可成為一個單片機(jī)控制系統(tǒng)。

單片機(jī)經(jīng)過1、2、3、3代的發(fā)展,目前單片機(jī)正朝著高性能和多品種方向發(fā)展,它們的CPU功能在增強(qiáng),內(nèi)部資源在增多,引角的多功能化,以及低電壓底功耗。

3 芯片簡介

3.1 MSC-51芯片簡介

MCS-51單片機(jī)內(nèi)部結(jié)構(gòu)

8051是MCS-51系列單片機(jī)的典型產(chǎn)品,我們以這一代表性的機(jī)型進(jìn)行系統(tǒng)的講解。
8051單片機(jī)包含中央處理器、程序存儲器(ROM)、數(shù)據(jù)存儲器(RAM)、定時/計(jì)數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線,現(xiàn)在我們分別加以說明:

·中央處理器:

中央處理器(CPU)是整個單片機(jī)的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進(jìn)制數(shù)據(jù)或代碼,CPU負(fù)責(zé)控制、指揮和調(diào)度整個單元系統(tǒng)協(xié)調(diào)的工作,完成運(yùn)算和控制輸入輸出功能等操作。

·數(shù)據(jù)存儲器(RAM)

8051內(nèi)部有128個8位用戶數(shù)據(jù)存儲單元和128個專用寄存器單元,它們是統(tǒng)一編址的,專用寄存器只能用于存放控制指令數(shù)據(jù),用戶只能訪問,而不能用于存放用戶數(shù)據(jù),所以,用戶能使用的RAM只有128個,可存放讀寫的數(shù)據(jù),運(yùn)算的中間結(jié)果或用戶定義的字型表。

097eb68e-46d7-11eb-8b86-12bb97331649.png

圖1

·程序存儲器(ROM):

8051共有4096個8位掩膜ROM,用于存放用戶程序,原始數(shù)據(jù)或表格。

·定時/計(jì)數(shù)器(ROM):

8051有兩個16位的可編程定時/計(jì)數(shù)器,以實(shí)現(xiàn)定時或計(jì)數(shù)產(chǎn)生中斷用于控制程序轉(zhuǎn)向。

·并行輸入輸出(I/O)口:

8051共有4組8位I/O口(P0、P1、P2或P3),用于對外部數(shù)據(jù)的傳輸。

·全雙工串行口:

8051內(nèi)置一個全雙工串行通信口,用于與其它設(shè)備間的串行數(shù)據(jù)傳送,該串行口既可以用作異步通信收發(fā)器,也可以當(dāng)同步移位器使用。

·中斷系統(tǒng):

8051具備較完善的中斷功能,有兩個外中斷、兩個定時/計(jì)數(shù)器中斷和一個串行中斷,可滿足不同的控制要求,并具有2級的優(yōu)先級別選擇。

·時鐘電路:

8051內(nèi)置最高頻率達(dá)12MHz的時鐘電路,用于產(chǎn)生整個單片機(jī)運(yùn)行的脈沖時序,但8051單片機(jī)需外置振蕩電容。

單片機(jī)的結(jié)構(gòu)有兩種類型,一種是程序存儲器和數(shù)據(jù)存儲器分開的形式,即哈佛(Harvard)結(jié)構(gòu),另一種是采用通用計(jì)算機(jī)廣泛使用的程序存儲器與數(shù)據(jù)存儲器合二為一的結(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)示意圖2。

09b63276-46d7-11eb-8b86-12bb97331649.png

圖2

MCS-51的引腳說明:

MCS-51系列單片機(jī)中的8031、8051及8751均采用40Pin封裝的雙列直接DIP結(jié)構(gòu),右圖是它們的引腳配置,40個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4組8位共32個I/O口,中斷口線與P3口線復(fù)用?,F(xiàn)在我們對這些引腳的功能加以說明:

MCS-51的引腳說明:

MCS-51系列單片機(jī)中的8031、8051及8751均采用40Pin封裝的雙列直接DIP結(jié)構(gòu),右圖是它們的引腳配置,40個引腳中,正電源和地線兩根,外置石英振蕩器的時鐘線兩根,4組8位共32個I/O口,中斷口線與P3口線復(fù)用?,F(xiàn)在我們對這些引腳的功能加以說明:如圖3

0a049c40-46d7-11eb-8b86-12bb97331649.jpg

圖3

Pin9:RESET/Vpd復(fù)位信號復(fù)用腳,當(dāng)8051通電,時鐘電路開始工作,在RESET引腳上出現(xiàn)24個時鐘周期以上的高電平,系統(tǒng)即初始復(fù)位。初始化后,程序計(jì)數(shù)器PC指向0000H,P0-P3輸出口全部為高電平,堆棧指針寫入07H,其它專用寄存器被清“0”。RESET由高電平下降為低電平后,系統(tǒng)即從0000H地址開始執(zhí)行程序。然而,初始復(fù)位不改變RAM(包括工作寄存器R0-R7)的狀態(tài),8051的初始態(tài)。

8051的復(fù)位方式可以是自動復(fù)位,也可以是手動復(fù)位,見下圖4。此外,RESET/Vpd還是一復(fù)用腳,Vcc掉電其間,此腳可接上備用電源,以保證單片機(jī)內(nèi)部RAM的數(shù)據(jù)不丟失。

0a408c14-46d7-11eb-8b86-12bb97331649.png

0a86be8c-46d7-11eb-8b86-12bb97331649.png

圖4

·Pin30:ALE/當(dāng)訪問外部程序器時,ALE(地址鎖存)的輸出用于鎖存地址的低位字節(jié)。而訪問內(nèi)部程序存儲器時,ALE端將有一個1/6時鐘頻率的正脈沖信號,這個信號可以用于識別單片機(jī)是否工作,也可以當(dāng)作一個時鐘向外輸出。更有一個特點(diǎn),當(dāng)訪問外部程序存儲器,ALE會跳過一個脈沖。

如果單片機(jī)是EPROM,在編程其間,將用于輸入編程脈沖。

·Pin29:當(dāng)訪問外部程序存儲器時,此腳輸出負(fù)脈沖選通信號,PC的16位地址數(shù)據(jù)將出現(xiàn)在P0和P2口上,外部程序存儲器則把指令數(shù)據(jù)放到P0口上,由CPU讀入并執(zhí)行。

·Pin31:EA/Vpp程序存儲器的內(nèi)外部選通線,8051和8751單片機(jī),內(nèi)置有4kB的程序存儲器,當(dāng)EA為高電平并且程序地址小于4kB時,讀取內(nèi)部程序存儲器指令數(shù)據(jù),而超過4kB地址則讀取外部指令數(shù)據(jù)。如EA為低電平,則不管地址大小,一律讀取外部程序存儲器指令。顯然,對內(nèi)部無程序存儲器的8031,EA端必須接地。

在編程時,EA/Vpp腳還需加上21V的編程電壓。

3.2 8255芯片簡介

8255可編程并行接口芯片簡介:

8255可編程并行接口芯片有三個輸入輸出端口,即A口、B口和C口,對應(yīng)于引腳PA7~PA0、PB7~PB0和PC7~PC0。其內(nèi)部還有一個控制寄存器,即控制口。通常A口、B口作為輸入輸出的數(shù)據(jù)端口。C口作為控制或狀態(tài)信息的端口,它在方式字的控制下,可以分成4位的端口,每個端口包含一個4位鎖存器。它們分別與端口A/B配合使用,可以用作控制信號輸出或作為狀態(tài)信號輸入。

8255可編程并行接口芯片方式控制字格式說明:

8255有兩種控制命令字;一個是方式選擇控制字;另一個是C口按位置位/復(fù)位控制字。其中C口按位置位/復(fù)位控制字方式使用較為繁難,說明也較冗長,故在此不作敘述,需要時用戶可自行查找有關(guān)資料。

方式控制字格式說明如表1:

表1

D7 D6 D5 D4 D3 D2 D1 D0

D7:設(shè)定工作方式標(biāo)志,1有效。

D6、D5:A口方式選擇

0 0 —方式0

0 1 —方式1

1 ×—方式2

D4:A口功能(1=輸入,0=輸出)

D3:C口高4位功能 (1=輸入,0=輸出)

D2:B口方式選擇(0=方式0,1=方式1)

D1:B口功能(1=輸入,0=輸出)

D0:C口低4位功能 (1=輸入,0=輸出)

8255可編程并行接口芯片工作方式說明:

方式0:基本輸入/輸出方式。適用于三個端口中的任何一個。每一個端口都可以用作輸入或輸出。輸出可被鎖存,輸入不能鎖存。

方式1:選通輸入/輸出方式。這時A口或B口的8位外設(shè)線用作輸入或輸出,C口的4條線中三條用作數(shù)據(jù)傳輸?shù)穆?lián)絡(luò)信號和中斷請求信號。

方式2:雙向總線方式。只有A口具備雙向總線方式,8位外設(shè)線用作輸入或輸出,此時C口的5條線用作通訊聯(lián)絡(luò)信號和中斷請求信號。

3.3 74LS373簡介

74LS373是一種帶三態(tài)門的8D鎖存器,其管腳示意圖如下示:

0ac08888-46d7-11eb-8b86-12bb97331649.png

其中:1D-8D為8個輸入端。

1Q-8Q為8個輸出端。

LE為數(shù)據(jù)打入端:當(dāng)LE為“1”時,鎖存器輸出

狀態(tài)同輸入狀態(tài);當(dāng)LE由“1”變“0”時,數(shù)據(jù)

打入鎖存器

OE為輸出允許端:當(dāng)OE=0時,三態(tài)門打開;

當(dāng)OE=1時,三態(tài)門關(guān)閉,輸出高阻。

4 系統(tǒng)硬件設(shè)計(jì)

4.1交通管理的方案論證

東西、南北兩干道交于一個十字路口,各干道有一組紅、黃、綠三色的指示燈,指揮車輛和行人安全通行。紅燈亮禁止通行,綠燈亮允許通行。黃燈亮提示人們注意紅、綠燈的狀態(tài)即將切換,且黃燈燃亮?xí)r間為東西、南北兩干道的公共停車時間。設(shè)東西道比南北道的車流量大,指示燈燃亮的方案如表2。

60S 5S 80S 5S ……
東西道 紅燈亮 黃燈亮 綠燈亮 黃燈亮 ……
南北道 綠燈亮 黃燈亮 紅燈亮 黃燈亮 ……

表2

表2說明:

(1)當(dāng)東西方向?yàn)榧t燈,此道車輛禁止通行,東西道行人可通過;南北道為綠燈,此道車輛通過,行人禁止通行。時間為60秒。

(2)黃燈閃爍5秒,警示車輛和行人紅、綠燈的狀態(tài)即將切換。

(3)當(dāng)東西方向?yàn)榫G燈,此道車輛通行;南北方向?yàn)榧t燈,南北道車輛禁止通過,行人通行。時間為80秒。 東西方向車流大 通行時間長。

(4)這樣如上表的時間和紅、綠、黃出現(xiàn)的順序依次出現(xiàn)這樣行人和車輛就能安全暢通的通行。

(5)此表可根據(jù)車流量動態(tài)設(shè)定紅綠燈初始值。

4.2系統(tǒng)硬件設(shè)計(jì)

選用設(shè)備8031單片機(jī)一片選用設(shè)備:8031彈片機(jī)一片,8255并行通用接口芯片一片,74LS07兩片,MAX692‘看門狗’一片,共陰極的七段數(shù)碼管兩個雙向晶閘管若干,7805三端穩(wěn)壓電源一個,紅、黃、綠交通燈各兩個,開關(guān)鍵盤、連線若干。

4.2.1 系統(tǒng)總框圖如下:

0af4217a-46d7-11eb-8b86-12bb97331649.jpg

圖6

4.2.2 交通燈硬件線路圖

0b2f0ad8-46d7-11eb-8b86-12bb97331649.jpg

4.2.3 系統(tǒng)工作原理

(1)開關(guān)鍵盤輸入交通燈初始時間,通過8051單片機(jī)P1輸入到系統(tǒng)

(2)由8051單片機(jī)的定時器每秒鐘通過P0口向8255的數(shù)據(jù)口送信息,由8255的PA口顯示紅、綠、黃燈的燃亮情況;由8255的PC口顯示每個燈的燃亮?xí)r間。

(3)8051通過 設(shè)置 各個信號等的燃亮?xí)r間、通過8031設(shè)置,綠、紅時間分別為60秒、80秒循環(huán)由8051的P0口向8255的數(shù)據(jù)口輸出。

(4) 通過8051單片機(jī)的P3.0位來控制系統(tǒng)是工作或設(shè)置初值,當(dāng).牌位0就對系統(tǒng)進(jìn)行初始化,為1系統(tǒng)就開始工作。

(5)紅燈倒計(jì)時時間,當(dāng)有車輛闖紅燈時,啟動蜂鳴器進(jìn)行報(bào)警,3S后然后恢復(fù)正常。

(6)增加每次綠燈時間車流量檢測的功能,并且通過查詢P2.0端口的電平是否為低,開關(guān)按下為低電平,雙位數(shù)碼管顯示車流量,直到下一次綠燈時間重新記入。

(7)綠燈時間倒計(jì)時完畢,重新循環(huán)。

5.控制器的軟件設(shè)計(jì)

5.1每秒鐘的設(shè)定

延時方法可以有兩種一中是利用MCS-51內(nèi)部定時器才生溢出中斷來確定1秒的時間,另一種是采用軟延時的方法。

5.2計(jì)數(shù)器硬件延時

5.2.1 計(jì)數(shù)器初值計(jì)算

定時器工作時必須給計(jì)數(shù)器送計(jì)數(shù)器初值,這個值是送到TH和TL中的。他是以加法記數(shù)的,并能從全1到全0時自動產(chǎn)生溢出中斷請求。因此,我們可以把計(jì)數(shù)器記滿為零所需的計(jì)數(shù)值設(shè)定為C和計(jì)數(shù)初值設(shè)定為TC 可得到如下計(jì)算通式:

TC=M-C

式中,M為計(jì)數(shù)器摸值,該值和計(jì)數(shù)器工作方式有關(guān)。在方式0時M為213 ;在方式1時M的值為216;在方式2和3為28

5.2.2 計(jì)算公式

T=(M-TC)T計(jì)數(shù)

或TC=M-T/T計(jì)數(shù)

T計(jì)數(shù)是單片機(jī)時鐘周期TCLK的12倍;TC為定時初值

如單片機(jī)的主脈沖頻率為TCLK12MHZ,經(jīng)過12分頻

方式0TMAX=213*1微秒=8.192毫秒

方式1TMAX=216*1微秒=65.536毫秒

顯然1秒鐘已經(jīng)超過了計(jì)數(shù)器的最大定時間,所以我們只有采用定時器和軟件相結(jié)合的辦法才能解決這個問題.

5.2.3 1秒的方法

我們采用在主程序中設(shè)定一個初值為20的軟件計(jì)數(shù)器和使T0定時50毫秒.這樣每當(dāng)T0到50毫秒時CPU就響應(yīng)它的溢出中斷請求,進(jìn)入他的中斷服務(wù)子程序。在中斷服務(wù)子程序中,CPU先使軟件計(jì)數(shù)器減1,然后判斷它是否為零。為零表示1秒已到可以返回到輸出時間顯示程序。

5.2.4相應(yīng)程序代碼

(1)主程序

定時器需定時50毫秒,故T0工作于方式1。初值:

TC=M-T/T計(jì)數(shù)=216-50ms/1us=15536=3CBOH

ORG 1000H

START: MOV TMOD, #01H ; 令TO為定時器方式1

MOV TH0, #3CH ;裝入定時器初值

MOV TL0, #BOH;

MOV IE,#82H ;開T0中斷

SEBT TRO;啟動T0計(jì)數(shù)器

MOV RO,#14H;軟件計(jì)數(shù)器賦初值

LOOP:SJMP $;等待中斷

(2)中斷服務(wù)子程序

ORG000BH

AJMPBRT0

ORG00BH

BRTO:DJNZ R0,NEXT

AJMP TIME ; 跳轉(zhuǎn)到時間及信號燈顯示子程序

DJNZ:MOVRO,#14H;恢復(fù)R0值

MOV TH0, #3CH ;重裝入定時器初值

MOV TL0, #BOH;

MOV IE,#82H

RET1

END

5.3 軟件延時

MCS-51的工作頻率為2-12MHZ,我們選用的8031單片機(jī)的工作頻率為6MHZ。機(jī)器周期與主頻有關(guān),機(jī)器周期是主頻的12倍,所以一個機(jī)器周期的時間為12*(1/6M)=2us。我們可以知道具體每條指令的周期數(shù),這樣我們就可以通過指令的執(zhí)行條數(shù)來確定1秒的時間。

具體的延時程序分析:

DELAY:MOV R4,#08H 延時1秒子程序

DE2:LCALL DELAY1

DJNZ R4,DE2

RET

DELAY1:MOV R6,#0 延時125ms 子程序

MOV R5,#0

DE1: DJNZ R5,$

DJNZ R6,DE1

RET

MOV RN,#DATA 字節(jié)數(shù)數(shù)為2 機(jī)器周期數(shù)為1

所以此指令的執(zhí)行時間為2ms

DELAY1 為一個雙重循壞 循環(huán)次數(shù)為256*256=65536 所以延時時間=65536*2=131072us 約為125us

DELAY R4設(shè)置的初值為8 主延時程序循環(huán)8次,所以125us*8= 1秒

由于單片機(jī)的運(yùn)行速度很快其他的指令執(zhí)行時間可以忽略不計(jì)。

5.4 時間及信號燈的顯示

5.4.1 8051并行口的擴(kuò)展

8051雖然有4個8位I/O端口,但真正能提供借用的只有P1口,因?yàn)镻2和P0口通常用于傳送外部傳送地址和數(shù)據(jù),P3口也有它的第二功能。因此,8031通常需要擴(kuò)展。由于我們用外部輸入設(shè)定紅綠燈倒計(jì)時初值、數(shù)碼管的輸出顯示、紅綠黃信號燈的顯示都要用到一個I/O端口,顯然8031的端口是不夠,需要擴(kuò)展。

擴(kuò)展的方法有兩種:(1)借用外部RAM地址來擴(kuò)展I/O端口;(2)采用I/O接口新片來擴(kuò)充。我們用8255并行接口信片來擴(kuò)展I/O端口。

5.4.2顯示原理:

當(dāng)定時器定時為1秒,時程序跳轉(zhuǎn)到時間顯示及信號燈顯示子程序,它將依次顯示信號燈時間 ,同時一直顯示信號燈的顏色,這時在返回定時子程序定時一秒,在顯示黃燈的下一個時間,這樣依次把所有的燈色的時間顯示完后在重新給時間計(jì)數(shù)器賦初值 ,重新進(jìn)入循環(huán)。

5.4.38255PA口輸出信號接信號燈:

由于發(fā)光二極管為共陽極接法,輸出端口為低電平,對應(yīng)的二極管發(fā)光,所以可以用置位方法點(diǎn)亮紅,綠,黃發(fā)光二極管。

5.4.4 8255輸出信號與數(shù)碼管的連接:

LED 燈的顯示原理:通過同名管腳上所加電平的高低來控制發(fā)光二極管是否點(diǎn)量而顯示不同的字形如 SP,g,f,e,d,c,b,a管角上加上7FH所以SP上為0伏,不亮其余為TTL高電平,全亮則顯示為8

采用共陰級連接:

其中PC0PB0-a,

PC1PB1-b,

PC2PB2-c,

PC3PB3-d,

PC4PB4-e,

PC5PB5-f,

PC6PB6-g

PC7PB7 -SP接地

顯示數(shù)值 dop g f e d c b a 驅(qū)動代碼(16進(jìn)制)
0 0 0 1 1 1 1 1 1 3FH
1 0 0 0 0 0 1 1 0 06H
2 0 1 0 1 1 0 1 1 5BH
3 0 1 0 0 1 1 1 1 4FH
4 0 1 1 0 0 1 1 0 66H
5 0 1 1 0 1 1 0 0 6DH
6 0 1 1 1 1 1 0 0 7DH
7 0 0 0 0 0 1 1 1 07H
8 0 1 1 1 1 1 1 1 7FH

表3 驅(qū)動代碼表

5.4.5 8255與8051的連接:

用8051的P0 口的 p0.7 連接8255的片選信號cs 我們用8031的地址采用全譯碼方式,當(dāng)p0.7 =0 時片選有效, 其他無效, p0.1 p0.1 用于選擇8255端口

P0.7 p0.6 p0.5 p0.4 p0.3 p0.2 P0.1 P0.0

A7 A6 A5 A4 A3 A2 A1 A0

1 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是分時對8255和儲存器進(jìn)行訪問所以8051的P0口不會發(fā)生沖突

5.5 程序設(shè)計(jì)

5.5.1流程圖如圖所示

0b840830-46d7-11eb-8b86-12bb97331649.png

圖8

0bcdd398-46d7-11eb-8b86-12bb97331649.png

圖9 程序流程圖

5.5.2 程序源代碼

ORG 0000H ;主程序的入口地址

LJMP MAIN ;跳轉(zhuǎn)到主程序的開始處

ORG 0003H ;外部中斷0的中斷程序入口地址

ORG 000BH ;定時器0的中斷程序入口地址

LJMP T0_INT ;跳轉(zhuǎn)到中斷服務(wù)程序處

ORG 0013H ;外部中斷1的中斷程序入口地址

MAIN : MOV SP,#50H

MOV IE,#8EH ;CPU開中斷,允許T0中斷,T1中斷和外部中斷1中斷

MOV TMOD,#51H ;設(shè)置T1為計(jì)數(shù)方式,T0為定時方式,且都工作于模式1

MOV TH1,#00H ;T1計(jì)數(shù)器清零

MOV TL1,#00H

SETB TR1 ;啟動T1計(jì)時器

SETB EX1 ;允許INT1中斷

SETB IT1 ;選擇邊沿觸發(fā)方式

MOV DPTR ,#0003H

MOV A, #80H ;給8255賦初值,8255工作于方式0

MOVX @DPTR, A

AGAIN: JB P3.1,N0 ;判斷是否要設(shè)定東西方向紅綠燈時間的初值,若P3.1為1則跳轉(zhuǎn)

MOV A,P1

JB P1.7,RED ;判斷P1.7是否為1,若為1則設(shè)定紅燈時間,否則設(shè)定綠燈時間

MOV R0,#00H ;R0清零

MOV R0,A ;存入東西方向綠燈初始時間

MOV R3,A

LCALL DISP1

LCALL DELAY

AJMP AGAIN

RED: MOV A,P1

ANL A,#7FH ;P1.7置0

MOV R7,#00H ;R7清零

MOV R7,A ;存入東西方向紅燈初始時間

MOV R3,A

LCALL DISP1

LCALL DELAY

AJMP AGAIN

;-------------------------------------------

N0: SETB TR0 ;啟動T0計(jì)時器

MOV 76H,R7 ;紅燈時間存入76H

N00: MOV A,76H ;東西方向禁止,南北方向通行

MOV R3,A

MOV DPTR,#0000H ;置8255A口,東西方向紅燈亮,南北方向綠燈亮

MOV A,#0DDH

MOVX @DPTR, A

N01: JB P2.0,B0

N02: SETB P3.0

CJNE R3,#00H,N01 ;比較R3中的值是否為0,不為0轉(zhuǎn)到當(dāng)前指令處執(zhí)行

;------黃燈閃爍5秒程序------

N1: SETB P3.0

MOV R3,#05H

MOV DPTR,#0000H ;置8255A口,東西,南北方向黃燈亮

MOV A,#0D4H

MOVX @DPTR,A

N11: MOV R4,#00H

N12: CJNE R4,#7DH,$ ;黃燈持續(xù)亮0.5秒

N13: MOV DPTR,#0000H ;置8255A口,南北方向黃燈滅

MOV A,#0DDH

MOVX @DPTR,A

N14: MOV R4,#00H

CJNE R4,#7DH,$ ;黃燈持續(xù)滅0.5秒

CJNE R3,#00H,N1 ;閃爍時間達(dá)5秒則退出

;------------------------------------------------------------

N2: MOV R7,#00H

MOV A,R0 ;東西通行,南北禁止

MOV R3,A

MOV DPTR,#0000H ;置8255A口,東西方向綠燈亮,南北方向紅燈亮

MOV A,#0EBH

MOVX @DPTR,A

N21: JB P2.0,T03

N22: CJNE R3,#00H,N21

;------黃燈閃爍5秒程序------

N3: MOV R3,#05H

MOV DPTR,#0000H ;置8255A口,東西,南北方向黃燈亮

MOV A,#0E2H

MOVX @DPTR,A

N31: MOV R4,#00H

CJNE R4,#7DH,$ ;黃燈持續(xù)亮0.5秒

N32: MOV DPTR,#0000H ;置8255A口,南北方向黃燈滅

MOV A,#0EBH

MOVX @DPTR,A

N33: MOV R4,#00H

CJNE R4,#7DH,$ ;黃燈持續(xù)滅0.5秒

CJNE R3,#00H,N3 ;閃爍時間達(dá)5秒則退出

SJMP N00

;------闖紅燈報(bào)警程序------

B0: MOV R2,#03H ;報(bào)警持續(xù)時間3秒

B01: MOV A,R3

JZ N1 ;若倒計(jì)時完畢,不再報(bào)警

CLR P3.0 ;報(bào)警

CJNE R2,#00H,B01 ;判斷3秒是否結(jié)束

SJMP N02

;------1秒延時子程序-------

N7: RETI

T0_INT:MOV TL0,#9AH ;給定時器T0送定時10ms的初值

MOV TH0,#0F1H

INC R4

INC R5

CJNE R5,#0FAH,T01 ;判斷延時是否夠一秒,不夠則調(diào)用顯示子程序

MOV R5,#00H ;R5清零

DEC R3 ;倒計(jì)時初值減一

DEC R2 ;報(bào)警初值減一

T01: ACALL DISP ;調(diào)用顯示子程序

RETI ;中斷返回

;------顯示子程序------

DISP: JNB P2.4,T02

DISP1: MOV B,#0AH

MOV A,R3 ;R3中值二轉(zhuǎn)十顯示轉(zhuǎn)換

DIV AB

MOV 79H,A

MOV 7AH,B

DIS: MOV A,79H ;顯示十位

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV DPTR,#0002H

MOVX @DPTR,A

MOV DPTR,#0001H

MOV A,#0F7H

MOVX @DPTR,A

LCALL DELAY

DS2: MOV A,7AH ;顯示個位

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV DPTR,#0002H

MOVX @DPTR,A

MOV DPTR,#0001H

MOV A,#0FBH

MOVX @DPTR,A

RET

;------東西方向車流量檢測程序------

T03: MOV A,R3

SUBB A,#00H ;若綠燈倒計(jì)時完畢,不再檢測車流量

JZ N3

JB P2.0,T03

INC R7

CJNE R7,#64H,E1

MOV R7,#00H ;中斷到100次則清零

E1: SJMP N22

;------東西方向車流量顯示程序------

T02: MOV B,#0AH

MOV A,R7 ;R7中值二轉(zhuǎn)十顯示轉(zhuǎn)換

DIV AB

MOV 79H,A

MOV 7AH,B

DIS3: MOV A,79H ;顯示十位

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV DPTR,#0002H

MOVX @DPTR,A

MOV DPTR,#0001H

MOV A,#0F7H

MOVX @DPTR,A

LCALL DELAY

DS4: MOV A,7AH ;顯示個位

MOV DPTR,#TAB

MOVC A,@A+DPTR

MOV DPTR,#0002H

MOVX @DPTR,A

MOV DPTR,#0001H

MOV A,#0FBH

MOVX @DPTR,A

LJMP N7

;------延時4MS子程序----------

DELAY: MOV R1,#0AH

LOOP: MOV R6,#64H

NOP

LOOP1: DJNZ R6,LOOP1

DJNZ R1,LOOP

RET

;------字符表------

TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

END

6 結(jié)論

本系統(tǒng)就是充分利用了8051和8255芯片的I/O引腳。系統(tǒng)統(tǒng)采用MSC-51系列單片機(jī)Intel8051和可編程并行I/O接口芯片8255A為中心器件來設(shè)計(jì)交通燈控制器,實(shí)現(xiàn)了能根據(jù)實(shí)際車流量通過8031芯片的P1口設(shè)置紅、綠燈燃亮?xí)r間的功能;紅綠燈循環(huán)點(diǎn)亮,倒計(jì)時剩5秒時黃燈閃爍警示(交通燈信號通過PA口輸出,顯示時間直接通過8255的PC口輸出至雙位數(shù)碼管);車輛闖紅燈報(bào)警;綠燈時間可檢測車流量并可通過雙位數(shù)碼管顯示。。系統(tǒng)不足之處不能控制車的左、右轉(zhuǎn)、以及自動根據(jù)車流改變紅綠燈時間等。這是由于本身地理位子以及車流量情況所定,如果有需要可以設(shè)計(jì)擴(kuò)充原系統(tǒng)來實(shí)現(xiàn)。

通過這次畢業(yè)設(shè)計(jì),使我得到了一次用專業(yè)知識、專業(yè)技能分析和解決問題全面系統(tǒng)的鍛煉。使我在單片機(jī)的基本原理、單片機(jī)應(yīng)用系統(tǒng)開發(fā)過程,以及在常用編程設(shè)計(jì)思路技巧(特別是匯編語言)的掌握方面都能向前邁了一大步,為日后成為合格的應(yīng)用型人才打下良好的基礎(chǔ)。

責(zé)任編輯:lq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6040

    文章

    44587

    瀏覽量

    636785
  • 存儲器
    +關(guān)注

    關(guān)注

    38

    文章

    7517

    瀏覽量

    164067
  • 交通燈
    +關(guān)注

    關(guān)注

    13

    文章

    324

    瀏覽量

    39793

原文標(biāo)題:基 于 單 片 機(jī) 的 交 通 燈 設(shè) 計(jì)

文章出處:【微信號:A1411464185,微信公眾號:multisim】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    51單片機(jī)pwm和spwm

    51單片機(jī)pwm
    發(fā)表于 01-08 15:54 ?1次下載

    51單片機(jī)交通燈仿真

    交通燈直行控制,倒計(jì)時時間可調(diào)。資料包含程序源碼和proteus8.6仿真
    發(fā)表于 11-28 14:15 ?13次下載

    基于51單片機(jī)的遙控開關(guān)仿真(雙機(jī)通信)

    具體實(shí)現(xiàn)功能由51單片機(jī)+獨(dú)立按鍵+繼電器+LED等構(gòu)成。實(shí)現(xiàn)功能:(1)本仿真設(shè)計(jì)的是一款遙控開關(guān),采用51單片機(jī)進(jìn)行遙控器與主機(jī)的設(shè)計(jì)
    的頭像 發(fā)表于 10-22 14:12 ?339次閱讀
    基于<b class='flag-5'>51</b><b class='flag-5'>單片機(jī)</b>的遙控開關(guān)仿真(雙機(jī)通信)

    51單片機(jī)驅(qū)動

    電子發(fā)燒友網(wǎng)站提供《51單片機(jī)驅(qū)動.exe》資料免費(fèi)下載
    發(fā)表于 09-20 11:46 ?5次下載

    單片機(jī)的三種總線結(jié)構(gòu)

    單片機(jī)的三種總線結(jié)構(gòu)包括地址總線(Address Bus, AB)、數(shù)據(jù)總線(Data Bus, DB)和控制總線(Control Bus, CB)。這三種總線在單片機(jī)內(nèi)部及與外部設(shè)備之間的數(shù)據(jù)傳輸
    的頭像 發(fā)表于 09-10 11:32 ?3467次閱讀

    單片機(jī)燒錄程序的基本步驟是什么

    單片機(jī)燒錄程序是單片機(jī)開發(fā)過程中非常重要的一步,它涉及到將編寫好的程序代碼通過一定的方式傳輸?shù)?b class='flag-5'>單片機(jī)內(nèi)部的存儲器中,使單片機(jī)能夠按照預(yù)定的邏輯執(zhí)行任務(wù)。 一、硬件準(zhǔn)備
    的頭像 發(fā)表于 09-02 09:47 ?1226次閱讀

    單片機(jī)引腳懸空是什么電平

    單片機(jī)引腳懸空是指單片機(jī)的I/O引腳在沒有連接任何外部電路的情況下,引腳的電平狀態(tài)。懸空引腳的電平狀態(tài)取決于單片機(jī)內(nèi)部結(jié)構(gòu)和外部環(huán)境因素。 單片機(jī)
    的頭像 發(fā)表于 08-28 09:51 ?2292次閱讀

    國產(chǎn)單片機(jī)(MCU)崛起 —— 51系列

    一、51系列單片機(jī)的命名由來51系列單片機(jī)的命名由來與它的設(shè)計(jì)和開發(fā)歷史相關(guān)。這個系列的單片機(jī)主要由Intel的8051微控制器發(fā)展而來,后
    的頭像 發(fā)表于 08-14 08:39 ?2345次閱讀
    國產(chǎn)<b class='flag-5'>單片機(jī)</b>(MCU)崛起 —— <b class='flag-5'>51</b>系列

    基于51單片機(jī)兩路紅黃綠交通燈電路圖及程序

    本資源內(nèi)容概要:? ? ? ?這是基于51單片機(jī)兩路紅黃綠交通燈電路圖及程序設(shè)計(jì)包含了電路圖源文件(Altiumdesigner軟件打開)、C語言程序源代碼(keil軟件打開)。本資源適合人群
    發(fā)表于 06-24 17:32 ?2次下載

    基于51單片機(jī)四路紅黃綠交通燈電路圖及程序

    本資源內(nèi)容概要:? ? ? ?這是基于51單片機(jī)四路紅黃綠交通燈電路圖及程序設(shè)計(jì)包含了電路圖源文件(Altiumdesigner軟件打開)、C語言程序源代碼(keil軟件打開)。本資源適合人群
    發(fā)表于 06-24 17:31 ?2次下載

    基于STM32單片機(jī)交通燈系統(tǒng)設(shè)計(jì)

    本次設(shè)計(jì)的智能交通燈控制系統(tǒng)設(shè)計(jì)有硬件數(shù)據(jù)采集控制和上位機(jī)監(jiān)控兩部分,通過單片機(jī)作為核心控制器,控制紅外傳感器可以對十字路口東南西北的車流量進(jìn)行監(jiān)測,設(shè)計(jì)有顯示的功能,可以將監(jiān)測到的流量顯示,設(shè)計(jì)有
    的頭像 發(fā)表于 06-24 09:49 ?4371次閱讀
    基于STM32<b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>交通燈</b>系統(tǒng)設(shè)計(jì)

    干貨!89C51單片機(jī)模擬交通燈控制,原理圖,仿真程序等完整資料

    和實(shí)物是一樣的。因此,實(shí)物和仿真是一一對應(yīng)的! 加載“基于畢業(yè)51單片機(jī)交通燈設(shè)計(jì).hex”文件到單片機(jī),點(diǎn)擊運(yùn)行,交通燈開始工作(二極管
    發(fā)表于 03-14 18:23

    單片機(jī)交通燈程序設(shè)計(jì)中斷系統(tǒng)

    隨著社會的發(fā)展,交通問題逐漸突出,特別是城市交通問題愈加嚴(yán)重。為了更好地管理和調(diào)控交通,提高交通流暢度和安全性,交通燈系統(tǒng)成為了城市
    的頭像 發(fā)表于 01-24 16:16 ?1154次閱讀

    基于單片機(jī)控制的交通燈設(shè)計(jì)

    本課程設(shè)計(jì)是在學(xué)完單片機(jī)原理及課程之后綜合利用所學(xué)單片機(jī)知識完成一個單片機(jī)應(yīng)用系統(tǒng)設(shè)計(jì)并在實(shí)驗(yàn)室實(shí)現(xiàn)。
    的頭像 發(fā)表于 01-22 15:31 ?2275次閱讀
    基于<b class='flag-5'>單片機(jī)</b>控制的<b class='flag-5'>交通燈</b>設(shè)計(jì)

    單片機(jī)內(nèi)部時鐘電路的工作原理

    單片機(jī)時鐘電路是一種用于產(chǎn)生穩(wěn)定時鐘信號的電路,它是單片機(jī)正常工作的基礎(chǔ),決定了單片機(jī)的運(yùn)行速度和性能。具體的設(shè)計(jì)和配置取決于單片機(jī)的型號和應(yīng)用需求。
    發(fā)表于 01-16 15:33 ?6561次閱讀
    <b class='flag-5'>單片機(jī)內(nèi)部</b>時鐘電路的工作原理