基于單片機的汽車信號燈控制系統方案_第1頁
基于單片機的汽車信號燈控制系統方案_第2頁
基于單片機的汽車信號燈控制系統方案_第3頁
基于單片機的汽車信號燈控制系統方案_第4頁
基于單片機的汽車信號燈控制系統方案_第5頁
已閱讀5頁,還剩7頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、 . . . . 12/12中南大學課程設計(附代碼)20)設計一個基于單片機的汽車信號燈控制系統設計要求:分析系統需求,設計出電路原理圖,說明工作原理,編寫程序與程序流程圖。設計一個基于單片機的汽車信號燈控制系統。汽車駕駛執行的操作由相應的開關狀態反映,所需控制的信號燈有儀表盤左/右轉彎燈、左右頭燈和左右尾燈共六類燈,還有蜂鳴器喇叭控制的信號。設計功能:駕駛操作與燈光信號對應關系如下:(1) 左/右轉彎(合上左/右開關):儀表盤左/右轉彎燈、左/右頭燈、左/右尾燈閃爍。(2) 緊急開關合上:所有燈閃爍。(3) 剎車(合上剎車開關):左右尾燈亮。(4) 左/右轉彎剎車:儀表盤左/右轉彎燈、左/

2、右頭燈、左/右尾燈閃爍,右/左尾燈亮。(5) 剎車、合上緊急開關:尾燈亮、儀表板燈、頭燈閃爍。(6) 左/右轉彎剎車,并合上緊急開關:右/左尾燈亮,其余燈閃爍。(7) 停靠(合上停靠開關):頭燈、尾燈以1Hz的頻率閃爍。(8)倒車:尾燈長亮、蜂鳴器以0.5Hz的頻率報警。設計要求:設計出電路原理圖,說明工作原理,編寫程序與程序流程圖。仿真操作與現象:合上左轉彎開關:儀表板左轉彎燈、左頭燈、左尾燈閃爍。合上右轉彎開關:儀表板右轉彎燈、右頭燈、右尾燈閃爍。合上緊急開關:所有燈閃爍合上剎車開關:左右尾燈亮合上左開關和剎車開關:儀表板左轉彎燈、左頭燈、左尾燈閃爍,右尾燈亮。合上右開關和剎車開關:儀表板

3、右轉彎燈、右頭燈、右尾燈閃爍,左尾燈亮。合上剎車開關、緊急開關(緊急剎車):左右尾燈亮、左右儀表板燈、頭燈閃爍。合上左開關和剎車開關、緊急開關(緊急左轉彎剎車):右尾燈亮,其余燈閃爍。合上右開關和剎車開關、緊急開關(緊急右轉彎剎車):左尾燈亮,其余燈閃爍。合上停靠開關:左右頭燈、尾燈以1Hz的頻率閃爍合上倒車開關:左右尾燈,蜂鳴器以0.5Hz的頻率報警。狀態名稱輸入狀態輸出狀態轉彎燈頭燈尾燈喇叭左開關右開關緊急開關剎車開關左轉彎剎車開關右轉彎剎車開關停靠開關倒車開關左右左右左右左轉彎100000000100100100右轉彎010000000010010010緊急開關合上00100000010

4、1010101010剎車000100000000110左轉彎剎車000010000100100110右轉彎剎車000001000010011010緊急剎車0011000001010101110緊急左轉彎剎車00101000010101010110緊急右轉彎剎車00100100010101011010停靠0000001000010101010倒車000000010000111注:01表示閃爍,1表示亮/鳴喇叭,0表示不亮也不閃爍/不鳴喇叭代碼:#include #include#define uchar unsigned char#define uint unsigned intunsigned

5、 char jianzhi;uchar count=0;uchar count1=0; /記錄中斷次數,count2=20才產生1HZ的時鐘脈沖uchar count2=0; /記錄中斷次數,count2=40才產生0.5HZ的時鐘脈沖sbit LF=P00; /左頭燈sbit RF=P01; /右頭燈sbit LY=P02; /左轉彎燈sbit RY=P03; /右轉彎燈sbit LB=P04; /左尾燈sbit RB=P05; /右尾燈sbit BU=P06; /蜂鳴器sbit led=P07;sbit zong_switch=P16;uchar code Key=1,2,3,4,5,6;

