单片机AT89C52十字路口交通灯控制C语言程序

时间:2019-05-12 16:26:37下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《单片机AT89C52十字路口交通灯控制C语言程序》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《单片机AT89C52十字路口交通灯控制C语言程序》。

第一篇:单片机AT89C52十字路口交通灯控制C语言程序

单片机AT89C52十字路口交通灯控制程序

东西方向60秒,南北方向57秒

#include #define uchar unsigned char #define uint unsigned int

#define ON 0 #define OFF 1 sbit NS_G=P2^5;//南北绿灯

sbit NS_Y=P2^4;//南北黄灯 sbit NS_R=P2^3;//南北红灯

sbit EW_G=P2^2;//东西绿灯 sbit EW_Y=P2^1;//东西黄灯 sbit EW_R=P2^0;//东西红灯

sbit LED_D1=P3^7;//南北方向数码管位控制 sbit LED_C1=P3^6;//南北方向数码管位控制 sbit LED_B1=P3^1;//东西方向数码管为控制 sbit LED_A1=P3^0;//东方向数码管位控制

/*********倒计时赋初值*************/ uchar EWF=20,NSF=17,X=20,Y=17,Z=20,SHU=20;uchar count;

void Init(void){ TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;} /*******************中断服务程序**************************/ void timer1(void)interrupt 1 {

TMOD=0x01;TH0=(65536-50000)/256;TL0=(65536-50000)%256;EA=1;ET0=1;TR0=1;

count++;if(count>19){

EWF--;

NSF--;

X--;

Y--;

Z--;

SHU--;

count=0;

}

} /******************延时**********************/

void Delay10uS(uchar z){ uchar x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);}

/******************led控制*******************/ unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴极数码管赋值

void display1(uchar num1,uchar num2)

//控制东西方向led显示 {

P0=table[num1];

LED_A1=ON;

Delay10uS(1);

LED_A1=OFF;

P0=table[num2];

LED_B1=ON;

Delay10uS(1);

LED_B1=OFF;

} void display2(uchar num3,uchar num4)//控制南北方向led显示 {

P0=table[num3];

LED_C1=ON;

Delay10uS(1);

LED_C1=OFF;

P0=table[num4];

LED_D1=ON;

Delay10uS(1);

LED_D1=OFF;

} void main(){ int i;/************初始状态东西南北禁止通行************/

NS_R=ON;//南北方向红灯打开

EW_R=ON;

//东西方向红灯打开

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

{

Delay10uS(20);

} NS_R=OFF;//南北方向红灯关闭

EW_R=OFF;//东西方向红灯关闭

while(1)

{

Init();

// 初始化计时器

/****************状态1:东西绿灯(57s),南北红灯(60s)**************/ /***************状态2:东西黄灯(3s),南北红灯(60s)****************/

EW_G=ON;//东西方向的绿灯打开

NS_R=ON;//南北方向的红灯打开

while(EWF!=0)

{

display1(EWF/10,EWF%10);// 东西方向红灯(60s)

display2(NSF/10,NSF%10);// 南北方向绿灯(57s)

while(EWF==3)

{

while(X!=0)

{

display1(EWF/10,EWF%10);// 东西方向红灯(3s)

display2(X/10,X%10);// 南北方向黄灯(3s)

EW_G=OFF;// 东西方向的绿灯关闭

EW_Y=ON;// 东西方向的黄灯打开

}

}

}

NS_R=OFF;// 南北方向的红灯关闭

EW_G=OFF;// 东西方向的绿灯关闭

EW_Y=OFF;// 东西方向的黄灯打?

/*=*************状态3:东西红灯(60s),南北绿灯(57s)************/ /****************状态4:东西红灯(60s),南北黄灯(3s)***************/

EW_R=ON;// 东西方向的红灯打开

NS_G=ON;// 南北方向的绿灯打开

while(Z!=0)

{

display2(Z/10,Z%10);// 南北方向红灯(57s)

display1(Y/10,Y%10);// 东西方向绿灯(57s)

while(Z==3)

{

while(SHU!=0)

{

display2(Z/10,Z%10);// 东西红灯(3s)

display1(SHU/10,SHU%10);// 南北绿灯(3s)

NS_G=OFF;//南北方向的绿灯关闭

NS_Y=ON;// 南北方向的黄灯打开

}

}

}

} EW_R=OFF;// 东西方向的红灯关闭

NS_G=OFF;// 南北方向的绿灯关闭

NS_Y=OFF;// 南北方向的黄灯关闭

EWF=60,NSF=57,X=60,Y=57,Z=60,SHU=60;//重新赋值

}

