交通燈課程設計_第1頁
已閱讀1頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  第一章 緒 論</b></p><p><b>  1.1 概述</b></p><p>  近年來隨著科技的飛速發(fā)展,單片機的應用正在不斷地走向深入,同時帶動傳統(tǒng)控制檢測日新月益更新。在實時檢測和自動控制的單片機應用系統(tǒng)中,單片機往往是作為一個核心部件來使用,僅單片機方面知識是不夠的,還應根據(jù)具體硬件結(jié)構(gòu),以及針

2、對具體應用對象特點的軟件結(jié)合,加以完善。交通信號燈的出現(xiàn),使交通得以有效管制,對于疏導交通流量、提高道路通行能力,減少交通事故有明顯效果。</p><p><b>  1.2 設計目的</b></p><p> ?。?)加強對單片機和匯編語言的認識,充分掌握和理解設計各部分的工作原理、設計過程、選擇芯片器件、模塊化編程等多項知識。</p><p&g

3、t; ?。?)用單片機模擬實現(xiàn)具體應用,使個人設計能夠真正使用。</p><p>  (3)把理論知識與實踐相結(jié)合,充分發(fā)揮個人能力,并在實踐中鍛煉。</p><p>  (4)提高利用已學知識分析和解決問題的能力。</p><p> ?。?)提高實踐動手能力。</p><p>  1.3 設計任務和內(nèi)容</p><p&g

4、t;<b>  1.3.1設計任務</b></p><p>  結(jié)合教材及參考資料,用AT89C51單片機模擬實現(xiàn)十字路口的交通燈亮滅、倒計時顯示等功能。</p><p><b>  1.3.2設計內(nèi)容</b></p><p>  (1)填寫設計任務書。</p><p> ?。?)進行總體設計,畫出

5、原理圖。</p><p> ?。?)編寫并調(diào)試程序。</p><p> ?。?)用Proteus軟件進行仿真。</p><p>  第二章 總體設計及核心器件簡介</p><p><b>  2.1總體設計</b></p><p>  整個設計以AT89C51單片機為核心,LED數(shù)碼管顯示,晶振電

6、路,復位電路組成。</p><p>  硬件模塊入圖2-1。</p><p>  圖2-1 硬件模塊</p><p>  2.2 AT89C51</p><p>  1.AT89C51單片機簡介</p><p>  AT89C51是美國ATMEL公司推出的系列單片機,將多種功能的8位CPU與FPEROM(快閃可編程/

7、擦除只讀存儲器)結(jié)合在一個芯片上,是一種低功耗、高性能的CMOS控制器,為很多嵌入式控制應用提供了非常靈活而又價格適宜的方案,其性能價格比遠高于同類芯片。它與MCS-51指令系統(tǒng)兼容,片內(nèi)FPEROM允許對程序存儲器在線重復編程,也可用常規(guī)的EPROM編程器編程,可循環(huán)寫入/擦除1000次。89C51內(nèi)含4KB的FPEROM,一般的EEPROM的字節(jié)擦除時間和寫入時間基本上均為10ms,對于任一個實時控制系統(tǒng)來說,這樣長的時間是不可能在

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

9、lt;/p><p>  圖2-2 89C51內(nèi)部結(jié)構(gòu)圖</p><p><b>  2.管腳功能</b></p><p>  AT89C51單片機為40引腳芯片如圖2-3所示。</p><p>  ①I/O口線: P0、P1、P2、P3共四個八位P0口是三態(tài)雙向口, 通稱數(shù)據(jù)總線口, 因為只有該口能直接用于對外部存儲器的讀?

10、寫操作。P0口也用以輸出外部存儲器的低8位地址。由于是分時輸出, 故應在外部加鎖存器將此地址數(shù)據(jù)鎖存, 地址鎖存信號用ALE。P1口是專門供用戶使用的I/O口, 是準雙向口。P2口是從系統(tǒng)擴展時作高8位地址線用。不擴展外部存儲器時, P口也可P2口也是準雙向口。P3口是雙功能口, 該口的每一位均可獨立地定義為第一I/O 功能或第二I/O功能。作為第一功能使用時操作同P1口。</p><p>  P3口的第二功能如

