單片機課程設計---交通燈控制_第1頁
已閱讀1頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  摘 要</b></p><p>  本系統(tǒng)能夠真實模擬雙干線交通信號的管理。交通信號燈的控制電路中的核心是80C51單片機。系統(tǒng)設置兩組紅、黃、綠燈,并配置兩個三位LED數碼管分別顯示東西、南北方向的時間,LED數碼管使用動態(tài)顯示方式顯示倒計時間。</p><p>  硬件上由MCS51系列單片機、4×4行列式鍵盤、兩個3位L

2、ED管、74LS573芯片、排阻和若干電阻組成。LED顯示器通過P0和P2口以共陰極接法連接,P0口作字形口,輸出段碼;P2口作字位口,輸出位碼。P1口接4×4行列式鍵盤。P3口外接6個發(fā)光二極管模擬交通指示燈,采用共陽極接法,相應口線輸出高電平則“信號燈”滅,相應口線輸出低電平則“信號燈”亮。單片機通過XTAL1和XTAL2引腳外接12MHz晶振。</p><p>  軟件設計分為以下幾個模塊:<

3、;/p><p>  (1) 鍵盤管理程序(包括鍵掃描、鍵處理程序)</p><p>  (2) LED數碼管顯示程序</p><p>  (3) 控制交通燈程序</p><p>  通過動態(tài)掃描法對鍵盤按鍵進行識別,當有功能鍵按下時執(zhí)行相應的子程序。按鍵抖動會引起按鍵命令的錯誤執(zhí)行或重復執(zhí)行,為確保對鍵的一次閉合僅處理一次,采用軟件延時的辦法避開

4、抖動階段,即檢測到鍵閉合后延時5ms,只有再次檢測到按鍵閉合才轉入該鍵的處理程序。</p><p>  系統(tǒng)使用T0、T1的模式1實現(xiàn)10ms定時,T0用于白天模式,T1用于黑夜模式。在定時器中斷程序里,先進行按鍵掃描,有鍵按下則轉入相應子程序,無鍵按下時調用數碼管顯示子程序,并改變相應寄存器數值,定時1s時,令數碼管顯示時間減一,實現(xiàn)定時計數功能。</p><p>  關鍵詞:交通信號燈

5、控制,行列式鍵盤掃描,LED數碼管動態(tài)顯示,按鍵抖動</p><p><b>  目 錄</b></p><p><b>  摘 要0</b></p><p><b>  第一章 緒論1</b></p><p>  1.1 交通燈控制概述1</p>

6、<p>  1.2 主要研究工作1</p><p>  第二章 基礎知識介紹2</p><p>  2.1 主控制器AT89C522</p><p>  2.2 LED數碼管模塊3</p><p>  2.3 鍵盤模塊4</p><p>  2.4 74LS5735</p>

7、<p>  第三章 系統(tǒng)硬件電路設計6</p><p>  3.1 主控制系統(tǒng)電路7</p><p>  3.2 信號燈顯示電路8</p><p>  3.3 數碼管時間顯示電路9</p><p>  3.4 矩陣式鍵盤電路10</p><p>  第四章 電路板的制作10</p

8、><p>  4.1 設備介紹10</p><p>  4.1 制作過程10</p><p>  第五章 系統(tǒng)軟件設計11</p><p><b>  結束語20</b></p><p><b>  參考文獻21</b></p><p>&l

9、t;b>  第一章 緒論</b></p><p>  1.1 交通燈控制概述</p><p>  單片機的基本結構是將微型計算機的基本功能部件全部集成在一個半導體芯片上。單片機結構上的設計,在硬件、指令系統(tǒng)及I/O能力等方面都有獨到之處,具有較強而有效的控制功能。另一方面,單片機畢竟是一個芯片,只有外加所需的輸入、輸出設備,才可以構成實用的單片機應用系統(tǒng)[1]。<

10、;/p><p>  單片機由于體積小、功耗低、價格低廉,且具有邏輯判斷、定時計數、程序控制等多種功能,廣泛應用于智能儀表、可編程序控制器、家用電器、醫(yī)用設備、航空航天、專用設備的智能化管理及過程控制等領域[2]。</p><p>  本課程設計交通燈控制系統(tǒng)采用單片機作為主控制器,外接必要的設備,模擬十字路口的車輛及行人的交通管理,有東西、南北方向的交通指示燈及用于倒計時的數碼管,整個系統(tǒng)簡單

