at89c51单片机 交通灯控制系统含源码及仿真图_第1页
at89c51单片机 交通灯控制系统含源码及仿真图_第2页
at89c51单片机 交通灯控制系统含源码及仿真图_第3页
at89c51单片机 交通灯控制系统含源码及仿真图_第4页
at89c51单片机 交通灯控制系统含源码及仿真图_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 模拟交通灯设计报告 目题目题交通信号灯控制系统交通信号灯控制系统 第二组团团研发区队队 2011-11-31 间成完时间成完时 贵州民族学院开放实验室 目 录 一、项目名称 .1 二、选题背景 .1 2.1 课题背景 . 1 2.2 交通灯的历史 . 1 三、单片机简介 .2 3.1 单片机的发展历程 . 2 3.2 单片机的特点: . 3 3.3 AT89C52 单片机简介 . 4 四、设计基本要求和步骤 .5 4.1 基本要求 . 5 4.2 设计步骤 . 6 五、硬件和软件设计 .6 5.1 硬件电路图 . 6 5.2 程序流程图 . 8 主程序 . 8 运行过程 . 9 LED 显示

2、程序 . 10 T0 中断 . 11 INT0 中断 . 11 5.3 P0、P1 口显示状态编码表 . 12 5.4 程序源代码 . 12 5.5 程序运行效果图 . 21 六、心得体会 . 22 七、参考文献 . 错误!未定义书签。 页 1 第 模拟交通灯设计报告模拟交通灯设计报告 一、项目名称 十字路口交通信号灯控制系统 二、选题背景 2.1 课题背景 由于我国经济的快速发展从而导致了汽车数量的猛增,大中型城市的城市交通,正面临着严峻的考验,从而导致交通问题日益严重,其主要表现如下:交通事故频发,对人类生命安全造成极大威胁;交通拥堵严重,导致出行时间增加,能源消耗加大;空气污染和噪声污染

3、程度日益加深等。日常的交通堵塞成为人们司空见惯而又不得不忍受的问题,在这种背景下,结合我国城市道路交通的实际情况,开发出真正适合我们自身特点的智能信号灯控制系统已经成为当前的主要任务。随着电子技术的发展,利用单片机技术对交通灯进行智能化管理,已成为目前广泛采用的方法。 2.2 交通灯的历史 1868 年 12 月 10 日,信号灯家族的第一个成员就在伦敦议会大厦的广场上诞生了,由当时英国机械师德哈特设计、制造的灯柱高 7米,身上挂着一盏红、绿两色的提灯-煤气交通信号灯,这是城市街 页 1 第 道的第一盏信号灯。 1914 年,在美国的克利夫兰市才率先恢复了红绿灯,不过,这时已是“电气信号灯”

4、。稍后又在纽约和芝加哥等城市,相继重新出现了交通信号灯。 随着各种交通工具的发展和交通指挥的需要,第一盏名副其实的三色灯(红、黄、绿三种标志)于 1918 年诞生。它是三色圆形四面投影器,被安装在纽约市五号街的一座高塔上,由于它的诞生,使城市交通大为改善。 中国最早的马路红绿灯,是于 1928 年出现在上海的英租界。 三、单片机简介三、单片机简介 3.1 单片机的发展历程单片机的发展历程 单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。 在 MCS-51 系列单片机中,有两个子系列:51 子系列和 52 子系列

5、。每个子系列有诺干中型号。51 系列有 8051、8751 和 8031 三个型号,后来经过改进产生了 80c51、87c51、80c31 三个型号;52 系列有 5021、8752、8032 三个型号,改进后的型号是80c52/87c52、80c32。改进后的型号更加省电。52 系列比对应的 51系列增加了定时器 T2 并将 页 2 第 内部程序存贮器增加到 8KB。Inter 公司停止生产 MCS-51 系列单片机之后将生产权转让给了许多其他公司,于是出现了许多与 Mcs-51兼容的单片机。现在生产 mcs-51 兼容单片机的公司对其进行了不同程度的改进和提高。我们现在使用比较的多的是 A

6、T89C51/AT89s51等。 通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和 I/O 接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。 单片机经过 1、2、3、3 代的发展,目前单片机正朝着高性能和多品种方向发展,它们的 CPU 功能在增强,内部资源在增多,引角的多功能化,以及低电压底功耗 3.2 单片机的特点: (1)性价比高,开发周期短,易于产品化, (2)集成度高,可靠性好,抗干扰性强, (3)功能完善,接口多样, (4)低功耗、低电压 一般电源供电电压在 53V 范围内单片机都能正常工作,供电的下限可

7、达 12V。 (5)总线多样,易于扩展 单片机外部的典型三总线结构,方便系统构扩展,构成各种规模 页 3 第 的应用系统。外部总线增加了 I2C 及 SPI 等串行总线方式, 可根据需要进行并行或者串行扩展。 3.33.3 AT89C52AT89C52 单片机简介单片机简介 AT89C52 是一种带 4K 字节闪存可编程可擦除只读存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能 CMOS 8 位微处理器,俗称单片机。AT89C2052 是一种带 2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存

