久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 7883|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

基于單片機(jī)的交通燈控制系統(tǒng)課程設(shè)計(jì)說(shuō)明書(word格式可編輯文檔下載)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:313885 發(fā)表于 2018-4-22 18:06 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

課程設(shè)計(jì)說(shuō)明書

課程名稱:      《單片機(jī)技術(shù)》     

設(shè)計(jì)題目:基于單片機(jī)的交通燈控制系統(tǒng)

學(xué)    院:  電子信息與電氣工程學(xué)院

學(xué)生姓名:*      

學(xué)    號(hào):140208*      

專業(yè)班級(jí):14級(jí)通信工程1班   

指導(dǎo)教師:段*         


設(shè)計(jì)題目
基于單片機(jī)的交通燈控制系統(tǒng)
學(xué)生姓名
栗子娟
所在學(xué)院
電子信息與電器工程學(xué)院
專業(yè)、年級(jí)、班
14級(jí)通信1班

設(shè)計(jì)要求:

1.以單片機(jī)為核心控制器設(shè)計(jì)一個(gè)能實(shí)現(xiàn)來(lái)顯示路口通行與禁行的交通燈系統(tǒng)

2.時(shí)鐘電路11.0592MHz的晶體振蕩器和33pf的電容來(lái)實(shí)現(xiàn),且晶振電路要靠近單片機(jī)

  • 要有復(fù)位電路隨時(shí)可以手動(dòng)復(fù)位恢復(fù)交通燈系統(tǒng)的初始狀態(tài)
  • 隨時(shí)手動(dòng)實(shí)現(xiàn)東西方向與南北方向的通行與禁行,且東西,南北方向的禁行與通行時(shí)間可靈活調(diào)整
  • 要有電源模塊

學(xué)生應(yīng)完成的工作:設(shè)計(jì)出一個(gè)紅黃綠指示燈能相互轉(zhuǎn)換,且能實(shí)現(xiàn)手動(dòng)根據(jù)實(shí)際情況隨時(shí)手動(dòng),實(shí)現(xiàn)東西與南北方向的禁行與通行,且東西、南北方向的禁行與通行時(shí)間可靈活調(diào)整的交通燈系統(tǒng)。


工作計(jì)劃:

4月3號(hào)—4號(hào)完成原理圖的設(shè)計(jì);

4 月5號(hào)—6號(hào)進(jìn)行PCB設(shè)計(jì);

4 月6號(hào)—7號(hào)制作PCB板;

4 月10號(hào)—11號(hào)電路板安裝與調(diào)試;

4月14號(hào)提交課程設(shè)計(jì)報(bào)告。



指導(dǎo)教師(簽名):                學(xué)生(簽名): 手寫


基于單片機(jī)的交通燈控制系統(tǒng)

摘 要:

本次課題是以單片機(jī)為核心控制器來(lái)設(shè)計(jì)一個(gè)能實(shí)現(xiàn)交通燈紅、黃、綠三個(gè)狀態(tài)相互轉(zhuǎn)換,及用倒計(jì)時(shí)來(lái)顯示路口通行與禁行的交通燈系統(tǒng)。該設(shè)計(jì)以現(xiàn)實(shí)生活中的交通十字路口為模型,利用單片機(jī)的最小系統(tǒng)來(lái)實(shí)現(xiàn)基本的電路功能,通過(guò)I/O端口的輸入和輸出實(shí)現(xiàn)對(duì)數(shù)碼管和LED燈的控制。本次設(shè)計(jì)的交通燈不僅可以實(shí)現(xiàn)指示燈三個(gè)狀態(tài)的轉(zhuǎn)換和倒計(jì)時(shí)的顯示,而且可以根據(jù)實(shí)際情況隨時(shí)手動(dòng),實(shí)現(xiàn)東西與南北方向的禁行與通行,且東西、南北方向的禁行與通行時(shí)間可靈活調(diào)整。




目錄

1.設(shè)計(jì)背景

1.1開(kāi)發(fā)背景

1.2發(fā)展前景

2.設(shè)計(jì)方案

2.1方案一

2.2方案二

2.3方案三

3. 方案實(shí)施

3.1設(shè)計(jì)內(nèi)容

3.2 方案執(zhí)行

3.3制版與調(diào)試

4. 結(jié)果與結(jié)論

5.收獲與致謝

6. 參考文獻(xiàn)

7. 附件

7.1附錄1

7.2附錄2

7.3 附錄3




1.設(shè)計(jì)背景1.1開(kāi)發(fā)背景

隨著我國(guó)國(guó)民經(jīng)濟(jì)的迅速發(fā)展和人口的快速增加,人們對(duì)各種交通車輛的需求更是越來(lái)越大,交通工具的迅猛發(fā)展以及道路資源的局限性,給城市交通帶來(lái)巨大的壓力,交通擁堵問(wèn)題已成為影響現(xiàn)代城市可持續(xù)發(fā)展的重要因素。城市交通控制系統(tǒng)是用于城市交通數(shù)據(jù)監(jiān)測(cè)、交通信號(hào)燈控制與交通疏導(dǎo)的計(jì)算機(jī)綜合管理系統(tǒng),它是現(xiàn)代城市交通監(jiān)控系統(tǒng)中最重要的組成部分。如何采用合適的控制方法,最大限度利用好耗費(fèi)巨資修建的城市道路,緩解城市道路壓力,越來(lái)越成為交通運(yùn)輸管理和城市規(guī)劃部門亟待解決的主要問(wèn)題。