11、,價格低廉,并能真實模擬現(xiàn)實情況。</p><p>  1.2 主要研究工作</p><p>  1. 完成系統(tǒng)硬件電路設計</p><p>  單片機采用MCS51系列</p><p>  鍵盤為4×4行列式鍵盤,按鍵設有啟動、停止、白天、黑夜功能鍵。</p><p>  兩個3位的LED數碼管,南北方向

12、和東西方向個一個,用來顯示時間。</p><p><b>  完成系統(tǒng)軟件設計</b></p><p>  鍵盤管理程序(包括鍵掃描、鍵處理程序)。</p><p>  LED數碼管顯示程序。</p><p><b>  控制交通燈程序</b></p><p>  實現(xiàn)系統(tǒng)要

13、求的功能:</p><p>  在LED數碼管上顯示倒計時秒的時間。</p><p>  采用LED模擬信號燈,信號燈分東西、南北二組,分別有“紅”“黃”“綠”三種顏色。其工作狀態(tài)由單片機程序控制,“啟動”、“停止”按鈕分別控制信號燈的啟動和停止?!鞍滋?黑夜”開關控制信號燈白天/黑夜轉換。按下“啟動”按鈕開始工作,按下“停止”按鈕停止工作,“白天/黑夜”開關按下閉合時為黑夜工作狀態(tài),這時

14、只有黃燈閃爍,斷開時按時序控制圖工作。</p><p>  第二章 基礎知識介紹</p><p>  2.1 主控制器AT89C52</p><p>  主控制器采用MCS51系列單片機AT89C52,AT89C52是一個低電壓,高性能CMOS 8位單片機,片內含8k bytes的可反復擦寫的Flash只讀程序存儲器和256 bytes的隨機存取數據存儲器(RAM

15、),器件采用ATMEL公司的高密度、非易失性存儲技術生產,兼容標準MCS-51指令系統(tǒng),片內置通用8位中央處理器和Flash存儲單元[3]。</p><p>  MCS51單片機的內部基本結構框圖如圖2-1所示,由以下部分組成[4]:</p><p>  (1) 一個8 位的微處理器(CPU)。</p><p> ?。?) 片內數據存儲器RAM(128B),用以存放

16、可以讀寫的數據,如運算的中間結果、最終結果以及狀態(tài)標志位等。</p><p> ?。?) 片內程序存儲器ROM(4KB),用以存放已編制好的程序及程序中用到的常數。</p><p>  (4) 四個8 位并行I/O 接口P0~P3,每個口既可以用作輸入,也可以用作輸出使用。</p><p>  (5) 兩個定時器/計數器,每個定時器/計數器都可以設置成計數方式,用以

17、對外部事件進行計數,也可以設置成定時方式,并可以根據計數或定時的結果實現(xiàn)計算機控制。</p><p>  (6) 五個中斷源的中斷控制系統(tǒng),提供兩個中斷優(yōu)先級,能實現(xiàn)兩級中斷嵌套。</p><p> ?。?) 一個全雙工串行異步通信接口,用于實現(xiàn)單片機之間或單機與微機之間的串行通信。</p><p> ?。?) 片內振蕩器和時鐘產生電路,但需要外接石英晶體和微調電容

18、,最高允許振蕩頻率為12MHz。</p><p>  單片機內部各功能部件通過內部總線連接,傳送地址信息、數據信息和控制信息,各功能部件分時使用總線,即所謂的內部單總線結構。</p><p>  AT89C52與其他MCS51單片機的不同之處在于具有8KB可反復擦寫(大于1000次)Flash ROM以及3個16位可編程定時/計數器中斷??煞磸筒翆懙腇lash ROM使得單片機能反復寫入程

19、序,使用更加地方便。</p><p>  2.2 LED數碼管模塊</p><p>  LED數碼管是由若干個發(fā)光二級管組成顯示字段的顯示器件,有七段和“米”字段之分。LED數碼管有共陰極和共陽極兩種,發(fā)光二極管的陽極接在一起的稱為共陽極數碼管,陰極接在一起的稱為共陰極數碼管。一個數碼管由8個發(fā)光二極管組成,其中,7個發(fā)光二極管a~g構成字型“8”的各個筆劃,另一個dp發(fā)光二極管為小數點

