單片機(jī)原理及應(yīng)用課程設(shè)計(jì)---交通燈管理電路設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩27頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  課 程 設(shè) 計(jì)</p><p>  2012年3月 9 日</p><p><b>  課程設(shè)計(jì)任務(wù)書</b></p><p>  課程 單片機(jī)原理及應(yīng)用課程設(shè)計(jì)</p><p>  題目 交通燈管理電路設(shè)計(jì) </p><p>  一、設(shè)計(jì)目的:訓(xùn)練學(xué)生綜合運(yùn)用

2、己學(xué)課程的基本知識(shí),獨(dú)立進(jìn)行單片機(jī)應(yīng)用技術(shù)開發(fā)工作,掌握單片機(jī)程序設(shè)計(jì)、調(diào)試,應(yīng)用電路設(shè)計(jì)、分析及調(diào)試檢測(cè)。</p><p><b>  二、設(shè)計(jì)要求:</b></p><p>  1. 應(yīng)用MCS-51單片機(jī)設(shè)計(jì)十字路口的交通燈亮、滅及倒計(jì)時(shí)功能;</p><p>  2. 硬件設(shè)計(jì)根據(jù)設(shè)計(jì)的任務(wù)選定合適的單片機(jī),根據(jù)控制對(duì)象設(shè)計(jì)接口電路。設(shè)

3、計(jì)的單元電路必須有工作原理,器件的作用,分析和計(jì)算過程;</p><p>  3. 軟件設(shè)計(jì)根據(jù)電路工作過程,畫出軟件流程圖,根據(jù)流程圖編寫相應(yīng)的程序,進(jìn)行調(diào)試并打印程序清單;</p><p>  4. 原理圖設(shè)計(jì)根據(jù)所確定的設(shè)計(jì)電路,利用Protel等有關(guān)工具軟件繪制電路原理圖、PCB板圖、提供元器件清單。</p><p><b>  三、參考資料:&l

4、t;/b></p><p>  [1] 李朝青. 單片機(jī)原理及接口技術(shù)(第3版). 北京:北京航空航天大學(xué)出版社,2005</p><p>  [2] 馬忠梅等. 單片機(jī)的C語言應(yīng)用程序設(shè)計(jì). 北京:北京航空航天大學(xué)出版社,2007</p><p>  [3] 趙新民. 智能儀器設(shè)計(jì)基礎(chǔ). 哈爾濱:哈爾濱工業(yè)大學(xué)出版社,1999</p><

5、p>  [4] 何立民. 單片機(jī)應(yīng)用技術(shù)大全. 北京:北京航空航天大學(xué)出版社,1994;</p><p>  完成期限 2012.3.5—2012.3.9 </p><p>  指導(dǎo)教師 </p><p>  專業(yè)負(fù)責(zé)人 </p><p>  2012年

6、3 月 2 日</p><p><b>  目 錄</b></p><p><b>  第1章 概述1</b></p><p>  第2章 總體設(shè)計(jì)及核心器件簡(jiǎn)介2</p><p><b>  2.1總體設(shè)計(jì)2</b></p><p>  2.

7、2 AT89C512</p><p>  2.3 8255A4</p><p>  2.4 74LS1645</p><p>  2.5 X50457</p><p>  第3章 硬件電路設(shè)計(jì)11</p><p>  3.1復(fù)位電路11</p><p>  3.3晶振電路11

8、</p><p>  3.4 I/O口擴(kuò)展電路12</p><p>  3.5 LED數(shù)碼管顯示電路12</p><p>  3.6 交通燈狀態(tài)顯示電路14</p><p>  3.7 緊急情況中斷電路15</p><p>  3.8 總體設(shè)計(jì)原理圖及功能介紹16</p><p>  

9、第4章 程序設(shè)計(jì)17</p><p>  4.1 設(shè)計(jì)思想17</p><p>  4.2 程序框圖17</p><p>  4.3 源程序17</p><p><b>  結(jié)論21</b></p><p><b>  參考文獻(xiàn)23</b></p>

10、<p><b>  第1章 概述</b></p><p>  近年來隨著科技的飛速發(fā)展,單片機(jī)的應(yīng)用正在不斷地走向深入,同時(shí)帶動(dòng)傳統(tǒng)控制檢測(cè)日新月益更新。在實(shí)時(shí)檢測(cè)和自動(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)交通流量、提高

11、道路通行能力,減少交通事故有明顯效果。</p><p>  交通在人們的日常生活中占有重要的地位,隨著人們社會(huì)活動(dòng)的日益頻繁,這點(diǎn)更是體現(xiàn)的淋漓盡致。交通信號(hào)燈的出現(xiàn),使交通得以有效管制,對(duì)于疏導(dǎo)交通流量、提高道路通行能力,減少交通事故有明顯效果。本系統(tǒng)采用單片機(jī)AT89C51為中心器件來設(shè)計(jì)交通燈控制器,系統(tǒng)實(shí)用性強(qiáng)、操作簡(jiǎn)單、擴(kuò)展性強(qiáng)。本設(shè)計(jì)就是采用單片機(jī)模擬十字路口交通燈的各種狀態(tài)顯示以及倒計(jì)時(shí)時(shí)間。<

