交通红绿灯模拟系统设计.docx

上传人:小飞机 文档编号:5005280 上传时间:2023-05-29 格式:DOCX 页数:20 大小:422.63KB
返回 下载 相关 举报
交通红绿灯模拟系统设计.docx_第1页
第1页 / 共20页
交通红绿灯模拟系统设计.docx_第2页
第2页 / 共20页
交通红绿灯模拟系统设计.docx_第3页
第3页 / 共20页
交通红绿灯模拟系统设计.docx_第4页
第4页 / 共20页
交通红绿灯模拟系统设计.docx_第5页
第5页 / 共20页
亲,该文档总共20页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《交通红绿灯模拟系统设计.docx》由会员分享,可在线阅读,更多相关《交通红绿灯模拟系统设计.docx(20页珍藏版)》请在三一办公上搜索。

1、东莞理工学院城市学院单片机课程设计报告题目:交通红绿灯模拟系统设计班级:08级电子信息工程学生姓名:学号:指导老师:日期:摘要近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控 制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往 作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构 软硬件结合,加以完善。十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什 么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制 方式很多。本系统采用可编程并行I/O接口芯片89C51为中心器件来设计交通灯 控制器,红绿灯循环点亮

2、,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过PA 口输出,显示时间直接通过8255的PC 口输出全双位数码管);遇到紧急情况需 要转换交通灯状态的可以通过强制将交通灯进行状态切换!本系统实用性强、操 作简单、扩展功能强。关键词:单片机 交通灯 紧急通行目录一、设计的任务与要求 41.1设计任务41.2设计要求41.3设计方案4二、硬件电路设计62.1单片机最小系统62.2电源电路设计62.3数码管显示电路62.4元件清单列表7三、软件设计流程及描述 83.1主程序设计8四、设计调试过程84.1 Keil编程仿真84.2软件调试94.3系统功能调试9五、源程序代码10六、收获体会16七、参考文献

3、17一、设计任务与要求1.1设计任务个十字路口交通灯控制器。用单片机控制LED灯模拟指示。模拟东西方向的十 字路口交通信号控制情况。东西向通行时间为25s,南北向通行时间为30s,缓冲 时间为5s。,模拟交通灯管理。在一个交通十字路口有一条主十道(南北方向), 一条从十道(东西方向),主十道的通行时间比从干道通行时间长,四个路口安装 红,黄,绿,灯各一盏;东图1-11.2设计要求1、设计一个十字路口的交通灯控制电路,要求东西方向(主干道)车道和南北方向(从十道)车道两条交叉道路上的车辆交替运行,时间可设置修改。2、在绿灯转为红灯时,要求黄灯闪烁,才能变换运行车道3、黄灯亮时,要求每秒闪亮一次。

4、1.3设计方案本课程设计是基于AT89C51设计的红绿交通灯。用AT89C51与电阻、电容、开关 等组成单片机的最小系统,AT89C51单片机的P1 口驱动其中三个作为驱动端口驱动 红绿交通灯亮与灭。P1 口是单纯的通用8位准双向1/0端口,每位可驱动4个TTL负载。作为通用I/O端口,与P0端口的区别在于内部具有上拉电阻,所以输出时不用 外接上拉电阻。根据设计的要求可知,系统的硬件原理框图如下图1-2所示。单片机图1-2系统硬件框图单片机可选用AT89C51,它与8051系列单片机全兼容,但其内部带有4KB的FLASH ROM,设计时无需外接程序存储器,为设计和调试带来极大的方便。南北向和东

5、西 向各采用2个数码管计时,同时需要对该方向的指示灯的点亮时间进行倒计时。键 盘系统可以根据系统的需要设置不同的键的个数,可以选择线式键盘或矩阵式键 盘,若单片机的IO 口不够用时,可以考虑扩展8255或8155满足系统的要求。2.软件方案根据设计要求,程序框图如图1所示。软件可由汇编语言完成,也可由C语言完 成。软件设计可以分为以下几个功能模块:主程序:初始化及键盘监控。计时程序模块:为定时器的中断服务子程序,完成0.1秒(或其他时间)和1秒 的时间定时。显示程序模块:完成12个发光二极管和2个LED数码管的显示驱动。图1-3程序流程图二、硬件电路设计2.1单片机的最小系统ATMEL公司生产