20、。當某段發(fā)光二極管上施加一定的正向電壓時,該段比劃就亮;不加電壓就暗。另外,為了保護各段LED不被損壞,應該使其工作在安全電流下,故必須外加限流電阻。</p><p>  本系統(tǒng)使用三位共陰七段數碼管,其引腳如下圖所示:</p><p>  在實際應用中,LED數碼管有靜態(tài)顯示和動態(tài)顯示兩種顯示方式。</p><p>  靜態(tài)顯示方式,即七段LED數碼管在顯示某一個

21、字符時,相應的段恒定的導通或截止,直至換顯其他字符為止。</p><p>  LED 的靜態(tài)顯示雖然有編程容易、管理簡單等優(yōu)點,但是靜態(tài)顯示所要占的I/O 口資源很多,所以在顯示的LED 點較多的情況下,一般都采用動態(tài)顯示方式,即在多位七段LED 顯示中,將所有位的段選線并聯(lián)在一起,由8 個I/O 口來控制8 個段。而公共端(共陽極/共陰極)則分別由相應的I/O 口控制,以實現(xiàn)各個位的分時選通。</p>

22、;<p>  由于所有的段選線并聯(lián)到同一個I/O,由這個I/O 口來控制,因此,若是所有的4 位7 段LED 都選通的話,4 位7 段LED 將會顯示相同的字符。要使各個位的7 段LED 顯示不同的字符,就必須采用動態(tài)掃描方法來輪流點亮每一位7 段LED,即在每一瞬間只選通一位7 段LED 進行顯示單獨的字符。在此段點亮時間內,段選控制I/O 口輸出要顯示的相應字符的段選碼,而位選控制I/O 口則輸出位選信號,向要顯示的位

23、送出選通電平(共陰極則送出低電平,共陽極則送出高電平),使得該位顯示相應字符。這樣將四位7 段LED 輪流去點亮,使得每位分時顯示該位應顯示的字符。由于人眼的視覺暫留時間為0.1 秒,當每位顯示的間隔未超過33ms 時,并在顯示時保持直到下一位顯示,則由于人眼的視覺暫留效果眼睛看上去就像是4 位7 段LED 都在點亮。設計時,要注意每位顯示的間隔時間,由于一位7 段LED 的熄滅時間不能超過100ms,也就是說點亮其它位所用的時間不能超

24、過100ms,這樣當有N位的7 段LED 用來顯示時,每一位間隔的時間t 就必須符合下面的式子:</p><p>  t≦100ms/(N-1)</p><p>  比如,現(xiàn)在使用3位,也就是N=3,則由式子可以算出t≦50ms,就是每一位的間隔時間不能超過33ms。實際應用中,時間可以設得短一些,比如5ms[5]。</p><p><b>  2.3 鍵

25、盤模塊</b></p><p>  在單片機應用系統(tǒng)中,用戶要向計算機輸入數據和命令,這些任務主要由鍵盤來完成。鍵盤由若干個按鍵按一定規(guī)則組合而成,根據按鍵的識別方法分類,可分為編碼鍵盤和非編碼鍵盤,在單片機系統(tǒng)中多用非編碼鍵盤。</p><p>  鍵盤中的按鍵都是一個常開開關電路,是利用機械觸點來實現(xiàn)按鍵的閉合和釋放。由于機械觸點的彈性作用,觸點在閉合和斷開瞬間的電接觸情況

26、不穩(wěn)定,造成了電壓信號的抖動現(xiàn)象。鍵的抖動時間一般為5~10ms。這種現(xiàn)象會引起單片機對于一次鍵操作進行多次處理,因此須設法消除鍵接通或斷時的抖動現(xiàn)象。去抖動的方法有硬件和軟件兩種方法,本系統(tǒng)采用軟件延時的方法來避開抖動階段。</p><p>  采用軟件去抖動的方法是在單片機檢測到有鍵按下時執(zhí)行一個5~10ms的延時程序后再次檢查該鍵電平是否仍保持閉合狀態(tài).如保持閉合狀態(tài),則確認為有鍵按下,否則按無鍵按下處理。

