基于单片机的汽车信号灯控制系统.docx_第1页
基于单片机的汽车信号灯控制系统.docx_第2页
基于单片机的汽车信号灯控制系统.docx_第3页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中南大学课程设计(附代码)20)设计一个基于单片机的汽车信号灯控制系统设计要求:分析系统需求,设计出电路原理图,说明工作原理,编写程序及程序流程图。设计一个基于单片机的汽车信号灯控制系统。汽车驾驶执行的操作由相应的开关状态反映,所需控制的信号灯有仪表盘左/右转弯灯、左右头灯和左右尾灯共六类灯,还有蜂鸣器喇叭控制的信号。设计功能:驾驶操作与灯光信号对应关系如下:(1) 左/右转弯(合上左/右开关):仪表盘左/右转弯灯、左/右头灯、左/右尾灯闪烁。(2) 紧急开关合上:所有灯闪烁。(3) 刹车(合上刹车开关):左右尾灯亮。(4) 左/右转弯刹车:仪表盘左/右转弯灯、左/右头灯、左/右尾灯闪烁,右/左尾灯亮。(5) 刹车、合上紧急开关:尾灯亮、仪表板灯、头灯闪烁。(6) 左/右转弯刹车,并合上紧急开关:右/左尾灯亮,其余灯闪烁。(7) 停靠(合上停靠开关):头灯、尾灯以1Hz的频率闪烁。(8)倒车:尾灯长亮、蜂鸣器以0.5Hz的频率报警。设计要求:设计出电路原理图,说明工作原理,编写程序及程序流程图。仿真操作及现象:1) 合上左转弯开关:仪表板左转弯灯、左头灯、左尾灯闪烁。2) 合上右转弯开关:仪表板右转弯灯、右头灯、右尾灯闪烁。3) 合上紧急开关:所有灯闪烁4) 合上刹车开关:左右尾灯亮5) 合上左开关和刹车开关:仪表板左转弯灯、左头灯、左尾灯闪烁,右尾灯亮。6) 合上右开关和刹车开关:仪表板右转弯灯、右头灯、右尾灯闪烁,左尾灯亮。7) 合上刹车开关、紧急开关(紧急刹车):左右尾灯亮、左右仪表板灯、头灯闪烁。8) 合上左开关和刹车开关、紧急开关(紧急左转弯刹车):右尾灯亮,其余灯闪烁。9) 合上右开关和刹车开关、紧急开关(紧急右转弯刹车):左尾灯亮,其余灯闪烁。10) 合上停靠开关:左右头灯、尾灯以1Hz的频率闪烁1) 合上倒车开关:左右尾灯,蜂鸣器以0.5Hz的频率报警。状态名称输入状态输出状态转弯灯头灯尾灯喇叭左开关右开关紧急开关刹车开关左转弯刹车开关右转弯刹车开关停靠开关倒车开关左右左右左右左转弯100000000100100100右转弯010000000010010010紧急开关合上001000000101010101010刹车000100000000110左转弯刹车000010000100100110右转弯刹车000001000010011010紧急刹车0011000001010101110紧急左转弯刹车00101000010101010110紧急右转弯刹车00100100010101011010停靠0000001000010101010倒车000000010000111注:01表示闪烁,1表示亮/鸣喇叭,0表示不亮也不闪烁/不鸣喇叭代码:#include #include#define uchar unsigned char#define uint unsigned intunsigned 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;uchar k=16;uchar code DSY_CODE=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e,0x00;/延时void DelayMS(uint x)uchar i;while(x-) for(i=0;i40x0f;/按键后f0变成XXXX0000,X中有1个为0,三个仍为1;高4位转移到低4位并异或得到改变的值switch(Tmp)/对03行分别附加起始值0,4,8,12case 1:k+=0;break;case 2:k+=4;break;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=0xf0; /高4位置0,放入4行 /led=1; while(m6) P2=0xf0;if(P2!=0xf0) y=Keys_Scan();/扫描键盘获取输入的密码 /P3=DSY_CODEy; if(y=9&y!=x) KeyNom=y; P3=DSY_CODEy; m+; else if(9y16&y!=x) P3=0x86; /显示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=0x01; TH0= (65536- 50000)/256;/定时器0,方式l TL0= (65536- 50000)%256;/置初值,产生50ms 定时 IE=0x82;/允许T0中断 TR0=0; /关中断 P0=0x3f; P1=0xff; P2=0xf0; P3=0x00; for(;zong_switch!=0;) /循环直到总开关按下 DelayMS(50); P3=0x00; P3=0x86; while(zong_switch=0) /总开关按下 DelayMS(50); while(1) flag=Coded_lock(); DelayMS(50); choose=16; while(choose!=10)&(choose!=11) /循环,直到按下确定或者取消 P3=0xa1; /按确认或者取消P2=0xf0; if(P2!=0xf0) choose=Keys_Scan();DelayMS(100); P3=DSY_CODEchoose; DelayMS(50); if(flag=1) /密码正确 if(choose=10) /确定 break;else P3=0x86; else if(i=1) /三次密码错误,所有灯高频闪烁,并且蜂鸣器报警 while(1) P0=0xff; DelayMS(20); P0=0x00; DelayMS(20); else if(choose=10) /密码错误,且按下确认键 P3=0x8e; /显示F表示密码错误DelayMS(100); i-; /可输入密码次数减一 else P3=0x86; break; P3=0x00; TR0=1; while(1);void time0(void) interrupt 1 /TH0= (65536- 50000)/256; /TL0= (65536-50000)%256; P1=0xff;/ Pl先送Oxff,Pl中保存是按键的值 jianzhi=P1; /暂存键值到jianzhi jianzhi=jianzhi&0x7f; /因为最高位不用,去掉switch(jianzhi) case 0x3e: /左转弯0011 1110 BU=0;/蜂鸣器不响 RF=1; RB=1; RY=1; if(count=15) LF=!LF; LB=!LB; LY=!LY; count=0; else count+; break; case 0x3d: /右转弯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 0x3b: /紧急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 0x37:/刹车0011 0111 BU=0;/蜂鸣器不响LB=0; RB=0;LF=1; RF=1; LY=1; RY=1; break; case 0x36: /左转弯刹车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 0x35:/右转弯刹车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 0x33:/紧急刹车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 0x32:/左转紧急刹车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 0x31: /右转紧急刹车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 0x2f: /停靠0010 1111 BU=0;/蜂鸣器不响

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论