研选课堂
HOME
研选课堂
正文内容
PLC编程转弯 基于单片机的十字路口交通信号灯控制系统设计与调试
发布时间 : 2024-11-24
作者 : 小编
访问数量 : 23
扫码分享至微信

基于单片机的十字路口交通信号灯控制系统设计与调试

第一章 控制要求

1.1 控制要求

(1)系统工作受开关控制,起动开关 ON 则系统工作;起动开关 OFF 则系统停止工作。

(2)控制对象有八个:

东西方向红灯两个 , 南北方向红灯两个,

东西方向黄灯两个 , 南北方向黄灯两个,

东西方向绿灯两个 , 南北方向绿灯两个,

东西方向左转弯绿灯两个,南北方向左转弯绿灯两个。

(3)另外东西方向、南北方向各设置显示两位十进制的7段显示器,用来显示倒数计数值。

1)高峰时段按时序图二(见附图)运行, 正常时段按时序图三(见附图)运行,晚上时段按提示警告方式运行,规律为: 东、南、西、北四个黄灯全部闪亮,其余灯全部熄灭。

高峰时段、正常时段及晚上时段的时序分配按时序图一运行(见附图)。

可以只选择高峰时段或正常时段进行设计,但最后评分值最高以良好评议;如果全部功能实现(需要设计一个24小时的时钟作为时段划分的基础),最高评分值以优秀评议。

时序图

第二章 系统方案设计

2.1交通灯运行状态分析

根据控制要求,系统以下图交通的运行状态来设计系统方案。

状态1南北直行;状态2南北左转; 状态3东西直行;状态4东西左转。

共有四种状态,分别设定为S1、S2、S3、S4,交通灯以这四种状态为一个周期。循环执行如图1.5所示:

图2.1 交通灯状态循环图

2.2系统总体方案设计

图2.2系统总体方案图

本系统采用MCS-51系列单片机AT89C51为中心器件来设计交通灯控制器,实现了正常、高峰、晚间时通过单片机的P1口设置红、绿、黄灯亮灭的功能。东西、南北两位7段显示器用来显示倒数计数值。系统分三种工作时段:正常、高峰、晚间,并且通过时间段来控制"正常"、"高峰"、"晚间"相互转化。

正常时段:南北段直行通行(绿灯)、东西段禁止(红灯)40s,同时南北段和东西段方向的数码管分别从40s和70s开始倒计时,至最后5s时南北段绿灯变成黄灯闪烁;此后南北段左转(左转绿灯亮)通行、东西段禁止(红灯)20s,同时南北段和东西段方向的数码管都从20s开始倒计时,至最后5s时南北段左转灯变成黄灯闪烁;再后东西段直行通行(绿灯)、南北段禁止(红灯)40s,同时东西段和南北段方向的数码管分别从40s和70s开始倒计时,至最后5s时东西段绿灯变成黄灯闪烁;最后东西段左转(左转绿灯亮)通行、南北段禁止(红灯)20s,同时东西段和南北段方向的数码管都从20s开始倒计时,至最后5s时东西段左转灯变成黄灯闪烁。

高峰时段:南北段、东西段的通行时间改为45s,左转的时间改为15s,其它与正常时段相同。

晚间时段:禁止左转和直行,东西南北四个方向黄灯闪亮。

第三章 系统电路设计

3.1控制芯片选择

图3.1 AT89C51引脚图

AT89C51是美国ATMEL公司生产的低电压,高性能CMOS 8位单片机,有40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,3个可编程定时计数器,2个全双工串行通信口,2个读写口线,器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8051产品引脚兼容,片内置通用8位中央处理器(CPU)和Flash存储单元,可以按照常规方法对其进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。

3.2状态灯选择

该系统设计红、绿、黄状态灯显示的功能,用LED灯来代替实际的交通灯,由于有四种不同的运行状态,一个十字路口需要16个LED灯,倒计时数码管显示选用两位带片选的7段数码管,需要4个。数码管显示简单,程序简单,端口用的少。普通单色发光二极管具有体积小、工作电压低、工作电流小、发光均匀稳定、响应速度快、寿命长等优点,可用各种直流、交流、等电源驱动点亮,它属于电流控制型,使用时需串接合适的限流电阻。

3.3系统硬件原理图设计

图3.2系统原理布置图

第四章 系统软件设计

4.1 程序流程图设计

图4.1主程序流程图