27、當檢測到按鍵釋放后,也同樣要延時5~10ms,等待后沿抖動消失后才能轉入該鍵的處理程序,只有這樣才能保證當按鍵一次時,CPU僅做一次相應處理。 </p><p>  無論是編碼鍵盤還是非編碼鍵盤鍵盤都可分為獨立連接式和矩陣式兩類。獨立式鍵盤是每一個鍵對應I/O口的一根口線,各鍵是相互獨立的。獨立式按鍵雖編程簡單,但占用I/O口資源較多,不適合在按鍵較多的場合應用。矩陣式鍵盤按矩陣方式連接,每條行線與列線的交

28、叉處通過一個按鍵來連通,則只需N條行線和M條列線,即可組成N×M個鍵的鍵盤。</p><p>  對于矩陣式的非編碼鍵盤,常用的按鍵識別方法有兩種:掃描法和線翻轉法,通常采用掃描法。下面介紹一種“行掃描法”,行掃描法又稱為逐行(或列)掃描查詢法,是一種最常用的按鍵識別方法,過程如下:</p><p>  1.判斷鍵盤中有無鍵按下,將全部行線置低電平,然后檢測列線的狀態(tài)。只要有一

29、列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的鍵位于低電平線與4根行線相交叉的4個按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。 </p><p>  2.判斷閉合鍵所在的位置,在確認有鍵按下后,即可進入確定具體閉合鍵的過程。其方法是:依次將行線置為低電平,即在置某根行線為低電平時,其它線為高電平。在確定某根行線位置為低電平后,再逐行檢測各列線的電平狀態(tài)。若某列為低,則該列線與置為低電平的行線交叉處的按鍵

30、就是閉合的按鍵[6]。</p><p>  2.4 74LS573</p><p>  74LS573的原理:74LS573 的八個鎖存器都是透明的D 型鎖存器,當使能(G)為高時,Q 輸出將隨數據(D)輸入而變。當使能為低時,輸出將鎖存在已建立的數據電平上。輸出控制不影響鎖存器的內部工作,即老數據可以保持,甚至當輸出被關閉時,新的數據也可以置入。這種電路可以驅動大電容或低阻抗負載,可以

31、直接與系統(tǒng)總線接口并驅動總線,而不需要外接口。特別適用于緩沖寄存器,I/O 通道,雙向總線驅動器和工作寄存器[7]。</p><p>  74LS573的引腳功能表如下:</p><p>  第三章 系統(tǒng)硬件電路設計</p><p>  整套電路系統(tǒng)由主控制系統(tǒng)電路、信號燈顯示電路、數碼管時間顯示電路和矩陣式鍵盤電路等組成。采用LED動態(tài)掃描的交通燈控制系統(tǒng)總電路原

32、理圖和印刷電路板圖(PCB)如下所示:</p><p><b>  圖3-1</b></p><p><b>  圖3-2</b></p><p>  3.1 主控制系統(tǒng)電路</p><p>  主控制器采用MCS51系列單片機AT89C52,是一款性能穩(wěn)定的8位單片機。AT89C52單片機內部由C

33、PU、8KB的Flash ROM、256B的RAM、4個8位的I/O并行端口、一個串行口、三個16位定時/計數器及中斷系統(tǒng)等組成。AT89C52外部需接時鐘電路和復位電路,單片機才能正常工作。此外,VCC引腳需接電源,GND引腳需接地,EA/VPP引腳需接上拉電阻連接到電源。</p><p>  3.1.1 時鐘電路</p><p>  時鐘信號用來提供單片機片內各種微操作的時間基準,時鐘

34、信號通常用兩種電路形式得到:內部振蕩和外部振蕩。MCS-51單片機內部有一個用于構成振蕩器的高增益反向放大器,引腳XTALl和XTAL2分別是此放大電器的輸入端和輸出端,由于采用內部方式時,電路簡單,所得的時鐘信號比較穩(wěn)定,實際使用中常采用這種方式,如圖3-1所示。在其外接晶體振蕩器(簡稱晶振)或陶瓷諧振器就構成了內部振蕩方式,片內高增益反向放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起可構成一個自激振蕩器并產生振蕩時鐘脈沖[8]。

35、圖3-3中,外接晶體以及電容C2和C3構成并聯(lián)諧振電路,它們起穩(wěn)定振蕩頻率、快速起振的作用,其值為30pF左右,晶振頻率約為12MHz 。</p><p>  3.1.2 復位電路</p><p>  為了初始化單片機內部的某些特殊功能寄存器,必須利用復位電路,復位后可使CPU及系統(tǒng)各部件處于確定的初始狀態(tài),并從初始狀態(tài)開始正常工作。單片機的復位是靠外電路來實現(xiàn)的,在正常運行情況下,只要R

