畢業(yè)設(shè)計基于AT89C51單片機的道路交通燈控制系統(tǒng)設(shè)計_第1頁
畢業(yè)設(shè)計基于AT89C51單片機的道路交通燈控制系統(tǒng)設(shè)計_第2頁
畢業(yè)設(shè)計基于AT89C51單片機的道路交通燈控制系統(tǒng)設(shè)計_第3頁
畢業(yè)設(shè)計基于AT89C51單片機的道路交通燈控制系統(tǒng)設(shè)計_第4頁
畢業(yè)設(shè)計基于AT89C51單片機的道路交通燈控制系統(tǒng)設(shè)計_第5頁
已閱讀5頁,還剩29頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、成都理工大學(xué)畢業(yè)論文 交通燈第一章 序 言1.1 交通燈的形成當(dāng)今,紅綠燈安裝在各個道口上,已經(jīng)成為疏導(dǎo)交通車輛最常見和最有效的手段。但這一技術(shù)在19世紀(jì)就已出現(xiàn)了。1858年,在英國倫敦主要街頭安裝了以燃煤氣為光源的紅,藍(lán)兩色的機械扳手式信號燈,用以指揮馬車通行。這是世界上最早的交通信號燈。1868年,英國機械工程師納伊特在倫敦威斯敏斯特區(qū)的議會大廈前的廣場上,安裝了世界上最早的煤氣紅綠燈。它由紅綠兩色旋轉(zhuǎn)式方形玻璃提燈組成,紅色表示“停止”,綠色表示“注意”。1869年1月2日,煤氣燈爆炸,使警察受傷,遂被取消。電氣啟動的紅綠燈出現(xiàn)在美國,這種紅綠燈由紅綠黃三色圓形的投光器組成,1914年

2、始安裝于紐約市5號大街的一座高塔上。紅燈亮表示“停止”,綠燈亮表示“通行”。1918年,又出現(xiàn)了帶控制的紅綠燈和紅外線紅綠燈。帶控制的紅綠燈,一種是把壓力探測器安在地下,車輛一接近紅燈便變?yōu)榫G燈;另一種是用擴音器來啟動紅綠燈,司機遇紅燈時按一下嗽叭,就使紅燈變?yōu)榫G燈。紅外線紅綠燈當(dāng)行人踏上對壓力敏感的路面時,它就能察覺到有人要過馬路。紅外光束能把信號燈的紅燈延長一段時間,推遲汽車放行,以免發(fā)生交通事故。信號燈的出現(xiàn),使交通得以有效管制,對于疏導(dǎo)交通流量、提高道路通行能力,減少交通事故有明顯效果。1968年,聯(lián)合國道路交通和道路標(biāo)志信號協(xié)定對各種信號燈的含義作了規(guī)定。綠燈是通行信號,面對綠燈的車

3、輛可以直行,左轉(zhuǎn)彎和右轉(zhuǎn)彎,除非另一種標(biāo)志禁止某一種轉(zhuǎn)向。左右轉(zhuǎn)彎車輛都必須讓合法地正在路口內(nèi)行駛的車輛和過人行橫道的行人優(yōu)先通行。紅燈是禁行信號,面對紅燈的車輛必須在交叉路口的停車線后停車。黃燈是警告信號,面對黃燈的車輛不能越過停車線,但車輛已十分接近停車線而不能安全停車時可以進入交叉路口。我們設(shè)計的單片機控制交通燈就是基于信號燈。1.2芯片簡介:msc-51芯片簡介8051是mcs-51系列單片機的典型產(chǎn)品,我們以這一代表性的機型進行系統(tǒng)的講解。8051單片機包含中央處理器、程序存儲器(rom)、數(shù)據(jù)存儲器(ram)、定時/計數(shù)器、并行接口、串行接口和中斷系統(tǒng)等幾大單元及數(shù)據(jù)總線、地址總線