系统通电后,初始化定时器,进行24小时定时,在7:00到8:15或16:30到17:00时,按高峰时段运行。在6:30到7:00或8:15到16;30或18:00到19:00时,按正常时段运行。其余时段,按晚间时段运行。

图4.2 时钟及晚间时段程序流程图

本设计利用单片机的定时器T0中断来设置24小时定时,设置TH1=0x3C,TL1=0xB0.即每0.05秒中断一次。到第20次中断即过了20*0.05秒=1秒时,计60S时,满意1分钟,计满60分钟,满1小时,计满24小时,又重新开始计时。用定时器T1中断来设置数码管倒计时,每满1S时,使时间的计数值减1,便实现了倒计时的功能。

图4.3 高峰时段及正常时段流程图

4.2 系统编程

4.2.1定时器的中断设置

在单片机中,中断技术主要用于实时控制。所谓实时控制,就是要求计算机能及时地响应被控对象提出的分析、计算和控制等请求,使被控对象保持在最佳工作状态,以达到预定的控制效果。由于这些控制参量的请求都是随机发出的,而且要求单片机必须做出快速响应并及时处理,对此,只有靠中断技术才能实现。

本系统中的定时时钟及倒计时的设置和相应中断服务子程序如下:

/*24小时时钟 */

void Timer0Cofig(){

TMOD=0x01; //T0定时器工作方式

TH0=0x3C; //设置初始值,定时50MS

TL0=0xB0;

ET0=1; //定时器开中断

TR0=1; //启动定时器0

EA=1; //CPU开中断总允许

}

void T0int() interrupt 1{

TH0=0x3C; //设置初始值

TL0=0xB0;

second_counter++;

if(second_counter>=20){second++;second_counter=0;}

if(second>=60){minute++;second=0;}

if(minute>=60){hour++;minute=0;}

if(hour>=24){hour=0;}

}

/********倒数显示定时器*********/

void Timer1Cofig()

{

TMOD=0x01; //T1定时器工作方式

TH1=0x3C; //定时器初值50ms中断一次

TL1=0xB0;

ET1=1; //定时器开中断

TR1=1; //启动定时器1

EA=1; //CPU开中断总允许

}

/*定时器中断函数*/

void timer1() interrupt 3{

TH1=0x3C; //重新装入初值

TL1=0xB0;

RGY_second++;

if(RGY_second==20){

RGY_second=0;

Time_EW--;//满1秒,数码管值减1

Time_SN--;

}

}

第五章 系统调试与仿真

5.1 proteus仿真结果

根据系统设计要求,进行keil调试和proteus系统仿真,不断调试程序。发光二极管,数码管都能按要求显示,符合要求。proteus总体仿真图如下。

图5.1 仿真结果

工业机器人编程之MOVEJ指令

哈喽,大家上午好呀~

在之前的文章中,相信你已经对ABB机器人的编程有了一定的了解,比如程序的框架、组成等,而今天,正式开始指令的学习吧。

对于大多数的机器人而言,编程指令使用最多的非MOVE指令莫属了,而这篇文章,则带你熟悉并掌握常用的move指令。

Movel(线性运动)

定义: 机器人TCP以线性方式运动至目标点,机器人运动状态可控,运动路径保持唯一。

简单来说,就是机器人将当前TCP沿着直线运动,根据指令要求运动至目标点。

在了解了线性运动的定义后,再来看看MOVEL指令又该如何去使用?

先来看下MOVEL指令的组成:

MoveL<ARG>,v1000,z50,tool0\WObj:=wobj0;

在MOVEL指令中,MOVEL是指令码,<ARG>则表示线性运动的目标点,v1000则是线性运动的速度,z50则是定位类型,tool0\WObj:=wobj0,分别表示工具和工件坐标系。

在了解了MOVEL指令的组成后,再来看看MOVEL具体的使用:

MoveLp10,v1000,z50,tool0\WObj:=wobj0;

其中,P10是线性运动的目标点,其数据类型是robtarget,V1000是速度,其数据类型是speeddata,Z50是定位类型,其中Z50代表转弯半径,另一种常用的定位类型则是fine,那么,这两种定位类型有何区别吗?

Z50: 当指令中使用了Z50的定位类型,则表示在距离下一个目标点前50mm的时候,以目标点为圆心、50mm为半径做圆弧运动,换句话说,当使用了Z50后,TCP是到达不了下一个目标点的固定位置。