8、储器可以反复擦除 1000 次。该器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中,ATMEL 的AT89C52 是一种高效微控制器,AT89C2052 是它的一种精简版本。AT89C 单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 主要特性:主要特性: 与 MCS-51 兼容 4K 字节可编程闪烁存储器 寿命:1000 写/擦循环 数据保留时间:10 年 全静态工作:0Hz-24MHz 三级程序存储器锁定 页 4 第 1288 位内部 RAM 32 可编程 I/O

9、线 两个 16 位定时器/计数器 5 个中断源 可编程串行通道 低功耗的闲置和掉电模式 片内振荡器和时钟电路 四、设计基本要求和步骤四、设计基本要求和步骤 十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多。 4.1 基本要求基本要求 本系统需要采用 MSC-51 系列单片机 AT89C52 作为中心器件来设计交通灯控制器,实现以下功能: 1. 初始东西绿灯亮,南北红灯亮,东西方向通车。 2. 延时 27s,东西路口绿灯熄灭,黄灯闪烁 3 次。 3. 黄灯闪烁后,东西路口红灯亮同时南北路口绿灯亮,南北

10、方向开始通车。 4. 延时 27s,南北方向绿灯灭,黄灯闪烁 3 次,然后又切换成东 页5 第 西方向通车,如此重复。 5. 当发生交通意外(中断产生)时,全部亮红灯,进行交通事故的处理。当事故处理完毕(再次按中断键) ,重新按上述方式工作。 6. 当南北路口的流量大时,可以增加南北路口亮绿灯的时间,当东西路口的流量大时,可以增加东西路口亮绿灯的时间,结束后调回正常状态。 4.2 设计步骤 1.利用 Proteus 7.5 SP3 仿真软件按下列要求绘制仿真实例 ? 用 4 个共阳极 LED 数码管的分别表示东、西、南、北四个方向路口,以数码管的上、中、下 3 个横段分别代表红、黄、绿 3 盏

11、灯 ? 用 P0、P1 口分别输出控制模拟交通灯的状态显示的数码管和倒计时显示数码管的状态码 ? P31、P32、P34P37 控制数码管的位选 ? P20P24 接收中断信号并反馈给 INT0 接口进行中断处理 2.按照基本要求编制程序实现相应功能。 五、硬件和软件设计五、硬件和软件设计 5.1 硬件电路图 硬件电路图通过 Proteus 7.5 SP3 仿真之后如图 1 所示,其中: 按钮 K0 连接 P20 端口实现红灯全亮,处理交通意外 页 6 第 按钮 K1 连接 P21 端口实现南北方向亮灯时间+1s 按钮 K2 连接 P22 端口实现南北方向亮灯时间-1s 按钮 K3 连接 P2

12、3 端口实现东西方向亮灯时间+1s 按钮 K4 连接 P24 端口实现东西方向亮灯时间-1s 整体实验连接电路如下图所示: 图 1 整体连接电路图 页 7 第 5.25.2 程序流程图程序流程图 主程序 开设置中断工作方式、触发方式、初始运行过 N 是否有中断 Y 执行中断 中断结束,退出中断,返回 页 8 第 运行过程运行过程显示程序显示程序LEDDisplay 中断 T0 获取当前通行剩余时间送 E/S/W/N 状态送位选码送 定时计数初值计数 50ms1S(count=20?)判断countTime_SN-;Time_EW- 恢复现场 红灯(27),SN:EW:绿灯 1 (count)加

13、N 秒是否到 3Y l 、h 到否 N Y 红灯黄灯亮,SN:EW:0 清Y Count10?N P0 口 P3 口 EW:红灯黄灯灭,EW:N 0 秒 /十位送倒计时个 Delay 调用 i+;j+ N 四位显示完?返回主程序中断返回LED 显 示 缓 冲 区DISP 是否到Y 口 P1 延时 红灯,EW:SN:绿灯(27) N 秒是否到 3Y Y 红灯 SN:黄灯亮,EW: Count99 N EW1=20 获取中断信息SN_Red=0 SN1-=1 SN120 Y N SN1=99 EW_Red=EW_Add=0 EW1+=1 EW1-=1 EW199 Y Y N N SN1=20 EW

14、1=99 恢复现场 中断返回Y 页 11 第 5.3 P0、P1 口显示状态编码表 P0 编码 备注 P07 P06 P05 P04 P03 P02 P01 P00 1 1 1 1 1 1 1 0 0FEH 红灯 1 0 1 1 1 1 1 1 0BFH 黄灯 1 1 1 1 0 1 1 1 0F7H 绿灯 P1 编码 备注 P17 P16 P15 P14 P13 P12 P11 P10 1 1 1 1 0 0 0 0 0C0H 0 1 1 1 1 1 0 0 1 0F9H 1 1 0 1 0 0 1 0 0 0A4H 2 1 0 1 1 0 0 0 0 0B0H 3 1 0 0 1 1 0