11、表2-1。</p><p>  圖2-3 89C51引腳圖</p><p>  ②控制口線: PSEN (片外取控制)、AL E( 地址鎖存控制)、EA (片外儲器選擇)、RE2SET (復位控制) ;</p><p> ?、垭娫醇皶r鐘: CCC、VSS; XTAL 1, XTAL 2</p><p>  表2-1 引腳功能表</p&g

12、t;<p>  2.3 74LS164</p><p>  74LS164引腳定義如圖2-5所示,其真值表如表2-2所示,其功能是將外部輸入的串行數(shù)據(jù)轉(zhuǎn)化為8位的并行數(shù)據(jù)輸出具有鎖寸功能。A、B端為串行數(shù)據(jù)輸入端,QA ~ QH為數(shù)據(jù)輸出端,CLK為外部時鐘輸入端,CLR為清零端。</p><p>  圖2-5 74LS164引腳圖</p><p>

13、;  表2-2 74LS164真值表</p><p>  第三章 單元電路模塊設計</p><p><b>  3.1復位電路</b></p><p><b>  3-1 復位電路</b></p><p><b>  3.2晶振電路</b></p><p&

14、gt;  3-2 晶振模塊原理圖</p><p>  選取原則:傳統(tǒng)做法,但能夠?qū)崿F(xiàn)所需,即最簡單也最是實用。電容選取22uF,晶振為11.0592Hz。</p><p>  3.3 LED數(shù)碼管顯示電路</p><p>  在單片機應用系統(tǒng)中,數(shù)碼管顯示常用兩種方法:靜態(tài)顯示和動態(tài)掃描顯示。所謂靜態(tài)顯示,就是每一個顯示器都要占用單獨的具有鎖存功能的I/O接口用于筆

15、劃段字形代碼。這樣單片機只要把要顯示的字形代碼發(fā)送到接口電路,就不用管它了,直到要顯示新的數(shù)據(jù)時,再發(fā)送新的字形碼,因此,使用這種方法單片機中CPU的開銷小,可以提供單獨鎖存的I/O接口電路很多。所以本設計采用串并轉(zhuǎn)換電路74LS164的靜態(tài)顯示電路。其電路圖如圖3-4所示。 </p><p>  圖3-4 數(shù)碼管顯示靜態(tài)驅(qū)動電路</p><p>  3.4 總體設計原理圖及功能介紹&

16、lt;/p><p><b>  功能介紹:</b></p><p>  LED數(shù)碼管則用來對各種狀態(tài)進行倒計時的顯示。設計中采用74LS164靜態(tài)驅(qū)動LED數(shù)碼管,利用單片機的RXD作為數(shù)據(jù)的輸出端給164送數(shù)。利用164的移位進行多位的顯示。利用延時程序控制每秒時間,從而控制RXD送數(shù)的時間間隔。</p><p>  第四章 軟件編程設計<

17、/p><p><b>  4.1 設計思想</b></p><p>  交通燈根據(jù)其顯示情況可以分為四個狀態(tài),可以通過定時來控制每個狀態(tài)的時間;通過定時也可以向LED數(shù)碼管中每隔1秒送一個數(shù),顯示該狀態(tài)剩余的時間。</p><p><b>  4.2 程序框圖</b></p><p>  圖4-1 主

18、程序框圖</p><p><b>  4.3 源程序</b></p><p>  SECOND1 EQU 30H ;東西路口計時寄存器</p><p>  SECOND2 EQU 31H ;南北路口計時寄存器</p><p>  DBUF EQU 40H

19、 ;顯示碼緩沖區(qū)1</p><p>  TEMP EQU 44H ;顯示碼緩沖區(qū)2</p><p>  LED_G1 BIT P2.1 ;東西路口綠燈</p><p>  LED_Y1 BIT P2.2 ;東西路口黃燈</p><p>  LED_R1 BIT

20、P2.3 ;東西路口紅燈</p><p>  LED_G2 BIT P2.4 ;南北路口綠燈</p><p>  LED_Y2 BIT P2.5 ;南北路口黃燈</p><p>  LED_R2 BIT P2.6 ;南北路口紅燈</p><p>  ORG 0

