当前位置:首页 > 单片机 > 单片机
[导读] 引言 近年来,随着经济的快速发展,城市中车辆不断增多。由此引起交通拥挤、堵塞,交通事故频发等一系列问题。交通灯是城市重要的交通指挥系统,与人们的日常生活有十分密切的关系,它不仅关系到城市

 

引言

近年来,随着经济的快速发展,城市中车辆不断增多。由此引起交通拥挤、堵塞,交通事故频发等一系列问题。交通灯是城市重要的交通指挥系统,与人们的日常生活有十分密切的关系,它不仅关系到城市交通的有序进行,也影响到人们的出行便捷和安全。设计一个稳定、灵活、便捷的交通灯控制系统具有必要性和现实性。然而现实生活中很多交通灯都是按照一个时间间隔切换。而本设计中交通灯可根据平时或上下班高峰期来转换红绿灯切换时间,如上下班高峰期红灯转换时间设置为40 秒,平时设置为60 秒。这样可有效缓解在上下班时间,由于红灯设置时间太长,为了赶时间而闯红灯现象。同时,有效缓解交通堵塞现象。

1 交通管理方案的论证

1968 年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定:绿灯亮允许通行;红灯亮,禁止通行;黄灯亮,提示人们注意红,绿灯的状态即将切换。为了方便说明,现假设东西,南北走向的两干道相交于一处十字路口。同时,为了保证行人安全,设置A,B,C,D 四条人行道。如图1 所示。


图1. 路口指示灯示意图

路口指示灯工作情况说明:当东西道为红灯,此道车辆禁止通行,此时B,D 人行道上行人可通过马路;同时南北道为绿灯,此道车辆通过,此时A,C 人行道上行人禁止通行,时间为60 秒。黄灯闪烁5 秒,警示车辆和行人红,绿灯的状态即将切换。当东西道为绿灯,此道车辆通行,此时B,D 人行道上行人禁止通过马路;同时南北道为红灯,此道车辆禁止通过,此时A,C 人行道上行人可通行,时间为60 秒。依此循环,即可指引车辆有序行驶,行人安全通过马路。

2 系统硬件电路的设计

2.1 系统电路总体概要

本设计主要由89C52 单片机、交通灯显示模块、红外接收模块、数码管、按键等组成。

89C52 单片机为系统主控制器,控制其他模块协调工作;按键和红外接收模块用来切换系统工作模式:正常模式或上下班高峰模式。即正常模式下,红灯设置的时间为60 秒;上下班高峰模式下,红灯设置的时间为40 秒。交通灯显示模块用以指引各路道车辆的通行,数码管为了显示交通红绿灯所剩的切换时间,行人依此判断是否有足够时间过马路,是走还是停。其主要框图如图2 所示。


图 2. 系统设计总框图

 

2.2 硬件电路的设计

2.2.1 控制器的选择

作为交通智能控制的中心,控制器的选择十分重要。我们常见的有:(1)现场可编程门阵列FPGA;(2)可编程逻辑控制器PLC;(3)51 系列单片机等。这是一种较为实用的系统,所以要从价格和使用方面等因素综合考虑。以上3 种控制器都可以很好的完成交通灯的智能控制,而FPGA和PLC 操作和完成简单,但成本价格较高,性价比低。对于本设计,51 系列单片机完全可以实现其控制,且性能良好,价格低廉。因此选用大家所熟知的89C52单片机作为控制器。

 

 

2.2.2 红外发射接收原理


图3 红外发射与接收原理图

通用红外遥控系统由发射和接收两大部分组成,应用编/解码专用集成电路芯片来进行控制如图3所示。红外接收头的工作原理:内置接收管将红外发射管发射出来的光信号转换为微弱的电信号,此信号经由IC内部放大器进行放大,然后通过自动增益控制、带通滤波、解调变、波形整形后还原为遥控器发射出来的原始编码,经由接收头的信号输出脚输入到电器上的编码识别电路。

