畢業(yè)設(shè)計(jì)---單片機(jī)模擬交通燈的設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩34頁(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、<p>  單片機(jī)模擬交通燈的設(shè)計(jì)</p><p><b>  摘 要</b></p><p>  本設(shè)計(jì)是依據(jù)數(shù)字集成電路、單片機(jī)技術(shù)為基礎(chǔ),采用MCS-51系列單片機(jī)AT89C51為控制器件結(jié)合LED數(shù)碼顯示電路、發(fā)光二極管指示電路組成交通燈硬件電路,利用單片機(jī)內(nèi)部定時(shí)中斷溢出產(chǎn)生1s實(shí)現(xiàn)倒計(jì)時(shí)。系統(tǒng)能夠完成25s倒計(jì)時(shí)顯示,在倒計(jì)時(shí)到5s時(shí)綠燈開(kāi)

2、始閃爍以提醒過(guò)往的車輛及行人安全通行,倒計(jì)時(shí)到2s時(shí)黃燈亮。</p><p>  關(guān)鍵詞:?jiǎn)纹瑱C(jī);AT89C51;交通燈</p><p><b>  ABSTRACT</b></p><p>  This design is based on digital integrated circuits, microcontroller techno

3、logy, the use of MCS-51 series microcontroller AT89C51 devices for the control circuit with LED digital display, LED traffic lights indicating hardware circuit, the use of internal microcontroller timer interrupt overflo

4、w 1s achieved countdown. System can accomplish the 25s countdown, the countdown to when the green light starts flashing 5s to alert passing vehicles and pedestrians safe passage, the countdown to when the </p><

5、;p>  Keywords: SCM;AT89C51;Traffic lights </p><p><b>  目 錄</b></p><p><b>  1緒論1</b></p><p><b>  1.1研究背景1</b></p><p>  1.2單片機(jī)

6、的概述1</p><p>  1.3單片機(jī)的應(yīng)用2</p><p>  1.4單片機(jī)的發(fā)展史2</p><p><b>  2系統(tǒng)硬件設(shè)計(jì)3</b></p><p><b>  2.1系統(tǒng)原理3</b></p><p>  2.2 AT89C51的介紹4</

7、p><p>  2.3 AT89C51的引腳說(shuō)明5</p><p><b>  2.4時(shí)鐘電路7</b></p><p><b>  2.5復(fù)位電路7</b></p><p>  2.6單片機(jī)的最小系統(tǒng)構(gòu)成8</p><p>  2.7 7405 TTL 集電極開(kāi)路六反相

8、器8</p><p><b>  2.8指示電路8</b></p><p>  2.9 LED數(shù)碼顯示器9</p><p>  3系統(tǒng)軟件設(shè)計(jì)11</p><p>  3.1系統(tǒng)整體程序流程圖11</p><p>  3.2設(shè)置定時(shí),顯示初始化11</p><p&g

9、t;  3.3處理狀態(tài)、倒計(jì)時(shí)顯示13</p><p>  3.4路口紅綠燈狀態(tài)子程序14</p><p>  3.5 LED顯示子程序14</p><p><b>  4系統(tǒng)仿真16</b></p><p>  4.1仿真平臺(tái)介紹16</p><p>  4.1.1 Keil軟件介紹

10、16</p><p>  4.1.2 Proteus仿真軟件介紹17</p><p>  4.2系統(tǒng)硬件實(shí)現(xiàn)19</p><p>  4.3系統(tǒng)仿真及分析19</p><p><b>  5總結(jié)22</b></p><p><b>  參考文獻(xiàn)23</b></

11、p><p><b>  附 錄24</b></p><p><b>  致 謝30</b></p><p><b>  1緒論</b></p><p><b>  1.1研究背景</b></p><p>  當(dāng)今,紅綠燈

12、安裝在各個(gè)道口上,已經(jīng)成為疏導(dǎo)交通車輛最常見(jiàn)和最有效的手段。但這一技術(shù)在19世紀(jì)就已出現(xiàn)了。</p><p>  1858年,在英國(guó)倫敦主要街頭安裝了以燃煤氣為光源的紅,藍(lán)兩色的機(jī)械扳手式信號(hào)燈,用以指揮馬車通行。這是世界上最早的交通信號(hào)燈。1868年,英國(guó)機(jī)械工程師納伊特在倫敦威斯敏斯特區(qū)的議會(huì)大廈前的廣場(chǎng)上,安裝了世界上最早的煤氣紅綠燈。它由紅綠兩以旋轉(zhuǎn)式方形玻璃提燈組成,紅色表示“停止”,綠色表示“注意”。

13、1869年1月2日,煤氣燈爆炸,使警察受傷,遂被取消。</p><p>  電氣啟動(dòng)的紅綠燈出現(xiàn)在美國(guó),這種紅綠燈由紅綠黃三色圓形的投光器組成,1914年始安裝于紐約市5號(hào)大街的一座高塔上。紅燈亮表示“停止”,綠燈亮表示“通行”。</p><p>  1918年,又出現(xiàn)了帶控制的紅綠燈和紅外線紅綠燈。帶控制的紅綠燈,一種是把壓力探測(cè)器安在地下,車輛一接近紅燈便變?yōu)榫G燈;另一種是用擴(kuò)音器來(lái)啟

14、動(dòng)紅綠燈,司機(jī)遇紅燈時(shí)按一下嗽叭,就使紅燈變?yōu)榫G燈。紅外線紅綠燈當(dāng)行人踏上對(duì)壓力敏感的路面時(shí),它就能察覺(jué)到有人要過(guò)馬路。紅外光束能把信號(hào)燈的紅燈延長(zhǎng)一段時(shí)間,推遲汽車放行,以免發(fā)生交通事故。</p><p>  交通信號(hào)燈的出現(xiàn),使交通得以有效管制,對(duì)于疏導(dǎo)交通流量、提高道路通行能力,減少交通事故有明顯效果。</p><p>  一般的交通燈系統(tǒng)采用固定周期換燈的控制方式,路口的交通燈大多

15、只有紅綠黃指示燈,行人在過(guò)路口時(shí),會(huì)出現(xiàn)走到路中央綠燈跳變?yōu)榧t燈的情況。為符合以人為本的設(shè)計(jì)理念,我們可在路口安裝與信號(hào)燈同步的倒記時(shí)顯示器,行人和自行車可根據(jù)綠燈結(jié)束的時(shí)間決定是否過(guò)路口。設(shè)計(jì)中我們用AT89C51 單片機(jī)的并行口接發(fā)光二極管,模擬交通燈的變化規(guī)律。8個(gè)數(shù)碼管用來(lái)顯示秒值,東、西、南、北各兩個(gè)。12個(gè)發(fā)光二極管,東、西、南、北各三個(gè),分為紅、綠、黃三種顏色。</p><p><b> 