12、;/p><p>  本設(shè)計(jì)系統(tǒng)由單片機(jī)I/O口擴(kuò)展系統(tǒng)、交通燈狀態(tài)顯示系統(tǒng)、LED數(shù)碼顯示系統(tǒng)、緊急情況中斷系統(tǒng)、復(fù)位電路等幾大部分組成。系統(tǒng)除基本的交通燈功能外,還具有倒計(jì)時(shí)、緊急情況處理等功能,較好的模擬實(shí)現(xiàn)了十字路口可能出現(xiàn)的狀況。</p><p>  軟件上采用C51編程,主要編寫了主程序,LED數(shù)碼管顯示程序,中斷程序延時(shí)程序等。經(jīng)過整機(jī)調(diào)試,實(shí)現(xiàn)了對(duì)十字路口交通燈的模擬。</

13、p><p>  第2章 總體設(shè)計(jì)及核心器件簡(jiǎn)介</p><p><b>  2.1總體設(shè)計(jì)</b></p><p>  整個(gè)設(shè)計(jì)以AT89C51單片機(jī)為核心,由I/O口擴(kuò)展,LED數(shù)碼管顯示,緊急情況中斷電路,watchdog復(fù)位電路組成。</p><p>  硬件模塊入圖3-1。</p><p> 

14、 圖2-1 硬件模塊</p><p>  2.2 AT89C51</p><p>  1.AT89C51單片機(jī)簡(jiǎn)介</p><p>  AT89C51是美國(guó)ATMEL公司推出的系列單片機(jī),將多種功能的8位CPU與FPEROM(快閃可編程/擦除只讀存儲(chǔ)器)結(jié)合在一個(gè)芯片上,是一種低功耗、高性能的CMOS控制器,為很多嵌入式控制應(yīng)用提供了非常靈活而又價(jià)格適宜的方案,其

15、性能價(jià)格比遠(yuǎn)高于同類芯片。它與MCS-51指令系統(tǒng)兼容,片內(nèi)FPEROM允許對(duì)程序存儲(chǔ)器在線重復(fù)編程,也可用常規(guī)的EPROM編程器編程,可循環(huán)寫入/擦除1000次。89C51內(nèi)含4KB的FPEROM,一般的EEPROM的字節(jié)擦除時(shí)間和寫入時(shí)間基本上均為10ms,對(duì)于任一個(gè)實(shí)時(shí)控制系統(tǒng)來說,這樣長(zhǎng)的時(shí)間是不可能在線修改程序的。</p><p>  圖2-2 89C51內(nèi)部結(jié)構(gòu)圖</p><p&g

16、t;  與EEPROM相比較,F(xiàn)PEROM大大縮短了存儲(chǔ)內(nèi)容擦除和寫入的時(shí)間,為在線改寫程序提供了極大的方便,而且價(jià)格也比帶EPROM87C系列單片機(jī)便宜,這更顯示出了89C系列的優(yōu)越性。它還有128*8Bit的片內(nèi)RAM;32根I/O線;2個(gè)16位定時(shí)/計(jì)數(shù)器;5個(gè)中斷源;一個(gè)全雙工的異步串行口;間歇和掉電工作模式;三級(jí)程序存儲(chǔ)器加密;全靜態(tài)工作,晶振工作范圍:0Hz—24MHz。</p><p><b&

17、gt;  2.管腳功能</b></p><p>  AT89C51單片機(jī)為40引腳芯片如圖2-3所示。</p><p>  ①I/O口線: P0、P1、P2、P3共四個(gè)八位P0口是三態(tài)雙向口, 通稱數(shù)據(jù)總線口, 因?yàn)橹挥性摽谀苤苯佑糜趯?duì)外部存儲(chǔ)器的讀?寫操作。P0口也用以輸出外部存儲(chǔ)器的低8位地址。由于是分時(shí)輸出, 故應(yīng)在外部加鎖存器將此地址數(shù)據(jù)鎖存, 地址鎖存信號(hào)用ALE。P

18、1口是專門供用戶使用的I/O口, 是準(zhǔn)雙向口。P2口是從系統(tǒng)擴(kuò)展時(shí)作高8位地址線用。不擴(kuò)展外部存儲(chǔ)器時(shí), P口也可以作為用戶I/O口線使用, P2口也是準(zhǔn)雙向口。P3口是雙功能口, 該口的每一位均可獨(dú)立地定義為第一I/O 功能或第二I/O功能。作為第一功能使用時(shí)操作同P1口。</p><p>  P3口的第二功能如表2-1。</p><p>  圖2-3 89C51引腳圖</p>

19、;<p> ?、诳刂瓶诰€: PSEN (片外取控制)、AL E( 地址鎖存控制)、EA (片外儲(chǔ)器選擇)、RE2SET (復(fù)位控制) ;</p><p> ?、垭娫醇皶r(shí)鐘: CCC、VSS; XTAL 1, XTAL 2</p><p>  表2-1 引腳功能表</p><p>  2.3 8255A</p><p>  82

20、55A是Intel公司生產(chǎn)的可編程輸入輸出接口芯片,它具有3個(gè)8位的并I/O</p><p>  口,具有三種工作方式,可通過程序改變其功能,因而使用靈活,通用性強(qiáng),可作為單</p><p>  片機(jī)與多種外圍設(shè)備連接時(shí)的中間接口電路。8255有三種基本工作方式, 三種工作方式由工作方式控制字決定,方式控制字由CPU通過輸入/輸出指令來提供.三個(gè)端口中PC口被分為兩個(gè)部分,上半部