第二篇:51单片机控制交通灯原理图及C语言程序

Proteus仿真原理图:

Keil C源程序:

#include #define uchar unsigned char #define uint

unsigned

int sbit

RED_DONGXI

= P1^0;//南北方向红灯亮 sbit

YELLOW_DONGXI = P1^1;//南北方向黄灯亮 sbit

RED_NANBEI

= P1^3;//东西方向红灯亮 sbit

GREEN_DONGXI = P1^2;//南北方向绿灯亮 sbit

YELLOW_NANBEI = P1^4;//东西方向黄灯亮 sbit

GREEN_NANBEI = P1^5;//东西方向绿灯亮

sbit

DXweixuan1

= P1^6;//南北方向数码管位选1 sbit

DXweixuan2

= P1^7;//南北方向数码管位选2 sbit

NBweixuan1

= P3^0;//东西方向数码管位选1 sbit

NBweixuan2

= P3^1;//东西方向数码管位选2 sbit

L1=P3^5;sbit

L2=P3^6;sbit

L3=P3^7;uint aa, bai,shi,ge,bb;uint shi1,ge1,shi2,ge2;uint code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};uint code table1[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};void delay(uint z);void init(uint a);void display(uint shi1,uint ge1,uint shi2,uint ge2);void xtimer0();void init1();void init2();void init3();void init4();void init5();void xint1();void xint0();void LED_ON();void LED_OFF();

void main(){ P0=0xFF;P1=0xFF;P2=0x00;

P3=0xFF;EA=1;EX0=1;IT0=0;

init1();while(1)

{

init2();//第2个状态

init3();//第3个状态

init4();//第4个状态

init5();//第5个状态

} } void init1()//第一个状态:东西、南北方向均亮红灯5S { uint temp;temp=5;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){

RED_DONGXI=0;

//第一个状态东西、南北均亮红灯5S

RED_NANBEI=0;

GREEN_DONGXI=1;

GREEN_NANBEI=1;

YELLOW_DONGXI=1;

YELLOW_NANBEI=1;

if(aa==20)//定时20*50MS=1S

{

aa=0;

temp--;

}

shi1=shi2=temp/10;

ge1=ge2=temp%10;

if(temp==0)

{

temp=5;

break;

}

display(ge1,shi1,ge2,shi2);} } void init2()//第二个状态:东西亮红灯30S~5S、南北亮绿灯25~0S;{ uint temp;temp=26;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){

RED_DONGXI=1;

RED_NANBEI=0;

GREEN_DONGXI=0;

GREEN_NANBEI=1;

YELLOW_DONGXI=1;//第二个状态:东西亮绿灯25S、南北亮红灯

YELLOW_NANBEI=1;

if(aa==20)//定时20*50MS=1S

{

aa=0;

temp--;

shi1=(temp+5)/10;

}

}

} ge1=(temp+5)%10;shi2=temp/10;ge2=temp%10;if(temp==0){ temp=26;break;} display(ge1,shi1,ge2,shi2);void init3()//第三个状态:东西绿灯变为黄灯闪5次、南北亮红灯5S { uint temp;temp=6;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){

RED_NANBEI=0;

GREEN_DONGXI=1;

if(aa==20)//定时20*50MS=1S

{

aa=0;

temp--;

YELLOW_DONGXI=~YELLOW_DONGXI;

shi1=temp/10;

shi2=shi1;

ge1=temp%10;

ge2=ge1;

}

if(temp==0)

{

temp=6;

break;

}

display(ge1,shi1,ge2,shi2);} } void init4()//第四个状态:东西亮绿灯25~0S,南北方向亮红灯30~5S; { uint temp;temp=26;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){

RED_DONGXI=0;

RED_NANBEI=1;

YELLOW_DONGXI=1;//第一个状态东西、南北均亮红灯5S

GREEN_NANBEI=0;

if(aa==20)

{

aa=0;

temp--;

shi1=temp/10;

shi2=(temp+5)/10;

ge1=temp%10;

ge2=(temp+5)%10;

if(temp==0)

{

temp=26;

break;

}

}

display(ge1,shi1,ge2,shi2);} } void init5()//第五个状态:东西亮红灯、南北绿灯闪5次转亮黄灯5S { uint temp;temp=6;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){

RED_NANBEI=1;

RED_DONGXI=0;

GREEN_DONGXI=1;

GREEN_NANBEI=1;

if(aa==20)

{

aa=0;

temp--;

YELLOW_NANBEI=~YELLOW_NANBEI;

shi1=temp/10;

shi2=shi2;

ge1=temp%10;

ge2=ge1;

if(temp==0)

{

temp=6;

break;

}

}

