基于Proteus的智能交通灯的仿真设计(共24页).doc

上传人:飞****2 文档编号:13893028 上传时间:2022-05-01 格式:DOC 页数:24 大小:153.50KB
返回 下载 相关 举报
基于Proteus的智能交通灯的仿真设计(共24页).doc_第1页
第1页 / 共24页
基于Proteus的智能交通灯的仿真设计(共24页).doc_第2页
第2页 / 共24页
点击查看更多>>
资源描述

《基于Proteus的智能交通灯的仿真设计(共24页).doc》由会员分享,可在线阅读,更多相关《基于Proteus的智能交通灯的仿真设计(共24页).doc(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上摘 要本智能交通灯系统的设计主要是利用单片机和C语言完成共同来完成。首先,系统采用红、黄、绿两组共六个LED发光二极管模拟十字路口东西和南北两个方向的交通信号灯,配有7SEG-MPX6-CC(六位八段共阴极数码管)数码构成倒计时牌,其的控制核心为AT89C51芯片。其次,系统具有处理紧急情况的功能,可以使东西和南北双向红灯,禁止普通车辆通行。最后,系统利用Proteus软件进行了软、硬件的的仿真。关键词: AT89C51单片机 倒计时牌 中断 数码管 目 录毕业设计任务书.I中文摘要. .II1 引言.11.1设计目的及意义.11.2设计的内容.12 设计原理.22.

2、1总体设计方案.22.2硬件设计原理.22.2.1硬件原理图. 22.2.2主要模块电路 3 2.2.2.1控制核心AT89C51单片机芯片3 2.2.2.2 LED数码管显示6 2.2.2.3六路交通灯的模拟8 2.2.2.4其它电路82.3 软件设计原理.92.3.1软件流程图.9 2.3.1.1主流程图 9 2.3.1.2主要子程序流程图102.3.2软件源程序113 基于Proteus的仿真调试及排故.11 3.1 Proteus的仿真软件的介绍11 3.2 主要调试过程.11 3.2.1硬件测试12 3.2.2软件调试123.2.3连调123.3调试时出现的问题及解决方法.124 结

3、论.14致 谢.15附 录.16附录1 硬件连接图.16附录2 源程序.17附录3 共阴极LED数码管字段码表21参考文献221 引言1.1 设计目的及意义交通是一个城市经济的命脉,它不但体现了一个城市的发展活力,也直接与老百姓的生活息息相关。所谓说的“路通财通”就是说明了一个良好的交通环境的重要性。而交通灯在这个交通环境中起着一个重要的角色,智能的交通灯能有效地缓解城市的交通压力,减少交通事故。同时,也能为当地人民节省大量出行时间,创造出更多的社会价值。因而,交通灯不仅能为道路交通顺畅提供保障,而且对当地经济也起着不可估量的作用。因而,本次毕业设计选取智能交通灯的设计。1.2设计内容本设计主

4、要是利用单片机和C语言完成对智能交通灯的设计。故论文主要从以下几方面对本次毕业设计做出说明:第一部分为引言,主要分析本设计的意义和目的,并对本论文的基本内容做了简要说明。第二部分为设计原理说明,主要从硬件和软件设计原理两个方面对智能交通灯的设计作了详细说明。第三部分为调试仿真排故部分,利用Proteus完成对硬件电路和软件程序的仿真调试,并对其中出现的问题及解决方法做了详细介绍。 第四部分为本文结论,说明了本次设的实现情况以及设计后的一些体会。2 设计原理2.1总体设计方案系统的整体设计方案的框图如图2-1所示,其中控制核心为AT89C51。 紧急或特殊情况禁止通行模块7段数码管显示(动态显示

5、)控制模块AT89C51系统6路交通灯控制部分图2-1 系统总体方案框图 本系统以AT89C51单片机为控制核心,采用7SEG-MPX6-CC(六位八段共阴极数码管)显示倒计时。同时,系统利用AT89C51的P1口直接控制六路交通灯模拟显示。系统通过软件控制程序不仅能实交通灯正确燃亮、倒计时牌的正常显示,并且还完成扩展功能的实现,即当有紧急或特殊情况时,南北和东西双向同时禁止通行,并倒计时显示。2.2 硬件设计原理2.2.1 硬件原理图 智能交通灯系统的硬件原理图如图2-2所示。P1.0 P0.0P0.6P1.1 P0.7P1.5 P2.0 P2.1INT0/P3.2 P2.4 P2.5D0a

6、gLED数码管D1DPD5紧急键图2-2 硬件原理图2.2.2主要模块电路2.2.2.1 控制核心AT89C51单片机芯片 AT89C51单片机是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,其系统内具有: 4K字节闪烁可编程可擦除只读存储器,单片机可反复擦除只读存储器100次;128B的数据存储器(RAM,可再外扩64KB); 4个可编程并行I/O口(32根I/O口线)和2个全双工异步(UART)串行口;两个16位定时器/计数器;六个中断源构成的中断系统;具有 4.255.0V 的电压工作范围和 024MHz的工作频率。该芯片使用ATMEL高密度非易失性存储器技术制造,与工业标

7、准的MCS-51 指令集和输出管脚兼容,由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。其中,AT89C51芯片的管脚如图2-3所示:图2-3 AT89C51芯片管脚图(1)AT89C51各管脚的作用功能P0口:P0口是一个8位集电极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。P1口:P1口是一个具有内部上拉电阻

8、的8 位双向I/O 口,P1口输出缓冲器能驱动4 个 TTL 逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1口管脚还具有第二功能,具体功能如表2-1所示。表2-1 具有第二功能的P1口引脚端口引脚第二功能P1.5MOSI(用于ISP编程)P1.6MOSI(用于ISP编程)P1.7MOSI(用于ISP编程) P2 口:P2口是一个具有内部上拉电阻的8 位双向I/O 口,P2口输出缓冲器能驱动4 个 TTL 逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口

9、使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器时,P2 口送出高八位地址。P3 口:是一个具有内部上拉电阻的8 位双向I/O 口,P3口输出缓冲器能驱动4 个 TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。 P3口亦作为AT89C51特殊功能(第二功能)使用,如表2-2所示。表2-2 具有第二功能的P1口引脚管脚第二功能具体功能P3.0RXD串行输入口P3.1TXD串行输出口P3.2INTO外

10、中断0P3.3INT1外中断1P3.4TO定时/计数器0P3.5T1定时/计数器1P3.6WR外部数据存储器写选通P3.7RD外部数据存储器读选通VCC:电源电压GND:地 RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALEPROG():当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE 仍以时钟振荡频率的16 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对F1ash存储器编程期间,该引脚还用于输入编程脉冲(PR

11、OG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH 单元的D0 位置位,可禁止ALE 操作。该位置位后,只有一条M0VX和M0VC指令ALE才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。PSEN()程序储存允许(PSEN())输出是外部程序存储器的读选通信号,当AT89S51 由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN()有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的PSEN()信号。EA()VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000HFFFFH),EA端必须保持低电平(接地)。需注意的是:如果

12、加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。F1ash存储器编程时,该引脚加上+12V的编程电压Vpp。XTAL1:振荡器反相放大器及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。2.2.2.2 LED数码管显示(1) LED数码管引脚及原理LED数码管为7个发光二极管构成的一个“8”字排列,根据其公共端接法不同可分为共阴极和共阳极两种。本设计采用共阴极接法(将所有发光二极管的阴极接到一起,形成公共阴极的数码管,公共端com接低低平,当某一字段发光二极管的阴极为高电平时,相应的字段就点亮,当某一字段发光二级

13、管的阴极为低电平时,相应的字段就不点亮)。其原理图及管脚图如图2-4所示。共阴极字段码表见附录3。(a) 7SEG-MPX6-CA六位八段共阴极数码管管脚图 图2-4六位八段共阴极数码管 (b)共阴极接法图 图2-5 七段数码管引脚图(2) LED显示原理 本设计在南北及东西方向有两个方向故采用一个六位八段共阴极数码管(动态显示)显示。其中左边两位为南北方向的十位和个位显示倒计时,右边两位为东西方向的十位和个位显示倒计时,中间两位为了观察清楚期间空出来。所谓动态显示就是用P2口作位选口、P1口作字段口,即三个LED数码管的字段ag连接在P1口上,四个LED数码管阳极端由P1口控制。其动态显示原

14、理为:P1口送出一个想要显示的字符,P2口送出位控信息允许的那一个LED数码管方可被点亮;依此类推,四个管子是分别被依次点亮一次后,从头再做一次周而复始,由于人的视觉暂留特性,从视觉的角度看三个管子好像为同时点亮。) 2.2.2.3六路交通灯的模拟 P1.0P1.5用于连接发光二极管,另外由于51管脚输出电流太大,所以必须加0.2K排阻用于限流。 系统利用两组红、黄、绿LED发光二极管模拟十字路口东西和南北两个方向的交通信号灯。各灯亮灭状态分别由AT89C51的P1口P1.0P1.5六根线上的输出电平组合来控制,具体为 P1.0接南北向的绿灯,P1.1接南北向黄灯,P1.2接南北向红灯,P1.