16、 1.2單片機(jī)的概述</b></p><p>  單片機(jī)指集成在一個(gè)芯片上的微型計(jì)算機(jī),也就是把組成微型計(jì)算機(jī)的各種功能部件,包括CPU(Central Processing Unit)、隨機(jī)存取存儲(chǔ)器RAM(Random Access Memory)、只讀存儲(chǔ)器ROM(Read-Only Memory)、基本輸入/輸出(Input/Output)接口電路、定時(shí)器/計(jì)數(shù)器等部件都制作在一塊集成芯片上,

17、構(gòu)成一個(gè)完整的微型計(jì)算機(jī),從而實(shí)現(xiàn)微型計(jì)算機(jī)的基本功能。</p><p><b>  1.3單片機(jī)的應(yīng)用</b></p><p><b> ?。?)智能儀器儀表</b></p><p>  現(xiàn)代儀器儀表采用單片機(jī),不僅提高了儀器儀表使用功能和精度,使儀器儀表智能化而且簡(jiǎn)化了其結(jié)構(gòu),減小了體積,降低了成本。</p>

18、;<p><b> ?。?)工業(yè)控制</b></p><p>  單片機(jī)還可以用于工業(yè)控制器對(duì)各種物理量的采集及控制。例如,電流、溫度、電壓、流量等等物理參數(shù)的采集和控制都可以利用單片機(jī)實(shí)現(xiàn),從而提高生產(chǎn)效率和產(chǎn)品質(zhì)量。</p><p><b> ?。?)家用電器</b></p><p>  現(xiàn)在家用電器都向

19、智能化發(fā)展,單片機(jī)是家用電器智能化的大腦和心臟。例如洗衣機(jī)、空調(diào)、電冰箱、電視機(jī)等。</p><p> ?。?)信息和通信產(chǎn)品</p><p>  信息和通信產(chǎn)品的自動(dòng)化和智能化也離不開(kāi)單片機(jī)的參與。典型產(chǎn)品如:打印機(jī)、傳真機(jī)、考勤機(jī)、電話機(jī)等。</p><p>  1.4單片機(jī)的發(fā)展史</p><p>  單片機(jī)技術(shù)的發(fā)展十分迅速,大致可分

20、為4個(gè)階段:</p><p>  第一階段(1976~1978):低性能單片機(jī)的探索階段。以Intel公司的MCS-48為代表,采用了單片結(jié)構(gòu),即在一塊芯片內(nèi)含有8位CPU、定時(shí)器/計(jì)數(shù)器、并行I/O、RAM和ROM等。主要用于工業(yè)領(lǐng)域。</p><p>  第二階段(1978~1982):高性能單片機(jī)階段。這一類單片機(jī)帶有串行I/O口,8位數(shù)據(jù)線、16位地址線可以尋址的范圍達(dá)到64KB,

21、有控制總線、較豐富的指令系統(tǒng)等。這類單片機(jī)的應(yīng)用范圍較廣,并在不斷地改進(jìn)和發(fā)展。</p><p>  第三階段(1982~1990):16位單片機(jī)階段。16位單片機(jī)除CPU為16位外,片內(nèi)RAM和ROM容量進(jìn)一步增大,實(shí)時(shí)處理能力更強(qiáng),體現(xiàn)了微控制器的特征。</p><p>  第四階段(1990~ ):微控制器的全面發(fā)展的階段。各公司的產(chǎn)品在盡量兼容的同時(shí)向高速、強(qiáng)運(yùn)算能力、尋址范圍大以

22、及小型廉價(jià)方面發(fā)展。</p><p><b>  2系統(tǒng)硬件設(shè)計(jì)</b></p><p><b>  2.1系統(tǒng)原理</b></p><p>  本設(shè)計(jì)主要采用AT89C51單片機(jī)為核心結(jié)合電源電路、時(shí)鐘電路、復(fù)位電路構(gòu)成單片機(jī)最小系統(tǒng),并與外圍倒計(jì)時(shí)顯示電路和指示電路共同構(gòu)成單片機(jī)模擬交通燈系統(tǒng)。其系統(tǒng)整體框圖如下圖2-

23、1所示。</p><p>  圖2-1 系統(tǒng)整體框圖</p><p>  圖2-2 系統(tǒng)原理圖</p><p>  2.2 AT89C51的介紹</p><p>  圖2-3 單片機(jī)內(nèi)部總體結(jié)構(gòu)圖</p><p>  設(shè)計(jì)采用的是Atmel公司的89C51是MCS-51系列單片機(jī)的典型產(chǎn)品,其主要結(jié)構(gòu)包含中央處理

24、器、程序存儲(chǔ)器(ROM)、數(shù)據(jù)存儲(chǔ)器(RAM)、定時(shí)/計(jì)數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線,現(xiàn)在我們分別加以說(shuō)明:</p><p> ?。?)中央處理器(CPU)</p><p>  中央處理器(CPU)是整個(gè)單片機(jī)的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進(jìn)制數(shù)據(jù)或代碼,CPU負(fù)責(zé)控制、指揮和調(diào)度整個(gè)單元系統(tǒng)協(xié)調(diào)的工作,完成運(yùn)算和控

25、制輸入輸出功能等操作。</p><p> ?。?)內(nèi)部數(shù)據(jù)存儲(chǔ)器</p><p>  內(nèi)部數(shù)據(jù)存儲(chǔ)器包括RAM(128*8)和RAM地址寄存器,用于存放可讀/寫的數(shù)據(jù)。實(shí)際其幾個(gè)內(nèi)部共有256個(gè)RAM單元,但其中后128個(gè)單元為專用寄存器,能作為普通RAM存儲(chǔ)器供用戶使用的只是前128個(gè)單元。因此,通常所說(shuō)的內(nèi)部數(shù)據(jù)存儲(chǔ)器是指前128個(gè)單元,簡(jiǎn)稱“內(nèi)部RAM”。</p>&l

26、t;p>  (3)內(nèi)部程序存儲(chǔ)器</p><p>  內(nèi)部程序存儲(chǔ)器包括ROM(4K*8)和程序地址寄存器等。AT89C51共有4KB掩膜ROM,用于存放程序和原始數(shù)據(jù),因此稱之為程序存儲(chǔ)器,簡(jiǎn)稱“內(nèi)部ROM”</p><p> ?。?)定時(shí)器/計(jì)數(shù)器</p><p>  由于控制應(yīng)用的需要,89C51內(nèi)部共有兩個(gè)16位的定時(shí)器/計(jì)數(shù)器,用定時(shí)器/計(jì)數(shù)器0和定

27、時(shí)器/計(jì)數(shù)器1表示,用于實(shí)現(xiàn)定時(shí)或計(jì)數(shù)功能,并以其定時(shí)或計(jì)數(shù)結(jié)果對(duì)單片機(jī)進(jìn)行控制。</p><p><b>  (5)并行I/O口</b></p><p>  89C51共有4個(gè)8位I/O口(P0、 P1、P2和P3),以實(shí)現(xiàn)數(shù)據(jù)的并行輸入/輸出。</p><p><b> ?。?)串行口</b></p>&