21、分隨PA口稱為A組,下半部分隨PB口稱為B組.其中PA口可工作與方式0、1和2,而PB口只能工作在方式0和1。8255共有40個(gè)引腳,采用雙列直插式封裝。其引腳圖如圖2-4所示,各引腳功能如下:</p><p>  圖2-4 8255A引腳圖</p><p>  D0--D7:三態(tài)雙向數(shù)據(jù)線,與單片機(jī)數(shù)據(jù)總線連接,用來傳送數(shù)據(jù)信息。</p><p>  CS:片選信

22、號(hào)線,低電平有效,表示芯片被選中。</p><p>  RD:讀出信號(hào)線,低電平有效,控制數(shù)據(jù)的讀出。</p><p>  WR:寫入信號(hào)線,低電平有效,控制數(shù)據(jù)的寫入。</p><p>  Vcc:+5V電源。PA0--PA7:A口輸入/輸出線。PB0--PB7:B口輸入/輸出線。PC0--PC7:C口輸入/輸出線。RESET:復(fù)位信號(hào)線。A1、A0:地

23、址線,用來選擇8255內(nèi)部端口。GND:地線。</p><p>  2.4 74LS164</p><p>  74LS164引腳定義如圖2-5所示,其真值表如表2-2所示,其功能是將外部輸入的串行數(shù)據(jù)轉(zhuǎn)化為8位的并行數(shù)據(jù)輸出具有鎖寸功能。A、B端為串行數(shù)據(jù)輸入端,QA ~ QH為數(shù)據(jù)輸出端,CLK為外部時(shí)鐘輸入端,CLR為清零端。</p><p>  圖2-5

24、 74LS164引腳圖</p><p>  表2-2 74LS164真值表</p><p>  注 QA0、 QB0、QH0為在穩(wěn)態(tài)輸入條件建立之前QA 、QB 和QH相應(yīng)的電平;QAn 、QGn 為在最近的時(shí)鐘↑轉(zhuǎn)換前QA或QG的電平,表示移1位。</p><p>  74LS164內(nèi)部功能圖如圖2-6所示:</p><p>  圖

25、2-6 74LS164內(nèi)部功能圖</p><p>  2.5 X5045</p><p>  X5045是一種集看門狗、電壓監(jiān)控和串行EEPROM 三種功能于一身的可編程電路。這種組合設(shè)計(jì)減少了電路對(duì)電路板空間的需求。</p><p>  X5045中的看門狗對(duì)系統(tǒng)提供了保護(hù)功能。當(dāng)系統(tǒng)發(fā)生故障而超過設(shè)置時(shí)間時(shí),電路中的看門狗將通過RESET信號(hào)向CPU 作出反應(yīng)

26、。X5045提供了三個(gè)時(shí)間值供用戶選擇使用。它所具有的電壓監(jiān)控功能還可以保護(hù)系統(tǒng)免受低電壓的影響,當(dāng)電源電壓降到允許范圍以下時(shí),系統(tǒng)將復(fù)位,直到電源電壓返回到穩(wěn)定值為止。X5045的存儲(chǔ)器與CPU 可通過串行通信方式接口,共有4096個(gè)位,可以按512 x 8個(gè)字節(jié)來放置數(shù)據(jù)。</p><p><b>  1 引腳介紹</b></p><p>  CS/WDI:片選輸

27、入/看門狗復(fù)位輸入;</p><p><b>  SO:串行輸出;</b></p><p><b>  WP:寫保護(hù)輸入;</b></p><p>  RESET:復(fù)位輸出;</p><p>  SCK:同步時(shí)鐘輸入;</p><p><b>  SI:串行輸入。&

28、lt;/b></p><p>  圖2-7 X5045引腳圖 Vss:地;</p><p><b>  Vcc:電源;</b></p><p><b>  2 工作原理</b></p><p><b>  2.1 上電復(fù)位</b></p>&l

29、t;p>  向X5045加電時(shí)會(huì)激活其內(nèi)部的上電復(fù)位電路,從而使RESET 引腳有效。該信號(hào)可避免系統(tǒng)微處理器在電壓不足或振蕩器未穩(wěn)定的情況下工作。當(dāng)VCC 超過器件的Vtrip門限值時(shí),電路將在200ms(典型)延時(shí)后釋放RESET 以允許系統(tǒng)開始工作。</p><p><b>  2.2 低電壓監(jiān)視</b></p><p>  工作時(shí), X5045對(duì)VCC

30、電平進(jìn)行監(jiān)測(cè),若電源電壓跌落至預(yù)置的最小Vtrip以下時(shí),系統(tǒng)即確認(rèn)RESET,從而避免微處理器在電源失效或斷開的情況下工作。當(dāng)RESET 被確認(rèn)后,該RESET 信號(hào)將一直保持有效,直到電壓跌到低于1V 。而當(dāng)VCC 返回并超過Vtrip達(dá)200ms時(shí),系統(tǒng)重新開始工作。</p><p>  2.3 看門狗定時(shí)器</p><p>  看門狗定時(shí)器的作用是通過監(jiān)視WDI輸入來監(jiān)視微處理器是

