版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、基于單片機的交通信號燈模擬系統(tǒng)設計主要內容:利用單片機中的定時器、io接口、中斷系統(tǒng)等資源,設計一個十字路口交通信號燈的控制模擬系統(tǒng)。基本要求:(1)利用單片機的定時器定時,令十字路口的紅綠燈交替點亮和熄滅。 (2)可通過按鍵對紅綠燈點亮和熄滅時間進行調整及設置。(3)能對紅綠燈點亮和熄滅時間進行倒計時時間顯示。提高部分:(4)可進行緊急或特殊情況的人工處理控制。(5)有內部24小時鐘,可根據(jù)時間表對對紅綠燈點亮和熄滅時間進行自動調整。(如高峰期:7:30-8:30,17:00-18:30或夜間時段紅綠燈主次干道時長比等)。(6)可根據(jù)交通流量自動調整對紅綠燈點亮和熄滅時間。程序:z8279
2、equ 0ff82h ;8279 狀態(tài)/命令口地址d8279 equ 0ff80h ;8279 數(shù)據(jù)口地址ledmod equ 00h ;左邊輸入八位字符顯示 ;外部譯碼鍵掃描方式,雙鍵互鎖ledfeq equ 2fh ;掃描速率ledcls equ 0c1h ;清除顯示ramledwr0 equ 80h ;設定的將要寫入的顯示ram地址readkb equ 40h ;讀fifo ram 地址0 的命令字;-org 0000hljmp start org 0003h ljmp emergency org 000bh ;定時器中斷的入口地址 ljmp counter org 0040hstart
3、: mov sp,#60h lcall init8279 ;初始化 movtmod,#01h movtl0,#056h ;50ms時間常數(shù) movth0,#4ch movr2,#20 ;設置循環(huán)次數(shù)20次,定時1s mov r3,#1 mov 20h,#5mov 21h,#2 mov r6,#06h ;時 mov r1,#59h ;分 mov r0,#45h ;秒 mov r7,#00h ;交通燈狀態(tài)選擇 setb et0 ;允許定時器中斷, setb tr0 ;啟動t0 setb ex0 ;允許外部中斷中斷 setb it0 ;外部中斷為電平觸發(fā)方式 setb ea ;開cpu開中斷 ;-w
4、ait: lcall getkey ;讀鍵盤 cjne a,#0ffh,cont ;判斷是否有鍵輸入 mov a,b cjne a,#3ch,key_b ;輸入鍵是'c',轉clear_t lcall clear_tkey_b: cjne a,#3bh,key_a ;輸入鍵是'b',轉set_t lcall set_t key_a: ;輸入鍵是'a',轉start_t cjne a,#3ah,key_e lcall start_tkey_e: ;輸入鍵是'e',進行高峰處理,調整時間 cjne a,#3eh,key_f mov 2
5、0h,#10 ;紅綠燈時間為10s key_f: cjne a,#3fh,key_d ;輸入是'f',進行低峰處理,調整時間mov 20h,#3key_d: cjne a,#3dh,cont ;輸入是'd',進行常態(tài)處理,調整時間mov 20h,#5cont: lcall display ;顯示時間 sjmp wait ;循環(huán)clear_t: ;時間清零 clr tr0 mov r3,#0h mov r6,#0h ;時 mov r1,#0h ;分 mov r0,#0h ;秒 lcall display retstart_t: ;電子鐘計時子程序 setb tr0
6、 retset_t: ;設置初值子程序 clr tr0 ;關計數(shù)器 mov r4,#1 lcall getword ;讀秒數(shù) cjne a,#0ffh,invalid ;判斷輸入合法性 mov a,b add a,#156 jc invalid ;判斷輸入秒值<100 mov a,b cjne r7,#01h,t1 ;若為狀態(tài)1,保存輸入值 mov 20h,a mov r3,20h lcall display t1: cjne r7,#02h,t2 ;若為狀態(tài)2,保存輸入值 mov 21h,a mov r3,21h lcall displayt2: cjne r7,#03h,t3 ;若為
7、狀態(tài)3,保存輸入值 mov 20h,a mov r3,20h lcall displayt3: cjne r7,#00h,t4 ;若為狀態(tài)4,保存輸入值 mov 21h,a mov r3,21h lcall displayt4: setb tr0retinvalid: lcall clear_t ;時間清零 ;-getword: ;讀數(shù)子程序 wkey1: lcall getkey ;讀鍵盤 cjne a,#0ffh,wkey1;無鍵輸入,則再讀 mov a,b add a,#0c6h jc error1 ;判斷輸入是否大于 mov a,b subb a,#30h jc error1 ;判斷輸
8、入是否小于 mov r5,a lcall disled ;顯示輸入的字符 mov b,#10 mul ab push acc ;保存輸入的值 wkey2: lcall getkey ;讀鍵盤 cjne a,#0ffh,wkey2;無鍵輸入則再讀 mov a,b add a,#0c6h ;判斷輸入是否大于 jc error2 mov a,b subb a,#30h ;判斷輸入是否小于 jc error2 dec r4 mov r5,a lcall disled ;顯示輸入的字符 mov b,a pop acc add a,b mov b,a ;把得到的值存在b mov a,#0ffh ;置合法輸
9、入標志 ajmp keyokerror2: pop accerror1: mov a,#0 ;置非法輸入標志keyok: ret ;-;定時器的中斷服務程序counter: ;int_t0中斷服務子程序 push acc ;保護現(xiàn)場 push psw clrtr0 movtl0,#056h ;重新設置初值movth0,#4chlcall display ;1s時間到,顯示當前倒計時的時間djnz r2,return1mov r2,#20hcjne r0,#59h,second;判斷秒=59 mov r0,#99h cjne r1,#59h,minute;判斷分=59 mov r1,#99h c
10、jne r6,#23h,hour ;判斷時=23 mov r6,#99hhour: mov a,r6 add a,#1 ;時加1 da a mov r6,aminute: mov a,r1 add a,#1 ;分加1 da a mov r1,asecond: mov a,r0 add a,#1 ;秒加1 da a mov r0,a cjne r6,#5h,turn ljmp turnturn: lcall display1 mov a,r7 ;顯示交通燈的狀態(tài)subb a,#02hjnc l3 cjne r7,#00h,l2 ;通過標志位來判斷交通燈當前的狀態(tài) djnz r3,return c
11、jne r6,#5h,sh mov 20h,#10 mov 21h,#3 sh: jc sh1mov 20h,#10mov 21h,#3cjne r6,#7h,sh1mov 20h,#5mov 21h,#2sh1: jc sh2mov 20h,#5mov 21h,#2sh2: mov r3,20h mov dptr,#8300h ;南北綠燈,東西紅燈 mov a,#96h movx dptr,a mov r7,#01h ;設置交通燈狀態(tài)標志為下一個狀態(tài) sjmp returnreturn1:ljmp returnl2: djnz r3,return mov r3,21h mov dptr,#8
12、300h ;南北黃燈,東西紅燈 mov a,#06h movx dptr,a mov r7,#02h sjmp return l3: cjne r7,#02h,l4 djnz r3,return mov r3,20h mov dptr,#8300h ;南北紅燈,東西綠燈 mov a,#69h movx dptr,a mov r7,#03h sjmp return l4: djnz r3,return mov r3,21h mov dptr,#8300h ;南北紅燈,東西黃燈 mov a,#09h movx dptr,a mov r7,#00h return: setb tr0 pop psw
13、;恢復現(xiàn)場 pop acc reti;-emergency: push psw ;保護現(xiàn)場 push acc mov dptr,#8300h mov a,#0fh ;南北,東西都亮紅燈 movx dptr,a mov r3,#10 lcall display setb tr0 ;啟動定時器 pop acc ;恢復現(xiàn)場 pop psw reti;-init8279: ;8279初始化子程序 push dph ;保存現(xiàn)場 push dpl push acc lcall delay ;延時 mov dptr ,#z8279 mov a,#ledmod ;置工作方式 movx dptr,a mov a
14、,#ledfeq ;置鍵盤掃描速率 movx dptr,a mov a,#ledcls ;清除led 顯示 movx dptr,a pop acc ;恢復現(xiàn)場 pop dpl pop dph ret;-getkey: ;讀取鍵盤子程序 ;輸入: 無; 輸出: b: 讀到的鍵碼a: 按鍵的標志 push dph ;保存現(xiàn)場 push dpl push psw mov dptr,#z8279 movx a,dptr ;讀狀態(tài) anl a,#07h ;屏蔽d7-d3 jnz getval ;判斷是否有鍵輸入 mov a,#0h ;置標志(無鍵輸入) sjmp recovergetval: mov a
15、,#readkb ;讀fifo ram 命令 movx dptr,a mov dptr,#d8279 movx a,dptr ;讀鍵 anl a,#3fh ;屏蔽shift 和ctrl 鍵 mov dptr,#keycode;鍵碼表起始地址 movc a,a+dptr ;查表 mov b,a ;置返回鍵值 mov a,#0ffh ;置標志(有鍵輸入)recover: pop psw ;恢復現(xiàn)場 pop dpl pop dph ret;-disled: ;顯示字符子程序 ;輸入: r4,位置r5,值 push dph ;保存現(xiàn)場 push dpl push acc mov a,#ledwr0 ;
16、置顯示起始地址 add a,r4 ;加位置偏移量 mov dptr,#z8279 movx dptr,a ;設定顯示位置 mov dptr,#ledseg ;置顯示常數(shù)表起始位置 mov a,r5 movc a,a+dptr ;查表 mov dptr,#d8279 movx dptr,a ;顯示數(shù)據(jù) pop acc ;恢復現(xiàn)場 pop dpl pop dph ret;-delay: ;延時子程序 push 0 ;保存現(xiàn)場 push 1 mov 0,#0hdelay1: mov 1,#0h djnz 1,$ djnz 0,delay1 pop 1 ;恢復現(xiàn)場 pop 0 ret;-display
17、1: mov a,r6 anl a,#0fh add a,#10h mov r5,a mov r4,#6 lcall disled ;顯示小時低位 mov a,r6 swap a anl a,#0fh mov r5,a mov r4,#7 lcall disled ;顯示小時高位 mov a,r1 anl a,#0fh add a,#10h mov r5,a mov r4,#4 lcall disled ;顯示分鐘低位 mov a,r1 swap a anl a,#0fh mov r5,a mov r4,#5 lcall disled ;顯示分鐘高位 mov a,r0 anl a,#0fh a
18、dd a,#10h mov r5,a mov r4,#2 lcall disled ;顯示秒低位 mov a,r0 swap a anl a,#0fh mov r5,a mov r4,#3 lcall disled ;顯示秒高位 retdisplay: mov a,r3 mov b,#10 div ab mov r5,b mov r4,#0 lcall disled ;顯示秒低位 mov r5,a mov r4,#1 lcall disled ;顯示秒高位 ret;- ;led顯示常數(shù)表ledseg: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h ;'0,1,2,3,4,5,6,7' db 7fh,6fh,77h,7ch,39h,5eh,79h,71h ;'8,9,a,b,c,d,e,f' db 0bfh,86h,0dbh,0cfh,0e6h,0edh,0fdh,087h ;'0.,1.,2.,3.,4.,5
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 線上課程設計 動畫
- 藥學課程設計指南
- 機設課程設計的模板
- 網(wǎng)絡服務器配置課程設計
- 捅馬蜂窩課程設計
- 智能可穿戴手表課程設計
- 2024年職業(yè)生涯規(guī)劃教案篇
- 藥品檢驗類課程設計論文
- 2024年移動智慧家庭工程師(高級)資格認證考試題庫-上(選擇題)
- 物流運輸行業(yè)營銷工作總結
- 2024年度陶瓷產品代理銷售與品牌戰(zhàn)略合作協(xié)議3篇
- 中國農業(yè)銀行信用借款合同
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應用實踐指導材料之9:“5領導作用-5.3創(chuàng)新戰(zhàn)略”(雷澤佳編制-2025B0)
- 2024版旅游景區(qū)旅游巴士租賃合同3篇
- LINUX網(wǎng)絡操作系統(tǒng)知到智慧樹章節(jié)測試課后答案2024年秋湖北交通職業(yè)技術學院
- 河北省邯鄲市2023-2024學年高一上學期期末質量檢測地理試題 附答案
- 醫(yī)療機構競業(yè)限制協(xié)議
- 2024年度物業(yè)管理公司員工獎懲制度3篇
- 2024年7月國家開放大學法學本科《知識產權法》期末考試試題及答案
- 2024年河南省公務員錄用考試《行測》試題及答案解析
- (2024年)剪映入門教程課件
評論
0/150
提交評論