15、0 1 99H 4 1 0 0 1 0 0 1 0 92H 5 1 0 0 0 0 0 1 0 82H 6 1 1 1 1 1 0 0 0 F8H 7 1 0 0 0 0 0 0 0 80H 8 1 0 0 1 0 0 0 0 90H 9 5.4 程序源代码 #include #define uchar unsigned char uchar code a10=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f; uchar code b4=0 x0d,0 x0e,0 x07,0 x0b; /P2 口低有效 uchar cod

16、e c4=0 x6a,0 x66,0 x5c,0 x3c; /P1 口 低电平有效 char SN=35,WE=40; /SN 表示南北方向 主干道 WE 表示东西方向 支干到 页 12 第 char SN_G=35,WE_G=20,Y=5; /sng 表示南北方向的绿灯 weg 表示东西方向的绿灯 uchar i,k=0,count=0; void delay(uchar t); void light(); void led(); void ledthrough(); void leddrive(); sbit K0=P37; /开关 KO sbit K1=P36; /开关 K1 sbit

17、K2=P33; /开关 K2 sbit K3=P35; /开关 K3 sbit K4=P32; /开关 K4 /*程序初始化*/ void init(void) TMOD=0X01; /计数器模式 1 为 16 位计数器 TH1=(65536-50000)/256; TL1=(65536-50000)%6; / 用时 50ms /外部中断为低电平触发 IT0=1; / 允许 T0 ET0=1; 中断 /启动计数器 TR0=1; / EA=1; 总中断 /EX0=1; 允许外部中断 0 1 允许外部中断/ EX1=1; */ 0 中断/*处理程序 interrupt 0 void int0(vo

18、id) 页 13 第 EA=0; /关闭总中断 P1=0 x6c; /东西南北方向为红灯 TR0=!TR0; /计数器停止工作 for(; ;) / 无条件循环 ledthrough(); /调用通行时间显示函数 if(K0=0) 设置南北通行时间/ delay(10); if(K0=0) 执行后面程序 while(!K0) / 当松手时跳出循环 调用通行时间显示函数 ledthrough(); / +1 SN_G+; /南北方向绿灯时间 if(SN_G+Y)=100) 南北通行时间 /100ms 1 时间归/ SN_G=1; 设置东西方向通行时间 / if(K1=0) delay(10);

19、if(K1=0) while(!K1) 执行后面程序 当松手时跳出循环/ ledthrough(); / 调用通行时间显示函数 +1 /WE_G+; 东西时间 if(WE_G+Y)=100) 1 时间归 / WE_G=1; 页 14 第 if(K3=0) / 返回 delay(10); if(K3=0) 执行后面程序 /当松手时跳出循环 while(!K3) ledthrough(); 调用通行时间显示函数 / TR0=!TR0; 启动计数器 / / EA=1; 开总中断 break; / 跳出 /*中断 1 处理程序*/ void int1(void) interrupt 2 P1=0X6C

20、,P0=a0; /东西南北都为红灯 EA=0; / /计数器停止工作 TR0=!TR0; for(;) /leddrive(); 数码管驱动程序 if(K3=0) delay(10); 返回 / if(K3=0) while(!K3) 页 15 第 leddrive(); /数码管驱动程序 EA=1; /启动定时器 TR0=!TR0; break; /*键盘程序*/ void key() if(K0=0) delay(10); if(K0=0) while(!K0) light(); /调用交通灯函数 led(); /调用数码管函数 count=0; /清零 k=0; /南北方向通车 东西方向

21、不通车 SN=SN_G, WE=SN_G+Y; /南北显示时间为绿灯时间东 西方向显示时间为南北绿灯通行时间加黄灯闪亮时间 南北无车而东西有车 if(K1=0) / delay(10); if(K1=0) 页 16 第 while(!K1) light(); led(); count=0; 东西通车 南北不通车 k=2; /南北显示时间为东西绿灯通/,WE=WE_G; SN=WE_G+Y 行时间+黄灯闪亮时间 东西方向显示时间为其绿灯时间 /*定时函数*/ void time1(void) interrupt 1 TH0=0X3C; TL0=0XB0; count+; if(count=20)

22、 SN-; WE-; count=0; if(SN=0|WE=0) k+; if(k3) /当 k3 执行程序 k=0; switch(k) case 0: SN=SN_G,WE=SN_G+Y;break; ,WE=Y;break; case 1: SN=Y ,WE=WE_G;break; case 2: SN=WE_G+Y 页 17 第 case 3: SN=Y,WE=Y;break; /*延时 T 毫秒*/ void delay(uchar t) uchar i; for(t;t0;t-) for(i=2000;i0;i-) */ /*交通灯函数 void light() P1=ck; if(P1=c1&count=0) TH1=(65536-50000)/256; TL1=(65536-50000)%6; P1=0X6E; else if(P1=c3&count=0) TH1=(65536-50000)/256; TL1=(65536-50000)%6; 页 18 第 P1=0X7c; void led() P2=b0,P0=aSN_x0010_; delay(5); P2=b1,P0=aSN/10; delay(5); P2=b2,P0=aWE_x0010_; delay(5); P2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论