28、lt;p>  89C51單片機(jī)有一個(gè)全雙工串行口,以實(shí)現(xiàn)單片機(jī)和其他數(shù)據(jù)設(shè)備之間的串行數(shù)據(jù)傳送。該串行口功能較強(qiáng),既可作為全雙工異步通信收發(fā)器使用,也可作為同步移位器使用。</p><p><b> ?。?)中斷控制電路</b></p><p>  89C51的中斷功能較強(qiáng),以滿足控制應(yīng)用的需要。共有5個(gè)中斷源,即外中斷2個(gè),定時(shí)/計(jì)數(shù)中斷2個(gè),串行中斷1個(gè)。全

29、部中斷分為高級(jí)和低級(jí)共兩個(gè)優(yōu)先級(jí)別。</p><p><b> ?。?)時(shí)鐘電路</b></p><p>  89C51芯片內(nèi)部有時(shí)鐘電路,但石英晶體和微調(diào)電容需外接。時(shí)鐘電路為單片機(jī)產(chǎn)生時(shí)鐘脈沖序列。</p><p>  2.3 AT89C51的引腳說(shuō)明</p><p>  圖2-4 AT89C51的引腳圖</

30、p><p>  按其功能可分為電源、時(shí)鐘、控制和I/O接口四大部分:</p><p>  (1)電源引腳 Vcc:電源端,接+5V ;Vss:接地端。</p><p> ?。?)時(shí)鐘引腳XTAL1和XTAL2:當(dāng)使用芯片內(nèi)部時(shí)鐘時(shí),XTAL1和XTAL2用于外接石英晶體諧振器和微調(diào)電容;當(dāng)使用外部時(shí)鐘時(shí),用于接入外部時(shí)鐘脈沖信號(hào)。</p><p>

31、;<b>  (3)控制引腳</b></p><p>  RST/VPD:復(fù)位/掉電保護(hù)信號(hào)輸入端。</p><p>  RST為復(fù)位信號(hào)輸入。Vcc掉電后,此引腳(VPD)可接備用電源,低功耗條件下保證內(nèi)部RAM中的數(shù)據(jù)。</p><p>  ALE/:地址鎖存控制信號(hào)/編程脈沖輸入端</p><p>  ALE為地址

32、鎖存允許。當(dāng)單片機(jī)訪問(wèn)外部存儲(chǔ)器時(shí),該引腳的輸出信號(hào)ALE用于鎖存P0端口的低8位地址。ALE輸出的頻率為時(shí)鐘振蕩頻率的1/6。對(duì)8751單片機(jī)片內(nèi)EPROM編程時(shí),編程脈沖由此引腳接入。</p><p> ?。浩獬绦虼鎯?chǔ)器讀選通有效信號(hào)</p><p>  取指令操作期間,的頻率為振蕩頻率的1/6;但若此期間有訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器的操作時(shí),則有一個(gè)機(jī)器周期中的信號(hào)將不會(huì)出現(xiàn)。</p

33、><p>  /VPP:訪問(wèn)程序存儲(chǔ)器控制信號(hào)/編程電源輸入端</p><p>  當(dāng)=0時(shí)單片機(jī)只訪問(wèn)外部程序存儲(chǔ)器。對(duì)于8031單片機(jī)此引腳必須接地。=1,單片機(jī)訪問(wèn)內(nèi)部程序存儲(chǔ)器。對(duì)于內(nèi)部有程序存儲(chǔ)器的8xx51單片機(jī),此引腳應(yīng)接高電平,但若地址超過(guò)4KB范圍(0FFFH),單片機(jī)將自動(dòng)訪問(wèn)外部程序存儲(chǔ)器。在8751單片機(jī)片內(nèi)EPROM編程期間,此引腳接入21V編程電源Vpp。</

34、p><p><b> ?。?)I/O引腳</b></p><p>  P0.0—P0.7:P0口數(shù)據(jù)/低8位地址復(fù)用總線端口。</p><p>  P1.0—P1.7:P1口靜態(tài)通用端口。</p><p>  P2.0—P2.7:P2口高八位地址總線動(dòng)態(tài)端口。</p><p>  P3.0—P3.7:

35、雙功能靜態(tài)端口,具有第二功能。</p><p>  表2-1 P3口線的第二功能說(shuō)明</p><p><b>  2.4時(shí)鐘電路</b></p><p>  本設(shè)計(jì)采用AT89C51單片機(jī)的內(nèi)部時(shí)鐘方式,在XTAL1和XTAL2引腳上外接定時(shí)元件,內(nèi)部振蕩電路就產(chǎn)生自激振蕩。定時(shí)元件通常石英晶體和電容組成的并聯(lián)諧振回路,晶體振蕩器選擇12MH

36、z,電容采用30pF。</p><p>  圖2-5 時(shí)鐘電路</p><p><b>  2.5復(fù)位電路</b></p><p>  單片機(jī)復(fù)位是使CPU和系統(tǒng)中的其他功能部件都處在一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開(kāi)始工作,例如復(fù)位后PC=0000H,使單片機(jī)從第—個(gè)單元取指令。無(wú)論是在單片機(jī)剛開(kāi)始接上電源時(shí),還是斷電后或者發(fā)生故障后都要復(fù)

37、位,所以我們必須弄清楚MCS-51型單片機(jī)復(fù)位的條件、復(fù)位電路和復(fù)位后狀態(tài)。</p><p>  單片機(jī)復(fù)位的條件是:必須使RST/VPD或RST引腳加上持續(xù)兩個(gè)機(jī)器周期(即24個(gè)振蕩周期)的高電平。例如,若時(shí)鐘頻率為12MHz,每機(jī)器周期為1us,則只需2us以上時(shí)間的高電平,在RST引腳出現(xiàn)高電平后的第二個(gè)機(jī)器周期執(zhí)行復(fù)位。本設(shè)計(jì)所用的復(fù)位電路如圖2-5所示: </p><p> 

38、 圖2-6 復(fù)位電路</p><p>  2.6單片機(jī)的最小系統(tǒng)構(gòu)成</p><p>  單片機(jī)控制系統(tǒng)是由單片機(jī)和外圍電路組成的,用最少的元件組成的單片機(jī)系統(tǒng)被稱為單片機(jī)最小系統(tǒng)。即主要有電源電路、晶振電路、復(fù)位電路構(gòu)成。</p><p>  圖2-7 單片機(jī)最小系統(tǒng)構(gòu)成</p><p>  2.7 7405 TTL 集電極開(kāi)路六反相器