21、000H</p><p>  LJMP START</p><p>  ORG 0100H</p><p>  START: MOV TMOD,#01H ;置T0為工作方式1</p><p>  MOV TH0,#3CH ;置T0定時初值50ms</p><p>  MOV TL0,#

22、0B0H</p><p><b>  CLR TF0</b></p><p>  SETB TR0 ;啟動T0</p><p><b>  CLR A</b></p><p>  MOV P1,A ;關閉不相關的LED</p><p

23、>  LOOP: MOV R2,#20 ;置1S計數(shù)初值,50ms*20=1s</p><p>  MOV R3,#20 ;紅燈亮20S</p><p>  MOV SECOND1,#25 ;東西路口計時顯示初值25s</p><p>  MOV SECOND2,#25 ;南北路口計時顯示初值25s</

24、p><p>  LCALL DISPLAY </p><p>  LCALL STATE1 ;調(diào)用狀態(tài)1</p><p>  WAIT1: JNB TF0,WAIT1 ;查詢50ms到否</p><p>  CLR TF0 </p><p>  MOV TH0

25、,#3CH ;回復T0定時初值50ms</p><p>  MOV TL0,#0B0H</p><p>  DJNZ R2,WAIT1 ;判斷1S到否 未到繼續(xù)狀態(tài)1</p><p>  MOV R2,#20 ;置50MS計數(shù)初值</p><p>  DEC SECOND1 ;東西路口顯示時

26、間減1s</p><p>  DEC SECOND2 ;南北路口顯示時間減1s</p><p>  LCALL DISPLAY</p><p>  DJNZ R3,WAIT1 ;狀態(tài)1維持20s</p><p>  MOV R2,#5 ;置50MS計時初值5*4=20</p><p

27、>  MOV R3,#3 ;路燈閃3s</p><p>  MOV R4,#4 ;閃爍間隔200ms</p><p>  MOV SECOND1,#5 ;東西路口計時顯示初值5s</p><p>  MOV SECOND2,#5 ;南北路口計時顯示初值5s</p><p>  LCAL

28、L DISPLAY ;</p><p>  WAIT2: LCALL STATE2 ;調(diào)用狀態(tài)2</p><p>  JNB TF0,WAIT2 ;查詢50ms到否</p><p>  CLR TF0 ;</p><p>  MOV TH0,#3CH ;恢復T0定時初值5

29、0ms</p><p>  MOV TL0,#0B0H</p><p>  DJNZ R4,WAIT2 ;判斷200MS到否 未到繼續(xù)狀態(tài)2</p><p>  CPL LED_G1 ;東西綠燈閃</p><p>  MOV R4,#4 ;閃爍間隔200MS</p><p&g

30、t;  DJNZ R2,WAIT2 ;判1S到否 未到繼續(xù)狀態(tài)2</p><p>  MOV R2,#5 ;置50MS計數(shù)初值</p><p>  DEC SECOND1 ;東西路口顯示時間減1S</p><p>  DEC SECOND2 ;南北路口顯示時間減1S</p><p>  

31、LCALL DISPLAY </p><p>  DJNZ R3,WAIT2 ;狀態(tài)2維持3S</p><p>  MOV R2,#20 ;置50MS計數(shù)初值</p><p>  MOV R3,#2 ;黃燈閃2S</p><p>  MOV SECOND1,#2 ;東西路口計時顯示

32、初值2S</p><p>  MOV SECOND2,#2 ;南北路口計時顯示初值2S </p><p>  LCALL DISPLAY</p><p>  WAIT3: LCALL STATE3 ;調(diào)用狀態(tài)3</p><p>  JNB TF0,WAIT3 ;查詢100MS到否</p>&l

33、t;p><b>  CLR TF0</b></p><p>  MOV TH0,#3CH ;恢復T0定時初值100MS</p><p>  MOV TL0,#0B0H </p><p>  DJNZ R2,WAIT3 ;判斷1S到否 未到繼續(xù)狀態(tài)3</p><p>  MOV