31、否激活。由于微處理器必須周期性的觸發(fā)CS/WDI引腳以避免RESET 信號(hào)激活而使電路復(fù)位,所以CS/WDI引腳必須在看門狗超時(shí)時(shí)間終止之前受到由高至低信號(hào)的觸發(fā)。</p><p>  2.4 重新設(shè)置VCC 門限</p><p>  X5045/45出廠時(shí)設(shè)置的標(biāo)準(zhǔn)VCC 門限電壓為Vtrip,但在應(yīng)用時(shí),如果標(biāo)準(zhǔn)值不恰當(dāng),用戶可以重新調(diào)整。</p><p>  

32、2.5 SPI串行存儲(chǔ)器</p><p>  器件存儲(chǔ)器部分是帶塊鎖保護(hù)的CMOS串行EEPROM 陣列,陣列的內(nèi)部組織是x8 位。X5045可提供最少為1000,000次擦寫和100年的數(shù)據(jù)保存期,并具有串行外圍接口(SPI)和軟件協(xié)議的特點(diǎn),允許工作在簡(jiǎn)單的四總線上。</p><p>  X5045主要是通過一個(gè)8 位的指令寄存器來控制器件的工作,其指令代碼通過SI輸入端(MSB在前)

33、寫入寄存器。表2-3所列為X5045的指令格式及其操作。</p><p>  表2-3 X5045的指令格式及其操作</p><p>  2.6 時(shí)鐘和數(shù)據(jù)時(shí)序</p><p>  當(dāng)CS變低以后,SI線上的輸入數(shù)據(jù)在SCK 的第一個(gè)上升沿時(shí)被鎖存。而SO 線上的數(shù)據(jù)則由SCK的下降沿輸出。用戶可以停止時(shí)鐘,然后再啟動(dòng)它, 以便在它停止的地方恢復(fù)操作。在整個(gè)工作期

34、間,CS必須為低。</p><p><b>  2.7 狀態(tài)寄存器</b></p><p>  狀態(tài)寄存器包含四個(gè)非易失性狀態(tài)位和兩個(gè)易失性狀態(tài)位??刂莆挥糜谠O(shè)置看門狗定時(shí)器的操作和存儲(chǔ)器的塊鎖保護(hù)。狀態(tài)寄存器的格式如表2-4(缺省值為00H) :</p><p>  表2-4 狀態(tài)寄存器格式</p><p>  其中:

35、 WIP (Write-In-Progress) 位是易失性只讀位,用于指明器件是否忙于內(nèi)部非易失性寫操作。WIP 位可用RDSR指令讀出。當(dāng)該位為“1”時(shí),表示非易失性寫操作正在進(jìn)行;為“0”時(shí),表示沒有進(jìn)行寫操作。</p><p>  WEL(Write Enable Latch)位用于指出“寫使能”鎖存的狀態(tài)。WEL=1時(shí),表示鎖存被設(shè)置;WEL=0 表示鎖存已復(fù)位。WEL 位是易失性只讀位??梢杂肳REN

36、指令設(shè)置WEL 位;用WRDI指令復(fù)位WEL位。</p><p>  用BLO,BL1(Block Lock)位可設(shè)置塊鎖存保護(hù)的范圍。任何被塊鎖保護(hù)的存儲(chǔ)器都只能讀出不能寫入。這兩個(gè)非易失性位可用WRSR指令來編程,并允許用戶保護(hù)EEPROM 陣列的1/4 、1/2、全部或0。參見表2-5 。</p><p>  2-5 受保護(hù)的EEPROM陳列地址</p><p&g

37、t;  WD0、WD1( Watchdog Timer)位用于選擇看門狗的超時(shí)周期。見表2-6 。</p><p>  表2-6 看門狗的超時(shí)周期選擇</p><p>  當(dāng)用CS 選中器件后,送8 位RDSR指令,并由CLK 信號(hào)觸發(fā)即可將狀態(tài)寄存器的內(nèi)容從SO 線上讀出。而在寫狀態(tài)寄存器時(shí),應(yīng)先將CS 拉低,然后送WREN指令,再拉高CS。然后再次拉低CS,最后送入WREN指令及對(duì)應(yīng)于

38、狀態(tài)寄存器內(nèi)容的8 位數(shù)據(jù)即可。該操作由CS 變高結(jié)束。</p><p>  WEL位及WP引腳的狀態(tài)對(duì)器件內(nèi)的存儲(chǔ)器及狀態(tài)寄存器各部分保護(hù)的影響如表2-7所列。</p><p>  表2-7 WREN命令和/WP引腳狀態(tài)寄存器的影響</p><p>  第3章 硬件電路設(shè)計(jì)</p><p><b>  3.1復(fù)位電路</b&

39、gt;</p><p>  復(fù)位方式有多種,但本設(shè)計(jì)采用看門狗芯片X5045,接線圖如圖3-1所示。</p><p>  3-1 復(fù)位電路原理圖</p><p>  在設(shè)定的定時(shí)時(shí)間內(nèi),89C51必須在/CS/WDI引腳產(chǎn)生一個(gè)由高到低的電平變化,以清內(nèi)部定時(shí)器,即“喂狗”,否則X5045將產(chǎn)生一個(gè)復(fù)位信號(hào)。</p><p><b>

