基于单片机的汽车信号灯控制系统.docx
文本预览下载声明
中南大学课程设计
(附代码)
20)设计一个基于单片机的汽车信号灯控制系统
设计要求:分析系统需求,设计出电路原理图,说明工作原理,编写程序及程序流程图。
设计一个基于单片机的汽车信号灯控制系统。汽车驾驶执行的操作由相应的开关状态反映,所需控制的信号灯有仪表盘左/右转弯灯、左右头灯和左右尾灯共六类灯,还有蜂鸣器喇叭控制的信号。
设计功能:
驾驶操作与灯光信号对应关系如下:
(1) 左/右转弯(合上左/右开关):仪表盘左/右转弯灯、左/右头灯、左/右尾灯闪烁。
(2) 紧急开关合上:所有灯闪烁。
(3) 刹车(合上刹车开关):左右尾灯亮。
(4) 左/右转弯刹车:仪表盘左/右转弯灯、左/右头灯、左/右尾灯闪烁,右/左尾灯亮。
(5) 刹车、合上紧急开关:尾灯亮、仪表板灯、头灯闪烁。
(6) 左/右转弯刹车,并合上紧急开关:右/左尾灯亮,其余灯闪烁。
(7) 停靠(合上停靠开关):头灯、尾灯以1Hz的频率闪烁。
(8)倒车:尾灯长亮、蜂鸣器以0.5Hz的频率报警。
设计要求:设计出电路原理图,说明工作原理,编写程序及程序流程图。
仿真操作及现象:
合上左转弯开关:仪表板左转弯灯、左头灯、左尾灯闪烁。
合上右转弯开关:仪表板右转弯灯、右头灯、右尾灯闪烁。
合上紧急开关:所有灯闪烁
合上刹车开关:左右尾灯亮
合上左开关和刹车开关:仪表板左转弯灯、左头灯、左尾灯闪烁,右尾灯亮。
合上右开关和刹车开关:仪表板右转弯灯、右头灯、右尾灯闪烁,左尾灯亮。
合上刹车开关、紧急开关(紧急刹车):左右尾灯亮、左右仪表板灯、头灯闪烁。
合上左开关和刹车开关、紧急开关(紧急左转弯刹车):右尾灯亮,其余灯闪烁。
合上右开关和刹车开关、紧急开关(紧急右转弯刹车):左尾灯亮,其余灯闪烁。
合上停靠开关:左右头灯、尾灯以1Hz的频率闪烁
合上倒车开关:左右尾灯,蜂鸣器以0.5Hz的频率报警。
状态名称
输入状态
输出状态
转弯灯
头灯
尾灯
喇叭
左开关
右开关
紧急开关
刹车开关
左转弯刹车开关
右转弯刹车开关
停靠开关
倒车开关
左
右
左
右
左
右
左转弯
1
0
0
0
0
0
0
0
01
0
01
0
01
0
0
右转弯
0
1
0
0
0
0
0
0
0
01
0
01
0
01
0
紧急开关合上
0
0
1
0
0
0
0
0
01
01
01
01
01
01
0
刹车
0
0
0
1
0
0
0
0
0
0
0
0
1
1
0
左转弯刹车
0
0
0
0
1
0
0
0
01
0
01
0
01
1
0
右转弯刹车
0
0
0
0
0
1
0
0
0
01
0
01
1
01
0
紧急刹车
0
0
1
1
0
0
0
0
01
01
01
01
1
1
0
紧急左转弯刹车
0
0
1
0
1
0
0
0
01
01
01
01
01
1
0
紧急右转弯刹车
0
0
1
0
0
1
0
0
01
01
01
01
1
01
0
停靠
0
0
0
0
0
0
1
0
0
0
01
01
01
01
0
倒车
0
0
0
0
0
0
0
1
0
0
0
0
1
1
1
注:01表示闪烁,1表示亮/鸣喇叭,0表示不亮也不闪烁/不鸣喇叭
代码:
#include reg52.h
#includeintrins.h
#define uchar unsigned char
#define uint unsigned int
unsigned char jianzhi;
uchar count=0;
uchar count1=0; //记录中断次数,count2=20才产生1HZ的时钟脉冲
uchar count2=0; //记录中断次数,count2=40才产生0.5HZ的时钟脉冲
sbit LF=P0^0; //左头灯
sbit RF=P0^1; //右头灯
sbit LY=P0^2; //左转弯灯
sbit RY=P0^3; //右转弯灯
sbit LB=P0^4; //左尾灯
sbit RB=P0^5; //右尾灯
sbit BU=P0^6; //蜂鸣器
sbit led=P0^7;
sbit zong_switch=P1^6;
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;i120;i++);
}
}
显示全部