单片机课程设计--基于51单片机的交通灯

上传人:re****.1 文档编号:559996923 上传时间:2023-03-13 格式:DOC 页数:16 大小:203KB
返回 下载 相关 举报
单片机课程设计--基于51单片机的交通灯_第1页
第1页 / 共16页
单片机课程设计--基于51单片机的交通灯_第2页
第2页 / 共16页
单片机课程设计--基于51单片机的交通灯_第3页
第3页 / 共16页
单片机课程设计--基于51单片机的交通灯_第4页
第4页 / 共16页
单片机课程设计--基于51单片机的交通灯_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《单片机课程设计--基于51单片机的交通灯》由会员分享,可在线阅读,更多相关《单片机课程设计--基于51单片机的交通灯(16页珍藏版)》请在金锄头文库上搜索。

1、 物理与信息工程学院单片机课程设计 题 目:基于51单片机的交通灯 学 院:物理与信息工程学院 专 业:自动化 目录1、 概述-32、 系统各局部硬件的设计-4(1) 总的硬件设计流程-4(2) 各硬件局部的电路设计-53、 软件的分块流程图及程序编写-74、 软件仿真图-155、心得体会-161、概述背景:交通的兴旺,标志着城市的兴旺,相对交通的管理那么显得越来越重要。对于复杂的城市交通系统,为了确保平安,保证正常的交通秩序,十字路口的信号控制必需按照一定的规律变化,以便于车辆行人能顺利地通过十字路口。正常情况下,十字路口的红绿灯应交替变换,考虑紧急情况下,如有救护车或警车到来时,应优先让其

2、通过。 交通灯在平安行车过程中起着十分重要的作用, 现在交通灯一般设在十字路口, 在醒目位置用红、绿、黄三种颜色的指示灯, 加上一个倒计时的显示计时器来控制行车, 对于一般情况下的平安行车、车辆分流发挥着作用, 但根据实际行车过程中出现的情况, 主要有如下几个缺点: 1两车道让车轮流放行时间相同且固定, 在十字路口, 经常一个车道为主干道,车辆较多, 放行时间应该长些; 另一车道为副干道, 车辆较少,放行时间短些。2 没有考虑紧急车通过时, 两车道应采取的措施, 譬如, 有消防车通过执行紧急任务时, 两车道的车都应停止, 让紧急车通过。根据行车过程中出现的实际情况, 如何全面有效地利用交通灯指

3、示交通情况, 本人尝试用单片机来控制交通灯, 在软、硬件方面采取一些改良措施, 使交通灯在控制中灵活而有效。实现的任务: 单片机来实现,根据设计要求,交通信号灯控制器的外部输出信号为主、副车道红、黄、绿灯共12个驱动信号;编程使相应位复/置位来实现信号灯的亮/灭控制,使得十字路口的红、绿灯交替点亮;在灯色交换时,黄灯闪烁提醒。设计要求有紧急车辆通过时,十字路口均显示红灯。可以通过软件中断来完成紧急任务,定义T0为计数中断并为下降沿触发,编写对应中断向量子程序和中断效劳程序,完成中断处理。设计还对定时控制有所要求。对于精确定时,应该用计数器加以控制,硬件实现复杂度增加。考虑到该设计对时间精度要求

4、不高,所以采用软件定时可以大大简化电路。先计算出程序单部执行的时间,设置循环参数,利用if语句按设计要求完成定时控制。(4)当南北方向车辆较多,东西方向车俩较少时,通过开关来改变各方向的灯来调节。 2、 系统硬件的设计与流程 晶振电路输入控制输出显示外围功能器件单片机晶振和复位电路:单片机系统的必要组成局部,控制单片机的机器周期和功能复位通用的晶振电路单片机的晶振电路是一种典型电路,分为内部时钟方式和外部时钟方式两种。输入控制:是指在一定要求下,采取何种形式的控制方式来实现单片机不同功能的转换,以及控制指令以何种方式传送到单片机输出显示:是指单片机将需要显示的数据发送到LED、液晶等显示模块,

5、并控制LED等显示模块按照一定的格式显示的功能。外围功能器件:单片机只是控制器件,对应与一定的设计要求,需要参加特定功能的器件。单片机的最简单系统是指单片机能正常工作所必须的外围元件,主要由单片机、晶振电路和复位电路构成。而输入/输出局部那么通过单片机的I/O口实现。开关用来实现特殊的功能,当有救护车等出现时,按下开关,所有灯变成红灯,让救护车通行。3、 软件的分块流程与程序编写1、 编写延时程序void delay0(uint z)uint i,j;for(i=0;iz;i+)/z为1是1msfor(j=0;j0;y-) for(i=1250;i0;i-) for(k=180;k0;k-);