40、;  3.3晶振電路</b></p><p>  晶振電路原理圖如3-2:</p><p>  3-2 晶振模塊原理圖</p><p>  選取原則:傳統(tǒng)做法,但能夠?qū)崿F(xiàn)所需,即最簡(jiǎn)單也最是實(shí)用。電容選取22uF,晶振為11.0592Hz。</p><p>  3.4 I/O口擴(kuò)展電路</p><p>  

41、硬件原理設(shè)計(jì)圖如圖3-3所示:</p><p>  圖3-3 8255A擴(kuò)展單片機(jī)I/0口電路圖</p><p>  用74LS373鎖存,74LS138譯碼,擴(kuò)展單片機(jī)的I/O口,由原理圖得8255端口地址分配為:</p><p><b>  A口:0FFD8H</b></p><p><b>  B口:0F

42、FD9H</b></p><p><b>  C口:0FFDAH</b></p><p>  3.5 LED數(shù)碼管顯示電路</p><p>  在單片機(jī)應(yīng)用系統(tǒng)中,數(shù)碼管顯示常用兩種方法:靜態(tài)顯示和動(dòng)態(tài)掃描顯示。所謂靜態(tài)顯示,就是每一個(gè)顯示器都要占用單獨(dú)的具有鎖存功能的I/O接口用于筆劃段字形代碼。這樣單片機(jī)只要把要顯示的字形代碼發(fā)

43、送到接口電路,就不用管它了,直到要顯示新的數(shù)據(jù)時(shí),再發(fā)送新的字形碼,因此,使用這種方法單片機(jī)中CPU的開銷小,可以提供單獨(dú)鎖存的I/O接口電路很多。所以本設(shè)計(jì)采用串并轉(zhuǎn)換電路74LS164的靜態(tài)顯示電路。其電路圖如圖3-4所示。 </p><p>  圖3-4 數(shù)碼管顯示靜態(tài)驅(qū)動(dòng)電路</p><p>  MCS-51單片機(jī)串行口方式0為移位寄存器方式,外接2片74LS164作為2位LE

44、D顯示器的靜態(tài)顯示接口,把89C51的RXD作為數(shù)據(jù)輸出線,TXD作為移位時(shí)鐘脈沖。74LS164為TTL單向8位移位寄存器,可實(shí)現(xiàn)串行輸入,并行輸出。其中A、B(第1、2腳)為串行數(shù)據(jù)輸入端,2個(gè)引腳按邏輯與運(yùn)算規(guī)律輸入信號(hào),共一個(gè)輸入信號(hào)時(shí)可并接。T(第8腳)為時(shí)鐘輸入端,可連接到串行口的TXD端。每一個(gè)時(shí)鐘信號(hào)的上升沿加到T端時(shí),移位寄存器移一位,8個(gè)時(shí)鐘脈沖過后,8位二進(jìn)制數(shù)全部移入74LS164中。R(第9腳)為復(fù)位端,當(dāng)R=

45、0時(shí),移位寄存器各位復(fù)0,只有當(dāng)R=1時(shí),時(shí)鐘脈沖才起作用。Q1…Q8(第3-6和10-13引腳)并行輸出端分別接LED顯示器的hg···a各段對(duì)應(yīng)的引腳上。在給出了8個(gè)脈沖后,最先進(jìn)入74LS164的第一個(gè)數(shù)據(jù)到達(dá)了最高位,然后如果再來一個(gè)脈沖,第一個(gè)脈沖就會(huì)從最高位移出。設(shè)計(jì)中的2片7LS164首尾相串,而時(shí)鐘端則接在一起,這樣,當(dāng)輸入8個(gè)脈沖時(shí),從單片機(jī)RXD端輸出的數(shù)據(jù)就進(jìn)入到了第一片74LS164

46、中了,而當(dāng)?shù)诙€(gè)8個(gè)脈沖到來后,這個(gè)數(shù)據(jù)就進(jìn)入了第二片74LS164</p><p>  本設(shè)計(jì)中采用的是共陰極LED數(shù)碼管,其字形碼如表3-1所示。</p><p>  表3-1 共陰極LED數(shù)碼管字形碼表</p><p>  3.6 交通燈狀態(tài)顯示電路</p><p>  十字路口的交通燈分布示意圖如圖3-5所示,將這12個(gè)交通燈進(jìn)行編

47、號(hào)。</p><p>  圖3-5 十字路口交通燈分布示意圖</p><p>  這12個(gè)交通燈共有四個(gè)狀態(tài):</p><p>  狀態(tài)1(S1):東西紅燈(4、10)亮,南北綠燈(3、9)亮</p><p>  狀態(tài)2(S2):南北黃燈(2、8)亮,東西仍為紅燈(4、10)亮</p><p>  狀態(tài)3(S3):南北

48、紅燈(1、7)亮,東西綠燈(6、12)亮</p><p>  狀態(tài)4(S4):東西黃燈(5、11)亮,南北仍為紅燈(1、7)亮</p><p>  對(duì)應(yīng)的硬件原理設(shè)計(jì)圖如圖3-6所示:</p><p>  圖3-6 交通燈狀態(tài)顯示電路</p><p>  用7407對(duì)發(fā)光二極管進(jìn)行驅(qū)動(dòng),圖中電阻R為390歐姆,以保證通過發(fā)光二極管的電流大于工