34、 R2,#20 ;置100MS計數(shù)初值</p><p>  DEC SECOND1 ;東西路口顯示時間減1S</p><p>  DEC SECOND2 ;南北路口顯示時間減1S</p><p>  LCALL DISPLAY </p><p>  DJNZ R3,WAIT3 ;狀

35、態(tài)3維持2S</p><p>  MOV R2,#20 ;置50MS計數(shù)初值</p><p>  MOV R3,#20 ;紅燈閃20S</p><p>  MOV SECOND1,#25 ;東西路口計時顯示初值25S</p><p>  MOV SECOND2,#25 ;南北路口計時顯示初值25S&

36、lt;/p><p>  LCALL DISPLAY</p><p>  WAIT4: LCALL STATE4 ;調(diào)用狀態(tài)4</p><p>  JNB TF0,WAIT4 ;查詢100ms到否</p><p>  CLR TF0 </p><p>  MOV TH0,

37、#3CH ;恢復T0定時初值100ms</p><p>  MOV TL0,#0B0H</p><p>  DJNZ R2,WAIT4 ;判斷1S是否 未到繼續(xù)狀態(tài)4</p><p>  MOV R2,#20 ;置100MS計數(shù)初值</p><p>  DEC SECOND1 ;東西路口顯示

38、時間減1S</p><p>  DEC SECOND2 ;南北路口顯示時間減1S</p><p>  LCALL DISPLAY </p><p>  DJNZ R3,WAIT4 ;狀態(tài)4維持20S</p><p>  MOV R2,#5 ;置50MS計數(shù)初值 </p>

39、<p>  MOV R4,#4 ;紅燈閃20S</p><p>  MOV R3,#3 ;綠燈閃3S</p><p>  MOV SECOND1,#5 ;東西路口計時顯示初值5S</p><p>  MOV SECOND2,#5 ;南北路口計時顯示初值5S</p><p>  LC

40、ALL DISPLAY</p><p>  WAIT5: LCALL STATE5 ;調(diào)用狀態(tài)5</p><p>  JNB TF0,WAIT5 ;查詢100MS到否</p><p><b>  CLR TF0</b></p><p>  MOV TH0,#3CH ;恢復T0定時初

41、值100MS</p><p>  MOV TL0,#0B0H</p><p>  DJNZ R4,WAIT5 ;判斷200MS到否?未到繼續(xù)狀態(tài)5</p><p>  CPL LED_G2 ;南北綠燈閃</p><p>  MOV R4,#4 ;閃爍200MS</p><p&

42、gt;  DJNZ R2,WAIT5 ;判斷1S到否?未到繼續(xù)狀態(tài)5</p><p>  MOV R2,#5 ;置100MS計時初值</p><p>  DEC SECOND1 ;東西路口顯示時間減1S</p><p>  DEC SECOND2 ;南北路口顯示時間減1S</p><p>

43、;  LCALL DISPLAY </p><p>  DJNZ R3,WAIT5 ;狀態(tài)5維持3S</p><p>  MOV R2,#20 ;置50MS計數(shù)初值 </p><p>  MOV R3,#2 ;紅燈閃2S</p><p>  MOV SECOND1,#2 ;東西路口

44、計時顯示初值2S</p><p>  MOV SECOND2,#2 ;南北路口計時顯示初值2S</p><p>  LCALL DISPLAY</p><p>  WAIT6: LCALL STATE6 ;調(diào)用狀態(tài)6</p><p>  JNB TF0,WAIT6 ;查詢100MS到否</p>

45、<p><b>  CLR TF0</b></p><p>  MOV TH0,#3CH ;恢復T0定時初值100MS </p><p>  MOV TL0,#0B0H </p><p>  DJNZ R2,WAIT6 ;判斷1S到否 未到繼續(xù)狀態(tài)6</p><p>  

46、MOV R2,#20H ;置100MS計數(shù)初值</p><p>  DEC SECOND1 ;東西路口顯示時間減1S</p><p>  DEC SECOND2 ;南北路口顯示時間減1S</p><p>  LCALL DISPLAY</p><p>  DJNZ R3,WAIT6 ;狀態(tài)6

