PCL实验报告——十字路口交通灯控制

时间:2024.3.23

哈尔滨德强商务学院

课程名称:可编程控制器原理与应用

系    别:  计算机与信息工程系

专    业:       工业工程

班    级:         09-2

学    号:   2009510591(29)

学生姓名:        梅松

20##年6月5日


实验室名称:工业工程专业实验室(504实验机器号:    10   实验分组:   10 

实验时间:          2012.6.5           指导教师签字:          成绩:        

实验项目五:十字路口交通灯控制

一、实验目的和要求

1.实验目的

(1)熟练地掌握PLC的编程和程序调试方法,灵活掌握定时器的使用。

(2)进一步熟悉PLC的I/O连接。

2.实验要求

熟悉十字路口交通灯的控制方式及其编程方法,在十字路口交通灯控制的模拟实验区完成实验。

二、实验原理

1.实验原理

信号灯受一个起动开关控制,当起动开关接通时,信号灯系统开始工作,且先南北红灯亮,东西绿灯亮。当起动开关断开时,所有信号灯都熄灭。

2.程序流程图

三、主要仪器设备

1.计算机(V4.0 STEP 7 MicroWIN SP3软件)1台

2.THFDC-1型可编程控制器·单片机·传感器综合实验装置1套

3.A11实验挂箱1个

4.PC/PPI通讯电缆1根

5.3号导线12根

四、实验内容、步骤及操作方法

1.内容:根据控制要求分配I/O点并编程完成十字路口交通灯控制的模拟实验。

    2.步骤及操作方法

(1)按照控制要求分配I/O点;

(2)按设计好的I/O分配情况把PLC的I/O端子分别接线至对应的按钮、开关或输出指示灯。

(3)编写PLC梯形图或指令表程序使之满足控制要求,编译通过;

(4)把编译好的程序下载到PLC中;

(5)按下实验板上的启动按钮开始工作,顺次模拟动作实验装置,观察输出的逻辑次序是否符合控制要求,若符合,实验结束,若不符合,返回3修改程序继续调试。

3 . I/O端口分配功能表

4.控制接线图

五、实验数据记录和处理

程序注释:

网络 1

// 初始复位

LD     SM0.1

ON     I0.0

MOVB   0, VB0

MOVB   0, QB0

网络 2

// 启动上升沿、循环一个周期结束下降沿,将初始值1写入循环寄存器位

LD     I0.0

EU

LD     V0.5

ED

OLD

MOVB   1, VB0

网络3

// 循环移位

LD     V0.0

A      T37

LD     V0.1

A      T38

OLD

LD     V0.2

A      T39

OLD

LD     V0.3

A      T37

OLD

LD     V0.4

A      T38

OLD

LD     V0.5

A      T39

OLD

EU

SLB    VB0, 1

网络 4

// 各时间段控制

LD     SM0.0

LPS

LD     V0.0

O      V0.3

ALD

TON    T37, 200

LRD

LD     V0.1

O      V0.4

ALD

TON    T38, 30

LPP

LD     V0.2

O      V0.5

ALD

TON    T39, 20

网络 5

// 输出处理

LD     SM0.0

LPS

LD     V0.4

A      SM0.5

O      V0.3

ALD

=      Q0.0

LRD

A      V0.5

=      Q0.1

LRD

LD     V0.0

O      V0.1

O      V0.2

ALD

=      Q0.2

LRD

LD     V0.1

A      SM0.5

O      V0.0

ALD

=      Q0.3

LRD

A      V0.2

=      Q0.4

LPP

LD     V0.3

O      V0.4

O      V0.5

ALD

=      Q0.5

六、实验结果与分析

1.实验结果:完成十字路口交通灯运行控制。

2.实验分析:启动面板,十字路口交通灯亮启,当定时器T37计时20s后十字路口的交通灯将会变换闪烁,闪烁时间由T38确定,计时3s后交通灯将统一变换到黄等待2s,这个时间由T39来控制,等时间一到交通指示等将再次变换到下一个指示灯,这样在继续20s后将又会往复进行交通等上诉的变换。


第二篇:单片机控制十字路口交通灯


设计题目:十字路口交通灯控制2

一、 要求

1、通过LED控制四个路口的红黄绿灯的变化。

2、绿灯表示通行,红灯表示停止,黄灯表示等待。

3、每次绿灯变红灯时黄灯先亮五秒,此时另外干道上的红灯不变。

4、每次变化时绿灯闪烁五次。

二、       分析

课程设计采用实验室的单片机作为主控来实现十字路口交通灯的变化规律,十字路口的红绿灯交替变化,用双色发光二级管来模拟交通灯变化,使用定时器/计数器0作为定时器,从P1和P3口输出。

三、       设计

1、硬件设计(包括设计方案及说明、完整的硬件连接图等)

     (1)因为本实验是交通灯控制实验,所以要先了解交通灯的变化规律。假设一个十字路口为东西和南北方向,初始状态是状态0(各个路口都是红灯);首先是状态1(东路口通车,其他路口红灯);过一段时间装入状态2(东路口绿灯闪几次转黄灯亮,延时几秒,其他路口仍然红灯);再转入状态3(南路口绿灯亮,其他路口红灯亮);过一段时间转入状态4(南路口绿灯闪几次转黄灯亮,延时几秒,其他路口仍然红灯);再转入状态5(西路口绿灯亮,其他路口红灯亮);过一段时间转入状态6(西路口绿灯闪几次转黄灯亮,延时几秒,其他路口仍然红灯);再转入状态7(北路口绿灯亮,其他路口红灯亮);过一段时间转入状态8(北路口绿灯闪几次转黄灯亮,延时几秒,其他路口仍然红灯);最后循环至状态1。

     (2)各用一组红黄绿色LED分别表示东南西北方向。

     (3)由定时器来产生通车延时时间,时间间隔为5s。

     (4)用软件延时方法产生“闪”延时时间。

说明:用CPU的P1口和P3口输出控制信号,控制12个LED灯(红、黄、绿),模拟交通灯的管理。各个输出口对应的IO口如下:

P1.0·····LED00

P1.1·····LED01

P1.2·····LED02

P1.3·····LED03

P1.4·····LED04

P1.5·····LED05

P1.6·····LED06

P1.7·····LED07

P3.2·····LED08

P3.3·····LED09

P3.4·····LED10

P3.5·····LED11

2、软件编程(包括流程图、完整的汇编源程序及其注释)

程序流程图如图1所示:

                        

程序如下:

#include<reg52.h>

sfr light_address_1=0x90;

sfr light_address_2=0xB0;

sbit red_e=P1^0;

sbit yellow_e=P1^1;

sbit green_e=P1^2;

sbit red_s=P1^3;

sbit yellow_s=P1^4;

sbit green_s=P1^5;

sbit red_w=P1^6;

sbit yellow_w=P1^7;

sbit green_w=P3^2;

sbit red_n=P3^3;

sbit yellow_n=P3^4;

sbit green_n=P3^5;

bit light_up=0;

bit light_down=1;

unsigned char light_down_all=0xff;

unsigned char count=0;

void delay_MS(unsigned char data0);

void Init_timer0(void);

void light_state1();

void light_state2();

void light_state3();

void light_state4();

void light_state5();

void light_state6();

void light_state7();

void light_state8();

void main()

{

    Init_timer0();

    while(1)

       {light_address_1=light_down_all;

       light_address_2=light_down_all;

       light_state1();

       light_address_1=light_down_all;

       light_address_2=light_down_all;

       light_state2();

       light_address_1=light_down_all;

       light_address_2=light_down_all;

       light_state3();

       light_address_1=light_down_all;

       light_address_2=light_down_all;

       light_state4();

       light_address_1=light_down_all;

       light_address_2=light_down_all;

       light_state5();

       light_address_1=light_down_all;

       light_address_2=light_down_all;

       light_state6();

       light_address_1=light_down_all;

       light_address_2=light_down_all;

       light_state7();

       light_address_1=light_down_all;

       light_address_2=light_down_all;

       light_state8();

       }

}

void light_state1()                                            //东路口绿灯亮,其他路口红灯亮

{   red_s=light_up;

    red_w=light_up;

    red_n=light_up;

    green_e=light_up;

    count=0;

    while(count<100)

    { }

}

void light_state2()                                           //东路口绿灯闪几次转黄灯亮,延时几秒,其他路口红灯任然亮

{

    unsigned char j;

    red_s=light_up;

    red_w=light_up;

    red_n=light_up;

    for(j=0;j<5;j++)

       {

           green_e=light_up;

           delay_MS(500);

           green_e=light_down;

           delay_MS(500);

       }

    yellow_e=light_up;

    count=0;

    while(count<20)

    { }

}

void light_state3()                                           //南路口绿灯亮,其他路口红灯亮

{

    green_s=light_up;

    red_e=light_up;

    red_w=light_up;

    red_n=light_up;

    count=0;

    while(count<100)

    { }

}

void light_state4()                                             //南路口绿灯闪几次转黄灯亮,延时几秒,其他路口红灯亮

{

    unsigned char j;

    red_e=light_up;

    red_w=light_up;

    red_n=light_up;

    for(j=0;j<5;j++)

       {

           green_s=light_up;

           delay_MS(500);

           green_s=light_down;

           delay_MS(500);

       }

    yellow_s=light_up;

    count=0;

    while(count<20)

    { }

}

void light_state5()                                             //西路口绿灯亮,其他路口红灯亮

{  

    red_e=light_up;

    red_s=light_up;

    red_n=light_up;

    green_w=light_up;

    count=0;

    while(count<100)

    { }

}

void light_state6()                                              //西路口绿灯闪几次转黄灯亮,其他路口红灯

{

    unsigned char j;

    red_e=light_up;

    red_s=light_up;

    red_n=light_up;

    for(j=0;j<5;j++)

       {

           green_w=light_up;

           delay_MS(500);

           green_w=light_down;

           delay_MS(500);

       }

    yellow_w=light_up;

    count=0;

    while(count<20)

    { }

}

void light_state7()                             //北路口绿灯亮,其他路口红灯亮

{

    red_e=light_up;

    red_s=light_up;

    red_w=light_up;

    green_n=light_up;

    count=0;

    while(count<100)

    { }

}

void light_state8()                             //北路口绿灯闪几次转黄灯亮,其他路口红灯亮

{

    unsigned char j;

    red_e=light_up;

    red_s=light_up;

    red_w=light_up;

    for(j=0;j<5;j++)

       {

           green_n=light_up;

           delay_MS(500);

           green_n=light_down;

           delay_MS(500);

       }

    yellow_n=light_up;

    count=0;

    while(count<20)

    { }

}

void delay_MS(unsigned char data0)

{

    unsigned char i,j;

    for(i=0;i<data0;i++)

       for(j=0;j<120;j++);

}

void Init_timer0(void)

{

    TMOD=0x01;

    TH0=0x3c;

    TL0=0xb0;

    EA=1;

    ET0=1;

    TR0=1;

}

void Timer0_int() interrupt 1

{

    count++;

    TH0=0x3c;

    TL0=0xb0;

}

3、调试说明

在实验室将程序输入电脑进行编译,连接好试验箱上的P1口和P3口与各个LED灯的连线后,将程序通过STC下载软件下载到单片机中,然后上电运行,观察各个LED灯的变化,通过调试,能够达到实验要求,各个LED灯交替闪烁变化,实现交通灯的控制。

下图是用keil软件编译的情况:

下图是STC下载软件:

4、设计结果及错误分析

在软硬件都调试完毕之后,在把所烧写的程序烧入单片机之后,我们开始进行性能的测试,在按下电源按钮后,能够进入交通灯模拟状态,该设计呢鞥够改变红绿灯亮的时间,使交通运行时间更具优化,也更具人性化,在保证交通畅通的情况下减少等待时间。

 写好程序后进行了程序的调试和分析,经过调试,只是少了路口左转的功能,具有直行和左转一体的功能,也有黄灯闪烁等待的过程。通过多次的调试分析和论证,最终将程序完整化,完善化。

四、   总结

本系统的硬件控制电路图简单,用汇编语言编程时,位操作指令用的较多,但遇到了很多困难,最后还是采用C语言编写。本软、硬件系统在单片机开发装置上调试运行取得较好的效果,对灵活有效地利用交通灯控制行车安全,车辆分流有一定的实际意义。

从本交通信号灯自动控制系统的设计与实验中可以看出,涉及到数据输出程序的设计方法;模拟交通灯控制的方法;信号灯的使用.在此基础上我们可对其进行改进,加入中断的要求,从而涉及外部中断技术的基本使用方法和编程方法.8051内部定时/计数器的使用和编程方法;而且还可以在外部中断中增加用继电器的开合模拟急救车通过的声音等要求.

在整个设计与制作过程中,从一开始拿到题目,经过查阅有关方面的书籍,到分析与设计,以P1和P3口作为输出来控制LED灯的亮灭和闪烁,用C语言和Keil软件来编写程序,来实现对硬件电路的控制。对于程序的调试,通过多次调试,得到完整正确的程序。继而,将程序烧录到单片机芯片中,LED显示正常达到本次设计的目的。完成了适当的硬件电路的设计和软件的编程与调试、控制。

更多相关推荐:
单片机交通灯实验报告

交通灯控制系统设计院系:电子电气工程学院专业:电气自动化班级:P10电气四班成员:*************交通灯控制系统设计实验一.设计目的1.通过本次课程设计进一步熟悉和掌握单片机的结构及工作原理,巩固和加…

PLC实验报告——交通灯控制

院别:控制工程学院课程名称:欧姆龙CP1HPLC应用基础与编程实践实验名称:交通灯实验评分:

交通灯控制电路实验设计报告

单片机原理及应用课程设计报告书题目姓学号093621001093621018093621058专业电子信息科学与技术设计时间20xx年12月目录1引言211设计意义212系统功能要求213本组成员所做的工作32...

交通灯控制设计实验报告

安徽科技学院数字电子技术课程设计设计报告设计题目交通灯控制设计班级网络工程121姓名丁俊杰学号成绩评阅人吕跃凤安徽科技学院理学院目录安徽科技学院数字电子技术课程设计报告一设计要求一设计指标二设计要求三制作要求四...

EDA实验报告实验四:交通灯控制器设计

实验四交通灯控制器设计一实验目的1学习与日常生活相关且较复杂数字系统设计2进一步熟悉EDA实验装置和Quartus软件的使用方法3学习二进制码到BCD码的转换4学习有限状态机的设计应用二设计要求完成设计仿真调试...

交通灯控制器课程设计实验报告

中南林业科技大学课程设计交通灯控制器20xx级课程设计实验报告交通灯控制器专业年级20xx级通信工程一班姓名谢仙学号20xx4505指导教师杨菊秋院系计算机与信息工程学院20xx年06月25日1中南林业科技大学...

课程设计实验报告-交通灯控制功能设计

微机原理与接口技术课程设计实验报告题目交通灯控制功能设计指导老师专业信息科学与工程学院班级自动化0807班日期20xx15微机课程设计交通灯控制系统目录一设计思想和实施方案论述硬件原理图及分析11课程设计名称1...

PLC控制交通灯实验报告

广东技术师范学院实验报告学院姓名实验地点实验1项目名称PLC控制交通灯1实验项目名称PLC控制交通灯2实验目的和要求1熟悉各种基本指令的应用及交通灯的控制方式2通过动手接线提高实际动手能力以及加强对PLC基本结...

微机原理与接口技术课程设计实验报告6-交通灯控制系统1

微机原理课程设计报告书课题名班级学号姓名指导教师日期目录1设计目的22设计内容23设计要求24设计原理与硬件电路35程序流程图56程序代码57程序及硬件系统调试情况98设计总结与体会109参考文献101设计目的...

交通灯PLC控制实验报告

交通灯的PLC控制实验报告学院自动化学院班级0811103姓名张乃心学号20xx213307实验目的1熟悉PLC编程软件的使用和程序的调试方法2加深对PLC循环顺序扫描的工作过程的理解3掌握PLC的硬件接线方法...

单片机交通灯实验报告

一实验目的通过仿真和实物搭建相结合完成交叉口交通灯的设计并掌握C51编程的操作二实验内容及要求模拟控制就是以红绿黄色4组6个发光二极管表示交通信号灯每组有两位数码倒计时显示1正常情况下AB道轮流放行A道放行15...

单片机实验5 带急救车的交通灯控制实验

华南农业大学实验报告专业班次08电信1组别20xx31120xx2题目实验五带急救车交通灯控制实验姓名陈建泽日期20xx113一实验目的1学习外部中断技术的基本使用方法2学习中断处理程序的编程方法二实验设备ST...

交通灯控制实验报告(25篇)