基于单片机的智能交通灯控制系统设计与实现 联系客服

发布时间 : 星期五 文章基于单片机的智能交通灯控制系统设计与实现更新完毕开始阅读1045ba83b8f67c1cfbd6b81f

XXXXXX毕业设计

立式键盘接法。

独立式键盘的实现方法是利用单片机I/O口读取口的电平高低来判断是否有键按下。将常开按键的一端接地,另一端接一个I/O 口,程序开始时将此I/O口置于高电平,平时无键按下时I/O口保护高电平。当有键按下时,此I/O 口与地短路迫使I/O 口为低电平。按键释放后,单片机内部的上拉电阻使I/O口仍然保持高电平。我们所要做的就是在程序中查寻此I/O口的电平状态就可以了解我们是否有按键动作了。

在用单片机对键盘处理的时候涉及到了一个重要的过程,那就是键盘的去抖动。这里说的抖动是机械的抖动,是当键盘在未按到按下的临界区产生的电平不稳定正常现象,并不是我们在按键时通过注意可以避免的。这种抖动一般10~200毫秒之间,这种不稳定电平的抖动时间对于人来说太快了,而对于时钟是微秒的单片机而言则是慢长的。硬件去抖动就是用部分电路对抖动部分加之处理,软件去抖动不是去掉抖动,而是避抖动部分的时间,等键盘稳定了再对其处理。所以这里选择了软件去抖动,实现法是先查寻按键当有低电平出现时立即延时10~200毫秒以避开抖动(经典值为20毫秒),延时结束后再读一次I/O 口的值,这一次的值如果为1 表示低电平的时间不到10~200 毫秒,视为干扰信号。当读出的值是0时则表示有按键按下,调用相应的处理程序。键盘控制电路图如图3.6所示:

图3.6 键盘控制电路图

3.9红外接收原理

红外线接收头的运作原理:它里面的有一个接收管,作用是把红外线发射装置所发射出去的光信号转变成较弱的电信号,这个电信号再通过IC 里面的放大器处理,把信号增大,紧接着经过一系列的自动增益控制、带通滤波、解调变、波形整形后转化为遥控器发射出来的原始编码,再经过接收头的信号输出脚输入到电器上的编码识别电路。红外接收图如图3.7所示:

16

XXXXXX毕业设计

图3.8 红外接收电路图

4软件设计

跟C语言比起来,汇编语言所编写的代码生成的速率很快,但是程序看起来会十分复杂,很难读懂,然后用C 语言所编写的代码在速率方面跟汇编语言差不多,但是却比汇编容易更容易读懂,可移植性也很强,不仅如此, 在编写高时效性的代码的时候,C 语言还能够嵌入汇编语言来完成。在开发周期的方面,如果一般中大型的软件,编写都是用C 语言来实现,因为它的开发周期比汇编语言的要少许多。综上所述,本人在这次的毕业设计当中选了C语言作为程序编程语言。

而这次的毕业设计的程序用Keil μVision 2.0这款软件进行编写。因为这个编程软件不但支持各种公司的芯片,还具有编译、编辑以及仿真等功能,不仅是C语言,它还支持PLM、汇编这两种语言的编写和设计,界面非常简洁,让人容易上手。在程序的调试和软件的仿真这两个方面都很优秀。所以这次的编程的软件本人选的是Keil μVision。系统总的流程图如图4.1所示:

宏定义 I/O初始化 定义共阴极字型 编码表 定 义函数变量并初始化 定时器0初始化 调用Buzzer()函数 进入主函数main() 定义状态数组 初始化外部中断 设置字型码和字位码,完成显示 定义字位码函数 进入while(1)循环 返回while(1)函数 调用显示控制函数void display() 图4.1 系统总的流程图 17

XXXXXX毕业设计

4.1定时器的设置

定时器的工作方式可以分为4种,工作方式0是13位的定时计数器; 16位的定时计数器可以用工作方式1来实现;工作方式2是8位的定时计数器;工作方式3情况较复杂,定时计数器T0才可以在此工作方式下工作,T0被分解成独立的两个8位定时计数器。而在此系统的程序,所采用的是工作方式1。具体用代码TMOD=0x11来设置2个定时计数器T0,T1都工作在工作方式1下。

4.2中断程序的设置

在中断情况下,本系统的程序中断思路流程图如图4.2所示,采用外部中断0进入只允许东西通行的特殊情况;采用外部中断1进入只允许南北通行的特殊情况;在自然情况下,外部中断0的优先级高于外部中断1,系统无特别要求可不设置外部中断的优先级。

图4.2 程序中断思路流程图

本系统的设计所用的定时中断程序是非常重要的,定时计数器启动之后,它就开始在初始值上的加1计数,程序设定给TL0和TH0装载合适的初值,假设需要设定系统定时50ms,计50000个数后,定时计数器将会溢出,此时的时间就是50ms并且会进入中断系统,当需要设定系统时间1s时,程序设计时只要设置20次50ms的定时中断就是1s,这样便可精确控制定时时间同时利用中断系统完成数码管输出数据刷新和处理不同状态的切换。定时中断系统的程序流程图具体情况如图4.3所示。

中断返回 特殊情况(紧急情况) 中断响应 关定时器 5调试

5.1断电调试

以保安全,避免硬件被烧坏,本人一开始先进行的是断电测试。首先用万能表检查

18

XXXXXX毕业设计

启动定时器中断 设置字型码和字位码,完成数码管倒计时显示 定时中断入口 定义1s 初始化定时器0 关闭定时器0

计数变量自加1

图4.3 定时中断流程图

电路是不是有短路的情况出现,然后看看设计的原理是不是对的,每一个线路电压有没有出现错误。经过检查,断电测试没有问题。

5.2通电调试

A、插入电源后,按了开关,发现电路没有反应,经过一系列的测试排除后发现输入电压最少应该为6.5V,经过处理,换了一个9V的电源,问题终于得到了解决。

B、 测试系统的时钟是不是正确的,本人的方法是用万能表来测试。把万能表调到直流电压档这个档位,然后把两线分别接在XTAL1与AXTAL2之间,显示出来的数字是 2.4,没有问题。

C、复位电路经过检测没有出现问题。

D、数码管显示有时显示不正常,经过一系列排查处理之后,恢复正常。LED灯表现也正常。

5.3功能部分的测试

A、接上电源后,交通灯开始运作,运作正常。运行1分钟,按复位键,恢复到了开始状态,表现正常。

B、按紧急停止按键,四个红灯一起亮了,再按一次,退出该模式,表现正常。 C、按显示车流量按键,数码管显示倒计时停止,红外线每检测到一个信号,计数加1,再按一次,退出该模式,表现正常。

D、按单向通行按键,按一次为东西通行,按两次为南北通行,按第三次退出该模式,表现正常。

E、按夜间模式按键,按一次路口全为黄灯,按第二次退出该模式,表现正常。 F、按调时按键,调节东西方向的红灯和绿灯时长,按一次为调节红灯时长,按两

19