display(ge1,shi1,ge2,shi2);} }

void display(uint shi1,uint ge1,uint shi2,uint ge2){ DXweixuan1=0;DXweixuan2=1;NBweixuan1=1;NBweixuan2=1;P0=table[ge1];delay(5);DXweixuan1=1;DXweixuan2=0;NBweixuan1=1;NBweixuan2=1;P0=table[shi1];delay(5);DXweixuan1=1;DXweixuan2=1;NBweixuan1=0;NBweixuan2=1;P0=table[ge2];delay(5);DXweixuan1=1;DXweixuan2=1;NBweixuan1=1;NBweixuan2=0;P0=table[shi2];delay(5);} void xint0()interrupt 0 { RED_NANBEI=0;RED_DONGXI=0;GREEN_NANBEI=1;GREEN_DONGXI=1;

YELLOW_NANBEI=1;YELLOW_DONGXI=1;P0=0x00;NBweixuan1=0;NBweixuan2=0;DXweixuan1=0;DXweixuan2=0;delay(2);return;} void xint1()interrupt 2 { RED_NANBEI=1;RED_DONGXI=1;GREEN_NANBEI=0;GREEN_DONGXI=0;

YELLOW_NANBEI=1;YELLOW_DONGXI=1;P0=0x00;NBweixuan1=0;NBweixuan2=0;DXweixuan1=0;DXweixuan2=0;delay(2);return;} void xtimer0()interrupt 1 { TH0=(65535-50000)/256;TL0=(65535-50000)%256;aa++;} void delay(uint z){uint x,y;for(x=0;x

for(y=0;y<110;y++);}

第三篇:十字路口交通灯控制设计

网络教育学院

《可编程控制器》大作业

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

学习中心: 辽宁彰武电大学习中心 层 次: 高中起点专科 专 业: 电力系统自动化技术

年 级: 2015 年 秋 季 学 号: ***6 学生姓名: 陈 润 泽

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

起动后,南北红灯亮并维持30s。在南北红灯亮的同时,东西绿灯也亮,东西绿灯亮25s后闪亮,3s后熄灭,东西黄灯亮,黄灯亮2s后,东西红灯亮,与此同时,南北红灯灭,南北绿灯亮。南北绿灯亮25s后闪亮,3s后熄灭,南北黄灯亮,黄灯亮2s后,南北红灯亮,东西红灯灭,东西绿灯亮。依次循环。

十字路口交通灯控制示意图及时序图如下图所示。

设计要求:(1)首先对可编程序控制器(PLC)的产生与发展、主要性

能指标、分类、特点、功能与应用领域等进行简要介绍;

(2)设计选用西门子S7-200 系列PLC,对其I/O口进行分配,并使用STEP7-MicroWIN编程软件设计程序梯形图(梯形图截图后放到作业中);

(3)总结:需要说明的问题以及设计的心得体会。

设计背景 1.1 背景概述

本文对十字路口交通信号灯控制系统,运用可编程逻辑器件PLC做了软件与硬件的设计,能基本达到控制要求。系统仅实现了小型PLC系统的一个雏形,在完善各项功能方面都还需要进一步的分析、研究和调试工作。如果进一步结合工业控制的要求,形成一个较为成型的产品,则需要作更多、更深入的研究。

1.2 可编程逻辑控制器简介

可编程逻辑控制器(Programmable Logic Controller,简称 PLC)根据国际电工委员会(IEC)在1987年的可编程控制器国际标准第三稿中,对其作了如下定义:“可编程控制器是一种数字运算操作的电子系统,专为在工业环境应用而设计的。它采用可编程序的存储器,用来在其内部存储执行逻辑运算,顺序控制,定时,计数与算术运算等操作的指令,并通过数字式、模拟式的输入和输出,控制各种类型的机械或生产过程。可编程控制器及其有关外部设备,都应按易于使工业控制系统形成一个整体,易于扩充其功能的原则设计。”可编程控制器作为目前工业自动化的重要基础设备,被称为“工业自动化三大支柱性产业之一”,在各工业生产领域发挥着愈来愈大的作用。十字路口交通信号灯PLC控制系统简介 2.1 控制对象及要求 2.1.1 控制对象

本系统的控制对象有八个,分别是: 东西方向红灯(R—EW)两个; 南北方向红灯(R—SN)两个; 东西方向黄灯(Y—EW)两个; 南北方向黄灯(Y—SN)两个; 东西方向绿灯(G—EW)两个; 南北方向绿灯(G—SN)两个; 东西方向左转弯绿灯(L—EW)两个; 南北方向左转弯绿灯(L—SN)两个。2.1.2 控制要求

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

2、交通信号灯按高峰时段、正常时段及晚上时段进行控制,这三个时段的的时序分配如图1所示;

3、在高峰时段,交通信号灯按图2所示时序控制;

4、在正常时段,交通信号灯按图3 所示时序控制;

5、晚上时段按提示警告方式运行,规律为: 东、南、西、北四个黄灯全部闪亮,其余灯全部熄灭,黄灯闪亮按亮 0.4 秒,暗 0.6 秒的规律反复循环。

2.2 系统简介

本系统是一个十字路口交通灯的PLC控制系统,利用西门子公司的S7-200可编程逻辑控制器对十字路口的交通灯进行控制。本系统具有一定的智能性,即它可以对交通灯按高峰期、正常期及晚间几个时段进行分段控制。高峰期的控制方案为:

(1)南北方向左转弯灯和南北南北方向红灯同时亮10秒,同时东西方向红灯亮;

(2)南北方向绿灯亮35秒,东西方向红灯继续亮;(3)南北方向黄灯闪烁5秒;东西方向红灯继续亮;

(4)东西方向左转弯绿灯和南北方向红灯同时亮10秒,东西方向红灯继续亮;(5)东西方向绿灯亮25秒,南北方向红灯继续亮;

(6)东西方向黄灯闪烁5秒,南北方向红灯继续亮,然后跳至第(1)步依次循环。

正常期的控制方案为:

(1)南北方向左转弯灯和南北南北方向红灯同时亮10秒,同时东西方向红灯亮;(2)南北方向绿灯亮30秒,东西方向红灯继续亮;(3)南北方向黄灯闪烁5秒;东西方向红灯继续亮;

(4)东西方向左转弯绿灯和南北方向红灯同时亮10秒,东西方向红灯继续亮;(5)东西方向绿灯亮30秒,南北方向红灯继续亮;

(6)东西方向黄灯闪烁5秒,南北方向红灯继续亮,然后跳至第(1)步依次循环。

晚间的控制方案为:

东、南、西、北四个黄灯全部闪亮,其余灯全部熄灭,黄灯闪亮按亮 0.4 秒,暗 0.6 秒的规律反复循环。

2.3 硬件选型

城市道路交通信号控制是典型的开关量顺序控制,采用PLC能充分利用它的优点。在这里我们采用德国西门子公司的S7-200可编程控制器,它是积木式结构,安装比较方便,中央处理单元和信号模板有多种类型,另外还具有如位控单元、PD调节等特殊功能模块。根据本系统输入点数及控制要求,中央处理单元可选用CPU224,该CPU板上本身具有10个数字量输入点,6个非隔离数字量输出点,最多能够带8个数字量信号模板。

电源模块将交流电源转换成供CPU,存储器等所有扩展模块使用的直流电源,是整个PLC系统的能源供给中心,它的好坏直接影响到PLC的稳定性和可靠。S7-200属于小型PLC,电源模块与CPU模块封装在一起,通过连接总线为本机和扩展模块提供+5V(DC)电源。同时,还可通过端子向外输出一个+24V(DC)电源,供本机输入点和扩展模块继电器线圈使用。需注意的是,从资料中我们了解到,外部电源不可与S7-200的传感器电源并联使用。否则,交会导致两个电源的竟争而影响它们各自的输出,缩短其使用寿命,使得一个或两个电源同时失效,使PLC系统产生不正确的操作。正确的使用方法是S7-200的传感器电源和外部电源应该在不同的点上提供电源,而两者之间只能有一个会共连接点。

由于根据控制要求所确定的输入输出点分别人二个和九个,由于我们是以一个路口信号单独控制为例,考虑到够用为准。所以我们选择了CPU224这一具有较强控制功能的控制器。

另外,在硬件选型时,不要忘记完成现场测试及软件编程时所需的一些设备。综上,得到系统硬件配置如表1所示:

表1 硬件配置表 名 称 数 量 DC24V电源 1 CPU224 1 PC/PPI编程电缆 STEP7编程软件 1 PC机 1 3 系统I/O分配

分析PLC的输入和输出信号,在满足控制要求的前提下,要尽量减少占用PLC的I/O点。由系统控制要求可见,由控制开关输入的启、停信号是输入信号。由PLC的输出信号控制各指示灯的亮、灭。在交通灯布置图中,南北方向的三色灯共六盏,同颜色的灯在同一时间亮、灭;所以,可将同色灯两两并联,用一个输出信号控制。同理,东西方向的三色灯也依次设计。再加上东西方向左转的三色灯共九盏,所以其占9个输出点。由此可得系统I/O分配如表2所示:

表2 系统I/O分配表

输入/输出 设备/器件名称 I/O地址 输入 校正当前时钟 I0.0

符号名 数据类型 1

SB0 BOOL 程序启停按钮 I0.1 SB1 BOOL

Q1 DINT 输出

东西方向绿灯 Q0.0 东西方向黄灯 Q0.1 东西方向红灯 Q0.2 南北方向绿灯 Q0.3

Q2 DINT Q3 DINT Q4 INT

南北方向黄灯 Q0.4 南北方向红灯 Q0.5

Q5 INT Q6 INT

Q7 INT Q8 INT 东西方向左转弯灯 Q0.6 南北方向左转弯灯 Q0.7 4 软件设计

本控制系统的控制原理是:用一路数字量的不同输入状态来判定是否对时钟进行初始化,用一路数字量的不同输入状态分别用作程序的启动和停止控制,每一方向有红、黄、绿及转弯四种信号灯,分别对应四位数字量输出,两个方向共有8位数定量输出;在某一方向用两个延时脉冲定时器分别控制该方向黄灯闪烁的亮、灭时间,根据道路人车流量多少,分别设置各信号灯亮灭时间的长短,通过6个定时器依次交替工作,就可实现各方向交通信号灯的顺序工作。本文所设计的软件由一个主程序和四个子程序(时钟初始化子程序,晚间时段交通灯控制子程序,正常时段交通灯控制子程序和高峰时段交通灯控制子程序)组成。主程序主要任务包括:读取两个开关状态,根据开关的不同状态做出相应的处理,当开关SB0闭合时则对时钟进行初始化,反之则不对时钟进行初始化;当开关SB1闭合时,则读取时钟值,并做处理,根据处理后的时钟值的大小判定当前时间是属于哪个时间段,并调用相应的交通灯控制子程序,反之,则停止程序的运行主程序流程图如图5所示。晚间时段的控制规律为:两个方向的四个黄灯均按亮0.4秒灭0.6秒的规律闪烁,其余的交通灯全灭程序中将用到两个定时器T37和T38,各定时器的功能如表3所示。正常时段的控制方案结构图如图6所示,程序中将用到8个定时T37-T44,各定时器的功能如表4所示。高峰时段的控制方案结构图如图7所示,程序中将用到8个定时T37-T44,各定时器的功能如表5所示。

该程序实现了信号由东西左转、东西直行、南北直行依次循环变化。其优势思路简单,容易理解,对时钟的校正以及各时段的起始时间和终止时间的修改方便。如路口要求在晚上10:00以后实行各方向黄色信号灯闪烁功能,只需要将实时采集PLC的时钟信号作为一个子程序的跳转条件,再增加一段闪光程序即可。如果需要将几个路口集中到一台PLC控制,根据实际需要的I/O点数,硬件上再增加相应的数字量输出模板即可。需要指出的是,用PLC实现城市道路关通信号控制,最好几个路口共用一套PLC,这样可以大大降低工程成本。

表3 晚间时段各定时器一个循环中的功能明细表 定时器 t0 t1 T2 T37 定时0.4秒 开始定时,黄灯亮 定时到,输出ON且保持;黄灯灭 开始下一次循环的定时 T38 定时1秒 开始定时 继续定时 定时到,输出ON,随即复位开始下一次循环的定时,黄灯亮。

表4 正常时段各定时器一个循环中的功能明细表 定时器 t0 t1 t2 t3 t4 t5 t6 T37 定时10秒 开始定时,南北转弯灯、南北红灯、东西红灯亮。定时到,输出ON且保持;南北转弯灯灭,南北绿灯亮,东西红灯继续亮。开始下一个循环定时

ON ON ON ONT38 定时40秒 开始定时 继续定时 定时到,输出ON且保持;南北绿灯灭,南北黄灯闪烁,东西红灯继续亮。T39 定时45秒 开始定时 继续定时 继续定时 定时到,输出ON且保持;南北黄灯灭,东西转弯灯、南北红灯亮,东西红灯继续亮。ON ON 开始下一个循

ON ON ON 开始下一个循环定时 环定时 T40 定时55秒 开始定时 继续定时 继续定时 继续定时 定时到,输出ON且保持;东西转弯、东西红灯灭,东西绿灯亮,南北红灯继续亮。一个循环定时 T41 定时85秒 开始定时 继续定时 继续定时 继续定时 继续定时 定

ON 开始下到,输出ON且保持;东西绿灯灭,东西黄灯闪烁,南北红灯继续亮。开始下一个循环定时 T42 定时90秒 开始定时 继续定时 继续定时 继续定时 继续定时 继续定时 定时到,输出ON,随即复位开始下一次循环定时;东西黄灯、南北红灯灭,南北转弯灯、南北红灯、东西红灯亮。

表5 高峰时段各定时器一个循环中的功能明细表 定时器 t0 t1 t2 t3 t4 t5 t6 T37 定时10秒 开始定时,南北转弯灯、南北红灯、东西红灯亮。定时到,输出ON且保持;南北转弯灯灭,南北绿灯亮,东西红灯继续亮。开始下一个循环定时

ON ON ON ONT38 定时45秒 开始定时 继续定时 定时到,输出ON且保持;南北绿灯灭,南北黄灯闪烁,东西红灯继续亮。T39 定时50秒 开始定时 继续定时 继续定时 定时到,输出ON且保持;南北

ON ON ON 开始下一个循环定时 黄灯灭,东西转弯灯、南北红灯亮,东西红灯继续亮。ON ON 开始下一个循环定时 T40 定时60秒 开始定时 继续定时 继续定时 继续定时 定时到,输出ON且保T41 定时85秒 开始定时 继续定时 继续定时 继续定时 继续定时 定

时到,输出ON且保持;东西绿灯灭,东西黄灯闪烁,南北红灯继续亮。开始下一个循环定时 T42 定时90秒 开始定时 继续定时 继续定时 继续定时 继续定时 继续定时 定时到,输出ON,随即复位开始下一次循环定时;东西黄灯、南北红灯灭,南北转弯灯、南北红灯、东西红灯亮。持;东西转弯、东西红灯灭,东西绿灯亮,南北红灯继续亮。5 程序编辑

附录 源程序-STL语句 ORGANIZATION_BLOCK 主:OB1 TITLE=程序注解 VAR T:BYTE;//时钟值缓冲区 H:INT;//小时数存储单元 M:INT;//分钟数存储单元 SEC:INT;//秒钟数存储单元

Tim:WORD;//小时数乘100加分钟数乘10加秒钟数所得结果存储单元 END_VAR BEGIN Network 1 // 网络标题 // 网络注解 LD I0.0 CALL SBR0 //开关SB0闭合,调用SBR0(INIT)对时钟进行初始化 Network 2 LDN I0.1 //起动/停止开关SB1断开,则停止程序 STOP Network 3 LD I0.1 TODR LB0 //起动/停止开关SB1闭合,则起动程序,读取时钟 Network 4 LD I0.1 INCB LB0 Network 5 LD I0.1 INCB LB0 Network 6 LD I0.1 INCB LB0 //T加3指向小时存储单元 Network 7 LD I0.1 BTI LB0, LW1 //将小时由字节型转换为整型 Network 8 LD I0.1 MOVW LW1, VW16 *I +100, VW16 //将小时的数值乘以100 Network 9 LD I0.1 INCB LB0 //将T指向分钟存储单元 Network 10 LD I0.1 BTI LB0, LW3 //将分钟由字节型转换为整型 Network 11 LD I0.1 MOVW LW3, VW18 *I +10, VW18 //将分钟的数值乘以10 Network 12 LD I0.1 MOVW VW16, VW20 +I VW18, VW20 //将小时数乘100与分钟数乘10相加 Network 13 LD I0.1 INCB LB0 //将T指向秒钟存储单元 Network 14 LD I0.1 BTI LB0, LW5 //将秒钟由字节型转换为整型 Network 15 LD I0.1 MOVW VW14, LW7 +I LW5, LW7 //将小时数乘100与分钟数乘10相加所得的结果与秒钟数相//加得Tim Network 16 LDW<= LW7, 630序

CALL SBR1 //Tim小于630时,则调用SBR1(SUBE)子程 Network 17 LDW< LW7, 700 CALL SBR2 //Tim大于630小于700时,则调用SBR2(SUBN)子程序 Network 18 总结

通过这次课程设计,加强了我们动手、思考和解决问题的能力。在整个设计过程中,我们通过这个方案包括设计了一套电路原理和PCB连接图,和芯片上的选择。这个方案总共使用了74LS248,CD4510各两个,74LS04,74LS08,74LS20,74LS74,NE555定时器各一个。

2、在设计过程中,经常会遇到这样那样的情况,就是心里想老着这样的接法可以行得通,但实际接上电路,总是实现不了,因此耗费在这上面的时间用去很多。

3、我沉得做课程设计同时也是对课本知识的巩固和加强,由于课本上的知识太多,平时课间的学习并不能很好的理解和运用各个元件的功能,而且考试内容有限,所以在这次课程设计过程中,我们了解了很多元件的功能,并且对于其在电路中的使用有了更多的认识。

第四篇:单片机定时器控制交通灯程序1

定时器控制交通指示灯

/* 名称:定时器控制交通指示灯

说明:东西向绿灯亮5s后,黄灯闪烁,闪烁5次亮红灯,红灯亮后,南北向由红灯变成绿灯,5s后南北向黄灯闪烁,闪烁5次后亮红灯,东西向绿灯亮,如此往复。*/ #include #define uchar unsigned char #define uint unsigned int sbit RED_A=P0^0;//东西向指示灯

sbit YELLOW_A=P0^1;sbit GREEN_A=P0^2;sbit RED_B=P0^3;//南北向指示灯

sbit YELLOW_B=P0^4;sbit GREEN_B=P0^5;//延时倍数,闪烁次数,操作类型变量

uchar Time_Count=0,Flash_Count=0,Operation_Type=1;//定时器0中断函数 void T0_INT()interrupt 1 { TL0=-50000/256;TH0=-50000%256;switch(Operation_Type){

case 1: //东西向绿灯与南北向红灯亮5s

RED_A=0;YELLOW_A=0;GREEN_A=1;

RED_B=1;YELLOW_B=0;GREEN_B=0;

if(++Time_Count!=100)return;//5s(100*50ms)切换

Time_Count=0;

Operation_Type=2;

break;

case 2: //东西向黄灯开始闪烁,绿灯关闭

if(++Time_Count!=8)return;

Time_Count=0;

YELLOW_A=~YELLOW_A;GREEN_A=0;

if(++Flash_Count!=10)return;//闪烁

Flash_Count=0;

Operation_Type=3;

break;

case 3: //东西向红灯与南北向绿灯亮5s

RED_A=1;YELLOW_A=0;GREEN_A=0;

RED_B=0;YELLOW_B=0;GREEN_B=1;

if(++Time_Count!=100)return;//5s(100*50ms)切换

Time_Count=0;

Operation_Type=4;

break;

case 4: //南北向黄灯开始闪烁,绿灯关闭

if(++Time_Count!=8)return;

Time_Count=0;

YELLOW_B=~YELLOW_B;GREEN_A=0;

if(++Flash_Count!=10)return;

Flash_Count=0;

Operation_Type=1;

break;}

} //主程序 void main(){ TMOD=0x01;

