第一篇:交通燈的設計心得體會總結
交通燈的設計心得體會總結
通過此次課程設計,使我更加扎實的掌握了有關電子線路方面的知識,在設計過程中雖然遇到了一些問題,但經過一次又一次的思考,一遍又一遍的檢查終于找出了原因所在,也暴露出了前期我在這方面的知識欠缺和經驗不足。實踐出真知,通過自己親手實踐,是我們掌握的知識不再是紙上談兵。
過而能改,善莫大焉。在課程設計過程中,我們不斷發現錯誤,不斷改正,不斷領悟,不斷獲取。最終的檢測調試環節,本身就是在踐行“過而能改,善莫大焉”的知行觀。這次課程設計終于順利完成了,在設計中遇到了很多問題,最后在老師的指導下,終于游逆而解。在今后社會的發展和學習實踐過程中,一定要不懈努力,不能遇到問題就想到要退縮,一定要不厭其煩的發現問題所在,然后一一進行解決,只有這樣,才能成功的做成想做的事,才能在今后的道路上劈荊斬棘,而不是知難而退,那樣永遠不可能收獲成功,收獲喜悅,也永遠不可能得到社會極大人的認可。
課程設計誠然是一門專業課,給我很多專業知識以及專業技能上的提升,同時又是一門講道課,一門辯思課,給了我許多道,給了我很多思,給了我莫大的空間。同時,設計讓我感觸很深。使我對抽象的理論有了具體的認識。通過這次課程設計,我掌握了NI Multisim軟件的使用方法,了解了紅綠燈的實際控制過程,以及如何提高電路的性能等等。
我認為,在這學期的實驗中,不僅培養了獨立思考、動手操作的能力,在各種其它能力上也都有了提高。更重要的是,我們學會了很多學習的方法。而這是日后最實用的,真的是受益匪淺。要面對社會的挑戰,只有不斷的學習、實踐,再學習、再實踐。這對于我們的將來也有很大的幫助。以后,不管有多苦,我想我們都能變苦為樂,找尋有趣的事情,發現其中珍貴的事情。就像中國提倡的艱苦奮斗一樣,我們都可以在實驗結束之后變的更加成熟,會面對需要面對的事情。
回顧起此課程設計,至今我仍感慨頗多,從理論到實踐,在這段日子里,可以說得是苦多于甜,但是可以學到很多很多的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,但可喜的是最終都得到了解決。
第二篇:交通燈的設計心得體會總結
通過此次課程設計,使我更加扎實的掌握了有關電子線路方面的知識,在設計過程中雖然遇到了一些問題,但經過一次又一次的思考,一遍又一遍的檢查終于找出了原因所在,也暴露出了前期我在這方面的知識欠缺和經驗不足。過而能改,善莫大焉。在課程設計過程中,我們不斷發現錯誤,不斷改正,不斷領悟,不斷獲取。最終的檢測調試環節,本身就是在踐行“過而能改,善莫大焉”的知行觀。這次課程設計終于順利完成了,在設計中遇到了很多問題,最后在老師的指導下,終于游逆而解。在今后社會的發展和學習實踐過程中,一定要不懈努力,不能遇到問題就想到要退縮,一定要不厭其煩的發現問題所在,然后一一進行解決,只有這樣,才能成功的做成想做的事,才能在今后的道路上劈荊斬棘,而不是知難而退,那樣永遠不可能收獲成功,收獲喜悅,也永遠不可能得到社會極大人的認可。
課程設計誠然是一門專業課,給我很多專業知識以及專業技能上的提升,同時又是一門講道課,一門辯思課,給了我許多道,給了我很多思,給了我莫大的空間。同時,設計讓我感觸很深。使我對抽象的理論有了具體的認識。通過這次課程設計,我掌握了NI Multisim軟件的使用方法,了解了紅綠燈的實際控制過程,以及如何提高電路的性能等等。
我認為,在這學期的實驗中,不僅培養了獨立思考、動手操作的能力,在各種其它能力上也都有了提高。更重要的是,我們學會了很多學習的方法。而這是日后最實用的,真的是受益匪淺。要面對社會的挑戰,只有不斷的學習、實踐,再學習、再實踐。這對于我們的將來也有很大的幫助。以后,不管有多苦,我想我們都能變苦為樂,找尋有趣的事情,發現其中珍貴的事情。就像中國提倡的艱苦奮斗一樣,我們都可以在實驗結束之后變的更加成熟,會面對需要面對的事情。
回顧起此課程設計,至今我仍感慨頗多,從理論到實踐,在這段日子里,可以說得是苦多于甜,但是可以學到很多很多的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,但可喜的是最終都得到了解決。
第三篇:交通燈設計心得體會
設計心得,一個簡單的交通燈控制系統終于做完,總的來說就只實現兩個功能,1 紅綠黃燈的交替點亮。2,顯示每種燈的倒計時,其實,就是一個的狀態機,四個狀態的變換,剛開始。我按照書上的程序將代碼輸進去,只輸的過程中發現不少錯誤。定義燈的顯示錯了。多個地方判斷語句IF的判斷部分都寫成賦值語句“《=”最嚴重的是最后的結果既然仿真不出來,我試圖將錯誤的揪出來,沒想到自己自己的思維也陷進去了。按著書上的注解一點都沒錯,就是仿真不出來。在這時候,我決定按照自己的思路來修改,書上的原程序有7個進程,我將,p5 p6,p7, 壓縮成一個程序p5 ,同樣也可以實現書要求的所有功能,書上的計數器是通過十六輸出端,分別接到兩個數碼管,考慮到我們的實驗板上帶有bcd/七段led譯碼器。故我直接將計數器的輸出,按照bcd碼接到譯碼器上,做了這些算是有點點成就感,我覺得這個課設,不僅需要很好的dea基本功,更需要周密的思維。耐心和細心的做事態度,當看到大篇幅的程序是,正是驗證理論知識的時刻,我是以為自己還有必要加強,平時判斷上升沿時一般習慣用clk’event and(cke=1), 一下子看到wait語句時,我頓時不知書上的語句是對是錯,只能查閱課本,做事態度面,我有時候特心急,一下子十幾行的錯誤提示,看著心都涼了,要不是為了一組的榮譽的我真的沒耐心看了,當把一條一條的錯誤改正后,才知道自己能行的。
我們設計的東西最終目標就是能真正應用到生活中去,因此,需要對平時的生活常識有一定了解,善于觀察生活,看需要什么,就設計什么出來。也不一定要做已經有了的東西,或者自己寫出更高效的程序。
總的來,我對這是很感興趣的。我能在做的過程中找到快樂,覺得學到的東西有用處,我以后更加深刻地學習課本知識,做事會更有耐心,平時多關注生活,多思考。既然選擇這個專業,就不僅學習專業知識,也要學習專業精神。
第四篇:單片機:交通燈控制系統設計
交通燈控制系統設計
摘要:本系統由單片機系統、鍵盤、LED 顯示、交通燈演示系統組成。系統包括人行道、左轉、右轉、以及基本的交通燈的功能。系統除基本交通燈功能外,還具有倒計時、時間設置、緊急情況處理、分時段調整信號燈的點亮時間以及根據具體情況手動控制等功能。關鍵詞:AT89S51,交通規則
一、方案比較、設計與論證 1 電源提供方案
為使模塊穩定工作,須有可靠電源。我們考慮了兩種電源方案
方案一:采用獨立的穩壓電源。此方案的優點是穩定可靠,且有各種成熟電路可供選用;缺點是各模塊都采用獨立電源,會使系統復雜,且可能影響電路電平。方案二:采用單片機控制模塊提供電源。改方案的優點是系統簡明扼要,節約成本;缺點是輸出功率不高。綜上所述,我們選擇第二種方案。2 顯示界面方案
該系統要求完成倒計時、狀態燈等功能?;谏鲜鲈?,我們考慮了三種方案: 方案一:完全采用數碼管顯示。這種方案只顯示有限的符號和數碼字苻,無法勝任題目要求。
方案二:完全采用點陣式LED 顯示。這種方案實現復雜,且須完成大量的軟件工作;但功能強大,可方便的顯示各種英文字符,漢字,圖形等。
方案三:采用數碼管與點陣LED 相結合的方法因為設計既要求倒計時數字輸出,又要求有狀態燈輸出等,為方便觀看并考慮到現實情況,用數碼管與LED燈分別顯示時間與提示信息。這種方案既滿足系統功能要求,又減少了系統實現的復雜度。權衡利弊,第三種方案可互補一二方案的優缺,我們決定采用方案三以實現系統的顯示功能。3 輸入方案:
題目要求系統能手動設燈亮時間、緊急情況處理,我們討論了兩種方案: 方案一:采用8155擴展I/O 口及鍵盤,顯示等。該方案的優點是:
使用靈活可編程,并且有RAM,及計數器。若用該方案,可提供較多I/O 口,但操作起來稍顯復雜。
方案二: 直接在IO口線上接上按鍵開關。因為設計時精簡和優化了電路,所以剩余的口資源還比較多,我們使用四個按鍵,分別是K1、K2、K3、K4。由于該系統對于交通燈及數碼管的控制,只用單片機本身的I/O 口就可實現,且本身的計數器及RAM已經夠用,故選擇方案二。
二、理論分析與計算
1.交通燈顯示時序的理論分析與計算
對于一個交通路口來說,能在最短的時間內達到最大的車流量,就算是達到了最佳的性能,我們稱在單位時間內多能達到的最大車流為車流量,用公式:車流量= 車流 / 時間 來表示。
先設定一些標號如圖2-1 所示。
說明:此圖為直方圖,上邊為北路口燈,右邊為東路口燈,下邊為南路口燈,左邊為西 路口燈。
圖2-2 所示為一種紅綠燈規則的狀態圖,分別設定為S1、S2、S3、S4,交通燈以這四 的狀態為一個周期,循環執行(見圖2-3)。
請注意圖2-1b和圖2-1d,它們在一個時間段中四個方向都可以通車,這種狀態能在
一定的時間內達到較大的車流量,效率特別高。
依據上述的車輛行駛的狀態圖,可以列出各個路口燈的邏輯表,由于相向的燈的狀態圖
是一樣的,所以只需寫出相鄰路口的燈的邏輯表;根據圖2-3 可以看出,相鄰路口的燈它
們的狀態在相位上相差180°。因此最終只需寫出一組S1、S2、S3、S4的邏輯狀態表。
如表2-1 所示。
表中的“×”代表是紅燈亮(也代表邏輯上的0),“√”是代表綠燈亮(也代表邏輯上 的1),依上表,就可以向相應的端口送邏輯值。2.交通燈顯示時間的理論分析與計算
東西和南北方向的放行時間的長短是依據路口的各個方向平時的車流量來設定,并且
S1、S2、S3、S4各個狀態保持的時間之有嚴格的對應關系,其公式如下所示。T-S1+T-S2=T-S3 T-S2=T-S4 T-S1=T-S3 我們可以依據上述的標準來改變車輛的放行時間。按照一般的規則,一個十字路口可分
為主干道和次干道,主干道的放行時間大于次干道的放行時間,我們設定值時也應以此為參 考。
三、電路圖及設計文件 1.燈控制電路設計
由于32個LED 來實現紅綠燈狀態,若直接接在單片機的口線,路口倒計時的顯示就不
能實現,所以本次設計中采用一種新型的電路如圖3-1 所示。
圖中74LS04的作用是倒相和驅動,它輸出的電流大約48mA,實際測試發現足以滿足要
求,而且發光管也能達到足夠的亮度。
觀察圖可以看出:兩組發光管(一組紅、一組綠)由于反相器的作用,其邏輯狀態恰恰 相反。
圖中和電阻串聯的二極管的作用是為了分壓,防止因上下兩組發光管分壓不同導致邏輯 的錯誤。
共四組和上述相同的電路分別代表東西南北四個方向的紅綠燈,使用兩片74LS04 作為 驅動。
2.倒計時顯示電路設計
前面已經分析過相向的燈的狀態和倒計時都是相同的,所以為了節省,采用兩組四個數碼管
作為倒計時的顯示;同時為了節省口資源,采用串口顯示的方式驅動數碼管。見圖3-2 所 示。
四、程序設計思路與流程圖 1.主程序流程圖
主程序中主要是一個死循環,不停的循環四個狀態,如圖4-1 所示。
2.按鍵子程序流程圖
它包含倒計時調整和緊急狀態兩個狀態。
主程序中放了一個按鍵的判斷指令,當有按鍵按下的時候,程序就自動的跳轉到按鍵子
程序處理。當檢測到K2鍵按下的時候就自動返回到主程序。當出現緊急的情況的時候,按下K3或者K4 就切換到緊急狀態,當緊急事件處理完畢 的時候,按下K2,就可以返回正常狀態。
五、測試、數據及結果分析 1.狀態燈顯示測試
當電路連接完畢后,將寫好的測試程序刷寫到芯片內,K1 和K2分別給端口送高電平和
低電平,通電即可檢測。2.數碼管的測試
將串口的和電路板上的接口連接,將寫好的測試程序刷寫到芯片內,開電源即可測試。
3.整體電路測試
系統上電,刷寫好程序即可開始測試,觀測一個周期(共計S1~S4四個狀態,默認140 秒)燈的顯示狀態是否正常,同時觀察倒計的計數是否正常。
六、總結
由于使用的是單片機作為核心的控制元件,使得電路的可靠性比較高,功能也比較強大,而且可以隨時的更新系統,進行不同狀態的組合。
但是在我們設計和調試的過程中,也發現了一些問題,譬如紅燈和綠燈的切換還不夠迅
速,紅綠燈規則不效率還不是很高等等,這需要在實踐中進一步完善。附錄 系統總體電路圖
1.滿足南北向紅綠燈亮,東西向紅燈亮,占25秒——南北向黃燈亮,東西向紅燈亮,占5秒——南北向紅燈亮,東西向綠燈亮,占25秒——南北向紅燈亮,東西向黃燈亮,占5秒。如此循環,周而復始。2.十字路口要有數字顯示,提示行人把握時間:當某方向綠燈亮時,置顯示器為24,然后以每秒減1計數方式工作,直到減為0,綠燈滅,黃燈亮。黃燈滅,紅燈亮時,再次置顯示器為29,并開始減計數,直到為0,十字路口紅綠燈交換,完成一次工作循環。
3.可手動調整和自動調整,夜間為黃燈閃耀。下面是一個單片機交通燈程序 /*
****************************************************************************************** * *
* Keil C 89S51 交通信號控制程序 * *(C)版權所有 Dai_Weis@hotmail.com * * *
****************************************************************************************** */
#include “reg51.h” #define UINT unsigned int #define ULONG unsigned long #define UCHAR unsigned char /*
信號燈變量
南北方向綠燈
sbit n_bike_g = P1^0;//自行車
sbit n_right_g = P1^1;//右轉
sbit n_up_g = P1^2;//直行
sbit n_left_g = P1^3;//左轉 調頭
南北方向紅燈
sbit n_bike_r = P1^4;//自行車
sbit n_right_r = P1^5;//右轉
sbit n_up_r = P1^6;//直行
sbit n_left_r = P1^7;//左轉 調頭 南北方向黃燈
sbit n_bike_y = P3^0;//自行車
sbit n_right_y = P3^1;//右轉
sbit n_up_y = P3^2;//直行
sbit n_left_y = P3^3;//左轉 調頭
東西方向綠燈
sbit e_bike_g = P2^0;//自行車
sbit e_right_g = P2^1;//右轉
sbit e_up_g = P2^2;//直行
東西方向紅燈
sbit e_bike_r = P2^4;//自行車
sbit e_right_r = P2^5;//右轉
sbit e_up_r = P2^6;//直行
東西方向黃燈
sbit e_bike_y = P3^4;//自行車
sbit e_right_y = P3^5;//右轉
sbit e_up_y = P3^6;//直行
*/ //延時
void delay(UINT t, UINT s){ while(t){ UINT i;
for(i = 0;i < s;i++){ } t--;} }
//信號燈狀態
void time_x(UCHAR P_P1, UCHAR P_P2, UCHAR P_P3){
P1 = P_P1;P2 = P_P2;P3 = P_P3;delay(150, 65535);}
void time_s(UCHAR P_P1, UCHAR P_P2, UCHAR P_P3, UCHAR P_P11, UCHAR P_P22){ UINT i;
for(i = 0;i < 3;i ++){
P1 = P_P1;P2 = P_P2;delay(5, 65535);P1 = P_P11;P2 = P_P22;delay(5, 65535);}
P1 = P_P1;P2 = P_P2;P3 = P_P3;delay(10, 65535);} //主程序
void main(){
P1 = P2 = P3 = 0x0;while(1){
time_x(0xA5, 0x38, 0x0);
time_s(0xA4, 0x38, 0x1, 0xA5, 0x38);time_x(0x96, 0x52, 0x0);
time_s(0x92, 0x52, 0x4, 0x96, 0x52);time_x(0x5A, 0x52, 0x0);
time_s(0x50, 0x50, 0x2A, 0x5A, 0x52);time_x(0xF0, 0x25, 0x0);
time_s(0xF0, 0x24, 0x20, 0xF0, 0x25);time_x(0xD2, 0x16, 0x0);
time_s(0xD0, 0x10, 0x62, 0xD2, 0x16);} }
給你一個定時控制的信號系統,我只做的簡單的測試,至于延時我用的軟件,你自己想辦法。^_^
Dai_Weis 于 2005-5-4 13:43:23 重新給你說明
/*
*********************************************************************************** * *
* Keil C AT89S51 交通信號控制程序 * *(C)版權所有 Dai_Weis@hotmail.com * * *
*********************************************************************************** 開發說明:
固定時間信號變換,南北設置調頭、左傳、直行、右轉、自行車。
東西設置左傳、直行、右轉、自行車。
時序狀態:
紅 綠 紅 綠
序號 左 前 右 自 左 前 右 自 前 右 自 前 右 自1 0 1 0 0 1 0 1 1 1 1 0 0 0 2 1 0 0 1 0 1 1 0 1 0 1 0 1 0 3 0 1 0 1 1 0 1 0 1 0 1 0 1 0 4 1 1 1 1 0 0 0 0 0 1 0 1 0 1 5 1 1 0 1 0 0 1 0 0 0 1 1 1 0 */
另外修正個錯誤
while(1){
time_x(0xA5, 0x70, 0x0);time_s(0xA4, 0x70, 0x1, 0xA5, 0x70);
材料: 1、89S51 11.0592M 晶振
1K電阻、10UF電容
12個燈,紅、黃、綠各四個,12個1K電阻
,十字路口嘛。蜂鳴器一個。
按鍵一個,按鍵復位
采用AT89s51型號的單片機,由于交通十字路口的對稱性,所以一個引腳可以同時控制兩個燈,將發光二極管分別接到P1各個引腳,在其中加入一個時振蕩當電路,來控制時間,在P3.0引腳接入蜂鳴器只黃燈亮的時候發出聲響,這里我們讓每次黃燈亮的時候發出六聲響,通過C程序的控制就可以實現,每次循環是10秒。2、9cm*15cm萬用板 1片 單片機及IC座 1套 12M晶振 1只 22P電容 2只 10uF電容 1只 10K電阻 1只 1K排阻 1只 兩位一體數碼管 2只 DC座 1只 自鎖開關 1只
發光二極管紅綠黃
各4只 按鍵 7只 USB電源線 1條 導線
若干
1、基于51系列單片機(型號:STC89C52、AT89C51/C52、AT89S51/S52,隨機選擇,如有特
殊要求請與店主討論)設計實現。(以上幾種單片機全部為51系列單片機,除了名字不一樣外,功能及應用完全一樣,互相
兼容)
2、兩個兩位一體數碼管顯示東西、南北方向時間。
3、四方向各有紅綠黃三顆燈。
4、七個按鍵操作,分別是:禁止通行、東西通行、南北通行、時間加、時間減、切換方向、確認。
第五篇:基于單片機的交通燈設計
基于單片機的交通燈設計
設計程序:
#include
//共陽極
uchar
code table1[5]={0xf3,0xf5,0xde,0xee,0xf6};/*各種狀態下紅綠燈段選碼, 狀態1:A綠燈,B紅燈;狀態2:A黃燈亮,B紅燈;狀態3:A紅燈,B綠燈;狀態4:A紅燈,B黃燈亮;狀態5:A紅燈,B紅燈;*/ uchar
code tab[4]={0x1E,0x2D,0x4E,0x8D};//數碼管顯示位選碼 sbit key1=P1^0;//放行A sbit key2=P1^1;//放行B sbit key3=P1^2;//禁止通行
uchar EW=40,SN=30,K1_T=15,K2_T=15,K3_T=20;//初始化交通燈時間 uchar count;//計時中斷次數 uchar i,j;//循環控制變量 char Timer;//子程序說明語句 void Process();void Display(uchar j);void Delay(uchar a);/**************************主程序**************************/ main(){ IP=0X02;//設置定時器中斷為高優先級//成為中斷嵌套
TMOD=0x01;//定時器工作方式
TH0=0x3C;//定時器初始化
TL0=0xB0;IT0=1;//中斷觸發方式為下降沿觸發
EA=1;//CPU開中斷
ET0=1;//開定時中斷
TR0=1;//啟動定時
EX0=1;//啟動外部中斷0 while(1)
{
Process();
} } /*************************交通燈顯示子程序*************************/ void Display(uchar j)//j控制顯示table中連續位的起始點 {
char h,l;
h=Timer/10;//EW通行時間十位
l=Timer%10;//EW通行時間個位
for(i=0;i<4;)//按位顯示通行狀況及時間 {
P0=table1[j];//通行狀況顯示
P3=tab[i];//位選顯示
i++;
//j++;
if(i%2)//兩位計時顯示
{
P2=table[l];
Delay(400);
}
else
{
P2=table[h];
Delay(400);
} } Delay(5);
//設置掃描時間
} /*********鍵控*******/ void Keyboard()interrupt 0 using 0 {
if(key1==0)
{ Timer=K1_T;
while(Timer>0)
{
j=0;
Display(0);
//顯示一次
}
if(key2==0)
{
Timer=K2_T;
while(Timer>0)
{
j=2;
Display(j);
}
if(key3==0)
{
Timer=K3_T;
while(Timer>0)
{
j=4;
Display(j);
}
} } /**************************延時子程序**************************/ void Delay(uchar a)//循環a次 { uchar x;x=a;while(x--){;} }
/************************TO計時中斷服務程序************************/ void timer0(void)interrupt 1 using 1//T0中斷 { TH0=0x3C;TL0=0xB0;//定時計數初值
count++;//中斷溢出一次count+1 if(count==20){
Timer--;
count=0;//中斷次計數,count回,倒計時時間
} } /**************************亮燈控制**************************/ void Process(){ Timer=EW;//初始化方向通行時間
while(Timer>3)//狀態:A綠燈,B紅燈;{
j=0;
Display(j);//調用顯示函數
} while(Timer>0)//狀態:A黃燈亮,B紅燈;{
j=1;
Display(j);
} Timer=SN;while(Timer>3)//狀態:A紅燈,B綠燈;{
j=2;
Display(j);} while(Timer>0)//狀態:A紅燈,B黃燈亮;{
j=3;
Display(j);
}
}
電路圖如下: