基于单片机的智能交通灯控制系统设计

这就是说由肖特基钳位的系统译码器所引起的有效系统延迟可以忽略不计。HC138 按照三位二进制输入码和赋能输入条件,从8 个输出端中译出一个 低电平输出。两个低电平有效的赋能输入端和一个高电平有效的赋能输入端减少了扩展所需要的外接门或倒相器,扩展成24 线译码器不需外接门;扩展成32 线译码器,只需要接一个外接倒相器。在解调器应用中,赋能输入端可用作数据输入端。74HC245电路图如图所示:

图 74HC245电路图

键盘输入电路

单片机键盘有独立键盘和矩阵式键盘两种:独立键盘每一个I/O 口上只接一个按键,按键的另一端接电源或接地(一般接地),这种接法程序比较简单且系统更加稳定;而矩阵式键盘式接法程序比较复杂,但是占用的I/O少。根据本设计的需要这里选用了独立式键盘接法。

独立式键盘的实现方法是利用单片机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时则表示有按键按下,调用相应的处理程序。键盘控制电路图如图所示:

图 键盘控制电路图

红外接收原理

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

图 红外接收电路图

4软件设计

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

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

宏定义 I/O初始化 定义共阴极字型 编码表定义 函数变量并初始化 定义状态数组 定义字位码函数 进入主函数main() 定时器0初始化 初始化外部中断 进入while(1)循环 调用显示控制函数设置字型码和字位码,完成显示 返回while(1)函数 图 系统总的流程图 数 void display() 调用Buzzer()函定时器的设置 定时器的工作方式可以分为4种,工作方式0是13位的定时计数器; 16位的定时计数器可以用工作方式1来实现;工作方式2是8位的定时计数器;工作方式3情况较复杂,定时计数器T0才可以在此工作方式下工作,T0被分解成独立的两个8位定时计数器。而在此系统的程序,所采用的是工作方式1。具体用代码TMOD=0x11来设置2个定时计数器T0,T1都工作在工作方式1下。

中断程序的设置

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

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

5调试

断电调试

以保安全,避免硬件被烧坏,本人一开始先进行的是断电测试。首先用万能表检查 定时中断入口 启动定时器中断 设置字型码和字位码, 完成数码管倒计时显示 初始化定时器0 关闭定时器0 计数变量自加1 图 定时中断流程图 电路是不是有短路的情况出现,然后看看设计的原理是不是对的,每一个线路电压有没有出现错误。经过检查,断电测试没有问题。

定义1s 通电调试

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

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

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

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

功能部分的测试

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

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

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

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

6结论

通过这次毕业设计,我学到了许许多多的东西。总结有以下几条:

(1)首先,学习到最明显的就是word的运用。在这次毕业设计以前,除了几次基本的文字编辑之外,其它的功能根本就没有用过。通过这篇论文的修改,我学会了很多功能的运用,包括段落、页面、页眉、等各种编辑功能。虽然我知道word的功能远远不止这些,但是这次起码让我学习到了我以前不会的东西,这就是一种进步的表现。

(2)通过复习大学期间学过的有关知识,我将此充分运用到了这次的毕业设计当中,跟实践相联合。同时,我也发现自己有很多知识不明白,都是通过问老师,查资料自学来掌握,我相信经过我的努力,可以完美的完成这次毕业设计。

(3)在这次毕业设计中,我对单片机有了更深的理解,学习到了更多关于单片机的知识。通过深入的研究和思考,在程序编写方面也有自己独特的一套思路,编写的时候更加熟练,灵巧。

(4)增强了查阅资料和自学的能力。在这次毕业设计当中,我遇到了很多不会的问题,然后我就开始自己上网搜索,查找或者翻阅书本查找,经过自学之后,如果还是不懂,我就会问同学和老师,最后通过自己的理解逐渐的把问题解决了。这让我体会到了什么叫学无止境,知识是无限的,我们只有通过不断的学习,提升自己的知识面,才能更好的运用到实际当中,使生活更加美好,思想境界更加广阔。

参考文献

[l]边海龙,孙永奎. 单片机开发与典型工程项目实例详解[J].电子工业出版社,2008,(10):143-160.

[2]王为青,邱文勋. 51单片机开发案例精选[J].人民邮电出版社,2001,(5):45-47. [3]张鑫,华臻,陈书谦. 单片机原理及应用[J].电子工业出版社,2008(5).

联系客服:779662525#qq.com(#替换为@)