隨著城市汽車數(shù)量的增加,市內交通道口的交通流量迅速增加,這對交通指揮的 實時、高效提出了更高的要求,原有的按固定時間放行的紅綠燈在交通繁忙時段已不 能適應交通指揮的要求,通常需要人工根據(jù)實際交通進行干預,目前采用的方式是直 接操作控制柜內相應開關進行控制,這對觀察車流情況不利,并且雨天也不安全。本 實用新型根據(jù)紅外線遙控原理設計了紅外線輔助控制裝置,在紅綠燈信號控制柜中安 裝本裝置,使用人員就可以在一定距離范圍內進行遙控操作,使用靈活,安全可靠, 很大程度上解決了上下班高峰時期的交通堵塞問題,方便了上班族的出行。紅外線遙 控原理圖如圖 3-4 所示。
單片機的紅外遙控發(fā)射器是由電源、單片機、行列式鍵盤、控制電路、紅外發(fā)射 電路。
單片機待機時保持功耗低的狀態(tài),使用空閑的節(jié)電工作模式。在按下遙控裝置的 按鍵時,外部中斷1就立即產生了中斷請求,讓單片機立馬切換為工作狀態(tài),確認下鍵 盤按下的按鍵,在按鍵被確認以后,控制的軟件就會啟動定時器 T0、T1和 T1,用來作 為發(fā)射時間的控制器,紅外線發(fā)射頻率控制器為 T0,T0定時溢出時,,紅外管接口電平 通過中斷程序反轉一次,定時器的初始值設定不同,不同發(fā)射頻率就會被傳輸?shù)捷敵?口和輸入口。在定時 T1溢出時,中斷程序就會關閉 T0定時器,而紅外線發(fā)射也隨之停 止。其原理框圖如圖3-6。
使用單片機中的 T0來做紅外脈沖計數(shù)器,T1來做計數(shù)時間控制器。接收管收到收 個紅外脈沖后,就觸發(fā)外部中斷1,計數(shù)器 T0、定時器 T1就開始工作。當定時溢出時, 計數(shù)器 T0被中斷程序隨之關閉,通過判定所讀入的計數(shù)數(shù)值,來定下將操作的對象(遙 控按鍵)對它進行相對的操作,控制電路來控制負載的狀態(tài)。下圖3-7為紅外遙控接收 器設計原理框圖。
來顯示四個路口的倒計時,數(shù)碼管的陽極都接到 STC89C52 的 P0 口,陰極接到 P2 口; 共 12 個發(fā)光二極管,其中 4 個綠色發(fā)光二極管,4個紅色發(fā)光二極管,4 個黃色發(fā)光 二極管,四個路口每個路口各有一個紅(禁行)、一個黃(警告)發(fā)光二極管,一個綠 色發(fā)光二極管(通行),四個人行道,每個人行道兩邊各有一紅、黃、綠發(fā)光二極管, 另外一個按鍵按鈕用于繁忙模式和夜間模式的轉換,其中四個路口的二極管接到 P1 口, 人行道的發(fā)光二極管接到 P3 口,繁忙模式和特殊模式的指示燈接 P2 口。
3 分別為輸入端和輸出端濾波電容,RL 為負載電阻。當輸出電較大時,7805 應配上散 熱板。電源電路圖如圖 3-9 所示。
如圖所示,220V 的交流電壓經過一個變壓器生成一個 9V 的交流電壓,通過轉換電 路進入集成穩(wěn)壓器 7805,最終輸出一個+5V 的直流電壓,可以提供穩(wěn)定的電源。
本設計設置了有 3 個按鍵——S1:S 鍵接 P3.6,S2:J 鍵接 P3.0,S3:F 鍵接 P3.7。 每個按鍵一端接地,另一端接上拉電阻。低電平有效,當按鍵按下端口接地,單片機捕獲 到低電平,從而知道相應的輸入信息。
本章內容前面一部分主要從理論上介紹了硬件設計的內容,后半部分結合電路圖 把理論與實物相結合,介紹了系統(tǒng)的工作原理以及設計原理。當然我設計的簡易交通 燈還是有很多不足的地方,需要以后再根據(jù)實際情況不斷加強功能。
全部控制程序實際上分為若干模塊:鍵盤設置處理程序,狀態(tài)燈控制程序,LED 顯 示程序,消抖動延時程序,中斷服務子程序等。交通燈的總流程圖如圖 4-1 所示。
電路系統(tǒng)上電,設置初始紅燈等待時間 90 秒,即 S1 狀態(tài)為正常模式狀態(tài),即在 非上下班高峰時段,此時交通燈正常運行,紅燈等待時間為 90 秒;S2 為上下班高峰繁 忙模式,此時通過紅外遙控或者按鍵來轉換交通燈的運行模式,紅燈等待時間為 40 秒; S3 為深夜特殊模式,此時通過紅外遙控或者按鍵可以控制,無需紅燈等待時間。
3.6,P3.0,P3.7,低電平有效,按鍵順序是指定的,若直接按 S 鍵,則為正常模式,然后進入 下一程序;若再按 J 鍵,則為繁忙模式,然后進入下一程序;若按下 F 鍵,則為特殊模式, 并進入下一程序。
程序的開始要判斷是否有鍵按下,可以不斷將 J 鍵值和 F 鍵值相或,或值為 0 則表示 沒有鍵按下,即交通燈正常運行,為 1 則表示有鍵按下,交通燈啟動了上下班高峰模式或者深夜特殊模式。
接下來要判斷具體是那個鍵,若為 J 鍵,則表示啟動的是上下班高峰模式,進入下一 程序,否則為 F 鍵,則表示啟動的是深夜特殊模式,用 R0 存值,同時還需判斷此時 S 鍵 是否按下,若按下,則表示恢復正常模式,進入下一程序。
在這個過程中,S,J 鍵的計數(shù)是循環(huán)的,從 S 鍵按下設置的初值 90 開始,減到 J 鍵 按下設置的值 40 則循環(huán)回到初值 90。
4.3 定時器的參數(shù)設計
定時器工作的時候需要給計數(shù)器傳送計數(shù)器的初值,該值要傳送到 TL 和 TH 中。 定時器是運用加法記數(shù),可以從全 1 到全 0 的時候自動的產生一個溢出中斷請求。這 樣我們就可以把計數(shù)器它記滿為 0 所需要的計數(shù)值設為 C,把計數(shù)初值設為 TC,計算
通式如下:
很明顯一秒鐘超過了計數(shù)器所能表示的最大時間,因而我們就必須采用軟件和定 時器相結合的方法去解決這個難題。
軟件延時部分:MCS-51 的工作頻率為 12MHZ。機器周期與主頻有關,機器周期是 主頻的 12 倍,所以一個機器周期的時間為 12*(1/12M)=1us。我們可以知道具體每條 指令的周期數(shù),這樣我們就可以通過指令的執(zhí)行條數(shù)來確定 1 秒的時間。由于單片機 運行的速度非常快,所以其他的一些指令的執(zhí)行耗時可以不用考慮。
設定一個初值是 40 的軟件計數(shù)器讓 T0 定時為 50 毫秒。這樣的話每次 T0 到了 50 毫秒的時候處理器就響應溢出的中端請求,并且進入中斷服務的子程序。在中斷服務 的子程序里,CPU 先讓軟件的計數(shù)器減少 1,再去判斷其是否是零。如果是零的話表示 一秒就到了。定時器要設為 50 毫秒,T0 工作方式必須在 1 上,初值計算如下:
TC=M-T*T0=216-50ms=15536=3CBOH 定時器 0 中斷流程如圖 4-2 所示:
圖 4-2 定時器 0 中斷流程圖
/**********************T0 中斷服務程序*******************/
void timer0(void)interrupt 1 using 1
{
static uchar count; TH0=(65536-50000)/256; TL0=(65536-50000)%256; count++;
if(count==10)
{
if(Flag_SN_Yellow==1) //測試南北黃燈標志位
{SN_Yellow=~SN_Yellow;}
洛陽理工學院電氣工程與自動化學院項目設計說明書
if(Flag_EW_Yellow==1) //測試東西黃燈標志位
{EW_Yellow=~EW_Yellow;}
}
if(count==20)
{
Time_EW--; Time_SN--;
if(Flag_SN_Yellow==1) //測試南北黃燈標志位
{SN_Yellow=~SN_Yellow;}
if(Flag_EW_Yellow==1) //測試東西黃燈標志位
{EW_Yellow=~EW_Yellow;}
count=0;
}
}
4.4 中斷原理
本系統(tǒng)主要使用了外部中斷,中斷信號有兩個引腳 INT0、INT1 進行輸入,低電平 時有效,CPU 每個時鐘周期都會檢測 INT0 和 INT1 上的信號,STC89C52 允許外部中斷 以電平方式或負邊沿方式兩種中斷方式輸入中斷請求信號,可由用戶通過設置 TCON 中 IT0 和 IT1 位的狀態(tài)來實現(xiàn)。以 IT0 為例,IT0=0,為電平觸發(fā)的方式,IT0=1,是負邊 沿觸發(fā)的方式,本設計采用電平方式,IE0 為其中斷標志位,有中斷信號則置位,中斷 服務子程序響應后,IE0 自動清零。IE 中的 EA 為允許中斷的總控制位,為 1 開啟,EX0 為外部中斷允許控制位,為 1 開啟。在優(yōu)先級的允許下,一旦有外部中斷信號產生, 單片機 CPU 首先保護斷點,PC 值進棧,然后執(zhí)行相應的中斷服務子程序,執(zhí)行完后, 用 RETI 指令返回,此時 CPU 會從堆棧中取保存的斷點地址,送回 PC,程序再正常執(zhí)行,ED 倒計時顯示。
外部中斷流程圖如圖 4-3 所示。
子程序如下:
圖 4-3 外部中斷 0 中斷流程圖
/**********************外部 0 中斷服務程序******************/
void INT0_srv(void)interrupt 0 using 1
{
EX0=0; //關中斷
if(Nomor_Button==0) //測試按鍵是否按下,按下來為正常狀態(tài)
{
EW1=90; SN1= 40; EWL1=19; SNL1=19;
Busy_LED=0; //關繁忙信號燈
Special_LED =0; //關特殊信號燈
洛陽理工學院電氣工程與自動化學院項目設計說明書
}
if(Busy_Btton==0) //測試按鍵是否按下,按下為繁忙狀態(tài)
{
EW1=45; SN1=30; EWL1=14; SNL1=14;
Special_LED=0; //關特殊信號燈
Busy_LED=1; //開繁忙信號燈
}
if(Special_Btton==0)//測試按鍵是否按下,按下為特殊狀態(tài)
{
EW1=75; SN1=55; EWL1=19; SNL1=19;
Busy_LED=0; //關繁忙信號燈
Special_LED =1;//開特殊信號燈
}
EX0=1; //開中斷
}
4.5 狀態(tài)燈顯示及判斷
在本設計中,實際控制的燈只有 6 個,即:東西紅燈,東西綠燈,東西黃燈,南 北紅燈,南北綠燈,南北黃燈。IO 端口均是低電平有效。共有 4 種狀態(tài):東西紅燈亮, 南北綠燈亮(11011101);東西紅燈亮,南北黃燈亮(10111101);東西綠燈亮,南北 紅燈亮(11101101);東西黃燈亮,南北紅燈亮(11100111)。
在用于顯示發(fā)光二極管時,直接由 MOV 指令將十六進制碼送入 P2 口。
剛才的 4 個狀態(tài)是依次變換的,這就要涉及到狀態(tài)的判斷和銜接了。先把 P2 端口 的值與所有的 4 個狀態(tài)碼比較,若相同則判斷成功當前狀態(tài),再把下一狀態(tài)的狀態(tài)碼 送顯 P2 即可。狀態(tài)燈定義如下:(見附件)
計時每 1 秒都要刷新 1 次,那么計時滿 1 秒時就要將存儲時間的工作寄存器 R4 減 1,然后送入顯示程序中顯示。下面要將時間數(shù)據(jù) R4 的十位,個位分開送顯 P1, P0 端口,首先將 R4 除以 10,整數(shù)即十位放在 A 中,余數(shù)即個位放在 B 中,設置 7 段 顯示數(shù)據(jù)的數(shù)據(jù)表,用數(shù)據(jù)指針寄存器 DPTR 指向數(shù)據(jù)表的首地址,再加上 A 中的偏 移量,就可以指向十位數(shù)字,然后送顯即可,個位顯示同理。設計中得延時程序都是 用軟件完成,通過程序執(zhí)行一條指令的時間,再加上了兩次累減嵌套來實現(xiàn)。
在按鍵計數(shù)的過程里,存在機械抖動和軟件方面的沖突,比如程序檢測到了有按鍵 按下,就計數(shù)一次,而事實上,按鍵閉合后在微觀上還會彈起然后閉合,一直達到穩(wěn)定狀態(tài), 所以后面的彈落會沒有效果,為了使程序不要出現(xiàn)這一現(xiàn)象,我們特別添加了上面所說 的延時消抖程序,可以在第一次檢測到閉合時,調用了一定時間的延時程序。
下面是顯示北向的時間程序,其他方向依此類推:
1 SMG_XS=Data[bei/10]; //顯示北的十位
1 SMG_KZ=0xfd; //允許北十位顯示
1 delay(t); //小延時一下,使數(shù)碼管顯示更清楚
1 SMG_KZ=0xff; //關閉數(shù)碼管顯示(消隱)
1 SMG_XS=Data[bei%10]; //顯示北的個位
1 SMG_KZ=0xfe; //允許北個位顯示
1 delay(t); //小延時一下,使數(shù)碼管顯示更清楚
1 SMG_KZ=0xff; //關閉數(shù)碼管顯示(消隱)
4.7 本章小結
本章是軟件設計部分,給出了相關運算過程還有一部分重要的程序段,對定時原 理還有中斷原理給出了很多相關知識,這些都是單片機運行的關鍵,所以做了比較充 分的介紹。
本設計完全用仿真軟件在電腦上對目標電路原理圖和程序進行檢測和調試。調試 過程中單片機相應輸入端由通用鍵盤和鼠標設定,運行狀態(tài)、各寄存器狀態(tài)、端口狀 態(tài)等都可以在指定的窗口區(qū)域顯示出來,以確定程序運行有無錯誤。
目標程序糾錯:該階段工作通常在目標程序編輯時就完成。一般來說,仿真軟件 能為用戶輸入的程序指令糾錯,包括書寫格式、標號未定義或多重定義、轉移地址溢 出等錯誤。
如圖 5-2 所示,這是一個簡易的交通燈,主要有四個按鍵開關,一個作為控制器 的 STC89C52 芯片,四個雙位陰極數(shù)碼管顯示時間,十二個發(fā)光二極管表示通行狀態(tài)。
圖 5-3 為初始上電畫面,所有燈閃爍數(shù)次然后開始正常運行,通過此時的狀態(tài)能 觀察出 LED 燈的運行情況,如有損壞,則上電時燈不會閃爍。
圖 5-4 所示狀態(tài)為南北為綠燈,東西為紅燈,即表示南北車輛通行,東西方向車 輛禁止通行。
圖 5-5 為深夜特殊模式圖,當特殊深夜模式開啟時,四個方向上黃燈都開始閃爍, 紅綠燈都停止燃亮,方便了深夜少數(shù)車輛的通行。當深夜結束時,可以通過按鍵來轉 換工作模式。
這部分主要展示了仿真與實物運行的效果圖,并且加以說明。從效果上來看設計 還是比較成功的,由于時間緊迫,紅外遙控的設計部分還未加到實物中,但是特殊的 深夜模式還是成功地在實物中得以體現(xiàn)。總得來說,設計上還是有不足的地方,但是 一些基本的功能都能實現(xiàn)。
歡迎光臨 (http://www.torrancerestoration.com/bbs/) | Powered by Discuz! X3.1 |