39、 </p><p>  7045為六路反相器其內(nèi)部由6個(gè)與非門組成,在設(shè)計(jì)中7405反相器的輸入端與單片機(jī)的P2.1~P2.6相連,輸出端與LED發(fā)光二極管的負(fù)極相連,以實(shí)現(xiàn)對(duì)不同的狀態(tài)下的LED進(jìn)行控制。例如當(dāng)單片機(jī)的I/O口輸出高電平時(shí),經(jīng)過(guò)7405反相器輸出低電平使該路的LED點(diǎn)亮。</p><p>  圖2-8 7405一路反相</p><p><b

40、>  2.8指示電路</b></p><p>  本設(shè)計(jì)中采用紅、綠、黃三種顏色的發(fā)光二極管各4個(gè)通過(guò)7405反相器與單片機(jī)的P2口的相應(yīng)引腳相連,在不同狀態(tài)下點(diǎn)亮不同的二極管實(shí)現(xiàn)對(duì)道路的控制。</p><p>  發(fā)光二極管是半導(dǎo)體二極管的一種,可以把電能轉(zhuǎn)化成光能,簡(jiǎn)寫為L(zhǎng)ED。發(fā)光二極管與普通二極管一樣是由一個(gè)PN結(jié)組成,也具有單向?qū)щ娦浴.?dāng)給發(fā)光二極管加上正向電壓

41、后,從P區(qū)注入到N區(qū)的空穴和由N區(qū)注入到P區(qū)的電子,在PN結(jié)附近數(shù)微米內(nèi)分別與N區(qū)的電子和P區(qū)的空穴復(fù)合,產(chǎn)生自發(fā)輻射的熒光。不同的半導(dǎo)體材料中電子和空穴所處的能量狀態(tài)不同。當(dāng)電子和空穴復(fù)合時(shí)釋放出的能量多少不同,釋放出的能量越多,則發(fā)出的光的波長(zhǎng)越短。</p><p>  圖2-9 紅、綠、藍(lán)三種顏色的發(fā)光二極管</p><p>  2.9 LED數(shù)碼顯示器</p>&l

42、t;p>  LED是Light Emiting Diode(發(fā)光二極管)的縮寫,發(fā)光二極管是能將電信號(hào)轉(zhuǎn)換為光信號(hào)的發(fā)光器件。由條形發(fā)光二極管組成“8”字形的顯示器,也稱數(shù)碼管。通過(guò)數(shù)碼管中發(fā)光二級(jí)管的亮暗組合,可以顯示多種數(shù)字、字母以及其他符號(hào)。</p><p>  數(shù)碼管在單片機(jī)應(yīng)用系統(tǒng)中主要用于顯示單片機(jī)的輸出數(shù)據(jù)和狀態(tài)等。LED顯示器為發(fā)光二極管構(gòu)成的顯示器件。常用的LED顯示器有兩種供應(yīng)狀態(tài),既共

43、陰極LED與共陽(yáng)極LED。</p><p>  圖2-10 LED數(shù)碼管結(jié)構(gòu)圖</p><p>  LED數(shù)碼管要正常顯示,就要用驅(qū)動(dòng)電路來(lái)驅(qū)動(dòng)數(shù)碼管的各個(gè)段碼,從而顯示出我們要的數(shù)位,因此根據(jù)LED數(shù)碼管的驅(qū)動(dòng)方式的不同,可以分為靜態(tài)式和動(dòng)態(tài)式兩類。</p><p><b>  靜態(tài)顯示驅(qū)動(dòng):</b></p><p>

44、;  靜態(tài)驅(qū)動(dòng)也稱直流驅(qū)動(dòng)。靜態(tài)驅(qū)動(dòng)是指每個(gè)數(shù)碼管的每一個(gè)段碼都由一個(gè)單片機(jī)的I/O口進(jìn)行驅(qū)動(dòng),或者使用如BCD碼二—十進(jìn)位器進(jìn)行驅(qū)動(dòng)。</p><p><b>  動(dòng)態(tài)顯示驅(qū)動(dòng):</b></p><p>  動(dòng)態(tài)驅(qū)動(dòng)是將所有數(shù)碼管的8位段碼"a,b,c,d,e,f,g,dp "的同名端連在一起,另外為每個(gè)數(shù)碼管的公共極COM增加位選通控制電路,位

45、選通由各自獨(dú)立的I/O線控制,當(dāng)單片機(jī)輸出字形碼時(shí),所有數(shù)碼管都接收到相同的字形碼,但究竟是那個(gè)數(shù)碼管會(huì)顯示出字形,取決于單片機(jī)對(duì)位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開(kāi)被選中的數(shù)碼管就會(huì)顯示字符,沒(méi)有選通的數(shù)碼管就不會(huì)亮。</p><p>  在設(shè)計(jì)中我們采用靜態(tài)顯示方式,利用8個(gè)數(shù)碼管每個(gè)方向各兩個(gè)與AT89C51的P1口和P3口相連用來(lái)顯示倒計(jì)時(shí)的十位和個(gè)位。</p>

46、;<p><b>  3系統(tǒng)軟件設(shè)計(jì)</b></p><p>  3.1系統(tǒng)整體程序流程圖</p><p>  圖3-1 系統(tǒng)整體程序流程圖</p><p>  3.2設(shè)置定時(shí),顯示初始化</p><p>  在單片機(jī)應(yīng)用系統(tǒng)中,實(shí)現(xiàn)定時(shí)的方法一般有以下三種:</p><p>  

47、(1)軟件定時(shí):讓計(jì)算機(jī)執(zhí)行一段程序來(lái)進(jìn)行事件延時(shí)。這個(gè)程序段本身沒(méi)有安排其他的執(zhí)行目的,只是利用該程序段執(zhí)行花費(fèi)的一個(gè)固定時(shí)間。通過(guò)適當(dāng)?shù)倪x擇指令和安排循環(huán)次數(shù),可調(diào)節(jié)這段程序執(zhí)行所需花費(fèi)的時(shí)間的長(zhǎng)短。其特點(diǎn)是定時(shí)時(shí)間精確,不需外加硬件電路,但占用CPU時(shí)間。因此軟件定時(shí)的時(shí)間不宜過(guò)長(zhǎng)。</p><p> ?。?)硬件定時(shí):利用硬件電路實(shí)現(xiàn)定時(shí)。其特點(diǎn)是不占用CPU時(shí)間,通過(guò)改變電路元器件參數(shù)來(lái)調(diào)節(jié)定時(shí),但使用

