file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image004.gif 電子線路課程設(shè)計(jì)(2) 論文(設(shè)計(jì))題目: 其于AT89S52單片機(jī)交通燈控制系統(tǒng)的設(shè)計(jì) 系 別: 物理與電子工程系 專 業(yè): 電子信息工程 年 級(jí): 2007級(jí) 學(xué)生姓名: 賓 華 指導(dǎo)教師: 鄒 清 平 時(shí) 間: 2010年6月20日 目 錄 摘 要 ………………………………………………………………………………4 關(guān)鍵詞 …………………………………………………………………………… 4 一、設(shè)計(jì)任務(wù)與要求 ………………………………… …………… ………… 4 二、方案設(shè)計(jì)與論證 …………………………… ……………… …………… 4 方案一 …………………………………………… …………… ……………4 方案二 ……… ……… ……………………… … …… ……………………5 方案三……………………………………………… ……… ……………… 5 三、硬件單元電路設(shè)計(jì)與參數(shù)計(jì)算 …………… ……………………………5 1. 時(shí)鐘電路模塊 ………………………………… …… ……… ……………5 2. 復(fù)位電路模塊 ………………………… ……………… ………………… 6 3. 主控電路模塊 …………………………………… … ………………… 6 4. 交通燈控制模塊 ………………………… ………………………………7 5. 時(shí)間顯示電路模塊 ……………………………… ………………………7 6. 緊急通車電路模塊 …………………………… …… ……………………8 四、軟件設(shè)計(jì)與流程圖 ………………………… …………………………………9 五、總原電路及元器件清單………………………………………………………10 1.總原理圖 ………………………………… …………………………………10 2. PCB制板圖…………………………… ………… …………………………10 3. 整體電路仿真圖以及仿真結(jié)果分析………………… …… …………11 4.元件清單………………………… …………… ……………………………12 六、安裝與調(diào)試………………… …………… …………………………………… 12 1. 電路安裝…………………………… ………… ……………………………12 2. 電路調(diào)試…………………………………… ………………………………12 3. 軟件調(diào)試………………………………… …………………………………13 七、性能測試與分析 ………………………………………………………………13 八、結(jié)論與心得 ………………………… …………………………………………13 九、參考文獻(xiàn) ……………………… ………………………………………………14 十、致謝 ……………………………… ……… ……………………………………14 十一、程序清單 ……………………… ……………………………………………14 摘要: 近年來隨著科技的飛速發(fā)展,單片機(jī)的應(yīng)用正在不地走向深入,同時(shí)帶動(dòng)傳統(tǒng)控制檢測日新月益更新。在實(shí)時(shí)檢測和自動(dòng)控制的單片機(jī)應(yīng)用系統(tǒng)中,單片機(jī)往往是作為一個(gè)核心部件來使用,單片機(jī)方面知識(shí)是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu),以及針對(duì)具體應(yīng)用對(duì)象特點(diǎn)的軟件結(jié)合,加以完善。交通信號(hào)燈的出現(xiàn),使交通得以有效管制,對(duì)于疏導(dǎo)交通流量、提高道路通行能力,減少交通事故有明顯效果。本系統(tǒng)采用單片機(jī)AT89S52為中心器件來設(shè)計(jì)交通燈控制器,系統(tǒng)實(shí)用性強(qiáng)、操作簡單、擴(kuò)展性強(qiáng)。 關(guān)鍵詞: 1、單片機(jī)最小系統(tǒng)。 2、紅、黃、綠LED交通燈。 3、緊急通車開關(guān)。 一、設(shè)計(jì)任務(wù)與要求 用AT89S52單片機(jī)控制一個(gè)交通信號(hào)燈系統(tǒng),晶振采用12MHZ。 設(shè)A車道與B車道交叉組成十字路口,A是主道,B是支道。設(shè)計(jì)要求如下: 用發(fā)光二極管模擬交通信號(hào)燈,用按鍵開關(guān)模擬車輛檢測信號(hào)。正常情況下,A、B兩車道輪流放行,A車道放行50s,其中5s用于警告;B車道放行30s,其中5s用于警告。交通繁忙時(shí),交通信號(hào)燈控制系統(tǒng)應(yīng)有手控開關(guān),可人為地改變信號(hào)燈的狀態(tài),以緩解交通擁擠狀況。在B 車道放行期間,若A車道有車而B車道無車,按下開關(guān)K1 使 A車道放行15s;在 A車道放行期間,若B車道有車而A車道無車,按下開關(guān)K1 使B 車道放行15s。有緊急車輛通過時(shí),按下K2開關(guān)使 A、B車道均為紅燈,禁行20s。 二、方案設(shè)計(jì)與論證 方案一: 交通控制系統(tǒng)主要控制A、B兩車道的交通,以AT89S52單片機(jī)為核心芯片,通過控制三色LED的亮滅來控制各車道的通行;另外通過2個(gè)按鍵來模擬各車道有無車輛的情況和有緊急車輛的情況。根據(jù)設(shè)計(jì)要求,制定總體設(shè)計(jì)思想如下: 1、正常情況下運(yùn)行主程序,采用0.5S延時(shí)子程序的反復(fù)調(diào)用來實(shí)現(xiàn)各種定時(shí)時(shí)間。 2、一道有車而另一道無車時(shí),采用外部中斷1執(zhí)行中斷服務(wù)程序,并設(shè)置中斷為低優(yōu)先級(jí)中斷。 3、有緊急車輛通過時(shí),采用外部中斷0執(zhí)行中斷服務(wù)程序,并設(shè)置中斷為高優(yōu)先級(jí)中斷,實(shí)現(xiàn)二級(jí)中斷嵌套。 該電路具有電路簡單,設(shè)計(jì)方便,顯示亮度高,耗電較少,也非常的可靠等點(diǎn)。 總體設(shè)計(jì)框圖如圖1所示:
| | file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image005.gif |
圖1 系統(tǒng)整體設(shè)計(jì)方框圖 方案二: 采用標(biāo)準(zhǔn)AT89S52單片機(jī)作為控制器;通行倒計(jì)時(shí)顯示采用3位數(shù)碼管;主、次通道及行人指示燈采用雙色高亮發(fā)光二極管;LED顯示采用動(dòng)態(tài)掃描,以節(jié)省端口。緊急車輛通行采用實(shí)時(shí)中斷完成,識(shí)別方法采用手動(dòng)按鈕。按以上系統(tǒng)構(gòu)架設(shè)計(jì),單片機(jī)端口資源剛好滿足要求。該系統(tǒng)具有電路簡單,設(shè)計(jì)方便,顯示亮度高耗電少,可靠性高,但是占用單片機(jī)資源太多了。整個(gè)電路組成框圖如圖2所示。
| | file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image006.gif |
圖2 方案三: 采用AT89C2051單片機(jī)作為控制器,通行倒計(jì)時(shí)、主、次車道及行人通行指示采用單塊LCD液晶點(diǎn)陣顯示器。這種方案設(shè)計(jì)占用單片機(jī)的端口最少,硬件也最少,耗電也最少;雖然顯示圖案也很精美,但由于亮度太暗,晚上還得必須開背光燈,所以較少采用。 通過以上綜合分析可以看出,方案一具有綜合設(shè)計(jì)優(yōu)點(diǎn),因此城市道口交通燈控制系統(tǒng)模型采用方案一設(shè)計(jì)。 三、硬件單元電路設(shè)計(jì)與參數(shù)計(jì)算 1、時(shí)鐘電路模塊 時(shí)鐘電路由一個(gè)晶體振蕩器12MHZ和兩個(gè)30pF的瓷片電容組成。時(shí)鐘電路用于產(chǎn)生單片機(jī)工作所需要的時(shí)鐘信號(hào),而時(shí)序所研究的是指令執(zhí)行中各信號(hào)之間的相互關(guān)系。單片機(jī)本身就如一個(gè)復(fù)雜的同步時(shí)序電路,為了保證同步工作方式的實(shí)現(xiàn),電路應(yīng)在唯一的時(shí)鐘信 號(hào)控制下嚴(yán)格地工作。其電路如圖3所示: file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image008.gif 圖3 時(shí)鐘電路模塊 2、復(fù)位電路模塊 復(fù)位電路是使單片機(jī)的CPU或系統(tǒng)中的其他部件處于某一確定的初始狀態(tài),并從這狀態(tài)開始工作,除了進(jìn)入系統(tǒng)的正常初始化之外,當(dāng)由于程序運(yùn)行出錯(cuò)或操作錯(cuò)誤使系統(tǒng)處于死鎖狀態(tài)時(shí),為擺脫困境,也需按復(fù)位電路以重新啟動(dòng)。本設(shè)計(jì)采用的是按鍵復(fù)位電路。其電路如圖4所示: file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image010.gif 圖4 復(fù)位電路 3、主控制系統(tǒng)模塊 主控制器采用AT89S52,是ATMEL公司生產(chǎn)的一款性能穩(wěn)定的8位單片機(jī)。AT89S52具有1個(gè)8KB的FLASH程序存儲(chǔ)器,1個(gè)512字節(jié)的RAM,4個(gè)8位的雙向可位尋址I/O端口,3個(gè)16位定時(shí)/計(jì)數(shù)器及1個(gè)串行口和6個(gè)向量二級(jí)中斷結(jié)構(gòu)。 單片機(jī)的P0口分別用于控制南北及東西的通行燈,P2口和P3^4-P3^7口用于4組4位LED計(jì)時(shí)器的控制,緊急車輛通行時(shí)使用外中斷0(P3^2)和外中斷1(P3^3),進(jìn)行手動(dòng)按鍵,即可轉(zhuǎn)換。其主控電路如圖5所示: file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image012.gif 圖5 主控制系統(tǒng)模塊 4、交通燈輸出控制模塊 道口交通燈指示采用高亮度紅、黃、綠發(fā)光二極管進(jìn)行提示。其圖如圖6所示 file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image014.gif 圖6 LED顯示模塊 當(dāng)R=220歐時(shí),按公式A=(5-1.8)/R計(jì)算,電路中的電流大小應(yīng)為A=14.545mA.由于每個(gè)路口的通行雙向指示處理相同,因此每個(gè)端口應(yīng)具有3A的吸收電流能力。 5、時(shí)間顯示電路模塊 道口通行剩余時(shí)間采用高亮紅色7段LED發(fā)光數(shù)碼管顯示,采用共陽數(shù)碼管,如用單片機(jī)吸收電流驅(qū)動(dòng),列掃描驅(qū)動(dòng)使用三極管,按每段6mA電流計(jì)算,全顯示字形“8”時(shí),每個(gè)數(shù)碼需6mA*8=48mA,由于時(shí)間顯示每個(gè)道口相同,共需要電流192mA,因此設(shè)計(jì)中也采用了中功率三極管8550.其顯示電路如圖7所示: 6、緊急通車電路模塊 為了實(shí)現(xiàn)此功能,利用單片機(jī)中斷達(dá)到目的。利用一個(gè)手動(dòng)按鈕開關(guān)接至單片機(jī)外部中斷0,同時(shí)在軟件設(shè)計(jì)時(shí)將其設(shè)定為最高優(yōu)先級(jí),當(dāng)其按下時(shí),四方全為紅燈,同時(shí)將中斷位置的PSW、ACC進(jìn)棧保護(hù),當(dāng)其計(jì)時(shí)完了之后,回到原來的位置進(jìn)行執(zhí)行。再利用一個(gè)手動(dòng)按鈕接至單片機(jī)外部中斷1當(dāng)其按下時(shí),如果是東西道是紅燈,而南北道是綠燈,則將其置為東西是綠燈,南北是紅燈;如果是東西道是綠燈,而南北道是紅燈,則將其置為東西是紅燈,南北是綠燈。兩種情況都是執(zhí)行完后,回到斷點(diǎn)處繼續(xù)執(zhí)行。其電路如圖8所示: file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image016.gif 圖7 數(shù)碼管顯示模塊 file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image018.gif 圖8 按鍵控制電路 三、軟件設(shè)計(jì)與流程圖 1、軟件的設(shè)計(jì) 主程序采用查詢方式定時(shí),調(diào)用0.5S延時(shí)子程序的次數(shù),從而獲取交通燈的各種時(shí)間。子程序采用定時(shí)器1方式1查詢式定時(shí),定時(shí)器定時(shí)50ms,確定50ms循環(huán)20次,從而獲得1S的延時(shí)時(shí)間。 有車車道的放行的中斷服務(wù)程序首先要保護(hù)現(xiàn)場,因而需用到延時(shí)子程序,子程序采用定時(shí)器0方式1查詢式定時(shí),定時(shí)器定時(shí)50ms,確定50ms循環(huán)20次,從而獲得1S的延時(shí)時(shí)間,保護(hù)現(xiàn)場時(shí)還需關(guān)中斷,以防止高優(yōu)先級(jí)中斷(緊急車輛通過所產(chǎn)生的中斷)出現(xiàn)導(dǎo)致程序混亂。 開中斷,由軟件查詢外中斷1,判別哪一道有車,再根據(jù)查詢情況執(zhí)行相應(yīng)的服務(wù)。待交通燈信號(hào)出現(xiàn)后,保持15S的延時(shí),然后,關(guān)中斷,恢復(fù)現(xiàn)場,再開中斷返回主程序。 緊急車輛出現(xiàn)時(shí)的中斷服務(wù)程序也需要保護(hù)現(xiàn)場,但無須關(guān)中斷(因其為高優(yōu)先級(jí)中斷),然后執(zhí)行相應(yīng)的服務(wù),待交通燈信號(hào)出現(xiàn)后延時(shí)20S,確保緊急車輛通過交叉路口,然后,恢復(fù)現(xiàn)場,返回主程序。 2、程序流程圖 主程序 有車車道放行時(shí)的中斷服務(wù)程序(外中斷1)
| | | | | | file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image019.gif | | file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image020.gif | |
| | file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image021.gif |
file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image022.gif
| | | | | | | | | | file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image023.gif | | | | file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image024.gif | | file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image025.gif | | | file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image026.gif | |
緊急情況時(shí)的中斷服務(wù)程序(外中斷0) file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image027.gif
| | | | | file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image028.gif | | | | file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image029.gif |
五、總原電路及元器件清單 1.總原理圖如圖9所示 file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image031.gif 圖9 總的原理圖 2.PCB制板圖如圖10所示 file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image033.gif 圖10 PCB板 3.整體電路仿真圖以及仿真結(jié)果分析 (1)、整體電路仿真圖如圖11所示 file:///C:/Users/Administrator/AppData/Local/Temp/msohtmlclip1/01/clip_image035.jpg 圖11 仿真圖 (2)、仿真結(jié)果分析 上電或按鍵復(fù)位后數(shù)碼管無顯示,東西、南北的燈都為紅燈亮;開始工作后主車道綠燈亮次車道紅燈亮50S,在這里選定它亮到5S時(shí),主車道綠燈滅,黃燈亮;5S后主車道變?yōu)榧t燈亮次車道綠燈亮30S,在這里選定它亮到5S時(shí),次車道黃燈亮,5S后返回重新執(zhí)行。按緊急車輛按鈕紅燈全亮顯示時(shí)間為20S;有車車道放行按鈕按下時(shí),若主車道是綠燈、次車道是紅燈,則把主車道變?yōu)榧t燈、次車道變?yōu)榫G燈,顯示15S;若主車道是紅燈、次車道是綠燈,則把主車道變?yōu)榫G燈、次車道變?yōu)榧t燈,顯示15S; 4、元件清單 如下表所示: 元件名稱 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 數(shù)碼管驅(qū)動(dòng)、按鍵電路 | | | | | | | | | | | | |
六、安裝與調(diào)試 1. 電路安裝 打好板后,按照所畫的PCB板,一一的把各個(gè)元件焊接到所制的板上即可。 2. 電路調(diào)試 電路調(diào)試是利用開發(fā)系統(tǒng)、基本測試儀器(萬用表、示波器等),檢查系統(tǒng)硬件中存在的故障。其調(diào)試可分為靜態(tài)調(diào)試與動(dòng)態(tài)調(diào)試兩步進(jìn)行。 靜態(tài)調(diào)試是在系統(tǒng)未工作時(shí)的一種硬件檢測。 第一步:目測。檢查外部的各種元件或者是電路是否有斷點(diǎn)。 第二步:用萬用表測試。先用萬用表復(fù)核目測中有疑問的連接點(diǎn),再檢測各種電源與地線之間是否有短路現(xiàn)象。 第三步:加電檢測。給板加電,檢測所有的插座或是器件的電源端是否符合要求的值。 第四步:是聯(lián)機(jī)檢查。因?yàn)橹挥杏脝纹瑱C(jī)開發(fā)系統(tǒng)才能完成對(duì)用戶系統(tǒng)的調(diào)試。 動(dòng)態(tài)調(diào)試 動(dòng)態(tài)調(diào)試是在系統(tǒng)工作的情況下發(fā)現(xiàn)和排除系統(tǒng)硬件中存在的器件內(nèi)部故障、器件連接邏輯錯(cuò)誤等的一種硬件檢查。動(dòng)態(tài)調(diào)試的一般方法是由近及遠(yuǎn)、由分到合。 由分到合是指首先按邏輯功能將系統(tǒng)硬件電路分為若干塊,當(dāng)調(diào)試電路時(shí),與該元件無關(guān)的器件全部從系統(tǒng)中去掉,這樣可以將故障范圍限定在某個(gè)局部的電路上。當(dāng)各塊電路無故障后,將各電路逐塊加入系統(tǒng)中,在對(duì)各塊電路功能及各電路間可能存在的相互聯(lián)系進(jìn)行調(diào)試。由分到合調(diào)試既告完成。 由近及遠(yuǎn)是將信號(hào)流經(jīng)的各器件按照距離單片機(jī)的邏輯距離進(jìn)行由近及的分層,然后分層調(diào)試。調(diào)試時(shí),仍采用去掉無關(guān)元件的方法,逐層調(diào)試下去,就會(huì)定位故障元件了。 3.軟件調(diào)試 軟件調(diào)試是通過對(duì)擁護(hù)程序的C編程、連接、執(zhí)行發(fā)現(xiàn)程序中存在的語法錯(cuò)誤與邏輯錯(cuò)誤并加以排除糾正的過程。運(yùn)行程序后,編輯,查看程序是否有邏輯的錯(cuò)誤。 七、性能測試與分析 系統(tǒng)做好的,進(jìn)行系統(tǒng)的完整調(diào)試。按照所設(shè)計(jì)的流程圖,用單片機(jī)跟蹤模式程序進(jìn)行調(diào)試,配合相關(guān)的硬件動(dòng)作,可以觀察LED的變化和數(shù)碼管的顯示是否正確。同樣明確延時(shí)時(shí)間長短、跳轉(zhuǎn)位置及調(diào)用的程序功能。經(jīng)過觀察各檢測,我可以看到整個(gè)系統(tǒng)的功能都能達(dá)到我的設(shè)計(jì)要求。 八、結(jié)論與心得 以往每次做課程設(shè)計(jì),都會(huì)感覺自己收獲不少。這次單片機(jī)課程設(shè)計(jì)也不例外。做課程設(shè)計(jì)是為了讓我們對(duì)平時(shí)學(xué)習(xí)的理論知識(shí)與實(shí)際操作相結(jié)合,在理論和實(shí)驗(yàn)教學(xué)基礎(chǔ)上進(jìn)一步鞏固已學(xué)基本理論及應(yīng)用知識(shí)并加綜合提高,學(xué)會(huì)將知識(shí)應(yīng)用于實(shí)際的方法,提高和解決問題的能力。 第一,在編寫軟件中,在此過程中我更為熟練得掌握匯編語言各種指令的使用方法,掌握了keil軟件的使用。 第二,在軟件調(diào)試過程中,使我又一次復(fù)習(xí)了keil和proteus聯(lián)合使用的方法。在調(diào)試時(shí)曾經(jīng)遇到數(shù)碼管倒計(jì)時(shí)顯示時(shí)間兩位不能同時(shí)顯示,后來經(jīng)過查找資料不斷調(diào)試才領(lǐng)悟到原來在顯示的過程中要循環(huán)顯示才能使得顯示穩(wěn)定下來。 第三,在做原理圖和PCB的過程中,使我進(jìn)一步掌握了proteus軟件的使用方法。再次熟悉了各種作圖工具的應(yīng)用,而且培養(yǎng)了我在設(shè)計(jì)原理圖時(shí)的一些技巧和好的習(xí)慣。 第四,在做實(shí)物的過程中,培養(yǎng)了我認(rèn)真耐心的工作態(tài)度。我在做板子過程中,首先由于我的布線比較緊密加上孔和焊盤過小使得在打孔是出現(xiàn)刮斷線以及在焊接的時(shí)候出現(xiàn)了虛焊和聯(lián)焊等問題,后來我不得不重新再做一次板;二是由于焊接前沒檢查斷線問題,使得我的PCB在加載程序后只有燈亮,而數(shù)碼管卻不亮,后來經(jīng)過我的仔細(xì)檢查,原來是在給三級(jí)管供電的線有斷,將其連接起來后,就能顯示了,從而得以成功。 總之,通過這次課程設(shè)計(jì),我掌握了用單片機(jī)設(shè)計(jì)交通燈的基體方法,增強(qiáng)了我尋找問題,解決問題的能力。培養(yǎng)了我的設(shè)計(jì)思維,此次課程設(shè)計(jì)的成功不僅幫助我更好地掌握書本知識(shí),尤其重要的是增強(qiáng)了我的自信,培養(yǎng)了我獨(dú)立思考的能力。但是此次設(shè)計(jì)不中之處是不能實(shí)現(xiàn)左右彎燈,不有人行道控制燈,不能進(jìn)行流量控制。 九、參考文獻(xiàn) [1]《單片機(jī)基礎(chǔ)》.李廣弟、朱月秀、冷祖祁.北京航空航天大學(xué)出版社。 [2] 華成英 童詩白, 《模擬電子技術(shù)基礎(chǔ)(第四版)》,高等教育出版社。 [3] 康華光,《電子技術(shù)基礎(chǔ) 數(shù)字部分(第五版)》,高等教育出版社。 [4]《51單片機(jī)C語言常用模塊與綜合系統(tǒng)設(shè)計(jì)實(shí)例精講》.于永、戴佳、常江.電子工業(yè)出版社。 [5]《單片機(jī)課程設(shè)計(jì)指導(dǎo)》.楊居義.清華大學(xué)出版社。 [6]《零基礎(chǔ)學(xué)單片機(jī)C語言程序設(shè)計(jì)》.趙建領(lǐng)、薛園國.機(jī)械工業(yè)出版社。 十、致謝 通過本次畢業(yè)設(shè)計(jì),我在指導(dǎo)老師鄒清平的精心指導(dǎo)和嚴(yán)格要求下,獲得了豐富的理論知識(shí),極大地提高了實(shí)踐能力,并對(duì)當(dāng)前電子領(lǐng)域的研究狀況和發(fā)展方向有了一定的了解,單片機(jī)領(lǐng)域這對(duì)我今后進(jìn)一步學(xué)習(xí)電子方面的知識(shí)有極大的幫助。另外,此次畢業(yè)設(shè)計(jì)還獲得了我們同學(xué)的大力支持。在此我忠心感謝鄒清平以及各位同學(xué)的指導(dǎo)和支持。在未來的工作和學(xué)習(xí)中,我將以更好的成績來加報(bào)各位老師和同學(xué)。 十一 、程序清單 #include<reg52.h> #define uchar unsigned char #define uint unsigned int #define time 50000 #define on 0 #define off 1 sbitRED_ZHU = P0^0; //南北 紅燈 sbitYELLOW_ZHU = P0^1;//南北 黃燈 sbitGREEN_ZHU = P0^2; //南北 綠燈 sbitRED_ZHI = P0^3; //東西 紅燈 sbitYELLOW_ZHI = P0^4; //東西 黃燈 sbitGREEN_ZHI = P0^5; //東西 綠燈 sbitP23 = P3^4; sbitP22 = P3^5; //東西方向數(shù)碼管位選 sbitP21 = P3^6; sbitP20 = P3^7; //南北方向數(shù)碼管位選 sbitint0_key = P3^2; sbitint1_key = P3^3; voiddisplay1(uchar,uchar); voiddisplay2(uchar,uchar); voiddelayms(uint k); uchartemp1,temp2,temp3,temp4,temp5,temp6; /*===============倒計(jì)時(shí)=========================*/ ucharN = 50,Y = 45,Z = 50,M = 75,G = 80,U =80; ucharC50ms,t0; ucharseg = 1; ucharflag=0,led_data_temp; voidInitialT1(void) { TMOD = 0x11; //定時(shí)器0,1工作在方式1 TH1 = (65536 - time)/256; //相當(dāng)于(65536-time)/256; TL1 = (65536 - time)%256;//初值為time(50ms) TR1 = 1;//開定時(shí)器1中斷 ET1 = 1;//允許定時(shí)器1中斷 ET0 = 1; TH0 = (65536 - time)/256; TL0 = (65536 - time)%256; EX0 = 1; //允許外部中斷0 IE0 = 1;//啟動(dòng)外部中斷0 PX0 = 1; EX1=1; IE1=1; EA = 1; //開總中斷 } void int0(void) interrupt 0 //外中斷0 { flag = 0; led_data_temp = P0; t0 = 20; if(!int0_key) { delayms(10); if(!int0_key) { while(!int0_key); TH0 = (65536 - time)/256; TL0 = (65536 - time)%256; TR1 = 0; TR0 = 1; EX0 = 0; EX1 = 0; C50ms = 0; } } } void int1(void) interrupt 2 //外部中斷1 { t0=15; flag = 1; led_data_temp = P0; if(((RED_ZHU == 0) && (GREEN_ZHI== 0))||((YELLOW_ZHI == 0)&&(RED_ZHU == 0))) { P0 = 0xff; GREEN_ZHU = 0; RED_ZHI = 0; } else //if((RED_ZHI ==0)&&(GREEN_ZHU == 0)) { P0 = 0xff; GREEN_ZHI = 0; RED_ZHU = 0; } if(!int1_key) { delayms(10); if(!int1_key) { while(!int1_key); TH0 = (65536 - time)/256; TL0 = (65536 - time)%256; TR1 = 0; TR0 = 1; EX0 = 0; EX1 = 0; C50ms = 0; } } } voidISRT0(void) interrupt 1//定時(shí)器0中斷服務(wù)子程序 { temp1 = N,temp2 = Y,temp3 = Z,temp4 =M,temp5 = G,temp6 = U; TH0 = (65536 - time)/256; TL0 = (65536 - time)%256; //重裝初值time YELLOW_ZHU=1; //如果在黃5S時(shí)進(jìn)行熄滅黃燈 YELLOW_ZHI=1; if(!flag) { P0 = 0xf6; } C50ms++; if(C50ms > 19) { t0--; C50ms = 0; } if(t0 == 0) { P0 = led_data_temp; N = temp1,Y = temp2,Z = temp3,M =temp4,G = temp5,U = temp6; TR0 = 0;//禁止定時(shí)器1中斷 TR1 = 1;//開定時(shí)器1中 EX1 = 1; //EX0 = 1; C50ms = 0; return; } } voidISRT1(void) interrupt 3 //定時(shí)器1中斷服務(wù)子程序 { TH1 = (65536 - time)/256; TL1 = (65536 - time)%256; //重裝初值time C50ms++; if(C50ms > 19) { N--; M--; Y--; Z--; G--; U--; C50ms = 0; } } /*=================延時(shí)=======================*/ voidDelay10uS(uchar second) { uint i; while((second--) != 0) { for(i = 0;i < 5;i++) {} } } voiddelayms(uint k) { uinti,j; for(i = 0;i < k;i++) for(j = 0;j < 120;j++); } /*==================數(shù)碼管控制========================*/ ucharcode discode[]= {0xC0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//共陽數(shù)碼管0-9代碼 voiddisplay1(uchar num1,uchar num2) //控制南數(shù)碼管顯示 { P2=discode[num1]; P21=on; Delay10uS(10);P21=off; //低位 P2=discode[num2]; P20=on; Delay10uS(10);P20=off; //高位 } voiddisplay2(uchar num3,uchar num4) //控制東西數(shù)碼管顯示 { P2 = discode[num3]; P23 = on;Delay10uS(10); P23 = off; //低位 P2 = discode[num4]; P22 = on;Delay10uS(10); P22 = off; //高位 } /*===================主函數(shù)=================================*/ main() { /*=============初始狀態(tài):東西南北都紅燈==================*/ RED_ZHU=on; RED_ZHI=on; delayms(1000); RED_ZHU = off; RED_ZHI = off; InitialT1(); while(1) { // 初始化計(jì)時(shí)器 /*=============狀態(tài)1:東西綠燈(45s) 南北紅燈(40s)==================*/ /*=============狀態(tài)2:東西黃燈(5s) 南北紅燈(5s)=================*/ RED_ZHI = on; GREEN_ZHU = on; while(N != 0) { if(TR0 == 1) { display2(t0/10,t0%10);// 當(dāng)t0=20時(shí)東西、南北紅燈(20s) display1(t0/10,t0%10);// 當(dāng)t0=15時(shí)東西、南北紅、綠燈交換點(diǎn)亮 } else { if(N == 5) { while(Z != 0) { if(TR0 == 1) { display2(t0/10,t0%10); display1(t0/10,t0%10); } else { display1(N/10,N%10); // 東西黃燈(5s) display2(Z/10,Z%10); // 南北紅燈(5s) GREEN_ZHU = off; YELLOW_ZHU = on; } } } else { display1(N/10,N%10); // 東西綠燈(45s) display2(Y/10,Y%10); // 南北紅燈(40s) } } } GREEN_ZHU = off; RED_ZHI = off; YELLOW_ZHU = off; P0 = 0xff; //數(shù)碼管全關(guān)掉 Delay10uS(1); /*=============狀態(tài)3:東西紅燈(20s) 南北綠燈(25s)==================*/ /*=============狀態(tài)4:東西紅燈(5s) 南北黃燈(5s)==================*/ GREEN_ZHI = on; RED_ZHU = on; while(G != 0) { if(TR0 == 1) { display2(t0/10,t0%10); display1(t0/10,t0%10); } else { if(G == 5) { while(U != 0) { if(TR0 == 1) { display2(t0/10,t0%10); display1(t0/10,t0%10); } else { display2(G/10,G%10);// 東西紅燈(5s) display1(U/10,U%10);// 南北黃燈(5s) GREEN_ZHI = off; YELLOW_ZHI = on; } } } else { display2(G/10,G%10);// 東西紅燈(25s) display1(M/10,M%10);// 南北綠燈(20s) } } } GREEN_ZHI = off; RED_ZHU = off; YELLOW_ZHI = off; P0 = 0xff; Delay10uS(1); /*=====================重新賦值===============================*/ N =50,Y = 45,Z = 50,M = 75,G = 80,U=80; } } 物理與電子工程系軟件課程設(shè)計(jì)成績?cè)u(píng)定表 專業(yè):電子信息工程 年級(jí):2007 班級(jí):07電本 2 班 成員:賓華 課題名稱 | 基于AT89S52單片機(jī)交通燈控制系統(tǒng)的設(shè)計(jì) | | 用AT89S52單片機(jī)控制一個(gè)交通信號(hào)燈系統(tǒng),晶振采用12MHZ。 設(shè)A車道與B車道交叉組成十字路口,A是主道,B是支道。設(shè)計(jì)要求如下: 用發(fā)光二極管模擬交通信號(hào)燈,用按鍵開關(guān)模擬車輛檢測信號(hào)。正常情況下,A、B兩車道輪流放行,A車道放行50s,其中5s用于警告;B車道放行30s,其中5s用于警告。交通繁忙時(shí),交通信號(hào)燈控制系統(tǒng)應(yīng)有手控開關(guān),可人為地改變信號(hào)燈的狀態(tài),以緩解交通擁擠狀況。在B 車道放行期間,若A車道有車而B車道無車,按下開關(guān)K1 使 A車道放行15s;在 A車道放行期間,若B車道有車而A車道無車,按下開關(guān)K1 使B 車道放行15s。有緊急車輛通過時(shí),按下K2開關(guān)使 A、B車道均為紅燈,禁行20s。 | | 該生能在老師的嚴(yán)格要求下順利完成整個(gè)課程設(shè)計(jì)工作和論文的撰寫。程序能正確的運(yùn)行,達(dá)到了所要求的所有功能,界面安排合理,論文符合要求。在整個(gè)課程設(shè)計(jì)的過程中,態(tài)度端正,學(xué)習(xí)也比較認(rèn)真,時(shí)間安排也很合理,能基本在每個(gè)階段完成相應(yīng)的任務(wù),做到時(shí)間上前緊后松。當(dāng)然,在這其間也存在一些不足和需要提高的地方。例如,知識(shí)面不夠廣,處理問題和運(yùn)用知識(shí)的能力還有待提高,不能積極主動(dòng)和老師交流工作的進(jìn)程,希望該生在以后的工作學(xué)習(xí)中注意這些問題,爭取更大的提高和進(jìn)步。 建議成績: 指導(dǎo)教師: | 課程設(shè)計(jì)指導(dǎo)小組評(píng)定 | 評(píng)定成績: 課程設(shè)計(jì)指導(dǎo)負(fù)責(zé)人: 年 月 日 | | | | |
|