1、武夷学院单片机原理与应用课程设计报告基于单片机的交通灯设计院 系 : 机电工程学院专 业 ( 级 ) : 11电子信息工程(1)班姓 名 : 刀建平学 号 : 20114081063指 导 教 师 : 张淏职 称 : 助教完 成 日 期 : 2013 年 12 月 20 日目 录1 引 言 -12 设计任务与要求 -12.1 设计任务 -12.2 设计要求 -13 方案总体设计 -23.1 显示时间方案的选择 -23.2 总体设计 -23.3 总体设计 -24 硬件设计 -44.1 单片机最小系统 -44.1.1 STC89C52 单片机特性参数 -44.1.2 STC89C52RC 主要引脚
2、功能 -44.1.3 STC89C52RC 的中断源 -54.1.4 时钟电路 -54.1.5 复位电路 -64.2 数码换显示电路 -64.3 红绿灯显示电路 -84.4 整体电路 -95 软件设计 -105.1 KEIL C 简介 -105.2 程序流程图 -105.3 keil 调试过程 -116 系统仿真与实现 -136.1 proteus 仿真软件简介 -136.2 仿真调试过程 -136.3 实物制作 -156.4 使用说明 -177 设计总结 -17谢 辞 -18参 考 文 献 -191基于单片机的交通灯设计1 引 言交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频
3、繁,这点更是体现的淋漓尽致。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显作用。本系统采用单片机 89C52为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强。本设计就是采用单片机模拟十字路口交通灯的各种状态显示以及倒计时时间。本设计系统由单片机 I/O口扩展系统、交通灯状态显示系统、LED 数码显示系统、复位电路等几大部分组成。系统除基本的交通灯功能外,还具有倒计时功能,较好的模拟实现了十字路口可能出现的状况。软件上采用 KEILC编程,主要编写了主程序,LED 数码管显示程序,中断程序延时程序等。经过整机调试,实现了对十字路口交通灯
4、的模拟。中国车辆数量不断增加,交通控制在未来的交通管理中起着越来越重要的作用。智能交通灯的管理比重修一条马路无论在经济、交通运行速率上都有很好的效益、更加节约资源。使交管人员有更多的精力投入到管理整个城市交通控制,带来更大的经济和社会效益,为创造美好的城市交通形象发挥更多的作用。2 设计任务与要求2.1 设计任务通过单片机课程设计,熟练掌握汇编语言的编程方法,将理论联系到实践中去,提高我们的动脑和动手的能力;通过交通信号灯控制系统的设计,掌握定时/计数器的使用方法,和简单程序的编写,把理论知识与实践知识相结合,充分发挥个人能力,并在实践中得到锻炼。2.2 设计要求设计一个能够控制十二盏交通信号
5、灯的模拟系统,:利用单片机的定时器定时,令十字路口的红绿灯交替点亮和熄灭,并用 LED灯显示倒计时间。23 方案总体设计本次课程设计的主要任务是设计复杂的十字路口交通信号灯控制系统, 。本模拟交通信号灯系统利用 STC89C52单片机作为核心元件,实现信号灯对路面交通的智能控制。从一定程度上解决了交通路口堵塞、车辆停车等待时间不合理等问题。系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。3.1 显示时间方案的选择方案一:采用数码管显示,半导体数码管不仅具有工作电压低、体积小、寿命长、可靠性高等优点,而且响应时间短(一般不超过 0.1us) ,亮度也比较高。方
6、案二:采用液晶显示,液晶显示器的最大优点是功耗极小。但是,由于它本身不会发光,仅仅靠反射外界光线显示字形,所以亮度很差。通过上述两种方案的对比,显然可以发现,对于交通灯时间的显示,数码管显示更加适合,可靠,所以选择方案一。3.2 总体设计总体设计如图 1所示。图 1 总体设计图3.3 总体设计首先了解实际交通灯的变化情况和规律。假设一个十字路口如图(2)所示东西、南北两干道交于一个十字路口,各干道有一组红、黄、绿三色的指示灯,指挥车辆和行人安全通行。红灯亮禁止通行,绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西、南北两干道的公共停车时间。初始状态 1东西绿灯通车
7、,南北红灯亮,禁止通车,人行道通行,3行人可过。过一段时间(10 秒)后,转状态 2,东西方向还是绿灯亮,南北方向还是红灯亮,黄灯开始闪烁,黄灯闪几下(5 秒) ,即提示红绿灯状态将发生转换。再转状态 3,南北方向绿灯亮通车,东西方向红灯亮,即此方向禁止通车,人行道可通行。黄灯熄灭后转状态 4,南北方向还是绿灯,东西方向还是为红灯亮,闪几下黄灯(5 秒) ,提示红绿灯显示状态将发生转换。一段时间后,又循环至状态 1。列出交通信号灯的状态表如表 1所示(1 表示灯亮,0 表示灯灭)。图 2 十字路口示意图表 1 红绿灯状态表东 西 南 北状态红 黄 绿红 黄 绿红 黄 绿红 黄 绿1 0 0 1
8、0 0 11 0 01 0 02 0 1 10 1 11 1 01 1 03 1 0 01 0 00 0 10 0 14 1 1 01 1 00 1 10 1 14对于交通信号灯来说,应该有东西南北共四组灯,但由于同一道上的两组的信号灯的显示情况是相同的,而且,东西方向与南北方向显示的状态相反,所以只要用一组就行了,因此,可采用单片机内部的 I/O口上的 P1口中的 3个引脚即可来控制 3个信号灯。通过编写程序,实现对发光二极管的控制,来模拟交通信号灯的管理。每延时一段时间,灯的显示情况都会按交通灯的显示规律进行状态转换。4 硬件设计4.1 单片机最小系统单片机最小系统由一块单片机、一个时钟电
9、路和一个复位电路组成。如图3所示。图 3 最小系统结构图4.1.1 STC89C52 单片机特性参数STC89C52RC单片机8K 字节程序存储空间;512字节数据存储空间;内带2K字节 EEPROM存储空间;可直接使用串口下载;8K 字节程序存储空间;256字节数据存储空间。 增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051. 工作电压:5.5V3.3V(5V 单片机)/3.8V2.0V(3V 单片机) 工作频率范围:040MHz,相当于普通8051的080MHz,实际工作频率可达48MHz; 用户应用程序空间为8K 字节; 片上集成512
10、字节 RAM;5 通用 I/O口(32个) ,复位后为:P0/P1/P2/P3是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为 I/O口用时,需加上拉电阻,设计电路时需要注意这点。 共3个16位定时/计数器,分别为 T0,T1,T2.4.1.2 STC89C52RC 主要引脚功能STC89C51引脚图如图4所示,其主要芯片功能如下所示。图 4 STC89C52引脚图 VCC:电源电压 GND:接地 P0口:P0 口是一组 8位双向 I/O口。P0 口即可作地址/数据总线使用,又可以作为通用的 I/O口使用。 P1口:P1 是一个带内部上拉电阻的 8准位双向 I/
11、O口,P1 作为通用的I/O口使用。 P2口:P2 是一个带有内部上拉电阻的 8 位准双向 I/O口 P3口:P3 口是一组带有内部上拉电阻的 8 位准双向 I/0口 RST:复位输入 Error!程序储存允许(Error!)输出是外部程序存储器的读选通信号 Error!/VPP:外部访问允许 XTAL1:振荡器反相放大器及内部时钟发生器的输入端 XTAL2:振荡器反相放大器及内部时钟发生器的输:出端4.1.3 STC89C52RC 的中断源689C52有 6个中断源,它们是两个外中断 INT0(P3.2)和 INT1(P3.3)、三个片内定时/计数器溢出中断 TF0,TF1,TF2、一个是片
12、内串行口中断 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上加入高电平。一般采用的
13、办法是在 RST端和正电源 Vcc之间接一个按钮。当人为按下按钮时,则 Vcc的+5V电平就会直接加到 RST端。手动按钮复位的电路如所示。由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。通常采用手动复位和上电自动复位结合,其电路如图6所示。图 6 复位电路74.2 数码换显示电路显示电路既可以选用液晶显示器,也可以选用数码管显示。我采用的是数码管显示电路。用 1个二位共阴极数码管显示,LED 是七段式显示器,内部有7个条形发光二极管和 1个小圆点发光二极管组成,根据各管的亮暗组合成字符。共阴数码管的码表为如表 2所示。表 2 共阴数码管码表0 1 2 3 4
14、5 6 7 8 90x3f0x060x5b0x4f0x660x6d0x7d0x070x7f0x6f在用数码管显示时,我们有静态和动态两种选择,静态显示程序简单,显示稳定,但是占用端口比较多;动态显示所使用的端口比较少,可以节省单片机的 I/O口。LED数码管的显示原理:数码管有段选与位选两个使能端,由于采用共阴极数码管,要把数码管点亮,就必须给位选选通,至于显示什么数字,只需给段选输入数据即可。通过给 52单片机 P1口送入初始值,并用 P1口来控制段选位,P3.5、P3.6口来控制位显来实现动态显示,来显示各灯所在状态的显示时间。8052单片机的 P3口的三个端口接主干道的红、绿、黄灯,显示
15、燃亮情况,通过两个八段显示器显示每个灯的燃亮时间,使灯和显示器时间同步。在设计中,我们采用 LED数码管动态显示,用 P1口驱动显示。由于 P1口的输出级时,数码管显示的亮度不够,根据以前学习的知识及学长们的经验,只需给 P1口强势上拉 1K排阻,经实验验证,P1 口上拉 1K排阻后,数码管显示较亮。电路图如图 7所示。8图 7 数码管显示电路其中单片机 P口与数码管各引脚之间的连接关系分别为: P1.0-a P1.1-b P1.2-c P1.3-d P1.4-e P1.5-f P1.6-g P1.7-h P3.5-2 P3.6-1其中 a,b,c,d,e,f,g,h在数码管上的位置如图 8所示。图 8 数码管4.3 红绿灯显示电路在本次交通灯设计中,主干道上东西南北四个方向各三盏灯,分别是红灯、黄灯、绿灯。由于东西方向与南北方向信号相反,红灯与绿灯信号相反,故只