1、 单片机课程设计带时间显示的交通灯设计系 、 部: 学生姓名: 指导教师: 职称 专 业: 电气自动化技术 班 级: 学 号: 完成时间: 2011-11-24 1目录目录 117 第一章 引 言 .1第一章 引 言 21.1:传统交通灯的简介 21.2 基于单片机的智能交通灯控制系统设计的意义 2第二章 设计流程 .42.1 设计目的 42.2 片机实现交通灯的任务 4第三章 硬件设计 .53.1 AT89S52 单片机简介 53.2 AT89S52 单片机的主要性能参数 53.3AT89S52 芯片内部结构简介 .53.4 主要引脚功能 7第四章 系统源程序 10第五章 系统仿真图 15第
2、六章 课设总结 16参考资料 .17致谢 .17附录:原理图 172第一章 引 言1.1:传统交通灯的简介在今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这一技术在 19 世纪就已出现了。1858 年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868 年,英国机械工程师,纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两灯以旋转式方形玻璃提灯组成,红色表示“停止” ,绿色表示“注意” 。1869 年 1 月 2 日,煤气灯爆炸,使警察受伤,遂被取消。191
3、4 年,电气启动的红绿灯出现在美国。这种红绿灯由红绿黄三色圆形的投光器组成,安装在纽约市 5 号大街的一座高塔上。红灯亮,表示“停止” ,绿灯亮,表示“通行” 。而中国最早的马路交通灯却是诞生于 1928 年的上海英租界。从最早的手牵皮带到 20 世纪 50 年代的电气控制,从采用计算机控制到现代化的电子定时监控,交通信号灯在科学化、自动化上不断地更新、发展和完善。但是,随着社会的不断进步,传统的交通灯的缺陷也日益出现,其中设计过于死板,达不到道路的最大通行效率是最明显的问题,红绿灯交替变换时间过于程式化。随着我国经济的高速发展,人们对各种交通车辆的需求量不断增大,城市的交通拥护问题日益严重,
4、目前,大部分城市的十字路口的交通控制灯,通常的做法是:事先经过车辆流量的调查,利用传统的方法设计好红绿灯的延时,然而,实际上的车流量是不断变化的,有的路口在不同的时间段车流量的大小甚至有很大的差异,所以说,统计的方法已不能适应迅速发展的交通现状。1.2 基于单片机的智能交通灯控制系统设计的意义 目前,国内的交通灯一般设在十字路门,在醒目位置用红、绿、黄三种颜色的指示灯。加上一个倒计时的显示计时器来控制行车。对于一般情况下的安全行车,车辆分流尚能发挥作用,但根据实际行车过程中出现的情况,还存在以下缺点:1两车道的车辆轮流放行时间相同且固定, 在十字路口,经常一3个车道为主干道,车辆较多,放行时间
5、应该长些;另一车道为副干道,车辆较少,放行时间应该短些。2没有考虑紧急车通过时,两车道应采取的措施,臂如,消防车执行紧急任务通过时,两车道的车都应停止,让紧急车通过。针对道路交通拥挤,交叉路口经常出现拥堵的情况。利用单片机控制技术提出了软件和硬件设计方案及两点改进措施:1、根据各道路路口车流量的大小自动调节通行时间。2、考虑特殊车辆通行情况,设计紧急切换开关。4第二章 智能交通灯控制系统设计流程目前,国内的交通灯一般设在十字路门,在醒目位置用红、绿、黄三种颜色的指示灯。加上一个倒计时的显示计时器来控制行车。对于一般情况下的安全行车,车辆分流尚能发挥作用,但根据实际行车过程中出现的情况,还存在以
6、下缺点:1两车道的车辆轮流放行时间相同且固定, 在十字路口,经常一个车道为主干道,车辆较多,放行时间应该长些;另一车道为副干道,车辆较少,放行时间应该短些。2没有考虑紧急车通过时,两车道应采取的措施,臂如,消防车执行紧急任务通过时,两车道的车都应停止,让紧急车通过。2.1、设计目的1巩固单片机技术课程所学的有关知识。2 通过硬件设计、软件设计,使学生掌握用单片机组成应用系统的方法,提高软件设计能力。3 掌握单片机用于各种功能控制的方法。4 学会产品设计方法。2.2 单片机实现交通灯的任务系统完成内容如下:1 南北方向:绿灯亮 30S 放行,黄灯亮 4S 警告,然后红灯亮 54S 禁止。2 东西
7、方向:绿灯亮 50S 放行,黄灯亮 4S 警告,然后红灯亮 34S 禁止。3南北方向红灯亮时,同时用 2 位 LED 进行 54S 递减时间显示。4东西方向红灯亮时,同时用 2 位 LED 进行 34S 递减时间显示。5单片机程序设计、调试。5第三章智能交通灯控制系统的硬件设计3.1 AT89S52 单片机简介AT89S52 是美国 ATMEL 公司生产的低功耗,高性能 CMOS8 位单片机,片内含 4k bytes 的可系统编程的 Flash 只读程序存储器 ,器件采用 ATMEL 公司的高密度、非易失性存储技术生产,兼容标准 8051 指令系统及引脚。它集 Flash 程序存储器 既可在线
8、编程(ISP)也可用传统方法进行编程及通用 8 位微处理器于单片芯片中,ATMEL 公司的功能强大,低价位 AT89S52 单片机可为您提供许多高性价比的应用场合,可灵活应用于各种控制领域。3.2 AT89S52 单片机的主要性能参数与单片机产品兼容 8K 字节在系统可编程 Flash 存储器、 1000 次擦写周期、全静态操作:0Hz 33Hz、三级加密程序存储器、 32 个可编程 I/O 口线 、三个16 位定时器/计数器 八个中断源 、全双工 UART 串行通道低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符。3.3AT89S52 芯片内部结构简介中央处理器:
9、中央处理器(CPU)是整个单片机的核心部件,是 8 位数据宽度的处理器,能处理 8 位二进制数据或代码,CPU 负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。数据存储器(内部 RAM):数据存储器用于存放变化的数据。AT89S52 中数据存储器的地址空间为 256个 RAM 单元,但其中能作为数据存储器供用户使用的仅有前面 128 个,后 128个被专用寄存器占用。程序存储器(内部 ROM):程序存储器用于存放程序和固定不变的常数等。通常采用只读存储器,且其又多种类型,在 89 系列单片机中全部采用闪存。AT89S52 内部配置了 4KB 闪6存。定时/计数器(
10、ROM):定时/计数器用于实现定时和计数功能。AT89S52 共有 2 个 16 位定时/计数器。并行输入输出(I/O)口:8051 共有 4 组 8 位 I/O 口(P0、 P1、P2 或 P3),用于对外部数据的传输。每个口都由 1 个锁存器和一个驱动器组成。它们主要用于实现与外部设备中数据的并行输入与输出,有些 I/O 口还有其他功能。全双工串行口:A89S51 内置一个全双工串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。时钟电路:时钟电路的作用是产生单片机工作所需要的时钟脉冲序列。中断系统:中断系统的作用主要是对外部或内部的终端请
11、求进行管理与处理。AT89S52共有 5 个中断源,其中又 2 个外部中断源和 3 个内部中断源。7图一 AT89S52 系列单片机的内部结构示意图3.4 主要引脚功能AT89S52 引脚图如图二 所示:图二引脚图VCC:电源电压GND:地P0 口:P0 口是一组 8 位漏极开路型双向 I0 口,也即地址数据总线复用口。作为输出口用时,每位能驱动 8 个 TTL 逻辑门电路,对端口写“l”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低 8 位)和数据总线复用,在访问期间激活内部上拉电阻。P1 口:Pl 是一个带内部上拉电阻的 8 位双向 IO 口,Pl 的输
12、出缓冲级可驱动(吸收或输出电流)4 个 TTL 逻辑门电路。对端口写“l” ,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL) 。Flash 编程和程序校验期间,Pl 接收低 8 位地址。表 1 具有第二功能的 P1 口引脚端口引脚 第二功能:8P1.5 MOSI(用于 ISP 编程)P1.6 MOSI(用于 ISP 编程)P1.7 MOSI(用于 ISP 编程)P2 口:P2 是一个带有内部上拉电阻的 8 位双向 IO 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个 TTL 逻辑门电路。对端口写“
13、1” ,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL) 。在访问外部程序存储器或 16 位地址的外部数据存储器(例如执行 MOVXDPTR 指令)时,P2 口送出高 8 位地址数据。在访问 8 位地址的外部数据存储器(如执行 MOVXRi 指令)时, P2 口线上的内容(也即特殊功能寄存器( SFR)区中 P2 寄存器的内容) ,在整个访问期间不改变。 Flash 编程或校验时,P2 亦接收高位地址和其它控制信号。P3 口:P3 口是一组带有内部上拉电阻的 8 位双向 I0 口。P3 口输出缓冲级可驱动
14、(吸收或输出电流)4 个 TTL 逻辑门电路。对 P3 口写入“l ”时,它们被内部上拉电阻拉高并可作为输入端口。作输入端时,被外部拉低的 P3 口将用上拉电阻输出电流(IIL ) 。P3 口除了作为一般的 I0 口线外,更重要的用途是它的第二功能,如下表所示:表 2 具有第二功能的 P1 口引脚端口引脚 第二功能:P3.0 RXD(串行输入口)P3.1 TXD(串行输出口)P3.2 /INT0(外中断 0)P3.3 / INT1(外中断 1)P3.4 T0(定时计数器 0 外部输入)P3.5 T1(定时计数器 1 外部输入)P3.6 / WR(外部数据存储器写选通)P3.7 / RD 外部数
15、据存储器读选通)P3 口还接收一些用于 Flash 闪速存储器编程和程序校验的控制信号。RST:复位输入。当振荡器工作时,RST 引脚出现两个机器周期以上高电平将使单片机复位。WDT 溢出将使该引脚输出高电平,设置 SFR AUXR 的DISRT0 位(地址 8EH)可打开或关闭该功能。DISRT0 位缺省为 RESET 输出9高电平打开状态。ALEError!:当访问外部程序存储器或数据存储器时,ALE (地址锁存允许)输出脉冲用于锁存地址的低 8 位字节。即使不访问外部存储器,ALE 仍以时钟振荡频率的 16 输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的是:每当访问外
16、部数据存储器时将跳过一个 ALE 脉冲。对 F1ash 存储器编程期间,该引脚还用于输入编程脉冲( PROG) 。如有必要,可通过对特殊功能寄存器(SFR)区中的 8EH 单元的 D0 位置位,可禁止 ALE 操作。该位置位后,只有一条 M0VX 和 M0VC 指令 ALE 才会被激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置 ALE 无效。Error!程序储存允许(Error! )输出是外部程序存储器的读选通信号,当 AT89S52 由外部程序存储器取指令(或数据)时,每个机器周期两次 Error!有效,即输出两个脉冲。当访问外部数据存储器,没有两次有效的Error!信号。Er
17、ror!VPP:外部访问允许。欲使 CPU 仅访问外部程序存储器(地址为 0000HFFFFH) ,EA 端必须保持低电平(接地) 。需注意的是:如果加密位LB1 被编程,复位时内部会锁存 EA 端状态。如 EA 端为高电平(接 VCC 端) ,CPU 则执行内部程序存储器中的指令。F1ash 存储器编程时,该引脚加上+12V的编程电压 Vpp。XTAL1:振荡器反相放大器及内部时钟发生器的输入端。10第四章 智能交通灯系统源程序/智能交通信号灯程序#include#define uchar unsigned char#define uint unsigned intvoid Disp(uin
18、t disp_value);void Bcd(uint bcd_value);void Delay_ms(uint delay);bit flag1;sbit p32=P32;uint cunt;/累计中断次数变量uchar code LED_Val=0xc0,0xf9,0xa4,0x0b0,0x99,0x92,0x82,0x0f8,0x80,0x90;/0-9 共阳极/uchar code LED_Val=0x3f,0x06,0x5b,0x04f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;/0-9 共阴极uchar data num2;uchar data led_poin
19、t4=0xfe,0xfd,0xfb,0xf7;/三极管控制数码管的信号void pass_a(uint time);void pass_b(uint time);void stop_ab(void);uint second;sbit p10=P10;sbit p11=P11;sbit p12=P12;sbit p13=P13;sbit p14=P14;sbit p15=P15;sbit p16=P16;sbit p20=P20;sbit p21=P21;sbit sa=P30;sbit sb=P31;sbit p35=P35;/void System_Init()/中断初始化 定时器初始化/中
20、断11EA=1; /CPU 开放中断EX0=1; /允许外部中断 0(INT0)EX1=1;IT0=1; /边沿触发方式IT1=1;PX0=1; /优先级PX1=1;/定时器TMOD=0x10; /方式 1(16 位定时器)TH1=-50000/256; /50msTL1=-50000%256;ET1=1; /定时器 1(P3.5)允许溢出中断TR1=1; /定时器 1 运行/void Delay_ms(uint delay)/延时uchar j;while(delay-)for(j=125;j0;j-);/void Disp(uint disp_value)uchar i;P2=1;Bcd(
21、disp_value);for(i=0;i5)P1=0xde;elseP1=0xdd;void pass_b(uint time) /B 路口状态 30 秒uint i=1;second=0;while(i)i=time-second;Disp(i);if(i5)P1=0xf3;elseP1=0xeb;void stop_ab(void) /通过紧急车辆状态while(flag1)P1=0xdb;Disp(0);14/void main()System_Init();flag1=0;cunt=0;P2=1;while(1)if(flag1)stop_ab();elsepass_a(60);pa
22、ss_b(30);Disp(60);15第五章 系统仿真图XYAL1XTAL2XTAL1XTAL2P10P123P145P167P01P023P045P067P201P23P245P267P301INT0I1T01RSTRSTINT0P30P31P10 P1 P12 P13 P14 P15P01P023P045P06P01P023P045P06 P20 P21P0P01P02P03P04P05P06XTAL218XTAL119ALE301PSN29RST9P0./AD039.1/18P0.2/AD237.3/36P0.4/AD435.5/54P0.6/AD63.7/72P1.0.P1.2.3P
23、1.4.5P1.6.78P3.0/RXD10.1/TP3.2/IN012./IT13P3.4/014P3.7/RD17.6/W6.5/T15P2.7/A1528P2.0/A821.1/9P2./A023.3/14P2.4/A225.5/136.6/47U1AT89C51X1CRYSTALC127pFC227pFR11kC32uR2240D1LE-GREN D3LE-REDD2LE-YELOW 4LED-GREN D5LE-REDD6LE-YELOWR3240R240R5240R6240R7240R8240R924016第六章 课设总结这次课程设计历时一个星期,通过这个星期的学习,发现了自己的很
24、多不足,无论是对知识的理解还是实践能力以及理论联系实际的能力还急需提高。在这个过程中,我也曾经因为错误失落过,也曾经因为小有成绩而热情高涨。正如生活一样,汗水预示着结果也见证着收获。虽然这只是一次的极简单的课程设计,可是平心而论,也耗费了我们不少的心血,这才意识到老一辈对我们社会的付出,为了人们的生活更美好,他们为我们社会所付出多少心血啊!通过这次课程设计,我感到:为完成这次课程设计我们确实很辛苦,但苦中仍有乐,和团队人员这几天的一起工作的日子,让我们有说有笑,相互帮助,配合默契,多少人间欢乐在这里洒下,大学里一年的相处还赶不上这十来天的设计,我感觉我和同学们之间的距离更加近了。这个工程确实很累,但当我们实验成功的时候,我们的心中就不免兴奋,不免激动。以前种种艰辛这时就变成了最甜美的回忆!对我而言,知识上的收获重要,精神上的丰收更加可喜。让我知道了学无止境的道理。我们每一个人永远不能满足于现有的成就,人生就像在爬山,一座山峰的后面还有更高的山峰在等着你。挫折是一份财富,经历是一份拥有。这次课程设计必将成为我人生旅途上一个非常美好的回忆!17参考资料1李广弟,朱月秀,王秀山编著.单片机基础. 北京:北京航空航天大学出版社,20012 马忠梅 编著 单片机的 C 语言应用程序额设计北京:北京航空航天大学出版社,2001致谢廖代文 老师18