基于单片机的交通灯设计课程设计报告

本系统采用单片机89C52作为中心器件设计红绿灯控制器。本设计系统由单片机I/O口扩展系统、红绿灯状态显示系统、LED数码显示系统、复位电路组成。硬件设计4.1单片机最小系统单片机最小系统由单片机、时钟电路和复位电路组成。

红绿灯的出现可以实现有效的交通管制,对疏通交通流量,提高道路通行能力,减少交通事故起到了很大的作用。本系统采用单片机89C52作为核心器件,设计了一款红绿灯控制器。该系统实用性强,操作简单,可扩展性强。本设计采用单片机模拟路口红绿灯的各种状态显示及倒计时时间。本设计系统由单片机I/ O口扩展系统、红绿灯状态显示系统、LED数码显示系统、复位电路。系统除了具备基本的红绿灯功能外,还具备倒计时功能,可以更好的模拟路口可能出现的情况。软件采用KEILC编程,主要编写主程序、LED数码管显示程序、中断程序延时程序等,整机调试完成后,实现路口红绿灯的模拟。随着在中国,交通控制将在未来的交通管理中发挥越来越重要的作用。 智能交通灯的管理比道路建设更加高效,在经济性和通行速度方面具有良好的效益,节约资源,使交管人员能够将更多的精力投入到整个城市交通管控的管理中,带来更大的经济效益。和社会效益,为塑造优美的城市交通形象发挥更大作用。2 设计任务与要求2.1 设计任务通过单片机课程设计,掌握汇编语言的编程方法,理论与实际相结合,提高思考能力和动手能力;通过交通信号灯控制系统的设计,掌握定时器/计数器的使用,及简单程序的编写,将理论知识与实践知识相结合,充分发挥个人能力,在实践中得到锻炼。

2.2设计要求设计一个能控制十二个交通信号灯的模拟系统。利用单片机的定时器使路口的交通信号灯交替亮灭,并用LED灯显示倒计时时间。3总体设计方案概述本次课程设计的主要任务是设计一个复杂的路口交通信号控制系统,模拟交通信号灯系统采用STC 89C52单片机作为核心部件,实现道路交通信号灯的智能控制。一定程度上解决了交通拥堵、车辆等待时间不合理等问题,系统结构简单、可靠性高、成本低、实时性好、安装维护方便,具有广阔的应用前景。3.1显示时间方案选择方案一:采用数码管显示。半导体数码管不仅具有工作电压低、体积小、寿命长、可靠性高的优点,而且响应时间短(一般不超过0.1us),显示精度高。亮度。方案二:采用液晶显示。 液晶显示器最大的优点就是耗电量非常小,但是由于它本身不发光,只是通过反射外界光线来显示字体,所以亮度很差,通过对比以上两种方案,可以明显发现,数码管显示对于红绿灯时间的显示更加合适、可靠,所以选择了方案1。3.2 总体设计总体设计如图1所示。图1 总体设计3.3 总体设计首先,了解实际交通信号灯的变化规律。假设有一个如图(2)所示的路口,东西方向和南北方向的两条主干道在一个路口相交。每条主干道都有一组红色、黄、绿灯指示车辆、行人安全通行。红灯禁止通行,绿灯允许通行。

黄灯亮起,提醒人们注意即将切换的红绿灯状态,黄灯亮起的时间,正是东西南北主干道的公共停车时间。初始状态1,东西绿灯亮,南北红灯亮,禁止通行,人行道开放,行人可以通行。经过一段时间(10秒)后,转入状态2、东西绿灯仍亮,南北红灯仍亮,黄灯开始闪烁,黄灯闪烁几次(5秒),表示交通信号灯状态将换道。然后转入状态3,南北绿灯亮,东西红灯亮,即该方向禁止通行,人行道开放。黄灯灭后,转入至状态4,南北方向仍为绿色,东西方向仍为红色。 黄灯闪烁数次(5秒),表示红绿灯显示状态发生变化,经过一段时间后又循环回到状态1,红绿灯状态表如表1所示(1表示当前红绿灯亮,2表示当前红绿灯灭)。灯亮,0表示灯灭)。 图2 路口示意图 表1 交通信号灯状态表 状态 东 西 北 南 红 黄 绿 红 黄 绿 红 黄 绿 红 黄 绿 10 0 10 0 11 0 01 0 020 1 10 1 11 1 01 1 031 0 01 0 00 0 10 0 141 1 01 1 00 1 10 1 1对于交通信号灯来说,应该有东、西、南、北四组信号灯,但是由于两组同一条道路上的灯显示状态相同,东西方向与南北方向相反,所以只使用一组。 因此可以利用单片机I/O口的P1口的三个引脚来控制三个信号灯。