49、作電流10mA。</p><p>  四種狀態(tài)下發(fā)光二極管與相應(yīng)端口取值關(guān)系見表3-2。</p><p>  表3-2 發(fā)光二極管與相應(yīng)端口取值關(guān)系</p><p>  3.7 緊急情況中斷電路</p><p>  緊急情況中斷處理電路圖如圖3-7所示:</p><p>  圖3-7 緊急情況中斷電路圖</p&g

50、t;<p>  當(dāng)東西向(或南北向)有特殊情況,比如有救護(hù)車通過,開關(guān)SW0為低電平則應(yīng)使交通燈處于S3(東西綠燈、南北),開關(guān)SW1為低電平則應(yīng)使交通燈處于S1(南北向綠燈、東西向紅燈)。</p><p>  3.8 總體設(shè)計(jì)原理圖及功能介紹</p><p>  ① 整個(gè)設(shè)計(jì)原理圖見附圖。</p><p><b>  功能介紹</b

51、></p><p>  在應(yīng)用電路中,采用8255A對(duì)單片機(jī)的I/O口進(jìn)行有效的擴(kuò)展,從而大大增加了可利用的I/O口資源,使得I/O口很充裕。8255的PA口和PB口接發(fā)光二極管,通過對(duì)PA口和PB口的位寫“1”或“0”來控制發(fā)光二極管的亮、滅,進(jìn)而模擬顯示出十字路口交通燈的各種狀態(tài)。 </p><p>  LED數(shù)碼管則用來對(duì)各種狀態(tài)進(jìn)行倒計(jì)時(shí)的顯示。設(shè)計(jì)中采用74LS164靜態(tài)驅(qū)

52、動(dòng)LED數(shù)碼管,利用單片機(jī)的RXD作為數(shù)據(jù)的輸出端給164送數(shù)。利用164的移位進(jìn)行多位的顯示。利用延時(shí)程序控制每秒時(shí)間,從而控制RXD送數(shù)的時(shí)間間隔。</p><p>  緊急情況的處理則采用查詢加中斷的方式。通過查詢P1.2和P1.3的狀態(tài)來控制外部中斷1,然后進(jìn)去相應(yīng)的處理程序。在哪一方向上有緊急情況,則能通過開關(guān)進(jìn)行中斷,使該方向上為綠燈放行,同時(shí)緊急情況報(bào)警燈亮。</p><p>

53、;<b>  第4章 程序設(shè)計(jì)</b></p><p><b>  4.1 設(shè)計(jì)思想</b></p><p>  交通燈根據(jù)其顯示情況可以分為四個(gè)狀態(tài),可以通過定時(shí)來控制每個(gè)狀態(tài)的時(shí)間;通過定時(shí)也可以向LED數(shù)碼管中每隔1秒送一個(gè)數(shù),顯示該狀態(tài)剩余的時(shí)間;如果有中斷出現(xiàn)則進(jìn)入相應(yīng)的處理程序:先保留目前的顯示狀態(tài),然后根據(jù)情況顯示處理中的狀態(tài),緊急

54、情況結(jié)束則恢復(fù)到保留的原來狀態(tài)。</p><p><b>  4.2 程序框圖</b></p><p>  主程序框圖和中斷程序框圖分別如圖4-1和4-2所示。 </p><p>  圖4-1 主程序框圖 圖4-2 中斷程序框圖</p><p><b>  4.3 源程

55、序</b></p><p>  #include <reg51.h></p><p>  #include <absacc.h></p><p>  #include <intrins.h></p><p>  #define uint unsigned int</p><p

56、>  #define uchar unsigned char</p><p>  #define COM8255 XBYTE[0xffdb]</p><p>  #define PA8255 XBYTE[0xffd8]</p><p>  #define PB8255 XBYTE[0Xffd9]</p><p>  sbit P1_0=

57、P1^0;</p><p>  sbit P1_2=P1^2;</p><p>  sbit P1_3=P1^3;</p><p>  sbit P3_0=P3^0;</p><p>  sbit P3_1=P3^1;</p><p>  uchar code table[]={0xfc,0x60,0xda,0xf2,

58、0x66,0xb6,0xbe,0xe0,0xff,0xf6,0x00};</p><p>  void delay_500ms(int x) /*延時(shí)子程序*/</p><p><b>  {</b></p><p><b>  int i;</b></p><p>  for(;x>0

59、;x--)</p><p>  for(i=6245;i>0;i++)</p><p><b>  {;}</b></p><p><b>  }</b></p><p>  void int1_srv(void)interrupt 2 using 2</p><p>

60、<b>  {</b></p><p>  uchar a,b;</p><p><b>  if(!INT1)</b></p><p><b>  {</b></p><p><b>  a=PA8255;</b></p><p>

61、;  b=PB8255; /*保留A口,B口狀態(tài)*/</p><p>  if(P1_2==0)</p><p><b>  {</b></p><p>  PA8255=0x1d;</p><p>  PB8255=0x1d;</p><p><b>  P1_0=0;<

62、/b></p><p><b>  }</b></p><p>  if(P1_3==0)</p><p><b>  {</b></p><p>  PA8255=0x2b;</p><p>  PB8255=0x2b;</p><p><

63、;b>  P1_0=0;</b></p><p><b>  }</b></p><p>  while(!INT1); /*等待開關(guān)斷開*/</p><p>  PA8255=0xff;</p><p>  PA8255=0xff;</p><p><b>

64、  PA8255=a;</b></p><p>  PB8255=b; /*恢復(fù)A口,B口狀態(tài)*/</p><p><b>  P1_0=1;</b></p><p><b>  }</b></p><p><b>  }</b></p><