48、不夠靈活方便。對(duì)于時(shí)間較長(zhǎng)的定時(shí),常用硬件電路來(lái)實(shí)現(xiàn)。</p><p> ?。?)可編程定時(shí)器:通過(guò)專用的定時(shí)計(jì)數(shù)器芯片來(lái)實(shí)現(xiàn)。其特點(diǎn)是通過(guò)對(duì)系統(tǒng)時(shí)鐘脈沖進(jìn)行計(jì)數(shù)實(shí)現(xiàn)定時(shí),定時(shí)的時(shí)間可通過(guò)程序的設(shè)定的方法改變,使用靈活方便。也可實(shí)現(xiàn)對(duì)外部脈沖的計(jì)數(shù)功能。</p><p>  當(dāng)定時(shí)計(jì)數(shù)器設(shè)置為計(jì)數(shù)工作方式時(shí),計(jì)數(shù)器對(duì)來(lái)自輸入引腳T0和T1的外部信號(hào)計(jì)數(shù),外部信號(hào)的下降沿將觸發(fā)計(jì)數(shù)。最高檢測(cè)

49、頻率為振蕩頻率的二十四分之一。計(jì)數(shù)器對(duì)外部輸入信號(hào)的占空比沒(méi)有特別的限制,但必須保證輸入信號(hào)的高電平與低電平的持續(xù)時(shí)間在一個(gè)機(jī)器周期以上。</p><p>  當(dāng)設(shè)置了定時(shí)器的工作方式并啟動(dòng)定時(shí)器工作后,定時(shí)器就按照設(shè)定的工作方式獨(dú)立工作,不再占用CPU的操作時(shí)間,只有在計(jì)數(shù)器計(jì)滿溢出時(shí)才能中斷CPU當(dāng)前的操作。</p><p>  延時(shí)方法可以有兩種,一種是利用MCS-51內(nèi)部定時(shí)器產(chǎn)生

50、溢出中斷來(lái)確定1秒的時(shí)間,另一種是采用軟延時(shí)的方法。</p><p>  定時(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ì)算通式:</p><p>  TC=M – C

51、 (4 – 1)</p><p>  式中,M為計(jì)數(shù)器模值,該值和計(jì)數(shù)器工作方式有關(guān)。</p><p>  在方式0時(shí)M為8196;在方式1時(shí)M的值為65536;在方式2和3為256。</p><p>  T=(M -TC)* 或 TC=M-C/ (4 – 2)</p><

52、;p>  是單片機(jī)時(shí)鐘周期的12倍;TC為定時(shí)初值</p><p>  如單片機(jī)的主脈沖頻率=12MHz,經(jīng)過(guò)12分頻</p><p>  方式0    (4 – 3)</p><p>  方式1      (4 – 4)

53、我們?cè)谶@里采用的是方式1,則初始值TC=65536-50000</p><p>  TH0=(65536-50000)/256 TL0=(65536-50000)%256 (4 – 5)</p><p>  顯然1秒鐘已經(jīng)超過(guò)了計(jì)數(shù)器的最大定時(shí)間,所以我們只有采用定時(shí)器和軟件相結(jié)合的辦法才能解決這個(gè)問(wèn)題。</p><p&g

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

55、 TMOD,#01H ;置T0工作方式1</p><p>  MOV TH0,#3CH ;置T0定時(shí)初值50ms</p><p>  MOV TL0,#0B0H</p><p>  CLR TF0</p><p>  SETB TR0 ;啟動(dòng)T0</p><p&

56、gt;<b>  CLR A</b></p><p>  3.3處理狀態(tài)、倒計(jì)時(shí)顯示</p><p>  圖3-2 狀態(tài)處理流程圖</p><p>  當(dāng)處理到相應(yīng)的狀態(tài)時(shí)調(diào)用所對(duì)應(yīng)的狀態(tài)子程序和顯示子程序來(lái)點(diǎn)亮該狀態(tài)下的發(fā)光二極管來(lái)表示是否允許通過(guò)并利用LED數(shù)碼管顯示倒計(jì)時(shí)間。通過(guò)比較R3寄存器中的值來(lái)判斷是否要進(jìn)行下一個(gè)狀態(tài),當(dāng)

57、所有狀態(tài)都已顯示程序跳轉(zhuǎn)到初始狀態(tài)進(jìn)行循環(huán)。</p><p>  初始化后處理狀態(tài)1的程序:</p><p>  LOOP: MOV R2,#20 ;置1s計(jì)數(shù)初值</p><p>  MOV R3,#20 ;紅燈亮20s</p><p>  MOV SECOND1,#25 ;計(jì)時(shí)顯示初

58、值25s</p><p>  LCALL DISPLAY</p><p>  LCALL STATE1 ;調(diào)用狀態(tài)1</p><p>  WAIT1: JNB TF0,WAIT1 ;查詢50ms到否</p><p>  CLR TF0</p><p>  MOV

59、 TH0,#3CH ;恢復(fù)T0定時(shí)初值50ms</p><p>  MOV TL0,#0B0H</p><p>  DJNZ R2,WAIT1 ;判斷1s到否?未到繼續(xù)狀態(tài)1</p><p>  MOV R2,#20 ;置50ms計(jì)數(shù)初值</p><p>  DEC SECO

60、ND1 ;顯示時(shí)間減1</p><p>  LCALL DISPLAY ;調(diào)用顯示子程序</p><p>  DJNZ R3,WAIT1</p><p>  3.4路口紅綠燈狀態(tài)子程序</p><p>  通過(guò)設(shè)置各發(fā)光二極管所對(duì)應(yīng)管腳的高低電平來(lái)滿足該狀態(tài)下的顯示效果,由于各發(fā)光二極管的正極接高電平、負(fù)極經(jīng)過(guò)7

61、405反相器接單片機(jī)的引腳。例如在狀態(tài)1下東西方向的綠燈亮、南北方向的紅燈亮,將單片機(jī)的P2.1和P2.6置高電平經(jīng)7405反相后為低電平來(lái)點(diǎn)亮與之相連的發(fā)光二極管。</p><p><b>  狀態(tài)1下的子程序:</b></p><p>  STATE1: SETB LED_G1 ;狀態(tài)1</p><p>  CLR

62、 LED_Y1 ;東西路口綠燈亮</p><p>  CLR LED_R1</p><p>  CLR LED_G2</p><p>  CLR LED_Y2</p><p>  SETB LED_R2 ;南北路口紅燈亮</p><p><

63、;b>  RET</b></p><p>  3.5 LED顯示子程序</p><p>  LED計(jì)時(shí)每1秒都要刷新1次,那么計(jì)時(shí)滿1秒時(shí)就要將存儲(chǔ)時(shí)間的計(jì)時(shí)寄存器SECOND1減1,然后送入LED顯示程序中顯示。下面要將時(shí)間數(shù)據(jù)R4的十位,個(gè)位分開(kāi)送顯P1,P0端口,首先將R4除以10,整數(shù)即十位放在A中,余數(shù)即個(gè)位放在B中,設(shè)置7段LED顯示數(shù)據(jù)的數(shù)據(jù)表,用數(shù)據(jù)指針寄