通过编写程序,实现对发光二极管的控制,模拟红绿灯的管理,经过一段延时时间后,灯的显示会按照红绿灯的显示规则改变状态。4硬件设计 4.1 单片机最小系统 单片机最小系统由单片机、时钟电路、复位电路组成,如图3所示。 图3 最小系统结构图 4.1.1 STC 89C52单片机特性参数 STC 89C52RC单片机 8K字节程序存储空间;512字节数据存储空间;具有2K字节EEPROM存储空间;可通过串口直接下载程序;8K字节程序存储空间;256字节数据存储空间。 增强型8051单片机,6个时钟/机器周期、12个时钟/机器周期任意选择,指令代码与传统8051完全兼容。工作电压:5.5V~3.3V(5V单片机)/3.8V ~2.0V(3V单片机)工作频率范围:0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz;用户应用程序空间8K字节;片内集成512字节RAM;通用I/ O口(32),复位后:P0/P1/P2/P3为准双向口/弱上拉,P0口为开漏输出,用于总线扩展时,不需要上拉电阻。使用时I/O口需要加上拉电阻,设计电路时要注意这一点。 共3个16位定时器/计数器,分别是T0,T1,T2。

4.1.2 STC 89C52RC 主要引脚功能 STC 89C51 芯片如图 4 所示,其芯片主要功能如下: 图 4 STC 89C52 引脚图 VCC:电源电压 GND:地 P0 端口:P0 端口为一组 8 位双向 I/O 端口。端口 P0 可用作地址/数据总线或通用 I/O 端口。端口 P1:P1 是一个带有上拉电阻的 8 级双向 I/O 端口。P1用作通用I/O端口。 P2口:P2为8位双向I/O口,带有上拉电阻 P3口:P3为一组8位双向I/0口,带有部分上拉电阻 RST:复位输入 程序存储使能()输出为外部程序存储器的读选择信号 /VPP:允许外部访问 XTAL1:振荡器反相放大器和外部时钟发生器的输入 XTAL2:振荡器反相放大器和外部时钟发生器的输出:输出 4.1.3 STC 89C52RC89C52 有 6 个中断源包括两个外部中断INT0(P3.2)和INT1(P3.3),三个片内定时器/计数器溢出中断TF0、TF1、TF2和一个片内串行口中断TI或RI。这些中断源由两个特殊功能寄存器TCON和SCON控制。 4.1.4 时钟电路 本设计设计的时钟电路由一个12MHz晶振和两个22PF陶瓷贴片电容组成。

89C52芯片内有高增益反相放大器,组成振荡器,引线XTAL1、XTAL2分别为反相放大器的输入、输出,在两端接一个石英晶体和两个电容,可组成稳定的自激振荡器。电容C1、C2可以稳定振荡频率,也可以微调振荡频率。C1、C2的取值可以在20-100PF之间,这里取的是22PF。电路如图5所示。 图5 时钟电路 4.1 .5 复位电路手动按钮复位需要手动给复位输入RST加一个高电平,一般做法是在RST端和正电源Vcc之间接一个按钮,当手动按下按钮时,+5V电平Vcc的电压将直接加到RST端,手动按钮复位电路如图所示。 无论人移动的速度有多快,按钮都会保持亮起状态,持续数十毫秒,完全可以满足复位时间的要求。通常采用手动复位和上电自动复位相结合的方式,其电路如图所示6.图6 复位电路 4.2 数码显示电路 显示电路可以采用液晶显示或者数码管显示,我采用的是数码管显示电路,由两个共阴极数码管显示,LED为七段显示,由7个条形LED和一个小点形LED组成,每个管的亮与暗根据字符的形状组合成字符,常见的母数码管码表如表2所示。表2 常见负向数码管代码表 x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f 在使用数码管显示的时候,我们有静态和动态两种选择。