15、3接东西向绿灯,P1.4接东西向黄灯,P1.5接东西向红灯。当对应输出线上为低电平时,点亮对应灯,其电平组合见表2-3.1代表灯亮,0代表灯灭南北方向东西方向P1.0P1.1P1.2P1.3P1.4P1.5绿黄红绿黄红001100001010100001010001001100表2-3 P1口电平组合2.2.2.4其它电路(1)晶体振荡电路其振荡电路如图2-6所示C4 30pFX219 XTAL118 XTAL2C1 30pF图2-6晶体振荡电路(2)复位电路通过复位开关,系统进行复位,其电路如图2-7所示9 RST复位C2 1uFR10 1K图2-7复位电路2.3 软件设计原理2.3.1软件

16、流程图 2.3.1.1主流程图 开始外部中断初始化南北方向红绿灯及倒计时显示控制东西方向红绿灯及倒计时显示控制N中断Y调用中断服务子程序 图2-8 主程序图 2.3.1.2主要子程序流程图开始开始送入位选码现场保护送入字段码P1口显示灯的状态南北东西方向都为红灯延时1msLED倒计时显示0结束中断返回图2-10 动态显示子程序图现场恢复图2-9 中断服务子程序图开始南北红灯45s,东西绿灯42s黄灯3s 东西红灯45s,南北绿灯42s黄灯3s结束图2-11 红绿灯显示子程序图2.3.2软件源程序 (见附录2)3、基于Proteus的仿真调试及排故3.1 Proteus的仿真软件的介绍Prote