傳統(tǒng)的解決途徑主要有兩個(gè):一是加大交通基礎(chǔ)設(shè)施建設(shè)的投入,但資金、土地等稀缺資源的有限性又是不可回避的問(wèn)題,道路基礎(chǔ)設(shè)施是不可能無(wú)限擴(kuò)展的;另一個(gè)就是限制交通流量,主要是通過(guò)法律和行政的手段實(shí)現(xiàn)。但是很顯然,傳統(tǒng)的方法滿足不了日益增長(zhǎng)的交通出行,因此人們就希望通過(guò)增加技術(shù)含量的方法提高現(xiàn)有道路的利用率,提高道路交通的安全程度和道路使用的舒適性,所以對(duì)交通燈的智能化需求越來(lái)越迫切。

1.2發(fā)展前景

         智能交通系統(tǒng)是將先進(jìn)的信息技術(shù)、數(shù)據(jù)通訊傳輸技術(shù)、電子傳感技術(shù)、電子控制技術(shù)及計(jì)算機(jī)處理技術(shù)等有效的集成運(yùn)用于整個(gè)地面交通管理系統(tǒng)而建立的一種在大范圍內(nèi)、全方位發(fā)揮作用的實(shí)時(shí)、準(zhǔn)確、高效的綜合交通運(yùn)輸管理系統(tǒng)。對(duì)城市交通流進(jìn)行智能控制,可以使道路暢通,提高交通效率。合理進(jìn)行交通控制可以對(duì)交通流進(jìn)行有效的引導(dǎo)和調(diào)度,使交通保持在一個(gè)平穩(wěn)的運(yùn)行狀態(tài),從而避免或緩和交通擁擠狀況,大大提高交通運(yùn)輸?shù)倪\(yùn)行效率,還可以減少交通事故,增加交通安全,降低污染程度,節(jié)省能源消耗。

        交通系統(tǒng)作為一個(gè)時(shí)變的、具有隨機(jī)性的復(fù)雜系統(tǒng),越來(lái)越多研究控制理論的學(xué)者投身到交通控制的研究中,在交通信號(hào)控制領(lǐng)域提出了一些新方法、新思路。如靜態(tài)多段配時(shí)控制、準(zhǔn)動(dòng)態(tài)多段配時(shí)控制、最優(yōu)控制、大系統(tǒng)遞階控制、模糊控制、神經(jīng)網(wǎng)絡(luò)控制,網(wǎng)絡(luò)路由控制等。利用模糊控制智能控制技術(shù)進(jìn)行交叉口信號(hào)燈控制能取得比定時(shí)控制與感應(yīng)控制更好的效果,因此模糊交通控制已經(jīng)成為了交通信號(hào)控制的主流方向之一

2.設(shè)計(jì)方案2.1方案一

采用標(biāo)準(zhǔn)AT89C52單片機(jī)作為控制器;通行倒計(jì)時(shí)顯示采用兩位數(shù)碼管;通行與禁行指示燈采用紅、黃、綠發(fā)光二極管;按以上系統(tǒng)構(gòu)架設(shè)計(jì),單片機(jī)端口資源剛好滿足要求。該系統(tǒng)具有電路簡(jiǎn)單、設(shè)計(jì)方便、顯示亮度高、耗電較少以及可靠性高等特點(diǎn)。整體電路組成框圖如圖1所示。

圖2 采用16×16點(diǎn)陣LED發(fā)光管設(shè)計(jì)的交通燈控制系統(tǒng)(見(jiàn)51hei附件)

2.2方案二

采用AT89C52單片機(jī)作為控制器,通行倒計(jì)時(shí)顯示采用16×16點(diǎn)陣LED發(fā)光管,通行與禁行指示燈也采用16×16點(diǎn)陣雙色LED發(fā)光管。該系統(tǒng)設(shè)計(jì)框架如圖2所示。列驅(qū)動(dòng)采用74LS595以實(shí)現(xiàn)串行端口擴(kuò)展,行驅(qū)動(dòng)采用4/16譯碼器74LS154動(dòng)態(tài)掃描,譯碼器74LS154生成16條行選通信號(hào)線,通過(guò)驅(qū)動(dòng)器驅(qū)動(dòng)對(duì)應(yīng)的行線。每條行線上需要較大的驅(qū)動(dòng)電流,應(yīng)選用大功率三極管作為驅(qū)動(dòng)管。這種設(shè)計(jì)方案圖案顯示逼真,單片機(jī)占用端口資源少;缺點(diǎn)是需要大量的硬件,電路復(fù)雜,耗電量大。因此在模型制作中較少采用此方案。

2.3方案三

采用AT89S51單片機(jī)作為控制器,通行倒計(jì)時(shí)及通行與禁行指示采用單塊LCD液晶點(diǎn)陣顯示器。這種設(shè)計(jì)方案占用單片機(jī)的端口最少,硬件也少,耗電也最小,顯示圖案也很精美,但亮度太暗,晚上還得開(kāi)背光燈,所以也較少采用。

