1 引 言
我国机动车辆发展迅速,而城镇道路建设由于历史等各种原因相对滞后。道路拥挤、阻塞现象及交通事故常有发生。如何利用当今计算机与自动控制技术,有效地疏导交通,提高城镇交通路口的通行能力,提高车辆速度,减少交通事故是值得我们研究的新课题。而目前国内利用单片机实行交通管制这方面应用较少。下面分析用PIC实现交通灯控制设计方法。
2 硬件设计
本系统选用美国Microchip公司的PIC16F873单片机。配合一些外围电路完成交通灯自动转换系统。PIC单片机有以下优点:
①采用哈佛结构(数据总线和指令总线分离)。
②指令的“单字节化”。
③精简指令集(RISC)技术。
④寻址方式简单。
⑤代码压缩率的提高。
⑥运行速度高。
⑦功耗低、驱动能力强。
⑧具备I2C和SPI串行总线端口。
⑨寻址空间简洁。
⑩外围电路简洁。
⑪开发方便。
⑫ C语言编程。
⑬品种丰富[1]。
⑬程序保密性强。
其指令系统除了程序分支指令是单字节双周期指令外,其他指令都是单周期、单字节指令。在这些指令中,没有功能相交叉的指令,使所有的指令具有简洁性,从而执行速度非常快。PIC单片机硬件特点:PIC16F873型单片机是PIC中级单片机中很有特色的一款,其指令字节为14 b[2]。他具有PIC单片机的全部优点,而且片内还带有128×8的E2PROM数据存储器,其程序存储器(4 k×14 b)也与众不同,采用快闪存储器。快闪存储器可以实现在电路板上快速擦除和写入,最适合制作仿真板。借助于PIC16F873制作的仿真板,我们在程序编写和调试过程中,可以方便的烧写程序和修改程序。
电路完成功能是:车辆放行方向上(A线)绿灯亮25 s,黄灯警告5 s,车辆禁止方向上(B线)红灯亮30 s,然后绿灯开始放行。各方向上计数器从30开个电路由PIC16873所控制,译码电路由CD4056和7段数码管构成,CD4056的功能是将BCD 码转换成十进制数,然后送7段数码管显示输出。6个发光二极管用来模拟双向十字路口的红、黄、绿灯。
[page]
3 软件设计
Microchip公司为PIC系列单片机配备了功能强大的软件集成开发环境MPLAB,应用MPLAB就能在微机上对PIC系列单片机进行程序的创建、录入、编辑以及汇编,甚至还能实现程序的模拟运行动态调试(Debug)之类的虚拟演练,而且调试可以采用连续运行、单步运行、自动单步运行、设置断点运行等多种运行方式[1]。
3.1 主程序方框图
主程序框图如图2所示。
控制过程可分为4个过程:
①给PORTA送控制码“0CH”,就是给A口的数据寄存器送“00001100”这样就使A线的绿灯亮,B线的红灯亮。
②同样的给PORTA送“0AH”,A线黄灯亮,B线红灯亮。
③给PORTA送“21H”,A线红灯亮,B线绿灯亮。
④给PORTA送“11H”,A线红灯亮,B线黄灯亮。
这样就完成了红绿灯的转换。用A口来控制双向路口的红黄绿灯的闪亮,将控制码送入A口的数据寄存器PORTA,送1表示输出高电平、0表示输出为低电平,PORTA内容输出就可控制红黄绿灯的亮暗[3]。
3.2 8位二进制转化成2位BCD码流程图
二进制到BCD码转变流程图如图3所示。
[page]
如果直接接7段显示器,就需要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-ICD在线调试
MPLAB-ICD是Microchip公司为其PIC单片机中具有片内Flash程序存储器的PIC16F87X研制的一套廉价的学习和开发工具套件。MPLAB-ICD可以用作实验阶段的评估和辅助调试。他既是一个编程器(即程序烧写器),又是一个实时仿真和程序烧写器。
用MPLAB-ICD工具套件可以实现以下工作:
①电路中实时运行和调试自己的源程序;
②硬件调试。用自己编制的程序来调试和检测自制目标板上的电路;
③程序固化。利用“在线串行编程技术”将自己设计的目标程序烧写到插在目标板上的PIC16F87X单片机中。
4.1 软件调试
在应用MPLAB-ICD实现在线调试时首先应用MPLAB-ICD提供的一个范例程序tut877.asm[2],他能完成使PORTC口8个输出口依次高点平,而MPLAB-ICD在PORTC的8个口上都接了发光二极管,那么将程序烧写进去后就能完成8个发光二极管的依次闪动。则程序烧写正确了。
接下来依次调试子程序。例如在程序调试的后期,程序已经基本能完成任务。因为单部执行时,寄存器内容正确,所以程序正确,只是烧写器有问题。所以在程序调试过程中要细心、耐心,调试时最好能够及时地记录程序调试的进程和已解决的问题,这样有利于调试工作的连续性,调试工作不会有重复。而且及时的记录调试进程有利于错误的缩小,可以更好地完成调试。
4.2 程序烧写
程序烧写的步骤如下:
①建立一个十六进制调试文件;
②新“项目”;
③项目会话窗口;
④设置节点属性;
⑤增加节点;
⑥完成对“项目”的设置;
⑦建立“项目”(Make Project);
⑧对PIC16F873进行编程;
⑨运行pro.asm软件。
程序烧写完毕后,就可以将单片机插入实验板中运行了。
4.3 整体电路设计和安装调试
原理图设计出后,就是进行原理图打印和印刷电路板的设计了。这通常是有Protel完成[3]。成形的电路这里不再赘述。
5 结 语
实验测试结果证明用本系统PIC单片机能完成交通灯一般控制过程,但功能还不够完善,比如交通灯红、黄、绿时间还不能按交通紧松完成手控调整,软件编写实现功能还不能很好控制硬件人工操作。本系统今后还有待以进一步完善,增加更强大功能,比如手控时间的调节、摄像机交通监控的控制、盲人通过的交通灯的控制等。
[2] 何信龙.PIC16F87x快速上手[M].北京:清 华大学出版社,2001.
[3] 赵晶.Protel99高级应用[M].北京:人民邮电出版社,2001.
[4] 徐霞,谭保成.监控播音系统的研制[J].西安工业学院学报,2001,(3).
上一篇:基于PIC单片机的小型空气压缩机控制装置
下一篇:基于PIC单片机的机器人灵巧手的控制系统设计
推荐阅读最新更新时间:2024-03-16 12:52
设计资源 培训 开发板 精华推荐
- 2009 EEWORLD 年度人物大评选活动评奖揭晓
- 抢楼有礼|英飞凌天猫店有惊喜
- 有奖直播 | 是德科技 InfiniiMax4.0系列高带宽示波器探头新品发布
- 提交物联网应用创意,赢万用表、蓝牙耳机、小米排插、京东卡等好礼!
- 下载有礼|精华课件汇编:泰克半导体器件的表征及可靠性研究交流会暨吉时利测试测量年度研讨会
- TI 嵌入式处理主题直播月|报名观看直播赢好礼【低功耗WiFi MCU、Sitara AM57X平台、机器学习】
- 【免费租用】Xilinx Spartan-6 FPGA 嵌入式套件!
- 泰克MDO系列:1招搞定6大仪器,轻松穿越模拟、数字、频域测量
- 答题赢好礼|TI 工业参考设计精选
- 【在线研讨会讲义下载】TOF 技术介绍及产品应用