17、us ISIS 是英国Labcenter公司开发的电路分析与实物仿真软件。它运行Windows操作系统上,可以仿真和分析(SPICE)各种模拟器件和集成电路。该软件具有以下特点:(1) 实现了单片机仿真和SPICE电路相结合。Proteus具有模拟电路仿真、单片机及外围电路组成的系统的仿真、RS232动态仿真、I2C调试器、SPI调试器 、键盘和LED系统仿真的功能;还有各种虚拟仪器,如示波器 、逻辑分析仪、信号发生器等。(2) 支持主流单片机系统的仿真。Proteus目前支持的单片机类型有:68000系列、8051系列(本设计就采用8051系列)、AVR系列、PIC12系列、PIC16系列、

18、Z80系列、HC11系列、ARM7以及各种外围芯片。(3) 提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,可以同时观察各个变量、寄存器等的当前状态,因此在Proteus仿真系统中,也必须具有这些功能;Proteus同时还支持第三方的软件编译和调试环境,如Keil C51集成开发环境(包括Keil u Vision2、Keil u Vision3等)。(4) 具有强大的原理图绘制功能。3.2主要调试过程 调试过程主要有三部分:第一部分先要硬件连接调试;第二部分是软件调试;第三部分是软件和硬件联调,实现智能交通灯的控制。具体步骤为:第一步:在Proteus软件库中,查找相关

19、元器件,并按附录1中所示的电路图接线,并认真检查接线是否有误。第二步:软件测试硬件电路各部分,是否连接正确。第三步:编写源程序,对软件程序进行测试和修改。第四部:软硬件连调,根据问题修改软件。注:第二步完成后,说明硬件电路完全正确,到第四步时不需要在进行硬件检测和修改。3.2.1 硬件测试 首先按照附录1所示接线图连接实际电路,认真检查接线,确保接线正确。然后利用软件测试倒计时显示电路部分和交通等模拟部分连接是否正确。若倒计时现实的数码管,能按测试软件要求正常显示相应数码,则该部分硬件电路无误;若六路LED发光二极管能按照P1口输出的电平组合去亮灭,则该部分硬件电路无误。3.2.2 软件调试。

20、在Keil中将附录2中源程序输入编程环境,并建立新的文件名,将文件名改为*.c的格式放在一个新建的文件夹里,编译查找无错误后,最后生成hex文件(hex文件也在这个新建的文件夹里)。3.2.3 连调点击51单片机,将hex文件加载到protues电路里,接通电源仿真,观察现象。3.3 调试时出现的问题及解决方法 问题一:数码管的LED灯均没有按预想的情况显示数字,而是灯全部未被点亮。原因:单品机的P0口没有接上拉电阻。(因为单片机的P0口输出是一个集电极开路的三极管,若要想驱动数码管,需加以上拉电阻。)解决方法:给单片机的P0口接上10K的上拉电阻。问题二:数码管没有显示一个正确的09数字。原