36、ST引腳上出現(xiàn)兩個機器周期時間以上的高電平,即可引起系統(tǒng)復位,但如果RST引腳上持續(xù)為高電平,單片機就處于循環(huán)復位狀態(tài)。復位后系統(tǒng)將輸入/輸出(1/0)端口寄存器置為FFH,堆棧指針SP置為07H, SBUF內置為不定值,其余的寄存器全部清0,內部RAM的狀態(tài)不受復位的影響,在系統(tǒng)上電時RAM的內容是不定的。復位操作有兩種情況,即上電復位和手動(開關)復位。本系統(tǒng)采用上電復位方式[9]。圖3-4中R1和Cl組成上電復位電路,其值R取為1

37、KΩ, C取為10pF。</p><p><b>  圖3-4</b></p><p>  3.2 信號燈顯示電路</p><p>  P3口外接6個發(fā)光二極管模擬交通指示燈,采用共陽極接法,相應口線輸出高電平則“信號燈”滅,相應口線輸出低電平則“信號燈”亮。為了保護發(fā)光二極管不被損壞,應該使其工作在安全電流下,故必須外加限流電阻,選用1k的

38、電阻,如圖3-5所示。</p><p>  3.3 數碼管時間顯示電路</p><p>  LED數碼管通過P0和P2口以共陰極接法連接,如圖3-6所示,P0作字形口,輸出段碼,故兩個數碼管的段碼線對應并聯(lián)在一起,由P0口控制數碼管的顯示。P2口作字位口,輸出位碼。其中,P2.0~P2.3分別控制兩個數碼管的個、十位顯示,以實現(xiàn)各位的分時選通。</p><p>  

39、P0口是一個8位漏極開路型雙向I/O口,在驅動NMOS或其他拉電流負載時,需外接上拉電阻,才能使該位高電平輸出有效,故電路設計時,P0口需先接一個排阻,才能再連接其他部件。</p><p>  P0口經排阻后,連接74LS573芯片,用于鎖存數碼管顯示數字的信息,再連接到兩個三位共陰數碼管。使用鎖存器的原因是:在數碼管顯示時,要維持一個數據的顯示,往往要持續(xù)的快速的刷新。在人類能夠接受的刷新頻率之內,大概每三十毫

40、秒就要刷新一次。這就大大占用了處理器的處理時間,消耗了處理器的處理能力,還浪費了處理器的功耗。鎖存器的使用可以大大的緩解處理器在這方面的壓力。當處理器把數據傳輸到鎖存器并將其鎖存后,鎖存器的輸出引腳便會一直保持數據狀態(tài)直到下一次鎖存新的數據為止。這樣在數碼管的顯示內容不變之前,處理器的處理時間和IO引腳便可以釋放??梢钥闯觯幚砥魈幚淼臅r間僅限于顯示內容發(fā)生變化的時候,這在整個顯示時間上只是非常少的一個部分。而處理器在處理完后可以有更多

41、的時間來執(zhí)行其他的任務。這就是鎖存器在數碼管顯示方面的作用:節(jié)省了寶貴的MCU時間[10]。</p><p><b>  圖 3-6</b></p><p>  3.4 矩陣式鍵盤電路</p><p>  80C51單片機的并行口P1接4×4行列式鍵盤,其中P1.0~P1.3接列線,P1.4~P1.7接行線。實際使用的功能鍵為:“A”

42、為啟動功能按鍵,“B”為停止功能按鍵,“C”為白天功能按鍵,“D”為黑夜功能按鍵。開機通電后,需按下“啟動”鍵才能進入正常工作,默認為白天工作模式,在此之后按下“停止”鍵,則數碼管和指示燈均不再顯示,只有重新按下“啟動”鍵才能重新正常工作;按下“黑夜”鍵,則由白天模式切換為黑夜模式,此時黃燈不停閃爍,再按下“白天”鍵,則切換到白天模式。</p><p>  第四章 電路板的制作</p><p&

43、gt;<b>  4.1 設備介紹</b></p><p>  電路板制作主要用的設備有:</p><p>  STR-FⅡ 多功能環(huán)保型快速制板系統(tǒng) 廠商:福建時創(chuàng)電子科技有限公司</p><p><b>  鉆孔機</b></p><p><b>  4.1 制作過程</b>

44、;</p><p>  此次制板采用曝光——顯影——蝕刻——打孔——焊接元件的方法,過程大致如下:</p><p>  真空雙面曝光,將已準備好的圖紙和線路板放到曝光機中曝光。在銅層上有一層感光材料,用曝光機將線路圖打印到感光層上。</p><p>  取出已曝光好的電路板放到顯影的容器中進行顯影,該過程中由于時間把握不是很好,導致顯影過度,部分銅上有小的孔洞,但并

45、不影響電路板的使用。</p><p>  先將顯影過的電路板用清水沖洗干凈,再放到蝕刻的容器中進行蝕刻,雙手控制電路板上下輕微振動有助于加快蝕刻的速度。</p><p>  使用打孔機進行打孔。</p><p>  焊接元件,先焊小的元件,再焊大的元件。焊接時,先用焊槍對焊盤預熱幾秒鐘,再送焊絲進行焊接,焊接好了,先移走焊絲,再移走焊槍。</p>&l

46、t;p>  第五章 系統(tǒng)軟件設計</p><p>  程序的設計說明如下:</p><p>  白天模式使用定時器T0(同時關閉定時器T1),選擇模式1,定時時間為10ms,計算可得初值為:TL0=#0F0H,TH0=#0D8H。</p><p>  黑夜模式使用定時器T1(同時關閉定時器T0),選擇模式1,定時時間為10ms,計算可得初值為:TL0=#0F0

47、H,TH0=#0D8H。</p><p>  程序中使用的寄存器含義說明:R3,用于南北方向計時;R4,用于東西方向計時;R5,用于黃燈閃爍計時1.2s;R6,用于計時1s;R7,用于延遲程序。</p><p>  系統(tǒng)的信號燈控制時序如下圖所示:</p><p><b>  綠1</b></p><p><b&g

48、t;  黃1</b></p><p><b>  紅1</b></p><p><b>  綠2</b></p><p><b>  黃2</b></p><p><b>  紅2</b></p><p>  20S

49、 6S 40S 6S </p><p>  東西線、南北線的交通指示燈狀態(tài)及相應的控制碼如下表所示:</p><p>  本程序主要分為三個部分:</p><p>  主程序:交通信號燈的控制程序,默認按白天模式運行。</p><p>  LED數碼管顯示程序:采用動態(tài)顯示模式,調用定時器T0,每10m

50、s動態(tài)顯示一次;</p><p>  鍵盤管理程序:分為鍵盤掃描程序以及鍵盤處理程序,其中,在每次動態(tài)顯示與黑夜黃燈閃爍的間隔間不斷調用鍵盤掃描程序。</p><p>  各程序的流程圖及程序代碼如下:</p><p><b>  主程序:</b></p><p>  ORG 0000H</p><

51、p>  AJMP MAIN1 ;轉主程序</p><p>  ORG 000BH</p><p>  LJMP DSHI1 ;轉定時器0服務子程序</p><p>  ORG 001BH</p><p>  LJMP DSHI2 ;轉定時器1服務子程序

52、</p><p>  ORG 0100H</p><p>  MAIN1: MOV P1,#0F7H ;按鍵掃描,有鍵按下則延時消抖</p><p><b>  MOV A,P1</b></p><p>  ORL A,#0FH</p><p><b>

53、  CPL A</b></p><p><b>  JNZ D5</b></p><p>  SJMP MAIN1</p><p>  D5: MOV R7,#20H ;消抖處理,確有鍵按下則轉判斷按鍵程序</p><p>  D6: DJNZ R7,D

54、6</p><p>  MOV P1,#0F7H</p><p><b>  MOV A,P1</b></p><p>  ORL A,#0FH</p><p><b>  CPL A</b></p><p>  JNZ PDUAN3</p><

55、p>  SJMP MAIN1</p><p>  PDUAN3: MOV P1,#0F7H ;判斷啟動鍵是否按下,是則開始工作,否則繼續(xù)掃描</p><p><b>  MOV A,P1</b></p><p>  JNB ACC.4,MAIN</p><p>  AJMP MAIN1&l