静态显示程序简单,显示稳定,但占用端口较多;动态显示占用端口较少,可以节省单片机的I/O口。LED数码管显示原理:数码管有两个使能端:段选和位选,由于是共阴极数码管,所以要选择位,数码管才会亮,至于显示什么数字,只要输入段选的数据即可。通过发送初值传入52单片机的P1口,利用P1口控制段选,通过P3.5、P3.6端口控制位显示,实现动态显示,显示各个灯状态的显示时间8052单片机的P3口三个端口分别接主路红、绿、黄灯,显示亮灯情况,通过两个八段显示器显示每盏灯亮灯时间,使灯光同步与显示时间。 设计中我们采用LED数码管进行动态显示,使用P1口驱动显示,由于使用P1口输出级时数码管显示亮度不够,根据之前学到的知识和经验与前代产品相比,只需强行拔掉P1口,即可消除1K,数码管显示更亮。 电路图如图7所示。 图7 数码管显示电路 其中单片机P口与数码管引脚连接关系如下:P1.0aP1.1bP1.2cP1.3dP1.4eP1.5fP1.6gP1 .7hP3.52P3.61数码管上a、b、c、d、e、f、g、h的位置如图8所示。 图8 数码管 4.3 交通灯显示电路 在本交通灯设计中,主干道的东西南北四个方向有三种信号灯,分别是红、黄、绿。

由于东西方向与南北方向相反,红灯与绿灯相反,所以只需三个端口就可以控制这12盏灯的亮灭。这些灯由红、黄、绿三色代替发光二极管,采用共阳极接法。只要有选择地给这三个端口接低电平,相应的二极管就会亮起来。显示电路如图9所示(当然,不包括数码管)图9 交通信号灯显示电路 4.4 整体电路 将各个模块电路整合在一起,组成系统工作电路,如图10所示。在Altium Designer中画出电路原理图,检查电路无误后,即可在Proteus环境中进行仿真,可以看到整个系统的工作状态,模拟实际红绿灯的工作状态。 图10 整个电路原理图5 软件设计5.1 KEIL C简介KEILC51标准C编译器为8051单片机的软件开发提供了C语言环境,同时保留了高效、快速的汇编代码的特点。C51编译器的功能不断增强,使您更接近CPU本身和其他衍生产品。C51已完全集成到uVision2的集成开发环境中,包括编译器,汇编器,实时操作系统,项目管理器和调试器。uVision2IDE为他们提供了单一灵活的开发环境。C51V7 是最高效、最灵活的 8051 开发平台。它可以支持所有 8051 衍生产品、所有兼容仿真器和其他第三方开发工具。

5.2程序流程图主程序流程图图11主程序图如图11所示,当整个系统电路开始正常工作后,电路的运行状态会按照框图的顺序运行,最后进入循环状态,可以反映交通信号灯的运行状态。中断服务程序流程图当系统电路上电,系统初始化后,程序从主程序开始,进入中断程序,当计数溢出时,产生中断产生的中断信号,会进行红绿灯状态的转换,然后进入下一个状态,最后进入循环,中断程序如图12所示。 图12 中断服务程序流程图 5.3 Keil 调试流程 在 linux 中编译程序代码后Keil,点击Rebuild按钮,刚开始编译的时候,出现几个错误,经过长时间的调试和修改,编译时没有错误,但是有些电路功能还是不能用,快到了,整个程序花了三天时间编译,最后调试好了程序。 编译成功后,首先在Keil中调试仿真,首先点击Start/Stop Debug Session按钮,显示界面如图13。 图13 调试第一步 然后点击Peripherals按钮,选择I/O-Ports -Port3,然后点击Step按钮多次,如图14所示。 图14 调试第二步 因为P3.5、P3.6分别控制公共负数码管的十位和个位,所以上图显示的是P3.6口的变化,表示数码管的某一位正在变化。

