交通管理系統(tǒng)的設(shè)計(jì)用計(jì)算機(jī)硬件實(shí)驗(yàn)系統(tǒng)完成



交通管理系統(tǒng)的設(shè)計(jì)(用計(jì)算機(jī)硬件實(shí)驗(yàn)系統(tǒng)完成) 1 設(shè)計(jì)的主要內(nèi)容設(shè)計(jì)編制一個(gè)十字路口交通監(jiān)督與管理系統(tǒng),用計(jì)算機(jī)硬件實(shí)驗(yàn)系統(tǒng)中的LED和開關(guān)模擬實(shí)現(xiàn)交通管理要求,基本功能描述如下:1)交通路線分為人行道、干線和支線,人行道有紅燈和綠燈,干線和支線有紅燈、黃燈和綠燈 2)人行道由一個(gè)按鍵控制,當(dāng)人按下按鍵后,在正常干線和支線的綠燈時(shí)間結(jié)束后,人行道綠燈亮,干線和支線紅燈亮,維持10秒后,人行道紅燈亮,干線和支線由以下情況決定 3)正常情況下只允許干線通車,即干線綠燈亮,支線紅燈亮 4)當(dāng)支線上有一輛及以上車輛時(shí)請?jiān)O(shè)計(jì)合理的紅黃綠燈變化規(guī)則,要求干線由綠燈變紅燈規(guī)律為:綠燈變?yōu)辄S燈,持續(xù)三秒后,變?yōu)榧t燈;支線的紅燈變?yōu)榫G燈5)若在支線的綠燈亮25秒期間干線M(大于)4輛車到,則應(yīng)允許干線車輛通過此時(shí)支線綠變?yōu)辄S燈,持續(xù)3秒后,干線由紅變?yōu)榫G燈6)當(dāng)支線綠燈亮了25秒后,支線由綠變?yōu)辄S燈,持續(xù)3秒后,變?yōu)榧t燈;干線有紅變?yōu)榫G燈,即返回正常情況,允許干線的車輛通過7)當(dāng)干線由紅燈變?yōu)榫G燈后,必須維持25秒后才能返回第三步2 任務(wù)分工 在這次課程設(shè)計(jì)過程中我們小組的分工如下:任務(wù)負(fù)責(zé)人方案設(shè)計(jì)袁 雙、李 莫主程序1(交通管理系統(tǒng))李 莫、袁 雙主程序2(交通監(jiān)督系統(tǒng))周瑜忻、王志瑜設(shè)計(jì)報(bào)告袁 雙、王志瑜程序匯總、調(diào)試周瑜忻、李 莫3 優(yōu)化功能在完成交通管理系統(tǒng)的基本功能的設(shè)計(jì)以后,我們小組通過討論,決定加入以下完善和優(yōu)化功能:1、設(shè)計(jì)了較為合理的支線紅黃綠燈變化規(guī)則,當(dāng)干線轉(zhuǎn)為支線時(shí),若支線來車,計(jì)給予支線10秒通行時(shí)間,時(shí)間到支線通行時(shí)間結(jié)束;若線持續(xù)來車,支線通行時(shí)間擴(kuò)充到10秒(倒計(jì)時(shí)),直到通行25秒,支線通行結(jié)束。
2、考慮夜間特殊時(shí)段通行,我們設(shè)計(jì)了干線和支線黃燈閃爍,人行道燈滅:表示車輛慢行,人行道注意路況小心通行3、擴(kuò)充干線、支線和人行道交通違規(guī)監(jiān)督功能:①在主干線通行的時(shí)候,判斷支線和人行道是否有人闖紅燈,如果有,亮燈警視,并記錄支干道闖紅燈車輛數(shù)量;②在支線通行的時(shí)候,判斷主干線和人行道是否有人闖紅燈,如果有,亮燈警視,并記錄主干道闖紅燈車輛數(shù)量;③在人行道通行的時(shí)候,判斷主干道和支干道是否有人闖紅燈,如果有,亮燈警視,并記錄主干道和支干道紅燈車輛數(shù)量4 操作說明 在程序開始運(yùn)行后,系統(tǒng)的初始狀態(tài)為干線正常運(yùn)行,干線綠燈亮,支線和人行道紅燈亮具體操作方式如下:(k1:特殊時(shí)段控制鍵;k2:人行道控制鍵;k3:支線來車;k4:干線來車;8個(gè)二極管代表干線、支線和人行道的紅黃綠燈;8段LED顯示到計(jì)時(shí)間) 1、初始狀態(tài)下,人行道控制鍵按k2下,則當(dāng)干線或支線運(yùn)行結(jié)束后轉(zhuǎn)為人行道通行(時(shí)間10秒),此時(shí)干線、直線紅燈亮,人行道黃燈亮 2、人行道通行結(jié)束后,自動(dòng)轉(zhuǎn)為干線通行,按下k3,代表支線來車,當(dāng)干線通行25秒結(jié)束后干線綠燈滅轉(zhuǎn)黃燈持續(xù)3秒后紅燈亮,人行道紅燈亮,支線綠燈亮。
3、當(dāng)支線通行第一個(gè)10秒內(nèi),同時(shí)k1 、k3按下代表支線又有持續(xù)來車,此時(shí)支線通行時(shí)間返回?cái)U(kuò)充到10秒,直到通行滿25秒后結(jié)束 4、按下k1代表進(jìn)入特殊時(shí)段,此時(shí)干線、支線黃燈閃爍,當(dāng)同時(shí)按下k1 k2 k3 k4代表退出特殊時(shí)段 5、監(jiān)督功能部分,當(dāng)主干道亮紅燈的時(shí)候,按下K2時(shí),支干道警示燈L2亮,按下K3時(shí),L2 L3亮;當(dāng)支干道亮紅燈的時(shí)候,按下K1時(shí),主干道警示燈L1亮,按下K3時(shí),L2 L3亮;當(dāng)人行道亮紅燈的時(shí)候,按下K1時(shí),主干道警示燈L1亮,按下K2時(shí),L2亮5 設(shè)計(jì)方案 根據(jù)設(shè)計(jì)要求,我們采用模塊化的編程思路,這樣便于分工協(xié)作,程序便于調(diào)試 1)主程序1(交通管理系統(tǒng)) 該模塊主要是用來實(shí)現(xiàn)交通管理系統(tǒng)的邏輯判斷功能,包括判斷開關(guān)、調(diào)用相應(yīng)的子程序,具體的判斷邏輯如下:首先循環(huán)判斷是否特殊時(shí)段控制鍵k1按下,若按下則調(diào)用黃燈閃爍子程序;若未按下程序自動(dòng)調(diào)用干線運(yùn)行程序,在此過程則循環(huán)掃描是否有支線和人行道控制開關(guān)按下,如沒有開關(guān)按下則循環(huán)調(diào)用干線運(yùn)行程序,如有開關(guān)按下則調(diào)用對(duì)應(yīng)的子程序程序統(tǒng)一采用8254可編程硬件延時(shí),A口作為輸出控制8段LED顯示,B口作為輸出控制二極管C口低四位作為輸入口控制開關(guān),高四位作為輸出口控制8段LED位選。
2)主程序2(交通監(jiān)督系統(tǒng))先對(duì)十字路口主干道和枝干道紅燈信號(hào)進(jìn)行判斷,如果紅燈亮?xí)r,再對(duì)主干道和枝干道闖紅燈車輛信號(hào)進(jìn)行判斷,如果有車輛闖紅燈,給與紅燈亮的警示信號(hào),并且在LED上記錄主干道和枝干道闖紅燈數(shù)量6 程序流程圖由于我們所設(shè)計(jì)的交通管理及監(jiān)督系統(tǒng)的功能模塊較多,且主程序以循環(huán)掃描支撐,主程序流程圖較為復(fù)雜,所以我們將主程序與子程序分為兩個(gè)部分繪制了程序流程圖 (1)主程序1(交通管理)流程圖所有燈滅主干道黃燈子程序人行橫道通行子程序黃燈閃爍子程序主干道黃燈子程序支路黃燈子程序K2=1?L=0?支路通行子程序主干道黃燈子程序K3=1?K1=1?支路黃燈子程序主干道黃燈子程序人行橫道通行子程主干道黃燈子程序主干道黃燈子程序人行橫道通行子程K1=1?K2=1?L=0?K2=1?K3=1?K2=1?支路通行子程序主干道通行子程序開始黃燈閃爍子程序 Y N Y Y N Y主干道綠燈,支路紅燈,人行道紅燈 N 延時(shí)1秒 N Y Y N N Y人行橫道通行子程序 Y NK2=1? N Y Y 延時(shí)1秒 N N Y(2)主程序2(交通監(jiān)督系統(tǒng))流程圖開始LED是否為A否否否否否否否是是是是亮1,2號(hào)燈是否有人闖紅燈亮2號(hào)燈,LED顯示計(jì)數(shù)是否有車闖紅燈人行道是否紅燈亮支干道是否紅燈亮亮1號(hào)燈,LED顯示計(jì)數(shù)是否有車闖紅燈主干道是否紅燈亮給SI,DI數(shù)值表地址 顯示個(gè)位個(gè)位是否為零?十位是否為零?個(gè)位減1十位減1個(gè)位加9,跳出子程序,開始個(gè)位SI=5十位DI=2顯示十位(3)干線通行子程序流程圖 N Y Y N(4)干線黃燈子程序流程圖開始LED個(gè)位賦值為3十位賦值為0延時(shí)1秒顯示十位顯示個(gè)位個(gè)位減1個(gè)位是否為0否是主干道黃燈亮子程序結(jié)束(5)支路黃燈子程序流程圖開始LED個(gè)位賦值為3十位賦值為0延時(shí)1秒顯示十位顯示個(gè)位個(gè)位減1個(gè)位是否為0否是支干道黃燈亮子程序結(jié)束(6)人行橫道通行子程序流程圖LED個(gè)位賦值為0十位賦值為1延時(shí)1秒顯示十位顯示個(gè)位十位減1,個(gè)位加9個(gè)位是否為0否是干道綠燈燈亮比較個(gè)位是否為0個(gè)位減1是否子程序結(jié)束開始7問題總結(jié)及心得體會(huì)(1)9月6日下午(閱讀設(shè)計(jì)任務(wù),理解設(shè)計(jì)要求,完成方案設(shè)計(jì)):問題:當(dāng)支線上有一輛及以上車輛時(shí)如何設(shè)計(jì)出合理的紅黃綠燈變化規(guī)則,小組討論出現(xiàn)分歧。
一種想法為當(dāng)支線只要有車來(無論車輛多少),當(dāng)主線通行時(shí)間結(jié)束,人行道無人,支線就通車25秒;另一種想法為無論支線來車多少,當(dāng)主線通行時(shí)間結(jié)束,人行道無人,支線先只給予10秒通行時(shí)間,若后續(xù)支線又有車來,則通行時(shí)間擴(kuò)充到10秒,直到支線通車25秒就結(jié)束通行,若后續(xù)支線無車倆來,則支線就只通行10秒后轉(zhuǎn)為主線通行或人行道通行方案:經(jīng)過小組討論一致認(rèn)為該問題意在設(shè)計(jì)出合理的支線通行規(guī)則,應(yīng)充分考慮合理性,若選擇第一種就有可能造成支線通行時(shí)間過長,造成交通時(shí)間浪費(fèi);而第二種想法就合理的考慮到了支線路況車輛多少的情況,合理的避免了不必要的交通時(shí)間浪費(fèi)最后一致同意第二種方案2)9月10日(優(yōu)化功能方案設(shè)計(jì))(交通監(jiān)督系統(tǒng)):問題:我們想設(shè)計(jì)一個(gè)交通違章監(jiān)督功能:記錄并顯示干線、支線和人行道上的違章交通情況,由于在設(shè)計(jì)基礎(chǔ)功能時(shí)已將實(shí)驗(yàn)板上的輸入輸出口用完,沒有多余輸出口作為交通違章信息傳輸口方案:將基礎(chǔ)功能的交通管理系統(tǒng)與優(yōu)化功能的交通監(jiān)督系統(tǒng)分別在兩塊實(shí)驗(yàn)板上實(shí)現(xiàn),并將兩塊實(shí)驗(yàn)板聯(lián)機(jī)將交通管理系統(tǒng)的干線、支線和人行道的輸出口引入到交通監(jiān)督系統(tǒng)的干線、支線和人行道信息輸入口這樣交通監(jiān)督系統(tǒng)從管理系統(tǒng)讀到實(shí)時(shí)的交通信息來判段干線、支線和人行道是否有違章情況。
3)9月13-15日(程序完成,進(jìn)行調(diào)試):問題1:第一次程序編譯鏈接都成功,調(diào)試時(shí)實(shí)驗(yàn)板完全不能顯示,不清楚差錯(cuò)出在實(shí)驗(yàn)板還是程序有問題方案:經(jīng)過大家認(rèn)真討論一致認(rèn)為實(shí)驗(yàn)板未讀入程序,說明程序輸入輸出控制字有誤,經(jīng)檢查初始化控制字有誤問題2:調(diào)試時(shí)實(shí)驗(yàn)板LED顯示亂碼且不穩(wěn)定,由于程序太長,上時(shí)間無法找出程序問題,失誤在于,我們在編完各子程序時(shí)應(yīng)分塊調(diào)試,既是排除錯(cuò)誤方案:將有LED顯示的各子程序分塊進(jìn)行調(diào)試發(fā)現(xiàn)LED的延時(shí)顯示程序有誤,改延時(shí)子程序?yàn)閼?yīng)用8254可編程硬件延時(shí) 問題3:在統(tǒng)一調(diào)試功能時(shí),有些功能一會(huì)能實(shí)現(xiàn)一會(huì)不能實(shí)現(xiàn),不穩(wěn)定 方案:逐一檢查硬件(導(dǎo)線、插口),最后確定為部分導(dǎo)線插口接觸不良 這次的課程設(shè)計(jì),由于我們小組的分工明確而且組員們都十分的認(rèn)真,所以我們可以較早的完成,我也認(rèn)識(shí)到團(tuán)隊(duì)的重要,團(tuán)隊(duì)需要個(gè)人,個(gè)人也離不開團(tuán)隊(duì),必須發(fā)揚(yáng)團(tuán)結(jié)協(xié)作的精神某個(gè)人的離群都可能導(dǎo)致導(dǎo)致整項(xiàng)工作的失敗團(tuán)隊(duì)設(shè)計(jì)中只有一個(gè)人知道原理是遠(yuǎn)遠(yuǎn)不夠的,必須讓每個(gè)人都知道,否則一個(gè)人的錯(cuò)誤,就有可能導(dǎo)致整個(gè)工作失敗因此這次課程設(shè)計(jì)是我們又一次難得的學(xué)習(xí)機(jī)會(huì)! 自動(dòng)化學(xué)院2007級(jí)四班 袁雙 20075156在為期兩周的課程設(shè)計(jì)中,我為了完成設(shè)計(jì)遇到了很多困難。
在克服困難的過程中,我對(duì)已經(jīng)學(xué)習(xí)的知識(shí)有了更深入的理解,對(duì)一些不是學(xué)的很好的知識(shí)點(diǎn)也有了更加深入的理解并且在這種理論聯(lián)系實(shí)際的過程中,對(duì)我們已經(jīng)學(xué)習(xí)的知識(shí)在實(shí)際生產(chǎn)中的應(yīng)用也有了大致的了解對(duì)我的個(gè)人的綜合能力的提示有很大的幫助我們組的課程設(shè)計(jì)題目是交通監(jiān)督和管理系統(tǒng)這個(gè)課題非常方便和實(shí)際相聯(lián)系我們在構(gòu)想我們的系統(tǒng)的時(shí)候我們從簡單的紅綠燈變化聯(lián)想到了交通管理系統(tǒng)除了信號(hào)燈實(shí)際情況下還有哪些附屬設(shè)備,再聯(lián)想如何實(shí)現(xiàn)監(jiān)督功能在這個(gè)過程中我們集思廣議,最后我們的系統(tǒng)由監(jiān)督系統(tǒng)和管理系統(tǒng)復(fù)合組成并且由我和另外一個(gè)同學(xué)袁雙負(fù)責(zé)主系統(tǒng),我負(fù)責(zé)編譯程序,他幫我看并提出意見并和我討論如何修改在交通管理系統(tǒng)的程序的編譯的時(shí)候,我遇見了相當(dāng)多的問題例如怎么讓支路通行的過程更加的智能化最后我聯(lián)想到我上過的一門課程《智能交通》在課上,老師曾經(jīng)說過一個(gè)類似的問題,支路通行的時(shí)候給他10秒的時(shí)間如果有車來了,再給他延時(shí)幾秒霎時(shí)間我想到了怎么做了我最后讓支路通行的時(shí)候初始給10秒時(shí)間,如果有車來,就把通行時(shí)間變成10秒再另置一個(gè)計(jì)時(shí)器,讓他在支路開始通行的時(shí)候就計(jì)時(shí),如果滿了25秒就退出程序并令一個(gè)特殊的變量L=0而且這么做不但程序更加智能、人性化,還解決了支路通行子程序結(jié)束后的返回主程序判斷它是否是滿25秒結(jié)束的。
除了這個(gè)問題之外主干道滿25秒之后應(yīng)該怎么辦也讓我傷透了腦筋,最后我決定讓主干道通行滿25秒后,不在倒計(jì)時(shí)且讓信號(hào)燈閃爍提示駕駛員謹(jǐn)慎駕駛并且做一個(gè)大循環(huán)不停的檢測是否有人按下人行橫道開關(guān),支路是否有車來最后也是我遇見的最麻煩的一件事情,怎么才可以讓系統(tǒng)的時(shí)間準(zhǔn)確倒計(jì)時(shí)25秒就真的是25秒最后我不停在書上尋找,最后找到了一個(gè)方法利用電腦里面自帶的8254和8259來做,把0給8254計(jì)數(shù)器,那么他的計(jì)數(shù)時(shí)間為十八分之一秒然后給8254一個(gè)初始的數(shù)18就可以完成一秒的倒計(jì)時(shí)了在這個(gè)工作中我遇見的問題,以后工作也有可能遇見,在這種理論聯(lián)系實(shí)際的課程之中,我的能力得到了提升,知識(shí)得到了拓寬,對(duì)實(shí)際問題的思考方式也更加的有邏輯性 自動(dòng)化學(xué)院2007級(jí)四班李 莫 20075023經(jīng)過這兩個(gè)星期的課程設(shè)計(jì),我從中復(fù)習(xí)了大三上學(xué)習(xí)的計(jì)算機(jī)硬件技術(shù)基礎(chǔ),并運(yùn)用其中的知識(shí)設(shè)計(jì)了十字路口交通燈系統(tǒng)這兩個(gè)星期的實(shí)習(xí),通過和組員的配合,我們做出了十字路口交通燈的系統(tǒng),并且對(duì)這個(gè)系統(tǒng)的功能進(jìn)行了一個(gè)非常富有創(chuàng)造性的添加功能,就是我們用一個(gè)板實(shí)現(xiàn)了十字路口交通燈的基本功能的同時(shí),用另外一塊板實(shí)現(xiàn)了對(duì)違規(guī)車輛和行人的監(jiān)督功能。
在實(shí)現(xiàn)功能的過程中,我們遇到了重重困阻,但是團(tuán)隊(duì)的力量是強(qiáng)大的,這是我們能夠順利做成這個(gè)課程設(shè)計(jì)的主要因素每個(gè)組員都發(fā)揮了重要的作用在討論設(shè)計(jì)的功能如何實(shí)現(xiàn)的時(shí)候,我們的積極的發(fā)揮自己所學(xué)習(xí)的知識(shí)以及豐富的創(chuàng)造能力和靈活的運(yùn)用所學(xué)習(xí)的知識(shí),將我們所要實(shí)現(xiàn)的功能大體上形成了一個(gè)框架在設(shè)計(jì)的過程中,困難是難免的比如在實(shí)現(xiàn)每個(gè)環(huán)節(jié)的嵌套的過程中,對(duì)第一個(gè)環(huán)節(jié)進(jìn)行判斷以后,沒有跳轉(zhuǎn)到下一個(gè)環(huán)節(jié),結(jié)果發(fā)現(xiàn)系統(tǒng)只能對(duì)主干道的闖紅燈進(jìn)行判斷,不能對(duì)支干道闖紅燈的進(jìn)行判斷,這個(gè)問題困擾了很長一段時(shí)間,后來才發(fā)現(xiàn)自己出了這么一個(gè)低級(jí)的錯(cuò)誤在調(diào)試的時(shí)候,無論怎么按鍵,系統(tǒng)都沒有反應(yīng),但是看程序是沒有錯(cuò)誤的,進(jìn)行單步調(diào)試,系統(tǒng)還是毫無反應(yīng),結(jié)果后來才發(fā)現(xiàn)是接線的時(shí)候有兩條線接反了,才導(dǎo)致了系統(tǒng)無法進(jìn)行判斷在對(duì)違章車輛的顯示的時(shí)候,在兩個(gè)數(shù)字顯示不一樣的時(shí)候,顯示的數(shù)字會(huì)發(fā)生異常,對(duì)程序進(jìn)行了仔細(xì)的觀察和思考,沒有發(fā)現(xiàn)任何的不對(duì),進(jìn)行單步調(diào)試的時(shí)候才發(fā)現(xiàn),顯示LED1的過后,跳轉(zhuǎn)到顯示LED5的時(shí)候要先顯示LED1上的數(shù)字然后過一會(huì)才回顯示LED5應(yīng)該顯示的數(shù)字,這樣讓我不知道是什么問題,后來我問我的組員,他才給我說是要加一個(gè)延時(shí)程序才能杜絕這種事情的發(fā)生,但是延時(shí)又不能太長不然會(huì)影響顯示的速度,但是也不能過短,這樣不能解決這個(gè)問題。
后來加了一個(gè)1000的延時(shí)才解決了這個(gè)問題通過這次課程設(shè)計(jì),我鞏固了計(jì)算機(jī)硬件技術(shù)基礎(chǔ)的知識(shí),更重要的是我更加感受到了團(tuán)隊(duì)合作的重要性,一個(gè)人的力量終究是有限的,在一個(gè)團(tuán)隊(duì)中,團(tuán)隊(duì)的力量不單單是每個(gè)人能力的綜合,而是每個(gè)人力量的乘積 自動(dòng)化學(xué)院2007級(jí)四班周瑜析 20075041這次我們負(fù)責(zé)的是交通燈的題目,當(dāng)拿到了任務(wù)書后,我們仔細(xì)分析了題目,然后組員之間仔細(xì)討論了這個(gè)題目.后來就需要我們研究如何確定輸入輸出.很顯然開關(guān)應(yīng)該作為輸入,小燈作為交通燈應(yīng)該作為輸出.現(xiàn)在主要討論行車,行人交通燈之間的關(guān)系.然后主流交通與支路交通之間的關(guān)系. 設(shè)計(jì)的問題來了:當(dāng)人行道上有人,支路上有車時(shí),或者支路正在通車,人行道上有人,主干道有大于等于四輛車時(shí),誰的優(yōu)先權(quán)更高仔細(xì)研究過后,再考慮實(shí)際的交通情況,再加上題目的要求“當(dāng)行人按下控制鍵后,在正常干線或支線綠燈時(shí)間結(jié)束后,人行道變綠燈”,一致得出結(jié)論,行人優(yōu)先,故在主干或支干通車時(shí)都要檢測是否有行人鍵按下首先要整理出程序的流程圖假設(shè)在干線綠燈時(shí),有行人按鍵,那么在干線綠燈25秒之后應(yīng)讓行人通行,但是在行人通行之后又要返回到干線綠燈。
這個(gè)時(shí)候又有行人按鍵,支線來車的話,由于剛才設(shè)定的人有優(yōu)先權(quán),那么又是行人通行于是邊有可能造成:干線—人行道—干線—人行道這一循環(huán),致使干線不能通過還有如有車不按交通燈仔細(xì)行車的監(jiān)管問題.我就是負(fù)責(zé)交通監(jiān)管方面的問題此次設(shè)計(jì),我們不僅要判斷主干道和支干道以及人行道是否有違規(guī)現(xiàn)象,而且還要統(tǒng)計(jì)違規(guī)車輛的個(gè)數(shù)因此此次設(shè)計(jì),要涉及很多與硬件相關(guān)的知識(shí),比如說最常見的循環(huán)延時(shí),還有要值得注意的是確定8255控制字.這個(gè)編程序最基礎(chǔ)的東西,也是老師在課堂上講的比較多的 以前在學(xué)習(xí)的時(shí)候,對(duì)這些硬件相關(guān)的知識(shí)還不是很了解,但在此次實(shí)驗(yàn)之后,我有了新的認(rèn)識(shí)和理解,加強(qiáng)了對(duì)相關(guān)知識(shí)的熟悉和了解并學(xué)到了以前不知道的知識(shí)譬如說子程序的調(diào)用,8254延時(shí)功能的級(jí)連,都是我以前都不怎么理解的東西還有就是中斷,我在跟我同學(xué)討論相關(guān)知識(shí),還是不怎么明白,感覺很困難總之,在這次實(shí)驗(yàn)之后,我對(duì)匯編語言有了新的認(rèn)識(shí),掌握了大概的程序設(shè)計(jì)方法,還強(qiáng)化了自己處理實(shí)際問題的能力 自動(dòng)化學(xué)院2007級(jí)四班 王志瑜 200751298程序清單.486DATA SEGMENTS DB 09HL DB 05HDISNM DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H,88H,83H,0C6H,0A1H,86H,8EHDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV DX,20BH ;控制字 MOV AL,81H OUT DX,AL *******************主程序1(交通管理系統(tǒng))***********************T1: MOV CX,1000T100: LOOP T100 MOV DX,20AH ;判斷特殊時(shí)間黃燈閃爍開關(guān) IN AL,DX AND AL,01H CMP AL,01H JE T10 JMP T11T10: CALL Yellow ;黃燈閃爍子程序T11: CALL LmG ;調(diào)用主干道通行子程序 MOV DX,208H ;顯示LED清除 MOV AL,0FFH OUT DX,AL MOV DX,20AH ;判斷人行開關(guān) IN AL,DX AND AL,02H CMP AL,02H JNE T2 CALL LmY ;調(diào)用主干道黃燈子程序 MOV DX,208H ;顯示LED清除 MOV AL,0FFH OUT DX,AL CALL LpG ;調(diào)用人行橫道通行子程序 MOV DX,208H ;顯示LED清除 MOV AL,0FFH OUT DX,AL JMP T1T2: MOV DX,20AH ;判斷支線開關(guān) IN AL,DX AND AL,04H CMP AL,04H JNE T40 JE T21T21: CALL LmY ;調(diào)用主干道黃燈子程序 MOV DX,208H ;顯示LED清除 MOV AL,0FFH OUT DX,AL CALL LbG ;調(diào)用支路通行子程序 CALL LbY ;調(diào)用支路黃燈子程序 MOV DX,208H ;顯示LED清除 MOV AL,0FFH OUT DX,AL MOV AL,L ;判斷支路通行時(shí)間是否滿25秒 CMP AL,00H JE T3 JMP T1T3: MOV DX,20AH ;判斷人行開關(guān) IN AL,DX AND AL,02H CMP AL,02H JNE T1 CALL LpG ;調(diào)用人行橫道通行子程序 MOV DX,208H ;顯示LED清除 MOV AL,0FFH OUT DX,AL JMP T1T40: MOV DX,20AH IN AL,DX AND AL,04H CMP AL,04H JNE T401 CALL LmY ;調(diào)用主干道黃燈子程序 CALL LbG ;調(diào)用支線通行子程序 CALL LbY ;調(diào)用支線黃燈子程序 MOV DX,208H ;顯示LED清除 MOV AL,0FFH OUT DX,AL MOV AL,L ;判斷支線通行時(shí)間是否滿25秒 CMP AL,00H JE T3 JMP T1T401: MOV DX,20AH ;判斷人行開關(guān) IN AL,DX AND AL,02H CMP AL,02H JNE T402 CALL LmY ;調(diào)用主干道黃燈子程序 CALL LpG ;調(diào)用人行橫道通行子程序 MOV DX,208H ;顯示LED清除 MOV AL,0FFH OUT DX,AL JMP T1**********延時(shí)程序************T402: MOV AL,36H ;8254可編程硬件延時(shí)1s OUT 43H,AL MOV AL,0 OUT 40H,AL OUT 40H,AL MOV AH,0 INT 1AH ADD DX,18 MOV BX,DXT41: INT 1AH ;讀日時(shí)鐘中斷向量 CMP BX,DX JE T42 MOV AL,32H ;主干道綠燈,支路紅燈,人行道紅燈 MOV DX,209H OUT DX,AL MOV DX,20AH ;判斷特殊時(shí)間黃燈閃爍開關(guān) IN AL,DX AND AL,01H CMP AL,01H JE T411 JMP T41T411: CALL Yellow ;黃燈閃爍子程序 JMP T1T412: JMP T41T42: MOV DX,20AH ;判斷支線是否來車 IN AL,DX AND AL,04H CMP AL,04H JNE T421 CALL LmY ;調(diào)用主干道黃燈子程序 CALL LbG ;調(diào)用支線通行子程序 CALL LbY ;調(diào)用支線黃燈子程序 MOV DX,208H ;顯示LED清除 MOV AL,0FFH OUT DX,AL MOV AL,L ;判斷支線通行時(shí)間是否滿25秒 CMP AL,00H JE T3 JMP T1T421: MOV DX,20AH ;判斷人行開關(guān) IN AL,DX AND AL,02H CMP AL,02H JNE T422 CALL LmY ;調(diào)用主干道黃燈子程序 CALL LpG ;調(diào)用人行橫道通行子程序 MOV DX,208H ;顯示LED清除 MOV AL,0FFH OUT DX,AL JMP T1T422: MOV AL,36H ;8254可編程硬件延時(shí)1s OUT 43H,AL MOV AL,0 OUT 40H,AL OUT 40H,AL MOV AH,0 INT 1AH ADD DX,18 MOV BX,DXT43: INT 1AH CMP BX,DX JE T40 MOV AL,00H ;所有燈滅 MOV DX,209H OUT DX,AL JMP T43*******************特殊時(shí)段子程序***********************Yellow PROC NEAR ;黃燈閃爍子程序Y0: MOV AL,36H ;8254可編程硬件延時(shí)1s OUT 43H,AL MOV AL,0 OUT 40H,AL OUT 40H,AL MOV AH,0 INT 1AH ADD DX,18 MOV BX,DXY1: INT 1AH ;讀日時(shí)鐘 CMP BX,DX JE Y2R1: MOV DX,209H ;主干道黃燈,支路黃燈,人行橫道燈滅 MOV AL,48H OUT DX,AL MOV DX,20AH ;判斷是否退出特殊時(shí)段 IN AL,DX AND AL,0FH CMP AL,0FH JE R3 JMP Y1Y2: MOV AL,36H ;8254可編程硬件延時(shí)1s OUT 43H,AL MOV AL,0 OUT 40H,AL OUT 40H,AL MOV AH,0 INT 1AH ADD DX,18 MOV BX,DXY3: INT 1AH ;讀日時(shí)鐘 CMP BX,DX JE Y0R2: MOV DX,209H ;所有燈滅 MOV AL,00H OUT DX,AL MOV DX,20AH ;判斷是否退出特殊時(shí)段 IN AL,DX AND AL,0FH CMP AL,0FH JE R3 JMP Y3R3: RET Yellow ENDP******************干線通行子程序**********************LmG PROC NEAR ;主干道通行子程序 LEA SI,DISNM ADD SI,5 LEA DI,DISNM ADD DI,2K0: MOV AL,36H ;8254可編程硬件延時(shí)1s OUT 43H,AL MOV AL,0 OUT 40H,AL OUT 40H,AL MOV AH,0 INT 1AH ADD DX,18 MOV BX,DXK1: INT 1AH CMP BX,DX JE K2K12: MOV CX,1000K120: MOV AL,[DI] ;顯示十位數(shù) MOV DX,208H OUT DX,AL MOV AL,10H MOV DX,20AH OUT DX,AL LOOP K120 MOV CX,1000K121: MOV AL,[SI] ;顯示個(gè)位數(shù) MOV DX,208H OUT DX,AL MOV DX,20AH MOV AL,20H OUT DX,AL LOOP K121 MOV AL,32H MOV DX,209H OUT DX,AL JMP K1 K2: LEA BX,DISNM ;判斷個(gè)位是否為零 CMP BX,SI JE K3 DEC SI ;個(gè)位減1 JMP K0K3: LEA BX,DISNM ;判斷十位是否為零 CMP DI,BX JE K4 DEC DI ;十位減1 ADD SI,9 ;個(gè)位加9 JMP K0K4: RET LmG ENDP******************干線黃燈閃爍子程序**********************LmY PROC NEAR ;主干道黃燈子程序 LEA SI,DISNM ;LED個(gè)位數(shù)為3 ADD SI,3 LEA DI,DISNM ;LEC十位數(shù)為0Q5: MOV AL,36H ;8254可編程硬件延時(shí)1s OUT 43H,AL MOV AL,0 OUT 40H,AL OUT 40H,AL MOV AH,0 INT 1AH ADD DX,18 MOV BX,DXQ6: INT 1AH CMP BX,DX JE Q7 MOV CX,1000 Q61: MOV AL,[DI] ;顯示十位數(shù) MOV DX,208H OUT DX,AL MOV AL,10H MOV DX,20AH OUT DX,AL LOOP Q61 MOV CX,1000Q62: MOV AL,[SI] ;顯示個(gè)位數(shù) MOV DX,208H OUT DX,AL MOV DX,20AH MOV AL,20H OUT DX,AL LOOP Q62 MOV AL,52H MOV DX,209H OUT DX,AL JMP Q6 Q7: DEC SI ;個(gè)位減1 LEA BX,DISNM ;判斷個(gè)位是否為零 CMP BX,SI JE Q8 JMP Q5Q8: RETLmY ENDP*******************人行道通行子程序***********************LpG PROC NEAR LEA SI,DISNM ;給人行道通行時(shí)間10s ADD SI,0 LEA DI,DISNM ADD DI,1W0: MOV AL,36H ;8254可編程硬件延時(shí)1s OUT 43H,AL MOV AL,0 OUT 40H,AL OUT 40H,AL MOV AH,0 INT 1AH ADD DX,18 MOV BX,DXW1: INT 1AH CMP BX,DX JE W2 MOV CX,1000W11: MOV AL,[DI] ;顯示十位數(shù) MOV DX,208H OUT DX,AL MOV AL,40H MOV DX,20AH OUT DX,AL LOOP W11 MOV CX,1000W12: MOV AL,[SI] ;顯示個(gè)位數(shù) MOV DX,208H OUT DX,AL MOV DX,20AH MOV AL,80H OUT DX,AL LOOP W12 MOV AL,91H MOV DX,209H OUT DX,AL JMP W1W2: LEA BX,DISNM ;判斷個(gè)位是否為0 CMP BX,SI JE W3 DEC SI JMP W0W3: LEA BX,DISNM ;判斷十位是否為0 CMP DI,BX JE W4 DEC DI ADD SI,9 JMP W0W4: RETLpG ENDP *******************支線通行子程序***********************LbG PROC NEAR LEA SI,DISNM ;支線通車10s ADD SI,0 LEA DI,DISNM ADD DI,1 MOV AL,05H ;令L=5 MOV L,AL MOV AL,19H ;令S=25 MOV S,AL E0: MOV AL,36H ;8254可編程硬件延時(shí)1s OUT 43H,AL MOV AL,0 OUT 40H,AL OUT 40H,AL MOV AH,0 INT 1AH ADD DX,18 MOV BX,DXE1: INT 1AH CMP BX,DX JE E2 MOV CX,1000TD1: MOV AL,[DI] ;顯十位數(shù) MOV DX,208H OUT DX,AL MOV AL,20H MOV DX,20AH OUT DX,AL LOOP TD1 MOV CX,1000TD2: MOV AL,[SI] ;顯個(gè)位數(shù) MOV DX,208H OUT DX,AL MOV AL,40H MOV DX,20AH OUT DX,AL LOOP TD2 MOV AL,86H MOV DX,209H OUT DX,AL MOV DX,20AH ;判斷主干通行條件是否達(dá)成 IN AL,DX AND AL,08H CMP AL,08H JE E4 MOV DX,20AH ;判斷支路是否繼續(xù)來車 IN AL,DX AND AL,05H CMP AL,05H JE E6E11: JMP E1E2: LEA AX,DISNM ;判斷個(gè)位是否為0 CMP AX,SI JE E3 DEC SI MOV AL,S ;判斷是否滿25秒 CMP AL,00H JE E5 MOV AL,S ;S=S-1 DEC AL MOV S,AL JMP E0 E3: LEA AX,DISNM ;判斷十位是否為0 CMP AX,DI JE E4 DEC DI ADD SI,9 MOV AL,S ;判斷是否滿25s CMP AL,00H JE E5 MOV AL,S ;s=s-1 DEC AL MOV S,AL JMP E0E4: RETE5: MOV AL,00H ;令L=0 MOV L,AL JMP E4E6: LEA SI,DISNM ;持續(xù)來車支線通車擴(kuò)充到10s ADD SI,0 LEA DI,DISNM ADD DI,1 JMP E11LbG ENDP******************支線黃燈閃爍子程序********************LbY PROC NEAR LEA SI,DISNM ;支線黃燈時(shí)間顯示 ADD SI,3 LEA DI,DISNMG5: MOV AL,36H OUT 43H,AL MOV AL,0 OUT 40H,AL OUT 40H,AL MOV AH,0 INT 1AH ADD DX,18 MOV BX,DXG6: INT 1AH CMP BX,DX JE G7 MOV CX,1000 G61: MOV AL,[DI] ;顯十位數(shù) MOV DX,208H OUT DX,AL MOV AL,20H MOV DX,20AH OUT DX,AL LOOP G61 MOV CX,1000G62: MOV AL,[SI] ;顯個(gè)位數(shù) MOV DX,208H OUT DX,AL MOV DX,20AH MOV AL,40H OUT DX,AL LOOP G62 MOV AL,8AH MOV DX,209H OUT DX,AL JMP G6 G7: LEA BX,DISNM ;判斷個(gè)位是否為0 CMP BX,SI JE G8 DEC SI JMP G5G8: RETLbY ENDPCODE ENDS END START***********************主程序2(交通監(jiān)督系統(tǒng))************************.486 DATA SEGMENTMESS1 DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H,88HDATA ENDSCODE SEGMENTMAIN PROC FAR ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA ;初始化程序 MOV DS,AX MOV DX,20BH MOV AL,89H OUT DX,AL A1: MOV DX,209H ;給SI初始地址。