綜上所述,方案一具有綜合設(shè)計(jì)優(yōu)點(diǎn),因此交通燈控制系統(tǒng)模型采用方案一設(shè)計(jì)。

3. 方案實(shí)施3.1設(shè)計(jì)內(nèi)容

此次設(shè)計(jì)的交通燈系統(tǒng)可分為三個(gè)模塊:電源模塊,單片機(jī)的最小系統(tǒng)模塊以及顯示模塊。

1.電源模塊

電源模塊是用來(lái)給單片機(jī)的工作提供電源的,此次設(shè)計(jì)的電源模塊需要為單片機(jī)工作提供+5V的固定穩(wěn)壓直流電壓,主要是用三端穩(wěn)壓器7805來(lái)實(shí)現(xiàn)的。

該模塊包括三部分電路:整流電路,濾波電路,穩(wěn)壓電路。整流電路的目的是將不能直接給單片機(jī)提供工作電源的交流電轉(zhuǎn)化成能為單片機(jī)提供電源的直流電。本電路中選用的是橋式整流,是通過(guò)KBP206G–BP整流橋來(lái)實(shí)現(xiàn)的。濾波電路是用來(lái)對(duì)整流電路輸出的電壓進(jìn)行處理,整流電路輸出的直流電壓中脈動(dòng)成分比較大,所以需要經(jīng)過(guò)濾波電路的處理。本電路中選用的是電容濾波,是通過(guò)電容并聯(lián)來(lái)實(shí)現(xiàn)的。穩(wěn)壓電路是指在輸入電壓、負(fù)載、環(huán)境溫度、電路參數(shù)等發(fā)生變化時(shí)仍能保持輸出電壓恒定。為了保證單片機(jī)能長(zhǎng)時(shí)間持續(xù)穩(wěn)定的工作,就需要有相對(duì)穩(wěn)定的可用電源。本次設(shè)計(jì)中選用固定三端穩(wěn)壓器7805來(lái)實(shí)現(xiàn)穩(wěn)壓電路的工作。設(shè)計(jì)完成的電源模塊原理圖及仿真圖如

圖3.電源模塊仿真圖

2.單片機(jī)的最小系統(tǒng)模塊

最小系統(tǒng)模塊包括三部分:?jiǎn)纹瑱C(jī),復(fù)位電路,晶振電路。

晶振電路的作用是為系統(tǒng)提供基本的時(shí)鐘信號(hào)。它結(jié)合單片機(jī)內(nèi)部的電路,產(chǎn)生單片機(jī)所必須的時(shí)鐘頻率,單片機(jī)的一切指令的執(zhí)行都是建立在這個(gè)基礎(chǔ)上的,晶振的提供的時(shí)鐘頻率越高,單片機(jī)的運(yùn)行速度也就越快。在該設(shè)計(jì)中,我們選用的是11.0592MHz的晶振振蕩器,且采用的是內(nèi)部震蕩的典型電路。

復(fù)位電路的第一功能是上電復(fù)位,它是一種用來(lái)使電路恢復(fù)到起始狀態(tài)的電路設(shè)備,可以確保單片機(jī)系統(tǒng)中電路穩(wěn)定可靠工作。它的優(yōu)勢(shì)在于一是在給電路通電時(shí)馬上進(jìn)行復(fù)位操作,二是在必要時(shí)可以由手動(dòng)操作,三是根據(jù)程序或者電路運(yùn)行的需要自動(dòng)地進(jìn)行。在本次設(shè)計(jì)中,我們選用的是手動(dòng)按鈕復(fù)位,復(fù)位電路用電阻和電容組合就可以實(shí)現(xiàn)了。

本次設(shè)計(jì)用到的單片機(jī)型號(hào)為AT89S51,是一個(gè)低功耗,高性能CMOS8位單片機(jī),片內(nèi)含4kB的可反復(fù)擦寫1000次的Flash只讀程序存儲(chǔ)器。它有32個(gè)外部雙向輸入/輸出(I/O)口,5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷,2個(gè)16位可編程定時(shí)計(jì)數(shù)器,2個(gè)全雙工串行通信口,看門狗(WDT)電路,片內(nèi)時(shí)鐘振蕩器。AT89S51設(shè)計(jì)和配置了振蕩頻率可為0Hz并可通過(guò)軟件設(shè)置省電模式。空閑模式下,CPU暫停工作,而RAM定時(shí)計(jì)數(shù)器,串行口,外中斷系統(tǒng)可繼續(xù)工作,掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。

      

       圖4.復(fù)位電路                           圖5.引腳圖

AT89S51單片機(jī)有40個(gè)引腳下邊簡(jiǎn)單介紹一下這40個(gè)引腳的功能。

①電源引腳2個(gè)

VCC:供電電壓

GND:接地

②時(shí)鐘引腳2個(gè)

XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入。用片內(nèi)振蕩器時(shí),該腳接外部石英晶體和微調(diào)電容。外接時(shí)鐘源時(shí),該腳接外部時(shí)鐘振蕩器的信號(hào)。

XTAL2:來(lái)自反向振蕩器的輸出。當(dāng)使用片內(nèi)振蕩器,該腳連接外部石英晶體和微調(diào)電容。當(dāng)使用外部時(shí)鐘源時(shí),本腳懸空。

