- 1、本文档共18页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
单片机交通灯控制课程设计
姓名:
院系:物理与电气工程学院
专业:电气工程及其自动化
班级:
学号:
指导教师:孙志富
2014年3月15日
基本要求
利用单片机的定时器产生秒信号,控制十字路口的红、绿、黄灯交替点亮和熄灭,并且用4只LED数码管显示十字路口两个方向的剩余时间。要求能用按键设置两个方向的通行时间(绿、红等点亮的时间)和暂缓通行时间(黄灯点亮的时间)。系统的工作应符合一般交通灯控制的要求。
设计简介
交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
本设计系统由单片机I/O口系统、交通灯状态显示系统、复位电路等几大部分组成。系统具有基本的交通灯功能,较好的模拟实现了十字路口可能出现的状况。
本设计系统利用单片机的工作原理设计一个十字路口交通信号灯,要求东、西、南、北四个方向各有红黄绿色三个灯,当东西方向亮绿灯时,南北方向红灯亮起;反之,如果南北方向亮绿灯,同时东西方向亮绿灯;绿灯亮时车辆行驶,红灯亮时车辆停止。即在同一时间内保证只有两个对应方向的车辆可以行驶。
本设计系统软件上采用Keil uVision3、Proteus。使用C51编程,主要编写了主程序、中断子程序、延时子程序、数码管显示子程序、交通控制子程序、矩阵键盘子程序。
本设计系统经过整机调试,实现了对十字路口交通灯运作与设置的模拟。
系统简要分析
本设计系统单片机89C51为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强、成本较低。本设计就是采用单片机模拟十字路口交通灯的各种状态显示。利用单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支干道汇合成3 十字路口,在每个入口处设置红、绿、黄三色信号灯,数码管显示剩余时间。红灯亮禁止通行,绿灯亮允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。用红、绿、黄发光二极管作信号灯,8 管共阴极数码管显示剩余时间,矩阵键盘用来设置交通灯的显示时间和状态。
硬件原理图
源程序
#includereg51.H
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={ //共阴极数码管码表
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,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=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;
ge2=num2%10;
P1=0x41;//初始状态:东西红灯 南北绿灯 20 15
while(1){
if(num==20) //定时器1s
{
num=0;
num1--;
num2--;
traffic();
shi1=num1/10;
ge1=num1%10;
shi2=num2/10;
文档评论(0)