第一篇:《交通燈的可編程控制》教學(xué)設(shè)計
《交通燈的可編程控制》教學(xué)設(shè)計
摘 要: 采用任務(wù)驅(qū)動,由觀察實際交通燈的變化引出本次任務(wù),進(jìn)行任務(wù)分析、決策、實施,最后進(jìn)行總結(jié)評價,幫助學(xué)生更好地掌握由可編程控制器控制交通燈變化。
關(guān)鍵詞: 任務(wù) PLC 十字路口交通燈
可編程控制器是目前應(yīng)用極為廣泛的工業(yè)控制專業(yè),是集機(jī)、電于一體實踐性很強(qiáng)的專業(yè)課,是機(jī)電專業(yè)中專學(xué)生的主干課程,也是維修電工國家職業(yè)資格的核心課程。
一、教材分析
本節(jié)課項目選自《可編程序控制器應(yīng)用技術(shù)》(機(jī)械工業(yè)出版社 程顯吉主編)第二章《S7-200系列PLC的基本指令及尋址方式》中第二節(jié)《定時器指令》,本教材是中等職業(yè)教育“十一五”規(guī)劃教材。
二、學(xué)情分析
本節(jié)課的授課對象是中職機(jī)電技術(shù)應(yīng)用專業(yè)二年級學(xué)生,大多數(shù)學(xué)生的數(shù)理邏輯思維能力差,且注意力難于保持較長時間。學(xué)生對純理論的學(xué)習(xí)缺乏興趣,對實踐操作興趣較濃厚,但執(zhí)行規(guī)范的能力及遵守紀(jì)律的意識較差。
三、教學(xué)目標(biāo)
(一)知識與技能
1.掌握用PLC控制十字路口交通燈的時序圖繪制、I/O分配及實物接線圖繪制。
2.掌握西門子PLC基本指令、定時器指令及比較指令的使用。
3.掌握十字路口交通燈的PLC程序設(shè)計。
4.掌握簡單故障現(xiàn)象的檢修。
(二)過程與方法
通過任務(wù)分析、任務(wù)決策、任務(wù)實施、總結(jié)與評價,實現(xiàn)“做中學(xué),學(xué)中做”。
(三)情感與態(tài)度
1.實事求是的學(xué)習(xí)態(tài)度和探究能力。
2.小組合作的團(tuán)隊精神和競賽意識。
3.樹立安全文明生產(chǎn)的觀念,形成良好的職業(yè)道德。
四、教學(xué)重點(diǎn)與難點(diǎn)
(一)教學(xué)重點(diǎn)
1.掌握用PLC控制十字路口交通燈的I/O分配及PLC的外部接線圖。
2.掌握THSMS-A型實驗臺上交通燈控制的接線。
3.掌握十字路口交通燈的控制過程,并熟練使用編程軟件進(jìn)行程序編寫、下載、調(diào)試。
(二)教學(xué)難點(diǎn)
1.十字路口交通燈的程序設(shè)計。
2.解決在實際操作過程中出現(xiàn)的故障。
五、教學(xué)方法
“做中教”,采用情境教學(xué)、任務(wù)驅(qū)動、啟發(fā)式教學(xué)等方法,通過操作演示、啟發(fā)引導(dǎo)、個別指導(dǎo)、點(diǎn)評反饋等手段展開教學(xué)。
“做中學(xué)”,采用探究式、討論式、合作式、實踐式等學(xué)習(xí)方法,通過自主學(xué)習(xí)和小組合作學(xué)習(xí)等途徑進(jìn)行學(xué)習(xí)。
六、教學(xué)過程
(一)課前準(zhǔn)備
1.布置學(xué)生觀察某一十字路口交通燈的變化情況,并拍攝一段視頻上交。
2.學(xué)生查閱書籍,回憶老師講過的指令思考如果用PLC控制技術(shù)實現(xiàn)該路口的交通燈控制,那么怎么辦?
(二)課堂活動
1.活動一:項目引入。
老師播放視頻,創(chuàng)設(shè)情境,抓住學(xué)生注意力,激發(fā)學(xué)生的學(xué)習(xí)興趣。
2.活動二:任務(wù)分析。
(1)項目描述:PLC實現(xiàn)交通信號燈的控制,規(guī)律:先是東西方向綠燈亮25秒,然后閃亮3秒,綠燈閃過之后是東西方向黃燈亮2秒,接下來是南北方向綠燈亮15秒、閃亮3秒及南北方向黃燈亮2秒。在東西方向綠燈亮、閃亮及東西方向黃燈亮的同時,南北方向亮的是紅燈;在南北方向綠燈亮、閃亮及南北方向黃燈亮的同時,東西方向亮的是紅燈。信號燈按此規(guī)律不斷重復(fù)。(2)老師播放視頻,了解最終正確顯示結(jié)果。(3)引導(dǎo)學(xué)生畫出十字路口交通燈時序圖。
3.活動三:任務(wù)決策。
(1)確定I/O分配。(2)繪制PLC外部接線圖。(3)繪制實際接線圖的連接。(4)確定編程思路及主要使用的指令。
4.活動四:任務(wù)實施
(1)播放視頻強(qiáng)調(diào)安全操作注意點(diǎn):除調(diào)試外,不能帶電操作,尤其是接線一定要斷電。播放視頻老師演示接線。(2)搭建硬件電路,安全接線,并檢測接線可靠性。(3)用軟件編寫梯形圖,下載并進(jìn)行調(diào)試。
賽一賽,看哪一組配合得好,做得既快又好,評選出前三名并發(fā)小獎品以示鼓勵。
(4)故障排除。
5.任務(wù)五:提高與總結(jié)
(1)對任務(wù)實施過程中學(xué)生出現(xiàn)的故障進(jìn)行分析,對照常見故障檢修表,和學(xué)生一起討論故障檢修的方法,化解難點(diǎn)。賽一賽:設(shè)置故障,小組派一名成員進(jìn)行比賽故障檢修,看哪一組快。(2)給出樣例程序并進(jìn)行總結(jié)。(3)填寫學(xué)習(xí)過程評價表。
6.任務(wù)六:布置作業(yè)
七、教學(xué)反思
(一)可取之處
1.項目選取“十字路口交通燈的PLC控制”貼近學(xué)生生活實際,較好地激發(fā)了學(xué)生的學(xué)習(xí)興趣和學(xué)習(xí)動機(jī);難度適中,由項目的評估和驗收情況來看,95%的同學(xué)能夠完成任務(wù),鍛煉技能的同時,極大提高學(xué)習(xí)成就感,為今后的繼續(xù)學(xué)習(xí)打下堅實基礎(chǔ)。
2.教學(xué)設(shè)計上以十字路口交通燈的控制的整個工作過程為導(dǎo)向,將具體教學(xué)目標(biāo)落實到各個工作任務(wù)中,同時,學(xué)生工作頁中的知識鏈接、操作指導(dǎo)和教師制作的教學(xué)視頻,為本項目的教學(xué)重點(diǎn)難點(diǎn)提供了所需補(bǔ)充,達(dá)到了化難為易的目的。
3.組織形式,通過小組合作學(xué)習(xí),較好地實現(xiàn)了優(yōu)勢互補(bǔ),特別是在故障檢修環(huán)節(jié),如一個小組內(nèi)故障不盡相同,這時小組內(nèi)同學(xué)相互檢查、排故。另外就常見故障現(xiàn)象及解決辦法我列出了表格幫助同學(xué)進(jìn)行排查,較好地解決了難題。
4.評價方式,在教學(xué)環(huán)節(jié)中,變由教師一方評價為學(xué)生自評、互評,老師總評的大家一起參與的評價方式,起到了很好的互動作用。
(二)不足之處
進(jìn)度控制方面,由于學(xué)生在知識和能力方面存在較大差異,小組內(nèi)完成時間相差較多,一定程度上影響了整體進(jìn)度。
(三)改進(jìn)措施
進(jìn)一步做好學(xué)情調(diào)查,更加合理地組建學(xué)習(xí)小組,更好地實現(xiàn)互補(bǔ)。
第二篇:十字路口交通燈控制設(shè)計
網(wǎng)絡(luò)教育學(xué)院
《可編程控制器》大作業(yè)
題
目: 十字路口交通燈控制設(shè)計
學(xué)習(xí)中心: 遼寧彰武電大學(xué)習(xí)中心 層 次: 高中起點(diǎn)??? 專 業(yè): 電力系統(tǒng)自動化技術(shù)
年 級: 2015 年 秋 季 學(xué) 號: ***6 學(xué)生姓名: 陳 潤 澤
題目五:十字路口交通燈控制設(shè)計
起動后,南北紅燈亮并維持30s。在南北紅燈亮的同時,東西綠燈也亮,東西綠燈亮25s后閃亮,3s后熄滅,東西黃燈亮,黃燈亮2s后,東西紅燈亮,與此同時,南北紅燈滅,南北綠燈亮。南北綠燈亮25s后閃亮,3s后熄滅,南北黃燈亮,黃燈亮2s后,南北紅燈亮,東西紅燈滅,東西綠燈亮。依次循環(huán)。
十字路口交通燈控制示意圖及時序圖如下圖所示。
設(shè)計要求:(1)首先對可編程序控制器(PLC)的產(chǎn)生與發(fā)展、主要性
能指標(biāo)、分類、特點(diǎn)、功能與應(yīng)用領(lǐng)域等進(jìn)行簡要介紹;
(2)設(shè)計選用西門子S7-200 系列PLC,對其I/O口進(jìn)行分配,并使用STEP7-MicroWIN編程軟件設(shè)計程序梯形圖(梯形圖截圖后放到作業(yè)中);
(3)總結(jié):需要說明的問題以及設(shè)計的心得體會。
設(shè)計背景 1.1 背景概述
本文對十字路口交通信號燈控制系統(tǒng),運(yùn)用可編程邏輯器件PLC做了軟件與硬件的設(shè)計,能基本達(dá)到控制要求。系統(tǒng)僅實現(xiàn)了小型PLC系統(tǒng)的一個雛形,在完善各項功能方面都還需要進(jìn)一步的分析、研究和調(diào)試工作。如果進(jìn)一步結(jié)合工業(yè)控制的要求,形成一個較為成型的產(chǎn)品,則需要作更多、更深入的研究。
1.2 可編程邏輯控制器簡介
可編程邏輯控制器(Programmable Logic Controller,簡稱 PLC)根據(jù)國際電工委員會(IEC)在1987年的可編程控制器國際標(biāo)準(zhǔn)第三稿中,對其作了如下定義:“可編程控制器是一種數(shù)字運(yùn)算操作的電子系統(tǒng),專為在工業(yè)環(huán)境應(yīng)用而設(shè)計的。它采用可編程序的存儲器,用來在其內(nèi)部存儲執(zhí)行邏輯運(yùn)算,順序控制,定時,計數(shù)與算術(shù)運(yùn)算等操作的指令,并通過數(shù)字式、模擬式的輸入和輸出,控制各種類型的機(jī)械或生產(chǎn)過程。可編程控制器及其有關(guān)外部設(shè)備,都應(yīng)按易于使工業(yè)控制系統(tǒng)形成一個整體,易于擴(kuò)充其功能的原則設(shè)計。”可編程控制器作為目前工業(yè)自動化的重要基礎(chǔ)設(shè)備,被稱為“工業(yè)自動化三大支柱性產(chǎn)業(yè)之一”,在各工業(yè)生產(chǎn)領(lǐng)域發(fā)揮著愈來愈大的作用。十字路口交通信號燈PLC控制系統(tǒng)簡介 2.1 控制對象及要求 2.1.1 控制對象
本系統(tǒng)的控制對象有八個,分別是: 東西方向紅燈(R—EW)兩個; 南北方向紅燈(R—SN)兩個; 東西方向黃燈(Y—EW)兩個; 南北方向黃燈(Y—SN)兩個; 東西方向綠燈(G—EW)兩個; 南北方向綠燈(G—SN)兩個; 東西方向左轉(zhuǎn)彎綠燈(L—EW)兩個; 南北方向左轉(zhuǎn)彎綠燈(L—SN)兩個。2.1.2 控制要求
1、系統(tǒng)工作受開關(guān)控制,起動開關(guān) ON 則系統(tǒng)工作;起動開關(guān) OFF 則系統(tǒng)停止工作;
2、交通信號燈按高峰時段、正常時段及晚上時段進(jìn)行控制,這三個時段的的時序分配如圖1所示;
3、在高峰時段,交通信號燈按圖2所示時序控制;
4、在正常時段,交通信號燈按圖3 所示時序控制;
5、晚上時段按提示警告方式運(yùn)行,規(guī)律為: 東、南、西、北四個黃燈全部閃亮,其余燈全部熄滅,黃燈閃亮按亮 0.4 秒,暗 0.6 秒的規(guī)律反復(fù)循環(huán)。
2.2 系統(tǒng)簡介
本系統(tǒng)是一個十字路口交通燈的PLC控制系統(tǒng),利用西門子公司的S7-200可編程邏輯控制器對十字路口的交通燈進(jìn)行控制。本系統(tǒng)具有一定的智能性,即它可以對交通燈按高峰期、正常期及晚間幾個時段進(jìn)行分段控制。高峰期的控制方案為:
(1)南北方向左轉(zhuǎn)彎燈和南北南北方向紅燈同時亮10秒,同時東西方向紅燈亮;
(2)南北方向綠燈亮35秒,東西方向紅燈繼續(xù)亮;(3)南北方向黃燈閃爍5秒;東西方向紅燈繼續(xù)亮;
(4)東西方向左轉(zhuǎn)彎綠燈和南北方向紅燈同時亮10秒,東西方向紅燈繼續(xù)亮;(5)東西方向綠燈亮25秒,南北方向紅燈繼續(xù)亮;
(6)東西方向黃燈閃爍5秒,南北方向紅燈繼續(xù)亮,然后跳至第(1)步依次循環(huán)。
正常期的控制方案為:
(1)南北方向左轉(zhuǎn)彎燈和南北南北方向紅燈同時亮10秒,同時東西方向紅燈亮;(2)南北方向綠燈亮30秒,東西方向紅燈繼續(xù)亮;(3)南北方向黃燈閃爍5秒;東西方向紅燈繼續(xù)亮;
(4)東西方向左轉(zhuǎn)彎綠燈和南北方向紅燈同時亮10秒,東西方向紅燈繼續(xù)亮;(5)東西方向綠燈亮30秒,南北方向紅燈繼續(xù)亮;
(6)東西方向黃燈閃爍5秒,南北方向紅燈繼續(xù)亮,然后跳至第(1)步依次循環(huán)。
晚間的控制方案為:
東、南、西、北四個黃燈全部閃亮,其余燈全部熄滅,黃燈閃亮按亮 0.4 秒,暗 0.6 秒的規(guī)律反復(fù)循環(huán)。
2.3 硬件選型
城市道路交通信號控制是典型的開關(guān)量順序控制,采用PLC能充分利用它的優(yōu)點(diǎn)。在這里我們采用德國西門子公司的S7-200可編程控制器,它是積木式結(jié)構(gòu),安裝比較方便,中央處理單元和信號模板有多種類型,另外還具有如位控單元、PD調(diào)節(jié)等特殊功能模塊。根據(jù)本系統(tǒng)輸入點(diǎn)數(shù)及控制要求,中央處理單元可選用CPU224,該CPU板上本身具有10個數(shù)字量輸入點(diǎn),6個非隔離數(shù)字量輸出點(diǎn),最多能夠帶8個數(shù)字量信號模板。
電源模塊將交流電源轉(zhuǎn)換成供CPU,存儲器等所有擴(kuò)展模塊使用的直流電源,是整個PLC系統(tǒng)的能源供給中心,它的好壞直接影響到PLC的穩(wěn)定性和可靠。S7-200屬于小型PLC,電源模塊與CPU模塊封裝在一起,通過連接總線為本機(jī)和擴(kuò)展模塊提供+5V(DC)電源。同時,還可通過端子向外輸出一個+24V(DC)電源,供本機(jī)輸入點(diǎn)和擴(kuò)展模塊繼電器線圈使用。需注意的是,從資料中我們了解到,外部電源不可與S7-200的傳感器電源并聯(lián)使用。否則,交會導(dǎo)致兩個電源的竟?fàn)幎绊懰鼈兏髯缘妮敵?,縮短其使用壽命,使得一個或兩個電源同時失效,使PLC系統(tǒng)產(chǎn)生不正確的操作。正確的使用方法是S7-200的傳感器電源和外部電源應(yīng)該在不同的點(diǎn)上提供電源,而兩者之間只能有一個會共連接點(diǎn)。
由于根據(jù)控制要求所確定的輸入輸出點(diǎn)分別人二個和九個,由于我們是以一個路口信號單獨(dú)控制為例,考慮到夠用為準(zhǔn)。所以我們選擇了CPU224這一具有較強(qiáng)控制功能的控制器。
另外,在硬件選型時,不要忘記完成現(xiàn)場測試及軟件編程時所需的一些設(shè)備。綜上,得到系統(tǒng)硬件配置如表1所示:
表1 硬件配置表 名 稱 數(shù) 量 DC24V電源 1 CPU224 1 PC/PPI編程電纜 STEP7編程軟件 1 PC機(jī) 1 3 系統(tǒng)I/O分配
分析PLC的輸入和輸出信號,在滿足控制要求的前提下,要盡量減少占用PLC的I/O點(diǎn)。由系統(tǒng)控制要求可見,由控制開關(guān)輸入的啟、停信號是輸入信號。由PLC的輸出信號控制各指示燈的亮、滅。在交通燈布置圖中,南北方向的三色燈共六盞,同顏色的燈在同一時間亮、滅;所以,可將同色燈兩兩并聯(lián),用一個輸出信號控制。同理,東西方向的三色燈也依次設(shè)計。再加上東西方向左轉(zhuǎn)的三色燈共九盞,所以其占9個輸出點(diǎn)。由此可得系統(tǒng)I/O分配如表2所示:
表2 系統(tǒng)I/O分配表
輸入/輸出 設(shè)備/器件名稱 I/O地址 輸入 校正當(dāng)前時鐘 I0.0
符號名 數(shù)據(jù)類型 1
SB0 BOOL 程序啟停按鈕 I0.1 SB1 BOOL
Q1 DINT 輸出
東西方向綠燈 Q0.0 東西方向黃燈 Q0.1 東西方向紅燈 Q0.2 南北方向綠燈 Q0.3
Q2 DINT Q3 DINT Q4 INT
南北方向黃燈 Q0.4 南北方向紅燈 Q0.5
Q5 INT Q6 INT
Q7 INT Q8 INT 東西方向左轉(zhuǎn)彎燈 Q0.6 南北方向左轉(zhuǎn)彎燈 Q0.7 4 軟件設(shè)計
本控制系統(tǒng)的控制原理是:用一路數(shù)字量的不同輸入狀態(tài)來判定是否對時鐘進(jìn)行初始化,用一路數(shù)字量的不同輸入狀態(tài)分別用作程序的啟動和停止控制,每一方向有紅、黃、綠及轉(zhuǎn)彎四種信號燈,分別對應(yīng)四位數(shù)字量輸出,兩個方向共有8位數(shù)定量輸出;在某一方向用兩個延時脈沖定時器分別控制該方向黃燈閃爍的亮、滅時間,根據(jù)道路人車流量多少,分別設(shè)置各信號燈亮滅時間的長短,通過6個定時器依次交替工作,就可實現(xiàn)各方向交通信號燈的順序工作。本文所設(shè)計的軟件由一個主程序和四個子程序(時鐘初始化子程序,晚間時段交通燈控制子程序,正常時段交通燈控制子程序和高峰時段交通燈控制子程序)組成。主程序主要任務(wù)包括:讀取兩個開關(guān)狀態(tài),根據(jù)開關(guān)的不同狀態(tài)做出相應(yīng)的處理,當(dāng)開關(guān)SB0閉合時則對時鐘進(jìn)行初始化,反之則不對時鐘進(jìn)行初始化;當(dāng)開關(guān)SB1閉合時,則讀取時鐘值,并做處理,根據(jù)處理后的時鐘值的大小判定當(dāng)前時間是屬于哪個時間段,并調(diào)用相應(yīng)的交通燈控制子程序,反之,則停止程序的運(yùn)行主程序流程圖如圖5所示。晚間時段的控制規(guī)律為:兩個方向的四個黃燈均按亮0.4秒滅0.6秒的規(guī)律閃爍,其余的交通燈全滅程序中將用到兩個定時器T37和T38,各定時器的功能如表3所示。正常時段的控制方案結(jié)構(gòu)圖如圖6所示,程序中將用到8個定時T37-T44,各定時器的功能如表4所示。高峰時段的控制方案結(jié)構(gòu)圖如圖7所示,程序中將用到8個定時T37-T44,各定時器的功能如表5所示。
該程序?qū)崿F(xiàn)了信號由東西左轉(zhuǎn)、東西直行、南北直行依次循環(huán)變化。其優(yōu)勢思路簡單,容易理解,對時鐘的校正以及各時段的起始時間和終止時間的修改方便。如路口要求在晚上10:00以后實行各方向黃色信號燈閃爍功能,只需要將實時采集PLC的時鐘信號作為一個子程序的跳轉(zhuǎn)條件,再增加一段閃光程序即可。如果需要將幾個路口集中到一臺PLC控制,根據(jù)實際需要的I/O點(diǎn)數(shù),硬件上再增加相應(yīng)的數(shù)字量輸出模板即可。需要指出的是,用PLC實現(xiàn)城市道路關(guān)通信號控制,最好幾個路口共用一套PLC,這樣可以大大降低工程成本。
表3 晚間時段各定時器一個循環(huán)中的功能明細(xì)表 定時器 t0 t1 T2 T37 定時0.4秒 開始定時,黃燈亮 定時到,輸出ON且保持;黃燈滅 開始下一次循環(huán)的定時 T38 定時1秒 開始定時 繼續(xù)定時 定時到,輸出ON,隨即復(fù)位開始下一次循環(huán)的定時,黃燈亮。
表4 正常時段各定時器一個循環(huán)中的功能明細(xì)表 定時器 t0 t1 t2 t3 t4 t5 t6 T37 定時10秒 開始定時,南北轉(zhuǎn)彎燈、南北紅燈、東西紅燈亮。定時到,輸出ON且保持;南北轉(zhuǎn)彎燈滅,南北綠燈亮,東西紅燈繼續(xù)亮。開始下一個循環(huán)定時
ON ON ON ONT38 定時40秒 開始定時 繼續(xù)定時 定時到,輸出ON且保持;南北綠燈滅,南北黃燈閃爍,東西紅燈繼續(xù)亮。T39 定時45秒 開始定時 繼續(xù)定時 繼續(xù)定時 定時到,輸出ON且保持;南北黃燈滅,東西轉(zhuǎn)彎燈、南北紅燈亮,東西紅燈繼續(xù)亮。ON ON 開始下一個循
ON ON ON 開始下一個循環(huán)定時 環(huán)定時 T40 定時55秒 開始定時 繼續(xù)定時 繼續(xù)定時 繼續(xù)定時 定時到,輸出ON且保持;東西轉(zhuǎn)彎、東西紅燈滅,東西綠燈亮,南北紅燈繼續(xù)亮。一個循環(huán)定時 T41 定時85秒 開始定時 繼續(xù)定時 繼續(xù)定時 繼續(xù)定時 繼續(xù)定時 定
時
ON 開始下到,輸出ON且保持;東西綠燈滅,東西黃燈閃爍,南北紅燈繼續(xù)亮。開始下一個循環(huán)定時 T42 定時90秒 開始定時 繼續(xù)定時 繼續(xù)定時 繼續(xù)定時 繼續(xù)定時 繼續(xù)定時 定時到,輸出ON,隨即復(fù)位開始下一次循環(huán)定時;東西黃燈、南北紅燈滅,南北轉(zhuǎn)彎燈、南北紅燈、東西紅燈亮。
表5 高峰時段各定時器一個循環(huán)中的功能明細(xì)表 定時器 t0 t1 t2 t3 t4 t5 t6 T37 定時10秒 開始定時,南北轉(zhuǎn)彎燈、南北紅燈、東西紅燈亮。定時到,輸出ON且保持;南北轉(zhuǎn)彎燈滅,南北綠燈亮,東西紅燈繼續(xù)亮。開始下一個循環(huán)定時
ON ON ON ONT38 定時45秒 開始定時 繼續(xù)定時 定時到,輸出ON且保持;南北綠燈滅,南北黃燈閃爍,東西紅燈繼續(xù)亮。T39 定時50秒 開始定時 繼續(xù)定時 繼續(xù)定時 定時到,輸出ON且保持;南北
ON ON ON 開始下一個循環(huán)定時 黃燈滅,東西轉(zhuǎn)彎燈、南北紅燈亮,東西紅燈繼續(xù)亮。ON ON 開始下一個循環(huán)定時 T40 定時60秒 開始定時 繼續(xù)定時 繼續(xù)定時 繼續(xù)定時 定時到,輸出ON且保T41 定時85秒 開始定時 繼續(xù)定時 繼續(xù)定時 繼續(xù)定時 繼續(xù)定時 定
時到,輸出ON且保持;東西綠燈滅,東西黃燈閃爍,南北紅燈繼續(xù)亮。開始下一個循環(huán)定時 T42 定時90秒 開始定時 繼續(xù)定時 繼續(xù)定時 繼續(xù)定時 繼續(xù)定時 繼續(xù)定時 定時到,輸出ON,隨即復(fù)位開始下一次循環(huán)定時;東西黃燈、南北紅燈滅,南北轉(zhuǎn)彎燈、南北紅燈、東西紅燈亮。持;東西轉(zhuǎn)彎、東西紅燈滅,東西綠燈亮,南北紅燈繼續(xù)亮。5 程序編輯
附錄 源程序-STL語句 ORGANIZATION_BLOCK 主:OB1 TITLE=程序注解 VAR T:BYTE;//時鐘值緩沖區(qū) H:INT;//小時數(shù)存儲單元 M:INT;//分鐘數(shù)存儲單元 SEC:INT;//秒鐘數(shù)存儲單元
Tim:WORD;//小時數(shù)乘100加分鐘數(shù)乘10加秒鐘數(shù)所得結(jié)果存儲單元 END_VAR BEGIN Network 1 // 網(wǎng)絡(luò)標(biāo)題 // 網(wǎng)絡(luò)注解 LD I0.0 CALL SBR0 //開關(guān)SB0閉合,調(diào)用SBR0(INIT)對時鐘進(jìn)行初始化 Network 2 LDN I0.1 //起動/停止開關(guān)SB1斷開,則停止程序 STOP Network 3 LD I0.1 TODR LB0 //起動/停止開關(guān)SB1閉合,則起動程序,讀取時鐘 Network 4 LD I0.1 INCB LB0 Network 5 LD I0.1 INCB LB0 Network 6 LD I0.1 INCB LB0 //T加3指向小時存儲單元 Network 7 LD I0.1 BTI LB0, LW1 //將小時由字節(jié)型轉(zhuǎn)換為整型 Network 8 LD I0.1 MOVW LW1, VW16 *I +100, VW16 //將小時的數(shù)值乘以100 Network 9 LD I0.1 INCB LB0 //將T指向分鐘存儲單元 Network 10 LD I0.1 BTI LB0, LW3 //將分鐘由字節(jié)型轉(zhuǎn)換為整型 Network 11 LD I0.1 MOVW LW3, VW18 *I +10, VW18 //將分鐘的數(shù)值乘以10 Network 12 LD I0.1 MOVW VW16, VW20 +I VW18, VW20 //將小時數(shù)乘100與分鐘數(shù)乘10相加 Network 13 LD I0.1 INCB LB0 //將T指向秒鐘存儲單元 Network 14 LD I0.1 BTI LB0, LW5 //將秒鐘由字節(jié)型轉(zhuǎn)換為整型 Network 15 LD I0.1 MOVW VW14, LW7 +I LW5, LW7 //將小時數(shù)乘100與分鐘數(shù)乘10相加所得的結(jié)果與秒鐘數(shù)相//加得Tim Network 16 LDW<= LW7, 630序
CALL SBR1 //Tim小于630時,則調(diào)用SBR1(SUBE)子程 Network 17 LDW< LW7, 700 CALL SBR2 //Tim大于630小于700時,則調(diào)用SBR2(SUBN)子程序 Network 18 總結(jié)
通過這次課程設(shè)計,加強(qiáng)了我們動手、思考和解決問題的能力。在整個設(shè)計過程中,我們通過這個方案包括設(shè)計了一套電路原理和PCB連接圖,和芯片上的選擇。這個方案總共使用了74LS248,CD4510各兩個,74LS04,74LS08,74LS20,74LS74,NE555定時器各一個。
2、在設(shè)計過程中,經(jīng)常會遇到這樣那樣的情況,就是心里想老著這樣的接法可以行得通,但實際接上電路,總是實現(xiàn)不了,因此耗費(fèi)在這上面的時間用去很多。
3、我沉得做課程設(shè)計同時也是對課本知識的鞏固和加強(qiáng),由于課本上的知識太多,平時課間的學(xué)習(xí)并不能很好的理解和運(yùn)用各個元件的功能,而且考試內(nèi)容有限,所以在這次課程設(shè)計過程中,我們了解了很多元件的功能,并且對于其在電路中的使用有了更多的認(rèn)識。
第三篇:基于單片機(jī)控制的交通燈設(shè)計系統(tǒng)
基于單片機(jī)控制的交通燈設(shè)計系統(tǒng)
班級:
姓名:
學(xué)號:
第一章 概述 1.設(shè)計內(nèi)容
本系統(tǒng)需要采用AT89C51單片機(jī)AT89C5中心器件來設(shè)計交通燈控制器,實現(xiàn)以下功能: 1.1初始東西綠燈亮,南北紅燈亮,東西方向通車。1.2黃燈閃爍后,東西路口紅燈亮同時南北路口綠燈亮,南北方向開始通車。1.3延時27s,南北方向綠燈滅,黃燈閃爍3次,然后又切換成東西方向通車,如此重復(fù)。
設(shè)計交通燈控制系統(tǒng)硬件電路與軟件控制程序,對硬件電路與軟件程序分別進(jìn)行調(diào)試,并進(jìn)行軟硬件聯(lián)調(diào),要求獲得調(diào)試成功的仿真圖。2.設(shè)計目的
2.1 了解交通燈管理的基本工作原理。2.2 熟悉AT89C51工作原理和應(yīng)用編程。
2.3 熟悉AT89C51行接口的各種工作方式和應(yīng)用。
2.4 熟悉AT89C51數(shù)器/定時器的工作方式和應(yīng)用編程外部中斷的方法。2.5 掌握多位LED顯示問題的解決。3.設(shè)計原理
AT89C51片機(jī)具有控制二連體共陰極數(shù)碼管和發(fā)光二極管的輸出顯示以及檢測按鍵輸入的功能。利用AT89C51片機(jī)模仿制作室外十字路口多功能交通燈,實現(xiàn)室內(nèi)控制與室外顯示的功能。合理控制交通繁忙,交通特殊情況和恢復(fù)交通正常的三種情況。
本設(shè)計用4個共陽極LED數(shù)碼管的分別表示東、西、南、北四個方向路口,以數(shù)碼管的上、中、下3個橫段分別代表紅、黃、綠3盞燈,用P0、P1口分別輸出控制模擬交通燈的狀態(tài)顯示的數(shù)碼管和倒計時顯示數(shù)碼管的狀態(tài)碼,P3^
1、P3^
2、P3^4-P3^7控制數(shù)碼管的位選,P2^0-P2^4接收中斷信號并反饋給INT0接口進(jìn)行中斷處理。
第二章 硬件設(shè)計
1.設(shè)計框圖 如圖2-1所示 此處要有文字說明
圖2-1設(shè)計框圖
2.元器件選擇及其功能介紹
AT89C51是一種帶4K字節(jié)LASH存儲器(FPEROM—Flash Programmable and Erasable Read Only Memory)的低電壓、高性能CMOS 8位微處理器,俗稱單片機(jī)。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲器的單片機(jī)。單片機(jī)的可擦除只讀存儲器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲器組合在單個芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡版本。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。AT89C51片引腳圖如下圖2-2所示。
圖2-2 AT89C51片引腳圖
主要特性:
·與MCS-51 兼容
·4K字節(jié)可編程閃爍存儲器 ·壽命:1000寫/擦循環(huán) ·數(shù)據(jù)保留時間:10年 ·全靜態(tài)工作:0Hz-24MHz ·三級程序存儲器鎖定 ·128×8位內(nèi)部RAM ·32可編程I/O線
·兩個16位定時器/計數(shù)器,5個中斷源 ·可編程串行通道
·低功耗的閑置和掉電模式 ·片內(nèi)振蕩器和時鐘電路 3.設(shè)計原理圖
硬件電路圖通過Proteus 仿真之后如圖2-3所示,其中: 按鈕K0連接P2^0端口實現(xiàn)紅燈全亮,處理交通意外 按鈕K1連接P2^1端口實現(xiàn)南北方向亮燈時間+1s 按鈕K2連接P2^2端口實現(xiàn)南北方向亮燈時間-1s 按鈕K3連接P2^3端口實現(xiàn)東西方向亮燈時間+1s 按鈕K4連接P2^4端口實現(xiàn)東西方向亮燈時間-1s
圖2-3整體連接電路原理圖
第三章 軟件設(shè)計
1.各個程序段介紹 1.1數(shù)碼管顯示
void Display(uchar j)//j控制顯示table中連續(xù)位的起始點(diǎn) { char h,l;if(j<11)//根據(jù)狀態(tài)判定時間
{
h=Time_EW/10;//EW通行時間十位
l=Time_EW%10;//EW通行時間個位
} else if(j<23){
h=Time_SN/10;//SN通行時間十位
l=Time_SN%10;//SN通行時間個位
} for(i=0;i<4;)//按位顯示通行狀況及時間
{
P0=table1[j];//通行狀況顯示
P3=tab[i];//位選顯示
i++;
j++;
if(i%2)//兩位計時顯示
{
P1=table[l];
Delay(400);
}
else
{
P1=table[h];
Delay(400);
} } Delay(5);} 1.2 INT0外部中斷服務(wù)程序
void EXINT0(void)interrupt 0//INT0外部中斷 { EX0=0;//關(guān)中斷
if(Busy_Button==0){
P0=0xFE;//意外按鈕按下全顯示紅燈
for(;Busy_Button!=1;)//意外按鈕彈起時恢復(fù)之前狀態(tài)
Display(24);} /*四個時間控制按鈕分別控制SN、EW方向初始通行時間加減,最長不超過s,最少不低于s*/ if(SN_Add==0)//SN+1 {
SN1+=1;
if(SN1>99)
SN1=99;} if(SN_Red==0)//SN-1 {
SN1-=1;
if(SN1<20)
SN1=20;} if(EW_Add==0)//EW+1 {
EW1+=1;
if(EW1>99)
EW1=99;} if(EW_Red==0)//EW-1 {
EW1-=1;
if(EW1<20)
EW1=20;} EX0=1;//開中斷 } 1.3延時子程序
void Delay(uchar a)//循環(huán)a次 { uchar x;x=a;while(x--){;} } 2.程序
#define uchar unsigned char #include
uchar x;x=a;while(x--){;} } void Display(uchar j){ char h,l;if(j<11){
h=Time_EW/10;
l=Time_EW%10;} else if(j<23){
h=Time_SN/10;
l=Time_SN%10;} for(i=0;i<4;){
P0=table1[j];
P3=tab[i];
i++;
j++;
if(i%2)
{
P1=table[l];
Delay(400);
}
else
{
P1=table[h];
Delay(400);
} } Delay(5);} void EXINT0(void)interrupt 0 { EX0=0;if(Busy_Button==0){
P0=0xFE;
for(;Busy_Button!=1;)Display(24);} if(SN_Add==0){
SN1+=1;
if(SN1>99)
SN1=99;} if(SN_Red==0){
SN1-=1;
if(SN1<20)
SN1=20;} if(EW_Add==0){
EW1+=1;
if(EW1>99)
EW1=99;} if(EW_Red==0){
EW1-=1;
if(EW1<20)
EW1=20;} EX0=1;
} void timer0(void)interrupt 1 using 1 { TH0=0x3C;TL0=0xB0;count++;if(count==20){
Time_EW--;
Time_SN--;
count=0;} } 第四章 仿真結(jié)果及其總結(jié)
1.仿真結(jié)果圖
1.1正常狀態(tài)的仿真結(jié)果如圖4-1所示
圖4-1正常狀態(tài)
1.2黃燈狀態(tài)的仿真結(jié)果如圖4-2所示
圖4-2黃燈狀態(tài)
1.3緊急狀態(tài)的仿真結(jié)果如圖4-3所示
圖4-3 緊急狀態(tài)
1.4延長通行時間的仿真結(jié)果如圖4-4所示
圖4-4延長通行時間
2.總結(jié)
通過這次交通燈的課程設(shè)計,使我得到了一次用專業(yè)知識、專業(yè)技能分析和解決現(xiàn)實問題的能力。使我在單片機(jī)的基本原理、單片機(jī)應(yīng)用學(xué)習(xí)過程中,以及在常用編程設(shè)計思路技巧的掌握方面都能向前邁了一大步,為日后成為一名合格的應(yīng)用型人才打下良好的基礎(chǔ)。綜合課程設(shè)計讓我把以前學(xué)習(xí)到的知識得到鞏固和進(jìn)一步的提高認(rèn)識,對已有知識有了更深層次的理解和認(rèn)識。在此,由于自身能力有限,在課程設(shè)計中碰到了很多的問題,我通過查閱相關(guān)書籍、資料以及和周圍同學(xué)交流得到解決。
通過這次交通燈的課程設(shè)計,使我了解了寫畢業(yè)設(shè)計的流程和方法。為自己以后的畢業(yè)論文的設(shè)計做一次練習(xí),具有積極的意義。還有交通燈是我們生活中非常常見的一種東西,對于我們學(xué)以致用的這種能力得到了很好鍛煉,能夠為我們以后的工作于學(xué)習(xí)打下基礎(chǔ)。
由于本人的水平有限,設(shè)計中難免會有一些不合理的部分,系統(tǒng)的穩(wěn)定性還有待提高,望批評更正。
第四篇:新型交通燈控制管理器
天津職業(yè)技術(shù)師范大學(xué)
課程題目:新型交通燈控制管理器設(shè)計成員:王昕指導(dǎo)教師:谷金清
課程設(shè)計
徐盼盼 梁佳欣 鄧裕明 孔維敬 1.題目
新型交通燈控制管理器 2.主要技術(shù)指標(biāo)
東西南北兩個方向的信號燈必須交替工作,顯示采用LED光柱或數(shù)碼管倒計時的方式,遇有緊急情況可人為將兩個方向都設(shè)置為紅燈。3.方案論證及選擇
方案一:用時間控制交通燈的狀態(tài)轉(zhuǎn)換
(1)本方案的主要思想是用時間控制交通燈狀態(tài)的轉(zhuǎn)換,時間變化是有規(guī)律的。先南北直行紅燈亮,而后黃燈亮3秒,再直行綠燈亮27秒,黃燈亮3秒;然后南北轉(zhuǎn)彎綠燈亮,黃燈亮,南北交通燈都亮紅燈;東西交通燈以同樣規(guī)律變化。(a)每次綠燈變紅燈時,要求黃燈先亮3秒,黃燈亮?xí)r,綠燈滅。
(b)要求在綠燈亮(通行時間內(nèi))和紅燈亮(禁止通行時間內(nèi))時均有倒計時顯示。所以基本符合現(xiàn)實功能,能夠指揮車輛在十字路口完成左轉(zhuǎn)和不同路口的直行。(2)基本功能、擴(kuò)展功能分析
考慮交通燈的功能,一個十字路口至少需8組交通燈:東西南北各兩組,一組指揮轉(zhuǎn)彎,一組指揮直行。而設(shè)計的關(guān)鍵是控制交通燈的亮滅。考慮南北、東西方向燈的亮滅規(guī)律相同,故可以考慮用四組交通燈來模擬實際的八組交通燈:東西兩組燈,南北兩組燈,分別用來指示轉(zhuǎn)彎和直行??捎糜嫈?shù)器控制時間,在不同的時間顯示不同的燈。根據(jù)設(shè)計分析,可以采用如下方案實現(xiàn)交通燈顯示:通過計數(shù)來計時,不同的時間輸出不同的使能信號,使各方向的不同交通燈顯示不同的顏色。夜間車少需交通燈,則紅燈、綠燈滅,黃燈閃爍使司機(jī)明白前方為十字路口,小心行駛。倒計時顯示需設(shè)計不同的倒計時計數(shù)器,顯示不同方向交通燈的顯示時間,通過數(shù)碼管顯示時間,使行人方便
(3)方案二:當(dāng)交通燈自動運(yùn)行時,通行方向進(jìn)行24S倒計時,其中綠燈時間為20S,在此期間禁行方向一直為紅燈,計數(shù)器在交通燈變方向時重復(fù)計數(shù)。當(dāng)調(diào)到手動狀態(tài)時可提供脈沖讓交通燈循環(huán)變快或變慢。電路還有夜間功能,夜間時打到此檔,則電路停止循環(huán)工作,只有黃燈閃爍。當(dāng)南北向綠燈亮,而東西向紅燈亮?xí)r,使南北向的74LS168以減法計數(shù)器方式工作,從數(shù)字“24”開始下減,當(dāng)減倒“00”時,南北向綠燈滅,紅燈亮,而東西向紅燈滅,綠燈亮。方案三:此方案紅綠燈控制器主要有四塊555和一些阻容元件接成單穩(wěn)延時電路,四級電路首尾相接,依次延時觸發(fā),使交通燈依次出現(xiàn)一黃一紅(色)信號,指揮行人和車輛在十字路口有秩序地通行(綠)---提醒注意(黃)---禁止通行(紅)。當(dāng)剛接通電源時,開啟脈沖經(jīng)IC(CD4011)門電路和R1、C1延遲,C2、R22微分后,觸發(fā)IC2。IC2和R4~R7、C6組成單穩(wěn)延時電路,其定時時間長短取決于K1的置檔位置,延時td=1.1RC6,設(shè)定時間分別為60秒、45秒、30秒。暫穩(wěn)結(jié)束時,IC2的3腳轉(zhuǎn)呈低電平,經(jīng)C3、R23微分后,其下降沿又觸發(fā)IC3,形成第二級單穩(wěn)延時,依次觸發(fā)定時,完成綠色燈亮---黃色燈亮(8秒、10秒、12秒)---紅色燈亮(60秒、45秒、30秒)的循環(huán)周期。
本線路為控制電路及指揮崗?fù)?nèi)的監(jiān)控顯示部分。若真正用于交通指揮,應(yīng)使控制信號去激勵固態(tài)繼電器,然后去驅(qū)動三色光燈泡。經(jīng)過討論研究,方案二原理清晰,易于操作。4.電路仿真
4.系統(tǒng)組成框圖
6.單元電路設(shè)計
本部分由三部分組成:脈沖發(fā)生部分、紅綠燈顯示、倒計時計數(shù)顯示。
脈沖發(fā)生部分:下圖為NE555組成的多諧振蕩電路,產(chǎn)生1Hz的方波,用來計數(shù)器的CP信號。
紅綠燈顯示:由八位單向移位寄存器組成計數(shù)器電路,對時間t進(jìn)行計數(shù)。經(jīng)反相器及與門組成的譯碼器輸出,分別控制東西南北各燈,其中黃燈為閃爍亮。
倒計時計數(shù)器:
7.總體電路圖
8.調(diào)試過程及測試結(jié)果
按照電路圖焊接完電路后,再依照管腳仔細(xì)檢查電路,以確 保沒有錯誤。由于本次電路比較復(fù)雜,而且有些芯片實驗室暫時沒有,所以只好用功能相近的芯片代替,因此管腳需要重新分布。把電路接上電源和單脈沖后開始調(diào)試電路,由于電路復(fù)雜,接線多,所以難免出現(xiàn)漏接,錯接現(xiàn)象,因此我們認(rèn)真調(diào)試,爭取能把電路調(diào)試成功。開始時,數(shù)碼管有個沒有亮燈,而且代替交通燈的二極管只有紅燈亮。并不符合測試電路的要求。于是我們仔細(xì)檢查,發(fā)現(xiàn)數(shù)碼管的電源端接線沒有焊牢,導(dǎo)致沒有顯示。重新焊接后數(shù)碼管正常顯示。在輸出脈沖時發(fā)現(xiàn)黃燈不停閃爍,按下夜間控制開關(guān),黃燈閃爍,說明夜間部分沒有問題。但是數(shù)碼管沒有按照24秒計時,我們檢查計數(shù)器的工作狀態(tài),發(fā)現(xiàn)計數(shù)器置入數(shù)據(jù)時 可以進(jìn)行減法運(yùn)算,黃燈亮滅時紅燈卻沒有亮,導(dǎo)致數(shù)據(jù)無法進(jìn)行減法運(yùn)算。仔細(xì)察看電路的計數(shù)器焊接點(diǎn),終于發(fā)現(xiàn) 74LS190的CP脈沖端沒有接入另一個74LS190的管腳,使其無法根據(jù)脈沖數(shù)據(jù)進(jìn)行計數(shù)及減法運(yùn)算。連接后,數(shù)碼管正常計數(shù)。焊接過程中經(jīng)常遇到的問題,如果不加以糾正將使電路無法工作,而且這個問題很難檢查出來,也只能利用萬用表檢查,我們剛發(fā)現(xiàn)是由于接上電路發(fā)現(xiàn)發(fā)光二極管是一直點(diǎn)亮的,后來發(fā)現(xiàn)是由于一個焊點(diǎn)虛焊導(dǎo)致或門的一端輸入為接空引起的。由于電路的復(fù)雜和焊接的繁雜,導(dǎo)致我們無法很好的仔細(xì)檢查每個焊接點(diǎn)的錯誤,因此電路有時不穩(wěn)定,數(shù)碼管顯示時隱時現(xiàn)。但最后我們還是終于把電路調(diào)試成功,完全符合課程設(shè)計的要求。9.主要元件清單
芯片:7448N、4個 74192N、4個 74LS164D、1個 74LS04、1個 74LS08、3個 74LS00、1個 NE555、1個 共陰數(shù)碼管、4個 二極管:IN4007、6個
電阻:240Ω、28個 470Ω、6個 1KΩ、1個 30KΩ、1個 電容:10微法 1個
發(fā)光二極管:紅色2個、黃色2個、綠色2個 排針:P10、一排 導(dǎo)線若干 10.總結(jié)
電1302 34 王昕:本周的焊接電路實驗我們選做的事交通燈控制電路,電路比較復(fù)雜,而且芯片有些也被代替了,但是我們?nèi)匀话堰@個電路做好了。在這期間我們查閱了大量的資料,并且上網(wǎng)查了有關(guān)管腳和電路圖的信息,通過實踐與理論相結(jié)合,了解了很多有關(guān)電路的原理,交通燈的構(gòu)造和原理,每部分的原理都得到了充分的認(rèn)識,腦子里有了模型有了理論后,再把理論付諸實踐,使我們更加深了555和74LS系列的原理,在運(yùn)用時才不會感到陌生。明白了校訓(xùn)“動手動腦”的意義。在這次課程設(shè)計中,我和組員相互配合相互幫助,在遇到很多困難時能夠用樂觀積極的心態(tài)來看待。我們合作的非常愉快,我想在團(tuán)體設(shè)計中,團(tuán)隊精神是非常重要的。
電1302 39 徐盼盼:在這次實訓(xùn)過程中,開始時是設(shè)計階段也沒太在意,后來到動手的時候覺得遇見了好多沒想到的問題,然后一個一個的解決,我想這也是最吸引我們的地方,當(dāng)真正投入時才發(fā)現(xiàn)樂在其中。以前書本上的內(nèi)容第一次完完全全的在實際中實現(xiàn)。在設(shè)計過程中,遇到了書本中不曾學(xué)到的情況。同時,由于是四人合作制作,是我們學(xué)到在將來大規(guī)模電路設(shè)計中,團(tuán)體協(xié)作是多么的重要。在我們的通力協(xié)作之下,電路終于焊完了。但是我們同時也明白了我們在設(shè)計電路過程中的缺點(diǎn)和不足,理解了書本跟實踐的區(qū)別,十分感謝學(xué)校的用心。一周的設(shè)計使我學(xué)到了很多,每天都在緊張地準(zhǔn)備和操作中,不僅增強(qiáng)了我的專業(yè)知識,而且讓我明白了不論在哪里都是自己學(xué)習(xí)的地方,都有自己學(xué)習(xí)的技巧。感謝老師為我們提供這次的實習(xí)機(jī)會和悉心的指導(dǎo)。
電1302 18梁佳欣:實訓(xùn)中很多時候我們只是照著電路圖按部就班的焊接,并沒有經(jīng)過思考或者去論證其原理的對錯,還有就是我們焊接時經(jīng)常會造成虛焊和錯焊,這就是我們焊接的基本功還沒有達(dá)到的緣故,我希望在今后的設(shè)計中能夠總結(jié)以往的經(jīng)驗教訓(xùn),不但學(xué)習(xí)課本知識,而且還學(xué)習(xí)課外知識,這才是我們所要達(dá)到的目的。在這次實訓(xùn)中,我不但訓(xùn)練了焊接電路的能力,而且還學(xué)習(xí)了許多有關(guān)電路方面的知識,學(xué)習(xí)了很多電路原理和知識,并真切感受到理論聯(lián)系實際的重要和必要性。兩周的實驗課程設(shè)計結(jié)束了,我們都從中學(xué)到很多東西,但是學(xué)習(xí)永無止境,課程設(shè)計給我們這個平臺去展示自己,未來還有更多的需要自己學(xué)習(xí)的地方,更多需要展示自己的地方。我相信我們會越來越好。
電1302 04鄧裕明:本周的實驗課程設(shè)計的任務(wù)為交通燈控制管理器,確定任務(wù)后我們便從圖書館,網(wǎng)上查閱相關(guān)資料,分析其工作原理,結(jié)合我們的興趣愛好,經(jīng)過共同討論,我們開始計算元件參數(shù),并列出了元件清單。周二買到元件后,便開始對整個電路進(jìn)行布局。在這個過程中,由于對原理圖分析比較透徹,各個芯片的功能及其管腳的連接都作過仔細(xì)的分析,這一過程并沒有遇到太大的困難。在組員的共同努力,不斷討論分析,仔細(xì)檢查下,電路中終于調(diào)試成功。通過這一周的課程設(shè)計,發(fā)現(xiàn)動手的時候遇見了好多沒想到的問題,然后一個一個的解決,我想這也是最吸引我們的地方,當(dāng)真正投入時才發(fā)現(xiàn)樂在其中。而且我們對555及其74LS系列的芯片的功能都有了更深的了解和認(rèn)識,提高了理論聯(lián)系實際、分析問題、解決問題的能力,同時,在整個過程中,我們首腦并用,共同討論研究,彼此協(xié)作都非常愉快,增進(jìn)了同學(xué)間的協(xié)作精神。11.參考文獻(xiàn)
《電子技術(shù)基礎(chǔ)》 作者:康文華 《電子電路設(shè)計與實踐》作者:姚福安 《CMOS數(shù)字電路應(yīng)用300例》作者:肖景和
第五篇:單片機(jī)控制的交通燈控制系統(tǒng)設(shè)計
摘要
本設(shè)計是單片機(jī)控制的交通燈控制系統(tǒng)設(shè)計。由單片機(jī)系統(tǒng)、LED顯示、交通燈演示系統(tǒng)、鍵盤電路及其控制電路組成。該系統(tǒng)除基本交通燈功能外,還具有倒計時、緊急情況處理、調(diào)整通行時間以及根
據(jù)具體情況手動控制等功能。
十字路口的交通燈在工作時應(yīng)具有如下特點(diǎn):紅燈表示該條道路禁止通性;黃燈表示該條道路上未過停車線的車輛禁止通行,已過停車線的車輛繼續(xù)通性;綠燈亮表示該條道路允許通行。該系統(tǒng)使用12MHZ晶振與單片機(jī)AT89S52相連接,通過軟件編程的方法實現(xiàn)十字路口的交通燈控制,輸入裝置是鍵盤開關(guān),用于控制交通燈的運(yùn)行模式以及設(shè)置通行時間,顯示裝置是兩位的LED七段數(shù)碼管。該系統(tǒng)是由AT89S52單片機(jī)控制的,可以實現(xiàn)以下功能:
1.南北方向(主干道)車道和東西方向(支干道)兩條交叉道路上的車輛交替運(yùn)行,主干道每次通行時間都設(shè)為30秒、支干道每次通行間為20秒,時間可設(shè)置修改。
2.在綠燈轉(zhuǎn)為紅燈時,要求黃燈先亮5秒鐘,才能變換運(yùn)行車道。
3.黃燈亮?xí)r,要求每秒閃亮一次。
4.東西方向、南北方向車道除了有紅、黃、綠燈指示外,每一種燈亮的時間都用顯示器進(jìn)行顯示(采
用計時的方法)。
5.一道有車而另一道無車(實驗時用開關(guān) K0 和 K1 控制),交通燈控制系統(tǒng)能立即讓有車道放行。
6.有緊急車輛要求通過時,系統(tǒng)要能禁止普通車輛通行,A、B道均為紅燈。
關(guān)鍵字:AT89S52單片機(jī),交通燈,LED顯示,鍵盤開關(guān)電路。
目 錄
1概述…………………………………………………………………………-3-1.1設(shè)計背景 ……………………………………………………………-3-1.2設(shè)計目的 ……………………………………………………………-3-1.3設(shè)計要求 ……………………………………………………………-3-2 系統(tǒng)總體方案及硬件設(shè)計 ………………………………………………-4-2.1 設(shè)計原理……………………………………………………………-4-2.2 各功能模塊設(shè)計……………………………………………………-4-2.2.1單片機(jī)AT89S52介紹 …………………………………………-4-2.2.2總體方案 ………………………………………………………-5-2.2.3時鐘電路模塊 …………………………………………………-6-2.2.4復(fù)位電路模塊 …………………………………………………-6-2.2.5交通燈演示模塊 ………………………………………………-7-2.2.6 LED顯示模塊 …………………………………………………-7-2.2.7鍵盤開關(guān)模塊 …………………………………………………-8-3 軟件設(shè)計 …………………………………………………………………-10-3.1程序流程圖 …………………………………………………………-10-3.2系統(tǒng)軟件設(shè)計………………………………………………………-11-3.2.1 LED的編程……………………………………………………-11-3.2.2交通燈模塊的編程設(shè)計………………………………………-12-3.2.3定時器程序……………………………………………………-12-3.2.4鍵盤程序………………………………………………………-13-3.2.4.1通行時間設(shè)置程序………………………………………-13-3.2.4.2緊急情況處理程序………………………………………-14-3.2.4.3狀態(tài)調(diào)整程序……………………………………………-14-4 Proreus仿真 ……………………………………………………………-15-4.1正常工作狀態(tài)………………………………………………………-15-4.2時間調(diào)整……………………………………………………………-17-4.3緊急狀況……………………………………………………………-19-4.4狀態(tài)調(diào)整……………………………………………………………-20-5課程設(shè)計體會 ……………………………………………………………-22-參考文獻(xiàn)……………………………………………………………………-23-附1:源程序代碼 …………………………………………………………-24-附2:系統(tǒng)原理圖 …………………………………………………………-32-概述 1.1 設(shè)計背景
人們越來越關(guān)注城市交通問題,而交通燈在安全行車過程中起十分重要的作用, 現(xiàn)在交通燈一般設(shè)在十字路口,在醒目位置用紅、綠、黃三種顏色的指示燈, 加上一個倒計時的顯示計時器來控制行車, 對于一般情況下的安全行車、車輛分流發(fā)揮著作用, 但根據(jù)實際行車過程中出現(xiàn)的情況, 主要有如下幾個缺點(diǎn):
1、車道讓車輪流放行時間相同且固定, 在十字路口, 經(jīng)常出現(xiàn)有些車道車輛較多, 放行時間應(yīng)該長些;而有些車道車輛較少,放行時間應(yīng)短些。
2、沒有考慮緊急車通過時, 兩車道應(yīng)采取的措施, 譬如, 有消防車通過執(zhí)行緊急任務(wù)時, 兩車道的車都應(yīng)停止, 讓緊急車輛通過。根據(jù)行車過程中出現(xiàn)的實際情況, 如何合理高效地利用交通燈指示交通情況,這是一個迫切需要解決的問題。
1.2 設(shè)計目的
1.進(jìn)一步熟悉和掌握單片機(jī)的結(jié)構(gòu)及工作原理。
2.掌握單片機(jī)的接口技術(shù)及相關(guān)外圍芯片的外特性,控制方法。3.通過課程設(shè)計,掌握以單片機(jī)核心的電路設(shè)計的基本方法和技術(shù)。4.通過實際程序設(shè)計和調(diào)試,逐步掌握模塊化程序設(shè)計方法和調(diào)試技術(shù)。5.了解開發(fā)單片機(jī)應(yīng)用系統(tǒng)的全過程,為今后從事相關(guān)事業(yè)打下基礎(chǔ)。
1.3 設(shè)計要求
1.設(shè)計一個十字路口的交通燈控制電路,要求南北方向(主干道)車道和東西方向(支干道)車道兩條交叉道路上的車輛交替運(yùn)行,主干道每次通行時間都設(shè)為30秒、支干道每次通行時間為20秒,時間
可設(shè)置修改。
2.在綠燈轉(zhuǎn)為紅燈時,要求黃燈先亮5秒鐘,才能變換運(yùn)行車道;
3.黃燈亮?xí)r,要求每秒閃亮一次。
4.東西方向、南北方向車道除了有紅、黃、綠燈指示外,每一種燈亮的時間都用顯示器進(jìn)行顯示(采
用計時的方法)。
5.一道有車而另一道無車(實驗時用開關(guān) K0 和 K1 控制),交通燈控制系統(tǒng)能立即讓有車道放行。
6.有緊急車輛要求通過時,系統(tǒng)要能禁止普通車輛通行,A、B道均為紅燈。系統(tǒng)總體方案及硬件設(shè)計
2.1 設(shè)計原理
本設(shè)計使用的是單片機(jī)作為核心的控制元件,使得電路的可靠性比較高,功能也比較強(qiáng)大,而且可以隨時更新系統(tǒng),根據(jù)道路情況適時調(diào)整交通燈的狀態(tài),全面有效地利用交通燈指示交通情況。該設(shè)計是以單片機(jī)AT89S52為核心完成的,在硬件電路中采用P1口點(diǎn)亮交通指示燈,采用P0口和P2口作為2位LED數(shù)碼管的驅(qū)動接口,可顯示各個方向的交通燈的持續(xù)時間,單片機(jī)外圍接有按鍵開關(guān)電路,可以響應(yīng)外部中斷及鍵盤程序,實現(xiàn)緊急情況處理、調(diào)整交通燈的點(diǎn)亮?xí)r間等功能。芯片選用AT89C51 單片機(jī),電路由下列部分組成:時鐘電路、復(fù)位電路、鍵盤電路、交通燈演示電
路、LED顯示電路。
2.2 各功能模塊設(shè)計 2.2.1 單片機(jī)AT89S52介紹
AT89S52是一個低電壓,高性能CMOS型 8位單片機(jī),片內(nèi)含8KB的可反復(fù)擦寫的Flash只讀程序存儲器(ROM)和256 B的隨機(jī)存取數(shù)據(jù)存儲器(RAM)。AT89S52是一個低功耗高性能單片機(jī),40個引腳,32個外部雙向輸入/輸出(I/O)端口,同時內(nèi)含2個外中斷口,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,AT89S52可以按照常規(guī)方法進(jìn)行編程,也可以在線編程。其將通用的微處理器和Flash存儲器結(jié)合在一起,特別是可反復(fù)擦寫的Flash存儲器可有效地降低開發(fā)成本。
引腳使用說明:
I/O端口的編程實際上就是根據(jù)應(yīng)用電路的具體功能和要求對I/O寄存器進(jìn)行編程。具體步驟如下:
l.根據(jù)實際電路的要求,選擇要使用哪些I/O端口。
2.初始化端口的數(shù)據(jù)輸出寄存器,應(yīng)避免端口作為輸出時的開始階段出現(xiàn)不確定狀態(tài),影響外圍電
路正常工作。
3.根據(jù)外圍電路功能,確定PO端口的方向,初始化端口的數(shù)據(jù)方向寄存器。對于用作輸入的端口可以不考慮方向初始化,因為PO的復(fù)位缺省值為輸入。
4.用作輸入的PO管腳,需上拉電阻。
5.最后對I/O端口進(jìn)行輸出(寫數(shù)據(jù)輸出寄存器)和輸入(讀端口)編程,完成對外圍電路的相應(yīng)功能。
幾個特殊管腳:
XTAL1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。
XTAL2:來自反向振蕩器的輸出。
RST: 復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持RST腳兩個機(jī)器周期的高電平。
2.2.2 總體方案 此交通燈系統(tǒng)位于一個十字路口,此路口為東南西北走向。南北方向為主干道,東西方向為支干道。各干道有一組紅、綠、黃三色的指示燈,指揮車輛和行人安全通行。紅燈亮禁止通行,綠燈亮允許通行,黃燈亮提示人們注意紅、綠燈的狀態(tài)即將切換。
此交通燈系統(tǒng)工作過程分為4個狀態(tài)。狀態(tài)0南北方向綠燈亮,東西方向紅燈亮。過25秒后轉(zhuǎn)為狀態(tài)1,南北方向綠燈滅,黃燈每秒閃亮一次,東西方向還是紅燈亮。歷時5秒鐘再轉(zhuǎn)為狀態(tài)2,南北方向紅燈亮,東西方向綠燈亮。過15秒后轉(zhuǎn)為狀態(tài)3,南北方向還是紅燈亮,東西方向綠燈滅,黃燈每秒閃亮
一次。歷時5秒鐘又循環(huán)至狀態(tài)0。
交通燈的狀態(tài)表如下:
狀態(tài)(時間)主干道—SN 紅—R 0 1 2 3 0 0 1 1
綠—G 1 0 0 0
黃—Y 0 1/0 0 0
表01 交通燈的狀態(tài)表
注:
1:SN:南北方向。WE:東西方向。2:狀態(tài):0:熄。1:亮。1/0:閃。
2.2.3 時鐘電路模塊
時鐘電路模塊給單片機(jī)提供特定的時鐘周期,以備單片機(jī)工作使用。單片機(jī)的機(jī)器周期有6MHz和12MHz的兩種。這里采用的是12MHZ的晶振,以給單片機(jī)提供12MHz的機(jī)器周期。另外有兩個30P的電容,兩晶振引腳分別連到XTAL1和XTAL2振蕩脈沖輸入引腳。
其電路圖如圖02所示:
支干道—WE 紅—R 1 1 0 0
綠—G 0 0 1 0
黃—Y 0 0 0 1/0
圖02 時鐘電路模塊
2.2.4 復(fù)位電路模塊
單片機(jī)系統(tǒng)的復(fù)位電路采用的是上電+按鈕復(fù)位電路形式,其中電阻R采用10KΩ的阻值,電容采用
電容值為10μF的電解電容。其具體連接電路如圖03所示:
圖03 復(fù)位電路模塊 2.2.5 交通燈演示模塊
此交通燈演示模塊由單片機(jī)的P1口作信號輸出端來控制12個交通燈的亮滅,交通燈采用的是發(fā)光二極管。因為單片機(jī)的輸出電流非常小,為了使發(fā)光二極管能夠發(fā)光或者更亮,二極管采用共陽極接法。即陽極通過470Ω電阻接+5V直流電源,陰極接單片機(jī)P1口。同時南北方向同色燈連同上拉電阻一起并聯(lián),東西方向也是一樣,以保證同一干道上的同色燈同時點(diǎn)亮或熄滅,并且流過二極管的電流不會因并聯(lián)
而減半。
其具體連接電路如圖04所示:
圖04交通燈演示電路 2.2.6 LED顯示模塊 由于同一干道上的兩個方向的紅燈,綠燈,黃燈點(diǎn)亮?xí)r間相同,所以南北方向只需一個數(shù)碼管顯示
相應(yīng)的時間即可,同理東西方向也只需一個。
本次交通燈設(shè)計采用兩位一體的共陰極數(shù)碼管來顯示相應(yīng)的時間。由單片機(jī)的P0口輸出字型碼,P2口的前四位P2.0~P2.3作位選端。位選端接LED的共陰極,故低電位有效。因為單片機(jī)I/O口的驅(qū)動電流很小,一般只有幾個毫安。為了增加驅(qū)動能力,每個LED上都加上一個上拉電阻,接入+5V電源,本次設(shè)計采用的是排阻。當(dāng)P0口輸出低電平時,LED不導(dǎo)通,上拉電阻電流灌進(jìn)單片機(jī),而當(dāng)P0口輸出高電平時,LED導(dǎo)通。而且上拉電阻的電流也通過LED,這自然就增加了LED的發(fā)光亮度。
其具體連接電路如圖05所示:
圖05 LED顯示電路 2.2.7 鍵盤開關(guān)模塊
此系統(tǒng)通過5個開關(guān)實現(xiàn)所有的要求,開關(guān)一端接地,另一端接單片機(jī)的P3口。K0接P3^7,當(dāng)主干道有車而支干道無車時,按一下K0鍵,可以實現(xiàn)主干道通行。K1接P3^6,當(dāng)支干道有車而主干道無車時,按一下K1鍵,可以實現(xiàn)支干道通行。K2接P3^3,利用中斷1的方式對緊急情況進(jìn)行處理,即使東南西北四個方向都亮紅燈停車。K4接P3^2,利用中斷0的方式對各個干道的通行時間進(jìn)行設(shè)置。在相應(yīng)中斷0期間,K0,K1起調(diào)整時間的作用。每按一下K0,主干道通行時間加一,每按一下K0,主干道通行時間加一。K3接P3^5,按一下K3,可以使系統(tǒng)退出中斷,回到主程序。
其具體連接電路如06圖示:
圖06 鍵盤開關(guān)電路 軟件設(shè)計 3.1 系統(tǒng)流程圖
(注:判斷框SN=0,WE=0處的Y,N位置標(biāo)反了,讀者自己改正。)
3.2 系統(tǒng)軟件設(shè)計 本次單片機(jī)課程設(shè)計軟件部分利用C語言編程,采用模塊化程序設(shè)計。程序部分由主程序、定時器程序、T0/T1中斷服務(wù)程序、鍵盤掃描程序、交通燈點(diǎn)亮程序、LED數(shù)碼管掃描顯示程序和延時程序構(gòu)成。
3.2.1 LED的編程
本次交通燈設(shè)計采用兩位一體的共陰極數(shù)碼管來顯示相應(yīng)的時間。數(shù)碼管為七段數(shù)碼管,由8個發(fā)光二極管構(gòu)成,通過不同的組合可用來顯示數(shù)字0-9,字符A-F、H、L、P、R、U、Y、符號“-”及小數(shù)點(diǎn)“.”。
本設(shè)計只需要顯示數(shù)字0-9,來表示相應(yīng)的時間。
共陰極數(shù)碼管的8個發(fā)光二極管的陰極連接在一起接位選端。兩個兩位一體的共陰極數(shù)碼管共有4個位選端,分別接在 P2^O-P2^3,低電平有效。數(shù)碼管各個陽極管腳接各段的驅(qū)動電路輸出端,既P0口。P0^0接a,P0^1接b,……P0^6接g,P0^7接dp,高電平有效。
本設(shè)計采用逐位掃描的方式實現(xiàn)相應(yīng)時間的動態(tài)顯示。先將P2^1置低電平,P2^0、P2^
2、P2^3置高電平,來選中南北方向數(shù)碼管的個位,此時P0口的數(shù)據(jù)接傳送給它顯示。經(jīng)延時一段時間,將P2^1置低電位選中南北方向數(shù)碼管的十位,此時P0口的數(shù)據(jù)接傳送給它顯示。再用同樣的方法依次驅(qū)動?xùn)|西方向數(shù)碼管。通過不斷改變P0口、P2口的輸出,用循環(huán)掃描的方式,即可實現(xiàn)LED的動態(tài)顯示。
LED動態(tài)顯示的流程圖如圖08:
3.2.2交通燈模塊的編寫設(shè)計
本次設(shè)計的交通燈演示模塊由單片機(jī)的P1口作信號輸出端來控制12個交通燈的亮滅。P1^1-P1^6依次連接南北的紅燈、綠燈、黃燈,東西的紅燈、綠燈,黃燈。所以4種狀態(tài)依次為0x6A,0x66,0x5C,0x3C。當(dāng)交通燈的剩余時間為零時,改變P1口的輸出,進(jìn)而改變交通燈的點(diǎn)亮狀態(tài)。交通燈依次循環(huán)上面的4個狀態(tài),就可以實現(xiàn)指揮交通的作用。
3.2.3 定時器程序
本次設(shè)計用定時計數(shù)器T1,TMOD是定時計算器的工作方式控制寄存器,通過對該寄存器的操作可以改變T1的工作方式。T1有4種工作方式,由TMOD寄存器中間的M1、M0這兩位來決定。本次設(shè)計的定時計數(shù)器工作在工作方式1,M1、M0設(shè)定為01。定時計算器采用加1計數(shù)的方式,當(dāng)接收到一個驅(qū)動事件時計數(shù)器加1。工作方式1的內(nèi)部計數(shù)器寬度為16位,由TH1的8位和TL1的8位組成。當(dāng)TL1溢出時將向TH1進(jìn)位,當(dāng)TH1溢出后會產(chǎn)生相應(yīng)的溢出中斷。
驅(qū)動事件之間的時間間隔即為定時計數(shù)器的定時寬度。在定時的工作方式下,定時寬度是單片機(jī)的機(jī)械周期,也是外部時鐘頻率的1/12。本次設(shè)計的外部時鐘頻率為12MHz??芍邮?06個驅(qū)動事件的時間為1s。
定是1s的流程圖如圖09所示:
3.2.4 鍵盤程序
為了實現(xiàn)設(shè)置通行時間、緊急情況處理、有車放行等功能,本次設(shè)計中有鍵盤電路。通行時間設(shè)置由外部中斷0實現(xiàn),緊急情況由外部中斷1處理,有車放行是用普通的鍵盤程序?qū)崿F(xiàn)的。按鍵實際是一種常用的按鈕,按鍵未按下時,鍵的兩個觸點(diǎn)處于斷開狀態(tài),按鍵按下時,兩個觸點(diǎn)閉合。按鍵是利用機(jī)械觸點(diǎn)來實現(xiàn)鍵的閉合和釋放,由于彈性作用的影響,機(jī)械觸點(diǎn)在閉合及斷開瞬間均
有抖動過程,從而使鍵輸入也出現(xiàn)抖動。
抖動時間一般為5—10ms。本次設(shè)計采用軟件的辦法消抖。在第一次檢測到有鍵按下時不動作,延時10ms,再次檢測按鍵的狀態(tài),如果仍保持閉合狀態(tài),則確定真的有鍵按下。當(dāng)按鍵釋放后,轉(zhuǎn)入按鍵的處理程序 延時程序如下: /*延時t毫秒*/ void delay(uchar t)
{
uchar i;/*定義無符號字符常量*/ for(t;t>0;t--)/*執(zhí)行t次循環(huán)*/
{ for(i=2000;i>0;i--)/*由于時鐘脈沖是12MHz,執(zhí)行2000次循環(huán)的時間為1ms*/
{ } } }
3.2.4.1 通行時間設(shè)置程序
本次設(shè)計通過外部中斷0設(shè)置各個干道的通行時間。
外部中斷0的請求信號由P3^2引腳輸入,采用低電平有效的方式響應(yīng)中斷,即IT0=1。響應(yīng)中斷0期間,CPU禁止響應(yīng)其他中斷,按鍵K0,K1起調(diào)整時間的作用。采用加1的方式,每按一下K0,主干道通行時間加1,每按一下K1,支干道通行時間加1。通行時間可以直接在數(shù)碼管上顯示出來。按一下K3,可以使系統(tǒng)退出中斷,回到主程序斷點(diǎn)處,從下一個狀態(tài)開始執(zhí)行新設(shè)置的通行時間。CPU再開放總中斷。
由于本次設(shè)計使用兩位一體的共陰極數(shù)碼管顯示時間,故設(shè)置各個干道的通行時間的范圍為0—100s。考慮道路通車的實際情況,時間太短無法通過交通路口,所以本設(shè)計中通行時間下限為6s(綠燈1s,黃燈5s)。在6—99s之間可以任意設(shè)置通行時間,更合理高效的指揮交通。
3.2.4.2 緊急情況處理程序
本次設(shè)計通過外部中斷1實現(xiàn)對緊急情況的處理。
與外部中斷0相仿。外部中斷1的請求信號有P3^3引腳輸入,采用低電平有效的方式相應(yīng)中斷,即IT0=1。響應(yīng)中斷1期間,CPU禁止響應(yīng)其他中斷,東南西北四個方向均亮紅燈,各個干道都禁止通行。由于不確定要持續(xù)多久,不采用倒計時的方式顯示時間,數(shù)碼管顯示00。緊急情況結(jié)束時,按一下K3,可以使系統(tǒng)退出中斷,回到主程序斷點(diǎn)處,CPU再開放總中斷。
3.2.4.3 狀態(tài)調(diào)整程序
在實際交通系統(tǒng)中,很有可能會不時的出現(xiàn)一道有車而另一道無車的情況,為了更合理高效的指揮交通,本次設(shè)計的交通燈控制系統(tǒng)能立即讓有車道放。由開關(guān) K0 和 K1 控制。采用查詢的方式不斷掃描K0、K1,看有沒有鍵按下。按一下K0鍵,可以實現(xiàn)主干道通行,按一下K1鍵,可以實現(xiàn)支干道通行。
此時交通狀態(tài)的改變是因為另一路無車,所以不需要設(shè)置返回,直接按主程序循環(huán)指揮。也有可能較長時間出現(xiàn)一道有車另一道無車的情況,只需多次按K0或K1鍵即可。Proteus仿真 4.1 正常工作狀態(tài)
本次設(shè)計的交通燈控制系統(tǒng)共有四個工作狀態(tài),分別是狀態(tài)0、狀態(tài)
1、狀態(tài)2和狀態(tài)3。開始時先執(zhí)行狀態(tài)0,南北方向綠燈亮,東西方向紅燈亮。歷時25秒。如圖10所示:
圖10 狀態(tài)0 25秒后轉(zhuǎn)為狀態(tài)1,南北方向綠燈滅,黃燈每秒閃亮一次,東西方向還是紅燈亮。歷時5秒。如圖
11所示:
圖11 狀態(tài)1 5秒后再轉(zhuǎn)狀態(tài)2,南北方向紅燈亮,東西方向綠燈亮。歷時15秒。如圖12所示:
圖12 狀態(tài)2 15秒后轉(zhuǎn)狀態(tài)3,南北方向還是紅燈亮,東西方向綠燈滅,黃燈每秒閃亮一次。歷時5秒。如圖1
3所示:
圖13 狀態(tài)3
此狀態(tài)結(jié)束后再回到狀態(tài)0,如此循環(huán)進(jìn)行。
4.2 時間調(diào)整
按一下開關(guān)K4,系統(tǒng)響應(yīng)外部中斷0,進(jìn)入通行時間調(diào)整程序。各個干道的通行時間有數(shù)碼管顯
示。如圖14所示:
圖14 時間調(diào)整
按鍵K0,K1起調(diào)整時間的作用,每按一下K0,主干道通行時間加1,每按一下K1,支干道通行時間加1。多次按鍵即可調(diào)整到合理的通行時間。如圖15所示:
圖15 通行時間+1 按一下K3,可以使系統(tǒng)退出中斷,回到主程序斷點(diǎn)處,從下一個狀態(tài)開始執(zhí)行新設(shè)置的通行時間。
如圖16、17所示:
圖16 主干道按新設(shè)置的時間執(zhí)行
圖17 支干道按新設(shè)置的時間執(zhí)行
4.3 緊急情況
當(dāng)出現(xiàn)緊急情況時,按一下開關(guān)K2,系統(tǒng)響應(yīng)外部中斷1,各個方向均亮紅燈禁止通行,數(shù)碼管均顯示0。按一下K3,可以使系統(tǒng)退出中斷,回到主程序斷點(diǎn)處。如圖18所示
圖18 緊急情況 4.4 狀態(tài)調(diào)整
為了更合理高效的指揮交通,當(dāng)南北方向有車而東西方向無車時,按K0,系統(tǒng)會自動跳轉(zhuǎn)到狀態(tài)0,實現(xiàn)南北方向通行。如圖19所示:
圖19 南北方向有車而東西方向無車時,南北放行
當(dāng)東西方向有車而南北方向無車時,按K1,系統(tǒng)會自動跳轉(zhuǎn)到狀態(tài)2,實現(xiàn)東西方向通行。如圖20
所示:
圖20 東西方向有車而南北方向無車時,東西放行 課程設(shè)計體會
很榮幸有這次課程設(shè)計的機(jī)會,我可以把理論的學(xué)習(xí)與實踐有機(jī)的結(jié)合起來。
在設(shè)計過程中,首先要分析課題,根據(jù)所學(xué)知識繪制出系統(tǒng)總體設(shè)計框圖。然后按照自己的設(shè)計思路,利用所給的元器件繪制出設(shè)計圖。在繪制設(shè)計圖連接各個元器件的時候,要盡量使布線合適,從而使所作設(shè)計圖清晰易看。繪制完設(shè)計圖后,接下來就是要根據(jù)設(shè)計所要求的功能和已完成的設(shè)計圖編寫程序,在編程時,首先應(yīng)該繪制出主程序流程圖,然后采用模塊化程序設(shè)計的方式,編寫實現(xiàn)各個功能的子程序,再將各個子程序與主程序連接起來。在設(shè)計程序時要不斷對程序進(jìn)行修改,同時在設(shè)計程序的過程中要養(yǎng)成注釋程序的習(xí)慣,在對程序進(jìn)行修改的時候,可以通過注釋很容易的看出各句程序的功能,清晰明朗。當(dāng)程序設(shè)計出來之后,就可以通過仿真軟件對其進(jìn)行編譯,生成仿真所需要的HEX文件。將生成的文件加載到系統(tǒng)圖的單片機(jī)上,就可以進(jìn)行系統(tǒng)仿真。通過仿真,檢測所作設(shè)計是否能實現(xiàn)預(yù)期功能。本次課程設(shè)計使我對單片機(jī)的工作原理有了更深刻的認(rèn)識,掌握了許多在以前學(xué)習(xí)中混淆不清的知識點(diǎn)。在翻閱相關(guān)書籍和查詢相關(guān)資料過程中學(xué)到了豐富的單片機(jī)知識,開闊了眼界,增廣了知識面。在編輯程序中,對C語言又有了新的認(rèn)識和理解。實物焊接中不僅鍛煉了自己的動手能力,而且真正作到了
理論聯(lián)系實際的重要性,收益匪淺。
本次課程設(shè)計我參考的三本書。一本是余發(fā)山教授的《單片機(jī)原理及其應(yīng)用技術(shù)》,一本是在圖書館借的王為青老師編寫的《單片機(jī)Keil Cx51應(yīng)用開發(fā)技術(shù)》,還有一本就是賈宗璞老師的《C語言程序
設(shè)計》。在此向編者表示誠摯的謝意。
本次設(shè)計中,我曾多次在課堂上向譚興國老師請教各個模塊設(shè)計的細(xì)節(jié)問題,得到了譚老師的大力
幫助,在此深表感謝!
參考文獻(xiàn) [1] 余發(fā)山,王福忠.單片機(jī)原理及應(yīng)用技術(shù) 徐州:中國礦業(yè)大學(xué)出版社,2008 [2] 賈宗璞,許合利.C語言程序設(shè)計 徐州:中國礦業(yè)大學(xué)出版社,2007 [3] 王為青,程國剛.單片機(jī)Keil Cx51應(yīng)用開發(fā)技術(shù) 北京:人民郵電出版社,2007
附1 源程序代碼
#include
有效*/ uchar code b[4]={0x0D,0x0E,0x07,0x0B};/****P2口,低有效*/ uchar code c[4]={0x6A,0x66,0x5C,0x3C};/****P1口.低有效*/ char SN=25,WE=30;/*SN表示南北方向——主干道,WE表示東西方向——支干道*/ char SN_G=25,WE_G=15,Y=5;/*SN_G表示南北方向的綠燈,WE_G表示東西方向的綠燈,Y表
示黃燈*/
uchar i,k=0,count=0;/*定義無符號字符串變量*/
void delay(uchar t);/*定義函數(shù)*/
void light();/*定義函數(shù)*/ void led();/*定義函數(shù)*/ void ledthrough();/*定義函數(shù)*/ void leddrive();/*定義函數(shù)*/ sbit K0=P3^7;/*開關(guān)K0接P3^7管腳*/ sbit K1=P3^6;/*開關(guān)K1接P3^6管腳*/ sbit K2=P3^3;/*開關(guān)K2接P3^3管腳*/ sbit K3=P3^5;/*開關(guān)K3接P3^5管腳*/ sbit K4=P3^2;/*開關(guān)K4接P3^2管腳*/
/*程序初始化*/ void init(void)
{ /*12MHz */ TMOD=0x01;/**計數(shù)器用模式1,為16位計數(shù)器*****/
TH1=(65536-50000)/256;/*0x3C*/ TL1=(65536-50000)%256;/*0xB0*//*計50000個數(shù),用時50ms*/
IT0=1;/*外部中斷為低電平觸發(fā)方式*/
ET0=1;/*允許T0中斷*/ TR0=1;/*啟動計數(shù)器*/ EA=1;/*CPU開放總中斷*/ EX0=1;/*允許外部中斷0中斷,即允許響應(yīng)端口P3^2(K4)中斷*/ EX1=1;/*允許外部中斷1中斷,即允許響應(yīng)端口P3^3(K2)中斷*/
}
/*中斷0處理程序*/ void int0(void)interrupt 0
{
EA=0;/*CPU禁止響應(yīng)一切中斷*/ P1=0x6C;/*東西南北方向均紅燈亮*/
TR0=!TR0;/*計數(shù)器停止工作*/
for(;;)/*無條件循環(huán)*/
{
ledthrough();/*調(diào)用通行時間顯示函數(shù)*/
/*設(shè)置南北方向通行時間*/ if(K0==0)/*P3^7=0*/
{
delay(10);/*延時,把抖動的時間拋掉*/
if(K0==0)
{ while(!K0)/*當(dāng)松開K0開關(guān)時,跳出循環(huán),執(zhí)行后面的程序*/
{
ledthrough();/*調(diào)用通行時間顯示函數(shù)*/
}
SN_G++;/*南北方向綠燈時間+1*/ if((SN_G+Y)==100)/*南北方向通行時間(綠燈加黃燈時間)為100s*/ SN_G=1;/*由于使用的是兩位數(shù)碼管,當(dāng)南北方向通行時間加到100后綠燈時間歸1*/
}
}
/*設(shè)置東西方向通行時間*/ if(K1==0)/*P3^6=0*/
{
delay(10);/*延時,把抖動的時間拋掉*/
if(K1==0)
{ while(!K1)/*當(dāng)松開K1開關(guān)時,跳出循環(huán),執(zhí)行后面的程序*/
{ ledthrough();/*調(diào)用通行時間顯示函數(shù)*/
}
WE_G++;/*東西方向綠燈時間+1*/ if((WE_G+Y)==100)/*東西方向通行時間(綠燈加黃燈時間)為100s*/ WE_G=1;/*由于使用的是兩位數(shù)碼管,當(dāng)東西方向通行時間加到100后綠燈時間歸1*/
} } /*返回*/
if(K3==0)/*P3^5=0*/
{
delay(10);/*延時,把抖動的時間拋掉*/
if(K3==0)
{ while(!K3)/*當(dāng)松開K3開關(guān)時,跳出循環(huán),執(zhí)行后面的程序*/
{
ledthrough();/*調(diào)用通行時間顯示函數(shù)*/
}
TR0=!TR0;/*啟動計數(shù)器*/ EA=1;/*CPU開放總中斷*/
break;/*跳出*/
}
} } }
/*中斷1處理程序*/ void int1(void)interrupt 2
{ P1=0x6C,P0=a[0];/*東西南北方向均紅燈亮,P0口輸出0*/
EA=0;/*CPU禁止響應(yīng)一切中斷*/ TR0=!TR0;/*計數(shù)器停止工作*/
for(;;)/*無條件循環(huán)*/
{
leddrive();/*數(shù)碼管驅(qū)動程序*/
/*返回*/
if(K3==0)/*P3^5=0*/
{
delay(10);/*延時,把抖動的時間拋掉*/
if(K3==0)
{ while(!K3)/*當(dāng)松開K3開關(guān)時,跳出循環(huán),執(zhí)行后面的程序*/
{
leddrive();/*數(shù)碼管驅(qū)動程序*/
}
EA=1;/*CPU開放總中斷*/ TR0=!TR0;/*啟動計數(shù)器*/ break;/*跳出*/ }
} }
} /*鍵盤程序*/ void key()
{
/*南北有車而東西無車*/ if(K0==0)/*K0=0*/
{
delay(10);/*延時,把抖動的時間拋掉*/
if(K0==0)
{ while(!K0)/*當(dāng)松開K0開關(guān)時,跳出循環(huán),執(zhí)行后面的程序*/
{
light();/*調(diào)用交通燈函數(shù)*/
led();/*調(diào)用數(shù)碼管函數(shù)*/
} count=0;/*清零*/
k=0;/*南北方向通車,東西方向不通車*/ SN=SN_G,WE=SN_G+Y;/*南北方向顯示時間為南北方向綠燈通行時間,東西方向顯示時間為
南北方向綠燈通行時間加黃燈閃亮?xí)r間*/
} }
/*南北無車而東西有車*/ if(K1==0)/*K1=0*/
{
delay(10);/*延時,把抖動的時間拋掉*/
if(K1==0)
{ while(!K1)/*當(dāng)松開K1開關(guān)時,跳出循環(huán),執(zhí)行后面的程序*/
{
light();/*調(diào)用交通燈函數(shù)*/
led();/*調(diào)用數(shù)碼管函數(shù)*/
} count=0;/*清零*/
k=2;/*南北方向不通車,東西方向通車*/ SN=WE_G+Y,WE=WE_G;/*南北方向顯示時間為東西方向綠燈通行時間加黃燈閃亮?xí)r間,東
西方向顯示時間為東西方向綠燈通行時間*/
} } } /*定時函數(shù)*/
void time1(void)interrupt 1
{ TH0=0x3c;
TL0=0xb0;/*計50000個數(shù),用時50ms*/
count++;/*自增運(yùn)算*/
if(count>=20)/*當(dāng)count大于或等于20時,歷時1s,執(zhí)行程序*/
{
SN--;/*自減運(yùn)算*/ WE--;/*自減運(yùn)算*/ count=0;/*清零*/ if(SN==0||WE==0)/*當(dāng)SN=0或者WE=0時,執(zhí)行程序*/
{
k++;/*自增運(yùn)算*/ if(k>3)/*當(dāng)k>3時,執(zhí)行程序*/
k=0;/*清零*/ switch(k)/*switch 語句*/
{ case 0:SN=SN_G,WE=SN_G+Y;break;/*南北方向顯示時間為南北方向綠燈通行時間,東西方向顯示時間為南北方向綠燈通行時間加黃燈閃亮?xí)r間*/ case 1:SN=Y,WE=Y;break;/*東西南北方向顯示時間均為黃燈閃亮?xí)r間*/ case 2:SN=WE_G+Y,WE=WE_G;break;/*南北方向顯示時間為東西方向綠燈通行時間加黃燈閃亮?xí)r間,東西方向顯示時間為東西方向綠燈通行時間*/ case 3:SN=Y,WE=Y;break;/*東西南北方向顯示時間均為黃燈閃亮?xí)r間*/
} } } } /*延時t毫秒*/ void delay(uchar t)
{
uchar i;/*定義無符號字符常量*/ for(t;t>0;t--)/*執(zhí)行t次循環(huán)*/
{ for(i=2000;i>0;i--)/*由于時鐘脈沖是12MHz,執(zhí)行2000次循環(huán)的時間為1ms*/
{ } } } /*交通燈函數(shù)*/ void light()
{
P1=c[k];/*交通燈對應(yīng)著k的值變化*/ if(P1==c[1]&&count==0)/*當(dāng)南北方向亮黃燈且count=0時,執(zhí)行程序*/
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;/*延時50ms*/ P1=0x6E;/*南北方向黃燈熄滅,東西方向亮紅燈*/
} else if(P1==c[3]&&count==0)/*當(dāng)東西方向亮黃燈且count=0時,執(zhí)行程序*/
{
TH1=(65536-300000)/256;TL1=(65536-300000)%256;/*延時50ms*/ P1=0x7C;/*南北方向亮紅燈,東西方向黃燈熄滅*/
} } /*數(shù)碼管函數(shù)*/ void led()
{
P2=b[0],P0=a[SN%10];/*顯示南北方向個位*/
delay(5);/*延時*/
P2=b[1],P0=a[SN/10];/*顯示南北方向十位*/
delay(5);/*延時*/
P2=b[2],P0=a[WE%10];/*顯示東西方向個位*/
delay(5);/*延時*/
P2=b[3],P0=a[WE/10];/*顯示東西方向十位*/
delay(5);/*延時*/
}
/*通行時間顯示函數(shù)*/ void ledthrough()
{ P2=b[0],P0=a[(SN_G+Y)%10];/*南北方向數(shù)碼管顯示可通行時間的個位*/
delay(5);/*延時*/
P2=b[1],P0=a[(SN_G+Y)/10];/*南北方向數(shù)碼管顯示可通行時間的十位*/
delay(5);/*延時*/
P2=b[2],P0=a[(WE_G+Y)%10];/*東西方向數(shù)碼管顯示可通行時間的個位*/
delay(5);/*延時*/
P2=b[3],P0=a[(WE_G+Y)/10];/*東西方向數(shù)碼管顯示可通行時間的十位*/
delay(5);/*延時*/
}
/*數(shù)碼管驅(qū)動函數(shù)*/ void leddrive()
{
P2=b[0];/*顯示南北方向個位*/
delay(5);/*延時*/
P2=b[1];/*顯示南北方向十位*/
delay(5);/*延時*/ P2=b[2];/*顯示東西方向個位*/
delay(5);/*延時*/ P2=b[3];/*顯示東西方向十位*/
delay(5);/*延時*/
} /*主函數(shù)*/ void main(void)
{
init();/*調(diào)用程序初始化函數(shù)*/
for(;;)/*無條件循環(huán)*/
{
key();/*調(diào)用鍵盤程序*/ light();/*調(diào)用交通燈函數(shù)*/ led();/*調(diào)用數(shù)碼管函數(shù)*/
} }
附2 系統(tǒng)原理圖