第一篇:交通燈心得
交通燈實訓心得體會
通過本次課程設計,我深深的體會到了作為一個硬件工程師的艱辛。即使做一個小小的項目,都需要這么多的辛苦,必須考慮到問題的任何一個細節,否則最后也將是功敗垂成。
原理圖設計: 當我們選取了這樣一個題目,我們就開始收集相關的各種資料,對題目有個大致的了解,規劃一下設計的任務將要完成哪些功能。然后就具體的每一項功能應該怎樣具體的設計,例如用什么方法完成這一功能,這種想法是否合理,比較使用哪個芯片來完成這項功能。經過長時間的查閱資料、思索、推敲,最后定出了這次設計的原理圖。
PCB板設計:剛開學的時候我們就學習了protel軟件使用,研究應該怎樣生成正確的網絡表,PCB板的布局,布線,制板等工作。剛開始由于經驗不足,不知道如何封裝庫里面沒有的器件和芯片而且生成的網絡表又有那么多的線,當時真是一頭霧水,經過老師和同學的幫助以及自己的摸索,最后以勉強合格的水準畫出了這次的設計用板。
硬件焊接:在拿到板之后,按照老師的要求我們首先檢查了一下板子是否有錯誤,這是一個非常關鍵的步驟,因為當你焊接上器件之后將會很難檢查。結果發現了真的還有一些不足,比如在畫板的過程中我們居然忘記留出電源接口,還有一些兩根電源線沒有和其他線接到一塊,另外我們給按鍵留的引腳的孔太小了,數碼管的引腳情況也給弄錯了,這些應該是初學這些東西經驗不夠和粗心造成的。這些也都給以后的學習留下了經驗和教訓,必須先拿到或熟悉芯片才能確定引腳的間距以及大小,制板過程必須要細心。發現這些錯誤,在焊接過程中我們采取了一系列的措施來補救這些錯誤。比如割斷板子上的線,用導線來連接等。關于焊接這塊是由我來負責,因為自己的水平不怎么樣,需要一定的經驗和技巧。剛開始烙鐵和焊錫配合不到一塊,然后就是焊錫的量的控制問題。我認為硬件也有點原因,可能是烙鐵不夠熱吧。始終達不到老師焊接的那種效果,但是焊接出來還是能使用的,只是不太美觀。
編程調試:此次設計的編程,難點在于對LED數碼管顯示程序的編寫,由于對芯片的工作原理不是很熟悉,所以一開始摸不著頭腦。上網查閱相關資料,對芯片的工作原理有個大致的了解后,程序的編寫也初見端倪了,所以花在編此段程序的時間最長;交通燈狀態的顯示則沒有費多大力氣,因為通過所學的課程已經了解了其工作原理,就是向每個相應的口上寫“1”或“0”;中斷程序的編寫也是常規的編寫,就是保存原來狀態,處理,恢復現場這一中斷的基本步驟。
通過上面的這個步驟,把程序調試好,接下來就是真正的硬件連接調試了。程序既然已經在仿真的軟件上通過認證,如果連接上硬件不好使的話,說明在硬件上某個部分存在一定的問題。這點得到了驗證:硬件模擬的時候,和仿真完全不一樣,燈全亮,或者亂亮,而數碼管也沒能顯示,估計是編程還有硬件接口出現問題,最后也沒能通過老師的驗收。我們也只能再進行修改。
最后交通燈的大部分功能都已經基本實現,只是關于數碼管的部分,由于對芯片不了解,所剩余的時間無幾,所以沒有辦法進行編程調試了,這點真的很遺憾。有時間一定會把這一課補上的。
這次課程設計我感覺到了自己平時學習到的東西太淺,沒能完成好這次的任務。但從中還是學習到了不少東西,使我受益匪淺。這次課程設計中犯下了不少錯誤,以后我會接受這些教訓,同時把這些教訓轉換為經驗應用到以后的此類設計中。最后,衷心感謝在課程設計期間老師對我們的無私幫助,還要感謝和我同組的合作者,以及所有幫助過我的同學。
第二篇:交通燈管理電路設計
交通燈管理電路設計.txt懂得放手的人找到輕松,懂得遺忘的人找到自由,懂得關懷的人找到幸福!女人的聰明在于能欣賞男人的聰明。生活是燈,工作是油,若要燈亮,就要加油!相愛時,飛到天邊都覺得踏實,因為有你的牽掛;分手后,坐在家里都覺得失重,因為沒有了方向。本文由車牌定位貢獻
doc文檔可能在WAP端瀏覽體驗不佳。建議您優先選擇TXT,或下載源文件到本機查看。
東 北 石 油 大 學
課
課 題 院 程 目 系
程
設
計
單片機原理及應用課程設計 交通燈管理電路設計 電子科學學院 電信 07-5 班 馬深慧 070901140505 專業班級 學生姓名 學生學號 指導教師 2011 年 3 月 18 日
東北石油大學課程設計任務書
課程 題目 單片機原理及應用課程設計 交通燈管理電路設計 電信 07-5 姓名 馬深慧 學號 070901140505 專業班級
一、設計目的: 訓練學生綜合運用己學課程的基本知識,獨立進行單片機應用技術開發工作,掌握單片機程序設計、調試,應用電路設計、分析及調試檢測。
二、設計要求: 1.應用 MCS-51 單片機設計交通燈管理電路; 2.該系統要求顯示 50s 倒計時時間,當計到需交換紅綠燈前 10s,路口均顯示黃燈; 3.硬件設計根據設計的任務選定合適的單片機,根據控制對象設計接口電路。設計的 單元電路必須有工作原理,器件的作用,分析和計算過程; 4.軟件設計根據電路工作過程,畫出軟件流程圖,根據流程圖編寫相應的程序,進行 調試并打印程序清單; 5.原理圖設計根據所確定的設計電路,利用 Protel 等有關工具軟件繪制電路原理圖、PCB 板圖、提供元器件清單。
三、參考資料: [1] 單片微型計算機與接口技術,李群芳、黃建編著,電子工業出版社; [2] 單片機原理及應用,張毅剛編著,高等教育出版社; [3] 51 系列單片機及 C51 程序設計,王建校,楊建國等編著,科學出版社; [4] 單片機原理及接口技術,李朝青編著,北京航空航天大學出版社;
完成期限 指導教師 專業負責人 2011.3.14—2011.3.18 2011 年 3 月 13 日
目錄
1.系統設計 1.系統設計 ?? 1 1.1 設計思路 ?? 1 1.1.1 設計目的?? 1 1.1.2 設計任務和內容?? 1 1.1.3 方案比較、設計與論證?? 1 1.1.3.1 電源提供方案 ?? 1 1.1.3.2 復位方案 ?? 2 1.1.3.3 輸入方案 ?? 2 1.1.3.4 顯示界面方案 ?? 2 1.1.3.5 交通管理的方案論證 ?? 4 1.1.4 芯片簡介?? 4 2.硬件電路設計 2.硬件電路設計 ?? 10 2.1 設計原理分析 ?? 11 2.1.1 交通燈顯示時序的理論分析與計算?? 11 2.1.2 交通燈顯示時間的理論分析與計算?? 13 2.1.3LED 數碼管顯示模塊?? 14 2.1.4 復位電路?? 15 2.1.5 晶振電路?? 16 3.軟件設計 3.軟件設計 ?? 17 3.1 數碼管顯示子程序: ?? 17 3.1LED 紅綠燈顯示模塊程序: ?? 18 4.總結 4.總結 ?? 21 5.參考文獻 5.參考文獻 ?? 22 6.附錄 6.附錄 ?? 22 6.1 附錄 1:程序清單 ?? 22 6.2 附錄 2:電路設計總圖 ?? 29 1.系統設計
1.1 設計思路 1.1.1 設計目的 訓練學生綜合運用己學課程的基本知識,獨立進行單片機應用技 術開發工作,掌握單片機程序設計、調試,應用電路設計、分析及調 試檢測。1.1.2 設計任務和內容 1.應用 MCS-51 單片機設計交通燈管理電路; 2.該系統要求顯示 50s 倒計時時間,當計到需交換紅綠燈前 10s,路口均顯示黃燈; 3.硬件設計根據設計的任務選定合適的單片機,根據控制對象 設計接口電路。設計的單元電路必須有工作原理,器件的作用,分析 和計算過程; 4.軟件設計根據電路工作過程,畫出軟件流程圖,根據流程圖 編寫相應的程序,進行調試并打印程序清單; 5.原理圖設計根據所確定的設計電路,利用 Protel 等有關工具軟 件繪制電路原理圖、PCB 板圖、提供元器件清單。1.1.3 方案比較、設計與論證 1.1.3.1 電源提供方案 為使模塊穩定工作,須有可靠電源,采用單片機控制模塊提供電 源。此方案的優點是系統簡明扼要,節約成本; 缺點是輸出功率不高。1 1.1.3.2 復位方案 復位方式有兩種:按鍵復位與軟件復位。由考慮到程序的簡潔,避免冗長,本設計采用按鍵復位,在芯片的復位端口外接復位電路,通過按鍵對單片機輸入一個高電平脈沖,達到復位的目的。1.1.3.3 輸入方案 方案一: 采用 89S52 擴展 I/O 口及鍵盤,顯示等。該方案的優點是: 使用靈活可編程,并且有 RAM,及計數器。若用該方案,可提供較多 I/O 口,但操作起來稍顯復雜。
方案二: 直接在 I/O 口線上接上按鍵開關。因為設計時精簡和優化了電路,所以剩余的口資源還比較多,我們使用 2 個按鍵,分別是 K1、K2。由于該系統對于交通燈及數碼管的控制,只用單片機本身的 I/O 口 就可實現,且本身的計數器及 RAM 已經夠用,故選擇方案二 1.1.3.4 顯示界面方案 該系統要求完成倒計時、狀態燈等功能。基于上述原因,我們考 慮了三種方案: 方案一: 2 完全采用數碼管顯示。這種方案只顯示有限的符號和數碼字符,無法勝任題目要求。方案二: 完全采用點陣式 LED 顯示。這種方案實現復雜,且須完成大量 的軟件工作; 但功能強大,可方便的顯示各種英文字符,漢字,圖形。方案三: 采用數碼管與點陣 LED(點陣式和 8 段式 LED)相結合的方法因 為設計既要求倒計時數字輸出,又要求有狀態燈輸出等,為方便觀看 并考慮到現實情況,用數碼管與 LED 燈分別顯示時間與提示信息。這 種方案既滿足系統功能要求,又減少了系統實現的復雜度。權衡利弊,第三種方案可互補一二方案的優缺,決定采用方案三以實現系統的顯 示功能。整個設計以 AT89S52 單片機為核心,由數碼管顯示,數碼管顯示, LED 復位電路組成。硬件模塊入圖所示: AT89S52 單 片機
數碼管顯示 LED 數碼管 晶振電路 顯示
復位電路 3 1.1.3.5 交通管理的方案論證 東西、南北兩干道交于一個十字路口,各干道有一組紅、黃、綠 三色的指示燈,指揮車輛和行人安全通行。紅燈亮禁止通行,綠燈亮 允許通行。黃燈亮提示人們注意紅、綠燈的狀態即將切換,且黃燈燃 亮時間為東西、南北兩干道的公共停車時間。指示燈燃亮的方案如下 表所示: 40S 10S 40S 10S ??
東 西 紅 燈 黃 燈 綠 燈 黃 燈 ?? 道 亮 亮 亮 亮
南 北 綠 燈 黃 燈 紅 燈 黃 燈 ?? 道 亮 亮 亮 亮 上表說明:(1)當東西方向為紅燈,此道車輛禁止通行,東西道行人可通 過;南北道為綠燈,此道車輛通過,行人禁止通行。時間 為 40 秒。(2)黃燈 10 秒,警示車輛和行人紅、綠燈的狀態即將切換。(3)當東西方向為綠燈,此道車輛通行;南北方向為紅燈,南 北道車輛禁止通過,行人通行。時間為 40 秒。(4)這樣如上表的時間和紅、綠、黃出現的順序依次出現這樣 行人和車輛就能安全暢通的通行。1.1.4 芯片簡介 1.AT89S52 單片機簡介 4 其引 DIP 封裝的腳圖如下:
主要性能: 與 MCS-51 單片機產品兼容、8K 字節在系統可編程 Flash 存 儲器、1000 次擦寫周期、全靜態操作:0Hz~33Hz、三級加 密程序存儲器、32 個可編程 I/O 口線、三個 16 位定時器/計 數器 八個中斷源、全雙工 UART 串行通道、低功耗空閑和掉電 模式、掉電后中斷可喚醒、看門狗定時器、雙數據指針、掉 電標識符。功能特性描述: 5 At89s52 是一種低功耗、高性能 CMOS8 位微控制器,具有 8K 在系統可編程 Flash 存儲器。使用 Atmel 公司高密度非 易失性 存儲器技術制造,與工業 80C51 產品指令和引腳完 全兼容。片 上 Flash 允許程序存儲器在系統可編程,亦適于 常規編程器。在 單芯片上,擁有靈巧的 8 位 CPU 和在系統 可編程 Flash,使得 AT89S52 為眾多嵌入式控制應用系統提 供高靈活、超有效的解決 方案。AT89S52 具有以下標準功能: 8k 字節 Flash,256 字節 RAM,32 位 I/O 口線,看門狗定時器,2 個數據指針,三個 16 位 定時器/計數器,一個 6 向量 2 級中斷結構,全雙工串行口,片 內晶振及時鐘電路。另外,AT89S52 可降至 0Hz 靜態邏 輯操作,支持 2 種軟件可選擇節電模式。空閑模式下,CPU 停止工作,允 許 RAM、定時器/計數器、串口、中斷繼續工 作。掉電保護方式 下,RAM 內容被保存,振蕩器被凍結,單片機一切工作停止,直 到下一個中斷或硬件復位為止。8 位微控制器 8K 字節在系統可 編程 Flash AT89S52 P0 口:P0 口是一個 8 位漏極開路的雙向 I/O 口。作為輸出 口,每位能驅動 8 個 TTL 邏輯電平。對 P0 端口寫“1”時,引腳 用作高阻抗輸入。當訪問外部程序和數據存儲器時,P0 口也被作為低 8 位 地址/數據復用。在這種模式下: P0 具有內部上拉電阻。6 在 flash 編程時,口也用來接收指令字節; P0 在程序校驗時,輸出指令字節。程序校驗時,需要外部上拉電阻。P1 口:P1 口是一個具有內部上拉電阻的 8 位雙向 I/O 口,p1 輸出緩沖器能驅動 4 個 TTL 邏輯電平。P1 端口寫“1”時,對 內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入 使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)此外,P1.0 和 P1.2 分別作定時器/計數器 2 的外部計數輸入(P1.0/T2)和時器/計數器 2 的觸發輸入(P1.1/T2EX),具體如 下表所示。在 flash 編程和校驗時,P1 口接收低 8 位地址字節。引腳號第二功能 P1.0 T2(定時器/計數器 T2 的外部計數輸入),時鐘輸出 P1.1 T2EX(定時器/計數器 T2 的捕捉/重載觸發信號和方向 控制)P1.5 MOSI(在系統編程用)P1.6 MISO(在系統編程用)P1.7 SCK(在系統編程用)P2 口:P2 口是一個具有內部上拉電阻的 8 位雙向 I/O 口,P2 輸出緩沖器能驅動 4 個 TTL 邏輯電平。P2 端口寫“1”時,對 內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入 7 使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。在訪問外部程序存儲器或用 16 位地址讀取外部數據存儲器(例如執行 MOVX @DPTR)時,P2 口送出高八位地址。在這種應 用中,P2 口使用很強的內部上拉發送 1。在使用 8 位地址(如 MOVX @RI)訪問外部數據存儲器時,P2 口輸出 P2 鎖存器的內容。在 flash 編程和校驗時,P2 口也接收高 8 位地址字節和一些 控制信號。P3 口:P3 口是一個具有內部上拉電阻的 8 位雙向 I/O 口,p2 輸出緩沖器能驅動 4 個 TTL 邏輯電平。P3 端口寫“1”時,對 內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入 使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。P3 口亦作為 AT89S52 特殊功能(第二功能)使用,如下表所 示。在 flash 編程和校驗時,P3 口也接收一些控制信號。端口引腳 第二功能 P3.0 RXD(串行輸入口)P3.1 TXD(串行輸出口)P3.2 INTO(外中斷 0)P3.3 INT1(外中斷 1)P3.4 TO(定時/計數器 0)8 P3.5 T1(定時/計數器 1)P3.6 WR(外部數據存儲器寫選通)P3.7 RD(外部數據存儲器讀選通)此外,P3 口還接收一些用于 FLASH 閃存編程和程序校驗的控 制信號。RST——復位輸入。當振蕩器工作時,RST 引腳出現兩個機器 周期以上高電平將是單片機復位。ALE/PROG——當訪問外部程存儲器或數據存儲器時,ALE(地 址鎖存允許)輸出脈沖用于鎖存地址的低 8 位字節。一般情況下,ALE 仍以時鐘振蕩頻率的 1/6 輸出固定的脈沖信號,因此它可對 外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數據存 儲器時將跳過一個 ALE 脈沖。對 FLASH 存儲器編程期間,該引腳還用于輸入編程脈沖(PROG)。如有必要,可通過對特殊功能寄存器(SFR)區中的 8EH 單元 的 D0 位置位,可禁止 ALE 操作。該位置位后,只有一條 MOVX 和 MOVC 指令才能將 ALE 激活。此外,該引腳會被微弱拉高,單片機 執行外部程序時,應設置 ALE 禁止位無效。PSEN——程序儲存允許(PSEN)輸出是外部程序存儲器的讀 選通信號,當 AT89C52 由外部程序存儲器取指令(或數據)時,每個機器周期兩次 PSEN 有效,即輸出兩個脈沖,在此期間,當訪 問外部數據存儲器,將跳過兩次 PSEN 信號。9 EA/VPP——外部訪問允許,欲使 CPU 僅訪問外部程序存儲器(地址為 0000H-FFFFH),EA 端必須保持低電平(接地)。需注 意的是:如果加密位 LB1 被編程,復位時內部會鎖存 EA 端狀態。如 EA 端為高電平(接 Vcc 端),CPU 則執行內部程序存儲器 的指令。FLASH 存儲器編程時,該引腳加上+12V 的編程允許電源 Vpp,當然這必須是該器件是使用 12V 編程電壓 Vpp。
2.硬件電路設計
復位
晶振源 AT89S52 各路口紅綠燈 LED 倒計時顯示 10 2.1 設計原理分析 2.1.1 交通燈顯示時序的理論分析與計算 對于一個交通路口來說,能在最短的時間內達到最大的車流量,就 算是達到了最佳的性能,我們稱在單位時間內多能達到的最大車流 為車流量,用公式:車流量= 車流 / 時間 來表示。先設定一些標號如圖 2-1 所示。
說明: 此圖為直方圖,上邊為北路口燈,右邊為東路口燈,下邊為南路 口燈,左邊為西路口燈。圖 2-2 所示為一種紅綠燈規則的狀態圖,分別設定為 S1、S2、S3、S4,交通燈以這四的狀態為一個周期,循環執行(見圖 2-3)。11 圖 2-1 請注意圖 2-1b 和圖 2-1d,它們在一個時間段中四個方向都可以通 車,這種狀態能在一定的時間內達到較大的車流量,效率特別高。依據上述的車輛行駛的狀態圖,可以列出各個路口燈的邏輯表,由于 相向的燈的狀態圖是一樣的,所以只需寫出相鄰路口的燈的邏輯表; 根據圖 2-3 可以看出,相鄰路口的燈它們的狀態在相位上相差 180°。因此最終只需寫出一組 S1、S2、S3、S4 的邏輯狀態表。如表 2-1 所示。12 表 2-1 表中的“×”代表是紅燈亮(也代表邏輯上的 0),“√”是代表綠 燈亮(也代表邏輯上的 1),依上表,就可以向相應的端口送邏輯值。
2.1.2 交通燈顯示時間的理論分析與計算 東西和南北方向的放行時間的長短是依據路口的各個方向平時的車 13 流量來設定,并且 S1、S2、S3、S4 各個狀態保持的時間之有嚴格的 對應關系,其公式如下示。T-S1+T-S2=T-S3 T-S2=T-S4 T-S1=T-S3 我們可以依據上述的標準來改變車輛的放行時間。按照一般的規則,一個十字路口可分為主干道和次干道,主干道的放行時間大于次干道 的放行時間,我們設定值時也應以此為參考 2.1.3LED 數碼管顯示模塊(1)靜態顯示方式:靜態顯示方式是指當顯示器顯示某一字符時,發 光二極管的位選始終被選中。在這種顯示方式下,每一個 LED 數碼管 顯示器都需要一個 8 位的輸出口進行控制。由于單片機本身提供的 I/O 口有限,實際使用中,通常通過擴展 I/O 口的形式解決輸出口數 量不足的問題。靜態顯示主要的優點是顯示穩定,在發光二極管導通電流一定的情況 下顯示器的亮度大,系統運行過程中,在需要更新顯示內容時,CPU 才去執行顯示更新子程序,這樣既節約了 CPU 的時間,又提高了 CPU 的工作效率。其不足之處是占用硬件資源較多,每個 LED 數碼管需要 獨占 8 條輸出線。隨著顯示器位數的增加,需要的 I/O 口線也將增加。(2)動態顯示方式:動態顯示方式是指一位一位地輪流點亮每位顯示 器(稱為掃描),即每個數碼管的位選被輪流選中,多個數碼管公用 14 一組段選,段選數據僅對位選選中的數碼管有效。對于每一位顯示器 來說,每隔一段時間點亮一次。顯示器的亮度既與導通電流有關,也 與點亮時間和間隔時間的比例有關。通過調整電流和時間參數,可以 既保證亮度,又保證顯示。若顯示器的位數不大于 8 位,則顯示器的 公共端只需一個 8 位 I/O 口進行動態掃描(稱為掃描口),控制每位 顯示器所顯示的字形也需一個 8 位口(稱為段碼輸出)。15 2.1.4 復位電路 復位方式有多種,本設計采用按鍵復位。接線圖如圖程序復位 電路框圖
在設定的定時時間內,89S52 必須在 RST 引腳產生一個由高到低 的電平變化,以清內部定時器.2.1.5 晶振電路 晶振電路原理圖如 3-2: 3-2 晶振模塊原理圖 選取原則:傳統做法,但能夠實現所需,即最簡單也最是實用。電容選取 30pF,晶振為 30MHz。16 3.軟件設計
3.1 數碼管顯示子程序: void normalPageShow(){ register unsigned char i, j, n;register long lTmp;unsigned char const SEG_CODE[] = {0x3F, 0x06, 0x5B, 0x4F, 0x66, 0x6D, 0x7D, 0x07, 0x7F, 0x6F};unsigned char const COMM[2] = {0x01, 0x02, 0x04, 0x08};for(i = 0;i < 2;i ++){ lTmp = gnValue;n = lTmp((lTmp / 10)* 10);P2 = COMM[i];P0 = SEG_CODE[n];P2 = COMM[i + 2];P0 = SEG_CODE[n];lTmp /= 10;} } main(void){ EA = 0;// global interrupt disable 26 giSysStatus = 0;initMCU();EA = 1;while(1){ if(gbFlag_1sPeriod){ gbFlag_1sPeriod = 0;gnValue-= 1;gbFlag_refreshLED = 1;if(gnValue == 10){ dsY1 = 0;dsY2 = 0;} if(gnValue == 0){ if(dsR1 == 0){ dsR1 = 1;dsR2 = 0;dsG1 = 0;dsG2 = 1;dsY1 = 0;dsY2 = 0;} else{ 27 //刷新 LED dsR1 = 0;dsR2 = 1;dsG1 = 1;dsG2 = 0;dsY1 = 0;dsY2 = 0;} } } if(gbFlag_refreshLED){ gbFlag_refreshLED = 0;normalPageShow();} } } 28 6.2 附錄 2:電路設計總圖 29 東北石油大學課程設計成績評價表
課程名稱 題目名稱 學生姓名 序號 馬深慧 評價項目 工作量、工作態 1 度和出勤率 學號
單片機原理及應用課程設計 交通燈管理電路設計 070901140505 指 指導教 師姓名 標 職稱 滿分 評分
按期圓滿的完成了規定的任務,難易程度和工作 量符合教學要求,工作努力,遵守紀律,出勤率 高,工作作風嚴謹,善于與他人合作。課程設計選題合理,計算過程簡練準確,分析問 20 2 課程設計質量
題思路清晰,結構嚴謹,文理通順,撰寫規范,圖表完備正確。45 3 4 總分 評語:
創新 答辯
工作中有創新意識,對前人工作有一些改進或有 一定應用價值。能正確回答指導教師所提出的問題。5 30 指導教師:
****年**月**日 30 1
第三篇:PLC交通燈課程設計
PLC的定義及工作原理
⒈定義:可編程控制器,簡稱PLC(Programmable logic Controller),是指以計算機技術為基礎的新型工業控制裝置。“PLC是一種專門為在工業環境下應用而設計的數字運算操作的電子裝置”。它采用可編程序的存儲器,用來在其內部存儲執行邏輯運算、順序控制、定時、計數和算術運算等操作的指令,并通過數字式或模擬式的輸入和輸出,控制各種類型的機械或生產過程。
⒉工作原理: 當PLC投入運行后,其工作過程一般分為三個階段,即輸入采樣、用戶程序執行和輸出刷新三個階段。完成三個階段稱作一個掃描周期。在整個運行期間,PLC的CPU以一定的掃描速度重復執行三個階段。
(一)輸入采樣階段
在輸入采樣階段,PLC以掃描方式依次地讀入所有輸入狀態和數據,并將它們存入I/O映象區中的相應得單元內。
(二)用戶程序執行階段
在用戶程序執行階段,PLC總是按由上而下的順序依次地掃描用戶程序(梯形圖)。
(三)輸出刷新階段
當掃描用戶程序結束后,PLC就進入輸出刷新階段。在此期間,CPU按照I/O映象區內對應的狀態和數據刷新所有的輸出鎖存電路,再經輸出電路驅動相應的外設。
隨著自動化控制技術和微電子技術的迅猛發展,PLC作為前沿的工業控制器,具有體積小、可靠性高、易操作、靈活性強、抗干擾能力強等一系列優點,廣泛用于自動化控制領域。用內部編程取代繼電器邏輯控制電路中大量的中間繼電器和時間繼電器,簡化了控制路線,提高了系統控制的可靠性,這是PLC最大的優點。借助于書序控制圖和梯形圖來編制用戶控制程序,實現自動控制系統順序控制,是PLC的主要功能之一。
實訓1
基礎試驗
1.兩燈交替閃爍 指令表
梯形圖
工作過程:
按下啟動開關X0,Y0亮,且開始計時,2S后,T0動作,T0常閉斷開Y0熄滅,T0常開閉合Y1亮,經過2s,Y0亮;如此循環,直到按下停止開關X1。
2.利用計數器實現循環
指令表
梯形圖
工作過程:
按下啟動開關X0,Y0亮,開始計時2S后,T0動作,Y0熄滅,Y1亮,如此循環,直到循環了5次,計數器CO動作,常開觸點閉合,整個過程停止。
實訓2 十字路口交通燈控制系統
1、實訓目的
① 了解PLC基本功能指令使用方法 ②掌握功能指令圖的輸入方法 ③學會利用功能指令進行設計 2、實訓的內容
該實驗在十字路口交通信號燈控制實驗區內完成,按啟動按鈕,六盞燈按如下時序工作:第一組綠燈亮5秒后閃爍3次(滅0.5秒,亮0.5秒),黃燈亮2秒,紅燈亮10秒;第二組紅燈亮10秒,綠燈亮5秒后閃爍3次(滅0.5秒,亮0.5秒),黃燈亮2秒。
從時序圖可以看出,該系統有一個輸入裝置和 6個輸出裝置。下表為輸入裝置與輸出裝置與PLC的地址編號對應表。
指令表
⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ LD
M8002 SET
L0 STL
S0 LD
X000 OUT
Y000 OUT
Y003 SET
S21 SET
S31 STL
S21 OUT
Y000 OUT
T0
K50 ⒓ LD
T0 ⒔ SET
S22 ⒕ STL
S22 ⒖ OUT
T1
K30 ⒗ LDI
T1 ⒘ AND
M8013 ⒙ OUT
Y000 ⒚ LD
T1 ⒛ SET
S23 21.STL 22.OUT 23.OUT 24.LD 25.SET 26.STL 27.OUT 28.OUT 29.STL 30.OUT 31.OUT 32.LD 33.SET 34.STL 35.OUT 36.OUT 37.LD 38.SET 39.STL 40.OUT 41.LDI 42.AND 43.UT 44.LD 45.SET 46.STL 47.OUT 48.OUT 49.STL 50.STL 51.LD 52.AND 53.SET 54.RET 55.END S23 Y001 T2
K20 T2
S24
S24 Y002 T3
K100
S31 Y003 T4
K100
T4
S32
S32 Y004 T5 T5 S33
S33 T6
K30
T6
M8013 Y004
T6
S34
S34
Y005
T7
S24
S34
T3
T7
S0
附加任務
機械手手動控制實驗
控制要求1:
實現機械手左右移動。
按下向左按鈕,機械手向左移動,到達左限位開關后停止;按下向右按鈕,機械手向右移動,到達右限位開關后停止。
控制要求2:
實現機械手上下移動。
按下向上按鈕,機械手向上移動,到達上限位開關后停止;按下向下按鈕,機械手向下移動,到達下限位開關后停止。
控制要求3:
實現機械手左右、上下移動。
按下向左按鈕,機械手向左移動,到達左限位開關后停止,按下向右按鈕,機械手向右移動,到達右限位開關后停止。
按下向上按鈕,機械手向上移動,到達上限位開關后停止;按下向下按鈕,機械手向下移動,到達下限位開關后停止。
控制要求4:
實現上述控制后,機械手電磁鐵在A位置可吸引提取物料(鐵塊)或釋放物料。機械手電磁鐵在B位置同樣可吸引提取物料(鐵塊)或釋放物料。
可手動操作實現物料從A位置移動到B位置或從B位置移到達A位置。
總
結
這是一個比較典型的十字路口交通燈的梯形圖設計,最為一種設計實踐,主要是為PLC在交通控制系統中提出一種設計理論,為以后PLC在復雜的控制系統中提出一種可行的理論方案。在實際應用中,采用PLC控制城市交通信號燈,能根據不同路況要求,隨時修改控制程序,以改變各信號燈的工作時間和工作狀況。與繼電器或邏輯電路控制系統相比,PLC控制系統具有更高的可靠性、靈活性和經濟實用性。
通過這次設計實踐,我鞏固了PLC的基本編程方法,對PLC的工作原理和使用方法也有了更深刻的理解。在對理論的運用中,提高了我們的工程素質,當我們把自己想出來的程序與到PLC的時候問題出現了,不是不能運行,就是運行的結果和要求的結果不相符。通過解決一個個在調試中出現的問題,我們對PLC的理解加強了,看到了實踐與理論的差距,通過此次課程,讓我了解了PLC梯形圖、指令表、順序功能圖有了更好的了解,也讓我了解了關于PLC設計原理。有很多設計理念來源于實際,從中找出最合適的設計方法。
第四篇:單片機交通燈控制程序
#include
//*****define led port ********** sbit R1=P2^4;//east and west red led sbit Y1=P2^3;//east and west yellow led sbit G1=P2^2;//east and west green led sbit R2=P2^5;//south and north red led sbit Y2=P2^6;//south and north yellow led sbit G2=P2^7;//south and north green led
//*********define key************** sbit k0=P3^0;//emergency sbit k1=P3^1;//east and west pass sbit k2=P3^2;//south and north pass sbit k3=P3^3;//start and subtract 1 sbit k4=P3^4;//pause and add 1 sbit k5=P3^5;//set time
//*********define variable********* bit flag,flag_t;uchar dx_time,nb_time;uchar cnt,pass_time,cnt1,y_time;uchar k0num,k1num,k2num,k3num,k4num,k5num;
//*********define key******** void delay(uint i){ uint x,y;for(x=i;x>0;x--)
for(y=110;y>0;y--);} void timer0_init(){ TMOD=0x11;TH0=(65536-50000)/256;TL0=(65536-50000)%256;TH1=(65536-50000)/256;TL1=(65536-50000)%256;EA=1;ET0=1;ET1=1;}
void led_display(uchar dx,nb){ uchar dx1,dx2,nb1,nb2;dx2=dx/10;dx1=dx%10;nb2=nb/10;nb1=nb%10;if(dx>99){
led_w1=1;
led_w2=1;} else {
led_w1=0;
P0=table[dx1];
delay(5);
led_w1=1;
if(dx<10&&dx>0)led_w2=1;
else
{
led_w2=0;
P0=table[dx2];
delay(5);
led_w2=1;
} } if(nb>99){
led_w3=1;
led_w4=1;} else {
led_w3=0;
P0=table[nb1];
delay(5);
led_w3=3;
if(nb<10&&nb>0)led_w4=1;
else
{
led_w4=0;
P0=table[nb2];
delay(5);
led_w4=4;
} } } //*************light work********** void circle_led(){ if(!flag){
if(pass_time>5)
{
led_display(pass_time-5,pass_time);
R1=1;Y1=1;G1=0;
//east and west pass
R2=0;Y2=1;G2=1;
//south and north stop
}
if(pass_time<=5&&pass_time>0)
{
if(cnt>=10)led_display(pass_time,pass_time);
else led_display(100,pass_time);
R1=1;G1=1;
//east and west yellow led flash
if(cnt>=10)Y1=0;
else Y1=1;
R2=0;Y2=1;G2=1;
}
if(pass_time==0)
{
pass_time=nb_time;
flag=1;
} } else {
if(pass_time>5)
{
led_display(pass_time,pass_time-5);
R1=0;Y1=1;G1=1;
//east and west stop
R2=1;Y2=1;G2=0;
//south and north pass
}
if(pass_time<=5&&pass_time>0)
{
if(cnt>=10)led_display(pass_time,pass_time);
else led_display(pass_time,100);
R1=0;Y1=1;G1=1;
R2=1;G2=1;
//south and north yellow led flash
if(cnt>=10)Y2=0;
else Y2=1;
}
if(pass_time==0)
{
pass_time=dx_time;
flag=0;
} } }
void emergency()
//east and west,south and north stop { led_display(0,0);R1=0;Y1=1;G1=1;R2=0;Y2=1;G2=1;} void dx_pass()
//east and west pass,south and north stop { led_display(100,100);if(y_time<=5&&y_time>0){
TR1=1;
R1=0;Y1=1;G1=1;
R2=1;G2=1;
//south and north yellow led flash
if(cnt1>=10)Y2=0;
else Y2=1;} if(y_time==0){
TR1=0;
R1=1;Y1=1;G1=0;
R2=0;Y2=1;G2=1;} } void nb_pass()
//south and north pass,east and west stop { led_display(100,100);if(y_time<=5&&y_time>0){
TR1=1;
R1=1;G1=1;
if(cnt1>=10)Y1=0;//east and west yellow led flash
else Y1=1;
R2=0;Y2=1;G2=1;
} if(y_time==0){
TR1=0;
R1=0;Y1=1;G1=1;
R2=1;Y2=1;G2=0;} }
//***********keyboard scan************ void keyscan(){
if(!k5num)
{
if(k0==0)//*******emergency*******
{
delay(10);
if(k0==0)
{
while(!k0);
TR0=0;
k0num=1;
}
}
if(!k1num&&!k0num)
{
if(k1==0)
{
delay(10);
if(k1==0)
{
while(!k1);
k1num=1;
k2num=0;
y_time=5;//單方向通行時,黃燈閃爍時間
TR0=0;
TR1=1;
}
}
}
if(!k2num&&!k0num)
{
if(k2==0)
{
delay(10);
if(k2==0)
{
while(!k2);
k1num=0;
k2num=1;
y_time=5;//單方向通行時,黃燈閃爍時間
TR0=0;
TR1=1;
}
}
}
if(k3==0)
{
delay(10);
if(k3==0)
{
while(!k3);
if(k1num||k2num)pass_time=dx_time;//由東西或南北通行返回時,重新開始執行。
k0num=0;
k1num=0;
k2num=0;
k4num=0;
k5num=0;
TR0=1;
TR1=0;
flag_t=0;
}
} {
} if(!k4&&!k0num)
//pause { delay(10);if(k4==0){
while(!k4);
TR0=0;
k4num=1;} }
if(k4num==1)
//暫停鍵按下時,才可以調整兩個方向通行時間 if(k5==0){ delay(10);if(k5==0){
k5num++;
while(!k5);
switch(k5num)
{
case 1:
TR0=1;
flag_t=1;//調整時間時,pass_time值不變。
k5num=1;
break;
case 2:
k5num=2;
break;
case 3:
TR0=0;
k5num=0;
pass_time=dx_time;//重新賦值
break;
} } } if(k5num!=0){ if(k3==0){
delay(10);
if(k3==0)
{
while(!k3);
switch(k5num)
{
case 1:
dx_time--;
if(dx_time<10)
break;
case 2:
nb_time--;
if(nb_time<10)
break;
}
}
}
if(k4==0)
{
delay(10);
if(k4==0)
{
while(!k4);
switch(k5num)
{
case 1:
dx_time++;
if(dx_time>=100)
break;
case 2:
nb_time++;
if(nb_time>=100)
break;
}
}
}
} } } void main(){ timer0_init();dx_time=45;nb_time=30;
dx_time=99;nb_time=99;dx_time=10;nb_time=10;
pass_time=dx_time;while(1){ keyscan();if(k0num)emergency();else { switch(k4num){
case 0:
if(!k1num&&!k2num)
circle_led();
else
{
if(k1num)dx_pass();
if(k2num)nb_pass();
}
break;
case 1:
switch(k5num)
{
case 0:
if(!k1num&&!k2num)
circle_led();
else
{
if(k1num)dx_pass();
if(k2num)nb_pass();
}
break;
case 1:
R1=1;Y1=1;G1=1;//調整時間時,關閉所有燈
R2=1;Y2=1;G2=1;
if(cnt<=10)
led_display(100,nb_time);
else
led_display(dx_time,nb_time);
break;
case 2:
R1=1;Y1=1;G1=1;//調整時間時,關閉所有燈
R2=1;Y2=1;G2=1;
if(cnt<=10)
led_display(dx_time,100);
else
led_display(dx_time,nb_time);
break;
}
break;
}
}
} } void timer0()interrupt 1 { TH0=(65536-50000)/256;TL0=(65536-50000)%256;cnt++;if(cnt==20){
cnt=0;
if(flag_t==0)pass_time--;//調整時間時,不執行此操作
} } void timer1()interrupt 3 { TH1=(65536-50000)/256;TL1=(65536-50000)%256;cnt1++;if(cnt1==20){
cnt1=0;
y_time--;//單方向通行時,黃燈閃爍時間。
} }
第五篇:交通燈畢業設計
4.4 程序編寫
-交通燈控制程序----------
MCS-51匯編語言---------
用AT89S51單片機,12MHz晶振-------------------
程序名:交通燈.ASM----
交通燈控制系統程序-----
ORG 0000H;主程序的入口地址
AJMP MAIN;ORG 0003H AJMP INTO;ORG 0100H MAIN: MOV SP, #60H SETB EX0 SETB IT0 SETB EA;CPU MOV TMOD, #10H;MOV A , #0DEH;MOV P0 MOV R2START: ACALL DELAY DJNZ R2 DISP: MOV P0 MOV R2
DISP1: ACALL DELAY;DJNZ R2 MOV R2 WARN1: CPL P0.7;ACALL DELAY DJNZ R2 MOV P0 MOV R2 YEL1: ACALL DELAY DJNZ R2 MOV P0 MOV R2 DISP2: ACALL DELAY DJNZ R2 MOV R2 WARN2: CPL P0.2;,A,#2,START,#07EH;,#28H;,DISP1;20S,#10;,WARN1;,#0BBH;,#06,YEL1;3S,#0DBH;,#28H,DISP2,#10
指向主程序 指向緊急車輛出現中斷程序 ;允許INT0中斷
;設外部中斷0下降沿有效 開中斷
置定時器1為方式1 南北紅燈,東西紅燈 ;調用0.5S子程序 南北綠燈放行,紅燈禁止 置0.5S循環次數 調用0.5S延時子程序 不到繼續循環
置南北綠燈閃爍循環次數 南北綠燈閃爍 閃爍次數未到繼續循環 南北東西黃燈警告 未到繼續循環 南北紅燈,東西綠燈 ;20S未到繼續循環 東西綠燈閃爍 ACALL DELAY DJNZ R2,WARN2 MOV P0,#0BDH;南北東西黃燈 MOV R2,#06 YEL2: ACLAA DELAY DJNZ R2,YEL2 AJMP DISP;循環執行主程序 INT0: PUSH P0 ;P0口數據壓棧保護 PUSH 03H ;R3寄存器壓棧保護 PUSH TH1;TH1 PUSH TL1;TL1 MOV P0 MOV R5 DELAY0: ACLAA DELAY DJNZ R5 POP TL1;POP TH1 POP 03H RETI;DELAY: MOV R3 MOV TH1,#03CH MOV TL1,#0B0H SETB TR1 LP1: JBC R3 SJMP LP1
LP2: MOV TH1 MOV TL1 DJNZ R3 RET ENT,#0DEH;,#14H;,DELAY0;10S,#0AH,LP2,#03CH,#0B0H,LP1 壓棧保護 壓棧保護
南北東西道均為紅燈置0.5S循環初值 未到繼續循環 彈棧恢復現場 返回主程序