版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 交通燈設計報告</b></p><p><b> 設計任務</b></p><p> 編寫一個交通燈控制程序,實現(xiàn)東西路口與南北路口狀態(tài)燈的轉換和緊急處理。使用LED顯示單元的兩組LED數(shù)碼管D0-D7、D8-D15分別模擬十字路口的兩組交通燈。交通燈的變化規(guī)律要求:</p><p>
2、南北綠燈,東西紅燈同時亮20秒,且數(shù)碼管20秒倒計時顯示。</p><p> 南北黃燈閃爍5秒,同時東西路紅燈繼續(xù)亮,且數(shù)碼管5秒倒計時顯示。</p><p> 南北路紅燈,東西路綠燈同時亮20秒,且數(shù)碼管20秒倒計時顯示。</p><p> 南北路紅燈繼續(xù)亮,同時東西路黃燈閃爍5秒,且數(shù)碼管5秒倒計時顯示。</p><p><b
3、> 轉①重復</b></p><p> 按“東西緊急鍵”,則東西方向綠燈,南北方向紅燈;再次按“東西緊急鍵”,解除東西緊急通行狀態(tài)。</p><p> 按“南北緊急鍵”,則南北方向綠燈,東西方向紅燈;再次按“南北緊急鍵”,解除南北緊急通行狀態(tài)。</p><p> 按“夜間處理鍵”,東西南北方向黃燈閃爍,直到再一次按下此鍵為止。</p&
4、gt;<p><b> 設計目的</b></p><p> 通過可編程并行接口芯片8255A和可編程定時器/計數(shù)器芯片8253實現(xiàn)十字路口交通燈的模擬控制。</p><p> 進一步掌握并行接口芯片8255A應用。</p><p> 掌握通過8254實現(xiàn)準確頂事的方法。</p><p><b&
5、gt; 課程設計環(huán)境</b></p><p> TDN-CM+計算機組成原理教學實驗系統(tǒng)一臺,計算機一臺,排線若干。</p><p><b> 硬件和軟件設計</b></p><p> 硬件設計框圖及連線/接圖:</p><p><b> 設計思想:</b></p>
6、<p> 通過8253計數(shù),輸入始終脈沖為1KHZ,用方式0計滿1000,則送輸出信號到8255的C0,此時,令計數(shù)值CX減1(CX計數(shù)不為零)。8255的A口PA7-PA0輸出控制二極管即交通燈的亮滅;8255的B口PB7-PB0輸出控制數(shù)碼管的顯示;8255的C口高四位輸出,低四位輸入,PC4和PC5控制數(shù)碼管使兩位十進制數(shù)同時顯示,PC3、PC2和PC1分別連接K3、K2和K1,分別代表東西緊急鍵、南北緊急鍵和夜間
7、緊急鍵。紅綠燈轉換中檢測PC3~PC1的狀態(tài),判斷是否有緊急鍵按下。在黃燈顯示的時候,通過判斷使黃燈亮時滅,滅時亮,以此設置黃燈閃爍。</p><p><b> 軟件流程圖:</b></p><p><b> Y</b></p><p><b> N</b></p><p&g
8、t;<b> N</b></p><p><b> Y</b></p><p><b> Y</b></p><p><b> N</b></p><p><b> N</b></p><p><
9、;b> Y</b></p><p><b> N</b></p><p><b> Y</b></p><p><b> 軟件清單:</b></p><p> MY8255_A EQU 1400H ;8255連接端口IOY0</p&g
10、t;<p> MY8255_B EQU 1401H</p><p> MY8255_C EQU 1402H</p><p> MY8255_MODE EQU 1403H</p><p> MY8254_COUNT0 EQU 1440H ;8254連接端口IOY2</p><p> MY8254_MO
11、DE EQU 1443H </p><p> DATA SEGMENT</p><p> LEDDB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;數(shù)碼管七段代碼表</p><p><b> DATA ENDS</b></p><p> CODE SEGMENT<
12、/p><p> ASSUME CS:CODE,DS:DATA</p><p> START:MOV AX,DATA</p><p><b> MOV DS,AX</b></p><p> MOV DX,MY8255_MODE;8255初始化,連接端口IOY0</p><p> MOV AL,
13、10000001B ;A口輸出接LED,B口輸出接數(shù)碼管,C0~C3輸入,C4~C7輸出</p><p><b> OUT DX,AL</b></p><p><b> MOV CX,25</b></p><p> A1: MOV DX,MY8255_A ;8255的A口接LED()</p>
14、<p> MOV AL,01111011B ;東西紅,南北綠</p><p> OUT DX,AL ;將燈狀態(tài)傳送給LED顯示</p><p> CALL INITIAL_8254</p><p> LOOP2:MOV AH,0BH ;判斷有無鍵按下 </p><p><
15、;b> INT 21H</b></p><p> CMP AL,0 </p><p> JNZ EXIT0 ;有鍵入則返回DOS </p><p><b> JMP Y1</b></p><p> EXIT0:MOV AH,4CH</p>
16、<p> INT 21H </p><p> Y1: MOV DX,MY8255_C</p><p><b> IN AL,DX</b></p><p> TEST AL,00001110B ;檢測是否有緊急鍵按下</p><p> JZ L1 </p
17、><p> CALL EMERGECY ;有緊急鍵則轉到緊急鍵處理</p><p><b> JMP L2</b></p><p> L1: CALL DISP</p><p> L2: MOV DX,MY8255_C ;檢測1s是否計完</p><p><b
18、> IN AL,DX</b></p><p> TEST AL,01H</p><p> JE LOOP2 </p><p><b> DEC CX</b></p><p><b> CMP CX,5</b></p><p><b
19、> JA A1</b></p><p><b> JMP A2</b></p><p> A2: MOV DX,MY8255_A ;東西紅,南北黃 </p><p> MOV AL,01111100B</p><p><b> OUT DX,AL</b>&l
20、t;/p><p> CALL INITIAL_8254</p><p> LOOP4:MOV AH,0BH ;判斷有無鍵按下 </p><p><b> INT 21H</b></p><p> CMP AL,0 </p><p> JN
21、Z EXIT1 ;有鍵入則返回DOS </p><p><b> JMP Y2</b></p><p> EXIT1:MOV AH,4CH</p><p> INT 21H </p><p> Y2: MOV DX,MY8255_C</p><p>
22、;<b> IN AL,DX</b></p><p> TEST AL,00001110B ;檢測是否有緊急鍵按下</p><p> JZ L3 </p><p> CALL EMERGECY ;有緊急鍵則轉到緊急鍵處理</p><p><b> JMP L4</b&
23、gt;</p><p> L3: CALL DISP</p><p> L4: MOV DX,MY8255_C ;檢測1s是否計完</p><p><b> IN AL,DX</b></p><p> TEST AL,01H</p><p> JE LOOP4
24、 ;若1s沒計數(shù)完,繼續(xù) </p><p><b> DEC CX</b></p><p><b> CMP CX,0</b></p><p><b> JE P</b></p><p> JMP A2 ;20s或5s計數(shù)完全?若沒計數(shù)完,繼續(xù)</p
25、><p> P: MOV CX,25</p><p><b> JMP A3</b></p><p> A3: MOV DX,MY8255_A ;東西綠,南北紅 </p><p> MOV AL,10110111B</p><p><b> OUT DX,AL<
26、/b></p><p> CALL INITIAL_8254</p><p> LOOP5:MOV AH,0BH ;判斷有無鍵按下 </p><p><b> INT 21H</b></p><p> CMP AL,0 </p><p
27、> JNZ EXIT2 ;有鍵入則返回DOS </p><p><b> JMP Y3</b></p><p> EXIT2:MOV AH,4CH</p><p> INT 21H </p><p> Y3: MOV DX,MY8255_C</p>
28、<p><b> IN AL,DX</b></p><p> TEST AL,00001110B ;檢測是否有緊急鍵按下</p><p> JZ L6 </p><p> CALL EMERGECY ;有緊急鍵則轉到緊急鍵處理</p><p><b> JM
29、P L7</b></p><p> L6: CALL DISP</p><p> L7: MOV DX,MY8255_C ;檢測1s是否計完</p><p><b> IN AL,DX</b></p><p> TEST AL,01H</p><p> JE LOO
30、P5 </p><p><b> DEC CX</b></p><p><b> CMP CX,5</b></p><p><b> JA A3</b></p><p><b> JMP A4</b></p><p
31、> A4:MOV DX,MY8255_A ;東西黃,南北紅 </p><p> MOV AL,11000111B</p><p><b> OUT DX,AL</b></p><p> CALL INITIAL_8254</p><p> LOOP6:MOV AH,0BH
32、 ;判斷有無鍵按下 </p><p><b> INT 21H</b></p><p> CMP AL,0 </p><p> JNZ EXIT3 ;有鍵入則返回DOS </p><p><b> JMP Y4</b></p><
33、;p> EXIT3:MOV AH,4CH</p><p><b> INT 21H </b></p><p> Y4: MOV DX,MY8255_C</p><p><b> IN AL,DX</b></p><p> TEST AL,00001110B ;檢測是否有緊急鍵按
34、下</p><p> JZ L8 </p><p> CALL EMERGECY ;有緊急鍵則轉到緊急鍵處理</p><p><b> JMP L9</b></p><p> L8: CALL DISP</p><p> L9: MOV DX,MY8255_C
35、 ;檢測1s是否計完</p><p><b> IN AL,DX</b></p><p> TEST AL,01H</p><p> JE LOOP6 ;若1s沒計數(shù)完,繼續(xù) </p><p><b> DEC CX</b></p>
36、<p><b> CMP CX,0</b></p><p><b> JE PP</b></p><p> JMP A4 ;20s或5s計數(shù)完全?若沒計數(shù)完,繼續(xù)</p><p><b> PP:</b></p><p> MOV AH,0BH
37、 ;判斷有無鍵按下 </p><p><b> INT 21H</b></p><p> CMP AL,0 </p><p> JNZ EXIT ;有鍵入則返回DOS</p><p><b> JMP START</b></
38、p><p> EXIT:MOV AH,4CH</p><p> INT 21H </p><p> ;**------------------------------------ **</p><p> INITIAL_8254 PROC ;8254初始化,1s</p><p&
39、gt;<b> PUSH AX</b></p><p><b> PUSH DX</b></p><p> MOV DX,MY8254_MODE ;初始化,計數(shù)器0工作在方式0,先寫低8位,再寫高8位,BCD方式計數(shù)</p><p> MOV AL,00110001B</p><p>&
40、lt;b> OUT DX,AL</b></p><p> MOV DX,MY8254_COUNT0 </p><p> MOV AL,00H ;寫低8位</p><p><b> OUT DX,AL</b></p><p> MOV AL,10H
41、 ;寫高8位</p><p><b> OUT DX,AL</b></p><p><b> POP DX</b></p><p><b> POP AX</b></p><p><b> RET</b></p>&l
42、t;p> INITIAL_8254 ENDP </p><p> ;**---------------------------------</p><p> INITIAL2_8254 PROC ;8254初始化,0.5s</p><p><b> PUSH AX</b></p>
43、<p><b> PUSH DX</b></p><p> MOV DX,MY8254_MODE ;初始化,計數(shù)器0工作在方式0,先寫低8位,再寫高8位,BCD方式計數(shù)</p><p> MOV AL,00110001B</p><p><b> OUT DX,AL</b></p>
44、;<p> MOV DX,MY8254_COUNT0 </p><p> MOV AL,00H ;寫低8位</p><p><b> OUT DX,AL</b></p><p> MOV AL,05H ;寫高8位</p><
45、;p><b> OUT DX,AL</b></p><p><b> POP DX</b></p><p><b> POP AX</b></p><p><b> RET</b></p><p> INITIAL2_8254 ENDP&l
46、t;/p><p> ;**----------------------------------- ---**</p><p> DISP PROC ;數(shù)碼管顯示</p><p><b> PUSH AX</b></p><p><b> PUSH BX</b
47、></p><p><b> PUSH DX</b></p><p><b> PUSH CX</b></p><p><b> DEC CX</b></p><p> MOV DX,MY8255_C;將CL中16進制數(shù)轉化為十進制數(shù)</p>&l
48、t;p> MOV AL,11101111B </p><p><b> OUT DX,AL</b></p><p><b> MOV AX,CX</b></p><p> MOV CL,0AH</p><p><b> DIV CL</b></p>
49、<p><b> PUSH AX</b></p><p> MOV BX,OFFSET LED</p><p> XLAT ;顯示十位碼</p><p> MOV DX,MY8255_B;將AL中8位碼輸出到B口,給LED顯示器</p><p> OUT D
50、X,AL</p><p> MOV CX,0FFFFH ;延時</p><p><b> DELAY:NOP</b></p><p> LOOP DELAY</p><p> MOV DX,MY8255_C</p><p> MOV AL,11011111B
51、 </p><p><b> OUT DX,AL</b></p><p><b> POP AX</b></p><p><b> MOV AL,AH</b></p><p> MOV BX,OFFSET LED</p><p> XLAT;
52、顯示個位碼</p><p> MOV DX,MY8255_B ;將AL中8位碼輸出到B口,給LED顯示器</p><p> OUT DX,AL</p><p><b> POP CX</b></p><p><b> POP DX</b></p><p><b
53、> POP BX</b></p><p><b> POP AX</b></p><p><b> RET</b></p><p> DISP ENDP </p><p> ;**------------------------------------------
54、 **</p><p> EMERGECY PROC ;緊急鍵處理</p><p><b> PUSH AX</b></p><p><b> PUSH DX</b></p><p><b> PUSH CX</b></p>
55、;<p> MOV DX,MY8255_C ;從8255的C口讀出緊急鍵狀態(tài)</p><p><b> IN AL,DX</b></p><p> TEST AL,00001000B ;若為東西緊急,則轉EW</p><p><b> JNZ EW</b></p><p>
56、TEST AL,00000100B ;若為南北緊急,則轉SN</p><p><b> JNZ SN</b></p><p> TEST AL,00000010B ;若為夜間緊急,則轉NIGHT</p><p><b> JNZ NIGHT</b></p><p><b> JMP
57、 QUIT</b></p><p> EW: MOV DX,MY8255_A ;東西緊急處理,東西綠,南北紅</p><p> MOV AL,10110111B</p><p><b> OUT DX,AL</b></p><p> MOV DX,MY8255_B</p><p&g
58、t; MOV AL,11111111B</p><p><b> OUT DX,AL</b></p><p><b> JMP QUIT</b></p><p> SN: MOV DX,MY8255_A;南北緊急處理,東西紅,南北綠</p><p> MOV AL,01111011B<
59、;/p><p><b> OUT DX,AL</b></p><p> MOV DX,MY8255_B</p><p> MOV AL,11111111B</p><p><b> OUT DX,AL</b></p><p><b> JMP QUIT<
60、/b></p><p> NIGHT: MOV DX,MY8255_A;夜間處理,東西黃,南北黃</p><p> MOV AL,11001100B</p><p><b> OUT DX,AL</b></p><p> MOV DX,MY8255_B</p><p> MOV A
61、L,11111111B</p><p><b> OUT DX,AL</b></p><p> LL1: CALL INITIAL2_8254</p><p> LL2: MOV DX,MY8255_C ;檢測0.5s是否計完</p><p><b> IN AL,DX</b></p
62、><p> TEST AL,01H</p><p><b> JE LL2 </b></p><p> MOV DX,MY8255_A ;檢查燈的狀態(tài)</p><p><b> IN AL,DX</b></p><p> CMP AL,1100110
63、0B</p><p><b> JZ MIE5</b></p><p> MOV AL,11001100B ;若黃燈亮,則讓其滅</p><p><b> OUT DX,AL</b></p><p><b> JMP CHU5</b></p><p
64、> MIE5:MOV AL,11111111B;若黃燈滅,則讓其亮</p><p><b> OUT DX,AL</b></p><p> CHU5:MOV DX,MY8255_C;從8255的C口再次讀出緊急鍵狀態(tài)</p><p><b> IN AL,DX</b></p><p>
65、 TEST AL,00000010B;若為夜間緊急,繼續(xù)運行LL1</p><p> JNZ LL1 </p><p> QUIT: POP CX</p><p><b> POP DX</b></p><p><b> POP AX</b></p><p>
66、<b> RET</b></p><p> EMERGECY ENDP</p><p> ;**------------------------------------- -**</p><p><b> CODE ENDS</b></p><p><b> END START&
67、lt;/b></p><p> 實踐結果和結論以及問題討論</p><p> 南北綠燈,東西紅燈同時亮20秒,且數(shù)碼管20秒倒計時顯示;南北黃燈閃爍5秒,同時東西路紅燈繼續(xù)亮,且數(shù)碼管5秒倒計時顯示;南北路紅燈,東西路綠燈同時亮20秒,且數(shù)碼管20秒倒計時顯示;南北路紅燈繼續(xù)亮,同時東西路黃燈閃爍5秒,且數(shù)碼管5秒倒計時顯示;在每有緊急鍵按下時如此循環(huán)重復。當有緊急鍵按下時:按“
68、東西緊急鍵”,則東西方向綠燈,南北方向紅燈;再次按“東西緊急鍵”,解除東西緊急通行狀態(tài)。按“南北緊急鍵”,則南北方向綠燈,東西方向紅燈;再次按“南北緊急鍵”,解除南北緊急通行狀態(tài)。按“夜間處理鍵”,東西南北方向黃燈閃爍,直到再一次按下此鍵為止。</p><p><b> 課程設計心得體會</b></p><p> 1、 要設計一個具有實用功能的電路,首先
69、應該對自己要設計的電路非常清楚,比如電路要求我們達到什么功能,要運用什么器件,原理是什么等等都要很明確,然后才能根據(jù)要求來設計需要的電路。</p><p> 2、 確定要做的題目后,應聯(lián)系學過的有關單片機的知識,思考如何正確將需運用到的電路連系在一起,因為所設計的電路不可能只有一個電路。</p><p> 3、 在硬件知識搞清楚后進行程序的編寫,軟件必須配合硬件編寫,這是實驗
70、中繼硬件電路的設計后很重要的一個認識。在編寫程序時必須對各步都了解清楚,尤其是中斷的應用要很了解。</p><p> 4、 程序編寫應先畫程序流程圖以整體把握程序的運行過程,然后再根據(jù)流程圖寫出具體的程序。</p><p> 5、 程序編寫完后應該進行軟、硬件的調(diào)試,看軟、硬件能否有機地結合起來,達到設計要求。若不行則需進一步修改程序,直至達到設計要求。9、 通過這
71、次實驗使自己對單片機這門課程的知識有了更深的認識,同時讓自己重新復習了上個學期學過的知識,通過題目的設計讓自己能夠將所學到的知識運用到實際中,具有現(xiàn)實意義,同時明白自己在這門學科上的不足之處,明白應該繼續(xù)學習,才能在以后中的到更好的應用。</p><p><b> 參考資料</b></p><p> 《微型計算機技術及應用》,清華大學出版社,2008年2月第4版&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論