《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 基于AVR单片机的城市道路交通模拟沙盘设计
基于AVR单片机的城市道路交通模拟沙盘设计
2016年微型机与应用第2期
王年超, 李志军, 吴力普
北方工业大学 现场总线及自动化重点实验室,北京 100144
摘要: 设计了一种基于AVR的城市道路交通模拟沙盘系统,沙盘系统整体机械结构采用立式导轨的结构。系统包括LED灯驱动和显示模块、通信模块、MEGA16最小系统控制模块。完成整体PCB设计、软件的设计,使用PC通过RS485通信协议实现城市道路交通的模拟。此沙盘系统为研究城市道路交通模拟提供了平台,具有很好的实用价值
Abstract:
Key words :

  王年超, 李志军, 吴力普

  (北方工业大学 现场总线及自动化重点实验室,北京 100144)

  摘要:设计了一种基于AVR的城市道路交通模拟沙盘系统,沙盘系统整体机械结构采用立式导轨的结构。系统包括LED灯驱动和显示模块、通信模块、MEGA16最小系统控制模块。完成整体PCB设计、软件的设计,使用PC通过RS485通信协议实现城市道路交通的模拟。此沙盘系统为研究城市道路交通模拟提供了平台,具有很好的实用价值。

  关键词AVR单片机道路交通沙盘;RS485通信协议

0引言

  面对当今世界全球化、信息化发展趋势,传统的交通技术和手段已不适应经济社会发展的要求。智能交通系统是交通事业发展的必然选择,是交通事业的一场革命。通过先进的信息技术、通信技术、控制技术、传感技术、计算器技术和系统综合技术有效地集成和应用,使人、车、路之间的相互作用关系以新的方式呈现,从而实现实时、准确、高效、安全、节能的目标。交通安全、交通堵塞及环境污染是困扰当今国际交通领域的三大难题,本文针对交通堵塞问题对城市道路交通的车辆流量进行模拟,根据实际的城市道路实现模拟沙盘仿真,对实际城市道路的道路承载能力进行模拟。

1系统总体设计

  1.1总体设计方案

  该城市道路模拟沙盘系统主要完成道路车辆流量的显示和路口红绿灯的变化,整个沙盘包含6个路口,最后实现一个动态的整体显示。控制板内核采用ATmega16单片机,通信协议采用RS485,是一对多通信。单片机内部EEPROM存储控制板地址,高效率地利用片内资源和减少硬件的不必要设计。系统整体设计方案[1]如图1所示。

 

001.jpg

  1.2平面图模型设计

  该城市道路模拟沙盘系统平面图如图2所示,沙盘总共有6个路口,宽路车辆是双向运行即两个路口之间的路段,窄路车辆是单向运行即单个路口的路段[2]。路口红绿灯用红色和绿色发光LED模拟指示,道路上车流量使用一排连续排列的LED灯指示,车流量越多LED指示灯亮的个数越多。其中硬件包括LED灯驱动模块、通信模块、LED灯显示模块、MEGA16最小系统控制模块。

002.jpg

2硬件模块的设计

  2.1控制模块

  图3和图4是ATmega16单片机接线电路和最小系统所需的复位电路以及外部晶振电路。复位电路:启动后让单片机从初始状态执行程序;振荡电路:单片机是一种时序电路,必须施加脉冲信号才能工作。MEGA16内部有RC震荡电路,但相比外部的晶体震荡电路还是不够准确,另外它也可以使用外部晶振工作,两者之间的切换通过熔丝位来选择[3]。单片机内部有一个时钟产生电路,只要接上两个电容和一个晶振即可正常工作。

003.jpg


  2.2通信模块

