版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 電子產(chǎn)品實(shí)訓(xùn)報(bào)告</b></p><p> 基于單片機(jī)的交通燈控制 </p><p> 學(xué) 院:機(jī)電工程學(xué)院</p><p> 專 業(yè):應(yīng)用電子技術(shù)</p><p> 班 級(jí):09應(yīng)電1班</p><p> 摘 要:</p
2、><p> 近年來隨著科技的飛速發(fā)展,單片機(jī)的應(yīng)用正在不斷深入,同時(shí)帶動(dòng)傳統(tǒng)控制檢測技術(shù)日益更新。在實(shí)時(shí)檢測和自動(dòng)控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往作為一個(gè)核心部件來使用,僅單片機(jī)方面知識(shí)是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu)軟硬件結(jié)合,加以完善。</p><p> 十字路口車輛穿梭,行人熙攘,車行車道,人行人道,有條不紊。那么靠什么來實(shí)現(xiàn)這井然秩序呢?靠的就是交通信號(hào)燈的自動(dòng)指揮系統(tǒng)。交通信號(hào)燈
3、控制方式很多。本系統(tǒng)采用STC-51系列單片機(jī)STC89C51來設(shè)計(jì)交通燈控制器,實(shí)現(xiàn)了能根據(jù)實(shí)際車流量通過8051芯片的P1口設(shè)置紅、綠燈燃亮?xí)r間的功能;紅綠燈循環(huán)點(diǎn)亮,倒計(jì)時(shí)剩5秒時(shí)黃燈閃爍警示(交通燈信號(hào)通過PA口輸出,顯示時(shí)間直接通過8255的PC口輸出至雙位數(shù)碼管);車輛闖紅燈報(bào)警;綠燈時(shí)間可檢測車流量并可通過雙位數(shù)碼管顯示。本系統(tǒng)實(shí)用性強(qiáng)、操作簡單、擴(kuò)展功能強(qiáng)。 </p><p> 關(guān)鍵詞:單片機(jī)
4、 交通燈 電路連接圖 Proteus仿真圖</p><p><b> 一. 引言</b></p><p> 當(dāng)今,紅綠燈安裝在各個(gè)道口上,已經(jīng)成為疏導(dǎo)交通車輛最常見和最有效的手段。信號(hào)燈的出現(xiàn),使交通得以有效管制,對于疏導(dǎo)交通流量、提高道路通行能力,減少交通事故有明顯效果。綠燈是通行信號(hào),面對綠燈的車輛可以直行,左轉(zhuǎn)彎和右轉(zhuǎn)彎,除非另一種標(biāo)志禁止某一種轉(zhuǎn)向。左右
5、轉(zhuǎn)彎車輛都必須讓合法地正在路口內(nèi)行駛的車輛和過人行橫道的行人優(yōu)先通行。紅燈是禁行信號(hào),面對紅燈的車輛必須在交叉路口的停車線后停車。黃燈是警告信號(hào),面對黃燈的車輛不能越過停車線,但車輛已十分接近停車線而不能安全停車時(shí)可以進(jìn)入交叉路口。</p><p><b> 二.單片機(jī)概述</b></p><p><b> 1單片機(jī)的歷史</b></p
6、><p> 自1971年美國INTEL公司制造出第一塊4位微處理器以來,其發(fā)展十分迅猛,到目前為止,大致可分為以下五個(gè)階段[1]。</p><p> ?。?)4位單片機(jī)(1971-1974)</p><p> (2)低檔8位單片機(jī)(1974-1978)</p><p> ?。?)高檔8位單片機(jī)(1978-1982)</p>
7、<p> ?。?)16位單片機(jī)(1982-1990)</p><p> ?。?)新一代單片機(jī)(90年代以來)</p><p><b> 2單片機(jī)的應(yīng)用</b></p><p> 因單片機(jī)具有體積小、重量輕、價(jià)格便宜、功耗低、控制功能強(qiáng)及運(yùn)算速度快等特點(diǎn),故在國民經(jīng)濟(jì)建設(shè)、軍事及家用電器等領(lǐng)域均得到廣泛的應(yīng)用。按照單片機(jī)的特點(diǎn)
8、,單片機(jī)可分為單機(jī)應(yīng)用和多機(jī)應(yīng)用。</p><p> 在一個(gè)應(yīng)用系統(tǒng)中,只用一個(gè)單片機(jī),這是目前應(yīng)用最多的方式,主要應(yīng)用領(lǐng)域有:</p><p><b> ?。?)單機(jī)應(yīng)用:</b></p><p> ?、贉y控系統(tǒng)。用單片機(jī)可構(gòu)成各種工業(yè)控制系統(tǒng)、自適應(yīng)系統(tǒng)、數(shù)據(jù)采集系統(tǒng)等。例如,溫室人工氣候控制、水閘自動(dòng)控制、電鍍生產(chǎn)線自動(dòng)控制、汽輪機(jī)電液
9、調(diào)節(jié)系統(tǒng)、車輛檢測系統(tǒng)、機(jī)器人軸處理器等[2]。</p><p> ②智能儀表。用單片機(jī)改造原有的測量、控制儀表,能迥數(shù)字化、智能化、多功能化、綜合化、柔性化發(fā)展。如溫度、壓力、流量、濃度等的測量、顯示及儀表控制。通過采用單片機(jī)軟件編程技術(shù),使測量儀表中長期存在的誤差修正、線性化處理等難題迎刃而解。</p><p> ③機(jī)電一體化產(chǎn)品。單片機(jī)與傳統(tǒng)的機(jī)械產(chǎn)品結(jié)合,使傳統(tǒng)機(jī)械產(chǎn)品結(jié)構(gòu)簡化
10、,控制智能化。這類產(chǎn)品如:簡易數(shù)控機(jī)床,電腦繡花機(jī),醫(yī)療器械等。</p><p> ?、苤悄芙涌?。在計(jì)算機(jī)控制系統(tǒng)(特別是較大型的工業(yè)測控系統(tǒng))中,普遍采用單片機(jī)進(jìn)行接口的控制與管理,因單片機(jī)與主機(jī)是并行工作,故能大大提高了系統(tǒng)的運(yùn)行速度。例如:在大型數(shù)據(jù)采集系統(tǒng)中,用單片機(jī)對ADC接口進(jìn)行控制不僅可提高采集速度,而且還能對數(shù)據(jù)進(jìn)行預(yù)處理,如數(shù)字濾波、線性化處理、誤差修正等。</p><p&g
11、t; ?、葜悄苊裼卯a(chǎn)品。在家用電器、玩具、游戲機(jī)、聲像設(shè)備、電子秤、收銀機(jī)、辦公設(shè)備、廚房設(shè)備等產(chǎn)品中引入單片機(jī),不僅使產(chǎn)品的功能大大增強(qiáng),而且獲得了良好的使用效果。</p><p><b> 三. 芯片簡介</b></p><p> 1 .STC-51芯片簡介</p><p> STC-51單片機(jī)內(nèi)部結(jié)構(gòu),8051是STC-51系列單片
12、機(jī)的典型產(chǎn)品,我們以這一代表性的機(jī)型進(jìn)行系統(tǒng)的講解。8051單片機(jī)包含中央處理器、程序存儲(chǔ)器(ROM)、數(shù)據(jù)存儲(chǔ)器(RAM)、定時(shí)/計(jì)數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線和控制總線等三大總線,現(xiàn)在我們分別加以說明:</p><p><b> 中央處理器:</b></p><p> 中央處理器(CPU)是整個(gè)單片機(jī)的核心部件,是8位數(shù)據(jù)寬
13、度的處理器,能處理8位二進(jìn)制數(shù)據(jù)或代碼,CPU負(fù)責(zé)控制、指揮和調(diào)度整個(gè)單元系統(tǒng)協(xié)調(diào)的工作,完成運(yùn)算和控制輸入輸出功能等操作。</p><p> 數(shù)據(jù)存儲(chǔ)器(RAM)</p><p> 8051內(nèi)部有128個(gè)8位用戶數(shù)據(jù)存儲(chǔ)單元和128個(gè)專用寄存器單元,它們是統(tǒng)一編址的,專用寄存器只能用于存放控制指令數(shù)據(jù),用戶只能訪問,而不能用于存放用戶數(shù)據(jù),所以,用戶能使用的RAM只有128個(gè),可存放
14、讀寫的數(shù)據(jù),運(yùn)算的中間結(jié)果或用戶定義的字型表。</p><p> 程序存儲(chǔ)器(ROM):</p><p> 8051共有4096個(gè)8位掩膜ROM,用于存放用戶程序,原始數(shù)據(jù)或表格。</p><p> 定時(shí)/計(jì)數(shù)器(ROM):</p><p> 8051有兩個(gè)16位的可編程定時(shí)/計(jì)數(shù)器,以實(shí)現(xiàn)定時(shí)或計(jì)數(shù)產(chǎn)生中斷用于控制程序轉(zhuǎn)向。<
15、;/p><p> 并行輸入輸出(I/O)口:</p><p> 8051共有4組8位I/O口(P0、 P1、P2或P3),用于對外部數(shù)據(jù)的傳輸。</p><p><b> 全雙工串行口:</b></p><p> 8051內(nèi)置一個(gè)全雙工串行通信口,用于與其它設(shè)備間的串行數(shù)據(jù)傳送,該串行口既可以用作異步通信收發(fā)器,也可
16、以當(dāng)同步移位器使用。</p><p><b> 中斷系統(tǒng):</b></p><p> 8051具備較完善的中斷功能,有兩個(gè)外中斷、兩個(gè)定時(shí)/計(jì)數(shù)器中斷和一個(gè)串行中斷,可滿足不同的控制要求,并具有2級(jí)的優(yōu)先級(jí)別選擇。</p><p><b> 時(shí)鐘電路:</b></p><p> 8051內(nèi)置
17、最高頻率達(dá)12MHz的時(shí)鐘電路,用于產(chǎn)生整個(gè)單片機(jī)運(yùn)行的脈沖時(shí)序,但8051單片機(jī)需外置振蕩電容。</p><p> 單片機(jī)的結(jié)構(gòu)有兩種類型,一種是程序存儲(chǔ)器和數(shù)據(jù)存儲(chǔ)器分開的形式,即哈佛(Harvard)結(jié)構(gòu),另一種是采用通用計(jì)算機(jī)廣泛使用的程序存儲(chǔ)器與數(shù)據(jù)存儲(chǔ)器合二為一的結(jié)構(gòu),即普林斯頓(Princeton)結(jié)構(gòu)。INTEL的STC-51系列單片機(jī)采用的是哈佛結(jié)構(gòu)的形式,而后續(xù)產(chǎn)品16位的MCS-96系列單
18、片機(jī)則采用普林斯頓結(jié)構(gòu)。</p><p> STC-51的引腳說明:</p><p> STC-51系列單片機(jī)中的8031、8051及8751均采用40Pin封裝的雙列直接DIP結(jié)構(gòu),右圖是它們的引腳配置,40個(gè)引腳中,正電源和地線兩根,外置石英振蕩器的時(shí)鐘線兩根,4組8位共32個(gè)I/O口,中斷口線與P3口線復(fù)用?,F(xiàn)在我們對這些引腳的功能加以說明:</p><p&g
19、t; STC-51的引腳說明:</p><p> STC-51系列單片機(jī)中的8031、8051及8751均采用40Pin封裝的雙列直接DIP結(jié)構(gòu),右圖是它們的引腳配置,40個(gè)引腳中,正電源和地線兩根,外置石英振蕩器的時(shí)鐘線兩根,4組8位共32個(gè)I/O口,中斷口線與P3口線復(fù)用?,F(xiàn)在我們對這些引腳的功能加以說明:</p><p> Pin9:RESET/Vpd復(fù)位信號(hào)復(fù)用腳,當(dāng)8051
20、通電,時(shí)鐘電路開始工作,在RESET引腳上出現(xiàn)24個(gè)時(shí)鐘周期以上的高電平,系統(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)。</p><p> 8051的復(fù)位方式可以是自動(dòng)復(fù)位,也可
21、以是手動(dòng)復(fù)位,見下圖4。此外,RESET/Vpd還是一復(fù)用腳,Vcc掉電其間,此腳可接上備用電源,以保證單片機(jī)內(nèi)部RAM的數(shù)據(jù)不丟失。</p><p> Pin30:ALE/當(dāng)訪問外部程序器時(shí),ALE(地址鎖存)的輸出用于鎖存地址的低位字節(jié)。而訪問內(nèi)部程序存儲(chǔ)器時(shí),ALE端將有一個(gè)1/6時(shí)鐘頻率的正脈沖信號(hào),這個(gè)信號(hào)可以用于識(shí)別單片機(jī)是否工作,也可以當(dāng)作一個(gè)時(shí)鐘向外輸出。更有一個(gè)特點(diǎn),當(dāng)訪問外部程序存儲(chǔ)器,AL
22、E會(huì)跳過一個(gè)脈沖。如果單片機(jī)是EPROM,在編程其間,將用于輸入編程脈沖。</p><p> Pin29:當(dāng)訪問外部程序存儲(chǔ)器時(shí),此腳輸出負(fù)脈沖選通信號(hào),PC的16位地址數(shù)據(jù)將出現(xiàn)在P0和P2口上,外部程序存儲(chǔ)器則把指令數(shù)據(jù)放到P0口上,由CPU讀入并執(zhí)行。</p><p> Pin31:EA/Vpp程序存儲(chǔ)器的內(nèi)外部選通線,8051和8751單片機(jī),內(nèi)置有4kB的程序存儲(chǔ)器,當(dāng)EA為
23、高電平并且程序地址小于4kB時(shí),讀取內(nèi)部程序存儲(chǔ)器指令數(shù)據(jù),而超過4kB地址則讀取外部指令數(shù)據(jù)。如EA為低電平,則不管地址大小,一律讀取外部程序存儲(chǔ)器指令。顯然,對內(nèi)部無程序存儲(chǔ)器的8031,EA端必須接地。</p><p> 在編程時(shí),EA/Vpp腳還需加上21V的編程電壓。</p><p> 四.系 統(tǒng) 硬 件設(shè) 計(jì)</p><p> .1交通管理的方案論
24、證</p><p> 東西、南北兩干道交于一個(gè)十字路口,各干道有一組紅、黃、綠三色的指示燈,指揮車輛和行人安全通行。紅燈亮禁止通行,綠燈亮允許通行。黃燈亮提示人們注意紅、綠燈的狀態(tài)即將切換,且黃燈燃亮?xí)r間為東西、南北兩干道的公共停車時(shí)間。設(shè)東西道比南北道的車流量大,指示燈燃亮的方案如表2。</p><p><b> 表2</b></p><p&
25、gt;<b> 表2說明:</b></p><p> (1)當(dāng)東西方向?yàn)榧t燈,此道車輛禁止通行,東西道行人可通過;南北道為綠燈,此道車輛通過,行人禁止通行。時(shí)間為60秒。</p><p> (2)黃燈閃爍5秒,警示車輛和行人紅、綠燈的狀態(tài)即將切換。 </p><p> (3)當(dāng)東西方向?yàn)榫G燈,此道車輛通行;南北方向?yàn)榧t燈,南
26、北道車輛禁止通過,行人通行。時(shí)間為55秒。 東西方向車流大 通行時(shí)間長。</p><p> ?。?)這樣如上表的時(shí)間和紅、綠、黃出現(xiàn)的順序依次出現(xiàn)這樣行人和車輛就能安全暢通的通行。</p><p> ?。?)此表可根據(jù)車流量動(dòng)態(tài)設(shè)定紅綠燈初始值。</p><p><b> 2.系統(tǒng)硬件設(shè)計(jì)</b></p><p>
27、STC89C51芯片一個(gè),12M晶振一個(gè),1KΩ排阻2個(gè),10K電阻一個(gè),10uF電解電容一個(gè),22uF電容2個(gè),紅黃綠二極管各四個(gè),控制開關(guān)7個(gè),數(shù)碼管2個(gè),電源輸入接口一個(gè),數(shù)據(jù)線一根,導(dǎo)線若干。</p><p> 3 交通燈硬件線路圖 </p><p><b> 4. 焊接電路圖</b></p><p> 5.Proteus仿真圖&
28、lt;/p><p><b> 1.程序仿真前</b></p><p><b> 2.程序仿真過程中</b></p><p><b> ?。?)正常運(yùn)行</b></p><p><b> (2)黃燈亮</b></p><p><
29、;b> (3)禁止通行</b></p><p><b> 六.程序源代碼</b></p><p> #include <reg51.h></p><p> #define uchar unsigned char</p><p> #define uint unsigned int
30、</p><p> uchar data buf[4];</p><p> uchar data sec_dx=20;//東西數(shù)默認(rèn)</p><p> uchar data sec_nb=30;//南北默認(rèn)值</p><p> uchar data set_timedx=20;</p><p> uchar
31、data set_timenb=30;</p><p><b> int n;</b></p><p> uchar data countt0;//定時(shí)器0中斷次數(shù)</p><p><b> //定義5組開關(guān)</b></p><p> sbit k4=P3^7; //切換方向&l
32、t;/p><p> sbit k1=P3^5;//時(shí)間加</p><p> sbit k2=P3^6;//時(shí)間減</p><p> sbit k3=P3^4;//確認(rèn)</p><p> sbit k5=P3^1;//禁止</p><p> // P3^2//只允許東西方向通
33、行,中斷0</p><p> // P3^3//只允許南北方向通行,中斷1</p><p> sbit Red_nb=P2^5;//南北黃燈標(biāo)志</p><p> sbit Red_dx=P2^2;//東西黃燈標(biāo)志</p><p> sbit Green_nb=P2^4; //南北綠燈標(biāo)志</p>
34、;<p> sbit Green_dx=P2^1;//東西綠燈標(biāo)志</p><p> sbit Buzz=P3^0;</p><p> bit Buzzer_Indicate;</p><p> bit time=0;//燈狀態(tài)循環(huán)標(biāo)志</p><p> bit set=1;//調(diào)時(shí)方向切換
35、鍵標(biāo)志</p><p> uchar code table[11]={//共陰極字型碼</p><p> 0x3f, //--0</p><p> 0x06, //--1</p><p> 0x5b, //--2</p><p> 0x4f, //--3</p><p>
36、0x66, //--4</p><p> 0x6d, //--5</p><p> 0x7d, //--6</p><p> 0x07, //--7</p><p> 0x7f, //--8</p><p> 0x6f, //--9</p><p> 0x00 //-
37、-NULL</p><p><b> };</b></p><p><b> //函數(shù)的聲明部分</b></p><p> void delay(int ms);//延時(shí)子程序</p><p> void key();//按鍵掃描子程序</p><p>
38、; void key_to1();//鍵處理子程序</p><p> void key_to2();</p><p> void key_to3();</p><p> void display();//顯示子程序</p><p> void logo(); //開機(jī)LOGO</p><
39、;p> void Buzzer();</p><p><b> //主程序</b></p><p> void main()</p><p><b> {</b></p><p> TMOD=0X11; //定時(shí)器設(shè)置</p><p> TH0
40、=0X3C;//定時(shí)器0置初值 0.05S</p><p><b> TL0=0XB0;</b></p><p> EA=1;//開總中斷</p><p> ET0=1;//定時(shí)器0中斷開啟</p><p> TR0=1;//啟動(dòng)定時(shí)0</p><
41、p> EX0=1;//開外部中斷0</p><p> EX1=1;//開外部中斷1</p><p><b> logo();</b></p><p> P2=0Xc3;// 開始默認(rèn)狀態(tài),東西綠燈,南北黃燈 </p><p> sec_nb=sec_dx+5;
42、//默認(rèn)南北通行時(shí)間比東西多5秒</p><p><b> while(1)</b></p><p><b> { </b></p><p> key(); //調(diào)用按鍵掃描程序</p><p> display(); //調(diào)用顯示程序</p><p&
43、gt;<b> Buzzer();</b></p><p><b> }</b></p><p><b> }</b></p><p><b> //函數(shù)的定義部分</b></p><p> void key()//按鍵掃描子程序</p
44、><p><b> { </b></p><p> if(k1!=1)//時(shí)間加按下時(shí)</p><p><b> {</b></p><p> delay(10);//延時(shí)消抖</p><p> if(k1!=1)</p>&l
45、t;p><b> {</b></p><p> while(k1!=1)//當(dāng)按鍵未彈起時(shí),一直執(zhí)行</p><p><b> { </b></p><p> key_to1();//調(diào)用按鍵1功能</p><p> for(n=0;n<40;n++)//調(diào)用40次顯
46、示,用于延時(shí)</p><p> { display();}</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> if(k2!=1)//當(dāng)K2按鍵按下時(shí)&l
47、t;/p><p><b> {</b></p><p> delay(10);//延時(shí)消抖</p><p><b> if(k2!=1)</b></p><p><b> {</b></p><p> while(k2!=1)//
48、按鍵按下未彈起時(shí)一直執(zhí)行</p><p><b> { </b></p><p> key_to2();//調(diào)用key2功能</p><p> for(n=0;n<40;n++)//調(diào)用40次顯示,用于延時(shí)</p><p> { display();}</p><p><
49、b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> if(k3!=1)//當(dāng)K3(確認(rèn))鍵按下時(shí)</p><p><b> {</b></p><p>
50、; TR0=1; //啟動(dòng)定時(shí)器</p><p> Buzzer_Indicate=0;</p><p> sec_nb=set_timenb;//從中斷回復(fù),仍顯示設(shè)置過的數(shù)值</p><p> sec_dx=set_timedx;//顯示設(shè)置過的時(shí)間</p><p> if(set==1)
51、//時(shí)間倒時(shí)到0時(shí)</p><p><b> { </b></p><p> P2=0X99;//東西紅燈,南北綠燈</p><p> sec_nb=sec_dx+5; //回到初值</p><p><b> }</b></p><p><b&g
52、t; else </b></p><p><b> { </b></p><p> P2=0xC3;//東西綠燈,南北紅燈</p><p> sec_dx=sec_nb+5; </p><p><b> }</b></p><p><b&
53、gt; } </b></p><p> if(k4!=1)//當(dāng)K4(切換)鍵按下</p><p><b> {</b></p><p> delay(5);//延時(shí)消抖</p><p><b> if(k4!=1)</b></p>&
54、lt;p><b> { </b></p><p> while(k4!=1);</p><p> set=!set;//取反set標(biāo)志位,以切換調(diào)節(jié)方向</p><p><b> }</b></p><p><b> }</b></p>
55、<p> if(k5!=1)//當(dāng)K5(禁止)鍵按下時(shí)</p><p><b> {</b></p><p> delay(5);//延時(shí)消抖</p><p><b> if(k5!=1)</b></p><p><b> {</b&g
56、t;</p><p> while(k5!=1)</p><p> key_to3();</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><
57、;p> void display() //顯示子程序</p><p><b> {</b></p><p> buf[1]=sec_dx/10; //第1位 東西秒十位</p><p> buf[2]=sec_dx%10; //第2位 東西秒個(gè)位</p><p> buf[3]=sec_nb/
58、10; //第3位 南北秒十位</p><p> buf[0]=sec_nb%10; //第4位 南北秒個(gè)位</p><p> P1=0xff; // 初始燈為滅的</p><p><b> P0=0x00;</b></p><p> P1=0xfe; /
59、/片選LED1</p><p> P0=table[buf[1]];//送東西時(shí)間十位的數(shù)碼管編碼</p><p> delay(1);//延時(shí)</p><p> P1=0xff;//關(guān)顯示</p><p> P0=0x00;</p><p> P1=0xfd;
60、 //片選LED2</p><p> P0=table[buf[2]];</p><p><b> delay(1);</b></p><p><b> P1=0xff;</b></p><p><b> P0=0x00;</b></p><p
61、> P1=0Xfb; //片選LED3</p><p> P0=table[buf[3]];</p><p><b> delay(1);</b></p><p><b> P1=0xff;</b></p><p><b> P0=0x00;</b>&
62、lt;/p><p><b> P1=0Xf7;</b></p><p> P0=table[buf[0]];//片選LED4</p><p><b> delay(1);</b></p><p><b> }</b></p><p> voi
63、d time0(void) interrupt 1 using 1 //定時(shí)中斷子程序</p><p><b> {</b></p><p> TH0=0X3C;//重賦初值</p><p><b> TL0=0XB0;</b></p><p> TR0=1;
64、//重新啟動(dòng)定時(shí)器</p><p> countt0++;//軟件計(jì)數(shù)加1</p><p> if(countt0==20) // 定時(shí)器中斷次數(shù)=20時(shí)(即1秒時(shí))</p><p> {countt0=0;//清零計(jì)數(shù)器</p><p> sec_dx--;/
65、/東西時(shí)間減1</p><p> sec_nb--;//南北時(shí)間減1</p><p> if(sec_nb<=5&&time==0) //東西黃燈閃</p><p><b> {</b></p><p> Green_dx=0;</p><p>
66、 Red_dx=!Red_dx;</p><p> } </p><p> if(sec_dx<=5&&time==1) //南北黃燈閃</p><p><b> { </b></p><p> Green_nb=0;</p><p>
67、 Red_nb=!Red_nb;</p><p> } </p><p> if(sec_dx==0&&sec_nb==5) //當(dāng)東西倒計(jì)時(shí)到0時(shí),重置5秒,用于黃燈閃爍時(shí)間</p><p><b> sec_dx=5;</b></p><p> if(sec_nb==0&a
68、mp;&sec_dx==5)//當(dāng)南北倒計(jì)時(shí)到0時(shí),重置5秒,用于黃燈閃爍時(shí)間</p><p><b> sec_nb=5;</b></p><p> if(time==0&&sec_nb==0)//當(dāng)黃燈閃爍時(shí)間倒計(jì)時(shí)到0時(shí),</p><p><b> { </b></p&g
69、t;<p> P2=0x99;//重置東西南背方向的紅綠燈</p><p> time=!time;</p><p> sec_nb=set_timenb;//重賦南北方向的起始值</p><p> sec_dx=set_timenb+5;//重賦東西方向的起始值</p><p><b>
70、 }</b></p><p> if(time==1&&sec_dx==0)//當(dāng)黃燈閃爍時(shí)間到</p><p><b> {</b></p><p> P2=0Xc3;//重置東西南北的紅綠燈狀態(tài)</p><p> time=!time;</p>&
71、lt;p> sec_dx=set_timedx;//重賦東西方向的起始值</p><p> sec_nb=set_timedx+5;}//重賦南北方向的起始值</p><p><b> }</b></p><p><b> }</b></p><p> void key_
72、to1()//鍵盤處理子程序之+</p><p><b> {</b></p><p> TR0=0; //關(guān)定時(shí)器</p><p> if(set==0)</p><p> set_timenb++; //南北加1S</p><p><b>
73、 else</b></p><p> set_timedx++; //東西加1S</p><p> if(set_timenb==100)</p><p> set_timenb=1;</p><p> if(set_timedx==100)</p><p> set_timedx=1
74、; //加到100置1</p><p> sec_nb=set_timenb ; //設(shè)置的數(shù)值賦給東西南北</p><p> sec_dx=set_timedx;//</p><p><b> }</b></p><p> void key_to2() //鍵盤處理子程序之-</p
75、><p><b> {</b></p><p> TR0=0; //關(guān)定時(shí)器</p><p> if(set==0)</p><p> set_timenb--; //南北減1S</p><p><b> else</b></p>
76、;<p> set_timedx--; //東西減1S</p><p> if(set_timenb==0)</p><p> set_timenb=99;</p><p> if(set_timedx==0 )</p><p> set_timedx=99; //減到1重置99</p>&
77、lt;p> sec_nb=set_timenb ; //設(shè)置的數(shù)值賦給東西南北</p><p> sec_dx=set_timedx;</p><p><b> }</b></p><p> void key_to3() //鍵盤處理之緊急車通行</p><p><b> {</
78、b></p><p> TR0=0;//關(guān)定時(shí)器</p><p> P2=0Xc9;//全部置紅燈</p><p> sec_dx=00;//四個(gè)方向的時(shí)間都為00</p><p> sec_nb=00;</p><p> Buzzer_Indicate=1;</p><p
79、><b> }</b></p><p><b> //外部中斷0</b></p><p> void int0(void) interrupt 0 using 1 //只允許東西通行</p><p><b> {</b></p><p> TR0=0;
80、//關(guān)定時(shí)器</p><p> P2=0Xc3;//東西方向置綠燈</p><p> Buzzer_Indicate=0;</p><p> sec_dx=00;//四個(gè)方向的時(shí)間都為00</p><p> sec_nb=00;</p><p><b> }
81、</b></p><p><b> //外部中斷1</b></p><p> void int1(void) interrupt 2 using 1 //只允許南北通行 </p><p><b> {</b></p><p> TR0=0;//關(guān)定時(shí)器&l
82、t;/p><p> P2=0X99;//置南北方向?yàn)榫G燈</p><p> Buzzer_Indicate=0;</p><p> sec_nb=00;//四個(gè)方向的時(shí)間都為00</p><p> sec_dx=00;</p><p><b> }</b><
83、/p><p> void logo()//開機(jī)的Logo "- - - -"</p><p><b> { </b></p><p> for(n=0;n<50;n++)</p><p><b> {</b></p><p><b>
84、 P0=0x40;</b></p><p><b> P1=0xfe;</b></p><p><b> delay(1);</b></p><p><b> P1=0xfd;</b></p><p><b> delay(1);</b&g
85、t;</p><p><b> P1=0Xfb;</b></p><p><b> delay(1);</b></p><p><b> P1=0Xf7;</b></p><p><b> delay(1);</b></p><
86、p> P1 = 0xff;</p><p><b> }</b></p><p><b> }</b></p><p> void Buzzer()</p><p><b> {</b></p><p> if(Buzzer_Indic
87、ate==1)</p><p> Buzz=!Buzz;</p><p> else Buzz=0;</p><p><b> }</b></p><p> void delay(int ms)//延時(shí)子程序</p><p><b> {</b></p&g
88、t;<p><b> uint j,k;</b></p><p> for(j=0;j<ms;j++)//延時(shí)ms</p><p> for(k=0;k<124;k++);//大約1毫秒的延時(shí)</p><p><b> }</b></p><p><
89、b> 七.總結(jié)</b></p><p> 此次課程設(shè)計(jì)歷時(shí)一個(gè)月,在此期間查閱了出課本以外的很多資料,當(dāng)然了也包括對課本的全面復(fù)習(xí),是我對這兩年多以來所學(xué)的知識(shí)有了一個(gè)系統(tǒng)的連貫、全面的復(fù)習(xí)。很多以前不太了解的知識(shí)都得到了進(jìn)一步的理解和認(rèn)知。</p><p> 通過這次長達(dá)一個(gè)月的電子產(chǎn)品課程設(shè)計(jì),使我得到了一次用專業(yè)知識(shí)、專業(yè)技能分析和解決問題全面系統(tǒng)鍛煉的機(jī)會(huì)。
90、使我在單片機(jī)的基本原理、單片機(jī)應(yīng)用系統(tǒng)開發(fā)過程,單片機(jī)控制過程以及在常用編程設(shè)計(jì)思路技巧(特別是匯編語言)的掌握方面和Proteus程序仿真都向前邁了一大步,這件為我的成長注入更大的活力,堅(jiān)定了我步入社會(huì)的信心。</p><p><b> 八..參考文獻(xiàn)</b></p><p> 1張毅坤. 單片微型計(jì)算機(jī)原理及應(yīng)用,西安電子科技大學(xué)出版社 1998 </
91、p><p> 2余錫存 曹國華.單片機(jī)原理及接口技術(shù)[M].陜西:西安電子科技大學(xué)出版社,2000.7</p><p> 3李全利 單片機(jī)原理及應(yīng)用技術(shù).高等教育出版社</p><p> 4丁明亮 唐前輝.51單片機(jī)應(yīng)用設(shè)計(jì)與仿真.北京航空航天大學(xué)出版社</p><p> 5雷麗文 等.微機(jī)原理與接口技術(shù)[M].北京:電子工業(yè)出版社,19
溫馨提示
- 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. 眾賞文庫僅提供信息存儲(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于51單片機(jī)控制的交通燈的課程設(shè)計(jì)
- 單片機(jī)交通燈課程設(shè)計(jì)--基于單片機(jī)的交通燈控制設(shè)計(jì)
- 51單片機(jī)交通燈課程設(shè)計(jì)
- 課程設(shè)計(jì)---基于51單片機(jī)的交通燈設(shè)計(jì)
- 基于51單片機(jī)的智能交通燈課程設(shè)計(jì)
- 基于51單片機(jī)的智能交通燈課程設(shè)計(jì)
- 基于51單片機(jī)的智能交通燈課程設(shè)計(jì)
- 交通燈控制器課程設(shè)計(jì)--基于51單片機(jī)的交通燈控制系統(tǒng)
- 單片機(jī)交通燈課程設(shè)計(jì)--基于單片機(jī)的交通燈系統(tǒng)的設(shè)計(jì)
- 交通燈單片機(jī)課程設(shè)計(jì)--基于單片機(jī)的交通燈顯示系統(tǒng)
- 交通燈單片機(jī)課程設(shè)計(jì)--基于單片機(jī)的交通燈顯示系統(tǒng)
- 單片機(jī)交通燈課程設(shè)計(jì)--基于單片機(jī)的交通燈系統(tǒng)的設(shè)計(jì)
- 單片機(jī)交通燈的控制課程設(shè)計(jì)
- 單片機(jī)控制交通燈課程設(shè)計(jì)
- 單片機(jī)控制交通燈課程設(shè)計(jì)
- 單片機(jī)控制交通燈課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--基于單片機(jī)的交通燈設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---交通燈控制
- 交通燈課程設(shè)計(jì)--基于單片機(jī)的交通燈控制系統(tǒng)設(shè)計(jì)
- 基于單片機(jī)的交通燈課程設(shè)計(jì)
評論
0/150
提交評論