单片机交通灯控制课程设计

上传人:第*** 文档编号:56896454 上传时间:2018-10-16 格式:DOC 页数:17 大小:102KB
返回 下载 相关 举报
单片机交通灯控制课程设计_第1页
第1页 / 共17页
单片机交通灯控制课程设计_第2页
第2页 / 共17页
单片机交通灯控制课程设计_第3页
第3页 / 共17页
单片机交通灯控制课程设计_第4页
第4页 / 共17页
单片机交通灯控制课程设计_第5页
第5页 / 共17页
点击查看更多>>
资源描述

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

1、1单片机交通灯控制课程设计单片机交通灯控制课程设计姓名:院系:物理与电气工程学院专业:电气工程及其自动化班级:学号:指导教师:孙志富2014 年 3 月 15 日2基本要求基本要求利用单片机的定时器产生秒信号,控制十字路口的红、绿、黄灯交替点亮和熄灭,并且用4只LED数码管显示十字路口两个方向的剩余时间。要求能用按键设置两个方向的通行时间(绿、红等点亮的时间)和暂缓通行时间(黄灯点亮的时间)。系统的工作应符合一般交通灯控制的要求。 设计简介设计简介交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提

2、高道路通行能力,减少交通事故有明显效果。近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。本设计系统由单片机 I/O 口系统、交通灯状态显示系统、复位电路等几大部分组成。系统具有基本的交通灯功能,较好的模拟实现了十字路口可能出现的状况。本设计系统利用单片机的工作原理设计一个十字路口交通信号灯,要求东、西、南、北四个方向各有红黄绿色三个灯,当东西方向亮绿灯时,南北方向红灯亮起;反之,如果南北方向亮绿灯,同时东西方向亮绿灯

3、;绿灯亮时车辆行驶,红灯亮时车辆停止。即在同一时间内保证只有两个对应方向的车辆可以行驶。本设计系统软件上采用 Keil uVision3、Proteus。使用 C51 编程,主要编写了主程序、中断子程序、延时子程序、数码管显示子程序、交通控制子程序、矩阵键盘子程序。本设计系统经过整机调试,实现了对十字路口交通灯运作与设置的模拟。系统简要分析系统简要分析本设计系统单片机89C51为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强、成本较低。本设计就是采用单片机模拟十字路口交通灯3的各种状态显示。利用单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支干道汇合成3

4、十字路口,在每个入口处设置红、绿、黄三色信号灯,数码管显示剩余时间。红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。用红、绿、黄发光二极管作信号灯,8 管共阴极数码管显示剩余时间,矩阵键盘用来设置交通灯的显示时间和状态。硬件原理图硬件原理图源程序源程序#include#define uchar unsigned char#define uint unsigned intuchar code table= /共阴极数码管码表0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,40x39,0x5e,0x7

5、9,0x71,0xC9,0xFF,0x40;/设置码,测试码,不计时码void delay(uint x);/延时函数void display(uchar,uchar,uchar,uchar); /数码管显示函数void mkeys(); /键盘函数void traffic();/交通灯函数uchar num,num1,num2, /1南北 2东西shi1,ge1,shi2,ge2,value1,value2,/南北 绿灯时间 黄灯时间value3,value4,/东西 绿灯时间 黄灯时间count1,count2,flag1,flag2; /南北标记 东西标记void main()TMOD=

6、0x01;TH0=(65536-45872)/256;TL0=(65536-45872)%256;EA=1;ET0=1;TR0=1;/*初状态*/value1=15; /南北 黄绿灯默认值value2=5; value3=10; /东西 黄绿灯默认值value4=5;num1=value1; /南北数码管先绿灯时间num2=value2+value1;/东西红灯时间shi1=num1/10;ge1=num1%10;shi2=num2/10;5ge2=num2%10;P1=0x41;/初始状态:东西红灯 南北绿灯 20 15while(1)if(num=20) /定时器1snum=0;num1-

7、;num2-;traffic();shi1=num1/10;ge1=num1%10;shi2=num2/10;ge2=num2%10;mkeys();display(shi1,ge1,shi2,ge2); void traffic() /红绿灯主控制程序if(num1=0)count1+;if(count1=1)P1=0x42;/东西红灯 南北黄灯 5 5num1=value2;if(count1=2)num1=value3+value4;/东西绿灯 南北红灯 10 15P1=0x14;6if(count1=3)P1=0x41;/ 东西黄灯 南北红灯5 5num1=value4;count1=