4、和控制總線等三大總線,現(xiàn)在我們分別加以說明:中央處理器:中央處理器(cpu)是整個單片機的核心部件,是8位數(shù)據(jù)寬度的處理器,能處理8位二進制數(shù)據(jù)或代碼,cpu負(fù)責(zé)控制、指揮和調(diào)度整個單元系統(tǒng)協(xié)調(diào)的工作,完成運算和控制輸入輸出功能等操作。數(shù)據(jù)存儲器(ram): 8051內(nèi)部有128個8位用戶數(shù)據(jù)存儲單元和128個專用寄存器單元,它們是統(tǒng)一編址的,專用寄存器只能用于存放控制指令數(shù)據(jù),用戶只能訪問,而不能用于存放用戶數(shù)據(jù),所以,用戶能使用的ram只有128個,可存放讀寫的數(shù)據(jù),運算的中間結(jié)果或用戶定義的字型表。 程序存儲器(rom):8051共有4096個8位掩膜rom,用于存放用戶程序,原始數(shù)據(jù)或

5、表格。定時/計數(shù)器(rom):8051有兩個16位的可編程定時/計數(shù)器,以實現(xiàn)定時或計數(shù)產(chǎn)生中斷用于控制程序轉(zhuǎn)向。并行輸入輸出(i/o)口:8051共有4組8位i/o口(p0、 p1、p2或p3),用于對外部數(shù)據(jù)的傳輸。全雙工串行口:8051內(nèi)置一個全雙工串行通信口,用于與其它設(shè)備間的串行數(shù)據(jù)傳送,該串行口既可以用作異步通信收發(fā)器,也可以當(dāng)同步移位器使用。中斷系統(tǒng):8051具備較完善的中斷功能,有兩個外中斷、兩個定時/計數(shù)器中斷和一個串行中斷,可滿足不同的控制要求,并具有2級的優(yōu)先級別選擇。時鐘電路:8051內(nèi)置最高頻率達12mhz的時鐘電路,用于產(chǎn)生整個單片機運行的脈沖時序,但8051單片機

6、需外置振蕩電容。單片機的結(jié)構(gòu)有兩種類型,一種是程序存儲器和數(shù)據(jù)存儲器分開的形式,即哈佛(harvard)結(jié)構(gòu),另一種是采用通用計算機廣泛使用的程序存儲器與數(shù)據(jù)存儲器合二為一的結(jié)構(gòu),即普林斯頓(princeton)結(jié)構(gòu)。intel的mcs-51系列單片機采用的是哈佛結(jié)構(gòu)的形式,而后續(xù)產(chǎn)品16位的mcs-96系列單片機則采用普林斯頓結(jié)構(gòu)。1.3論文研究內(nèi)容與章節(jié)安排本文首先通過序言介紹了交通的由來,以及單片機芯片相關(guān)知識,然后通過實際交通燈的考察,運用單片機的知識加以實現(xiàn)。章節(jié)安排如下:第一章 介紹交通燈的由來,以及單片機芯片相關(guān)知識第二章 通過比較法,選出我們用到的方案第三章 理論分析和計算出相

7、關(guān)參數(shù)第四章 電路圖設(shè)計第五章 程序設(shè)計與流程圖第六章 總結(jié)與致謝第二章 方案比較、設(shè)計與論證2.1 電源提供方案 為使模塊穩(wěn)定工作,須有可靠電源。我們考慮了兩種電源方案:方案一:采用獨立的穩(wěn)壓電源。此方案的優(yōu)點是穩(wěn)定可靠,且有各種成熟電路可供選用;缺點是各模塊都采用獨立電源,會使系統(tǒng)復(fù)雜,且可能影響電路電平。 方案二:采用單片機控制模塊提供電源。本方案的優(yōu)點是系統(tǒng)簡明扼要,節(jié)約成本;缺點是輸出功率不高。綜上所述,我們選擇第二種方案,如圖2-1。圖2-1電源電路2.2 顯示界面方案:該系統(tǒng)要求完成倒計時、狀態(tài)燈等功能。基于上述原因,我們考慮了三種方案: 方案一:完全采用數(shù)碼管顯示。這種方案只顯

8、示有限的符號和數(shù)碼字符,無法勝任題目要求。方案二:完全采用點陣式led 顯示。這種方案實現(xiàn)復(fù)雜,且須完成大量的軟件工作;但功能強大,可方便的顯示各種英文字符,漢字,圖形等。 方案三:采用數(shù)碼管與點陣led 相結(jié)合的方法因為設(shè)計既要求倒計時數(shù)字輸出,又要求有狀態(tài)燈輸出等,為方便觀看并考慮到現(xiàn)實情況,用數(shù)碼管與led燈分別顯示時間與提示信息。這種方案既滿足系統(tǒng)功能要求,又減少了系統(tǒng)實現(xiàn)的復(fù)雜度。權(quán)衡利弊,第三種方案可互補一二方案的優(yōu)缺,我們決定采用方案三以實現(xiàn)系統(tǒng)的顯示功能。2.3 輸入方案:題目要求系統(tǒng)能手動設(shè)燈亮?xí)r間、緊急情況處理,我們討論了兩種方案:方案一:采用8155擴展i/o 口及鍵盤,