2.2.3 硬件电路总图

本设计选用 89C52单片机作为控制器,控制系统的正常运行。本系统有两种运行模式,普通模式和上下班高峰模式。可通过按键或红外遥控对系统运行模式进行切换。按键切换适于值班人员使用,而红外遥控切换适于交警巡查时使用,方便快捷。现简要介绍该系统工作原理:89C52 单片机通过锁存器控制数码管显示红绿灯时间,东西、南北四组数码管时间显示相同。P1^2~P1^7 控制交通灯的显示。P1^2~P1^4 控制东西道两组交通灯的显示,这两组红绿灯通过单片机控制显示相同颜色的指示灯并且切换时间相同;而P1^5~P1^7 控制南北道两组交通灯的显示,这两组红绿灯同样通过单片机控制显示相同颜色的指示灯并且切换时间相同。P3^5 接按键S1,通过此按键可控制系统运行模式。P3^2 接红外接收模块,通过此接口可红外遥控切换系统运行模式。如图4 所示:


图4,硬件电路图

到此,硬件电路搭建完成。

3 系统软件的设计

近年来,单片机开发技术不断发展,从普遍使用汇编语言到逐渐使用高级语言,单片机的开发软件也在不断发展,Keil 软件是目前最流行开发MCS-51 系列单片机程序的软件。

Keil 提供了包括C 编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVisON)将这些部分连在一起。

因此该系统的软件部分在Keil 环境下进行程序的编程,下面主要介绍程序中的主要子程序和一些重要部分:

初始函数主要是对定时/计数器和一些参数初值的设定:

 

#include

#define uint unsigned int

#define uchar unsigned char

uint aa,num,MODEL1,numa,HMODE1;

uchar shi,ge,gtime,rtime;

… …

sbit dula=P1^0; // 段选

sbit wela=P1^1; // 位选

sbitLED1=P1^2; // 东西(红灯)

sbit LED2=P1^5; // 南北(红灯)

sbit LED3=P1^6; // 南北(黄灯)

sbit LED4=P1^3; // 东西(黄灯)

sbit LED5=P1^7; // 南北(绿灯)

sbit LED6=P1^4; // 东西(绿灯)

sbit KEY1=P3^5;

uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

uchar table1[]={0xbf,0x7f};

void delay(uchar z) // 延时函数

{ uchar x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--); }

void init()

{ TMOD=0x01; // 选择方式一,16 位计数器

TH0=15536/256;

TL0=15536%256; // 定时器高、低位,置入初值

EA=1; // 中断允许总控制位

ET0=1; // 定时器0 中断允许控制位

TR0=1; // 定时器0 运行控制位

aa=0;

gtime=60;

rtime=40;

num=1;

numa=1;

MODEL1=1;

HMODE1=0;}

定时的函数及原理:

当单片机工作于定时状态时,定时/计数器对机器周期进行计数,每个机器周期包括12个振荡周期,以晶振频率为12MHz为例,则:

1 个机器周期=12/晶振频率=12/12000000=0.001ms定时时间为:TC=XTP。其中,TP 为机器周期,TC 为定时时间。

则应装入计数/定时器的初值为:

(注:M=2n , TP 为机器周期,TC 为定时时间)

对于方式1,一次最大的定时时间为:T=(216-0)×0.001=65.536ms ,为了便于计算,设定每次最大定时时间为50ms,计算应装入的初值:N = 65536 ? 50000 = 15536

显示子函数:

通过单片机对锁存器进行位选,段选的控制,使数码管显示需要的数字。

 

void display(shi,ge)

{ dula=1;

P0=table[shi];

dula=0;

wela=1;

P0=table1[0];

wela=0;

delay(5);

P0=0xff; // 对数码管消影

dula=1;

P0=table[ge];

dula=0;

wela=1;

P0=table1[1];

wela=0;

delay(5);

P0=0xff;}

模式一函数:

void mod1()