64、存器DPTR指向數(shù)據(jù)表的首地址,再加上A中的偏移量,就可以指向十位數(shù)字,然后送顯即可,個(gè)位顯示同理。</p><p><b>  顯示子程序:</b></p><p>  DISPLAY: MOV A,SECOND1 ;取計(jì)時(shí)值作為被除數(shù)送入累加器A</p><p>  MOV B,#10 ;把1

65、0作為除數(shù)</p><p>  DIV AB ;兩者相除,商存A,余數(shù)存B</p><p>  MOV DPTR,#LEDMAP ;取數(shù)據(jù)表的首地址</p><p>  MOVC A,@A+DPTR </p><p>  MOV P1,A ;顯示十位</p&

66、gt;<p>  MOV A,B</p><p>  MOVC A,@A+DPTR</p><p>  MOV P3,A ;顯示個(gè)位</p><p><b>  RET</b></p><p>  LEDMAP: DB 3FH,06H,5BH,4FH,66H,

67、6DH,7DH,07H,7FH,6FH</p><p><b>  END</b></p><p><b>  4系統(tǒng)仿真</b></p><p><b>  4.1仿真平臺(tái)介紹</b></p><p>  4.1.1 Keil軟件介紹</p><p>

68、  單片機(jī)開(kāi)發(fā)中除必要的硬件外,同樣離不開(kāi)軟件,我們寫的匯編語(yǔ)言源程序要變?yōu)镃PU可以執(zhí)行的機(jī)器碼有兩種方法,一種是手工匯編,另一種是機(jī)器匯編,目前已極少使用手工匯編的方法了。機(jī)器匯編是通過(guò)匯編軟件將源程序變?yōu)闄C(jī)器碼,用于MCS-51單片機(jī)的匯編軟件有早期的 A51,隨著單片機(jī)開(kāi)發(fā)技術(shù)的不斷發(fā)展,從普遍使用匯編語(yǔ)言到逐漸使用高級(jí)語(yǔ)言開(kāi)發(fā),單片機(jī)的開(kāi)發(fā)軟件也在不斷發(fā)展,Keil軟件是目前最流行開(kāi)發(fā) MCS-51系列單片機(jī)的軟件。Keil提

69、供了包括C編譯器、宏匯編、連接器、庫(kù)管理和一個(gè)功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開(kāi)發(fā)方案,通過(guò)一個(gè)集成開(kāi)發(fā)環(huán)境(uVision)將這些部分組合在一起。</p><p>  Keil Software 8051開(kāi)發(fā)工具,提供編譯源程序,匯編源程序,連接和重定位目標(biāo)文件和庫(kù)文件,創(chuàng)建.hex文件調(diào)試目標(biāo)程序。下面簡(jiǎn)單介紹一下使用過(guò)程。</p><p>  圖4-1 Keil軟件的使用流程圖&l

70、t;/p><p>  Keil軟件的工作界面圖如下圖:</p><p>  圖4-2 Keil軟件的工作界面圖</p><p>  4.1.2 Proteus仿真軟件介紹</p><p>  Proteus軟件是Labcenter Electronics公司的一款電路設(shè)計(jì)與仿真軟件,它主要包括ISIS、ARES等軟件模塊,ARES模塊主要用來(lái)完

71、成PCB的設(shè)計(jì),而ISIS模塊用來(lái)完成電路原理圖的布圖與仿真。Proteus的軟件仿真基于VSM技術(shù),它能把微處理器軟件作用在處理器上,并和該處理器的任何模擬和數(shù)字器件協(xié)調(diào)仿真。仿真執(zhí)行目標(biāo)碼就像在真正的單片機(jī)系統(tǒng)上運(yùn)行,VSM CPU模型能完整仿真I/O口、中斷、定時(shí)器、通用外設(shè)和其他與CPU有關(guān)的外設(shè),甚至能仿真多個(gè)處理器。通過(guò)Proteus軟件的使用我們能夠輕易地獲得一個(gè)功能齊全、實(shí)用方便的單片機(jī)實(shí)驗(yàn)室。</p>&

72、lt;p><b>  該軟件的特點(diǎn)是:</b></p><p> ?。?)集原理圖設(shè)計(jì)、仿真和PCB設(shè)計(jì)于一體,真正實(shí)現(xiàn)從概念到產(chǎn)品的完整開(kāi)發(fā)工具。</p><p> ?。?)具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真,是獨(dú)一無(wú)二的支持處理器與外圍電路的協(xié)同仿真電路設(shè)計(jì)軟件。</p><p> ?。?)具有全速、單

73、步、設(shè)置斷點(diǎn)等多種形式的調(diào)試功能。</p><p> ?。?)具有各種信號(hào)源和電路分析所需的虛擬儀表、是電類教學(xué)實(shí)驗(yàn)與創(chuàng)新的最侍平臺(tái)。</p><p> ?。?)支持Keil C51 uVision2、MTLAB等第三方的軟件編譯和調(diào)試環(huán)境。</p><p> ?。?)具有強(qiáng)大的原理圖到PCB板設(shè)計(jì)功能,可輸出多種格式的電路設(shè)計(jì)報(bào)表。</p><

74、p>  下面介紹一下使用步驟:</p><p>  圖4-3 Proteus操作流程圖</p><p>  打開(kāi)Proteus啟動(dòng)工作界面,如下圖:</p><p>  圖4-4 Proteus工作界面</p><p><b>  4.2系統(tǒng)硬件實(shí)現(xiàn)</b></p><p>  圖4-5

75、 單片機(jī)控制交通燈硬件電路圖</p><p>  選取單片機(jī)AT89C51一片,紅、綠、藍(lán)LED各4個(gè),LED數(shù)碼管8個(gè),7405一片,電阻、電容若干按電路原理圖連接電路。</p><p>  4.3系統(tǒng)仿真及分析</p><p>  圖4-6 系統(tǒng)初始化效果圖</p><p>  根據(jù)上圖4-6的仿真效果圖說(shuō)明系統(tǒng)在初始化后使東西方向的

76、綠燈亮、南北方向的紅燈亮,仿真結(jié)果正確。</p><p>  圖4-7 倒計(jì)時(shí)2s時(shí)的仿真圖</p><p>  根據(jù)圖4-7的仿真效果,在第一個(gè)循環(huán)周期內(nèi)當(dāng)?shù)褂?jì)時(shí)到2s時(shí)東西方向由綠燈閃爍變換為黃燈亮,說(shuō)明仿真正確。</p><p>  圖4-8 南北方向25s倒計(jì)時(shí)</p><p>  根據(jù)圖4-8當(dāng)東西方向的25s倒計(jì)時(shí)結(jié)果后轉(zhuǎn)為南