6、的AT89C51单片机它是硬件电路的核心部分,时钟电路晶振 使用12MHz,复位电路采取按键复位方式。具体连接图2.1和图2.2图2项单片机系统的时钟由路n-iYi2.2电源电由源用路设计5V直流变压器直接供电。Ji2iVCCVCCGNDGNDVCC图2-22.3数码管显示电路显示电路采用2个共阴数码管,P1 口作为数码管的输入。本次实验用preteus仿真,生成的原件清单如下表2-1Bill Of Materials For u四-邠Fu.DSNDesign Title:四-邠盘L.DSNAuthor:RevisionH Design CreatedU 2008仓 120A11、。Desig

7、n Last ModifU Q 2011仓 6OA20ETotal Parts In Desigd Q 1612 CapacitorsQuantity: ReferencesC1, C2Value33pFOrder CodeFarnell 498-5551 Integrated CircuitsQuantity: References1U1ValueAT89C51Order Code12 DiodesQuantity:ReferencesValueOrder Code-4_ - 4_ - 4_Quantity: ReferencesValueOrder CodelD1, D4, D7,前 iL

8、ED-REDlD2, D5, D8, 5T1| LED-YELLOW D3, D6, D9, DU LED-GREEN 1 MiscellaneousCRYSTAL 三、软件设计流程及描述3.1主程序设计3-1系统程序流程图四、设计调试过程4.1 Keil编程仿真根据设计系统流程图,用C语言把程序所要达到的功能描述出来,经过编译无误 后再和Preteus联调。=j File Edit Viuchar k;uint i:for(:iU:i)刈 led - ision3 - C:UsersCHENDesktoProject Workspace日臼Target 1300曰/*宗时中断孑两思*/301

9、 void xt imerO () int302 曰TH0=0x4c;TL0=0x00;308曰/*砌于函309 void delayO (uint z)310 uint i, j;delay(.uchar j)Build target Target 1 coniling Texcl. c. linking.Program Size: data=10.0 xdata=0 code=93 creating hex file from led.led - 0 Error(s), 0 Warning(s).3 H I I I ! Build 人 Command Find in Files /4-1

10、Keil编译仿真图Jim4.2软件调试 软件调试主要是利用proteus仿真软件完成电路的搭建,运行以发现设计中的错 误及时改正。把电路图画完以后双击芯片89C51,在弹出的对话框(如图4-2所 示)中,点击回,然后选择刚刚用Keil编译时产生的HEX文件,最后单击运 行就可以看到系统的运行情况了(如下图4-2)。图4-2系统模拟仿真图如下:主控电路DfiE&NZHLON图4-34.3系统功能调试确的做出来,没有键盘电路,紧急情况也可以通过一个按钮来采取相关的动作。 下图是摁下南北紧急通行按钮后电路显示情况:淤电信r诳藤蔓阔主控电路主干道wee :A:XTAL1pnrvADDPD.Iih.DI

11、PDih.DZXTALZPDJh.eqPD.4i,.Hl +PDSiADSPD.GH.DhRE:TPD.T/ADTpzo-hePI.IihAPZh.IDPE:EMpzjh.hALEPZ.WA1ZEkPZS.h.OP2J9A14-PZ.7/A1SpmpinPjCDpi.i叩.1E: DP13pinmP1.4,P3.4/TOP1P35T1P1J5P1.7pi.sfirnrPl.TiKF,:一个状态::王干道亮绿灯:27S、支干道亮红灯::*:状态:i干道:支干道均亮红灯:5S:*:时电路处于紧急状态,只允许南北通行!:: TE:T:-*第三个状态: 主干道黄灯闪烁、支干道红灯闪烁* I*第四个状态

12、:主十道亮红灯、支十道亮绿灯22S*第五个状态:主十道红灯闪烁、支干道黄灯闪烁*返回到第二个状态*其中外部中断INTO、INT1分别控制主、支十道亮绿灯*/* 11.0592MHz 晶振*/#include/头文件#include/头文件#define uchar unsigned char/宏定义#define uint unsigned int/宏定义sbitRED_ZHU=P1”0;sbitYELLOW_ZHU=P11;sbitGREEN_ZHU=P1”2;sbitRED_ZHI=P13;sbitYELLOW_ZHI=P1”4;sbitGREEN_ZHI=P5;uint aa, bai,

