PIC单片机实现交通灯控制系统

出处:awey 发布于:2007-05-27 17:05:58

1 引 言

我国机动车辆发展迅速,而城镇道路建设由于历史等各种原因相对滞后。道路拥挤、阻塞现象及交通事故常有发生。如何利用当今计算机与自动控制技术,有效地疏导交通,提高城镇交通路口的通行能力,提高车辆速度,减少交通事故是值得我们研究的新课题。而目前国内利用单片机实行交通管制这方面应用较少。下面分析用PIC实现交通灯控制设计方法。

2 硬件设计

本系统选用美国Microchip公司的PICl6F873单片机。配合一些外围电路完成交通灯自动转换系统。PIC单片机有以下优点:

①采用哈佛结构(数据总线和指令总线分离)。
②指令的"单字节化"。
③精简指令集(RISC)技术。
④寻址方式简单。
⑤代码压缩率的提高。
⑥运行速度高。
⑦功耗低、驱动能力强。
⑧具备PC和SPI串行总线端口。
⑨寻址空间简洁。
⑩外围电路简洁。
⑾开发方便。
⑿C语言编程。
⒀品种丰富。
⒁程序保密性强。

其指令系统除了程序分支指令是单字节双周期指令外,其他指令都是单周期、单字节指令。在这些指令中,没有功能相交叉的指令,使所有的指令具有简洁性,从而执行速度非常快。PIC单片机硬件特点:PICl6F873型单片机是PIC中级单片机中很有特色的一款,其指令字节为14b。他具有PIC单片机的全部优点,而且片内还带有128×8的EzPROM数据存储器,其程序存储器(4k×l4b)也与众不同,采用快闪存储器。快闪存储器可以实现在电路板上快速擦除和写入,适合制作仿真板。借助于PICl6F873制作的仿真板,我们在程序编写和调试过程中,可以方便的烧写程序和修改程序。

电路完成功能是:车辆放行方向上(A线)绿灯亮25s,黄灯警告5s,车辆禁止方向上(B线)红灯亮30s,然后绿灯开始放行。各方向上计数器从30开始递减,减到。从新开始。设计方框图如图1所示,整个电路由PICl6873所控制,译码电路由CD4056和7段数码管构成,CD4056的功能是将BCD码转换成十进制数,然后送7段数码管显示输出。6个发光二极管用来模拟双向十字路口的红、黄、绿灯。

3 软件设计

Microchip公司为PIC系列单片机配备了功能强大的软件集成开发环境MPLAB,应用MPLAB就能在微机上对PIC系列单片机进行程序的创建、录入、编辑以及汇编,甚至还能实现程序的模拟运行动态调试(Debug)之类的虚拟演练,而且调试可以采用连续运行、单步运行、自动单步运行、设置断点运行等多种运行方式。

3.1 主程序方框图

主程序框图如图2所示。

控制过程可分为4个过程:

①给PORTA送控制码"0CH",就是给A口的数据寄存器送"00001100''这样就使A线的绿灯亮,B线的红灯亮。

②同样的给PORTA送"0AH",A线黄灯亮,B线红灯亮。

③给PORTA送"21H",A线红灯亮,B线绿灯亮。

④给PORTA送"llH",A线红灯亮,B线黄灯亮。

这样就完成了红绿灯的转换。用A口来控制双向路口的红黄绿灯的闪亮,将控制码送入A口的数据寄存器PORTA,送1表示输出高电平、0表示输出为低电子,PORTA内容输出就可控制红黄绿灯的亮暗。

3.2 8位二进制转化成2位BCD码流程图

二进制到BCD码转变流程图如图3所示。 如果直接接?段显示器,就需要2个输出端口(PORTC和PORTB),而接上CD4056后只需要1个输出端口(PORTC),这样就可以省出一个输出端口(PORTB)用于其功能扩展。二进制到BCD码转变子程序就是为了利用CD4056能完成功能而编写的。

3.3 延时子程序流程图

延时序中,整个指令执行的时间和延时时间。使用4 MHz时钟,每个指令周期需要4个震荡周期,则每条指令周期为1μs所以单指令周期执行时间为1μs,双周期指令为2μs。在这种情况下,秒级的延时需要三重循环。

延时时间=[(3×255+5) ×255十7] ×5+6=991 785μs=0.991 785 s

所以延时子程序整个指令执行时间(延时子程序)约1 s。

4 MPLAB-1CD在线调试

MPLAB-ICD是Microchip公司为其PIC单片机中具有片内Flash程序存储器的PICl6F87X研制的一套廉价的学习和开发工具套件。MPLAB-ICD可以用作实验阶段的评估和辅助调试。他既是一个编程器(即程序烧写器),又是一个实时仿真和程序烧写器。

用MPLAB-ICD工具套件可以实现以下工作:

①电路中实时运行和调试自己的源程序;

②硬件调试。用自己编制的程序来调试和检测自制目标板上的电路;

③程序固化。利用"在线串行编程技术"将自己设计的目标程序烧写到插在目标板上的PICl6F87X单片机中。

4.1 软件调试

在应用MPLAB-ICD实现在线调试时首先应用MPLAB-ICD提供的一个范例程序tut877.asm,他能完成使PORTC口8个输出口依次高点平,而MPLAB-ICD在PORTC的8个口上都接了发光二极管,那么将程序烧写进去后就能完成8个发光二极管的依次闪动。则程序烧写正确了。

接下来依次调试子程序。例如在程序调试的后期,程序已经基本能完成任务。因为单部执行时,寄存器内容正确,所以程序正确,只是烧写器有问题。所以在程序调试过程中要细心、耐心,调试时能够及时地记录程序调试的进程和已解决的问题,这样有利于调试工作的连续性,调试工作不会有重复。而且及时的记录调试进程有利于错误的缩小,可以更好地完成调试。
4.2 程序烧写

①建立一个十六进制调试文件;
②新"项目";
③项目会话窗口;
④设置节点属性;
⑤增加节点;
⑥完成对"项目"的设置;
⑦建立"项目"(Make Project);
⑧对PICl6F873进行编程;
⑨运行pro.asm软件。

程序烧写完毕后,就可以将单片机插入实验板中运行了。

4.3 整体电路设计和安装调试

原理图设计出后,就是进行原理图打印和印刷电路板的设计了。这通常是有Protel完成。成形的电路这里不再赘述。

5 结 语

实验测试结果证明用本系统PIC单片机能完成交通灯一般控制过程,但功能还不够完善,比如交通灯红、黄、绿时间还不能按交通紧松完成手控调整,软件编写实现功能还不能很好控制硬件人工操作。本系统今后还有待以进一步完善,增加更强大功能,比如手控时间的调节、摄像机交通监控的控制、盲人通过的交通灯的控制等。


  

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

相关技术资料
广告
上传BOM文件: BOM文件
*公司名:
*联系人:
*手机号码:
QQ:
应用领域:

有效期:
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:

0571-85317607

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!