版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 課 程 設 計</p><p> 2012年3月 9 日</p><p><b> 課程設計任務書</b></p><p> 課程 單片機原理及應用課程設計</p><p> 題目 交通燈管理電路設計 </p><p> 一、設計目的:訓練學生綜合運用
2、己學課程的基本知識,獨立進行單片機應用技術開發(fā)工作,掌握單片機程序設計、調試,應用電路設計、分析及調試檢測。</p><p><b> 二、設計要求:</b></p><p> 1. 應用MCS-51單片機設計十字路口的交通燈亮、滅及倒計時功能;</p><p> 2. 硬件設計根據(jù)設計的任務選定合適的單片機,根據(jù)控制對象設計接口電路。設
3、計的單元電路必須有工作原理,器件的作用,分析和計算過程;</p><p> 3. 軟件設計根據(jù)電路工作過程,畫出軟件流程圖,根據(jù)流程圖編寫相應的程序,進行調試并打印程序清單;</p><p> 4. 原理圖設計根據(jù)所確定的設計電路,利用Protel等有關工具軟件繪制電路原理圖、PCB板圖、提供元器件清單。</p><p><b> 三、參考資料:&l
4、t;/b></p><p> [1] 李朝青. 單片機原理及接口技術(第3版). 北京:北京航空航天大學出版社,2005</p><p> [2] 馬忠梅等. 單片機的C語言應用程序設計. 北京:北京航空航天大學出版社,2007</p><p> [3] 趙新民. 智能儀器設計基礎. 哈爾濱:哈爾濱工業(yè)大學出版社,1999</p><
5、p> [4] 何立民. 單片機應用技術大全. 北京:北京航空航天大學出版社,1994;</p><p> 完成期限 2012.3.5—2012.3.9 </p><p> 指導教師 </p><p> 專業(yè)負責人 </p><p> 2012年
6、3 月 2 日</p><p><b> 目 錄</b></p><p><b> 第1章 概述1</b></p><p> 第2章 總體設計及核心器件簡介2</p><p><b> 2.1總體設計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章 硬件電路設計11</p><p> 3.1復位電路11</p><p> 3.3晶振電路11
8、</p><p> 3.4 I/O口擴展電路12</p><p> 3.5 LED數(shù)碼管顯示電路12</p><p> 3.6 交通燈狀態(tài)顯示電路14</p><p> 3.7 緊急情況中斷電路15</p><p> 3.8 總體設計原理圖及功能介紹16</p><p>
9、第4章 程序設計17</p><p> 4.1 設計思想17</p><p> 4.2 程序框圖17</p><p> 4.3 源程序17</p><p><b> 結論21</b></p><p><b> 參考文獻23</b></p>
10、<p><b> 第1章 概述</b></p><p> 近年來隨著科技的飛速發(fā)展,單片機的應用正在不斷地走向深入,同時帶動傳統(tǒng)控制檢測日新月益更新。在實時檢測和自動控制的單片機應用系統(tǒng)中,單片機往往是作為一個核心部件來使用,僅單片機方面知識是不夠的,還應根據(jù)具體硬件結構,以及針對具體應用對象特點的軟件結合,加以完善。交通信號燈的出現(xiàn),使交通得以有效管制,對于疏導交通流量、提高
11、道路通行能力,減少交通事故有明顯效果。</p><p> 交通在人們的日常生活中占有重要的地位,隨著人們社會活動的日益頻繁,這點更是體現(xiàn)的淋漓盡致。交通信號燈的出現(xiàn),使交通得以有效管制,對于疏導交通流量、提高道路通行能力,減少交通事故有明顯效果。本系統(tǒng)采用單片機AT89C51為中心器件來設計交通燈控制器,系統(tǒng)實用性強、操作簡單、擴展性強。本設計就是采用單片機模擬十字路口交通燈的各種狀態(tài)顯示以及倒計時時間。<
12、;/p><p> 本設計系統(tǒng)由單片機I/O口擴展系統(tǒng)、交通燈狀態(tài)顯示系統(tǒng)、LED數(shù)碼顯示系統(tǒng)、緊急情況中斷系統(tǒng)、復位電路等幾大部分組成。系統(tǒng)除基本的交通燈功能外,還具有倒計時、緊急情況處理等功能,較好的模擬實現(xiàn)了十字路口可能出現(xiàn)的狀況。</p><p> 軟件上采用C51編程,主要編寫了主程序,LED數(shù)碼管顯示程序,中斷程序延時程序等。經過整機調試,實現(xiàn)了對十字路口交通燈的模擬。</
13、p><p> 第2章 總體設計及核心器件簡介</p><p><b> 2.1總體設計</b></p><p> 整個設計以AT89C51單片機為核心,由I/O口擴展,LED數(shù)碼管顯示,緊急情況中斷電路,watchdog復位電路組成。</p><p> 硬件模塊入圖3-1。</p><p>
14、 圖2-1 硬件模塊</p><p> 2.2 AT89C51</p><p> 1.AT89C51單片機簡介</p><p> AT89C51是美國ATMEL公司推出的系列單片機,將多種功能的8位CPU與FPEROM(快閃可編程/擦除只讀存儲器)結合在一個芯片上,是一種低功耗、高性能的CMOS控制器,為很多嵌入式控制應用提供了非常靈活而又價格適宜的方案,其
15、性能價格比遠高于同類芯片。它與MCS-51指令系統(tǒng)兼容,片內FPEROM允許對程序存儲器在線重復編程,也可用常規(guī)的EPROM編程器編程,可循環(huán)寫入/擦除1000次。89C51內含4KB的FPEROM,一般的EEPROM的字節(jié)擦除時間和寫入時間基本上均為10ms,對于任一個實時控制系統(tǒng)來說,這樣長的時間是不可能在線修改程序的。</p><p> 圖2-2 89C51內部結構圖</p><p&g
16、t; 與EEPROM相比較,F(xiàn)PEROM大大縮短了存儲內容擦除和寫入的時間,為在線改寫程序提供了極大的方便,而且價格也比帶EPROM87C系列單片機便宜,這更顯示出了89C系列的優(yōu)越性。它還有128*8Bit的片內RAM;32根I/O線;2個16位定時/計數(shù)器;5個中斷源;一個全雙工的異步串行口;間歇和掉電工作模式;三級程序存儲器加密;全靜態(tài)工作,晶振工作范圍:0Hz—24MHz。</p><p><b&
17、gt; 2.管腳功能</b></p><p> AT89C51單片機為40引腳芯片如圖2-3所示。</p><p> ?、買/O口線: P0、P1、P2、P3共四個八位P0口是三態(tài)雙向口, 通稱數(shù)據(jù)總線口, 因為只有該口能直接用于對外部存儲器的讀?寫操作。P0口也用以輸出外部存儲器的低8位地址。由于是分時輸出, 故應在外部加鎖存器將此地址數(shù)據(jù)鎖存, 地址鎖存信號用ALE。P
18、1口是專門供用戶使用的I/O口, 是準雙向口。P2口是從系統(tǒng)擴展時作高8位地址線用。不擴展外部存儲器時, P口也可以作為用戶I/O口線使用, P2口也是準雙向口。P3口是雙功能口, 該口的每一位均可獨立地定義為第一I/O 功能或第二I/O功能。作為第一功能使用時操作同P1口。</p><p> P3口的第二功能如表2-1。</p><p> 圖2-3 89C51引腳圖</p>
19、;<p> ②控制口線: PSEN (片外取控制)、AL E( 地址鎖存控制)、EA (片外儲器選擇)、RE2SET (復位控制) ;</p><p> ③電源及時鐘: CCC、VSS; XTAL 1, XTAL 2</p><p> 表2-1 引腳功能表</p><p> 2.3 8255A</p><p> 82
20、55A是Intel公司生產的可編程輸入輸出接口芯片,它具有3個8位的并I/O</p><p> 口,具有三種工作方式,可通過程序改變其功能,因而使用靈活,通用性強,可作為單</p><p> 片機與多種外圍設備連接時的中間接口電路。8255有三種基本工作方式, 三種工作方式由工作方式控制字決定,方式控制字由CPU通過輸入/輸出指令來提供.三個端口中PC口被分為兩個部分,上半部
21、分隨PA口稱為A組,下半部分隨PB口稱為B組.其中PA口可工作與方式0、1和2,而PB口只能工作在方式0和1。8255共有40個引腳,采用雙列直插式封裝。其引腳圖如圖2-4所示,各引腳功能如下:</p><p> 圖2-4 8255A引腳圖</p><p> D0--D7:三態(tài)雙向數(shù)據(jù)線,與單片機數(shù)據(jù)總線連接,用來傳送數(shù)據(jù)信息。</p><p> CS:片選信
22、號線,低電平有效,表示芯片被選中。</p><p> RD:讀出信號線,低電平有效,控制數(shù)據(jù)的讀出。</p><p> WR:寫入信號線,低電平有效,控制數(shù)據(jù)的寫入。</p><p> Vcc:+5V電源。PA0--PA7:A口輸入/輸出線。PB0--PB7:B口輸入/輸出線。PC0--PC7:C口輸入/輸出線。RESET:復位信號線。A1、A0:地
23、址線,用來選擇8255內部端口。GND:地線。</p><p> 2.4 74LS164</p><p> 74LS164引腳定義如圖2-5所示,其真值表如表2-2所示,其功能是將外部輸入的串行數(shù)據(jù)轉化為8位的并行數(shù)據(jù)輸出具有鎖寸功能。A、B端為串行數(shù)據(jù)輸入端,QA ~ QH為數(shù)據(jù)輸出端,CLK為外部時鐘輸入端,CLR為清零端。</p><p> 圖2-5
24、 74LS164引腳圖</p><p> 表2-2 74LS164真值表</p><p> 注 QA0、 QB0、QH0為在穩(wěn)態(tài)輸入條件建立之前QA 、QB 和QH相應的電平;QAn 、QGn 為在最近的時鐘↑轉換前QA或QG的電平,表示移1位。</p><p> 74LS164內部功能圖如圖2-6所示:</p><p> 圖
25、2-6 74LS164內部功能圖</p><p> 2.5 X5045</p><p> X5045是一種集看門狗、電壓監(jiān)控和串行EEPROM 三種功能于一身的可編程電路。這種組合設計減少了電路對電路板空間的需求。</p><p> X5045中的看門狗對系統(tǒng)提供了保護功能。當系統(tǒng)發(fā)生故障而超過設置時間時,電路中的看門狗將通過RESET信號向CPU 作出反應
26、。X5045提供了三個時間值供用戶選擇使用。它所具有的電壓監(jiān)控功能還可以保護系統(tǒng)免受低電壓的影響,當電源電壓降到允許范圍以下時,系統(tǒng)將復位,直到電源電壓返回到穩(wěn)定值為止。X5045的存儲器與CPU 可通過串行通信方式接口,共有4096個位,可以按512 x 8個字節(jié)來放置數(shù)據(jù)。</p><p><b> 1 引腳介紹</b></p><p> CS/WDI:片選輸
27、入/看門狗復位輸入;</p><p><b> SO:串行輸出;</b></p><p><b> WP:寫保護輸入;</b></p><p> RESET:復位輸出;</p><p> SCK:同步時鐘輸入;</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 上電復位</b></p>&l
29、t;p> 向X5045加電時會激活其內部的上電復位電路,從而使RESET 引腳有效。該信號可避免系統(tǒng)微處理器在電壓不足或振蕩器未穩(wěn)定的情況下工作。當VCC 超過器件的Vtrip門限值時,電路將在200ms(典型)延時后釋放RESET 以允許系統(tǒng)開始工作。</p><p><b> 2.2 低電壓監(jiān)視</b></p><p> 工作時, X5045對VCC
30、電平進行監(jiān)測,若電源電壓跌落至預置的最小Vtrip以下時,系統(tǒng)即確認RESET,從而避免微處理器在電源失效或斷開的情況下工作。當RESET 被確認后,該RESET 信號將一直保持有效,直到電壓跌到低于1V 。而當VCC 返回并超過Vtrip達200ms時,系統(tǒng)重新開始工作。</p><p> 2.3 看門狗定時器</p><p> 看門狗定時器的作用是通過監(jiān)視WDI輸入來監(jiān)視微處理器是
31、否激活。由于微處理器必須周期性的觸發(fā)CS/WDI引腳以避免RESET 信號激活而使電路復位,所以CS/WDI引腳必須在看門狗超時時間終止之前受到由高至低信號的觸發(fā)。</p><p> 2.4 重新設置VCC 門限</p><p> X5045/45出廠時設置的標準VCC 門限電壓為Vtrip,但在應用時,如果標準值不恰當,用戶可以重新調整。</p><p>
32、2.5 SPI串行存儲器</p><p> 器件存儲器部分是帶塊鎖保護的CMOS串行EEPROM 陣列,陣列的內部組織是x8 位。X5045可提供最少為1000,000次擦寫和100年的數(shù)據(jù)保存期,并具有串行外圍接口(SPI)和軟件協(xié)議的特點,允許工作在簡單的四總線上。</p><p> X5045主要是通過一個8 位的指令寄存器來控制器件的工作,其指令代碼通過SI輸入端(MSB在前)
33、寫入寄存器。表2-3所列為X5045的指令格式及其操作。</p><p> 表2-3 X5045的指令格式及其操作</p><p> 2.6 時鐘和數(shù)據(jù)時序</p><p> 當CS變低以后,SI線上的輸入數(shù)據(jù)在SCK 的第一個上升沿時被鎖存。而SO 線上的數(shù)據(jù)則由SCK的下降沿輸出。用戶可以停止時鐘,然后再啟動它, 以便在它停止的地方恢復操作。在整個工作期
34、間,CS必須為低。</p><p><b> 2.7 狀態(tài)寄存器</b></p><p> 狀態(tài)寄存器包含四個非易失性狀態(tài)位和兩個易失性狀態(tài)位??刂莆挥糜谠O置看門狗定時器的操作和存儲器的塊鎖保護。狀態(tài)寄存器的格式如表2-4(缺省值為00H) :</p><p> 表2-4 狀態(tài)寄存器格式</p><p> 其中:
35、 WIP (Write-In-Progress) 位是易失性只讀位,用于指明器件是否忙于內部非易失性寫操作。WIP 位可用RDSR指令讀出。當該位為“1”時,表示非易失性寫操作正在進行;為“0”時,表示沒有進行寫操作。</p><p> WEL(Write Enable Latch)位用于指出“寫使能”鎖存的狀態(tài)。WEL=1時,表示鎖存被設置;WEL=0 表示鎖存已復位。WEL 位是易失性只讀位??梢杂肳REN
36、指令設置WEL 位;用WRDI指令復位WEL位。</p><p> 用BLO,BL1(Block Lock)位可設置塊鎖存保護的范圍。任何被塊鎖保護的存儲器都只能讀出不能寫入。這兩個非易失性位可用WRSR指令來編程,并允許用戶保護EEPROM 陣列的1/4 、1/2、全部或0。參見表2-5 。</p><p> 2-5 受保護的EEPROM陳列地址</p><p&g
37、t; WD0、WD1( Watchdog Timer)位用于選擇看門狗的超時周期。見表2-6 。</p><p> 表2-6 看門狗的超時周期選擇</p><p> 當用CS 選中器件后,送8 位RDSR指令,并由CLK 信號觸發(fā)即可將狀態(tài)寄存器的內容從SO 線上讀出。而在寫狀態(tài)寄存器時,應先將CS 拉低,然后送WREN指令,再拉高CS。然后再次拉低CS,最后送入WREN指令及對應于
38、狀態(tài)寄存器內容的8 位數(shù)據(jù)即可。該操作由CS 變高結束。</p><p> WEL位及WP引腳的狀態(tài)對器件內的存儲器及狀態(tài)寄存器各部分保護的影響如表2-7所列。</p><p> 表2-7 WREN命令和/WP引腳狀態(tài)寄存器的影響</p><p> 第3章 硬件電路設計</p><p><b> 3.1復位電路</b&
39、gt;</p><p> 復位方式有多種,但本設計采用看門狗芯片X5045,接線圖如圖3-1所示。</p><p> 3-1 復位電路原理圖</p><p> 在設定的定時時間內,89C51必須在/CS/WDI引腳產生一個由高到低的電平變化,以清內部定時器,即“喂狗”,否則X5045將產生一個復位信號。</p><p><b>
40、; 3.3晶振電路</b></p><p> 晶振電路原理圖如3-2:</p><p> 3-2 晶振模塊原理圖</p><p> 選取原則:傳統(tǒng)做法,但能夠實現(xiàn)所需,即最簡單也最是實用。電容選取22uF,晶振為11.0592Hz。</p><p> 3.4 I/O口擴展電路</p><p>
41、硬件原理設計圖如圖3-3所示:</p><p> 圖3-3 8255A擴展單片機I/0口電路圖</p><p> 用74LS373鎖存,74LS138譯碼,擴展單片機的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> 在單片機應用系統(tǒng)中,數(shù)碼管顯示常用兩種方法:靜態(tài)顯示和動態(tài)掃描顯示。所謂靜態(tài)顯示,就是每一個顯示器都要占用單獨的具有鎖存功能的I/O接口用于筆劃段字形代碼。這樣單片機只要把要顯示的字形代碼發(fā)
43、送到接口電路,就不用管它了,直到要顯示新的數(shù)據(jù)時,再發(fā)送新的字形碼,因此,使用這種方法單片機中CPU的開銷小,可以提供單獨鎖存的I/O接口電路很多。所以本設計采用串并轉換電路74LS164的靜態(tài)顯示電路。其電路圖如圖3-4所示。 </p><p> 圖3-4 數(shù)碼管顯示靜態(tài)驅動電路</p><p> MCS-51單片機串行口方式0為移位寄存器方式,外接2片74LS164作為2位LE
44、D顯示器的靜態(tài)顯示接口,把89C51的RXD作為數(shù)據(jù)輸出線,TXD作為移位時鐘脈沖。74LS164為TTL單向8位移位寄存器,可實現(xiàn)串行輸入,并行輸出。其中A、B(第1、2腳)為串行數(shù)據(jù)輸入端,2個引腳按邏輯與運算規(guī)律輸入信號,共一個輸入信號時可并接。T(第8腳)為時鐘輸入端,可連接到串行口的TXD端。每一個時鐘信號的上升沿加到T端時,移位寄存器移一位,8個時鐘脈沖過后,8位二進制數(shù)全部移入74LS164中。R(第9腳)為復位端,當R=
45、0時,移位寄存器各位復0,只有當R=1時,時鐘脈沖才起作用。Q1…Q8(第3-6和10-13引腳)并行輸出端分別接LED顯示器的hg···a各段對應的引腳上。在給出了8個脈沖后,最先進入74LS164的第一個數(shù)據(jù)到達了最高位,然后如果再來一個脈沖,第一個脈沖就會從最高位移出。設計中的2片7LS164首尾相串,而時鐘端則接在一起,這樣,當輸入8個脈沖時,從單片機RXD端輸出的數(shù)據(jù)就進入到了第一片74LS164
46、中了,而當?shù)诙€8個脈沖到來后,這個數(shù)據(jù)就進入了第二片74LS164</p><p> 本設計中采用的是共陰極LED數(shù)碼管,其字形碼如表3-1所示。</p><p> 表3-1 共陰極LED數(shù)碼管字形碼表</p><p> 3.6 交通燈狀態(tài)顯示電路</p><p> 十字路口的交通燈分布示意圖如圖3-5所示,將這12個交通燈進行編
47、號。</p><p> 圖3-5 十字路口交通燈分布示意圖</p><p> 這12個交通燈共有四個狀態(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> 對應的硬件原理設計圖如圖3-6所示:</p><p> 圖3-6 交通燈狀態(tài)顯示電路</p><p> 用7407對發(fā)光二極管進行驅動,圖中電阻R為390歐姆,以保證通過發(fā)光二極管的電流大于工
49、作電流10mA。</p><p> 四種狀態(tài)下發(fā)光二極管與相應端口取值關系見表3-2。</p><p> 表3-2 發(fā)光二極管與相應端口取值關系</p><p> 3.7 緊急情況中斷電路</p><p> 緊急情況中斷處理電路圖如圖3-7所示:</p><p> 圖3-7 緊急情況中斷電路圖</p&g
50、t;<p> 當東西向(或南北向)有特殊情況,比如有救護車通過,開關SW0為低電平則應使交通燈處于S3(東西綠燈、南北),開關SW1為低電平則應使交通燈處于S1(南北向綠燈、東西向紅燈)。</p><p> 3.8 總體設計原理圖及功能介紹</p><p> ?、?整個設計原理圖見附圖。</p><p><b> 功能介紹</b
51、></p><p> 在應用電路中,采用8255A對單片機的I/O口進行有效的擴展,從而大大增加了可利用的I/O口資源,使得I/O口很充裕。8255的PA口和PB口接發(fā)光二極管,通過對PA口和PB口的位寫“1”或“0”來控制發(fā)光二極管的亮、滅,進而模擬顯示出十字路口交通燈的各種狀態(tài)。 </p><p> LED數(shù)碼管則用來對各種狀態(tài)進行倒計時的顯示。設計中采用74LS164靜態(tài)驅
52、動LED數(shù)碼管,利用單片機的RXD作為數(shù)據(jù)的輸出端給164送數(shù)。利用164的移位進行多位的顯示。利用延時程序控制每秒時間,從而控制RXD送數(shù)的時間間隔。</p><p> 緊急情況的處理則采用查詢加中斷的方式。通過查詢P1.2和P1.3的狀態(tài)來控制外部中斷1,然后進去相應的處理程序。在哪一方向上有緊急情況,則能通過開關進行中斷,使該方向上為綠燈放行,同時緊急情況報警燈亮。</p><p>
53、;<b> 第4章 程序設計</b></p><p><b> 4.1 設計思想</b></p><p> 交通燈根據(jù)其顯示情況可以分為四個狀態(tài),可以通過定時來控制每個狀態(tài)的時間;通過定時也可以向LED數(shù)碼管中每隔1秒送一個數(shù),顯示該狀態(tài)剩余的時間;如果有中斷出現(xiàn)則進入相應的處理程序:先保留目前的顯示狀態(tài),然后根據(jù)情況顯示處理中的狀態(tài),緊急
54、情況結束則恢復到保留的原來狀態(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) /*延時子程序*/</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); /*等待開關斷開*/</p><p> PA8255=0xff;</p><p> PA8255=0xff;</p><p><b>
64、 PA8255=a;</b></p><p> PB8255=b; /*恢復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> 結論</b></p><p> 通過本次課程設計,我深深的體會到了作為一個硬件工程師的艱辛。即使做一個小小的項目,都需要這么多的辛苦,必須考慮到問題的任何一個細節(jié),否則最后也將是功敗垂成。&
75、lt;/p><p> 原理圖設計: 當我們選取了這樣一個題目,我們就開始收集相關的各種資料,對題目有個大致的了解,規(guī)劃一下設計的任務將要完成哪些功能。然后就具體的每一項功能應該怎樣具體的設計,例如用什么方法完成這一功能,這種想法是否合理,比較使用哪個芯片來完成這項功能。經過長時間的查閱資料、思索、推敲,最后定出了這次設計的原理圖。</p><p> PCB板設計:在上學期兩個星期的課程設計
76、中我們從圖書館借來了有關protel軟件使用方面的資料,研究應該怎樣生成正確的網(wǎng)絡表,PCB板的布局,布線,制板等工作。剛開始由于經驗不足,不知道如何封裝庫里面沒有的器件和芯片而且生成的網(wǎng)絡表又有那么多的線,當時真是一頭霧水,經過老師和同學的幫助以及自己的摸索,最后以勉強及格的水準畫出了這次的設計用板。</p><p> 硬件焊接:在拿到板之后,按照老師的要求我們首先檢查了一下板子是否有錯誤,這是一個非常關鍵的
77、步驟,因為當你焊接上器件之后將會很難檢查。結果發(fā)現(xiàn)了真的還有一些不足,比如在畫板的過程中我們居然忘記留出電源接口,還有一些兩根電源線沒有和其他線接到一塊,另外我們給按鍵留的引腳的孔太小了,數(shù)碼管的引腳情況也給弄錯了,這些應該是初學這些東西經驗不夠和粗心造成的。這些也都給以后的學習留下了經驗和教訓,必須先拿到或熟悉芯片才能確定引腳的間距以及大小,制板過程必須要細心。發(fā)現(xiàn)這些錯誤,在焊接過程中我們采取了一系列的措施來補救這些錯誤。比如割斷板
78、子上的線,用導線來連接等。關于焊接這塊我參與的并不多,因為自己的水平確實不怎么樣,這需要一定的經驗和技巧,但是我卻是遲遲把握不到這種技巧。剛開始烙鐵和焊錫配合不到一塊,然后就是焊錫的量的控制問題。始終達不到老師說明的那種效果。所以我只能在我的組員焊板的同時編制程序了。</p><p> 編程調試:此次設計的編程,難點在于對LED數(shù)碼管顯示程序的編寫,由于對74LS164的工作原理不是很熟悉,所以一開始摸不著頭腦
79、。上網(wǎng)查閱164的相關資料,對164的工作原理有個大致的了解后,程序的編寫也初見端倪了,所以花在編此段程序的時間最長;交通燈狀態(tài)的顯示則沒有費多大力氣,因為通過所學的課程已經了解了其工作原理,就是向每個相應的口上寫“1”或“0”;中斷程序的編寫也是常規(guī)的編寫,就是保存原來狀態(tài),處理,恢復現(xiàn)場這一中斷的基本步驟。</p><p> 在整個程序的編寫過程中,研究每個子程序是否好使,我是通過Keil C和proteu
80、s兩個軟件來實現(xiàn)的。Proteus是一個單片機的仿真軟件,發(fā)現(xiàn)它之后真的很受用,通過它可以不用連接硬件就能檢查程序是否好使。Keil C則幫助我檢查程序是否存在語法錯誤之類的問題,還可以生成hex文件,供proteus軟件仿真使用。通過這兩個軟件,我把整個的程序調試正確。</p><p> 通過上面的這個步驟,把程序調試好,接下來就是真正的硬件連接調試了。程序既然已經在仿真的軟件上通過認證,如果連接上硬件不好使
81、的話,說明在硬件上某個部分存在一定的問題。這點得到了驗證:硬件模擬的時候,緊急情況用的開關有一個不好使,按下的時候沒有反應。用萬用表檢測發(fā)現(xiàn),開關內部的連接沒有錯誤,但是當開關按下的時候,不是接通的,說明此開關有問題。但是開關的四個引腳不好再拆下,最后想了個沒有辦法的辦法,在一個引腳上連了一根導線,通過觸碰是開關斷開或連接。調試工作中還有一環(huán)就是LED數(shù)碼管的字形碼的得出。由于采用的是共陰極的數(shù)碼管,就對對一個引腳賦“1”的辦法,01H
82、,02H,04H,08H…用這樣的方法得出數(shù)碼管的字形碼。</p><p> 最后交通燈的大部分功能都已經基本實現(xiàn),只是關于看門狗電路的部分,由于對X5045這個芯片不了解,所剩余的時間無幾,所以沒有辦法進行編程調試了,這點真的很遺憾。有時間一定會把這一課補上的。</p><p> 這次課程設計我是全身心的投入進去了,從中確確實實學到了不少東西,使我受益匪淺。這次課程設計中犯下了不少錯
83、誤,以后我會接受這些教訓,同時把這些教訓轉換為經驗應用到以后的此類設計中。最后,衷心感謝在課程設計期間老師對我們的無私幫助,還要感謝和我同組的合作者,以及所有幫助過我的同學。</p><p><b> 參考文獻</b></p><p> [1] 李朝青. 單片機原理及接口技術(第3版). 北京:北京航空航天大學出版社,2005</p><p&g
84、t; [2] 馬忠梅等. 單片機的C語言應用程序設計. 北京:北京航空航天大學出版社,2007</p><p> [3] 趙新民. 智能儀器設計基礎. 哈爾濱:哈爾濱工業(yè)大學出版社,1999</p><p> [4] 何立民. 單片機應用技術大全. 北京:北京航空航天大學出版社,1994 </p><p> 石油大學課程設計成績評價表</p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機課程設計--模擬交通燈電路課程設計
- 單片機原理及系統(tǒng)課程設計--交通燈
- 單片機交通燈課程設計
- 單片機課程設計---交通燈
- 單片機交通燈課程設計
- 單片機課程設計-交通燈
- 單片機課程設計--交通燈
- 單片機課程設計(交通燈)
- 單片機交通燈課程設計
- 單片機交通燈課程設計
- 單片機交通燈課程設計
- 單片機交通燈課程設計
- 單片機交通燈課程設計--基于單片機的交通燈控制設計
- 單片機課程設計--基于單片機的交通燈設計
- 單片機交通燈管理系統(tǒng)設計 畢業(yè)論文
- 單片機課程設計---單片機原理及應用
- 單片機交通燈課程設計--基于單片機的交通燈系統(tǒng)的設計
- 單片機課程設計報告---交通燈
- 單片機交通燈課程設計報告
- 單片機課程設計--模擬交通燈
評論
0/150
提交評論