9、顯示等。該方案的優(yōu)點是:使用靈活可編程,并且有ram,及計數(shù)器。若用該方案,可提供較多i/o 口,但操作起來稍顯復(fù)雜。方案二: 直接在io口線上接上按鍵開關(guān)。因為設(shè)計時精簡和優(yōu)化了電路,所以剩余的口資源還比較多,我們使用四個按鍵,分別是k1、k2、k3、k4。由于該系統(tǒng)對于交通燈及數(shù)碼管的控制,只用單片機本身的i/o 口就可實現(xiàn),且本身的計數(shù)器及ram已經(jīng)夠用,故選擇方案二。第三章 理論分析與計算 3.1 交通燈顯示時序的理論分析與計算對于一個交通路口來說,能在最短的時間內(nèi)達到最大的車流量,就算是達到了最佳的性能,我們稱在單位時間內(nèi)多能達到的最大車流為車流量,用公式:車流量= 車流 / 時間

10、來表示。行人燈行人燈白圈代表紅燈黑圈代表綠燈左彎燈車人行駛右彎燈圖3-1標(biāo)號設(shè)定 32 規(guī)則狀態(tài)圖說明:此圖為直方圖,上邊為北路口燈,右邊為東路口燈,下邊為南路口燈,左邊為西路口燈。圖32 所示為一種紅綠燈規(guī)則的狀態(tài)圖,分別設(shè)定為s1、s2、s3、s4,交通燈以這四種狀態(tài)為一個周期,循環(huán)執(zhí)行見圖33。 圖3-3a車輛行駛狀態(tài)s1 圖3-3b車輛行駛狀態(tài)s2 圖3-3c車輛行駛狀態(tài)s3 圖3-3d車輛行駛狀態(tài)s43-3 交通燈四種狀態(tài)請注意圖31b和圖31d,它們在一個時間段中四個方向都可以通車,這種狀態(tài)能在一定的時間內(nèi)達到較大的車流量,效率特別高。依據(jù)上述的車輛行駛的狀態(tài)圖,可以列出各個路口燈

11、的邏輯表,由于相向的燈的狀態(tài)圖是一樣的,所以只需寫出相鄰路口的燈的邏輯表;根據(jù)圖33可以看出,相鄰路口的燈它們的狀態(tài)在相位上相差180。因此最終只需寫出一組s1、s2、s3、s4的邏輯狀態(tài)表。如表31 所示:開始s1s4s3s2s2s1s3s4外圈是北方為前進方向的狀態(tài)循環(huán),內(nèi)圈是東方為前進方向的狀態(tài)循環(huán)s1的狀態(tài)abcdefgh邏輯值顯示時間 從40秒到0秒s2的狀態(tài)abcdefgh邏輯值顯示時間從30秒到0秒s3的狀態(tài)abcdefgh邏輯值顯示時間從70秒到30秒s4的狀態(tài)abcdefgh邏輯值顯示時間從30秒到0秒表3-1 交通燈的循環(huán)邏輯表表中的“”代表是紅燈亮(也代表邏輯上的0),“

12、”是代表綠燈亮(也代表邏輯上的1),依上表,就可以向相應(yīng)的端口送邏輯值。3.2 交通燈顯示時間的理論分析與計算東西和南北方向的放行時間的長短是依據(jù)路口的各個方向平時的車流量來設(shè)定,并且s1、s2、s3、s4各個狀態(tài)保持的時間之有嚴(yán)格的對應(yīng)關(guān)系,其公式如下所示:t-s1+t-s2=t-s3t-s2=t-s4t-s1=t-s3我們可以依據(jù)上述的標(biāo)準(zhǔn)來改變車輛的放行時間。按照一般的規(guī)則,一個十字路口可分為主干道和次干道,主干道的放行時間大于次干道的放行時間,我們設(shè)定值時也應(yīng)以此為參考。第四章 電路圖及設(shè)計文件4.1 燈控制電路設(shè)計紅綠燈的顯示采用普通的發(fā)光二極管,每個方向上設(shè)置紅綠黃燈及行人燈各一個