//T0方式1 IE=0x82;TR0=1;while(1);}

//闪烁

第五篇:十字路口交通灯控制毕业设计答辩题目

十字路口交通灯控制毕业设计答辩题目

1.PLC控制系统设计的基本内容?本文选择西门子可编程控制器S7-200为核心部件,着重进行硬件接口设计,利用梯形图和语句表进行编程,实现了十字路口交通灯控制系统的自动化。

2.试述你设计的十字路口交通灯控制时序关系?信号灯受一个起动开关控制,当起动开关接通时,信号系统开始工作,且先南北红灯亮,东西绿灯亮。当起动开关断开时,所有信号灯都熄灭。

南北绿灯和东西绿灯不能同时亮,如果同时亮时应关闭信号灯系统,并报警。

南北红灯亮维持30S。在南北红灯亮的同时东西绿灯也亮,并维持25S。到25S时,东西绿灯闪烁,闪烁3S后熄灭。在东西绿灯熄灭时,东西黄灯亮,并维持2S。到2S时,东西黄灯熄,东西红灯亮。同时,南北红灯熄灭,南北绿灯亮。

东西红灯亮维持30S。南北绿灯亮维持25S。然后闪烁3S,熄灭。同时南北黄灯亮,维持2S后熄灭,这时南北红灯亮,东西绿灯亮。