005.jpg

  图5RS485通信电路图5所示是MAX485通信电路。采用单一电源+5 V工作,额定电流为300 μA,采用半双工通信方式。它完成将TTL电平转换为RS485电平的功能。MAX485芯片的结构和引脚都非常简单,内部含有一个驱动器和接收器。RO和DI端分别为接收器的输出和驱动器的输入端,与单片机连接时只需分别与单片机的RXD和TXD相连即可。RE和DE端分别为接收和发送的使能端,当RE为逻辑0时,器件处于接收状态;当DE为逻辑1时,器件处于发送状态,因为MAX485工作在半双工状态,所以只需用单片机的一个管脚控制这两个引脚即可。A端和B端分别为接收和发送的差分信号端,当A引脚的电平高于B时,代表发送的数据为1;当A的电平低于B端时,代表发送的数据为0。在与单片机连接时接线非常简单,只需要一个信号控制MAX485的接收和发送即可。

  2.3LED显示模块

006.jpg

  如图6所示,单片机IO口输出信号通过74HC154译码、74LS04反相器、4位IO口输出驱动多位发光二极管,74HC573锁存器实现IO口信号状态的锁定。显示电路采用10个LED灯一组的显示模块,设计硬件时10个LED模块总共100个LED,都接有上拉电阻,可以实现车流量模拟显示[4]。

3系统软件设计

  3.1通信协议格式

  对于城市道路交通模拟沙盘,软件部分至关重要。本系统通过串口给控制器发送数据,通过程序中的协议规则处理接收数据[5]。通信协议格式如图7、图8及图9所示。

  协议的每一位均使用十六进制数,具体的协议规则如下:

  (1)显示红绿灯数据格式:发送A5F2001122AF。其中A5、AF分别为发送数据格式的起始数据位和终止数据位,07为控制器的地址,112211为红绿灯要显示的数据,0表示熄灭,1表示红灯,2表示绿灯。

  (2)显示灯条数据格式:发送A5F2000000AF。其中A5、AF分别为发送数据格式的起始数据位和终止数据位,F2为控制器的地址,0A141E为灯条要显示的数据,灯条1显示10个LED灯,灯条2显示20个LED灯,灯条3显示30个LED灯。

  (3)修改控制板数据格式:发送A5F2000000AE。此条数据只能一对一地发送。其中A5、AE分别为发送数据格式的起始数据位和终止数据位,F2为想要修改的地址,000000为无效数据位。

  3.2工作流程

  流程介绍:首先对ATmega16单片机的IO口进行初始化,设定IO口为输出,然后对串口进行初始化,设定为中断方式接收上位机发送过来的数据,打开总中断,程序开始进入while循环中接收数据并处理数据,中断到来时将数据放入之前定义好的数组中,对数据格式进行判断,数据格式有以下3种类型:

  (1)接收的数据为灯条显示数据格式。判断灯条数据格式是否正确,如果不正确则重新接收,若正确则将数据进行处理,去掉接收数据中多余的部分,包括数据头、数据尾和图6LED显示模块  

007.jpg

008.jpg

  地址数据。还有将接收的数据中地址数据与本控制板中EEPROM存入的地址数据进行比较,若一致则为本控制板的命令数据,最后将有用的数据转换为八进制数据进行LED显示。

  (2)接收的数据为红绿灯显示数据格式。判断灯条数据格式是否正确,如果不正确则重新接收,若正确则将数据进行处理,去掉接收数据中多余的部分,包括数据头、数据尾和地址数据。还有将接收的数据中地址数据与本控制板中EEPROM存入的地址数据进行比较,若一致则为本控制板的命令数据,最后将有用的数据转换为八进制数据进行红绿灯显示。

  (3)接收的数据为修改地址数据指令。提取接收到的数据,将要修改的地址数据提取出来存入EEPROM中[67]。

  系统工作流程图如图10所示。