65、;p>  void display(uchar x,uchar y)</p><p><b>  { </b></p><p>  uchar a[][2]={5,1,4,1,3,1,2,1,1,1,0,1,9,10,8,10,7,10,6,10,5,10,4,10,3,10,2,10,1,10,0,10}; </p><p>  uch

66、ar i,j;</p><p>  for(i=x;i<y;i++)</p><p><b>  {</b></p><p>  for(j=0;j<2;j++)</p><p><b>  { </b></p><p>  x=a[i][j];</p>

67、;<p>  SBUF=table[x];</p><p>  do{}while(TI==0);</p><p><b>  TI=0;</b></p><p><b>  }</b></p><p>  delay_500ms(2);</p><p><

68、;b>  }</b></p><p><b>  }</b></p><p>  void main()</p><p><b>  {</b></p><p>  SCON=0x00;</p><p><b>  P3_0=1;</b>

69、;</p><p><b>  P3_1=1;</b></p><p>  COM8255=0x88;</p><p>  SCON=0x00;</p><p><b>  EA=1;</b></p><p><b>  ET0=1;</b></p

70、><p><b>  PX1=1;</b></p><p><b>  EX1=1;</b></p><p>  PA8255=0x1b;</p><p>  PB8255=0x1b;</p><p>  delay_500ms(2);</p><p>&

71、lt;b>  while(1)</b></p><p><b>  {</b></p><p>  PA8255=0x1d;/*東西紅,南北綠:12秒*/</p><p>  PB8255=0x1d;</p><p>  display(0,12);</p><p>  PA8

72、255=0x1e; /*東西紅,南北黃:3秒*/</p><p>  PB8255=0x1e;</p><p>  display(12,16);</p><p>  PA8255=0x2b; /*東西綠,南北紅:8秒*/</p><p>  PB8255=0x2b;</p><p>  display(5

73、,12);</p><p>  PA8255=0x33; /*東西黃,南北紅:3秒*/</p><p>  PB8255=0x33;</p><p>  display(12,16);</p><p>  PA8255=0x1d;/*循環(huán)*/</p><p>  PB8255=0x1d;</p>

74、<p><b>  }</b></p><p><b>  }</b></p><p><b>  結(jié)論</b></p><p>  通過本次課程設(shè)計(jì),我深深的體會(huì)到了作為一個(gè)硬件工程師的艱辛。即使做一個(gè)小小的項(xiàng)目,都需要這么多的辛苦,必須考慮到問題的任何一個(gè)細(xì)節(jié),否則最后也將是功敗垂成。&

75、lt;/p><p>  原理圖設(shè)計(jì): 當(dāng)我們選取了這樣一個(gè)題目,我們就開始收集相關(guān)的各種資料,對(duì)題目有個(gè)大致的了解,規(guī)劃一下設(shè)計(jì)的任務(wù)將要完成哪些功能。然后就具體的每一項(xiàng)功能應(yīng)該怎樣具體的設(shè)計(jì),例如用什么方法完成這一功能,這種想法是否合理,比較使用哪個(gè)芯片來完成這項(xiàng)功能。經(jīng)過長(zhǎng)時(shí)間的查閱資料、思索、推敲,最后定出了這次設(shè)計(jì)的原理圖。</p><p>  PCB板設(shè)計(jì):在上學(xué)期兩個(gè)星期的課程設(shè)計(jì)

76、中我們從圖書館借來了有關(guān)protel軟件使用方面的資料,研究應(yīng)該怎樣生成正確的網(wǎng)絡(luò)表,PCB板的布局,布線,制板等工作。剛開始由于經(jīng)驗(yàn)不足,不知道如何封裝庫(kù)里面沒有的器件和芯片而且生成的網(wǎng)絡(luò)表又有那么多的線,當(dāng)時(shí)真是一頭霧水,經(jīng)過老師和同學(xué)的幫助以及自己的摸索,最后以勉強(qiáng)及格的水準(zhǔn)畫出了這次的設(shè)計(jì)用板。</p><p>  硬件焊接:在拿到板之后,按照老師的要求我們首先檢查了一下板子是否有錯(cuò)誤,這是一個(gè)非常關(guān)鍵的

77、步驟,因?yàn)楫?dāng)你焊接上器件之后將會(huì)很難檢查。結(jié)果發(fā)現(xiàn)了真的還有一些不足,比如在畫板的過程中我們居然忘記留出電源接口,還有一些兩根電源線沒有和其他線接到一塊,另外我們給按鍵留的引腳的孔太小了,數(shù)碼管的引腳情況也給弄錯(cuò)了,這些應(yīng)該是初學(xué)這些東西經(jīng)驗(yàn)不夠和粗心造成的。這些也都給以后的學(xué)習(xí)留下了經(jīng)驗(yàn)和教訓(xùn),必須先拿到或熟悉芯片才能確定引腳的間距以及大小,制板過程必須要細(xì)心。發(fā)現(xiàn)這些錯(cuò)誤,在焊接過程中我們采取了一系列的措施來補(bǔ)救這些錯(cuò)誤。比如割斷板