FINE:当指令中使用了fine的定位类型,则表示机器人的TCP会移动到目标点的位置,而不会像Z50那样提前以50mm为半径的距离离开目标点。

好,在了解了MOVEL指令后,再看看如何在程序中使用:

PROCrMove()

MoveLp10,v1000,z50,tool0\WObj:=wobj0;

MoveLp20,v1000,z50,tool0\WObj:=wobj0;

MoveLp30,v1000,z50,tool0\WObj:=wobj0;

MoveLp40,v1000,z50,tool0\WObj:=wobj0;

ENDPROC

在上述的程序中,共使用了4条MOVEL指令,则在写好指令后,下一步就是要给每个目标位置示教点位,这个动作,需要在示教器上进行进行。

通过点位的示教后,可以得到每个点位的具体数据:

PERSrobtargetp10:=[[357.76,-152.34,542.35],[0.5,-2.10097E-7,0.866025,-1.2905E-7],[-1,1,-2,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];

PERSrobtargetp20:=[[657.76,-152.34,542.35],[0.5,-2.19218E-8,0.866025,1.92836E-8],[-1,1,-2,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];

PERSrobtargetp30:=[[657.76,147.66,542.35],[0.5,5.35698E-8,0.866026,-7.07729E-8],[0,2,-3,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];

PERSrobtargetp40:=[[357.76,147.66,542.35],[0.5,3.41602E-7,0.866026,1.33267E-7],[0,2,-3,0],[9E+9,9E+9,9E+9,9E+9,9E+9,9E+9]];

在有了具体的点位之后,就可以进行动作验证 了。

好,这就是关于MOVEL指令的简单用法,后续会继续介绍其他MOVE指令的运用~~~

今天《工业机器人的基础编程教程》小智就分享到这,大家可以收藏使用

相关问答

plc如何控制车转弯?

PLC(可编程逻辑控制器)可以用来控制车辆转弯,通过掌握车轮转动的速度和方向,实现车辆转弯的控制。如果需要控制一个轮式车辆(例如小车或机器人)进行转弯,...

如何控制库存提高仓储利用率?

我是古哥计划,头条号作者,职场问答专家,职场领域创作者,专注生产计划15年。更多文章,请点头像关注。如何控制库存提高仓储利用率?这个问题你是站在计划角...有...

谁帮忙回答:黄江如何选择汇川PLC,汇川PLC好不好??

[回答]常平到福永的车,或者樟木头到深圳南头的也可以,到福永汽车站下,转M332到机场下,全程约2小时左右。M332路(燕川公交站-机场东)线路介绍:燕...M332路...

街上的红绿灯谁控制?

其中红绿灯智能引导系统常见解决方案有以下几种:一、单辆车通行控制方式(单车通行,无需刷卡)本方案适用于:通道较短,对进、出车辆的通行效率...

压路机怎么挂挡和倒直?

10、三轮压路机在正常情况下,禁止使用差速锁止装置,特别在转弯时严禁使用。11、上坡时变速应在制动后进行。压路机在坡道上行驶禁止换档,下坡时禁止脱档滑...

强电和弱电有干扰,是什么原理?

强电和弱电从概念上讲,一般是容易区别的,主要区别是用途不同。强电对弱电造成干扰危害表现为:轻者影响质量,电话回路中杂音增大,信息失真和误码率增多等;...问...

输送链板过宽中间会不会下垂

[回答]咨询我们公司的(网带输送机),陶经理是输送食品用的需要的是提升式的传送带。输送机的总宽度是850mm长度是6米长度高度要求是750-800mm之间...输送...

我直行压道路中心线虚线,对方左转发生刮称是我全责吗-找法网

plcqd3分钟前提交了咨询相关知识推荐我是开直行车道,但是在我右边车道也是直行和右转弯,发生交通事我国有关法律规定,发生交通事故后,双方应当报警,将事故现场...

金属网带网孔都有什么规格的

[回答]广州的段经理咨询倾斜式的(链条输送机),中间是链板两边是链条的,段经理对于选择201不锈钢和碳钢的输送带材质不太确定所以咨询我们。输送机的净宽度...

不锈钢通风管道在安装的过程中有什么要求

[回答]保证对于空气的更新的速度...在安装的时候要对于风管的位置,高度,走向都要进行设计好,在风管的直径上面要求能够保证对于空气的更新的速度。不锈...

 全运会 男篮  豆豆假期 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部