56、t;/p><p>  MAIN: MOV SP,#50H ;主程序</p><p>  MOV IE,#8AH ;允許中斷</p><p>  MOV TMOD,#11H ;設置定時方式1</p><p>  MOV TL0,#0F0H ;定時10ms</

57、p><p>  MOV TH0,#0D8H</p><p>  CLR TR1 ;關閉黑夜模式定時器</p><p>  SETB TR0 ;打開白天模式定時器</p><p>  ZTAI1: MOV R3,#20 ;東西向紅燈亮,南北向綠燈亮<

58、/p><p>  MOV R4,#26</p><p>  MOV P3,#0CFH</p><p>  ZTAI12: LCALL JPAN</p><p>  CJNE R3,#00,ZTAI12 ;是否夠20s</p><p>  ZTAI2: MOV R3,#6

59、 ;東西向紅燈亮,南北向黃燈閃</p><p>  MOV P3,#0AFH</p><p>  ZTAI21: MOV R5,#00H</p><p>  ZTAI22: LCALL JPAN</p><p>  CJNE R5,#64H,ZTAI22 ;是否夠6s</p><p&g

60、t;<b>  CPL P3.6</b></p><p>  CJNE R3,#00H,ZTAI21</p><p>  ZTAI3: MOV R3,#46 ;東西向綠燈亮,南北向紅燈亮</p><p>  MOV R4,#40</p><p>  MOV P3,#07EH&

61、lt;/p><p>  ZTAI32: LCALL JPAN</p><p>  CJNE R3,#06,ZTAI32 ;是否夠40s</p><p>  ZTAI4: MOV R4,#6 ;東西向黃燈閃,南北向紅燈亮</p><p>  MOV P3,#07DH</p&g

62、t;<p>  ZTAI41: MOV R5,#00H</p><p>  ZTAI42: LCALL JPAN</p><p>  CJNE R5,#64H,ZTAI42 ;是否夠6s</p><p><b>  CPL P3.1</b></p><p>  CJNE R4,

63、#00H,ZTAI41</p><p>  SJMP ZTAI1 ;返回,繼續(xù)執(zhí)行主程序</p><p>  2、LED數碼管顯示程序:</p><p>  DISP: MOV B,#0AH ;顯示子程序</p><p><b>  MOV A,R3</b&

64、gt;</p><p><b>  DIV AB</b></p><p>  MOV 79H,A</p><p>  MOV 7AH,B</p><p>  MOV A,79H</p><p>  MOV DPTR,#LEDMAP</p><p>  MOVC A

65、,@A+DPTR</p><p><b>  MOV P0,A</b></p><p>  MOV P2,#11110111B</p><p>  CALL DELAY</p><p>  MOV A,7AH</p><p>  MOV DPTR,#LEDMAP</p>&l

66、t;p>  MOVC A,@A+DPTR</p><p><b>  MOV P0,A</b></p><p>  MOV P2,#11111011B</p><p>  CALL DELAY</p><p>  MOV B,#0AH</p><p><b>  MOV A

67、,R4</b></p><p><b>  DIV AB</b></p><p>  MOV 79H,A</p><p>  MOV 7AH,B</p><p>  MOV A,79H</p><p>  MOV DPTR,#LEDMAP</p><p&g

68、t;  MOVC A,@A+DPTR</p><p><b>  MOV P0,A</b></p><p>  MOV P2,#11111101B</p><p>  CALL DELAY</p><p>  MOV A,7AH</p><p>  MOV DPTR,#LEDMAP<

69、/p><p>  MOVC A,@A+DPTR</p><p><b>  MOV P0,A</b></p><p>  MOV P2,#11111110B</p><p>  CALL DELAY</p><p>  MOV P2,#11111111B</p><p>&

70、lt;b>  RET</b></p><p>  DELAY: MOV R7,#0F0H ;延時子程序</p><p>  DELOOP: NOP</p><p><b>  NOP</b></p><p><b>  NOP</b></p>

71、<p>  DJNZ R7,DELOOP</p><p><b>  RET</b></p><p>  LEDMAP: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;字形碼表</p><p>  DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H</p>

72、<p><b>  END</b></p><p>  3、鍵盤管理程序: </p><p><b>  ①鍵盤處理程序:</b></p><p>  “啟動”處理程序:跳轉至主程序MAIN;</p><p><b>  “停止”處理程序:</b></p>