最后连续点击Step几次,显示如图15,上面显示的是P3.5的变化,也就是数码管的第十位在变化。 图15 调试第三步 完成后在Keil中调试,进行软件测试,然后就可以进行电路仿真了。 6 系统仿真与实现 6.1 Proteus仿真软件简介 Proteus是全球知名的EDA工具仿真软件。从原理图布局、代码调试到单片机联合仿真及外围电路,一键切换到PCB设计,真正实现从概念到产品的完整设计。是全球唯一集电路仿真软件、PCB设计软​​件、虚拟模型仿真软件于一体的设计平台。 其处理器型号支持8051、HC11、PIC 10/12/16/18/24/30/DsPIC33、AVR、ARM、8086、MSP430等,2010年新增Cortex、DSP系列处理器,后续将增加其他系列处理器型号继续补充。在编译方面,还支持IAR、Keil、MPLAB等。6.2仿真调试流程在Keil中调试好之后,进入proteus进行仿真。首先在proteus中逐个找到需要的元件,画出根据电路需要实现的功能绘制电路原理图,检查电路完全无误后,双击芯片,然后将keil中生成的hex文件导入芯片中,然后点击播放按钮开始电路仿真。其中,交通信号灯在整个周期内有四种工作状态。

状态1:点击播放按钮,电路开始仿真,红绿灯显示如下:东西方向绿灯,南北方向红灯,也就是东西方向的时候且南北方向禁止通行,红绿灯显示状态如图16所示。 图16 状态1 状态2:模拟开始10秒后,黄灯开始闪烁,红绿灯状态发生变化,即,东西、南北方向的交通状态变化如图17所示。 图17 状态2 状态3:状态2下,黄灯开始闪烁5秒后,东、南北方向的交通状态图18 状态3 状态4:状态3的10秒内,东西、南北方向的交通灯状态方向保持不变。 10秒后黄灯开始闪烁,即东西南北方向显示状态发生变化,也就是说打开状态会发生变化,显示某一时刻的状态4如图19。 图19 状态4 黄灯闪5秒后,当前状态即将改变,进入第一个状态,也就是开始进入循环。 6.3 实物制作成功后在proteus中仿真,说明电路原理图和程序代码没有错误,可以按照电路原理图开始做板子了。因为我写程序代码不是很熟练,所以总是会出点问题。尝试改了之后写了很多遍,有些功能还是不能实现,后来看了别人的一些程序,仔细分析了自己的程序,知道自己的程序不合适,最后又重新写了程序。 至于为什么写不出来,我觉得我写程序的时候只是用了别人的程序,并没有去思考为什么要这样写,所以才会犯这样的错误;穿孔板的规格导致穿孔板太小,焊接时无法容纳所有电线,所以必须重新焊接。

结果浪费了一块板子,浪费了一定的时间和精力;而且第二次焊接之后,也没有仔细检查焊接得怎么样,就直接把程序烧录到单片机上了,结果发现我自己动手做了,板子完全没反应,检查后发现是最小系统时钟电路没接地,修改后终于成功做出实物,实物图正反面如图20和图21所示。图20 实物正面因为制作实物的时候没有仔细考虑板子的尺寸,导致有些部分因为没地方放电线,所以没法先焊上去,重新焊上去电路板。焊接前发现无论怎么调电路,总是有飞线,如背面所示。这可能是因为元件布局没有做好。相信不会有制作PCB印刷板时的飞线。 图21 实物背面总之,实物制作过程中有软件方面的问题,也有硬件方面的问题,软件方面主要是程序方面的问题,写程序的时候有时候忘记声明,有时候忘记定义变量直接使用。写程序的时候,符号都是中文环境,最后一个是最难检查的。只有牢记这些教训,才能在以后少走弯路。硬件问题主要在焊接时,焊接前要仔细将元器件摆放合理布局,焊接时要整齐,不能乱七八糟,否则容易造成焊接漏焊,也容易被检查到。6.4 使用说明使用下载器通过下载软件把编译好的程序烧录到单片机中,下载成功后,只要给单片机提供5V电源,按下6脚按钮开关,电路立刻接通,红绿灯即可正常工作。