③控制引腳(4個(gè)并行I/O口引腳P0、P1、P2、P3,RST,ALE/PROG,PSEN,EA/VPP)

P0口:P0口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O口,每腳可吸收8TTL門電流。當(dāng)P1口的管腳第一次寫1時(shí),被定義為高阻輸入。P0能夠用于外部程序數(shù)據(jù)存儲(chǔ)器,它可以被定義為數(shù)據(jù)/地址的第八位。在FIASH編程時(shí),P0口作為原碼輸入口,當(dāng)FIASH進(jìn)行校驗(yàn)時(shí),P0輸出原碼,此時(shí)P0外部必須被拉高。

P1口:P1口是一個(gè)內(nèi)部提供上拉電阻的8位雙向I/O口,P1口緩沖器能接收輸出4TTL門電流。P1口管腳寫入1后,作輸入,P1口被外部下拉為低電平時(shí),將輸出電流。在FLASH編程和校驗(yàn)時(shí),P1口作為第八位地址接收。

P2口:P2口為一個(gè)內(nèi)部上拉電阻的8位雙向I/O口,P2口緩沖器可接收,輸出4個(gè)TTL門電流,當(dāng)P2口被寫“1”時(shí),作為輸入。并因此作為輸入時(shí),將輸出電流。P2口當(dāng)用于外部程序存儲(chǔ)器或16位地址外部數(shù)據(jù)存儲(chǔ)器進(jìn)行存取時(shí),P2口輸出地址的高八位。在給出地址“1”時(shí),它利用內(nèi)部上拉優(yōu)勢(shì),當(dāng)對(duì)外部八位地址數(shù)據(jù)存儲(chǔ)器進(jìn)行讀寫時(shí),P2口輸出其特殊功能寄存器的內(nèi)容,在FLASH編程和校驗(yàn)時(shí)接收高八位地址信號(hào)和控制信號(hào)。

P3口:P3口管腳是8個(gè)帶內(nèi)部上拉電阻的雙向I/O口,可接收輸出4個(gè)TTL門電流。當(dāng)P3口寫入“1”后,用作輸入。作為輸入,由于外部下拉為低電平,P3口將輸出電流。

I/O口作為輸入口時(shí)有兩種工作方式:讀端口,讀引腳。

RST:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時(shí),要保持RST腳兩個(gè)機(jī)器周期的高電平時(shí)間。

ALE/PROG:當(dāng)訪問(wèn)外部存儲(chǔ)器時(shí),地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在FLASH編程期間,此引腳用于輸入編程脈沖。在平時(shí),ALE端以不變的頻率周期輸出正脈沖信號(hào),此頻率為振蕩器頻率的1/6。

PSEN:外部程序存儲(chǔ)器的選通信號(hào)。在由外部程序存儲(chǔ)器取指期間,每個(gè)機(jī)器周期兩次/PSEN有效。

EA/VPP:當(dāng)/EA保持低電平時(shí),則在此期間外部程序存儲(chǔ)器(0000H-FFFFH),不管是否有內(nèi)部程序存儲(chǔ)器。加密方式1時(shí),/EA將內(nèi)部鎖定為RESET;當(dāng)/EA端保持高電平時(shí),此間內(nèi)部程序存儲(chǔ)器。在FLASH編程期間,此引腳也用于施加12V編程電源(VPP)。

以上就是對(duì)AT89S51單片機(jī)引腳的介紹。

3.顯示模塊

通過(guò)I/O端口的輸入和輸出實(shí)現(xiàn)對(duì)數(shù)碼管和LED燈的控制。

3.2 方案執(zhí)行

       基于以上方案原理及設(shè)計(jì),我們用Altium Designer軟件設(shè)計(jì)了原理圖并生成了PCB圖,用Proteus軟件進(jìn)行了仿真。

    Altium Designer軟件實(shí)現(xiàn)了原理圖設(shè)計(jì)、電路仿真、PCB繪制編輯、拓?fù)溥壿嬜詣?dòng)布線、信號(hào)完整性分析和設(shè)計(jì)輸出等技術(shù)的完美融合,可以為設(shè)計(jì)者提供全新的設(shè)計(jì)解決方案。因此,在本次設(shè)計(jì)中我們也選擇用該軟件來(lái)進(jìn)行原理圖的設(shè)計(jì)。原理圖如圖7所示,PCB圖如圖8所示

   Proteus軟件可完成從原理圖布圖、PCB設(shè)計(jì)、代碼調(diào)試到單片機(jī)與外圍電路的協(xié)同仿真,真正實(shí)現(xiàn)了從概念到產(chǎn)品的完整設(shè)計(jì),是目前世界上唯一將電路仿真軟件、PCB設(shè)計(jì)軟件和虛擬模型仿真軟件三合一的設(shè)計(jì)平臺(tái)。Proteus軟件可以支持主流單片機(jī)系統(tǒng)的仿真圍芯片,還可以提供軟件調(diào)試功能,具有全速、單步、設(shè)置斷點(diǎn)等調(diào)試功能,同時(shí)可以觀察各變量以及寄存器等的當(dāng)前狀態(tài),并支持第三方編譯和調(diào)試環(huán)境,因此,我們選用Proteus軟件來(lái)實(shí)現(xiàn)本次設(shè)計(jì)的仿真。仿真圖如圖9  

    在完成原理圖設(shè)計(jì),轉(zhuǎn)成PCB圖,完成仿真之后,需要進(jìn)行程序的寫入。寫程序用的是C語(yǔ)言,程序見(jiàn)附錄,程序結(jié)構(gòu)框架如圖6所示