6、uchar k=16;uchar code DSY_CODE=0 xc0,0 xf9,0 xa4,0 xb0,0 x99,0 x92,0 x82,0 xf8,0 x80,0 x90,0 x88,0 x83,0 xc6,0 xa1,0 x86,0 x8e,0 x00;/延時void DelayMS(uint x)uchar i;while(x-) for(i=0;i40 x0f;/按鍵后f0變成#0000,X中有1個為0,三個仍為1;高4位轉移到低4位并異或得到改變的值switch(Tmp)/對03行分別附加起始值0,4,8,12case 1:k+=0;break;case 2:k+=4;bre

7、ak;case 4:k+=8;break;case 8:k+=12;return(k);/密碼鎖 uchar Coded_lock() uchar m=0,j,x=16,y=16; uchar KeyNo=16,16,16,16,16,16;/按鍵序號,16表示無按鍵 P2=0 xf0; /高4位置0,放入4行 /led=1; while(m6) P2=0 xf0;if(P2!=0 xf0) y=Keys_Scan();/掃描鍵盤獲取輸入的密碼 /P3=DSY_CODEy; if(y=9&y!=x) KeyNom=y; P3=DSY_CODEy; m+; else if(9y16&y!=x)

8、P3=0 x86; /顯示E,表示重新輸入 m=0; x=y;y=16;DelayMS(100); for(j=0;j6;j+) if(KeyNoj!=Keyj) return 0; break; return 1;/主程序void main(void) uchar i=3,sign=1,flag=0,choose=16; TMOD=0 x01; TH0= (65536- 50000)/256;/定時器0,方式l TL0= (65536- 50000)%256;/置初值,產生50ms 定時 IE=0 x82;/允許T0中斷 TR0=0; /關中斷 P0=0 x3f; P1=0 xff; P2=

9、0 xf0; P3=0 x00; for(;zong_switch!=0;) /循環直到總開關按下 DelayMS(50); P3=0 x00; P3=0 x86; while(zong_switch=0) /總開關按下 DelayMS(50); while(1) flag=Coded_lock(); DelayMS(50); choose=16; while(choose!=10)&(choose!=11) /循環,直到按下確定或者取消 P3=0 xa1; /按確認或者取消P2=0 xf0; if(P2!=0 xf0) choose=Keys_Scan();DelayMS(100); P3=

10、DSY_CODEchoose; DelayMS(50); if(flag=1) /密碼正確 if(choose=10) /確定 break;else P3=0 x86; else if(i=1) /三次密碼錯誤,所有燈高頻閃爍,并且蜂鳴器報警 while(1) P0=0 xff; DelayMS(20); P0=0 x00; DelayMS(20); else if(choose=10) /密碼錯誤,且按下確認鍵 P3=0 x8e; /顯示F表示密碼錯誤DelayMS(100); i-; /可輸入密碼次數減一 else P3=0 x86; break; P3=0 x00; TR0=1; whi

11、le(1);void time0(void) interrupt 1 /TH0= (65536- 50000)/256; /TL0= (65536-50000)%256; P1=0 xff;/ Pl先送Oxff,Pl中保存是按鍵的值 jianzhi=P1; /暫存鍵值到jianzhi jianzhi=jianzhi&0 x7f; /因為最高位不用,去掉switch(jianzhi) case 0 x3e: /左轉彎0011 1110 BU=0;/蜂鳴器不響 RF=1; RB=1; RY=1; if(count=15) LF=!LF; LB=!LB; LY=!LY; count=0; else

12、count+; break; case 0 x3d: /右轉彎0011 1101 BU=0;/蜂鳴器不響 LF=1; LB=1; LY=1; if(count=15) RF=!RF; RB=!RB; RY=!RY; count=0; else count+; break; case 0 x3b: /緊急0011 1011 BU=0;/蜂鳴器不響 if(count=15) LF=!LF; RF=!RF; LY=!LY; RY=!RY; LB=!LB; RB=!RB; count=0; else count+; break; case 0 x37:/剎車0011 0111 BU=0;/蜂鳴器不響L

13、B=0; RB=0;LF=1; RF=1; LY=1; RY=1; break; case 0 x36: /左轉彎剎車0011 0110 BU=0;/蜂鳴器不響 RB=0; RF=1; RY=1; if(count=15) LB=!LB; LF=!LF; LY=!LY; count=0; else count+; break; case 0 x35:/右轉彎剎車0011 0101 BU=0;/蜂鳴器不響 LB=0; LF=1; LY=1; if(count=15) RB=!RB; RF=!RF; RY=!RY; count=0; else count+; break; case 0 x33:/

14、緊急剎車0011 0011 BU=0;/蜂鳴器不響 LB=0; RB=0; if(count=15) RF=!RF; LF=!LF; RY=!RY; LY=!LY; count=0; else count+; break; case 0 x32:/左轉緊急剎車0011 0010 BU=0;/蜂鳴器不響 RB=0; if(count=15) LB=!LB; RF=!RF; RY=!RY; LF=!LF; LY=!LY; count=0; else count+; break; case 0 x31: /右轉緊急剎車0011 0001 BU=0;/蜂鳴器不響 LB=0; if(count=15) RB=!RB; RF=!RF; RY=!RY; LF=!LF; LY=!LY; count=0; else count+; break; case 0 x2f: /停靠0010 1111 BU=0;/蜂鳴器不響

溫馨提示

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

評論

0/150

提交評論