77、北方向開(kāi)始25s倒計(jì)時(shí)、南北方向的綠燈亮,東西方向的紅燈亮,說(shuō)明仿真結(jié)果正確。</p><p>  通過(guò)以上的仿真結(jié)果可以說(shuō)明本設(shè)計(jì)可以正確的進(jìn)行東西和南北方向的紅綠燈轉(zhuǎn)換并在倒計(jì)時(shí)5s時(shí)開(kāi)始綠燈閃爍,2s的黃燈亮效果。但由于時(shí)間的倉(cāng)促該設(shè)計(jì)在有些方面還有待于提高,比如在根據(jù)各個(gè)路段的車流量來(lái)自動(dòng)的調(diào)整紅綠的時(shí)間和闖紅燈報(bào)警電路以滿足社會(huì)的需要。</p><p><b>  5總

78、結(jié)</b></p><p>  本文是以AT89C51單片機(jī)為核心,設(shè)計(jì)出的模擬交通燈。并通過(guò)PROTEUS進(jìn)行的仿真。實(shí)現(xiàn)系統(tǒng)首先開(kāi)始東西方向的綠燈亮南北方向的紅燈亮并進(jìn)行25s倒計(jì)時(shí),在倒計(jì)時(shí)5s時(shí)東西方向的綠燈閃爍以提醒人們安全通行,倒計(jì)時(shí)2s時(shí)黃燈亮禁止沒(méi)有通過(guò)路口的車輛通行,倒計(jì)時(shí)結(jié)束后開(kāi)始南北方向的倒計(jì)時(shí)依次循環(huán)。</p><p>  通過(guò)PROTEUS仿真實(shí)驗(yàn)表明

79、該交通燈的工作原理是比較簡(jiǎn)單,實(shí)用性比較強(qiáng)可以用在窄路段,因?yàn)闀r(shí)間較短。</p><p>  雖然本設(shè)計(jì)能夠成功仿真,由于時(shí)間倉(cāng)促和本人水平有限,本設(shè)計(jì)還存在一些不足之處,還有待繼續(xù)研究和改進(jìn)。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 李廣弟,朱月秀,冷祖祁.單片機(jī)基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,20

80、07.6</p><p>  [2] 張靖武,周靈彬編著.單片機(jī)原理、應(yīng)用與PROTEUS仿真[M].北京:電子工業(yè)出版社,2008.8</p><p>  [3] 周潤(rùn)景,袁偉亭,景曉松.Proteus在MCS-51&ARM7系統(tǒng)中的應(yīng)用百例[M].北京:電子工業(yè)出版社,2006.10</p><p>  [4] 高衛(wèi)東,辛友順,韓彥征.51單片機(jī)原理與實(shí)

81、踐[M].北京:北京航空航天大學(xué)出版社,2008.1</p><p>  [5] 牛昱光.單片機(jī)原理與接口技術(shù)[M].北京:電子工業(yè)出版社,2008.2</p><p>  [6] 徐煜明.C51單片機(jī)及應(yīng)用系統(tǒng)設(shè)計(jì)[M].北京:電子工業(yè)出版社,2009.2</p><p>  [7] 焦玉全,俞偉鈞,顧誠(chéng)甦.MCS-51單片機(jī)原理及應(yīng)用[M].南京:東南大學(xué)出版社

82、,2010.1</p><p>  [8] 蔣輝平,周國(guó)雄.基于Proteus的單片機(jī)系統(tǒng)設(shè)計(jì)與仿真實(shí)例[M].北京:機(jī)械工業(yè)出版社,2009.4</p><p>  [9] 余修武.單片機(jī)原理及應(yīng)用[M].西安:電子科技大學(xué)出版社,2008.1</p><p>  [10] 余錫存,曹國(guó)華.單片機(jī)原理及接口技術(shù)[M].陜西:西安電子科技大學(xué)出版社,2000.7&l

83、t;/p><p>  [11] 朱清慧,張鳳蕊,王志奎.Proteus 教程—電子線路設(shè)計(jì)、制版與仿真[M].北京:清華大學(xué)出版社,2008.9</p><p>  [12] 錢曉捷.匯編語(yǔ)言程序設(shè)計(jì)[M].北京:電子工業(yè)出版社,2003.6</p><p><b>  附 錄</b></p><p><b>

84、;  交通燈源程序:</b></p><p>  SECOND1 EQU 30H ;計(jì)時(shí)寄存器</p><p>  DBUF EQU 40H ;顯示碼緩沖1</p><p>  TEMP EQU 44H ;顯示碼緩沖2</p><p>  LE

85、D_G1 BIT P2.1 ;東西路口綠燈</p><p>  LED_Y1 BIT P2.2 ;東西路口黃燈</p><p>  LED_R1 BIT P2.3 ;東西路口紅燈</p><p>  LED_G2 BIT P2.4 ;南北路口綠燈&

86、lt;/p><p>  LED_Y2 BIT P2.5 ;南北路口黃燈</p><p>  LED_R2 BIT P2.6 ;南北路口紅燈</p><p>  ORG 0000H</p><p>  LJMP START</p><p>  ORG

87、 0100H</p><p>  START: MOV TMOD,#01H ;置T0工作方式1</p><p>  MOV TH0,#3CH ;置T0定時(shí)初值50ms</p><p>  MOV TL0,#0B0H</p><p>  CLR TF0</p><p>

88、  SETB TR0 ;啟動(dòng)T0</p><p><b>  CLR A</b></p><p>  ;**********************************************************</p><p>  LOOP: MOV R2,#20 ;置1s

89、計(jì)數(shù)初值</p><p>  MOV R3,#20 ;紅燈亮20s</p><p>  MOV SECOND1,#25 ;計(jì)時(shí)顯示初值25s</p><p>  LCALL DISPLAY</p><p>  LCALL STATE1 ;調(diào)用狀態(tài)1</p><p>

90、  WAIT1: JNB TF0,WAIT1 ;查詢50ms到否</p><p>  CLR TF0</p><p>  MOV TH0,#3CH ;恢復(fù)T0定時(shí)初值50ms</p><p>  MOV TL0,#0B0H</p><p>  DJNZ R2,WAIT1

91、 ;判斷1s到否?未到繼續(xù)狀態(tài)1</p><p>  MOV R2,#20 ;置50ms計(jì)數(shù)初值</p><p>  DEC SECOND1 ;顯示時(shí)間減1</p><p>  LCALL DISPLAY</p><p>  DJNZ R3,WAIT1 ;狀態(tài)1維持20s</p

92、><p>  ;***********************************************************</p><p>  MOV R2,#5 ;置50ms計(jì)數(shù)初值</p><p>  MOV R3,#3 ;綠燈閃爍3s</p><p>  MOV R4,#4

93、 ;閃爍間隔200ms</p><p>  MOV SECOND1,#5 ;顯示初值5s</p><p>  LCALL DISPLAY</p><p>  LCALL STATE2 ;調(diào)用狀態(tài)2</p><p>  WAIT2: JNB TF0,WAIT2 ;查詢5