6、 2、定时1ms的程序代码 当单片机的晶振为12MHz时,计数值1代表的时间就是1us。计数器的容量是16位,也就是最大的计数值到达65536,因此计数计到65536就会产生溢出。 Void t0(void)interrupt 1 using 0 TH0=(65536-1000)/256; /设置定时器高8位初值 TL0=(65536-1000)%256; /设置定时器低8位初值3、 外部中断 void xint0() interrupt 0 /外部中断INT0 GREEN_ZHU_ON(); void xint1() interrupt 2 /外部中断INT1 GREEN_ZHI_ON();

7、 void GREEN_ZHU_ON()/外部中断INT0显示子程序 P1=0xdb; P3_0=0; P3_1=1; P3_4=1; P3_7=0; delay0(10000); void GREEN_ZHI_ON()/外部中断INT1显示子程序 P1_2=0; P3_0=0;P1_5=1;P3_7=1;P1_0=1;P1_6=1;P1_3=0;P3_1=0;P1_1=1;P1_4=1;P3_4=1; P0=0xff;P2=0X00;delay0(1000);return; 开 始计数单元清零TH0,TL0装入初值各状态的定义初始状态东西绿灯,南北红灯延时30s显示数据处理东西黄灯亮,南北红

8、灯闪烁延时5s东西红灯亮,南北绿灯亮东西红灯闪烁,南北黄灯亮显示数据处理延时20s显示数据处理延时5s显示数据处理四、总的程序 #include#include/做移位的一个头文件头文件#define uchar unsigned char/宏定义#define uint unsigned int/宏定义sbit P1_0=P10;sbit P1_1=P11;sbit P1_2=P12;sbit P1_3=P13;sbit P1_4=P14;sbit P1_5=P15;sbit P1_6=P16;sbit P1_7=P17;sbit P3_0=P30;sbit P3_1=P31;sbit P3

9、_4=P34;sbit P3_7=P37;uint aa,a,b,c=10; /*数码管显示0-9*/uint code table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90; /*子函数声明*/void delay0(uint z);void display(uint a,uint b);void flag1();void flag2();void flag3();void flag4();void xint0(); void xint1();void xtimer0();void GREEN_ZHU_ON();void GREEN_

10、ZHI_ON(); /*/void main()EA=1;/开中断EX0=1;/允许外部中断INT0中断IT0=0;/定义INT0触发方式PX0=1;/中断优先级高EX1=1;/允许外部中断INT1中断IT1=0;/定义INT1触发方式PX1=1;/中断优先级高 while(1) flag1(); /东西方向绿灯亮,南北方向红灯亮 flag2(); /东西方向黄灯亮,南北方向红灯亮 flag3(); /东西方向红灯亮,南北方向绿灯亮 flag4(); /东西方向红灯闪烁,南北方向黄灯亮 void flag1()/东西方向绿灯亮,南北方向红灯亮30s int time; time=11;/变量赋

11、初值TMOD=0x01;/定时器T0工作于方式1TH0=(65536-50000)/256;TL0=(65536-50000)%256;/定时50msEA=1;/开中断ET0=1;/开定时中断TR0=1;/开定时器T0 while(1) P1=0x9e; /东西方向绿灯亮,南北方向红灯亮30ms P3_0=1; P3_1=1; P3_4=1; P3_7=0; if(aa=20)/定时20*50MS=1Saa=0;/定时完成一次后清0time-;/变量自减if(time=5)break; /跳出整个循环b=time%100/10;/显示十位a=time%10;/显示个位 display(a,b);void flag2() int time;time=6;/变量赋初值TMOD=0x01;/定时器T0工作于方式1TH0=(65536-50000)/256;TL0=(65536-50000)%256;/定时50msEA=1;/开中断ET0=1;/开定时中断TR0=1;/开定时器T0while(1) /东西方向黄灯闪烁,南北方向红灯闪烁 P1_0=1; P1_1=0; P1_2=1; P1_3=1; P1_4=1; P1_6=1; P1_7=0; P3_0=1; P3_1=1; P3_4=1;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 商业计划书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号