

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 單片機模擬交通燈的設計</p><p><b> 摘 要</b></p><p> 本設計是依據數(shù)字集成電路、單片機技術為基礎,采用MCS-51系列單片機AT89C51為控制器件結合LED數(shù)碼顯示電路、發(fā)光二極管指示電路組成交通燈硬件電路,利用單片機內部定時中斷溢出產生1s實現(xiàn)倒計時。系統(tǒng)能夠完成25s倒計時顯示,在倒計時到5s時綠燈開
2、始閃爍以提醒過往的車輛及行人安全通行,倒計時到2s時黃燈亮。</p><p> 關鍵詞:單片機;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單片機
6、的概述1</p><p> 1.3單片機的應用2</p><p> 1.4單片機的發(fā)展史2</p><p><b> 2系統(tǒng)硬件設計3</b></p><p><b> 2.1系統(tǒng)原理3</b></p><p> 2.2 AT89C51的介紹4</
7、p><p> 2.3 AT89C51的引腳說明5</p><p><b> 2.4時鐘電路7</b></p><p><b> 2.5復位電路7</b></p><p> 2.6單片機的最小系統(tǒng)構成8</p><p> 2.7 7405 TTL 集電極開路六反相
8、器8</p><p><b> 2.8指示電路8</b></p><p> 2.9 LED數(shù)碼顯示器9</p><p> 3系統(tǒng)軟件設計11</p><p> 3.1系統(tǒng)整體程序流程圖11</p><p> 3.2設置定時,顯示初始化11</p><p&g
9、t; 3.3處理狀態(tài)、倒計時顯示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仿真平臺介紹16</p><p> 4.1.1 Keil軟件介紹
10、16</p><p> 4.1.2 Proteus仿真軟件介紹17</p><p> 4.2系統(tǒng)硬件實現(xiàn)19</p><p> 4.3系統(tǒng)仿真及分析19</p><p><b> 5總結22</b></p><p><b> 參考文獻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> 當今,紅綠燈
12、安裝在各個道口上,已經成為疏導交通車輛最常見和最有效的手段。但這一技術在19世紀就已出現(xiàn)了。</p><p> 1858年,在英國倫敦主要街頭安裝了以燃煤氣為光源的紅,藍兩色的機械扳手式信號燈,用以指揮馬車通行。這是世界上最早的交通信號燈。1868年,英國機械工程師納伊特在倫敦威斯敏斯特區(qū)的議會大廈前的廣場上,安裝了世界上最早的煤氣紅綠燈。它由紅綠兩以旋轉式方形玻璃提燈組成,紅色表示“停止”,綠色表示“注意”。
13、1869年1月2日,煤氣燈爆炸,使警察受傷,遂被取消。</p><p> 電氣啟動的紅綠燈出現(xiàn)在美國,這種紅綠燈由紅綠黃三色圓形的投光器組成,1914年始安裝于紐約市5號大街的一座高塔上。紅燈亮表示“停止”,綠燈亮表示“通行”。</p><p> 1918年,又出現(xiàn)了帶控制的紅綠燈和紅外線紅綠燈。帶控制的紅綠燈,一種是把壓力探測器安在地下,車輛一接近紅燈便變?yōu)榫G燈;另一種是用擴音器來啟
14、動紅綠燈,司機遇紅燈時按一下嗽叭,就使紅燈變?yōu)榫G燈。紅外線紅綠燈當行人踏上對壓力敏感的路面時,它就能察覺到有人要過馬路。紅外光束能把信號燈的紅燈延長一段時間,推遲汽車放行,以免發(fā)生交通事故。</p><p> 交通信號燈的出現(xiàn),使交通得以有效管制,對于疏導交通流量、提高道路通行能力,減少交通事故有明顯效果。</p><p> 一般的交通燈系統(tǒng)采用固定周期換燈的控制方式,路口的交通燈大多
15、只有紅綠黃指示燈,行人在過路口時,會出現(xiàn)走到路中央綠燈跳變?yōu)榧t燈的情況。為符合以人為本的設計理念,我們可在路口安裝與信號燈同步的倒記時顯示器,行人和自行車可根據綠燈結束的時間決定是否過路口。設計中我們用AT89C51 單片機的并行口接發(fā)光二極管,模擬交通燈的變化規(guī)律。8個數(shù)碼管用來顯示秒值,東、西、南、北各兩個。12個發(fā)光二極管,東、西、南、北各三個,分為紅、綠、黃三種顏色。</p><p><b>
16、 1.2單片機的概述</b></p><p> 單片機指集成在一個芯片上的微型計算機,也就是把組成微型計算機的各種功能部件,包括CPU(Central Processing Unit)、隨機存取存儲器RAM(Random Access Memory)、只讀存儲器ROM(Read-Only Memory)、基本輸入/輸出(Input/Output)接口電路、定時器/計數(shù)器等部件都制作在一塊集成芯片上,
17、構成一個完整的微型計算機,從而實現(xiàn)微型計算機的基本功能。</p><p><b> 1.3單片機的應用</b></p><p><b> ?。?)智能儀器儀表</b></p><p> 現(xiàn)代儀器儀表采用單片機,不僅提高了儀器儀表使用功能和精度,使儀器儀表智能化而且簡化了其結構,減小了體積,降低了成本。</p>
18、;<p><b> (2)工業(yè)控制</b></p><p> 單片機還可以用于工業(yè)控制器對各種物理量的采集及控制。例如,電流、溫度、電壓、流量等等物理參數(shù)的采集和控制都可以利用單片機實現(xiàn),從而提高生產效率和產品質量。</p><p><b> (3)家用電器</b></p><p> 現(xiàn)在家用電器都向
19、智能化發(fā)展,單片機是家用電器智能化的大腦和心臟。例如洗衣機、空調、電冰箱、電視機等。</p><p> (4)信息和通信產品</p><p> 信息和通信產品的自動化和智能化也離不開單片機的參與。典型產品如:打印機、傳真機、考勤機、電話機等。</p><p> 1.4單片機的發(fā)展史</p><p> 單片機技術的發(fā)展十分迅速,大致可分
20、為4個階段:</p><p> 第一階段(1976~1978):低性能單片機的探索階段。以Intel公司的MCS-48為代表,采用了單片結構,即在一塊芯片內含有8位CPU、定時器/計數(shù)器、并行I/O、RAM和ROM等。主要用于工業(yè)領域。</p><p> 第二階段(1978~1982):高性能單片機階段。這一類單片機帶有串行I/O口,8位數(shù)據線、16位地址線可以尋址的范圍達到64KB,
21、有控制總線、較豐富的指令系統(tǒng)等。這類單片機的應用范圍較廣,并在不斷地改進和發(fā)展。</p><p> 第三階段(1982~1990):16位單片機階段。16位單片機除CPU為16位外,片內RAM和ROM容量進一步增大,實時處理能力更強,體現(xiàn)了微控制器的特征。</p><p> 第四階段(1990~ ):微控制器的全面發(fā)展的階段。各公司的產品在盡量兼容的同時向高速、強運算能力、尋址范圍大以
22、及小型廉價方面發(fā)展。</p><p><b> 2系統(tǒng)硬件設計</b></p><p><b> 2.1系統(tǒng)原理</b></p><p> 本設計主要采用AT89C51單片機為核心結合電源電路、時鐘電路、復位電路構成單片機最小系統(tǒng),并與外圍倒計時顯示電路和指示電路共同構成單片機模擬交通燈系統(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 單片機內部總體結構圖</p><p> 設計采用的是Atmel公司的89C51是MCS-51系列單片機的典型產品,其主要結構包含中央處理
24、器、程序存儲器(ROM)、數(shù)據存儲器(RAM)、定時/計數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據總線、地址總線和控制總線等三大總線,現(xiàn)在我們分別加以說明:</p><p> ?。?)中央處理器(CPU)</p><p> 中央處理器(CPU)是整個單片機的核心部件,是8位數(shù)據寬度的處理器,能處理8位二進制數(shù)據或代碼,CPU負責控制、指揮和調度整個單元系統(tǒng)協(xié)調的工作,完成運算和控
25、制輸入輸出功能等操作。</p><p> ?。?)內部數(shù)據存儲器</p><p> 內部數(shù)據存儲器包括RAM(128*8)和RAM地址寄存器,用于存放可讀/寫的數(shù)據。實際其幾個內部共有256個RAM單元,但其中后128個單元為專用寄存器,能作為普通RAM存儲器供用戶使用的只是前128個單元。因此,通常所說的內部數(shù)據存儲器是指前128個單元,簡稱“內部RAM”。</p>&l
26、t;p> (3)內部程序存儲器</p><p> 內部程序存儲器包括ROM(4K*8)和程序地址寄存器等。AT89C51共有4KB掩膜ROM,用于存放程序和原始數(shù)據,因此稱之為程序存儲器,簡稱“內部ROM”</p><p> (4)定時器/計數(shù)器</p><p> 由于控制應用的需要,89C51內部共有兩個16位的定時器/計數(shù)器,用定時器/計數(shù)器0和定
27、時器/計數(shù)器1表示,用于實現(xiàn)定時或計數(shù)功能,并以其定時或計數(shù)結果對單片機進行控制。</p><p><b> ?。?)并行I/O口</b></p><p> 89C51共有4個8位I/O口(P0、 P1、P2和P3),以實現(xiàn)數(shù)據的并行輸入/輸出。</p><p><b> ?。?)串行口</b></p>&
28、lt;p> 89C51單片機有一個全雙工串行口,以實現(xiàn)單片機和其他數(shù)據設備之間的串行數(shù)據傳送。該串行口功能較強,既可作為全雙工異步通信收發(fā)器使用,也可作為同步移位器使用。</p><p><b> ?。?)中斷控制電路</b></p><p> 89C51的中斷功能較強,以滿足控制應用的需要。共有5個中斷源,即外中斷2個,定時/計數(shù)中斷2個,串行中斷1個。全
29、部中斷分為高級和低級共兩個優(yōu)先級別。</p><p><b> ?。?)時鐘電路</b></p><p> 89C51芯片內部有時鐘電路,但石英晶體和微調電容需外接。時鐘電路為單片機產生時鐘脈沖序列。</p><p> 2.3 AT89C51的引腳說明</p><p> 圖2-4 AT89C51的引腳圖</
30、p><p> 按其功能可分為電源、時鐘、控制和I/O接口四大部分:</p><p> ?。?)電源引腳 Vcc:電源端,接+5V ;Vss:接地端。</p><p> ?。?)時鐘引腳XTAL1和XTAL2:當使用芯片內部時鐘時,XTAL1和XTAL2用于外接石英晶體諧振器和微調電容;當使用外部時鐘時,用于接入外部時鐘脈沖信號。</p><p>
31、;<b> ?。?)控制引腳</b></p><p> RST/VPD:復位/掉電保護信號輸入端。</p><p> RST為復位信號輸入。Vcc掉電后,此引腳(VPD)可接備用電源,低功耗條件下保證內部RAM中的數(shù)據。</p><p> ALE/:地址鎖存控制信號/編程脈沖輸入端</p><p> ALE為地址
32、鎖存允許。當單片機訪問外部存儲器時,該引腳的輸出信號ALE用于鎖存P0端口的低8位地址。ALE輸出的頻率為時鐘振蕩頻率的1/6。對8751單片機片內EPROM編程時,編程脈沖由此引腳接入。</p><p> ?。浩獬绦虼鎯ζ髯x選通有效信號</p><p> 取指令操作期間,的頻率為振蕩頻率的1/6;但若此期間有訪問外部數(shù)據存儲器的操作時,則有一個機器周期中的信號將不會出現(xiàn)。</p
33、><p> /VPP:訪問程序存儲器控制信號/編程電源輸入端</p><p> 當=0時單片機只訪問外部程序存儲器。對于8031單片機此引腳必須接地。=1,單片機訪問內部程序存儲器。對于內部有程序存儲器的8xx51單片機,此引腳應接高電平,但若地址超過4KB范圍(0FFFH),單片機將自動訪問外部程序存儲器。在8751單片機片內EPROM編程期間,此引腳接入21V編程電源Vpp。</
34、p><p><b> ?。?)I/O引腳</b></p><p> P0.0—P0.7:P0口數(shù)據/低8位地址復用總線端口。</p><p> P1.0—P1.7:P1口靜態(tài)通用端口。</p><p> P2.0—P2.7:P2口高八位地址總線動態(tài)端口。</p><p> P3.0—P3.7:
35、雙功能靜態(tài)端口,具有第二功能。</p><p> 表2-1 P3口線的第二功能說明</p><p><b> 2.4時鐘電路</b></p><p> 本設計采用AT89C51單片機的內部時鐘方式,在XTAL1和XTAL2引腳上外接定時元件,內部振蕩電路就產生自激振蕩。定時元件通常石英晶體和電容組成的并聯(lián)諧振回路,晶體振蕩器選擇12MH
36、z,電容采用30pF。</p><p> 圖2-5 時鐘電路</p><p><b> 2.5復位電路</b></p><p> 單片機復位是使CPU和系統(tǒng)中的其他功能部件都處在一個確定的初始狀態(tài),并從這個狀態(tài)開始工作,例如復位后PC=0000H,使單片機從第—個單元取指令。無論是在單片機剛開始接上電源時,還是斷電后或者發(fā)生故障后都要復
37、位,所以我們必須弄清楚MCS-51型單片機復位的條件、復位電路和復位后狀態(tài)。</p><p> 單片機復位的條件是:必須使RST/VPD或RST引腳加上持續(xù)兩個機器周期(即24個振蕩周期)的高電平。例如,若時鐘頻率為12MHz,每機器周期為1us,則只需2us以上時間的高電平,在RST引腳出現(xiàn)高電平后的第二個機器周期執(zhí)行復位。本設計所用的復位電路如圖2-5所示: </p><p>
38、 圖2-6 復位電路</p><p> 2.6單片機的最小系統(tǒng)構成</p><p> 單片機控制系統(tǒng)是由單片機和外圍電路組成的,用最少的元件組成的單片機系統(tǒng)被稱為單片機最小系統(tǒng)。即主要有電源電路、晶振電路、復位電路構成。</p><p> 圖2-7 單片機最小系統(tǒng)構成</p><p> 2.7 7405 TTL 集電極開路六反相器
39、 </p><p> 7045為六路反相器其內部由6個與非門組成,在設計中7405反相器的輸入端與單片機的P2.1~P2.6相連,輸出端與LED發(fā)光二極管的負極相連,以實現(xiàn)對不同的狀態(tài)下的LED進行控制。例如當單片機的I/O口輸出高電平時,經過7405反相器輸出低電平使該路的LED點亮。</p><p> 圖2-8 7405一路反相</p><p><b
40、> 2.8指示電路</b></p><p> 本設計中采用紅、綠、黃三種顏色的發(fā)光二極管各4個通過7405反相器與單片機的P2口的相應引腳相連,在不同狀態(tài)下點亮不同的二極管實現(xiàn)對道路的控制。</p><p> 發(fā)光二極管是半導體二極管的一種,可以把電能轉化成光能,簡寫為LED。發(fā)光二極管與普通二極管一樣是由一個PN結組成,也具有單向導電性。當給發(fā)光二極管加上正向電壓
41、后,從P區(qū)注入到N區(qū)的空穴和由N區(qū)注入到P區(qū)的電子,在PN結附近數(shù)微米內分別與N區(qū)的電子和P區(qū)的空穴復合,產生自發(fā)輻射的熒光。不同的半導體材料中電子和空穴所處的能量狀態(tài)不同。當電子和空穴復合時釋放出的能量多少不同,釋放出的能量越多,則發(fā)出的光的波長越短。</p><p> 圖2-9 紅、綠、藍三種顏色的發(fā)光二極管</p><p> 2.9 LED數(shù)碼顯示器</p>&l
42、t;p> LED是Light Emiting Diode(發(fā)光二極管)的縮寫,發(fā)光二極管是能將電信號轉換為光信號的發(fā)光器件。由條形發(fā)光二極管組成“8”字形的顯示器,也稱數(shù)碼管。通過數(shù)碼管中發(fā)光二級管的亮暗組合,可以顯示多種數(shù)字、字母以及其他符號。</p><p> 數(shù)碼管在單片機應用系統(tǒng)中主要用于顯示單片機的輸出數(shù)據和狀態(tài)等。LED顯示器為發(fā)光二極管構成的顯示器件。常用的LED顯示器有兩種供應狀態(tài),既共
43、陰極LED與共陽極LED。</p><p> 圖2-10 LED數(shù)碼管結構圖</p><p> LED數(shù)碼管要正常顯示,就要用驅動電路來驅動數(shù)碼管的各個段碼,從而顯示出我們要的數(shù)位,因此根據LED數(shù)碼管的驅動方式的不同,可以分為靜態(tài)式和動態(tài)式兩類。</p><p><b> 靜態(tài)顯示驅動:</b></p><p>
44、; 靜態(tài)驅動也稱直流驅動。靜態(tài)驅動是指每個數(shù)碼管的每一個段碼都由一個單片機的I/O口進行驅動,或者使用如BCD碼二—十進位器進行驅動。</p><p><b> 動態(tài)顯示驅動:</b></p><p> 動態(tài)驅動是將所有數(shù)碼管的8位段碼"a,b,c,d,e,f,g,dp "的同名端連在一起,另外為每個數(shù)碼管的公共極COM增加位選通控制電路,位
45、選通由各自獨立的I/O線控制,當單片機輸出字形碼時,所有數(shù)碼管都接收到相同的字形碼,但究竟是那個數(shù)碼管會顯示出字形,取決于單片機對位選通COM端電路的控制,所以我們只要將需要顯示的數(shù)碼管的選通控制打開被選中的數(shù)碼管就會顯示字符,沒有選通的數(shù)碼管就不會亮。</p><p> 在設計中我們采用靜態(tài)顯示方式,利用8個數(shù)碼管每個方向各兩個與AT89C51的P1口和P3口相連用來顯示倒計時的十位和個位。</p>
46、;<p><b> 3系統(tǒng)軟件設計</b></p><p> 3.1系統(tǒng)整體程序流程圖</p><p> 圖3-1 系統(tǒng)整體程序流程圖</p><p> 3.2設置定時,顯示初始化</p><p> 在單片機應用系統(tǒng)中,實現(xiàn)定時的方法一般有以下三種:</p><p>
47、(1)軟件定時:讓計算機執(zhí)行一段程序來進行事件延時。這個程序段本身沒有安排其他的執(zhí)行目的,只是利用該程序段執(zhí)行花費的一個固定時間。通過適當?shù)倪x擇指令和安排循環(huán)次數(shù),可調節(jié)這段程序執(zhí)行所需花費的時間的長短。其特點是定時時間精確,不需外加硬件電路,但占用CPU時間。因此軟件定時的時間不宜過長。</p><p> (2)硬件定時:利用硬件電路實現(xiàn)定時。其特點是不占用CPU時間,通過改變電路元器件參數(shù)來調節(jié)定時,但使用
48、不夠靈活方便。對于時間較長的定時,常用硬件電路來實現(xiàn)。</p><p> ?。?)可編程定時器:通過專用的定時計數(shù)器芯片來實現(xiàn)。其特點是通過對系統(tǒng)時鐘脈沖進行計數(shù)實現(xiàn)定時,定時的時間可通過程序的設定的方法改變,使用靈活方便。也可實現(xiàn)對外部脈沖的計數(shù)功能。</p><p> 當定時計數(shù)器設置為計數(shù)工作方式時,計數(shù)器對來自輸入引腳T0和T1的外部信號計數(shù),外部信號的下降沿將觸發(fā)計數(shù)。最高檢測
49、頻率為振蕩頻率的二十四分之一。計數(shù)器對外部輸入信號的占空比沒有特別的限制,但必須保證輸入信號的高電平與低電平的持續(xù)時間在一個機器周期以上。</p><p> 當設置了定時器的工作方式并啟動定時器工作后,定時器就按照設定的工作方式獨立工作,不再占用CPU的操作時間,只有在計數(shù)器計滿溢出時才能中斷CPU當前的操作。</p><p> 延時方法可以有兩種,一種是利用MCS-51內部定時器產生
50、溢出中斷來確定1秒的時間,另一種是采用軟延時的方法。</p><p> 定時器工作時必須給計數(shù)器送計數(shù)器初值,這個值是送到TH和TL中的。它是以加法記數(shù)的,并能從全1到全0時自動產生溢出中斷請求。因此,我們可以把計數(shù)器記滿為零所需的計數(shù)值設定為C和計數(shù)初值設定為TC 可得到如下計算通式:</p><p> TC=M – C
51、 (4 – 1)</p><p> 式中,M為計數(shù)器模值,該值和計數(shù)器工作方式有關。</p><p> 在方式0時M為8196;在方式1時M的值為65536;在方式2和3為256。</p><p> T=(M -TC)* 或 TC=M-C/ (4 – 2)</p><
52、;p> 是單片機時鐘周期的12倍;TC為定時初值</p><p> 如單片機的主脈沖頻率=12MHz,經過12分頻</p><p> 方式0 (4 – 3)</p><p> 方式1 (4 – 4)
53、我們在這里采用的是方式1,則初始值TC=65536-50000</p><p> TH0=(65536-50000)/256 TL0=(65536-50000)%256 (4 – 5)</p><p> 顯然1秒鐘已經超過了計數(shù)器的最大定時間,所以我們只有采用定時器和軟件相結合的辦法才能解決這個問題。</p><p&g
54、t; 我們采用在主程序中設定一個初值為1的軟件計數(shù)器和使T0定時50毫秒.這樣每當T0到50毫秒時CPU就響應它的溢出中斷請求,進入他的中斷服務子程序。在中斷服務子程序中,CPU先使軟件計數(shù)器加1,然后判斷它是否為20。為20表示1秒已到可以返回到輸出時間顯示程序。</p><p><b> 設置定時程序:</b></p><p> START: MOV
55、 TMOD,#01H ;置T0工作方式1</p><p> MOV TH0,#3CH ;置T0定時初值50ms</p><p> MOV TL0,#0B0H</p><p> CLR TF0</p><p> SETB TR0 ;啟動T0</p><p&
56、gt;<b> CLR A</b></p><p> 3.3處理狀態(tài)、倒計時顯示</p><p> 圖3-2 狀態(tài)處理流程圖</p><p> 當處理到相應的狀態(tài)時調用所對應的狀態(tài)子程序和顯示子程序來點亮該狀態(tài)下的發(fā)光二極管來表示是否允許通過并利用LED數(shù)碼管顯示倒計時間。通過比較R3寄存器中的值來判斷是否要進行下一個狀態(tài),當
57、所有狀態(tài)都已顯示程序跳轉到初始狀態(tài)進行循環(huán)。</p><p> 初始化后處理狀態(tài)1的程序:</p><p> LOOP: MOV R2,#20 ;置1s計數(shù)初值</p><p> MOV R3,#20 ;紅燈亮20s</p><p> MOV SECOND1,#25 ;計時顯示初
58、值25s</p><p> LCALL DISPLAY</p><p> LCALL STATE1 ;調用狀態(tài)1</p><p> WAIT1: JNB TF0,WAIT1 ;查詢50ms到否</p><p> CLR TF0</p><p> MOV
59、 TH0,#3CH ;恢復T0定時初值50ms</p><p> MOV TL0,#0B0H</p><p> DJNZ R2,WAIT1 ;判斷1s到否?未到繼續(xù)狀態(tài)1</p><p> MOV R2,#20 ;置50ms計數(shù)初值</p><p> DEC SECO
60、ND1 ;顯示時間減1</p><p> LCALL DISPLAY ;調用顯示子程序</p><p> DJNZ R3,WAIT1</p><p> 3.4路口紅綠燈狀態(tài)子程序</p><p> 通過設置各發(fā)光二極管所對應管腳的高低電平來滿足該狀態(tài)下的顯示效果,由于各發(fā)光二極管的正極接高電平、負極經過7
61、405反相器接單片機的引腳。例如在狀態(tài)1下東西方向的綠燈亮、南北方向的紅燈亮,將單片機的P2.1和P2.6置高電平經7405反相后為低電平來點亮與之相連的發(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計時每1秒都要刷新1次,那么計時滿1秒時就要將存儲時間的計時寄存器SECOND1減1,然后送入LED顯示程序中顯示。下面要將時間數(shù)據R4的十位,個位分開送顯P1,P0端口,首先將R4除以10,整數(shù)即十位放在A中,余數(shù)即個位放在B中,設置7段LED顯示數(shù)據的數(shù)據表,用數(shù)據指針寄
64、存器DPTR指向數(shù)據表的首地址,再加上A中的偏移量,就可以指向十位數(shù)字,然后送顯即可,個位顯示同理。</p><p><b> 顯示子程序:</b></p><p> DISPLAY: MOV A,SECOND1 ;取計時值作為被除數(shù)送入累加器A</p><p> MOV B,#10 ;把1
65、0作為除數(shù)</p><p> DIV AB ;兩者相除,商存A,余數(shù)存B</p><p> MOV DPTR,#LEDMAP ;取數(shù)據表的首地址</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 ;顯示個位</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仿真平臺介紹</b></p><p> 4.1.1 Keil軟件介紹</p><p>
68、 單片機開發(fā)中除必要的硬件外,同樣離不開軟件,我們寫的匯編語言源程序要變?yōu)镃PU可以執(zhí)行的機器碼有兩種方法,一種是手工匯編,另一種是機器匯編,目前已極少使用手工匯編的方法了。機器匯編是通過匯編軟件將源程序變?yōu)闄C器碼,用于MCS-51單片機的匯編軟件有早期的 A51,隨著單片機開發(fā)技術的不斷發(fā)展,從普遍使用匯編語言到逐漸使用高級語言開發(fā),單片機的開發(fā)軟件也在不斷發(fā)展,Keil軟件是目前最流行開發(fā) MCS-51系列單片機的軟件。Keil提
69、供了包括C編譯器、宏匯編、連接器、庫管理和一個功能強大的仿真調試器等在內的完整開發(fā)方案,通過一個集成開發(fā)環(huán)境(uVision)將這些部分組合在一起。</p><p> Keil Software 8051開發(fā)工具,提供編譯源程序,匯編源程序,連接和重定位目標文件和庫文件,創(chuàng)建.hex文件調試目標程序。下面簡單介紹一下使用過程。</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公司的一款電路設計與仿真軟件,它主要包括ISIS、ARES等軟件模塊,ARES模塊主要用來完
71、成PCB的設計,而ISIS模塊用來完成電路原理圖的布圖與仿真。Proteus的軟件仿真基于VSM技術,它能把微處理器軟件作用在處理器上,并和該處理器的任何模擬和數(shù)字器件協(xié)調仿真。仿真執(zhí)行目標碼就像在真正的單片機系統(tǒng)上運行,VSM CPU模型能完整仿真I/O口、中斷、定時器、通用外設和其他與CPU有關的外設,甚至能仿真多個處理器。通過Proteus軟件的使用我們能夠輕易地獲得一個功能齊全、實用方便的單片機實驗室。</p>&
72、lt;p><b> 該軟件的特點是:</b></p><p> ?。?)集原理圖設計、仿真和PCB設計于一體,真正實現(xiàn)從概念到產品的完整開發(fā)工具。</p><p> ?。?)具有模擬電路仿真、數(shù)字電路仿真、單片機及其外圍電路組成的系統(tǒng)的仿真,是獨一無二的支持處理器與外圍電路的協(xié)同仿真電路設計軟件。</p><p> ?。?)具有全速、單
73、步、設置斷點等多種形式的調試功能。</p><p> ?。?)具有各種信號源和電路分析所需的虛擬儀表、是電類教學實驗與創(chuàng)新的最侍平臺。</p><p> ?。?)支持Keil C51 uVision2、MTLAB等第三方的軟件編譯和調試環(huán)境。</p><p> ?。?)具有強大的原理圖到PCB板設計功能,可輸出多種格式的電路設計報表。</p><
74、p> 下面介紹一下使用步驟:</p><p> 圖4-3 Proteus操作流程圖</p><p> 打開Proteus啟動工作界面,如下圖:</p><p> 圖4-4 Proteus工作界面</p><p><b> 4.2系統(tǒng)硬件實現(xiàn)</b></p><p> 圖4-5
75、 單片機控制交通燈硬件電路圖</p><p> 選取單片機AT89C51一片,紅、綠、藍LED各4個,LED數(shù)碼管8個,7405一片,電阻、電容若干按電路原理圖連接電路。</p><p> 4.3系統(tǒng)仿真及分析</p><p> 圖4-6 系統(tǒng)初始化效果圖</p><p> 根據上圖4-6的仿真效果圖說明系統(tǒng)在初始化后使東西方向的
76、綠燈亮、南北方向的紅燈亮,仿真結果正確。</p><p> 圖4-7 倒計時2s時的仿真圖</p><p> 根據圖4-7的仿真效果,在第一個循環(huán)周期內當?shù)褂嫊r到2s時東西方向由綠燈閃爍變換為黃燈亮,說明仿真正確。</p><p> 圖4-8 南北方向25s倒計時</p><p> 根據圖4-8當東西方向的25s倒計時結果后轉為南
77、北方向開始25s倒計時、南北方向的綠燈亮,東西方向的紅燈亮,說明仿真結果正確。</p><p> 通過以上的仿真結果可以說明本設計可以正確的進行東西和南北方向的紅綠燈轉換并在倒計時5s時開始綠燈閃爍,2s的黃燈亮效果。但由于時間的倉促該設計在有些方面還有待于提高,比如在根據各個路段的車流量來自動的調整紅綠的時間和闖紅燈報警電路以滿足社會的需要。</p><p><b> 5總
78、結</b></p><p> 本文是以AT89C51單片機為核心,設計出的模擬交通燈。并通過PROTEUS進行的仿真。實現(xiàn)系統(tǒng)首先開始東西方向的綠燈亮南北方向的紅燈亮并進行25s倒計時,在倒計時5s時東西方向的綠燈閃爍以提醒人們安全通行,倒計時2s時黃燈亮禁止沒有通過路口的車輛通行,倒計時結束后開始南北方向的倒計時依次循環(huán)。</p><p> 通過PROTEUS仿真實驗表明
79、該交通燈的工作原理是比較簡單,實用性比較強可以用在窄路段,因為時間較短。</p><p> 雖然本設計能夠成功仿真,由于時間倉促和本人水平有限,本設計還存在一些不足之處,還有待繼續(xù)研究和改進。</p><p><b> 參考文獻</b></p><p> [1] 李廣弟,朱月秀,冷祖祁.單片機基礎[M].北京:北京航空航天大學出版社,20
80、07.6</p><p> [2] 張靖武,周靈彬編著.單片機原理、應用與PROTEUS仿真[M].北京:電子工業(yè)出版社,2008.8</p><p> [3] 周潤景,袁偉亭,景曉松.Proteus在MCS-51&ARM7系統(tǒng)中的應用百例[M].北京:電子工業(yè)出版社,2006.10</p><p> [4] 高衛(wèi)東,辛友順,韓彥征.51單片機原理與實
81、踐[M].北京:北京航空航天大學出版社,2008.1</p><p> [5] 牛昱光.單片機原理與接口技術[M].北京:電子工業(yè)出版社,2008.2</p><p> [6] 徐煜明.C51單片機及應用系統(tǒng)設計[M].北京:電子工業(yè)出版社,2009.2</p><p> [7] 焦玉全,俞偉鈞,顧誠甦.MCS-51單片機原理及應用[M].南京:東南大學出版社
82、,2010.1</p><p> [8] 蔣輝平,周國雄.基于Proteus的單片機系統(tǒng)設計與仿真實例[M].北京:機械工業(yè)出版社,2009.4</p><p> [9] 余修武.單片機原理及應用[M].西安:電子科技大學出版社,2008.1</p><p> [10] 余錫存,曹國華.單片機原理及接口技術[M].陜西:西安電子科技大學出版社,2000.7&l
83、t;/p><p> [11] 朱清慧,張鳳蕊,王志奎.Proteus 教程—電子線路設計、制版與仿真[M].北京:清華大學出版社,2008.9</p><p> [12] 錢曉捷.匯編語言程序設計[M].北京:電子工業(yè)出版社,2003.6</p><p><b> 附 錄</b></p><p><b>
84、; 交通燈源程序:</b></p><p> SECOND1 EQU 30H ;計時寄存器</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定時初值50ms</p><p> MOV TL0,#0B0H</p><p> CLR TF0</p><p>
88、 SETB TR0 ;啟動T0</p><p><b> CLR A</b></p><p> ;**********************************************************</p><p> LOOP: MOV R2,#20 ;置1s
89、計數(shù)初值</p><p> MOV R3,#20 ;紅燈亮20s</p><p> MOV SECOND1,#25 ;計時顯示初值25s</p><p> LCALL DISPLAY</p><p> LCALL STATE1 ;調用狀態(tài)1</p><p>
90、 WAIT1: JNB TF0,WAIT1 ;查詢50ms到否</p><p> CLR TF0</p><p> MOV TH0,#3CH ;恢復T0定時初值50ms</p><p> MOV TL0,#0B0H</p><p> DJNZ R2,WAIT1
91、 ;判斷1s到否?未到繼續(xù)狀態(tài)1</p><p> MOV R2,#20 ;置50ms計數(shù)初值</p><p> DEC SECOND1 ;顯示時間減1</p><p> LCALL DISPLAY</p><p> DJNZ R3,WAIT1 ;狀態(tài)1維持20s</p
92、><p> ;***********************************************************</p><p> MOV R2,#5 ;置50ms計數(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 ;調用狀態(tài)2</p><p> WAIT2: JNB TF0,WAIT2 ;查詢5
94、0ms到否</p><p> CLR TF0</p><p> MOV TH0,#3CH ;恢復T0定時初值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計數(shù)初值</p>
96、<p> DEC SECOND1 ;顯示時間減1</p><p> LCALL DISPLAY</p><p> DJNZ R3,WAIT2 ;狀態(tài)2維持3s</p><p> ;***********************************************************</
97、p><p> MOV R2,#20 ;置50ms計數(shù)初值</p><p> MOV R3,#2 ;黃燈閃爍2s</p><p> MOV SECOND1,#2 ;顯示初值2s</p><p> LCALL DISPLAY</p><p>
98、LCALL STATE3 ;調用狀態(tài)3</p><p> WAIT3: JNB TF0,WAIT3 ;查詢100ms到否</p><p> CLR TF0</p><p> MOV TH0,#3CH ;恢復T0定時初值100ms</p><p> M
99、OV TL0,#0B0H</p><p> DJNZ R2,WAIT3 ;判斷1s到否?未到繼續(xù)狀態(tài)3</p><p> MOV R2,#20 ;置100ms計數(shù)初值</p><p> DEC SECOND1 ;顯示時間減1</p><p> LC
100、ALL DISPLAY</p><p> DJNZ R3,WAIT3 ;狀態(tài)3維持2s</p><p> ;****************************************************************</p><p> MOV R2,#20 ;置50ms計數(shù)初值&l
101、t;/p><p> MOV R3,#20 ;紅燈亮20s</p><p> MOV SECOND1,#25 ;顯示初值25s</p><p> LCALL DISPLAY</p><p> LCALL STATE4 ;調用狀態(tài)4</p>&l
102、t;p> WAIT4: JNB TF0,WAIT4 ;查詢100ms到否</p><p> CLR TF0</p><p> MOV TH0,#3CH ;恢復T0定時初值100ms</p><p> MOV TL0,#0B0H</p><p> DJN
103、Z R2,WAIT4 ;判斷1s到否?未到繼續(xù)狀態(tài)4</p><p> MOV R2,#20 ;置100ms計數(shù)初值</p><p> DEC SECOND1 ;顯示時間減1</p><p> LCALL DISPLAY</p><p> D
104、JNZ R3,WAIT4 ;狀態(tài)4維持20s</p><p> ;******************************************************************</p><p> MOV R2,#5 ;置50ms計數(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、 ;調用狀態(tài)5</p><p> WAIT5: JNB TF0,WAIT5 ;查詢100ms到否</p><p> CLR TF0</p><p> MOV TH0,#3CH ;恢復T0定時初值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計數(shù)初值</p><p> DEC SECOND1 ;顯示時間減1</p><p> LCALL DISPLAY</p><p>
109、DJNZ R3,WAIT5 ;狀態(tài)5維持3s</p><p> ;***************************************************************</p><p> MOV R2,#20 ;置50ms計數(shù)初值</p><p> MOV R3,#2
110、 ;黃燈亮2s</p><p> MOV SECOND1,#2 ;顯示初值2s</p><p> LCALL DISPLAY</p><p> LCALL STATE6 ;調用狀態(tài)6</p><p> WAIT6: JNB TF0,WAIT6
111、 ;查詢100ms到否</p><p> CLR TF0</p><p> MOV TH0,#3CH ;恢復T0定時初值100ms</p><p> MOV TL0,#0B0H</p><p> DJNZ R2,WAIT6 ;判斷1s到否?未到繼續(xù)狀態(tài)6</p
112、><p> MOV R2,#20 ;置100ms計數(shù)初值</p><p> DEC SECOND1 ;顯示時間減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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機模擬交通燈畢業(yè)設計
- 畢業(yè)設計---單片機模擬交通燈的設計
- 交通燈畢業(yè)設計---- 基于單片機的交通燈設計
- 畢業(yè)設計---單片機交通燈設計
- 單片機畢業(yè)設計---單片機控制交通燈
- 單片機交通燈控制畢業(yè)設計
- 畢業(yè)設計----單片機控制交通燈
- 單片機控制交通燈畢業(yè)設計
- 畢業(yè)設計-單片機控制交通燈
- 畢業(yè)設計---單片機控制交通燈
- 單片機控制交通燈畢業(yè)設計
- 單片機控制交通燈畢業(yè)設計
- 單片機交通燈畢業(yè)設計6
- 畢業(yè)設計---單片機控制交通燈設計
- 畢業(yè)設計-----單片機控制交通燈
- 單片機交通燈控制畢業(yè)設計
- 畢業(yè)設計----單片機控制交通燈設計
- 畢業(yè)設計--基于單片機交通燈的設計
- 基于單片機的交通燈畢業(yè)設計
- 畢業(yè)設計---基于單片機的交通燈設計
評論
0/150
提交評論