47、維持2S</p><p>  LJMP LOOP ;大循環(huán)</p><p>  STATE1: ;狀態(tài)1</p><p>  SETB LED_G1 ;東西路口綠燈亮</p><p>  CLR LED_Y1</p><p>  CL

48、R LED_R1</p><p>  CLR LED_G2</p><p>  CLR LED_Y2</p><p>  SETB LED_R2 ;南北路口紅燈亮</p><p><b>  RET</b></p><p>  STATE2:

49、 ;狀態(tài)2</p><p>  CLR LED_Y1</p><p>  CLR LED_R1</p><p>  CLR LED_G2</p><p>  CLR LED_Y2</p><p>  SETB LED_R2 ;南北路口紅燈亮</p><p>

50、<b>  RET</b></p><p>  STATE3: ;狀態(tài)3</p><p>  CLR LED_G1</p><p>  CLR LED_R1</p><p>  CLR LED_G2</p><p>  CLR LED_Y2&l

51、t;/p><p>  SETB LED_R2 ;南北路口紅燈亮</p><p>  SETB LED_Y1 ;東西路口綠燈亮</p><p><b>  RET </b></p><p>  STATE4: ;狀態(tài)4</p><p> 

52、 CLR LED_G1</p><p>  CLR LED_Y1</p><p>  SETB LED_R1 ;東西路口紅燈亮</p><p>  SETB LED_G2 ;南北路口紅燈亮</p><p>  CLR LED_Y2 </p><p>  CLR LED_R2&

53、lt;/p><p><b>  RET </b></p><p>  STATE5: ;狀態(tài)5</p><p>  CLR LED_G1</p><p>  CLR LED_Y1</p><p>  SETB LED_R1 ;東西路口紅燈

54、亮</p><p>  CLR LED_Y2</p><p>  CLR LED_R2</p><p><b>  RET</b></p><p>  STATE6: ;狀態(tài)6</p><p>  CLR LED_G1</p><

55、;p>  CLR LED_Y1</p><p>  SETB LED_R1 ;東西路口紅燈亮</p><p>  CLR LED_G2</p><p>  CLR LED_R2</p><p>  SETB LED_Y2 ;南北路口黃燈亮</p><p><b>

56、  RET</b></p><p>  DISPLAY: ;數(shù)碼顯示</p><p>  MOV A,SECOND1 ;東西路口計時寄存器</p><p>  MOV B,#10 ;十六進制數(shù)拆成兩個十進制數(shù)</p><p><b>  DIV AB&l

57、t;/b></p><p>  MOV DBUF+3,A</p><p><b>  MOV A,B</b></p><p>  MOV DBUF+2,A</p><p>  MOV A,SECOND2</p><p>  MOV B,#10</p><

58、;p><b>  DIV AB</b></p><p>  MOV DBUF+1,A</p><p><b>  MOV A,B</b></p><p>  MOV DBUF,A</p><p>  MOV R0,#DBUF</p><p>  MO

59、V R1,#TEMP</p><p>  MOV R7,#4</p><p>  DP10: MOV DPTR,#LEDMAP</p><p>  MOV A,@R0</p><p>  MOVC A,@A+DPTR</p><p>  MOV @R1,A</p><

60、;p><b>  INC R0</b></p><p><b>  INC R1</b></p><p>  DJNZ R7,DP10</p><p>  MOV R0,#TEMP</p><p>  MOV R1,#4</p><p>  DP12:

61、 MOV R7,#8</p><p>  MOV A,@R0</p><p>  DP13: RLC A</p><p>  MOV P3.0,C</p><p>  CLR P3.1</p><p>  SETB P3.1</p><p>  DJ

62、NZ R7,DP13</p><p><b>  INC R0</b></p><p>  DJNZ R1,DP12</p><p><b>  RET</b></p><p><b>  LEDMAP:</b></p><p>  DB

63、3FH,06H,5BH,4FH,66H,6DH ;0,1,2,3,4,5</p><p>  DB 7DH,07H,7FH,6FH,77H,7CH ;6,7,8,9,a,b</p><p>  DB 58H,5EH,7BH,0,40H ;s,d,e,f,,-</p><p><b>  END</b></p&

溫馨提示

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

評論

0/150

提交評論