13、,共四組,如圖4-1所示。如果東西方向紅燈亮那南北方向就是綠燈,反之亦然,所以在硬件連接圖上也成對稱分布。 圖4-1 led控制電路4.2倒計時顯示電路設(shè)計 8段led是一種常用的數(shù)碼顯示屏。這種數(shù)碼管的每個線段都是一個發(fā)光二極管,因而把它叫做led數(shù)碼管。由于在數(shù)碼管的右下角增加了一個小數(shù)點,形成了所謂的8段數(shù)碼管。e10501是屬于共陰極類型的數(shù)碼管,只要公共端接地,其他端送上高電平就能點亮。e10501不僅具有工作電壓低,體積小,壽命長,可靠性高等優(yōu)點,而且響應(yīng)時間短(一般不超過0.1微秒),亮度也比較高。缺點是工作電流比較高,一般工作電流都在10毫安左右。e10501的外形圖和等效電路

14、圖如圖4-2-1所示。圖4-2-1e10501外形圖圖4-2-2 e10501等效電路圖led段顯示數(shù)碼管的設(shè)置為每個方位上一對2位顯示器。四個方位上總共有8個led接在單片機的i/o口上。顯示時我們不需要小數(shù)點,所以每個led的10根管腳只用了9根。連接后的時間顯示電路,如圖4-2-2所示,雖然路口不一樣,但是顯示的時間在數(shù)字上是一樣的,所以兩邊連接的i/o口是對稱的,原理圖如圖4-2-3。圖4-2-3 數(shù)碼管顯示4.3違規(guī)車輛檢測電路設(shè)計在紅燈和黃燈期間,車輛是禁止通行的.為了對那些違反規(guī)則的車輛進行檢測,受條件限制,本系統(tǒng)設(shè)計中只使用了普通光敏二極管?;驹O(shè)計思路如下:將光敏二極管放在停

15、車線上,當(dāng)車輛通過的時候,因光敏二極管給遮住,二極管就不導(dǎo)通,單片機檢測到這一信號后就執(zhí)行報警操作。但是,顯然在實際中,使用發(fā)光二極管無法實現(xiàn)。違規(guī)車輛檢測電路除了使用光敏二極管,還使用了三極管,型號為9031。由于普通的光敏二極管的開關(guān)性能不是很好,所以在設(shè)計中加個三極管做開關(guān)。由于普通光敏二極管在導(dǎo)通的情況下的電阻能達到0.51k,所以在設(shè)計中將光敏二極管直接接上了電源。同時三極管還可以起到一定的隔離作用。當(dāng)光敏二極管關(guān)斷時,三極管的基極為低電平,基極與發(fā)射極之間電壓為零,三極管關(guān)斷,檢測口的電壓為高電平;同理,當(dāng)光敏二極管導(dǎo)通時,三極管的基極電壓為高電平,基極與發(fā)射極之間的電壓為高,三極

16、管導(dǎo)通,檢測口的電壓為低電平。基于此就可以檢測是否有車輛違章,其原理圖如圖4-3。圖4-3 違規(guī)檢測電路第五章 程序設(shè)計思路與流程圖5.1主程序流程圖 程序初始化是否是狀態(tài)s1啟動狀態(tài)s1是否是狀態(tài)s2啟動狀態(tài)s2是否是狀態(tài)s3啟動狀態(tài)s3是否是狀態(tài)s4啟動狀態(tài)s4按鍵是否按下按鍵處理返回開始主程序開始是運用定時器0來定時,達到準(zhǔn)確記時,在往下走就走到程序的死循環(huán)部分,分別判斷是哪一個狀態(tài),當(dāng)是狀態(tài)s1時,就用軟件的方法啟動s1,運行s1,及南北通行,東西禁止。后面s2、s3、s4與s1一樣,在這過程中,如果遇到突發(fā)事件,則要進行突發(fā)事件的按鍵處理,當(dāng)突發(fā)事件處理完后,在回到主程序,其流程圖如