78、子上的線,用導(dǎo)線來連接等。關(guān)于焊接這塊我參與的并不多,因?yàn)樽约旱乃酱_實(shí)不怎么樣,這需要一定的經(jīng)驗(yàn)和技巧,但是我卻是遲遲把握不到這種技巧。剛開始烙鐵和焊錫配合不到一塊,然后就是焊錫的量的控制問題。始終達(dá)不到老師說明的那種效果。所以我只能在我的組員焊板的同時(shí)編制程序了。</p><p>  編程調(diào)試:此次設(shè)計(jì)的編程,難點(diǎn)在于對(duì)LED數(shù)碼管顯示程序的編寫,由于對(duì)74LS164的工作原理不是很熟悉,所以一開始摸不著頭腦

79、。上網(wǎng)查閱164的相關(guān)資料,對(duì)164的工作原理有個(gè)大致的了解后,程序的編寫也初見端倪了,所以花在編此段程序的時(shí)間最長(zhǎng);交通燈狀態(tài)的顯示則沒有費(fèi)多大力氣,因?yàn)橥ㄟ^所學(xué)的課程已經(jīng)了解了其工作原理,就是向每個(gè)相應(yīng)的口上寫“1”或“0”;中斷程序的編寫也是常規(guī)的編寫,就是保存原來狀態(tài),處理,恢復(fù)現(xiàn)場(chǎng)這一中斷的基本步驟。</p><p>  在整個(gè)程序的編寫過程中,研究每個(gè)子程序是否好使,我是通過Keil C和proteu

80、s兩個(gè)軟件來實(shí)現(xiàn)的。Proteus是一個(gè)單片機(jī)的仿真軟件,發(fā)現(xiàn)它之后真的很受用,通過它可以不用連接硬件就能檢查程序是否好使。Keil C則幫助我檢查程序是否存在語法錯(cuò)誤之類的問題,還可以生成hex文件,供proteus軟件仿真使用。通過這兩個(gè)軟件,我把整個(gè)的程序調(diào)試正確。</p><p>  通過上面的這個(gè)步驟,把程序調(diào)試好,接下來就是真正的硬件連接調(diào)試了。程序既然已經(jīng)在仿真的軟件上通過認(rèn)證,如果連接上硬件不好使

81、的話,說明在硬件上某個(gè)部分存在一定的問題。這點(diǎn)得到了驗(yàn)證:硬件模擬的時(shí)候,緊急情況用的開關(guān)有一個(gè)不好使,按下的時(shí)候沒有反應(yīng)。用萬用表檢測(cè)發(fā)現(xiàn),開關(guān)內(nèi)部的連接沒有錯(cuò)誤,但是當(dāng)開關(guān)按下的時(shí)候,不是接通的,說明此開關(guān)有問題。但是開關(guān)的四個(gè)引腳不好再拆下,最后想了個(gè)沒有辦法的辦法,在一個(gè)引腳上連了一根導(dǎo)線,通過觸碰是開關(guān)斷開或連接。調(diào)試工作中還有一環(huán)就是LED數(shù)碼管的字形碼的得出。由于采用的是共陰極的數(shù)碼管,就對(duì)對(duì)一個(gè)引腳賦“1”的辦法,01H

82、,02H,04H,08H…用這樣的方法得出數(shù)碼管的字形碼。</p><p>  最后交通燈的大部分功能都已經(jīng)基本實(shí)現(xiàn),只是關(guān)于看門狗電路的部分,由于對(duì)X5045這個(gè)芯片不了解,所剩余的時(shí)間無幾,所以沒有辦法進(jìn)行編程調(diào)試了,這點(diǎn)真的很遺憾。有時(shí)間一定會(huì)把這一課補(bǔ)上的。</p><p>  這次課程設(shè)計(jì)我是全身心的投入進(jìn)去了,從中確確實(shí)實(shí)學(xué)到了不少東西,使我受益匪淺。這次課程設(shè)計(jì)中犯下了不少錯(cuò)

83、誤,以后我會(huì)接受這些教訓(xùn),同時(shí)把這些教訓(xùn)轉(zhuǎn)換為經(jīng)驗(yàn)應(yīng)用到以后的此類設(shè)計(jì)中。最后,衷心感謝在課程設(shè)計(jì)期間老師對(duì)我們的無私幫助,還要感謝和我同組的合作者,以及所有幫助過我的同學(xué)。</p><p><b>  參考文獻(xiàn)</b></p><p>  [1] 李朝青. 單片機(jī)原理及接口技術(shù)(第3版). 北京:北京航空航天大學(xué)出版社,2005</p><p&g

84、t;  [2] 馬忠梅等. 單片機(jī)的C語言應(yīng)用程序設(shè)計(jì). 北京:北京航空航天大學(xué)出版社,2007</p><p>  [3] 趙新民. 智能儀器設(shè)計(jì)基礎(chǔ). 哈爾濱:哈爾濱工業(yè)大學(xué)出版社,1999</p><p>  [4] 何立民. 單片機(jī)應(yīng)用技術(shù)大全. 北京:北京航空航天大學(xué)出版社,1994 </p><p>  石油大學(xué)課程設(shè)計(jì)成績(jī)?cè)u(píng)價(jià)表</p>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論