圖6.程序結(jié)構(gòu)框圖

3.3制版與調(diào)試

   以電子線路為基礎(chǔ)的各種電子產(chǎn)品在安裝完成后一般都要進(jìn)行調(diào)試,才能正常地進(jìn)行工作。在調(diào)試過(guò)程中常常會(huì)出現(xiàn)各種電路故障,經(jīng)過(guò)檢測(cè)、排查,才能準(zhǔn)確地排除故障。調(diào)試主要是包括調(diào)整和測(cè)試兩個(gè)部分。

調(diào)整主要是對(duì)電路參數(shù)的調(diào)整。一般是對(duì)電路中可調(diào)元器件,例如電容、電感等部分進(jìn)行調(diào)整,使電路功能達(dá)到預(yù)期的效果。測(cè)試主要是對(duì)電路的各項(xiàng)技術(shù)指標(biāo)和功能進(jìn)行測(cè)試和檢查,并與設(shè)計(jì)要求的性能指標(biāo)相比較,以確定電路是否能實(shí)現(xiàn)預(yù)期的功能。

調(diào)試和調(diào)測(cè)試是相互依賴、互相補(bǔ)充的,統(tǒng)稱為調(diào)試。由于在實(shí)際工作中,二者是一項(xiàng)工作的兩個(gè)方面。經(jīng)測(cè)試、調(diào)整、再測(cè)試、再調(diào)整,直到實(shí)現(xiàn)電路要求的設(shè)計(jì)指標(biāo)為止。能夠采用適當(dāng)?shù)姆椒ú檎摇⑴袛嗪痛_定故障的具體部位及其原因,是故障檢測(cè)的關(guān)鍵。

    在應(yīng)用中,我們檢測(cè)電子線路故障經(jīng)常采用觀察法。觀察法又分為靜態(tài)觀察法和動(dòng)態(tài)觀察法。所謂靜態(tài)觀察法就是在電子線路通電前通過(guò)目視檢查找出某些故障。主要檢查焊點(diǎn)是否虛焊、導(dǎo)線接頭是否接好、接插件是否松脫、管腳是否插錯(cuò)方向或折彎等。當(dāng)靜態(tài)觀察沒(méi)有發(fā)現(xiàn)異常時(shí),可進(jìn)一步采用動(dòng)態(tài)觀察法。

動(dòng)態(tài)觀察法又稱通電觀察法,即給電路通電后,通過(guò)觀察電路內(nèi)有無(wú)打火,冒煙現(xiàn)象,或是聞到電路內(nèi)有無(wú)燒焦、燒糊的異味;手觸摸一些器件有無(wú)發(fā)燙。發(fā)現(xiàn)異常立刻斷開(kāi)電源。由通電觀察,可以確定故障原因,但大部分情況下并不能確認(rèn)故障的確切位置。

4. 結(jié)果與結(jié)論

    預(yù)期的結(jié)果是該交通燈不僅可以實(shí)現(xiàn)指示燈三個(gè)狀態(tài)的轉(zhuǎn)換和倒計(jì)時(shí)的顯示,而且可以根據(jù)實(shí)際情況隨時(shí)手動(dòng),實(shí)現(xiàn)東西與南北方向的禁行與通行,且東西、南北方向的禁行與通行時(shí)間可靈活調(diào)整。按下復(fù)位鍵,系統(tǒng)可以恢復(fù)到初始狀態(tài)進(jìn)行工作,按下東西方向的通行鍵,東西方向可以通行,按下南北方向的通行鍵南北方向可以通行。理想和現(xiàn)實(shí)還是有差距的,完成焊接和調(diào)試之后,經(jīng)過(guò)簡(jiǎn)單的觀察和調(diào)試,并沒(méi)有發(fā)現(xiàn)電路板上有開(kāi)路和短路現(xiàn)象,接通電源之后,紅黃綠三個(gè)狀態(tài)的指示燈相互轉(zhuǎn)化,復(fù)位鍵可以正常工作,但是數(shù)碼管并沒(méi)有實(shí)現(xiàn)倒計(jì)時(shí)計(jì)數(shù),沒(méi)有得到預(yù)期的結(jié)果。電路板成品圖如圖10所示

5.收獲與致謝