17、圖51所示。 圖5-1主程序流程圖 部分主程序如下:/主函數(shù)/void main () t=5; time_init (); /定時器初始化 sec=count_down; /定時初值while(1) key_scan(); /按鍵掃描 switch (key_flag) case 0:t+;if(t=30)t=5;break;/設(shè)置時間 case 1:tr2 = 1;break; /恢復(fù) case 2:ew_on;p1=led4;tr2 = 0;break; /南北禁行,定時器停止 case 3:sn_on;p1=led4;tr2 = 0;break; /東西禁行,定時器停止 /=狀態(tài)s1=

18、 if( (aspect_flag = 0)&(interim_flag = 0)&(key_flag = 0) ) ew_on; p1=led0; p2=led7code(sec-interim)/10; /東西方向綠燈,少5秒 delay1ms(1); p2 = 0xff; p1=led1; p2=led7code(sec-interim)%10; delay1ms(1); p1=led2; p2=led7codesec/10; /南北方向紅燈 delay1ms(1); p2=0xff; p1=led3; p2=led7codesec%10; delay1ms(1); /=狀態(tài)s2= if

19、( (aspect_flag = 0)&(interim_flag = 1)&(key_flag = 0) ) if(half_sec % 2 = 1) ew_y_on; else ew_y_off; p1=led0; p2=led7codesec/10; /東西方向黃燈 delay1ms(1); p2 = 0xff; p1=led1; p2=led7codesec%10; delay1ms(1); p1=led2; p2=led7codesec/10; /南北方向紅燈 delay1ms(1); p2 = 0xff; p1=led3; p2=led7codesec%10; delay1ms(1

20、); /=狀態(tài)s3= if( (aspect_flag = 1)&(interim_flag = 0)&(key_flag = 0) ) sn_on; p1=led0; p2=led7codesec/10; /東西方向紅燈 delay1ms(1); p2 = 0xff; p1=led1; p2=led7codesec%10; delay1ms(1); p1=led2; p2=led7code(sec-interim)/10; /南北方向綠燈,少5秒 delay1ms(1); p2 = 0xff; p1=led3; p2=led7code(sec-interim)%10; delay1ms(1)

21、; /=狀態(tài)s4= if( (aspect_flag = 1)&(interim_flag = 1)&(key_flag = 0) ) if(half_sec % 2 = 1) sn_y_on; else sn_y_off; p1=led0; p2=led7codesec/10; delay1ms(1); p2 = 0xff; p1=led1; p2=led7codesec%10; delay1ms(1); p1=led2; p2=led7codesec/10; delay1ms(1); p2 = 0xff; p1=led3; p2=led7codesec%10; delay1ms(1); 5

22、.2按鍵子程序流程圖它包含倒計時調(diào)整和緊急狀態(tài)兩個狀態(tài)。主程序中放了一個按鍵的判斷指令,當(dāng)有按鍵按下的時候,程序就自動的跳轉(zhuǎn)到按鍵子程序處理。當(dāng)檢測到k2鍵按下的時候就自動返回到主程序。當(dāng)出現(xiàn)緊急的情況的時候,按下k3或者k4就切換到緊急狀態(tài),當(dāng)緊急事件處理完畢的時候,按下k2,就可以返回正常狀態(tài),流程圖如圖5-2。k1按k2按k3按進入時間調(diào)整循環(huán)執(zhí)行s1s3+,s4k4按返回循環(huán)執(zhí)行s3 圖 5-2按鍵子程序流程圖圖5-3 按鍵設(shè)置 鍵盤分編碼鍵盤和非編碼鍵盤。鍵盤上閉合鍵的識別由專用的硬件編碼器實現(xiàn),并產(chǎn)生鍵編碼號或鍵值的稱為編碼鍵盤,如計算機鍵盤.而靠軟件編程來識別的稱為非編碼鍵盤;在