红绿灯正常工作时,按下4脚按钮开关后立即松开,即按一下复位键,单片机重新开始工作,即红绿灯处于初始状态。7设计总结经过一周的努力,红绿灯终于做成了实物,顿时整个人都松了一口气,现在回想起来,确实味道不一样了,可以说这一周很辛苦了,但收获也是很大的,全面的课程设计让我巩固了之前学到的知识,进一步提升了理解,对已有的知识有了进一步的理解和认识,动手能力也得到了提升在这里,由于自己的能力有限,在课程设计中遇到了很多问题,但都是在查阅相关书籍资料,和身边的同学、学长交流后,才得以一一解决。采用单片机作为核心控制元件,电路可靠性较高,功能强大,系统可随时更新,组合成不同的状态。 但在设计调试过程中也发现了一些问题,如红绿灯规则执行效率不是很高,所设计的系统电路功能还不够完善等,有待进一步改进。实践。当然,通过这次课程设计,我也发现了很多自己的不足。在以后的学习中,我会不断完善自己,不断进步,让自己在单片机编程方面取得长足的进步。我愿意感谢我的导师郝老师,从论文开始到完成,郝老师对论文的每一步都倾注了大量的心血,是他给了我大力的支持和帮助,耐心的咨询和解答我的困惑。他还给了我很多关于就业的建议。

郝先生深厚的专业知识、严谨的治学态度、优良的工作作风、孜孜不倦的师德、严于律己的品德和宽容大度的高尚风范,让我感受到他朴实、平易近人的人格魅力,他是我今后学习、工作和生活的最好榜样。工作和生活!还要感谢我的室友在我最无助的时候帮助了我,焊接过程中非常烦躁,是你们陪着我完成了焊接,一点一点实现了功能。参考文献[1 ]何利民.单片机应用系统设计[M].:航空航天大学,1990:34-35.[2]徐惠民,安定.单片机原理接口及应用[M].:邮电大学,2000 : 126-129. [3] 付晓光. 单片机原理及应用技术[M]. : 清华大学, 2004: 138-141. [4] 魏翔. MCS-51单片机原理及应用[M].:航天大学,2002:55-56. [5]光迪,朱月秀,王秀山.单片机基础[M].:航天大学,2001: 44-47。[6]沙占友,贾毅,马洪涛.集成智能传感器原理及应用[J].电子工业,2004:74-81。[7]魏伟.单片机原理及应用[ [8]余锋,倪红霞.MCS-51系列单片机原理与接口技术[M].:机械工业,2002:174-180.[8]余锋,倪红霞.MCS-51系列单片机原理与接口技术[M].:人民邮电,2004:128-129. [9] 荀元. 单片机实用教程[M].航空航天大学,2006:11-12.

[10]广东.单片机原理与接口技术.华中科技大学,1999:64-71. [11]张超清.单片机原理与接口技术[M].广东工业大学,1999:64-71.航空航天,2005.5。[12]楼然淼等.51系列单片机设计实例[M].航空航天,2003.3。[13]何利民.单片机高级教程[M].大学航空航天大学,2001。[14]肖安. MCS-51单片机原理及应用[M]. 大学。2001.3。[15]肖红兵. 让我用单片机[M]. 大学。航空航天学报, 2002.8. [16] 夏继强. 单片机实验与实习教程[M].航空航天大学,2001. [17]余凤鸣.单片机原理与接口技术[M].中国轻工业,1998. [18]闫实.数字电子技术基础[M].高等教育,2005。

单片机

基于单片机的智能平衡小车设计:自主直立、自动循迹、主动避障

2024-6-9 10:04:55

单片机

嵌入式与单片机的异同及发展趋势,引领计算机系统新时代

2024-6-9 11:05:51

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索