周而复始。

3.试述你选择的PLC的型号,它的输入是(1)、输出各是(7),留有多少裕量?一般留40%的.裕量

4.试述在PLC编程中,你是如何实现绿灯闪烁的?需脉冲源(时钟脉冲sm0.5)动作使南北绿灯闪烁,5.PLC控制系统设计的基本原则? 1最大限度的满足被控制对象的控制要求

2在满足控制要求的前提下。力求使控制系统简单、经济使用和维护方面

3保证控制系统安全可靠

4考虑到生产的发展和工艺的改进在选择PLC容量时应留有余量

6.在S7-200系列PLC中,定时器按工作方式分为哪几种类型,你在设计中用了哪几种类型? 延时接通定时器、延时断开定时器和保持型延时接通定时器(TONR)。我用的是延时接通定时器(TON)、延时断开定时器(TOF)。

7.在S7-200系列PLC中,定时器按工作时基脉冲为哪几种类型,1ms、10ms、100ms三种。你在设计中用了哪几个编号的定时器?T33、T97、T98、T99、T100.其时基脉冲是多少?10MS 8.在S7-200系列PLC中,计数器按工作方式分为哪几种类型?加计数器、减计数器和加/减计数器等不同类型。

9.PLC有哪几种编程语言,请简要说明?

 梯形图(LD) 功能块图(FBD) 顺序功能图(SFC) 结构化文本(ST) 指令表(IL)