{ if(num==1&>ime>5) // 东西道红灯亮,南北道绿灯亮,最后5 秒切换成黄灯

{LED5=0;

LED1=0; }

if(num==2) // 东西道绿灯亮,南北道红灯亮

{ LED2=0;

LED6=0;

LED5=1;

LED3=1;

LED1=1; }

if(num==1&>ime==5) // 东西道红灯亮,南北道黄灯亮5 秒

{ LED5=1;

LED2=1;

LED3=0; }

shi=gtime/10;

ge=gtime%10;

if(aa==20) // 50ms×20=1s, 即过1s 数码管数字减1

{ aa=0;

gtime--; }

display(shi,ge);

if(gtime==0&&num!=2)

{ gtime=60;

num=2; }

if(gtime==0&&num==2)

{ num=1;

gtime=60;

LED2=1;

LED6=1; } }

模式二函数:

如同模式一,只是参数有变化。如将gtime=60 换成rtime=40;num=1 换成numa=1;仅此而已。

主函数:

void main()

{ init();

while(1)

/* 模式一,平常模式,红绿灯切换

 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

单片机是一种嵌入式系统,它是一块集成电路芯片,内部包含了处理器、存储器和输入输出接口等功能。

关键字: 单片机 编写程序 嵌入式

在现代电子技术的快速发展中,单片机以其高度的集成性、稳定性和可靠性,在工业自动化、智能家居、医疗设备、航空航天等诸多领域得到了广泛应用。S32单片机,作为其中的佼佼者,其引脚功能丰富多样,是实现与外部设备通信、控制、数据...

关键字: s32单片机引脚 单片机

在微控制器领域,MSP430与STM32无疑是两颗璀璨的明星。它们各自凭借其独特的技术特点和广泛的应用领域,在市场上占据了重要的位置。本文将深入解析MSP430与STM32之间的区别,探讨它们在不同应用场景下的优势和局限...

关键字: MSP430 STM32 单片机

在现代流程工业生产中,生产工艺相关的运行参数,如温度、液位、压力、流量等,都是采用仪表进行测量检测,并根据仪表的测量结果通过控制阀门、泵等执行机构使这些工艺运行参数处于要求的范围内以满足工艺生产的需要。目前,在先进的工厂...

关键字: 故障树 控制系统

该系列产品有助于嵌入式设计人员在更广泛的系统中轻松实现USB功能

关键字: 单片机 嵌入式设计 USB

单片机编程语言是程序员与微控制器进行交流的桥梁,它们构成了单片机系统的软件开发基石,决定着如何有效、高效地控制和管理单片机的各项资源。随着微控制器技术的不断发展,针对不同应用场景的需求,形成了丰富多样的编程语言体系。本文...

关键字: 单片机 微控制器

单片机,全称为“单片微型计算机”或“微控制器”(Microcontroller Unit,简称MCU),是一种高度集成化的电子器件,它是现代科技领域的关键组件,尤其在自动化控制、物联网、消费电子、汽车电子、工业控制等领域...

关键字: 单片机 MCU

STM32是由意法半导体公司(STMicroelectronics)推出的基于ARM Cortex-M内核的32位微控制器系列,以其高性能、低功耗、丰富的外设接口和强大的生态系统深受广大嵌入式开发者喜爱。本文将详细介绍S...

关键字: STM32 单片机

在当前的科技浪潮中,单片机作为嵌入式系统的重要组成部分,正以其强大的功能和广泛的应用领域受到越来越多行业的青睐。在众多单片机中,W79E2051以其卓越的性能和稳定的工作特性,成为市场上的明星产品。本文将深入探讨W79E...

关键字: 单片机 w79e2051单片机

单片机,又称为微控制器或微处理器,是现代电子设备中的核心部件之一。它集成了中央处理器、存储器、输入输出接口等电路,通过外部信号引脚与外部设备进行通信,实现对设备的控制和管理。本文将详细介绍单片机的外部信号引脚名称及其功能...

关键字: 单片机 微控制器 中央处理器
关闭
关闭