8、0;if(num2=0)count2+;if(count2=1) /P1=0x14;/东西绿灯 南北红灯num2=value3;if(count2=2)P1=0x24;/东西黄灯 南北红灯 num2=value4;if(count2=3)num2=value1+value2; /东西红灯 南北绿灯num1=value1;count2=0;void display(uchar shi1,uchar ge1,uchar shi2,uchar ge2) /数码管显示子函数uchar temp;temp=P2;7P2=0xfe;P0=tableshi1;delay(5);P2=0xfd;P0=tabl

9、ege1;delay(5);P2=0xfb;P0=tableshi2;delay(5);P2=0xf7;P0=tablege2;delay(5);void delay(uint x)/延时子函数uint i,j;for(i=x;i0;i-)for(j=110;j0;j-);void mkeys() /4*4矩阵键盘功能子函数uchar temp,key;P3=0xfe;/第一行线temp=P3;temp=tempif(temp!=0xf0)delay(10);temp=P3;8temp=tempif(temp!=0xf0)temp=P3;switch(temp)case 0xee:key=0;

10、break;case 0xde:key=1;break;case 0xbe:key=2;break;case 0x7e:key=3;break;while(temp!=0xf0)temp=P3;temp=tempif(key=0) /按键1:暂停TR0=TR0; /定时器取反flag1=flag1;/南北能够设置标志 0有效flag2=flag2;/东西能够设置标志if(key=1P1=0x44;/禁止东南西北车辆 全为红灯 可以设置shi1=ge1=shi2=ge2=16;if(key=2num=0; /定时器 初始化P1=0x41; /重新开始初状态num1=value1; /南北数码管先

11、绿灯时间num2=value2+value1;/东西红灯时间shi1=num1/10;ge1=num1%10;shi2=num2/10;ge2=num2%10;if(key=3delay(1000);P1=P1;shi1=ge1=shi2=ge2=17;P1=0x44;P3=0xfd;/第二行线temp=P3;temp=tempif(temp!=0xf0)10delay(10);temp=P3;temp=tempif(temp!=0xf0)temp=P3;switch(temp)case 0xed:key=0;break;case 0xdd:key=1;break;case 0xbd:key=

12、2;break;case 0x7d:key=3;break;while(temp!=0xf0)temp=P3;temp=temp if(key=0if(num2!=159) /保证交通合理,红灯最大值计时159s,绿灯不再增加11num1+;value1=num1;shi1=num1/10;ge1=num1%10;num2=value1+value2;/显示东西红灯时间shi2=num2/10;ge2=num2%10;if(key=1if(num2!=159)num1+;value2=num1;shi1=num1/10;ge1=num1%10;num2=value1+value2;/显示东西红

13、灯时间shi2=num2/10;ge2=num2%10; if(key=2num1-;value1=num1;shi1=num1/10;ge1=num1%10;num2=value1+value2;/显示东西红灯时间12shi2=num2/10;ge2=num2%10;if(key=3num1-;value2=num1;shi1=num1/10;ge1=num1%10;num2=value1+value2;/显示东西红灯时间shi2=num2/10;ge2=num2%10;/|P3=0xfb;/第三行线temp=P3;temp=tempif(temp!=0xf0)delay(10);temp=

14、P3;temp=tempif(temp!=0xf0)temp=P3;switch(temp)case 0xeb:13key=0;break;case 0xdb:key=1;break;case 0xbb:key=2;break;case 0x7b:key=3;break;while(temp!=0xf0)temp=P3;temp=tempif(key=0if(num1!=159)num2+;value3=num2;shi2=num2/10;ge2=num2%10;num1=value3+value4;/显示南北红灯时间shi1=num1/10;ge1=num1%10;14if(key=1if(

15、num1!=159)num2+;value4=num2;shi2=num2/10;ge2=num2%10;num1=value3+value4;/显示南北红灯时间shi1=num1/10;ge1=num1%10; if(key=2num2-;value3=num2;shi2=num2/10;ge2=num2%10;num1=value3+value4;/显示南北红灯时间shi1=num1/10;ge1=num1%10;if(key=3num2-;value4=num2;shi2=num2/10;ge2=num2%10;num1=value3+value4;/显示南北红灯时间15shi1=num1/10;ge1=num1%10;P3=0xf7;/第四行线 2未用temp=P3;temp=tempif(temp!=0xf0)delay(10);temp=P3;temp=tempif(temp!=0xf0)temp=P3;switch(temp)case 0xe7:key=0;break;case 0xd7:key=1;break;case 0xb7:key=2;break;case 0x77:key=3;break;16while(temp!=0xf0)temp=P3;temp=tempif(key=0shi1=ge1=shi2=ge2=18;i

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

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