94、0ms到否</p><p>  CLR TF0</p><p>  MOV TH0,#3CH ;恢復(fù)T0定時(shí)初值50ms</p><p>  MOV TL0,#0B0H</p><p>  DJNZ R4,WAIT2 ;判斷200ms到否?未到繼續(xù)狀態(tài)2</p><p&

95、gt;  CPL LED_G1 ;東西綠燈閃爍</p><p>  MOV R4,#4 ;閃爍間隔200ms</p><p>  DJNZ R2,WAIT2 ;判斷1s到否?未到繼續(xù)狀態(tài)2</p><p>  MOV R2,#5 ;置50ms計(jì)數(shù)初值</p>

96、<p>  DEC SECOND1 ;顯示時(shí)間減1</p><p>  LCALL DISPLAY</p><p>  DJNZ R3,WAIT2 ;狀態(tài)2維持3s</p><p>  ;***********************************************************</

97、p><p>  MOV R2,#20 ;置50ms計(jì)數(shù)初值</p><p>  MOV R3,#2 ;黃燈閃爍2s</p><p>  MOV SECOND1,#2 ;顯示初值2s</p><p>  LCALL DISPLAY</p><p>  

98、LCALL STATE3 ;調(diào)用狀態(tài)3</p><p>  WAIT3: JNB TF0,WAIT3 ;查詢100ms到否</p><p>  CLR TF0</p><p>  MOV TH0,#3CH ;恢復(fù)T0定時(shí)初值100ms</p><p>  M

99、OV TL0,#0B0H</p><p>  DJNZ R2,WAIT3 ;判斷1s到否?未到繼續(xù)狀態(tài)3</p><p>  MOV R2,#20 ;置100ms計(jì)數(shù)初值</p><p>  DEC SECOND1 ;顯示時(shí)間減1</p><p>  LC

100、ALL DISPLAY</p><p>  DJNZ R3,WAIT3 ;狀態(tài)3維持2s</p><p>  ;****************************************************************</p><p>  MOV R2,#20 ;置50ms計(jì)數(shù)初值&l

101、t;/p><p>  MOV R3,#20 ;紅燈亮20s</p><p>  MOV SECOND1,#25 ;顯示初值25s</p><p>  LCALL DISPLAY</p><p>  LCALL STATE4 ;調(diào)用狀態(tài)4</p>&l

102、t;p>  WAIT4: JNB TF0,WAIT4 ;查詢100ms到否</p><p>  CLR TF0</p><p>  MOV TH0,#3CH ;恢復(fù)T0定時(shí)初值100ms</p><p>  MOV TL0,#0B0H</p><p>  DJN

103、Z R2,WAIT4 ;判斷1s到否?未到繼續(xù)狀態(tài)4</p><p>  MOV R2,#20 ;置100ms計(jì)數(shù)初值</p><p>  DEC SECOND1 ;顯示時(shí)間減1</p><p>  LCALL DISPLAY</p><p>  D

104、JNZ R3,WAIT4 ;狀態(tài)4維持20s</p><p>  ;******************************************************************</p><p>  MOV R2,#5 ;置50ms計(jì)數(shù)初值</p><p>  MOV R

105、4,#4 ;紅燈亮20s</p><p>  MOV R3,#3 ;綠燈閃爍3s</p><p>  MOV SECOND1,#5 ;顯示初值5s</p><p>  LCALL DISPLAY</p><p>  LCALL STATE5

106、 ;調(diào)用狀態(tài)5</p><p>  WAIT5: JNB TF0,WAIT5 ;查詢100ms到否</p><p>  CLR TF0</p><p>  MOV TH0,#3CH ;恢復(fù)T0定時(shí)初值100ms</p><p>  MOV

107、 TL0,#0B0H</p><p>  DJNZ R4,WAIT5 ;判斷200ms到否?未到繼續(xù)狀態(tài)5</p><p>  CPL LED_G2 ;南北綠燈閃爍</p><p>  MOV R4,#4 ;閃爍間隔200ms</p><p>  DJ

108、NZ R2,WAIT5 ;判斷1s到否?未到繼續(xù)狀態(tài)5</p><p>  MOV R2,#5 ;置100ms計(jì)數(shù)初值</p><p>  DEC SECOND1 ;顯示時(shí)間減1</p><p>  LCALL DISPLAY</p><p>  

109、DJNZ R3,WAIT5 ;狀態(tài)5維持3s</p><p>  ;***************************************************************</p><p>  MOV R2,#20 ;置50ms計(jì)數(shù)初值</p><p>  MOV R3,#2

110、 ;黃燈亮2s</p><p>  MOV SECOND1,#2 ;顯示初值2s</p><p>  LCALL DISPLAY</p><p>  LCALL STATE6 ;調(diào)用狀態(tài)6</p><p>  WAIT6: JNB TF0,WAIT6

111、 ;查詢100ms到否</p><p>  CLR TF0</p><p>  MOV TH0,#3CH ;恢復(fù)T0定時(shí)初值100ms</p><p>  MOV TL0,#0B0H</p><p>  DJNZ R2,WAIT6 ;判斷1s到否?未到繼續(xù)狀態(tài)6</p

112、><p>  MOV R2,#20 ;置100ms計(jì)數(shù)初值</p><p>  DEC SECOND1 ;顯示時(shí)間減1</p><p>  LCALL DISPLAY</p><p>  DJNZ R3,WAIT6 ;狀態(tài)6維持2s</p><p&g

113、t;  LJMP LOOP ;大循環(huán)</p><p>  ;**************************************************************</p><p>  STATE1: SETB LED_G1 ;狀態(tài)1</p><p>  CLR LED_Y1

114、 ;東西路口綠燈亮</p><p>  CLR LED_R1</p><p>  CLR LED_G2</p><p>  CLR LED_Y2</p><p>  SETB LED_R2 ;南北路口紅燈亮</p><p><b>  RET<

115、;/b></p><p>  STATE2: CLR LED_Y1 ;狀態(tài)2</p><p>  CLR LED_R1</p><p>  CLR LED_G2</p><p>  CLR LED_Y2</p><p>  SETB LED_R2

116、 ;南北路口紅燈亮</p><p><b>  RET</b></p><p>  STATE3: CLR LED_G1 ;狀態(tài)3</p><p>  CLR LED_R1</p><p>  CLR LED_G2</p><p>  CLR

117、 LED_Y2</p><p>  SETB LED_R2 ;南北路口紅燈亮</p><p>  SETB LED_Y1 ;東西路口黃燈亮</p><p><b>  RET</b></p><p>  STATE4: CLR LED_G1

118、 ;狀態(tài)4</p><p>  CLR LED_Y1</p><p>  SETB LED_R1 ; 東西路口紅燈亮</p><p>  SETB LED_G2 ;南北路口綠燈亮</p><p>  CLR LED_Y2</p><p>  CLR

溫馨提示

  • 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ù)僅提供信息存儲(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)論