21、因:软件和硬件使用的数码管不一致(在程序中应用的是六位八段共阴极的数码管,但是在电路图中却用的是7SEG-MPX6-CA(六位八段共阳极的数码管)。 解决方法:将软件和硬件所用的数码管(7SEG-MPX6-CC(六位八段共阴极的数码管)对应一致。问题三:当倒计时正常进行时按下复位键,电路没有任何变化(像预期的倒计时从45s重新开始倒计时,而是继续之前的正常的情况继续倒计时);在按下紧急键后,再按下复位键时,电路也没有任何变化。原因:复位电路的电阻R10阻值10k太大,导致当按键被按下时未向单片机复位端送入高电平。解决方法:将R1的阻值调小至1k。问题四:东西和南北方向的倒计时显示是断断续续的(

22、个位和十位的位码不是同时送到的),及当倒计时上显示34s时,3和4 不是同时显示在数码管上的,而是3显示完之后,4才显示。原因:软件动态显示子程序部分四个数码管上的延迟时间太长(delay(70)),超过了人眼所能辨别的视觉范围1/24s。解决方法:将延迟时间改小为delay(1)。问题四:在程序进入正常运行时,南北方向红灯倒计时45s;东西方向绿灯倒计时42s,黄灯倒计时3s。但是,在东西方向上当黄灯点亮时,绿灯没有灭。原因:在软件设计时,当第一个状态结束,第二个状态开始时,在点亮第二个状态的灯时,没有熄灭第一个状态的灯。解决方法:在进入第二个状态时,在点亮东西方向黄灯之前先将第一个状态东西

23、方向的绿灯灭掉。4、结论经过了为期两个月的的毕业设计设计我首先感觉到的是身心非常的疲惫,但我无怨无悔,因为当我查阅了大量的参考资料和得到老师和同学的帮助后我发觉学到许多在课堂上和书本上所学不到的东西。回顾大学期间的学习,在大二第二学期的单片机C语言编程与实践课程中,我曾对51系列单片机有过一定的学习,而此次实践则强化了我的这一课程理论及相关的技术操作。并且,本设计也很好的实现了智能交通的功能,只是有一小部分还不是很完美,在中端服务部分,虽然自己的设计思路是正确的,但是由于自己的能力有限没能很好的设计出中端的倒计时控制,只能人工控制紧急情况下车辆所要通行的时间。我心里非常的地高兴,通过我这段时期

24、内付出辛劳的成果,也为我大学期间的学习画上一个圆满的句号。我相信,这对我马上进入社会参加工作是很有帮助的。致谢 在这次为期两个月的毕业设计中,我要感谢那些帮助过我的人,特别是我的老师和我们班的同学,他们总在我遇到困难时耐心的帮我直到我搞懂。让我能顺利完成我的毕业设计。要不是他们,我将无法想象我这两个月的生活将如何解决我遇到难题。再次向他们表示感谢。附 录附 录 1硬件接线图附 录 2 源程序 #include#define uint unsigned int#define uchar unsigned char /宏定义/-LED控制-/ uchar code SEG710=0x3f,0x06

25、,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f; /定义字段码uchar code ACT6=0xfe,0xfd,0xfb,0xf7,0xef,0xdf; /定义位选码uchar dongxi,nanbei,f;/-初始化-/void init(void)EX0=1; / 开启外部中断0IT0=1; / 定义触发方式(边沿触发)EA=1; / 开启总中断/-1ms延时子程序-/ void delay(uint k)uint i;while(k-)for(i=0;i121;i+);/-动态显示子程序-/void display(void) for(f=0;f3;

26、dongxi-) /倒计时45s nanbei=dongxi;P1_5=1; P1_1=1; P1_2=0; P1_3=0; /南北红灯亮,禁止通行;东西绿灯亮,通行display(); for(dongxi=3;dongxi0;dongxi-) /倒计时3s nanbei=dongxi;P1_3=1; P1_2=0; P1_4=0;/南北红灯亮,禁止通行;东西黄灯亮,等待display(); /-南北方向红绿灯及倒计时显示-/void nan_bei(void) for(nanbei=45;nanbei3;nanbei-) dongxi=nanbei;P1_2=1; P1_4=1; P1_5

27、=0; P1_0=0; /东西红灯亮,禁止通行;南北绿灯亮,通行display(); for(nanbei=3;nanbei0;nanbei-) dongxi=nanbei;P1_0=1; P1_5=0; P1_1=0; /东西红灯亮,禁止通行;南北黄灯亮,等待display(); /-主函数-/ void main(void) while(1) init(); dong_xi(); nan_bei(); /-中断服务子程序-/void int0(void)interrupt 0 using 0while(1)P1_0=1;P1_1=1;P1_3=1;P1_4=1;P1_2=0;P1_5=0;

28、 /南北东西同时红灯亮,紧急情况通行nanbei=dongxi=0;display();附 录 3 共阴极LED数码管字段码表显示字符hgfedcba字段码0001111113fH10000011006H2010110115bH3010011114fH40110011066H5011011016dH6011111017dH70000011107H8011111117fH9011011116fH参考文献(1) 李全利.单片机原理及应用技术.高等教育出版社,2009(2) 杨俊清.程序设计基础(C语言).西安电子科技大学出版社,2009(3) 丁向荣.单片机C语言编程与实践.电子工业出版社,2009专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