73、<p>  STOP: CLR TR0 ;“停止”按鍵子程序</p><p><b>  CLR TR1</b></p><p>  MOV P3,#0FFH</p><p>  MOV P0,#11111111B</p><p>  MOV P2,#11

74、111111B</p><p>  MOV P1,#0F7H</p><p>  STOP1: MOV A,P1</p><p>  ORL A,#0FH</p><p><b>  CPL A</b></p><p><b>  JNZ D3</b><

75、;/p><p>  SJMP STOP1</p><p>  D3: MOV R7,#20H</p><p>  D4: DJNZ R7,D4</p><p>  MOV P1,#0F7H</p><p><b>  MOV A,P1</b></p>&l

76、t;p>  ORL A,#0FH</p><p><b>  CPL A</b></p><p>  JNZ PDUAN2</p><p>  SJMP STOP1</p><p>  PDUAN2: MOV P1,#0F7H</p><p><b>  MOV A,P1

77、</b></p><p>  JNB ACC.4,START</p><p>  SJMP STOP1</p><p>  “白天”處理程序:跳轉至主程序MAIN;</p><p><b>  “黑夜”處理程序:</b></p><p>  NIGHT: CLR TR0

78、 ;黑夜子程序</p><p>  MOV P0,#11111111B</p><p>  MOV TL1,#0F0H</p><p>  MOV TH1,#0D8H</p><p><b>  SETB TR1</b></p><p>  MOV P3,#0

79、BDH</p><p>  NIGHT1: MOV R5,#00H</p><p>  NIGHT2: LCALL JPAN</p><p>  CJNE R5,#64H,NIGHT2</p><p><b>  CPL P3.1</b></p><p><b>  CPL P

80、3.6</b></p><p>  SJMP NIGHT1</p><p><b> ?、阪I盤掃描程序:</b></p><p>  JPAN: MOV P1,#0F7H ;鍵盤掃描子程序</p><p><b>  MOV A,P1</b>&l

81、t;/p><p>  ORL A,#0FH</p><p><b>  CPL A</b></p><p><b>  JNZ D1</b></p><p><b>  RET</b></p><p>  D1: MOV R7,#2

82、0H</p><p>  D2: DJNZ R7,D2</p><p>  MOV P1,#0F7H</p><p><b>  MOV A,P1</b></p><p>  ORL A,#0FH</p><p><b>  CPL A</b></

83、p><p>  JNZ PDUAN</p><p><b>  RET</b></p><p>  PDUAN: MOV P1,#0F7H ;判斷按鍵</p><p><b>  MOV A,P1</b></p><p>  JNB ACC.

84、4,START</p><p>  JNB ACC.5,STOP</p><p>  JNB ACC.6,DAY</p><p>  JNB ACC.7,NIGHT</p><p><b>  RET</b></p><p>  定時器中斷子程序如下:</p><p>

85、;  DSHI1: MOV TL0,#0F0H ;定時器0中斷子程序</p><p>  MOV TH0,#0D8H</p><p><b>  INC R5</b></p><p><b>  INC R6</b></p><p>  CJNE R6,#64H,DS1&

86、lt;/p><p>  MOV R6,#00H</p><p><b>  DEC R3</b></p><p><b>  DEC R4</b></p><p>  DS1: ACALL DISP ;調用顯示子程序</p><p>&l

87、t;b>  RETI</b></p><p>  DSHI2: MOV TL1,#0F0H ;定時器1中斷子程序</p><p>  MOV TH1,#0D8H</p><p><b>  INC R5</b></p><p><b>  RETI</b>

88、;</p><p><b>  參考文獻</b></p><p>  [1] 趙全利、肖興達,單片機原理及應用教程,北京:機械工業(yè)出版社,2011.3</p><p>  [2] 趙全利、肖興達,單片機原理及應用教程,北京:機械工業(yè)出版社,2011.3</p><p>  [3] 作者不詳,百度百科——AT89C52,

89、2012-2-28</p><p>  [4] 作者不詳,互動百科——8051單片機, </p><p>  [5] 作者不詳,LED顯示及動態(tài)顯示原理, </p><p>  [6] 趙全利、肖興達,單片機原理及應用教程,北京:機械工業(yè)出版社,2011.3</p><p>  [7] 作者不詳,74LS573中文資料, </p>

溫馨提示

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

評論

0/150

提交評論