预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共11页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

单片机原理及系统课程设计报告PAGE\*MERGEFORMAT10单片机原理及系统课程设计专业:电气工程及其自动化班级:093班姓名:张阿兰学号:200811133指导教师:高阳评语:平时(40)修改(30)报告(30)总成绩兰州交通大学自动化与电气工程学院2012年7月1日1引言汽车信号灯的作用是大家所熟知的,汽车通过显示不同的信号灯来告诉前后左右的行车者本汽车正在进行的操作。本文主要是介绍汽车信号灯的控制,其中汽车信号灯包挂了左前灯、右前灯、左后灯、右后灯、仪表盘上的左右转弯信号灯。主要内容是使汽车在行驶过程中通过信号灯来传达汽车诸如转弯、刹车、闭合紧急开关、停靠等一系列操作信号。信号灯控制的实现主要是通过电路与C语言的结合来完成的,电路部分的设计是通过PROTEUS来完成的,其中灯的模拟采用了发光二极管,发光二级管有熄灭、点亮和闪烁三种信号,而汽车的一系列操作采用了相应的开关来模拟,所有的电路元件都是用PROTEUS软件上的虚拟元件来替代。电路图中的主芯片采用了C51,加载Keil51生成的.HEX文件,在PROTEUS上完成系统的调试和仿真。2设计方案及原理2.1问题描述汽车转向信号灯设计(1)设计内容模拟汽车在驾驶中的左转弯、右转弯、刹车、合紧急开关、停靠等操作。在左转弯或右转弯时,通过转弯操作杆使左转弯或右转弯开关合上,从而使左头信号灯、仪表板的左转弯灯、左尾信号灯或右头信号灯、仪表板的右转弯信号灯、右尾信号灯闪烁;闭合紧急开关时以上六个信号灯全部闪烁;汽车刹车时,左右两个尾信号灯点亮;若正当转弯时刹车,则转弯时原闪烁的信号灯应继续闪烁,同时另一个尾信号灯点亮,以上闪烁的信号灯以1Hz频率慢速闪烁;在汽车停靠开关合上时左头信号灯、右头信号灯、左尾信号灯、右尾信号灯以10Hz频率快速闪烁。任何在下表中未出现的组合,都将出现故障指示灯闪烁,闪烁频率为10Hz。表2.1模拟驾驶开关作时信号灯输出的信号表驾驶操作输出信号左转弯灯右转弯灯左头灯右头灯左尾灯右尾灯左转弯(合上左转弯开关)闪烁灭闪烁灭闪烁灭右转弯(合上右转弯开关)灭闪烁灭闪烁灭闪烁合紧急开关闪烁闪烁闪烁闪烁闪烁闪烁刹车(合刹车开关)灭灭灭灭亮亮左转弯时刹车闪烁灭闪烁灭闪烁亮右转弯时刹车灭闪烁灭闪烁亮闪烁刹车时合紧急开关闪烁闪烁闪烁闪烁亮亮左转弯时刹车合紧急开关闪烁闪烁闪烁闪烁闪烁亮右转弯时刹车合紧急开关闪烁闪烁闪烁闪烁亮闪烁停靠(合停靠开关)灭灭闪烁(10Hz)闪烁(10Hz)闪烁(10Hz)闪烁(10Hz)2.2问题的解决方案分析通过对以上问题描述的深入分析,可以总结出以下三点:=1\*GB2⑴通过六个发光二级管模拟两个头灯,两个灯尾和仪表盘上的两个指示灯。=2\*GB2⑵选择五个开关产生主要的五种状态,其他种状态用着五个开关的不同组合来分别表示,使发光二极管信号灯相应亮、灭和闪烁。=3\*GB2⑶通过软件实现控制灯的闪烁频3硬件设计根据前面所述的设计思路,在PROTEUS上进行硬件电路图的搭建图3.1汽车信号灯硬件电路4软件设计4.1程序流程图根据软件的设计思想,配合前面连接的硬件电路图,各接口所连接的相应元件的情况,可画出本系统程序流程图如下图所示。P1口P1.0—P1.5做输出口,控制灯,P2口P2.0-P2.4做输入口,采样当时开关状态(汽车的操作)。程序入口读取P2口状态判断开关状态若P2=0x010,停靠若P2=0x0F,右转弯时刹车合紧急开关若P2=0x0D,左转弯时刹车合紧急开关若P2=0x0C,刹车时合紧急开关若P2=0x0A,右转弯时刹车若P2=0x09,左转弯时刹车若P2=0x08,刹车若P2=0x04,合紧急开关若P2=0x02,右转弯若P2=0x01,左转弯4.2主程序:#include<REG51.H>#defineucharunsignedchar#defineuintunsignedintvoidDelay(uinti){uintx,y;for(x=i;x>0;x--)for(y=110;y>0;y--);}voidmain(void){uintaa;while(1){P2=0x00;aa=P2;if(aa==0x00)P1=0x00;elseif(aa==0x01){P1=0x2A;Delay(500);P1=0x00;Delay(500);}elseif(aa==0x02){P1=0x15;Delay(500);P1=0x00;Delay(500);}elseif(aa==0x04){P1=0