通過(guò)這次的課程設(shè)計(jì),我們進(jìn)一步了解和掌握了單片機(jī)的應(yīng)用和工作原理,同時(shí)也鞏固了C語(yǔ)言編程,熟悉了Altium Designer軟件的操作,熟悉了原理圖的設(shè)計(jì)和PCB圖的生成,更重要的是接觸到了Proteus軟件,又學(xué)到了一些新的知識(shí),在這次的課程設(shè)計(jì)中,既鞏固了原來(lái)學(xué)過(guò)的舊知識(shí),同時(shí)也接觸到了新的知識(shí);既學(xué)到了知識(shí),也鍛煉了自己的動(dòng)手能力,同時(shí)也加強(qiáng)了學(xué)生與學(xué)生之間的配合,融洽了師生之間的關(guān)系。同時(shí)也在告訴我們學(xué)無(wú)止境,要多多的去嘗試新的知識(shí),接受新的事物。讓我們能在融洽的環(huán)境中學(xué)到知識(shí),也不斷成長(zhǎng)。特別感謝學(xué)院和老師們能為我們提供這么好的學(xué)習(xí)條件,讓我們能在融洽的環(huán)境中學(xué)到知識(shí),也不斷成長(zhǎng)。感謝老師的指導(dǎo)和同學(xué)的幫助,雖然課程設(shè)計(jì)的結(jié)果不盡人意,但是從中受益無(wú)窮。

6. 參考文獻(xiàn)

[1] 張毅剛.單片機(jī)原理及接口技術(shù)[M] .哈爾濱:哈爾濱工業(yè)大學(xué)出版社,1990.

[2] 李廣弟.單片機(jī)基礎(chǔ)[M] .北京:北京航空航天大學(xué)出版社,1992.

[3] 譚浩強(qiáng).單片機(jī)課程設(shè)計(jì)[M] .北京:清華大學(xué)出版社,1989.

[4] 先鋒工作室.單片機(jī)程序設(shè)計(jì)實(shí)例[M] .北京:清華大學(xué)出版社,2003.

7.   附件7.1附錄1
元器件清單

元器件清單

元器件名稱

型號(hào)規(guī)格

數(shù)量

價(jià)格

備注

單片機(jī)

AT89S51

1

40腳底座

1

兩位數(shù)碼管

4

紅黃綠發(fā)光二極管

各4個(gè)

510Ω電阻

15

200Ω電阻

10

1KΩ電阻

5

10KΩ電阻

2

晶振

11.0592MHZ

1

33pf電容

4

10uf電容

3

100pf電容

2

100uf電容

2

7805

1

四角按鍵

4

USB母口

2

接線端子

1

KBP206G-BP整流橋

1

單排插針

2

7.3 附錄3

圖7.原理圖

圖8.PCB圖

圖9.仿真圖

圖10實(shí)物圖