009.jpg

  33部分程序

  本系统的程序由以下几部分组成:初始化子程序、判断子程序、排序子程序、显示子程序、关闭子程序。初始化子程序对IO口和串口进行初始化;显示子程序和关闭子程序负责控制灯条及红绿灯的显示和关闭;判断子程序对接收的数据格式进行判断,根据判断条件执行相应的程序;排序子程序对错误的数据重新按照协议规则进行排序。主程序如下:

  Int main()

  {

  Init_IO();//IO端口初始化子程序

  Chushihua_usart()//串口初始化子程序

  Deng_off();//熄灭所有的灯子程序

  SREG|=0X80;//打开总中断

  Xieyi_2data[1]=eeprom_read_byte(0x0000);//启动时读取EEPROM地址0x0000的数据地址,与发送过来的数据地址相匹配

  While(1)

  {

  Xieyi_paixu();//将收到的串口数据 xieyi_3排序放在xieyi_1中

  //判断数据格式是否正确,并且进行显示

  If((xieyi_sign==0xFF)&&(xieyi_2data[1]==xieyi_1data[1])&&(xieyi_2data[0]==xieyi_1data[0]&&(xieyi_2data[5]==xieyi_1data[5]))

  {

  //如果发送的数据有变化,显示变换后的数据

  If((xieyi_2data[2]!=xieyi_1data[2])|(xieyi_2data[3]!=xieyi_1data[3])|(xieyi_2data[4]!=xieyi_1data[4]))

  {

  Panduan_deng_data();//判断并将数据转换为十进制

  Display_deng_data();//显示灯条

  }

  Xieyi_sign=0x00;//标志位清零,方便下次排序

  }

  //判断数据地址格式是否正确,修改地址,把地址放在EEPROM中

  If((xieyi_sign==0xFE)&&(xieyi_1data[0]==0xA5)&&(xieyi_1data[5]==0xAE))

  {

  Eeprom_write_byte(0x0000,xieyi_1data[1]);

  //将修改的地址放在EEPROM地址0x0000中

  Xieyi_2data[1]=xieyi_1data[1];

  Xieyi_sign=0x00;//标志位清零

  }

  }

  }

4系统测试

  测试使用其中一个路口作为测试对象,这个路口包含4个红绿灯,10个灯条,每个灯条都有自己的控制器,都被设置了地址,通过串口连接232/485转换器给沙盘发送数据:当发送A5260A141EAF时,对应26地址的3个灯条的LED灯依次亮10个灯、20个灯、30个灯,改变地址的值,相应的地址均能正确地显示;当发送A521222122AF时,因为25是红绿灯的控制地址,所以红绿灯显示相应的灯效果;修改地址一对一发送同样正常运行。不仅能单个控制器进行发送,还可以多个同时发送,如:A521222122AFA5260 A141EAFA527 0A141EAFA5280A141EAFA5290A1 41EAF,运行结果如图11所示。

010.jpg

5结论

  随着物质生活的改善,城市的车辆也快速增长,合理可靠的交通控制不仅改善交通环境,还可以提高人们的生活质图11系统测试显示图

  量,使人们生活更加美好。基于LED的城市道路交通模拟沙盘设计提供了这样一个平台。本系统充分利用ATmega16单片机芯片,提高了系统的稳定性和可靠性。工控机作为仿真系统的数据输入,实现了模拟沙盘的动态运行。同时采用MAX485作为通信模块,实现了一对多的通信。本文设计的沙盘系统可以对城市道路交通的车流量进行模拟,根据实际的城市道路实现模拟沙盘仿真,对城市道路的承载能力进行了模拟。

参考文献

  [1] 赵红军, 任波. 一种基于单片机的LED控制器的硬件电路[J]. 大众科技, 2008(11):7475.

  [2] 马潮.AVR单片机嵌入式系统原理与应用实践[M].北京:北京航空航天大学出版社,2007.

  [3] 李伟伟,张俊杰,王明,等.基于单片机的太阳能热水器智能节水装置[J].微型机与应用,2015,34(13):9496.

  [4] 郭志伟. 基于ATmega16的LED交通警示板的设计与仿真[J]. 科技信息, 2011(20):10200.

  [5] 张明长, 刘福平. 基于Atmega16的智能交通信号控制系统设计[J]. 北京印刷学院学报, 2011, 19(4):3741.

  [6] 郭循钊, 邝帆, 邵平,等. 基于单片机的多功能交通灯控制系统设计与仿真实现[J]. 公路交通技术, 2010(1):128131.

  [7] 朱利洋,吴夏来,胡叶民,等.基于单片机的门控系统硬件设计[J].微型机与应用,2013,32(2):1618.


此内容为AET网站原创,未经授权禁止转载。