10.在十字路口交通灯控制中,你选用的灯具是那种类型,有什么优点?发光二极管.优点:价格便宜、经济实惠且耐用

11.PLC程序设计有哪几种方法?现在常用的是梯形图,除此外还有指令语言(STL),功能图(SFC)12.PLC有哪三种输出电路,实训室用PLC的输出电路是哪一种?是继电器输出、晶体管输出和双向晶闸管输出。实验室常用的是继电器输出

13.PLC控制系统中要用直流电源,现常用的是哪种直流电源?有什么优点?直流24V电源,可以显著地减少来自交流电源的干扰,在交流电源消失时,也能保证PLC的正常工作。14.试述PLC的定义?PLC[可编程控制器] PLC是一种专门为在工业环境下应用而设计的数字运算操作的电子装置。它采用可以编制程序的存储器,用来在其内部存储执行逻辑运算、顺序运算、计时、计数和算术运算等操作的指令,并能通过数字式或模拟式的输入和输出,控制各种类型的机械或生产过程

15.PLC与微机相比,为何有更高的可靠性?

1.可靠性高,抗干扰能力强 2.通用性强、控制程序可变 3.使用方便

16.在PLC编程中,你用了哪几个特殊功能继电器,请说明?sm0.0:始终接通;

sm0.1:首次扫描为1,以后为0,常用来对程序进行初始化;

