单片机设计报告--汽车转向灯
单片机课程设计报告
项目8
模拟汽车左右转向灯控制
专 业: 学 生 姓 名:
学 号: 18 、 19 指 导 教 师:
目录
一、目的及要求
1、任务目的……………………………………………………………1 2、任务要求……………………………………………………………1 3、电路及元器件………………………………………………………1
二、设计
1、设计说明……………………………………………………………2 2、任务分析……………………………………………………………6 3、程序设计……………………………………………………………6 4、硬件电路板电路图…………………………………………………8 5、程序及下载…………………………………………………………9 6、程序运行测试………………………………………………………10
三、小结
1、任务小结…………………………………………………………11 2、心得体会………………………………………………………12
一、任务目的:
通过采用单片机制作一个模拟汽车左右转向灯的控制系统。 二、任务要求:
汽车转向灯显示状态
(图一)
采用两个发光二极管来模拟汽车左转灯和右转灯,用单片机的P1.0和P1.1引脚控制发光二极管的亮、灭状态;用两个连接到单片机P3.0和P3.1引脚的拨动开关S0、S1,模拟驾驶员发出左转、右转命令。P3.0和P3.1引脚的电平状态与驾驶员发出的命令的对应关系如下表所示。 (图二)
比较上面两表可以看到,P3.0引脚的电平状态与左转灯得两灭状态相对应,当P3.0引脚的状态为1时,左转灯熄灭;当P3.0引脚的状态为O 时,左转灯闪烁。同样,P3.1引脚的状态与右转灯的亮灭状态相对应 三、电路设计:
单片机模拟汽车左右转向灯控制系统电路图如下图三,并行口P1的P1.0和P1.1控制两个发光二极管,当引脚输出为0时,相应的发光二极管点亮;P3口得P3.0和P3.1各自分别连接一个拨动开关,拨动开关的一端通过一个4.7K 电阻连接到电源,另一端接地。当波动开关S0拨至2时,P3.0引脚为低电平,P3.0 = 0;当拨至位置1时,P3.0引脚为高电平,P3.0 = 1。拨动开关S1亦然。
单片机模拟汽车左右转向灯控制系统所需要的元器件清单如下表:
简介(AT89C51)简介
AT89C51是一种带4K 字节闪烁可编程、可擦除的8位只读存储器(FPEROM —Flash Programmable and Erasable Read Only Memory ),可在低电压下工作。该器件采用ATMEL 高密度非易失存储器技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU 和闪烁存储器组合在单个芯片中,ATMEL 的AT89C51是一种高效微处理器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
AT89C51提供以下标准功能:4K 字节闪速存储器,128字节RAM ,32根I/O引线,两个16位定时器/计数器,五个中断源,两个中断优先级,一个全双工串行口,一个精密模拟比较器以及片内振荡器和时钟电路。此外,AT89C51是用可降到0频率的静态逻辑操作设计的并支持两种可选的软件节电工作方式。空闲方式停止CPU 工作但允许RAM ,定时器/计数器,串行口和中断系统继续工作。掉电方式保存RAM 内容但振荡器停止工作并禁止所有其它部件的工作直到下一个硬件复位。AT89C51的管脚排列如图2所示。 3.6.1管脚说明
VCC :电源;
GND :接地;
P0~P3口:四个并行双向口; X1、X2:外接12M 晶振; RST/PROOG:复位端; ALE/P:地址锁存端; PSEN :外部程序读选通端; EA/Vp:访问片内ROM 使能端。 P3口也可作为AT89C51的一些特殊功
能口(如图3.3所示)
P3.0:RXD (串行输入口);P3.1:TXD (串行输出口);P3.2:INT0(外部中断0); P3.3:INT1(外部中断1); P3.4:T0(记时器0外部输入);
P3.5:T1(记时器1外部输入); P3.6:WR (外部数据存储器写选通); P3.7:RD (外部数据存储器读选通)。
3.6.2主要特性 (1)4K字节可编程闪烁存储器;
(2)全静态工作:0~24Hz,三级程序存储器锁定;
(3)128×8位内部RAM ,32可编程I/O线; 图3.3 AT89C51管脚排列图
(4)两个16位定时器/计数器,5个中断源,可编程串行通道; (5)低功耗的闲置和掉电模式片内振荡器和时钟电路 显示。
四、硬件电路板电路图:
五、程序及下载:
模拟汽车转向灯控制系统的源程序如下: //程序:ex3_2.c
//功能:模拟汽车转向灯控制程序 #include
sbit P1_0=P1^0; //定义P1.0引脚位名称为P1_0 sbit P1_1=P1^1; //定义P1.1引脚位名称为P1_1 sbit P3_0=P3^0; //定义P3.0引脚位名称为P3_0
sbit P3_1=P3^1; //定义P3.1引脚位名称为P3_1 void delay(unsigned char i); //延时函数声明 void main() //主函数 {
bit left,right; //定义位变量left 、right 表示左、右状态
while(1) { //while循环语句,由于条件一直为真,该语句为无限循环
left=P3_0; //读取P3.0引脚的(左转向灯)状态并赋值给left
right=P3_1; //读取P3.1引脚的(右转向灯)状态并赋值给right
P1_0=left; //将left 的值送至P1.0引脚 P1_1=right; //将right 的值送至P1.1引脚 delay(200); //调用延时函数,实际参数为200 P1_0=1; //将P1.0引脚置1输出(熄灭LED) P1_1=1; //将P1.1引脚置1输出(熄灭LED) delay(200); //调用延时函数,实际参数为200 } }
//函数名:delay
//函数功能:实现软件延时
//形式参数:unsigned char i;
// i控制空循环的外循环次数,共循环i*255次 //返回值:无
void delay(unsigned char i) //延时函数,无符号字符型变量i 为形式参数
{
unsigned char j,k; //定义无符号字符型变量j 和k for(k=0;k
六、程序运行测试:
接通电路板电源,当开关S0,S1都处于置位时,左、右转向灯均为熄灭状态,汽车直行;当汽车需要左转时,将开关拨向位置2,左转向灯闪烁,当汽车需要右转时,将开关拨向位置2,右转向灯闪烁;如果汽车出现故障需要打开警示灯,将S0,S1同时拨到位置2上,此时左右转向灯均为闪烁状态。
七、任务小结:
N
N
本任务模拟人们常见得汽车转向灯显示控制功能,用单片机的P3口接收驾驶员发出的左转、右转命令,控制连接到P1口上的两个发光二极管闪烁,指示汽车的左右转向,通过该实验,让我们进一步了解了AT89C51的功能。
由于该试验比较简单,所以在完成实验的过程中,比没有遇到多大的问题,要说问题的话,唯有一点是硬件电路连线时,常常会出现打岔的情况。