單片機技術及應用(中職)課件 18.交通燈控制_第1頁
單片機技術及應用(中職)課件 18.交通燈控制_第2頁
單片機技術及應用(中職)課件 18.交通燈控制_第3頁
單片機技術及應用(中職)課件 18.交通燈控制_第4頁
單片機技術及應用(中職)課件 18.交通燈控制_第5頁
已閱讀5頁,還剩22頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

51單片機實訓課程

交通燈控制

1交通信號燈控制的邏輯秩序2交通燈的單片機控制思路3中斷延時子函數的寫法4交通燈控制流程圖5交通燈控制的參考程序重點

1交通信號燈控制的邏輯秩序2交通燈控制流程圖3中斷子函數的寫法4交通燈控制的程序的理解難點

交通燈的控制,我們在現實生活中見得太多了,但是我們是否很清楚它的控制邏輯呢?事實上,我們很多人都不會太留心身邊常見的事情。比如我問你,究竟在紅燈過后是綠燈呢還是黃燈?你可能還要思考幾分鐘才能回答這個問題。因為你可能會說我又不開車,干嘛管這些。我只用知道“紅燈停,綠燈行”就好了。所以今天讓我們好好了解一下交通燈的控制邏輯!情境引入項目任務要求(1)正常情況下輪流放行,南北道A放行50秒(其中5秒用于警告),東西道B放行50秒(其中5秒用于警告)。(2)有緊急車輛通過(用按鍵開關K1模擬)時,A、B道均為紅燈。交通燈控制整體思路1)正常情況下運行程序,采用50ms中斷延時子程序的反復調用來實現各種定時時間;2)有緊急車輛通過時,采用外部中斷0執行中斷服務程序,并設置該中斷為高優先級中斷。交通燈控制硬件要求

交通燈控制交通燈控制硬件模塊交通燈控制示意圖交通燈控制邏輯亮燈時間45S5S45S5S南北車道A綠燈亮黃燈閃爍紅燈亮紅燈亮東西車道B紅燈亮紅燈亮綠燈亮黃燈閃爍交通燈控制單片機硬件示意圖連線用總線控制方式,我們是用組數據線即排線來連接P0口和8個LED燈。交通燈控制軟件要求

交通燈控制

交通燈控制流程圖開始四個路口紅燈亮(狀態0)南北紅燈亮,東西綠燈亮,延時(狀態1)南北紅燈亮,東西黃燈閃爍,延時(狀態2)南北綠燈亮,東西紅燈亮,延時(狀態3)南北黃燈閃爍,東西紅燈亮,延時(狀態4)#include<reg52.h>#defineucharunsignedchar#defineuintunsignedint

//加載52系列單片機頭文件//宏定義,將無符號字符型定義為uchar字符,這樣的好處是可以少寫很多字符//宏定義,將無符號整型定義為uint字符參考程序(加載、定義部分)sbitnbr=P1^0;sbitnby=P1^1; sbitnbg=P1^2;sbitdxr=P1^3; sbitdxy=P1^4; sbitdxg=P1^5;uintk,k1,n;

//將P1口的第1位定義為nbr字符即表示南北紅燈//nby

南北黃//nbg

南北綠

//dxr

東西紅//dxy東西綠//dxg東西黃//定義無符號整型變量k,k1,n參考程序(加載、定義部分)voidinit(){ TMOD=0x01; TH0=(65536-

45872)/256; TL0=(65536-

45872)%256; EA=1; ET0=1;TR0=1;}

//中斷延時子函數的定義//設定定時器0位工作方式1(M0M1=01)//裝初值11.0592M晶振定時50ms數為45872//開總中斷//開定時器0中斷//啟動定時器0參考程序(中斷延時子函數部分)voidmain(){

init(); while(1) { nbr=dxg=0; TR0=1;while(k1<=45);

k1=0;

TR0=0;

//主函數入口//調用中斷延時子函數//大循環//東西綠燈亮,南北紅燈亮//啟動中斷定時50ms*20=1s//當定時到45*1=45秒時k1計算值置0//關斷中斷參考程序(主函數部分)nbr=1;TR0=1;for(k=1;k<=6;k++) {

nby=~nby; while(k1<=1); k1=0;

}

//南北紅燈滅//啟動定時器0中斷//設置閃爍的次數5次,每次1s,共5s。//南北黃燈狀態取反//當定時到1s后就將k1重新置0,目的是使黃燈閃爍的間隔時間是1s參考程序(主函數部分)TR0=0; nbg=dxr=0; dxg=1; TR0=1; while(k1<=45);

k1=0;

TR0=0; dxr=1;

TR0=1;

//關斷中斷定時//南北綠燈亮,東西紅燈亮//東西黃燈滅//啟動中斷定時//定時時長45s參考程序(主函數部分)for(k=1;k<=6;k++)

{

dxy=~dxy;

while(k1<=1);

k1=0;

}

nbg=1;

TR0=0; }}

//設置閃爍次數參考程序(主函數部分)voidt_0()interrupt1{ TH0=(65536-

45872)/256; TL0=(65536-

45872)%256; n++; if(n==20)

{

n=0;

k1++;

}}

//中斷延時子函數的定義//裝初值11.0592M晶振定時50ms數為45872//n變量加1//當n變量等于20時表示定時了50ms*20=1s//n變量重置0//k1變量加1參考程序(中斷延時子函數部分)C語言基礎知識

交通燈控制voidinit(){ TMOD=0x01; TH0=(65536-

45872)/256; TL0=(65536-

45872)%256; EA=1; ET0=1;TR0=1;}

//中斷延時子函數的定義//設定定時器0位工作方式1(M0M1=01)//裝初值11.0592M晶振定時50ms數為45872//開總中斷//開定時器0中斷//啟動定時器0啟動中斷延時子函數的寫法

總結交通信號燈控制的邏輯秩序交通

溫馨提示

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

評論

0/150

提交評論