23、單片機組成的各種系統(tǒng)中,用的最多的是非編碼鍵盤。也有用到編碼鍵盤的。非編碼鍵盤有分為:獨立鍵盤和行列式(又稱為矩陣式)鍵盤。其圖如圖5-4,而我們用的是獨立式鍵盤,如上圖5-3。圖5-4 矩陣鍵盤的原理圖按鍵在編寫程序時,應(yīng)注意問題,如消顫,一般有物理消顫和軟件消顫,我們這使用 軟件消顫。具體操作是,當(dāng)按鍵按下,用軟件延時一段時間,再次掃描按鍵情況,如果確實有按鍵按下,就進入相應(yīng)的操作。當(dāng)操作完后要做一個按鍵是否斷開的判斷,其依據(jù)如圖5-5: 圖5-5 鍵閉合和斷開時的電壓抖動按鍵程序:void key_scan()if (key1 = 0)delay1ms(10); /按下延時消顫if (k

24、ey1 = 0) if(key_flag = 1) key_flag = 0; /取消 else key_flag = 1; /確定 while(key1 = 0);delay1ms(5); /彈起延時消顫while(key1 = 0);if (key2 = 0)delay1ms(10); /按下延時消顫if (key2 = 0) if(key_flag = 2) key_flag = 0; /取消 else key_flag = 2; /確定 while(key2 = 0);delay1ms(5); /彈起延時消顫while(key2 = 0);if (key3 = 0)delay1ms(1

25、0); /按下延時消顫if (key3 = 0) if(key_flag = 3) key_flag = 0; /取消 else key_flag = 3; /確定 while(key3 = 0);delay1ms(5); /彈起延時消顫while(key3 = 0);if (key4 = 0)delay1ms(10); /按下延時消顫if (key4 = 0) if(key_flag = 4) key_flag = 0; /取消 else key_flag = 4; /確定 while(key4= 0);delay1ms(5); /彈起延時消顫while(key4 = 0);第六章 測試、數(shù)

26、據(jù)及結(jié)果分析6.1狀態(tài)燈顯示測試當(dāng)電路連接完畢后,將寫好的測試程序刷寫到芯片內(nèi),開啟電源開關(guān)k,以及按下k1 和k2分別給端口送高電平和低電平,通電即可檢測。6.2數(shù)碼管的測試 將串口和電路板上的接口連接,通過專業(yè)燒寫軟件,將寫好的相應(yīng)測試程序及.hex文件刷寫到芯片內(nèi),我們這用的isplayv15下載線編程軟件,其顯示的效果圖如圖6-1,開電源即可測試。 圖6-1 isp下載軟件6.3整體電路測試系統(tǒng)上電,刷寫好程序即可開始測試,觀測一個周期(共計s1s4四個狀態(tài),(默認(rèn)140秒)燈的顯示狀態(tài)是否正常,同時觀察倒計的計數(shù)是否正常,以及按鍵調(diào)節(jié)突發(fā)事件,是否正常???結(jié)由于使用的是單片機作為核

27、心的控制元件,使得電路的可靠性比較高,功能也比較強大,而且可以隨時的更新系統(tǒng),進行不同狀態(tài)的組合。但是在我們設(shè)計和調(diào)試的過程中,也發(fā)現(xiàn)了一些問題,譬如紅燈和綠燈的切換還不夠迅速,紅綠燈規(guī)則的效率還不是很高等等,這需要在實踐中進一步完善。且功能的全面性還不夠強,經(jīng)過這么長的時間的失敗到成功的過程,讓我更加清楚的明白單片機的運用就是對其端口的控制,同時外圍電路的設(shè)計以及了解,讓我對以前學(xué)過的知識能更加了解和認(rèn)識,比如:電路、數(shù)、模電子技術(shù)、單片機技術(shù)、自動檢測技術(shù)、電路板設(shè)計、智能儀器的設(shè)計應(yīng)用與傳感器的使用。在這段時間中,李老師們給了我很大的幫助,還有很多班上的同學(xué)及網(wǎng)上好友,你們對我的幫助和指

28、導(dǎo)我非常感謝!附錄:系統(tǒng)總體電路圖: 交通燈總原理圖 總程序:/*/作品名稱: 十字路口簡易交通燈/設(shè)計者: 劉偉/功能介紹:/ key1按下,設(shè)置時間/ key2按下,恢復(fù)/ key3按下,東西禁止通行/ key4按下,南北禁止通行/設(shè)計時間: 2009.5.15/*#include #include /= #define uchar unsigned char#define uint unsigned int/=指示燈狀態(tài)定義=#define all_off (p0 = 0xdb)/全部禁行#define ew_on (p0 = 0xeb) /東西綠燈,南北紅燈#define sn_on

29、(p0 = 0xdd) /南北綠燈,東西紅燈#define ew_y_on (p0 = 0xf3) /南北紅燈,東西黃燈亮#define ew_y_off (p0 = 0xfb) /南北紅燈,東西黃燈滅#define sn_y_on (p0 = 0xde) /東西紅燈,南北黃燈亮#define sn_y_off (p0 = 0xdf) /東西紅燈,南北黃燈滅#define count_down 70 /定時時間#define interim t /黃燈過渡時間/=按鍵定義=sbit key1 = p24; /時間設(shè)置sbit key2 = p25; /恢復(fù)sbit key3 = p26; /東

30、西禁行sbit key4 = p27; /南北禁行/=函數(shù)定義=void time_init (); /定時器初始化void delay1ms(uchar t); /延時t*1msvoid delay1s(uchar t); /延時t*1svoid key_scan(); /鍵盤掃描/=數(shù)碼管選擇定義=const uchar led7code=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /段碼const uchar led=0x01,0x02,0x04,0x08,0x00;/共陽數(shù)碼管位選/=變量定義=uchar t50ms = 0;

31、/50ms累加位uchar half_sec,sec; /半秒,秒寄存器 uchar key_flag; /鍵值標(biāo)記位uint t;bit aspect_flag = 0; /0:東西通行,1:南北通行bit interim_flag = 0; /0:東西黃燈,1:南北黃燈/主函數(shù)/void main () t=5; time_init (); /定時器初始化 sec=count_down; /定時初值while(1) key_scan(); /按鍵掃描 switch (key_flag) case 0:t+;if(t=30)t=5;break;/設(shè)置時間 case 1:tr0 = 1;bre

32、ak; /恢復(fù) case 2:ew_on;p1=led4;tr0 = 0;break; /南北禁行,定時器停止 case 3:sn_on;p1=led4;tr0 = 0;break; /東西禁行,定時器停止 /=狀態(tài)s1= if( (aspect_flag = 0)&(interim_flag = 0)&(key_flag = 0) ) ew_on; p1=led0; p2=led7code(sec-interim)/10; /東西方向綠燈,少5秒 delay1ms(1); p2 = 0xff; p1=led1; p2=led7code(sec-interim)%10; delay1ms(1)

33、; p1=led2; p2=led7codesec/10; /南北方向紅燈 delay1ms(1); p2=0xff; p1=led3; p2=led7codesec%10; delay1ms(1); /=狀態(tài)s2= if( (aspect_flag = 0)&(interim_flag = 1)&(key_flag = 0) ) if(half_sec % 2 = 1) ew_y_on; else ew_y_off; p1=led0; p2=led7codesec/10; /東西方向黃燈 delay1ms(1); p2 = 0xff; p1=led1; p2=led7codesec%10;

34、delay1ms(1); p1=led2; p2=led7codesec/10; /南北方向紅燈 delay1ms(1); p2 = 0xff; p1=led3; p2=led7codesec%10; delay1ms(1); /=狀態(tài)s3= if( (aspect_flag = 1)&(interim_flag = 0)&(key_flag = 0) ) sn_on; p1=led0; p2=led7codesec/10; /東西方向紅燈 delay1ms(1); p2 = 0xff; p1=led1; p2=led7codesec%10; delay1ms(1); p1=led2; p2=

35、led7code(sec-interim)/10; /南北方向綠燈,少5秒 delay1ms(1); p2 = 0xff; p1=led3; p2=led7code(sec-interim)%10; delay1ms(1); /=狀態(tài)s4= if( (aspect_flag = 1)&(interim_flag = 1)&(key_flag = 0) ) if(half_sec % 2 = 1) sn_y_on; else sn_y_off; p1=led0; p2=led7codesec/10; delay1ms(1); p2 = 0xff; p1=led1; p2=led7codesec%

36、10; delay1ms(1); p1=led2; p2=led7codesec/10; delay1ms(1); p2 = 0xff; p1=led3; p2=led7codesec%10; delay1ms(1); /*名稱:void time_init ();功能:定時器初始化指令:調(diào)用:無返回:無/*/void time_init () tmod = 0x01;rcap2h =(65536-50000)/256; /定時50ms 自動重裝rcap2l =(65536-50000)%256;ea = 1; /總中斷使能et0 = 1; /定時器0中斷開tr0 = 1; /關(guān)定時器0/*名

37、稱:void tim0 () interrupt 1功能:t0中斷,參數(shù):調(diào)用:返回:*/ void pwm_time0 () interrupt 1rcap2h =(65536-50000)/256; /定時50ms 自動重裝rcap2l =(65536-50000)%256;tf2 = 0; /清零中斷標(biāo)志位/et2 = 0; /定時器0中斷禁止if(+ t50ms = 10) half_sec+; t50ms = 0; if(half_sec = 2) half_sec = 0; /清零 if(-sec =interim ) interim_flag = 1;/黃燈閃爍標(biāo)志 if(sec

38、 =0) sec = count_down; aspect_flag = !aspect_flag; /換向 interim_flag = 0;/黃燈閃爍關(guān)閉 /*名稱:void key_scan()功能:按鍵掃描參數(shù):調(diào)用:返回:*/ void key_scan()if (key1 = 0)delay1ms(10); /按下延時消顫if (key1 = 0) if(key_flag = 1) key_flag = 0; /取消 else key_flag = 1; /確定 while(key1 = 0);delay1ms(5); /彈起延時消顫while(key1 = 0);if (key2

39、 = 0)delay1ms(10); /按下延時消顫if (key2 = 0) if(key_flag = 2) key_flag = 0; /取消 else key_flag = 2; /確定 while(key2 = 0);delay1ms(5); /彈起延時消顫while(key2 = 0);if (key3 = 0)delay1ms(10); /按下延時消顫if (key3 = 0) if(key_flag = 3) key_flag = 0; /取消 else key_flag = 3; /確定 while(key3 = 0);delay1ms(5); /彈起延時消顫while(ke

40、y3 = 0);if (key4 = 0)delay1ms(10); /按下延時消顫if (key4 = 0) if(key_flag = 4) key_flag = 0; /取消 else key_flag = 4; /確定 while(key4= 0);delay1ms(5); /彈起延時消顫while(key4 = 0);/*=名稱: void delay1ms(uchar t);功能:延時1ms參數(shù):t,最大255調(diào)用: 無返回:無=*/void delay1ms(uchar t) uchar i; for (;t0;t-) for (i=0;i138;i+) _nop_();_nop

41、_();_nop_();_nop_();_nop_(); 參考文獻及網(wǎng)站:1 李朝青.單片機原理及接口技術(shù)(修訂版).北京:北京航空航天大學(xué)出版社,1998年2 李廣弟.單片機基礎(chǔ).北京:北京航空航天大學(xué)出版社,1992年3 何立民.單片機應(yīng)用技術(shù)大全.北京:北京航空航天大學(xué)出版社, 1994年4 張毅剛. 單片機原理及接口技術(shù).哈爾濱:哈爾濱工業(yè)大學(xué)出版社,1990年5 譚浩強.單片機課程設(shè)計. 北京:清華大學(xué)出版社,1989年 6單片機學(xué)習(xí)網(wǎng)7邊海龍,單片機開發(fā)與典型工程項目,電子工業(yè)出版社,2008年8郭天翔單片機網(wǎng)絡(luò)視頻,2007年。9 21ic單片機學(xué)習(xí)網(wǎng)。g an employme

42、nt tribunal claiemployment tribunals sort out disagreements between employers and employees.you may need to make a claim to an employment tribunal if: you dont agree with the disciplinary action your employer has taken against you your employer dismisses you and you think that you have been dismisse

43、d unfairly.for more information about dismissal and unfair dismissal, seedismissal.you can make a claim to an employment tribunal, even if you haventappealedagainst the disciplinary action your employer has taken against you. however, if you win your case, the tribunal may reduce any compensation aw

44、arded to you as a result of your failure to appeal.remember that in most cases you must make an application to an employment tribunal within three months of the date when the event you are complaining about happened. if your application is received after this time limit, the tribunal will not usuall

45、y accept i.if you are worried about how the time limits apply to you, take advice from one of the organisations listed underfurther help.employment tribunals are less formal than some other courts, but it is still a legal process and you will need to give evidence under an oath or affirmation.most p

46、eople find making a claim to an employment tribunal challenging. if you are thinking about making a claim to an employment tribunal, you should get help straight away from one of the organisations listed underfurther help.if you are being represented by a solicitor at the tribunal, they may ask you

47、to sign an agreement where you pay their fee out of your compensation if you win the case. this is known as adamages-based agreement. in england and wales, your solicitor cant charge you more than 35% of your compensation if you win the case.if you are thinking about signing up for a damages-based agree

溫馨提示

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

評論

0/150

提交評論