1、1TheUniversity of South China单片机课程设计题 目 51 单片机的交通灯控制系统设计学院名称电 气 工 程 学 院指导教师朱 卫 华班 级 电 子 071 班 学 号 20074470149学生姓名徐沙利2010 年 6 月 19 日2摘要:在日常生活中,交通信号灯的使用,市交通得以有效管理,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。交通灯控制系统由 80C51 单片机、键盘、LED 显示、交通灯延时组成。系统除具有基本交通灯功能外,还具有时间设置、LED 信息显示功能,市交通实现有效控制。关键词:交通灯,单片机,自动控制Abstract: in
2、the daily life, the use of traffic lights, traffic management, and to be effective, improve road relieves traffic flow capacity, reduce the number of traffic accidents has obvious effect. 80C51 SCM by traffic control system, the keyboard, the LED display, traffic delays. Besides the basic traffic sy
3、stem function outside, still have time to set, the LED display function effectively, city traffic control.Keywords: light, SCM, automatic control3目录一、引言 4二、概要设计 52.1 设计思路 52.2 总体设计框图 5三、硬件设计 63.1LED 循环电路设计 63.1.1 89cs51 单片机概述 63.1.2 80C51 单片机的时钟93.1.3 80C51 的封装和引脚113.2.1LED 循环灯的说明.14四软件按设计 154.1 程序流
4、程图:154.2 LED 红绿灯显示 17五总结 17参考文献 18附录一:程序源代码.18附录二:PCB图244基于 51 单片机的交通灯控制系统设计一、引言当今,红绿灯安装在个个道口上,已经成为疏导交通车辆最常见和最有效的手段。但这个技术在 19 世纪就已经出现了。1858 年,在英国伦敦主要街头安装了以燃煤气为光源的红、蓝两色的机械般手势信号灯,用以指挥马车通行。这是世界上最早的交通信号灯。1868 年,英国机械工程师纳伊特在伦敦威斯敏斯特区的会议大厦前的广场上,安装了世界上最早的煤气红绿灯。它由红绿两以旋转方式玻璃提灯组成,红色表示“停止” ,绿色表示“注意”。1869 年 1 月 2
5、 日,煤气灯爆炸,是警察受伤,遂被取消!电气启动的红绿灯出现在美国,这种红绿灯由红黄绿三色圆形的投光器组成,1914 年始装于纽约市 5 号大街的一座高塔上。红灯亮表示“停止 ”,绿灯亮表示“通行” 。信号灯的出现,使得交通得以有效的管理,对于疏导交通流量、提高道路通行能力、减少交通事故有明显效果。1968 年,联合国道路交通和道路标志信号协定对各种信号灯的含义作了规定。绿灯时通行信号灯,面对绿灯的车辆可以直行,左转弯和右转弯,5除非两一种标志禁止某一种转向。左右转弯车辆必需让合法的正在路口内行驶的车辆和过人行横线的行人优先通行。红灯是禁行信号灯,面对红灯的车辆必需在交叉路口的停车线后停车。黄
6、灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已经十分接近停车线而不能安全停车的可以进入交叉路口!二、概要设计2.1 设计思路利用单片机实现交通灯的控制,该任务分以下几个方面:a 实现红、绿、黄灯的循环控制。要实现此功能需要表示三种不同颜色的 LED 灯分别接在 P1 个管脚,用软件实现。b 用数码管显示倒计时。可以利用动态显示或静态显示,串行并出或者并行并出实现。C 实现急通车。这需要人工实现,编程时利用到中断才能带到目的,只要有按钮按下,那么四个方向全部显示红灯,禁止以诶车辆通行。当情况解除,让时间回到只能隔断处继续进行。2.2 总体设计框图见图 2-1:6交通灯循环 最小系统 倒计时
7、显示强通车控制图 2-1三 硬件设计3.1LED 循环电路设计3.1.1 89cs51 单片机概述MCS-51 单片机内部结构:89CS51 是 MCS-51 系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。下图是 80C51 的基本结构:7图 3-1 80C51 的基本结构89CS51 单片机包含中央处理器、程序存储器(ROM) 、数据存储器(RAM ) 、定时 /计数器、并行接口、串行接口和中断系统等极大单元及数据总线、地址总线和控制总线等三大总线,现在分别加以说明。*中央处理器:8 位 CPU,含布尔处理器;时钟电路;总线控制逻辑。中央处理器(CPU)是整个单片机的核心部件,
8、是 8 位数据宽度的处理器,能处理 8 位二进制数据或代码,CPU 负责控制、指挥和调度整个单元系统的工作,完成运算和控制输入输出等操控。*数据存储器(RAM):128KB 数据存储器(RAM,可再扩 64KB);特殊功能寄存器SFR。889CS51 内部有 128 个 8 位用户数及存储单元和 128 个寄存器单元,他们是统一编址的,专营寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的 RAM 只有 128 个,可存放读写的数据,运算的中间结果或用户自定义的字型表。*程序存储器(ROM):4KB 的程序存储器(ROM/EPROM/Flash,可扩至 6
9、4KB); 89CS51 共有 4096 个 8 位掩膜 ROM,用于存放用户程序,原始数据或表格。*定时/计数器(ROM):89CS51 有两个 16 位的可编程定时/计数器,一时想定时或计数产生中断用于控制程序转向。 *并行输入输出(I/O)口:89CS51 共有 4 组 8 位 I/O 口(P0、P1、P2 或 P3) ,用于对外数据传输。*全双工串行号:89CS51 内置一个全双行串行通信口,用于与其它设备间的串行数据传输,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。 *中断系统:89CS51 具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,客满著
10、不同的控制要求,并9具有 2 级优先级别选择。 *时钟电路:89CS51 内置最高频率高达 12Hz 的时钟电路,用于产生整个单片机运行的脉冲时序,但 89CS51 单片继续外置震荡电容。单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。3.1.2 80C51 单片机的时钟(1)振荡器和时钟电路80C51 内部有一个高增益反相放大器,用于构成振荡器,但要形成时钟脉冲,外部还需附加电路。80C51 的时钟产生方法有以下两种。a 内部时钟方式利用芯
11、片内部的振荡器,然后在引脚 XTALl 和 XTAL2 两端跨接晶体振荡器(简称晶振),就构成了稳定的自激振荡器,发出的脉冲直接送入内部时钟电路。外接晶振时,C l和 C2的值通常选择为30pF 左右;C l、C 2对频率有微调作用,晶振或陶瓷谐振器的频率范围可在 1.2MHz12MHz 之间选择。为了减小寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机引脚 XTALl 和 XTAL2 靠近。10图 3-2 80C51 时钟电路接线方法b 外部时钟方式此方式是利用外部振荡脉冲接入 XTALl 或 XTAL2。HMOS 和CHMOS 单片机外时钟信号接入方式不同。表
12、 3-1 80C51 单片机外部时钟接入方法接线方法芯片类型XTAL1 XTAL2HMOS 接地 接片外时钟脉输入端(引脚需接上拉电阻)CHMOS 接片外时钟脉冲输入端悬空MCS-51 系统的引脚说明:MCS-51 系列单片机中的 8031、8051 及 8751 均采用 40Pin封装的双列直接 DIP 结构,图二是它们的引脚配置,40 个引脚中,正电源和底线两根,外置石英振荡器的时钟线两根,4 组 8 位共 32个 I/O 口,中断口线与 P3 口线复用11P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7RSTRXD/P3.0TXD/P3.1INT0/P3.2INT1/P3
13、.3T0/P3.4Y1/P3.5WR/P3.6RD/P3.7XTAL2XTAL1GNDPDIPVCCP0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7EA/VPPALE/PROGPESNP2.7/A15P2.6/A14P2.5/A13P2.4/A12P2.3/A11P2.2/A10P2.1/A9P2.0/A840393837363534333231302928272625242322211234567891011121314151617181920图 3-38951 的抚慰方式可以自动复位,也可以是手动复位,见下图。
14、除此之外,RESET/Vpd 还是一复用脚,Vcc 掉电其间,此脚可以接上没用电源,以保证单片机内部 RAM 的数据不丢失。在编程时,EA/Vpp 脚还需加上 21V 的编程电压。3.1.3 80C51 单片机的的封装和引脚80C51 系列单片机采用双列直插式(DIP).QFP44(Quad Flat Pack)和 LCC(Leaded Chip Caiier)形式封装。这里仅介绍常用12的总线型 DIP40 封装。如图 3-4 所示。40 个引脚按引脚功能大致可分为 4 个种类:电源、时钟、控制和 I/O 引脚(1) 电源: VCC - 芯片电源,接+5V; VSS - 接地端;图 3-48
15、0C51 单片机的的封装和引脚(2)时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端。 (3) 控制线:控制线共有 4 根,ALE/PROG:地址锁存允许/片内 EPROM 编程脉冲ALE 功能:用来锁存 P0 口送出的低 8 位地址PROG 功能:片内有 EPROM 的芯片,在 EPROM 编程期间,此引脚输入编程脉冲。PSEN:外 ROM 读选通信号。RST/VPD:复位/备用电源。RST(Reset)功能:复位信号输入端。VPD 功能:在 Vcc 掉电情况下,接备用电源。EA/Vpp:内外 ROM 选择/片内 EPROM 编程电源。EA 功能:内外 ROM 选择端。Vpp
16、 功能:片内 EPROM 的芯片,在 EPROM 编程期间,施加编程电源Vpp。(4) I/O 线1380C51 共有 4 个 8 位并行 I/O 端口:P0、P1、P2、P3 口,共 32 个引脚。P3 口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。图 3-5 上电复位电路 图 3-6 上电+按键复位电路复位状态:初始复位不改变 RAM(包括工作寄存器 R0R7)的状态,复位后 80C51 片内各特殊功能寄存器的状态如表所示,表中“x”为不定数。 表 3-2 复位后的内部特殊功能寄存器状态寄存器 复位状态 寄存器 复位状态PC 0000H TMOD 00HACC 00H T
17、CON 00HB 00H TH0 00HBSW 00H TL0 00HSP 07H TH1 00H14DPTR 0000H TL0 00HP0P3 FFH SCON 00HIP xx000000B SBUF xxxxxxxxBIE 0x000000B PCON 0xxx0000B复位时,ALE 和 成输入状态,即 ALE= = 1,片内 RAM 不受复位影响。复位后,P0P3 口输出高电平且使这些双向口皆处于输入状态,并将 07H 写入堆栈指针 SP,同时将 PC 和其余专用寄存器清 0。此时,单片机从起始地址 0000H 开始重新执行程序。所以,单片机运行出错或进入死循环时,可使其复位后重新
18、运行。3.2.1 LED 循环说明东西、南北两干道交于一个十字路口,各干道有一组红、绿、黄三色的指示灯,指挥车辆和行人的安丘按通行。红灯禁止通行,绿灯亮允许通行。黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西,南北两干道的公共停车时间。25s 3s 2s 25s 3s 2s东西通道红灯亮 红灯亮 红灯亮 绿灯亮 绿灯闪 黄灯亮南北通 绿灯亮 绿灯闪 黄灯亮 红灯亮 红灯亮 红灯亮15道上表说明东西路口哈珀能够灯亮,南北路口绿灯亮,同时开始25s 倒计时。25s 倒计时结束后开始 5s 倒计时,南北铝扣绿灯闪烁,计时至最后 2s 时,南北路口黄灯亮。完成一次这样的循环要30s。3
19、0s 结束,南北路口红灯亮,东西路口绿灯亮,并重新 30s 倒计时,依次循环。电路图如图三所示。图 3-7四 软件按设计4.1 程序流程图:如图 4-1 所示。16图 4-1174.2 LED 红绿灯显示如图 3-7 所示,当 P1 端口输出高电平,即 P1 各端口=1 时,根据发光二极管的单向导电性可知,这是发光二极管熄灭;当 P1 个端口输出低电平,即 P1 各端口=0 时,发光二极管亮。我们可以使用 SETB 指令使 P1 各端口输出高电平,使用 CLR 指令时 P 各端口输出低电平。至于循环需要软件控制,程序见附录。五 、总结在学习单片机理论课时候就感觉到内容很多,知识点很杂,分繁琐。
20、在老师的讲解下,在通过自己的努力也更进一步了解了单片机的内部构造和工作原理,以及接外部电路的情况。当然光有理论知识那只是“纸上谈兵” ,还需要实际动手去实践。真正把所学的用到日常生活中,理论联系实际,做出实物模型。这次单片机实习,我选的是交通灯设计,通过这次设计我感觉到要想做成功,必须花时间多准备,查阅大量资料,认证分析每一步每一个模块要实现的功能,然后分步进行,最后正和一个整体。通过这次实习,我们要对所做的事情有耐性,在编程的时候会有困难,也可能变得不一定成功,所以要经过多次调试,分析,改正,反复去做。在这次实习中,经历了多次失败的洗礼,我明白在以后学习和实践中,我要努力掌握知识,多动手,多
21、思考,以免在以后的学习工作中犯同样的错误。18参考文献1 叶挺秀.应用电子学M.杭州:浙江大学出版社,19942 朱承高.电工及电子技术手册M.北京:高等教育出版社,19903 阎石.数字电子技术基础(第三版)M.北京:高等教育出版社,19894 周润景.PEOTEUS 在 MCS-51东西路口计时寄存器SECOND2 EQU 31H ;南北路口计时寄存器DBUF EQU 40H ;显示码缓冲 1TEMP EQU 44H ;显示码缓冲 2LED_G1 BIT P1.0 ;东西路口绿灯LED_Y1 BIT P1.1 ;东西路口黄灯LED_R1 BIT P1.2 ;东西路口红灯LED_G2 BIT
22、 P1.5 ;南北路口绿灯LED_Y2 BIT P1.6 ;南北路口黄灯LED_R2 BIT P1.7 ;南北路口红灯ORG 0000HLJMP STARTORG 0003HLJMP INTO0ORG 0100HSTART:MOV TMOD,#01H 置 T0 工作方式 1MOV TH0,#3CHMOV TLO,#0B0HCLR TFOSETB TRO 启动 T0SETB EX0SETB PX0 设置外中断 0 高优先级SETB EA19LOOP: MOV R2,#20 置 1s 计数初值MOV R3,#20 红灯亮 20SMOV SECOND1,#25 东西路口计时显示初值 25sMOV S
23、ECOND2,#25 南北路口计时显示初值 25sLCALL DISPLAYLCALL STATEL 调用状态 1WAIT1:JNB TF0,WAIT1 查询 50ms 到否CLR TF0MOV TH0,#3CH 恢复 T0 定时初值 50msMOV TL0,#0B0HDJNZ R2,WAIT1 判断 1s 到否?未到继续状态 1MOV R2,#20 置 50ms 计数初值DEC SECIND1 东西路口显示时间减 1DEC SECOND2 南北路口显示时间减 1LCALL DISPLAYDJNZ R3,WAIT1 状态 1 维持 20sMOV R2,#5 置 50ms 计数初值MOV R3,
24、#3 绿灯闪烁 3sMOV R4,#4 闪烁间隔 200msMOV SECOND1,#5 东西路口计时显示初值 5sMOV SECOND2,#5 南北路口计时显示初值 5sLCALL DISPLAYWAIT2:LCALL STATE2 调用状态 2JNB TF0,WAIT2 查询 50ms 到否CLR TF0MOV TH0,#3CH 恢复 T0 定时初值 50msMOV TL0,#0B0HDJNZ R4,WAIT2 判断 200ms 到否?未到继续状态 2CPLLED_G1 东西绿灯闪烁MOV R4,#4 闪烁 200msDJNZ R2,WAIT2 判断 1s 到否?未到继续状态 2MOV R
25、2,#5 置 50ma 计数初值DEC SECOND1 东西路口显示时间减 1DEC SECOND2 南北路口显示时间减 1LCALL DISPLAYDJNZ R3,WAIT2 状态 2 维持 3sMOV R2,#20 置 50ms 计数初值MOV R3,#2 黄灯闪烁 2sMOV SECOND1,#2 东西路口计时显示初值 2sMOV SECOND2,#2 南北路口计时显示初值 2sLCALL DISPLAYWAIT3:LCALL STATE3 调用状态 3JNB TF0,#3CH 查询 100ms 到否CLR TF020MOV TH0,#3CH 恢复 T0 定时初值 100msMOV TL
26、0,#0B0HDJNZ R2,WAIT3 判断 1s 到否?未到继续状态 3MOV R2,#20 置 100ms 计数初值DEC SECOND1 东西路口显示时间减 1DEC SECOND2 南北路口显示时间减 1LCALL DISPLAYDJNZ R3,WAIT3 状态 3 维持 2sMOV R2,#20 置 50ms 计数初值MOV R3,#20 红灯闪烁 20sMOV SECOND1,#25 东西路口计时显示初值 25sMOV SECOND2,#25 南北路口计时显示初值 25sLCALL DISPLAYWAIT4:LCALL STATE4 调用状态 4JNB TF0,WAIT4 查询
27、100ms 到否CLR TF0MOV TH0,#3CH 恢复 T0 定时初值 100msMOV TL0,#0B0H DJNZ R2,WAIT4 判断 1s 到否?未到继续状态 4MOV R2,#20 置 100ms 计数初值DEC SECOND1 东西路口显示时间减 1DEC SECOND2 南北路口显示时间减 1LCALL DISPLAYDJNZ R3,WAIT4 状态 4 维持 2sMOV R2,#5 置 50ms 计数初值MOV R3,#4 红灯闪烁 20sMOV R3,#3 绿灯闪烁 3sMOV SECOND1,#25 东西路口计时显示初值 5sMOV SECOND2,#25 南北路口
28、计时显示初值 25sLCALL DISPLAYWAIT5:LCALL STATE5 调用状态 5JNB TF0,WAIT5 查询 100ms 到否CLR TF0MOV TH0,#3CH 恢复 T0 定时初值 100msMOV TL0,#0B0H DJNZ R4,WAIT5 判断 200ms 到否?未到继续状态 5CPLLED_G2 南北绿灯闪烁MOV R4,#4 闪烁 200msDJNZ R2,WAIT5 判断 1s 到否?未到继续状态 5MOV R2,#5 置 100ms 计数初值DEC SECOND1 东西路口显示时间减 1DEC SECOND2 南北路口显示时间减 1LCALL DISP
29、LAYDJNZ R3,WAIT5 状态 5 维持 3s21MOV R2,#20 置 50ms 计数初值MOV R3,#20 红灯闪烁 2sMOV SECOND1,#25 东西路口计时显示初值 5sMOV SECOND2,#25 南北路口计时显示初值 5sLCALL DISPLAYWAIT6:LCALL STATE6 调用状态 4JNB TF0,WAIT6 查询 100ms 到否CLR TF0MOV TH0,#3CH 恢复 T0 定时初值 100msMOV TL0,#0B0H DJNZ R2,WAIT6 判断 1s 到否?未到继续状态 6MOV R2,#20 置 100ms 计数初值DEC SE
30、COND1 东西路口显示时间减 1DEC SECOND2 南北路口显示时间减 1LCALL DISPLAYDJNZ R3,WAIT6 状态 6 维持 3sLJMP LOOPSTATE1: 状态 1SETB LED_G1 东西路口路灯亮CLR LED_Y1CLR LED_R1CLR LED_G2CLR LED_Y2SETB LED_R2 南北路口红灯亮RETSTATE2: 状态 2CLR LED_Y1CLR LED_R1CLR LED_G2CLR LED_Y2SETBLED_R2 南北路口红灯亮RETSTATE3: 状态 3CLR LED_G1CLR LED_R1CLR LED_G2CLR LE
31、D_Y2SETB LED_R2 南北路口红灯亮SETB LED_Y1 东西路口黄灯亮RETSTATE4: 状态 4CLR LED_G1CLR LED_Y1SETB LED_R1 东西路口红灯亮22SETB LED_G2 南北路口绿灯亮CLR LED_Y2CLR LED_R2RETSTATE5: 状态 5CLR LED_G1CLR LED_R1SETB LED_R1 东西路口红灯亮CLR LED_Y2CLR LED_R2RETSTATE6: 状态 6CLR LED_G1CLR LED_Y1SETB LED_R1 东西路口红灯亮CLR LED_G2CLR LED_R2SETB LED_Y2 南北路
32、口黄灯亮RETDISPLAY: 数码显示MOV A,SECOND1 东西路口计时寄存器MOV B,#10DIV ABMOV DBUF+3,AMOV A,BMOV DBUF+2,AMOV SECOND2 南北路口计时寄存器MOV B,#10DIY ABMOV DBUF+1,AMOV A,BMOV DBUF,AMOV R0,#DBUFMOV R1,#TEMPMOV R7,#4DP10:MOV DPOTR,#LEDMAPMOV A,R0MOVC A,A+DPTRMOV R1,AINC R0INC R1DJNZ R7,DP10MOV R0,#TEMPMOV R1,#423DP12:MOV R7,#8MOV A,R0DP13:RLC AMOV P3.0,CCLR P3.1SETB P3.1DJNZ R7,DP13INC R0DJNZ R1,DP12RETLENMAP:DB 3FH,06H,5BH,4FH,66H,6DHDB 7DH,07H,7FH,6FHORG 0200HINTO0:PUSH PSWPUSH ACCSETB LED_R1SETB LED_R2CLR LED_G1CLR LED_Y1CLR LED_G2CLR LED_Y2POP PSWPOP ACCRETIEND 24附录二:底层 PCB:顶层 PCB