單片機(jī)源程序如下:
  1. #include <reg51.h>                                              //包含MCS-51單片機(jī)頭文件
  2. #define uchar unsigned char                                                   //定義宏uchar
  3. #define unit unsigned int                                                       //定義宏uint
  4. sbit  P1_0=P1^0;                                                 //定義單片機(jī)I/O端口P1.0
  5. sbit  P1_1=P1^1;                                                 //定義單片機(jī)I/O端口P1.1
  6. sbit  P1_2=P1^2;                                                 //定義單片機(jī)I/O端口P1.2
  7. sbit  P1_3=P1^3;                                                 //定義單片機(jī)I/O端口P1.3
  8. sbit ew_red=P0^0;                            //定義單片機(jī)I/O端口P0.0為東西方向紅燈控制位
  9. sbit ew_yellow=P0^1;                         //定義單片機(jī)I/O端口P0.1為東西方向黃燈控制位
  10. sbit ew_green=P0^2;                          //定義單片機(jī)I/O端口P0.2為東西方向綠燈控制位
  11. sbit sn_red=P0^3;                             //定義單片機(jī)I/O端口P0.3為南北方向紅燈控制位
  12. sbit sn_yellow=P0^4;                          //定義單片機(jī)I/O端口P0.4為南北方向黃燈控制位
  13. sbit sn_green=P0^5;                           //定義單片機(jī)I/O端口P0.5為南北方向綠燈控制位
  14. sbit key_earth_west=P3^2;                     //定義單片機(jī)I/O端口P3.2東西方向通行控制按鍵
  15. sbit key_sourth_north=P3^3;                    //定義單片機(jī)I/O端口P3.3南北方向通行控制按鍵
  16. sbit all_not=P3^4;                                //定義單片機(jī)I/O端口P3.4為全部禁行控制位
  17. uchar code s7_table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};         //七段碼顯示表
  18. uchar sou_nor_time;                                                //南北通行時(shí)間變量定義
  19. uchar east_weat_time;                                              //東西通行時(shí)間變量定義
  20. uchar time_flag;                                                         //時(shí)間標(biāo)志位定義
  21. uchar traffic_flag;                         //traffic_flag=0 時(shí)南北通行,traffic_flag=1 時(shí)東西通行
  22. uchar time_multiply;                                                       //定義計(jì)時(shí)變量
  23. uchar ETO              ;
  24. void delayms(uchar z)                                                         //延時(shí)子程序
  25. {
  26. uchar i,j;                                                                   //定義變量i,j
  27. for(i=z;i>0;i--)                                                      //for循環(huán),共循環(huán)z次
  28.        for(j=110;j>0;j--);                                             //for循環(huán),共循環(huán)j次
  29. }
  30. void display_time(uchar time)                                            //顯示倒計(jì)時(shí)子程序
  31. {
  32.     P1_0 =0;                                                 //P1.T0輸出低電平,位選使能
  33.     P1_1 =1;                                                           //P1.1輸出高電平
  34.     P1_2 =1;                                                           //P1.2輸出高電平
  35.     P1_3 =1;                                                           //P1.3輸出高電平
  36.     P2=s7_table[time/10];                                          //P2端口輸出顯示的段碼
  37.     delayms(2);                                                               //延時(shí)2ms
  38.     P2=0;                                                           //P2端口輸出低電平
  39. P1_0 =1;                                                           //P1.0輸出高電平
  40.   P1_1 =0;                                                  //P1.1輸出低電平,位選使能
  41.     P2=s7_table[time%10];                                         //P2端口輸出顯示的段碼
  42.     delayms(2);                                                               //延時(shí)2ms
  43.     P2=0;                                                           //P2端口輸出低電平
  44. P1_1 =1;                                                           //P1.1輸出高電平
  45.     P1_2 =0;                                                  //P1.2輸出低電平,位選使能
  46.     P2=s7_table[time%10];                                         //P2端口輸出顯示的段碼
  47.     delayms(2);                                                               //延時(shí)2ms
  48.     P2=0;                                                           //P2端口輸出低電平
  49. P1_2 =1;                                                           //P1.2輸出高電平
  50.     P1_3 =0;                                                  //P1.3輸出低電平,位選使能
  51.     P2=s7_table[time%10];                                         //P2端口輸出顯示的段碼
  52.     delayms(2);                                                               //延時(shí)2ms
  53.     P2=0;                                                           //P2端口輸出低電平
  54.     P1_3 =1;                                                           //P1.3輸出高電平
  55. }
  56. void south_north_allow()                                              //南北通行允許子程序
  57. {
  58.     ew_red=0;                                                          //東西方向紅燈亮
  59.     ew_green=1;                                                      //東西方向綠燈熄滅
  60.     ew_yellow=1;                                                     //東西方向黃燈熄滅
  61.     sn_red=1;                                                        //南北方向紅燈熄滅
  62.     sn_green=0;                                                        //南北方向綠燈亮
  63.     sn_yellow=1;                                                      //南北方向黃燈熄滅
  64. }
  65. void east_west_allow()                                                //東西通行允許子程序
  66. {
  67.     ew_red=1;                                                        //東西方向紅燈熄滅
  68.     ew_green=0;                                                        //東西方向綠燈亮
  69.     ew_yellow=1;                                                    //東西方向黃燈熄滅
  70.     sn_red=0;                                                          //南北方向紅燈亮
  71.     sn_green=1;                                                      //南北方向綠燈熄滅
  72.     sn_yellow=1;                                                      //南北方向黃燈熄滅
  73. }
  74. void init0_timer0()                                                  //定時(shí)器0初始化子程序
  75. {
  76.     TMOD=0X01;                                                  //定時(shí)器0設(shè)置為模式1
  77.     TH0=(65536-50000)/256;                                              //TH0裝載初始值
  78.     TL0=(65536-50000)%256;                                             //TL0裝載初始值
  79.     ETO=1;                                                            //開(kāi)啟定時(shí)器中斷
  80.     EA=1;                                                               //開(kāi)啟CPU中斷
  81.     TR0=1;                                                              //啟動(dòng)定時(shí)器T0
  82. }
  83. void keyscan()                                                           //鍵盤掃描子程序
  84. {
  85.     if(key_sourth_north==0)                                //判斷南北通行控制按鍵是否按下
  86.     {
  87.         delayms(2);                                                           //延時(shí)2ms
  88.         if(key_sourth_north==0)                        //再次判斷南北通行控制按鍵是否按下
  89.         {
  90.             south_north_allow();                                     //調(diào)用南北通行子程序
  91.             while(!key_sourth_north) display_time(time_flag);      //南北通行時(shí),顯示通行倒計(jì)時(shí)
  92.             TR0=0;                                         //南北通行結(jié)束,關(guān)閉定時(shí)器T0
  93.          }
  94.      }
  95.     if(key_earth_west==0)                                  //判斷東西通行控制按鍵是否按下
  96.     {
  97.         delayms(2);                                                           //延時(shí)2ms
  98.         if(key_earth_west==0)                          //再次判斷東西通行控制按鍵是否按下
  99.         {
  100.             east_west_allow();                                       //調(diào)用東西通行子程序
  101.             while(!key_earth_west) display_time(time_flag);        //東西通行時(shí),顯示通行倒計(jì)時(shí)
  102.             TR0=0;                                         //東西通行結(jié)束,關(guān)閉定時(shí)器T0
  103.          }
  104.      }
  105.      if(all_not==0)                                            //判斷全部禁行按鍵是否按下
  106.     {
  107.          delayms(2);                                                          //延時(shí)2ms
  108.          if(all_not==0)                                    //再次判斷全部禁行按鍵是否按下
  109.          {
  110.              TR0=0;                                  //進(jìn)入全部禁行子程序,關(guān)閉定時(shí)器T0
  111.              ew_red=0;                                                 //東西方向紅燈亮
  112.              ew_green=1;                                             //東西方向綠燈熄滅
  113.              ew_yellow=1;                                            //東西方向黃燈熄滅
  114.              sn_red=0;                                                 //南北方向紅燈亮
  115.              sn_green=1;                                             //南北方向綠燈熄滅
  116.              sn_yellow=1;                                             //南北方向黃燈熄滅
  117.           }
  118.      }
  119. }
  120. void main()                                                                     //主程序
  121. {
  122.     sou_nor_time=15;                                          //初始化南北通行時(shí)間為15s
  123.     east_weat_time=6;                                           //初始化東西通行時(shí)間為6s
  124.     traffic_flag=0;                                                      //初始化,南北通行
  125.     time_flag=sou_nor_time;                                          //設(shè)置南北通行的時(shí)間
  126.     time_multiply =0;                                                    //計(jì)時(shí)變量初始化

  127.     init0_timer0();                                            //調(diào)用定時(shí)器T0初始化子程序
  128.     south_north_allow()  ;                                        //調(diào)用南北通
  129.     while(1)                                                         //while(1)無(wú)限循環(huán)
  130.     {
  131. keyscan();                                                          //調(diào)用鍵盤掃描子程序
  132.         display_time(time_flag);                                     //調(diào)用顯示倒計(jì)時(shí)子程序
  133.      }
  134. }
  135. void int0_isr() interrupt 1                                           //定時(shí)器T0中斷服務(wù)程序
  136. {
  137.     TH0=(65536-50000)/256;                                                //TH0裝載初值
  138.     TL0=(65536-50000)%256;                                               //TL0裝載初值
  139.     time_multiply++;                                                       //計(jì)時(shí)變量加1
  140.     if(time_multiply>=20)                                        //判斷計(jì)時(shí)變量是否大于20
  141.     {
  142.         time_multiply =0;                              //計(jì)時(shí)變量大于20,則將計(jì)時(shí)變量清零
  143.         time_flag--;                                                    //倒計(jì)時(shí)的秒數(shù)減1
  144.         if(traffic_flag==0)                            //若traffic_flag為0,則進(jìn)入南北通行模式
  145.         {
  146.             if(time_flag>2)                                        //南北通行倒計(jì)時(shí)進(jìn)行中
  147.             {
  148.                 south_north_allow();                                 //南北通行紅綠燈輸出
  149.              }
  150.              else if(time_flag>0)                                          //若倒計(jì)時(shí)小于2s
  151.              {
  152.                  sn_red=1;
  153.                  sn_green=1;
  154.                  sn_yellow=0;                                         //此時(shí)南北黃燈亮2s
  155.                  ew_red=0;                                       //此時(shí)東西仍然是紅燈亮
  156.                  ew_green=1;
  157.                  ew_yellow=1;
  158.               }
  159.               else
  160.               {
  161.                  traffic_flag=1;                 //此時(shí)南北通行倒計(jì)時(shí)結(jié)束,改為東西通行模式
  162.                  time_flag= east_weat_time;                         //東西通行時(shí)間變量賦值
  163.                }
  164.          }
  165.          if(traffic_flag==1)                                           //此時(shí)為東西通行模式
  166.          {
  167.              if(time_flag>2)                                           //東西通行計(jì)時(shí)結(jié)束
  168.              {
  169.                  east_west_allow();                                  //東西通行紅綠燈輸出
  170.               }
  171.               else if(time_flag>0)
  172.               {
  173.                   ew_red=1;                                          //此時(shí)東西黃燈亮2s
  174.                   ew_green=1;
  175.                   ew_yellow=0;
  176.                   sn_red=0;                                      //此時(shí)南北仍然是紅燈亮
  177.                   sn_green=1;
  178.                   sn_yellow=1;
  179.                }
  180.                else
  181.                {
  182.                   traffic_flag=0;                //此時(shí)東西通行倒計(jì)時(shí)結(jié)束,改為南北通行模式
  183.                   time_flag= sou_nor_time;                         //南北通行時(shí)間變量賦值
  184. ……………………

  185. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

完整的Word格式文檔51黑下載地址(可編輯):
基于單片機(jī)的交通燈控制系統(tǒng).doc (628.79 KB, 下載次數(shù): 54)




分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:453162 發(fā)表于 2018-12-24 10:28 | 只看該作者
不錯(cuò),很棒!
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人国产精品久久 | 国产精品一区二区三区免费观看 | av日韩精品 | 久久精品黄色 | 亚洲精色| 欧洲国产精品视频 | 国产综合久久 | 又爽又黄axxx片免费观看 | 国产一区视频在线 | 九九色综合 | 久色激情 | 国产伦精品一区二区三区精品视频 | 久久久无码精品亚洲日韩按摩 | 黄色免费在线网址 | 91免费电影| m豆传媒在线链接观看 | caoporn免费在线视频 | 日日夜夜天天久久 | 国产乱码精品一区二区三区中文 | 成人网视频 | 精品国产一区二区三区久久久蜜月 | 国产精品96久久久久久 | 日本不卡视频 | 久久久高清 | 国产午夜高清 | 久久久久久国产精品三区 | 欧美一区在线视频 | 久久不卡 | 欧美午夜一区二区三区免费大片 | 免费不卡一区 | 中文字幕成人 | 天天夜碰日日摸日日澡 | 在线播放一区二区三区 | 亚洲精品一 | 国产传媒毛片精品视频第一次 | 成人午夜精品 | 国产三级网站 | 久久久久一区 | 欧美日韩成人在线观看 | 亚洲视频中文 | 欧美激情久久久 |