sm0.2:当机器执行数学运算的结果为负时,该位被置1; sm0.3:开机后进入run方式,该位被置1一个扫描周期; sm0.4:该位提供一个周期为1分钟的时钟脉冲,30秒为1,30秒为0;

sm0.5:该位提供一个周期为1秒钟的时钟脉冲,0.5秒为1,0.5秒为0;

sm0.6:该位为扫描时钟脉冲,本次扫描为1,下次扫描为0;

sm1.0:当执行某些指令,其结果为0时,将改位置1;

下载单片机AT89C52十字路口交通灯控制C语言程序word格式文档
下载单片机AT89C52十字路口交通灯控制C语言程序.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    单片机带应急的交通灯控制实验程序(精选)

    单片机带应急的交通灯控制实验(汇编) org 00h ajmp main org 0003h ajmp int_ red_we equ p1.1 yel_we equ p1.2 gre_we equ p1.3 red_sn equ p1.5 yel_sn equ p1.6 gre_sn e......

    单片机控制交通灯的案例

    单片机控制交通灯 AT89C51单片机及由Keil 软件编写单片机程序,并且通过Proteus仿真测试,设计一个交通灯系统,实现简单的交通灯的管理功能。在交通灯系统的管理中,用发光二极管模......

    基于51单片机的交通灯控制电路设计

    交通灯 一、功能要求 要求甲车道和乙车道两条交叉道路上的车辆交替运行,每次通行时间都设为25秒,黄灯先亮5秒钟,才能变换运行车道;黄灯亮时,要求每秒钟闪亮一次。 二、电路图 说......

    基于单片机控制的交通灯设计系统

    基于单片机控制的交通灯设计系统 班级: 姓名: 学号: 第一章 概述 1. 设计内容 本系统需要采用AT89C51单片机AT89C5中心器件来设计交通灯控制器,实现以下功能: 1.1初始东西绿......

    单片机C语言学习

    单片机C语言之一___________________________________________________________________ _____________________ 预处理 一》宏定义: 1、不带参数: #define 标识符 常量表达......

    单片机c语言学习心得转载

    单片机c语言学习心得(一)相信很多爱好电子的朋友,对单片机这个词应该都不会陌生了吧。不过有些朋友可能只听说他叫单片机,他的全称是什么也许并不太清楚,更不用说他的英文全称和......

    单片机C语言学习心得

    8、指针的使用 8.1 在定义的时候,*ap中的‘*’是指针类型说明符;在进行指针预算时,x = *ap 中的‘*’是指针运算符。 8.2 如果在已定义好的指针变量,并引用,即 int *ap, int a; a......

    单片机C语言知识点大全

    【C语言】 【数据类型】 【转义字符】 【语句】 【#define】 #define 新名 原名 【typedef】 typedef 原类型名 新类型名; 【sbit】 sbit P1_0=P1^0; 在reg52.h或reg51.h的......