13、shi,ge,bb;/*数码管显示0-9*/uint code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/*子函数声明*/void delay(uint z);void delay0(uint z);void display(uint ge,uint shi);void xtimer0();void check();void init1();void init2();void init3();void init4();void init5();void xint0();void xint1();void GREEN_ZHU

14、_ON();void GREEN_ZHI_ON();*主函数*/void main()(EA=1;/开中断EX0=1;/允许外部中断INT0中断IT0=0;/定义INT0触发方式PX0=1;/中断优先级高EX1=1;/允许外部中断INT1中断IT1=0;/定义INT1触发方式PX1=1;/中断优先级高check();/开机自检init1();/第1个状态while(1)(init2();/第2个状态init3();/第3个状态init4();/第4个状态init5();/第5个状态void init1()/第一个状态:主十道、支十道均亮红灯5S(int temp;temp=6;/变量赋初值TM

15、OD=0x01;/定时器T0工作于方式1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开中断ET0=1;/开定时中断TR0=1;/开定时器T0while(1)(RED_ZHU=0;RED_ZHI=0;GREEN_ZHU=1;GREEN_ZHI=1;YELLOW_ZHU=1;YELLOW_ZHI=1;if(aa=20)/定时 20*50MS=1S(aa=0;/定时完成一次后清0temp-;/变量自减if(temp0)(break;shi=temp%100/10;/显示十位ge=temp%10;/显示个位display(ge,shi);void init2()/第二个状态:主十道亮

16、绿灯27S、支十道亮红灯(int temp;temp=31;/变量赋初值TMOD=0x01;/定时器T0工作于方式1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开中断ET0=1;/开定时中断TR0=1;/开定时器T0while(1)(RED_ZHU=1;RED_ZHI=0;GREEN_ZHU=0;GREEN_ZHI=1;YELLOW_ZHU=1;YELLOW_ZHI=1;if(aa=20)/定时 20*50MS=1S(aa=0;/定时完成一次后清0 temp-;/变量自减if(temp=3)(break;shi=temp%100/10;/显示十位ge=temp%10;/显示个

17、位display(ge,shi);void init3()/第三个状态:主十道黄灯闪烁、支十道红灯闪烁(int temp;temp=4;/变量赋初值TMOD=0x01;/定时器T0工作于方式1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开中断ET0=1;/开定时中断TR0=1;/开定时器T0while(1)(GREEN_ZHU=1;if(aa=20)/定时 20*50MS=1S(aa=0;/定时完成一次后清0temp-;/变量自减YELLOW_ZHU=YELLOW_ZHU;RED_ZHI=RED_ZHI;if(temp0)(break;shi=temp%100/10;/显示十

18、位ge=temp%10;/显示个位display(ge,shi);void init4()/第四个状态:主十道亮红灯、支十道亮绿灯22S(int temp;temp=26;/变量赋初值TMOD=0x01;/定时器T0工作于方式1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开中断ET0=1;/开定时中断TR0=1;/开定时器T0while(1)(RED_ZHU=0;RED_ZHI=1;YELLOW_ZHU=1;GREEN_ZHI=0;if(aa=20)/定时 20*50MS=1S(aa=0;/定时完成一次后清0temp-;/变量自减if(temp=3)(break;shi=te

19、mp%100/10;/显示十位ge=temp%10;/显示个位display(ge,shi);void init5()/第五个状态:主十道红灯闪烁、支干道黄灯闪烁(int temp;temp=4;/变量赋初值TMOD=0x01;/定时器T0工作于方式1TH0=0x4c;TL0=0x00;/定时器赋初值EA=1;/开中断ET0=1;/开定时中断TR0=1;/开定时器T0while(1)(RED_ZHI=1;GREEN_ZHU=1;GREEN_ZHI=1;if(aa=20)/定时 20*50MS=1S(aa=0;/定时完成一次后清0 temp-;/变量自减 YELLOW_ZHI=YELLOW_ZH

20、I;RED_ZHU=RED_ZHU;if(temp0)(break;shi=temp%100/10;/显示十位ge=temp%10;/显示个位display(ge,shi);/*显示子函数*/void display(uint ge,uint shi)(P0=0xfd;P2=tableshi;/显示十位delay0(5);P0=0xfe;P2=tablege;/显示个位delay0(5);void xint0() interrupt 0 /外部中断 INT0(GREEN_ZHU_ON();void xint1() interrupt 2 /外部中断 INT1(GREEN_ZHI_ON();vo

21、id GREEN_ZHU_ON()/外部中断INT0显示子程序 (RED_ZHI=0;RED_ZHU=1;GREEN_ZHI=1;GREEN_ZHU=0;YELLOW_ZHI=1;YELLOW_ZHU=1;P0=0x00;P2=0Xff;delay0(1000);return;void GREEN_ZHI_ON()/外部中断INT1显示子程序(RED_ZHI=1;RED_ZHU=0;GREEN_ZHI=0;GREEN_ZHU=1;YELLOW_ZHI=1;YELLOW_ZHU=1;P0=0x00;P2=0xff;delay0(1000);return;void check()/开机自检子程序(

22、RED_ZHI=0;RED_ZHU=0;GREEN_ZHI=0;GREEN_ZHU=0;YELLOW_ZHI=0;YELLOW_ZHU=0;P0=0x00;P2=0Xff;delay(2);RED_ZHI=1;RED_ZHU=1;GREEN_ZHI=1;GREEN_ZHU=1;YELLOW_ZHI=1;YELLOW_ZHU=1;P0=0xff;P2=0xff;/*定时中断子函数*/void xtimer0() interrupt 1(TH0=0x4c;TL0=0x00;aa+;/*延时子函数*/void delay0(uint z)(uint i,j;for(i=0;iz;i+)for(j=0

23、;j0;j-)(for(i=1250;i0;i-)(for(k=180;k0;k-);六、收获体会这次单片机课程设计历时一个星期左右的时间,由于期间还要复习考试,所 以在设计之初有准备有点仓促。在这次设计过程里我们体验了从设计单片机流程 图、用preteus画电路图、用C语言编程、到仿真调试的整个过程。对于交通灯这个题目,由于以前学单片机这个课程时,做过类似相关的实验, 觉得这个比较简单而且做出的东西也比较直观,在确定题目之后,查阅了大量的 资料,初步完成了电路设计方案。接着就是用preteus这个软件来画电路板,这个软件的应用在学期中时胡老师 已经叫我们安装并大概了解了起使用方法,但是学的时

24、候感觉很简单,但是到了 具体设计的时候,问题不断的出来,比如有的元器件的英文名字不认识,到库里 面找的时候花了很大的力气,最后想到了去百度里面搜索,想不到百度功能真是 强大,一下子就查出来了,看来互联网技术的魔力无处不在。下来就是程序的设计了,虽然感觉交通灯程序没什么难的,就是数码管倒计 时显示加几个闪烁的二极管就完事,但是也许是起初想的太简单,设计时到了细 节处,也出了不少问题,而且很难被检查出来,但是最后经过我们的不断努力, 还是写出来正确的代码。通过这次课设,对以前学过的知识进行了巩固,加深了理解,提高了应用的 能力,而且提高了我们的发现、分析、解决问题的能力。经历了从最初的设计到 最后做出产品的开发过程,提高了对专业的认识及兴趣,对于我们工科来说,对 以后就业有及其重大的影响。七、参考文献1 徐维祥.单片微型机原理及应用大连理工大学出版社,2006.122 胡汉才.单片机原理与接口技术M.北京:清华大学大学出版 社,2004.1-505.3 闫胜利.Altium Designer 6. X中文版使用教程 电子工业出版社2007.6

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号