版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 目 錄</b></p><p><b> 1 緒論1</b></p><p> 2 總體方案設(shè)計2</p><p> 2.1 課題研究主要內(nèi)容2</p><p> 2.2課題的設(shè)計思路3</p><p> 2.3 總體方案組成
2、和說明4</p><p> 3 硬件電路設(shè)計及描述5</p><p> 3.1 單片機最小系統(tǒng)5</p><p> 3.2按鍵接口電路的設(shè)計8</p><p> 3.3 指示電路的設(shè)計9</p><p> 3.4 顯示電路的設(shè)計10</p><p> 3.5 按鍵電路1
3、0</p><p> 3.6 PCB印刷圖11</p><p><b> 4 軟件設(shè)計12</b></p><p> 4.1 軟件流程圖13</p><p> 4.2 交通燈程序清單16</p><p> 4.3 軟件仿真27</p><p> 4.4
4、 誤差分析27</p><p> 4.5設(shè)計心得體會28</p><p><b> 致 謝29</b></p><p><b> 參考文獻29</b></p><p><b> 附 錄A:31</b></p><p><b&g
5、t; 附 錄B:31</b></p><p><b> 附 錄C:31</b></p><p><b> 1 緒論</b></p><p> 近年來,隨著汽車數(shù)量的猛增,我國大中型城市的城市交通,正面臨著嚴峻的考驗,從而導致交通問題日益嚴重,其主要表現(xiàn)如下:交通事故頻發(fā),對人類生命安全造成極大威
6、脅;交通擁堵嚴重,導致出行時間增加,能源消耗加大;空氣污染和噪聲污染程度日益加深等。日常的交通堵塞成為人們司空見慣而又不得不忍受的問題。在這種背景下,結(jié)合我國城市道路交通的實際情況,開發(fā)出真正適合我們自身特點的智能信號燈控制系統(tǒng)已經(jīng)成為當前的主要任務(wù)。</p><p> 和諧的城市交通具有很重要的現(xiàn)實意義。城市交通是城市經(jīng)濟生活的命脈,是衡量一個城市文明進步的標志,對于城市經(jīng)濟的發(fā)展和人民生活水平的提高起著十分
7、重要的作用。作為城市交通網(wǎng)的重要組成部分, 交叉口是道路通行能力的瓶頸和交通阻塞及事故的多發(fā)地。城市的交通擁堵,大部分是由于交叉口的通行能力不足或沒有充分利用造成的,這導致車流中斷、事故增多、延誤嚴重。對交叉口實行科學的管理與控制是交通控制工程的重要研究課題,是保障交叉口的交通安全和充分發(fā)揮交叉口的通行能力的重要措施,是解決城市交通問題的有效途徑。</p><p><b> 2 總體方案設(shè)計</
8、b></p><p> 本設(shè)計的重點是交通燈的現(xiàn)實電路的設(shè)計,另外還包含了單片機的最小系統(tǒng),電源電路以及設(shè)計的核心單元單片機。在設(shè)計前要先對各部分電路設(shè)計方案進行選擇,本章對采用哪種方案及如何選擇芯片做出了具體的說明,并最終給出了總體框圖和設(shè)計思路。</p><p> 2.1 課題研究主要內(nèi)容</p><p> 本設(shè)計以單片機為核心,通過Proteus
9、professional軟件進行模擬仿真,以此來實現(xiàn)交通燈控制系統(tǒng)的模擬功能,從而達到有效的控制交通狀況的目的。</p><p><b> 設(shè)計內(nèi)容及要求:</b></p><p> 設(shè)計一個具有特定功能的十字路口交通燈。該交通燈上電或按鍵復位后能自動顯示系統(tǒng)提示符“P.”, 進入準備工作狀態(tài)。按開始鍵則開始工作,按結(jié)束鍵則返回“P.”狀態(tài)。要求甲車道和乙車道兩條
10、交叉道路上的車輛交替運行,甲車道為主車道,每次通車時間為60秒,乙車道為次車道,每次通車時間為30秒,要求黃燈亮3秒,并且1秒閃爍一次。有應(yīng)急車輛出現(xiàn)時,紅燈全亮,應(yīng)急車輛通車時間10秒,同時禁止其他車輛通過</p><p> 針對以上要求,著重要完成以下幾個方面的內(nèi)容:</p><p> 對于系統(tǒng)的硬件設(shè)計,主要包括:</p><p> 單片機基本系統(tǒng)電路設(shè)
11、計;</p><p> 顯示、按鍵電路設(shè)計;</p><p> 對于系統(tǒng)的軟件設(shè)計,主要包括:</p><p><b> 系統(tǒng)主程序的設(shè)計;</b></p><p> 統(tǒng)幾個中斷子程序的設(shè)計;</p><p><b> 系統(tǒng)軟件流程圖;</b></p>
12、<p> Proteus professional軟件的模擬仿真等內(nèi)容;</p><p> 針對本次設(shè)計中所存在的問題,提出部分改進意見和下一步所要研究的目標。最后,總結(jié)了設(shè)計過程的收獲與不足并展望了未來。</p><p> 2.2課題的設(shè)計思路</p><p> 交叉字路口是城市交通運輸?shù)难屎?,如何使各種交通流順暢地通過是城市交通信號控制系統(tǒng)成
13、功與否的關(guān)鍵。隨著現(xiàn)代城市的發(fā)展,交通流量的增加,現(xiàn)在的大中城市都以六車道居多,本方案即以六車道為控制對象,其結(jié)構(gòu)如圖2-1所示:</p><p> 本設(shè)計主要是關(guān)于交通燈的智能控制,車輛行駛時共有直行、左轉(zhuǎn)、右轉(zhuǎn)三個方向,通過數(shù)碼管對倒計時間的顯示和紅、綠、黃三色燈的指示,以達到交通順暢通行的目的。同時,可以通過按鍵來控制倒計時的長短,實現(xiàn)智能控制人流高峰和低谷時,交通燈運行的狀態(tài)。</p>&
14、lt;p><b> 單片機的特點:</b></p><p> ?。?)控制系統(tǒng)在線作用。單片機的控制作用可分為兩個方面:一是離線控制,二是在線控制。</p><p> ?。?)軟硬件結(jié)合。單片機的引入使控制系統(tǒng)大大“軟化 [1]”,相比其他計算機應(yīng)用問題,單片機控制應(yīng)用中的硬件內(nèi)容較多,所以單片機控制應(yīng)用有軟硬結(jié)合的特點。</p><p&g
15、t; (3)應(yīng)用現(xiàn)場環(huán)境惡劣。通常單片機應(yīng)用現(xiàn)場的環(huán)境比較惡劣,電磁干擾、電源波動、沖擊振動、高低溫等因素都會影響系統(tǒng)的工作的穩(wěn)定。此外,無人值守的環(huán)境也會對單片機系統(tǒng)的穩(wěn)定性和可靠性提出更高的要求。所以穩(wěn)定和可靠在單片機的應(yīng)用中具有格外重要的意義。</p><p> (4)應(yīng)用的廣泛性。在生活和生產(chǎn)的各個領(lǐng)域中,凡是有自動控制要求的地方都會有單片機的身影出現(xiàn)。其應(yīng)用領(lǐng)域包括工業(yè)自動化方面、儀器儀表方面、家用
16、電器方面、信息和通信產(chǎn)品方面以及軍事裝備方面。</p><p> 綜上所述,單片機的穩(wěn)定性,可靠性都有著很好的保證,它也具有一定的精度,且低電壓、低功耗。從經(jīng)濟方面考慮,也最為合適。所以此次設(shè)計選用單片機為核心控制器。選擇ATMEL公司的AT89S52單片機最合適。 </p><p> 2.3 總體方案組成和說明</p><p> 單片機模塊是整個系統(tǒng)的核心部
17、分,在這樣一個模擬交通燈系統(tǒng)中,需要有時鐘電路模塊提供基準震蕩頻率 [2]以及單片機基本系統(tǒng)、指示電路、顯示電路、鍵盤電路、電源電路、下載線電路設(shè)計。系統(tǒng)基本原理方框圖如圖2-2所示:</p><p> 圖 2-2系統(tǒng)基本原理方框圖</p><p> 由上總體方框圖可以看到此次設(shè)計硬件電路有六大部分所構(gòu)成,圍繞以主控部分發(fā)揮各自的功能。只有這幾部分有機結(jié)合才可以很好的實現(xiàn)本次設(shè)計的的。
18、</p><p><b> 硬件電路設(shè)計及描述</b></p><p> 本系統(tǒng)的硬件結(jié)構(gòu)主要由單片機系統(tǒng)、鍵盤電路、電源電路、顯示電路、LED指示電路等五部分組成。下面對以上六部分進行逐一介紹。</p><p> 3.1 單片機最小系統(tǒng)</p><p> 單片機最小系統(tǒng)主要組成部分包括:AT89S52單片機、
19、時鐘電路、復位電路。單片機是本設(shè)計的核心部分,它是整個系統(tǒng)能夠正常運行的控制中心。</p><p> 系統(tǒng)采用美國ATMEL公司的AT89S52單片機,其內(nèi)部含有可重復編程的Flash存儲器,可進行1000次擦寫操作,故在開發(fā)過程中可以十分容易進行程序的修改,大大縮短了開發(fā)周期。AT89S52是一種帶8K字節(jié)閃爍可編程可擦除只讀存儲器(FPEROM—Flash Programmable and Erasable
20、 Read Only Memory)的低電壓,高性能CMOS8位微處理器,俗稱單片機。該器件采用ATMEL高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的MCS-51指令集和輸出管腳相兼容。AT89S52單片機為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價廉的方案。</p><p> 下面是對單片機AT89S52主要特性進行了一些描述。</p><p> AT89S52是一種低功耗、高性能CM
21、OS8位微控制器,具有8K 在系統(tǒng)可編程Flash 存儲器。使用Atmel 公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8 位CPU 和在系統(tǒng)可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。AT89S52具有以下標準功能:8k字節(jié)Flash,256字節(jié)RAM,32 位I/O 口線,看
22、門狗定時器,2 個數(shù)據(jù)指針,三個16 位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時鐘電路。另外,AT89S52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機一切工作停止,直到下一個中斷或硬件復位為止。</p><p> AT89S52芯片引腳圖見圖
23、3-1。系統(tǒng)結(jié)構(gòu)框圖如圖3-2所示:</p><p> 圖3-1 AT89S52的引腳圖</p><p> 圖3-2 AT89S52系統(tǒng)結(jié)構(gòu)框圖</p><p> AT89S52單片機有一個用于構(gòu)成內(nèi)部振蕩器的反相放大器,XTAL1和XTAL2分別是放大器的輸入、輸出端。石英晶體和陶瓷諧振器都可以用來一起構(gòu)成自激振蕩器。從外部時鐘源驅(qū)動器件的話,XTAL2
24、可以不接,而從XTAL1接入,如圖3-3所示。 </p><p> 圖3-3 外部振蕩電路連接圖</p><p> 外接晶體以及電容C1、C2構(gòu)成并聯(lián)諧振電路 [3],接在放大器的反饋回路中,內(nèi)部振蕩器產(chǎn)生自激振蕩,一般晶振可在2~12MHz之間任選。對外接電容值雖然沒有嚴格的要求,但電容的大小多少會影響振蕩頻率
25、的高低、振蕩器的穩(wěn)定性、起振的快速性和溫度的穩(wěn)定性。外接晶體時,C1和C2通常選30pF左右;外接陶瓷諧振器時,C1和C2的典型值為47pF。</p><p> 單片機在開機時都需要復位,以便中央處理器CPU以及其他功能部件都處于一個確定的初始狀態(tài),并從這個狀態(tài)開始工作。51的RST引腳是復位信號的輸入端。復位電平是高電平有效,持續(xù)時間要有24個時鐘周期以0上。本系統(tǒng)中單片機時鐘頻率為6MHz則復位脈沖至少應(yīng)為
26、4us。</p><p> 方案一:上電復位電路</p><p> 上電瞬間,RST端的電位與Vcc相同,隨著電容的逐步充電,充電電流減小,RST電位逐漸下降。上電復位所需的最短時間是振蕩器建立時間加上二個機器周期,在這段時間里,振蕩建立時間不超過10ms。復位電路的典型參數(shù)為:C取10uF,R取2k,故時間常數(shù)</p><p> =RC=1010210=20
27、ms</p><p> 足以滿足要求。其電路如圖3-5所示。</p><p> 圖3-5 上電復位電路連接圖</p><p> 方案二:外部復位電路</p><p> 按下開關(guān)時,電源通過電阻對外接電容進行充電,使RES端為高電平,復位按鈕松開后,電容通過下拉電阻放電,逐漸使RET端恢復低電平。</p><p>
28、; 圖3-6 手動上電復位電路連接圖</p><p> 考慮到電路對復位電路的要求不高,且盡量使電路簡單,故采用方案一:上電復位電路。</p><p> 3.2按鍵接口電路的設(shè)計</p><p> 單片機使用的鍵盤分為獨立式和矩陣式兩種。</p><p> 方案一:矩陣式鍵盤適用于按鍵數(shù)量較多的場合,它有行線和列線組成,按鍵位于行、
29、列的交叉點上。行、列線分別連接到按鍵開關(guān)的兩端,而有鍵按下時,行線電平狀態(tài)將由與此行線相連的列線電平?jīng)Q定,列線電平如果為低,則行線電平為低;反之,則為高。這一點是識別矩陣鍵盤按鍵是否被按下的關(guān)鍵。矩陣式鍵盤各按鍵彼此將相互發(fā)生影響,所以必須將行、列線信號配合起來并作適當?shù)奶幚?,才能確定閉合鍵的位置。</p><p> 方案二:矩陣式鍵盤也稱行列式鍵盤,因為鍵的數(shù)目較多,所以鍵按行列組成矩陣。獨立式鍵盤就是各按鍵
30、相互獨立,每個按鍵各接一根輸入線,一根輸入線上的按鍵工作狀態(tài)不會影響其他輸入線上的工作狀態(tài)。因次,通過檢測輸入線的電平狀態(tài)可以很容易的判斷哪個按鍵被按下了。獨立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡單。但每個按鍵需占用一根輸入口線,此種按鍵電路適用于按鍵較少或操作速度教高的場合獨立式實際上就是一組相互獨立的按鍵,這些按鍵可直接與單片機的I/O口連接,連接方法就是每個按鍵獨立一條口線,各按鍵之間狀態(tài)不會影響且接口簡單。</p>&l
31、t;p> 考慮到這個控制器中,設(shè)定的按鍵不多,為了使系統(tǒng)簡單明了,在這里選擇獨立式按鍵。如圖所示,[SET]鍵用來設(shè)置倒計時時間,[SELECT]用來選擇“+”“—”。</p><p> 圖3-7 獨立的按鍵電路連接圖</p><p> 3.3 指示電路的設(shè)計</p><p> 指示很簡單,采用LED(發(fā)光二極管),考慮到單片機端口常態(tài)是高電平,設(shè)計采
32、用低電平點亮發(fā)光管,如圖3-8所示。I/O口的灌電流最大30mA左右,假設(shè)每根線20mA,C系列都低于20mA,假設(shè)單個發(fā)光管耐壓2V(不同的管子不同,相差不多),系統(tǒng)采用5V供電,則限流電阻R的阻值為:</p><p> 實際選擇200Ω,實驗發(fā)現(xiàn)發(fā)光二極管顯示正常。通過程序來控制指示燈紅、綠、黃的通斷來模擬交通燈的指示作用。其電路圖如圖3-8所示。</p><p> 圖3-8 指
33、示電路部分電路圖</p><p> 3.4 顯示電路的設(shè)計</p><p> 數(shù)碼管顯示電路有多種方式,按照數(shù)據(jù)傳輸方式有兩種:并行形式 [4]和串行形式,下面針對兩種方式進行說明。</p><p> 本設(shè)計由兩個8段共陽極的LED顯示塊組成,P0口接兩塊LED的段控,P2口接位控。與單片機接口電路硬件連接圖如圖3-10所示。</p><p
34、> 圖3-10 顯示部分連接圖</p><p><b> 3.5 按鍵電路</b></p><p> 交通燈控制電路,所需按鍵不多,就用單片機最小系統(tǒng)的三個鍵,電路如圖3-11。</p><p><b> 圖 3-11</b></p><p><b> PCB印刷圖&l
35、t;/b></p><p><b> 4 軟件設(shè)計</b></p><p><b> 4.1 軟件流程圖</b></p><p> 按交通燈的功能,系統(tǒng)程序必須具備按鍵掃描處理、實時數(shù)碼管顯示等任務(wù)。</p><p> 4.1.1 主程序的設(shè)計</p><p>
36、 系統(tǒng)在上電復位后,先對檔位寄存器賦默認值,并進行清除超時標志位,設(shè)置定時器及中斷系統(tǒng)的工作方式等初始化工作。</p><p> 圖4-1 主程序流程圖</p><p> 4.1.2 按鍵掃描處理子程序的設(shè)計</p><p> 按鍵掃描處理子程序負責設(shè)置東西、南北走向的等待時間按,若有鍵按下,則做出相應(yīng)的處理。</p><p> 圖
37、4-2 按鍵掃描子程序</p><p> 鍵B功能子程序流程圖</p><p> 鍵A功能子程序流程圖</p><p> 4.2 交通燈程序清單</p><p> ;**************************************************** **********:</p><p>
38、 ;項目名稱:交通燈的設(shè)計</p><p> ;設(shè)計者:凡文波 Num:08401140325</p><p> ;設(shè)計日期:2010年12月29日</p><p> ;********************************************************************;</p><p><b
39、> ;堆棧棧底7FH;</b></p><p> ;********************************************************************;</p><p> ;LED數(shù)碼管顯示器設(shè)定;</p><p> ;P0.7---P0.0段控線,接LED的顯示段dp,g,f,e,d,c,b,a<
40、;/p><p> ;P2.7---P2.0位控線,從左至右(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0)</p><p> ;顯示緩沖區(qū)設(shè)定從左至右依次為7FH,7EH,7DH,7CH,7BH,7AH,79H,78H(LED7,LED6,LED5,LED4,LED3,LED2,LED1,LED0)</p><p> ;*****
41、***************************************************************;</p><p><b> ;獨立式鍵盤設(shè)定;</b></p><p> ;8個按鍵S2至S9分別依次接在P1.0至P1.7口線; </p><p> ;*****************************
42、***************************************; </p><p><b> ;子程序;</b></p><p> ;DISP(數(shù)碼管顯示子程序)</p><p> ;DL(1毫秒延時子程序,晶振頻率12MHz)</p><p> ;***********************
43、*********************************************;</p><p><b> ;常數(shù)表格;</b></p><p> ;TAB(共陽數(shù)碼管字型代碼表)</p><p> ;DISPH(系統(tǒng)提示符P.字型代碼序號表)</p><p> ;******************
44、**************************************************;</p><p><b> ;中斷服務(wù)程序;</b></p><p> ;********************************************************************;</p><p><b
45、> ;鍵功能程序;</b></p><p> ;******** ***********************************************************;</p><p> ;數(shù)據(jù)存儲器變量及常量單元定義;</p><p> ;*****************************************
46、***************************;</p><p> ;偽指令定義區(qū) </p><p> ;************************ *******************************************;</p><p> ;系統(tǒng)起始程序區(qū) </p><p&
47、gt; ORG 0000H</p><p> START: LJMP MAIN</p><p> ;********************************************************************</p><p><b> ;系統(tǒng)監(jiān)控程序區(qū)</b></p><p>
48、; ORG0030H</p><p> MAIN: MOVSP,#5FH;確定堆棧區(qū)</p><p> MOVIE,#00H ;中斷被禁止</p><p> MOVPSW,#00H </p><p> MOVR0,#20H ;RAM區(qū)首地址</p>
49、;<p> MOV R7, #96 ;RAM區(qū)單元個數(shù)</p><p> ML: MOV @R0, #00H</p><p> INC R0</p><p> DJNZ R7, ML ;清空00-7FH這96個單元</p><p> ;*********
50、***********************************************************</p><p> ;給最低位送P.指令,高7位送滅指令,再調(diào)顯示子程序,并判斷是否有某鍵按下</p><p> LOOP: MOV 78H,#0BH</p><p> MOV79H,#0AH</p><p
51、> MOV7AH,#0AH</p><p> MOV7BH,#0AH</p><p> MOV7CH,#0AH</p><p> MOV7DH,#0AH</p><p> MOV7EH,#0AH</p><p> MOV7FH,#0AH ;送P.指令,高7位送滅
52、指令</p><p> LCALLDIR ;調(diào)顯示子程序</p><p> LCALLKEY ;調(diào)鍵掃子程序</p><p> LCALLBIJIAO ;調(diào)用比較子程序</p><p> LJMPLOOP </p><p> ;*****************
53、***************************************************</p><p> ;鍵功能程序(初始化)</p><p> KEYA:MOVR5,#00H ;將會從00H加到第56秒</p><p> MOVP3,#7EH </p><p> MOVR0,#
54、00H </p><p> MOVR1,#06H </p><p> MOV78H,#00H</p><p> MOV79H,#06H </p><p> LCALLMIE </p><p> LJMPLL </p><p
55、> ;********************************************************************</p><p> ;下一段程序?qū)崿F(xiàn) 當數(shù)是10的倍數(shù)時個位變9十位減1的操作(因交通燈倒計時)</p><p> LP0:CJNER0,#00H,BJ1 ;個位不等于0轉(zhuǎn)到BJ1</p><p>
56、 MOVR0,#09H </p><p> DECR1</p><p> MOVA,R1</p><p> MOV79H,A</p><p> LCALLMIE ;再調(diào)用高6位“滅”段碼</p><p> LJMPLL
57、</p><p> BJ1: DECR0 ;將R0(個位)減1</p><p><b> LJMPLL</b></p><p> LL:MOVA,R0</p><p> MOV78H,A</p><p> LCALLDL1S
58、</p><p> INCR5</p><p> MOVA,R5</p><p> CJNEA,#38H,LP0 </p><p> ;********************************************************************</p>
59、<p> ;本程序?qū)⒌?7秒的LED燈全滅(后一秒黃燈閃爍)</p><p> MOVP3,#0FFH;LED燈全滅</p><p> MOVR4,#75H</p><p> LOOP6:MOV78H,#04H</p><p> MOV79H,#00H</p&g
60、t;<p> LCALLMIE;再調(diào)用高6位“滅”段碼</p><p> LCALLDIR</p><p> LCALLKEY;調(diào)鍵掃</p><p> LCALLBIJIAO1</p><p> DJNZR4,LOOP6 ;第57秒全滅,下一秒閃黃
61、燈</p><p> ;********************************************************************</p><p> ;以下程序黃燈在58、59、60秒中閃爍3次</p><p><b> ;黃燈初亮0.5秒</b></p><p> MOVP3,
62、#0BDH </p><p> MOVR4,#3AH </p><p> LP1:MOV78H,#03H</p><p> MOV79H,#00H;給顯示緩存區(qū)低二位賦值“03”</p><p> LCALLMIE;調(diào)用“滅”段碼指令</p><
63、;p> LCALLDIR;用顯示子程序DIR延時</p><p><b> LCALLKEY</b></p><p> LCALLBIJIAO1;鍵掃后比較</p><p> DJNZR4,LP1 ;延時0.5秒</p><p> ;*************
64、*******************************************************</p><p><b> ;黃燈滅0.5秒</b></p><p> MOVR4,#3AH </p><p> CPLP3.1 ;黃燈滅</p><p><b>
65、CPL P3.6</b></p><p> LP2:LCALLDIR</p><p><b> LCALLKEY</b></p><p> LCALLBIJIAO1</p><p> DJNZR4,LP2 ;延時0.5秒</p><p> ;**
66、******************************************************************</p><p><b> ;黃燈亮0.5秒</b></p><p> MOVR4,#3AH</p><p> MOV78H,#02H</p><p> MOV79
67、H,#00H;給顯示緩存區(qū)低二位賦值“02”</p><p> LCALLMIE </p><p> CPLP3.1 ;黃燈亮</p><p><b> CPLP3.6</b></p><p> LPB:LCALLDIR</p><p><b
68、> LCALLKEY</b></p><p> LCALLBIJIAO1</p><p> DJNZR4,LPB ;延時0.5秒</p><p> ;********************************************************************</p><p
69、><b> ;黃燈滅0.5秒</b></p><p> MOVR4,#3AH </p><p> CPLP3.1 ;黃燈滅</p><p><b> CPLP3.6</b></p><p> LPC:LCALLDIR</p>&
70、lt;p><b> LCALLKEY</b></p><p> LCALLBIJIAO1</p><p> DJNZR4,LPC ;延時0.5秒</p><p> ;********************************************************************<
71、/p><p><b> ;黃燈亮0.5秒</b></p><p> MOVR4,#3AH</p><p> MOV78H,#01H</p><p> MOV79H,#00H;給顯示緩存區(qū)低二位賦值“01”</p><p> LCALLMIE </p>
72、;<p> CPLP3.1 ;黃燈亮</p><p><b> CPLP3.6</b></p><p> LPD:LCALLDIR</p><p><b> LCALLKEY</b></p><p> LCALLBIJIAO1</p&g
73、t;<p> DJNZR4,LPD ;延時0.5秒</p><p> ;********************************************************************</p><p> ;黃燈最后滅0.5秒</p><p> MOVR4,#3AH </p>&
74、lt;p> CPLP3.1 ;黃燈滅</p><p><b> CPLP3.6</b></p><p> LPE:LCALLDIR</p><p><b> LCALLKEY</b></p><p> LCALLBIJIAO1</p>
75、<p> DJNZR4,LPE ;延時0.5秒</p><p> ;********************************************************************</p><p> ;乙車道綠燈開始亮,甲車道紅燈亮,大數(shù)程序注釋同上程序</p><p> MOVP3,
76、#0DBH </p><p> MOVR5,#1AH ;延時參數(shù),延時26秒</p><p> MOVR0,#00H </p><p> MOVR1,#03H ;給十位送3,個位送0</p><p> MOV78H,#00H</p><p> MO
77、V79H,#03H;再送一遍“30”</p><p> LCALLMIE;調(diào)高6位“滅”</p><p> LJMPLL1</p><p> LP3:CJNER0,#00H,BJ2 ;不等于0就將最低位減1</p><p> MOVR0,#09H </p&g
78、t;<p><b> DECR1</b></p><p> MOVA,R1</p><p> MOV79H,A</p><p><b> LCALLMIE</b></p><p><b> LJMPLL1</b></p>
79、<p> BJ2: DECR0</p><p><b> LJMPLL1</b></p><p> LL1: MOVA,R0</p><p> MOV78H,A</p><p> LCALLDL1S </p><p> DJNZR5,
80、LP3 ;延時26秒</p><p> ;********************************************************************</p><p> ;第27秒全滅,下一秒閃黃燈</p><p> MOVP3,#0FFH ;第27秒全滅,下一秒閃黃燈</p>&l
81、t;p> MOV78H,#04H</p><p> MOV79H,#00H</p><p> MOVR0,#04H</p><p> MOVR1,#00H</p><p><b> LCALLMIE</b></p><p> LCALLDL1S
82、 </p><p> MOVP3,#0BDH </p><p> MOV78H,#03H</p><p> MOV79H,#00H</p><p> MOVR0,#03H</p><p> MOVR1,#00H</p><p&g
83、t; LCALLMIE </p><p> LCALLDL05S</p><p> ;********************************************************************</p><p> ;黃燈亮滅,亮滅3次 </p><p> CPLP3.1
84、 ;黃燈亮滅,亮滅3次</p><p><b> CPLP3.6</b></p><p> LCALLDL05S</p><p><b> CPLP3.1</b></p><p><b> CPLP3.6</b></p><p
85、> MOV78H,#02H</p><p> MOV79H,#00H</p><p> MOVR0,#02H</p><p> MOVR1,#00H</p><p><b> LCALLMIE</b></p><p> LCALLDL05S<
86、/p><p><b> CPLP3.1</b></p><p><b> CPLP3.6</b></p><p> LCALLDL05S</p><p><b> CPLP3.1</b></p><p><b> CPL
87、P3.6</b></p><p> MOV78H,#01H</p><p> MOV79H,#00H</p><p> MOVR0,#01H</p><p> MOVR1,#00H</p><p><b> LCALLMIE</b></p&
88、gt;<p> LCALLDL05S</p><p><b> CPLP3.1</b></p><p><b> CPLP3.6</b></p><p> LCALLDL05S</p><p> LJMPKEYA;返回KEYA</p>&l
89、t;p> ;********************************************************************</p><p><b> ;應(yīng)急車輛紅燈亮區(qū)</b></p><p> KEYB: MOV21H,P3</p><p><b> PUSHPSW</b
90、></p><p><b> SETBRS1</b></p><p> SETBRS0;保護作用</p><p> MOVP3,#7BH</p><p> MOVR7,#09H;延時參數(shù)</p><p> MOV79H,#01H&l
91、t;/p><p> MOV78H,#00H</p><p> MOVR0,#00H</p><p> MOVR1,#01H;以上賦值“10”</p><p> LCALLMIE;調(diào)“滅”指令</p><p> LCALLDL1S2</p><
92、;p> MOVR0,#09H</p><p> MOVR1,#0AH</p><p> LOOP5:MOV78H,R0</p><p> MOV79H,R1;"9"賦給顯示緩存區(qū)</p><p><b> LCALLMIE</b>&
93、lt;/p><p> LCALLDL1S2</p><p> DECR0</p><p> DJNZR7,LOOP5;顯示9次,分別為9、8…… 1</p><p> POPPSW</p><p><b> LCALLMIE</b></p
94、><p> MOVP3,21H</p><p> RET</p><p> ;********************************************************************</p><p><b> ;子程序;</b></p><
95、p> ;鍵掃后判斷是否為某一鍵按下,在無鍵按下功能范圍內(nèi)使用</p><p> BIJIAO: MOVA,20H</p><p> CJNEA,#02H,LP00 ;B鍵按下就執(zhí)行KEYB程序</p><p><b> LJMPKEYB</b></p><p> LP00: CJNE
96、A,#01H,LP01 </p><p><b> LJMPKEYA</b></p><p> LP01: RET ;無鍵按下返回</p><p> ;********************************************************************</p>&
97、lt;p> ;鍵掃后判斷是否為某一鍵按下,在KEYA功能范圍內(nèi)使用</p><p> BIJIAO1: MOVA,20H</p><p> CJNEA,#01H,LP02 </p><p><b> RET</b></p><p> LP02: CJNEA,#02H
98、,LP03 ;B鍵按下就執(zhí)行KEYB程序</p><p><b> LJMPKEYB</b></p><p> LP03: RET ;無鍵按下返回</p><p> ;********************************************************************</
99、p><p> ;鍵盤掃描子程序KEY</p><p> KEY:LCALLKEYCHULI ;調(diào)P1口數(shù)據(jù)處理子程序</p><p> JZEXIT ;沒有鍵按下,轉(zhuǎn)返回</p><p><b> LCALLDIR</b></p><p> LCALLDIR
100、 ;調(diào)顯示子程序去抖動</p><p> LCALLKEYCHULI </p><p> JZEXIT ;沒有鍵按下,轉(zhuǎn)返回</p><p> MOVB,20H ;保存取反后的鍵值</p><p> KEYSF:LCALLKEYCHULI ;調(diào)P1口數(shù)據(jù)處理子程
101、序</p><p> JZKEY1 ;鍵釋放,轉(zhuǎn)恢復鍵值</p><p> LCALLDIR </p><p> LJMPKEYSF ;等待鍵釋放</p><p> KEY1:MOV20H,B ;鍵值送20H保存</p><p> EXIT:R
102、ET ;子程序返回</p><p> ;P1口數(shù)據(jù)處理子程序KEYCHULI</p><p> KEYCHULI:PUSHPSW</p><p> SETBRS1 </p><p> CLRRS0 ;保護</p><p> MOVP1,#0FFH
103、 ;先向P1口寫1</p><p> MOVA,P1 ;讀P1口數(shù)據(jù)</p><p> CPLA ;P1口數(shù)據(jù)取反</p><p> ANLA,#03H </p><p> MOV20H,A ;保存取反后的鍵值</p><p><b
104、> CLRRS1</b></p><p><b> CLRRS0</b></p><p><b> POPPSW</b></p><p> RET ;恢復,返回</p><p> ;****************************
105、****************************************</p><p><b> ;顯示子程序</b></p><p> DIR:PUSHPSW</p><p><b> SETBRS0</b></p><p><b> CLRRS1</b&
106、gt;</p><p> MOVR3,#00H</p><p> MOVR0,#78H</p><p> DIR0:MOVDPTR,#TAB2;查表位控代碼</p><p> MOVA,R3</p><p> MOVCA,@A+DPTR</p>
107、<p> MOVP2,A</p><p> MOVDPTR,#TAB1;查表段控代碼</p><p> MOVA,@R0</p><p> MOVCA,@A+DPTR</p><p> MOVP0,A</p><p> LCALL
108、DL;延時1ms</p><p><b> INCR3</b></p><p> INCR0;位控、段控碼向高位循環(huán)</p><p> CJNER3,#08H,DIR0</p><p><b> POPPSW</b></p>
109、<p><b> RET</b></p><p> ;********************************************************************</p><p> ;顯示字符段選碼表(共陽極代碼)</p><p> TAB1: DB 0C0H, 0F9H,0A4H,0B
110、0H,99H,92H,82H,0F8H,80H ;0-8</p><p> DB 90H, 0FFH,0CH ;9,滅,p.</p><p> TAB2: DB0FEH,0FDH,0FBH,0F7H,0EFH,0DFH,0BFH,07FH ;位控代碼</p><p> ;************
111、********************************************************</p><p> ;將數(shù)碼管高6位賦"滅"指令</p><p> MIE: MOV7AH,#0AH</p><p> MOV7BH,#0AH</p><p> MOV7CH,#0AH
112、</p><p> MOV7DH,#0AH</p><p> MOV7EH,#0AH</p><p> MOV7FH,#0AH</p><p><b> RET</b></p><p> ;****************************************
113、****************************</p><p> ;延時、亮燈并調(diào)鍵掃1秒,在KEYA功能范圍內(nèi)使用,含鍵掃比較</p><p> DL1S:MOVR4,#75H;延時并亮燈1秒</p><p> LOOP1:LCALLDIR</p><p><b> LCALLKEY&l
114、t;/b></p><p> LCALLBIJIAO1</p><p> MOV78H,R0</p><p> MOV79H,R1 </p><p> LCALLMIE </p><p> DJNZR4,LOOP1;延時1s</p&g
115、t;<p><b> RET</b></p><p> ;********************************************************************</p><p> ;延時、亮燈并調(diào)鍵掃1秒,在KEYB功能范圍內(nèi)使用,不含鍵掃比較</p><p> DL1S2:MOV
116、R4,#78H;延時并亮燈1秒</p><p> LOO1:LCALLDIR</p><p> MOV78H,R0</p><p> MOV79H,R1</p><p><b> LCALLMIE</b></p><p> DJNZR4,LOO1&l
117、t;/p><p><b> RET</b></p><p> ;********************************************************************</p><p> ;延時、亮燈并調(diào)鍵掃0.5秒,在KEYA功能范圍內(nèi)使用,含鍵掃比較</p><p> DL05S:
118、MOVR4,#3AH;延時并亮燈0.5秒</p><p> LOOP9:LCALLDIR</p><p><b> LCALLKEY</b></p><p> LCALLBIJIAO1</p><p> MOV78H,R0</p><p> MOV79
119、H,R1</p><p><b> LCALLMIE</b></p><p> DJNZR4,LOOP9</p><p><b> RET</b></p><p> ;*********************************************************
120、***********</p><p><b> ;延時1ms程序</b></p><p> DL:MOVR7, #02H;延時1MS程序</p><p> DL1:MOVR6, #0FFH</p><p> DL2:DJNZR6, DL2</p>
121、<p> DJNZR7, DL1</p><p><b> RET</b></p><p><b> END</b></p><p><b> 4.3 軟件仿真</b></p><p> Proteus7.2是目前最好的模擬單片機外圍器件的工具,可
122、以仿真51 系列、AVR,PIC 等常用的MCU 及其外圍電路。因此在仿真和程序調(diào)試時,關(guān)心的不再是某些語句執(zhí)行時單片機寄存器和存儲器內(nèi)容的改變,而是從工程的角度直接看程序運行和電路工作的過程和結(jié)果。對于這樣的仿真實驗,從某種意義上講,是彌補了實驗和工程應(yīng)用間脫節(jié)的矛盾和現(xiàn)象。</p><p> 本次設(shè)計通過Proteus7.2對交通燈模擬系統(tǒng)進行仿真,進行軟件和模擬硬件的結(jié)合調(diào)試,得到了比較比較理想的效果,如
123、圖4-3模擬仿真的結(jié)果.</p><p> 圖4-3 Proteus7.2模擬仿真圖</p><p><b> 4.4 誤差分析</b></p><p> 本次實驗雖然成功,但也存在一些不足,比如說編寫程序冗雜過長,延時時間不夠精確等等,最主要的問題是延時是采用顯示主程序DIR延時,估算其為8ms多一點,故倒計時時不夠精確,在嚴密工程
124、上必然會暴露它的弊端,不過是初學者所編學習程序而已。</p><p><b> 4.5設(shè)計心得體會</b></p><p> 本次設(shè)計之后,加深了我對單片機的認知。第一:加深了我對電路設(shè)計</p><p> 電路分析的能力,提高了我們單片機技術(shù)基礎(chǔ)知識的掌握的程度。第二:熟悉</p><p> 各軟件的操作與應(yīng)用
125、,如Protell99SE和Proteus。第三:增強了我們獨立思</p><p> 主動查閱資料的能力,為了準備這次課程設(shè)計我們組查閱了許多的資料。第四</p><p> 我們的動手能力在這次課程設(shè)計中得到了很大的提高,特別是我們的耐心得到</p><p> 前所未有的鍛煉,沒有足夠的耐心是無法取得成功的。第五:我們更加清楚的</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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 交通燈課程設(shè)計---簡易交通燈控制電路
- 交通燈電路課程設(shè)計報告
- 數(shù)電交通燈課程設(shè)計---交通燈控制電路
- 數(shù)電交通燈課程設(shè)計-- 交通燈控制電路
- 數(shù)電交通燈課程設(shè)計--交通燈控制電路
- 數(shù)電交通燈課程設(shè)計---交通燈控制電路
- 交通燈課程設(shè)計--基于fpga的交通燈設(shè)計
- 模擬交通燈課程設(shè)計--模擬交通燈的設(shè)計
- 數(shù)字電路交通燈課程設(shè)計
- 交通燈控制電路課程設(shè)計
- 數(shù)字電路課程設(shè)計—交通燈
- 數(shù)字電路課程設(shè)計——交通燈
- 課程設(shè)計--交通燈控制電路
- 數(shù)電交通燈課程設(shè)計--交通燈邏輯控制電路設(shè)計
- 數(shù)電交通燈課程設(shè)計--簡易交通燈的設(shè)計
- 交通燈課程設(shè)計
- 課程設(shè)計交通燈
- 課程設(shè)計—交通燈
- 交通燈課程設(shè)計
- 數(shù)電交通燈課程設(shè)計-- 交通燈邏輯控制電路設(shè)計
評論
0/150
提交評論