基于80C51的交通灯设.docx
- 文档编号:16510599
- 上传时间:2023-07-14
- 格式:DOCX
- 页数:21
- 大小:498.09KB
基于80C51的交通灯设.docx
《基于80C51的交通灯设.docx》由会员分享,可在线阅读,更多相关《基于80C51的交通灯设.docx(21页珍藏版)》请在冰点文库上搜索。
基于80C51的交通灯设
目录
一、引言4
二、概要设计5
2.1设计思路5
2.2总体设计框图5
三、硬件设计6
3.1LED循环电路设计6
3.1.189cs51单片机概述6
3.1.280C51单片机的时钟………………………………………9
3.1.380C51的封装和引脚………………………………..…11
3.2.1LED循环灯的说明………………………………………….…14
四软件按设计15
4.1程序流程图:
15
4.2LED红绿灯显示17
五总结17
参考文献18
附录一:
程序源代码.......................................18
附录二:
PCB图…………………………………………………………24
基于51单片机的交通灯控制系统设计
二、概要设计
2.1设计思路
利用单片机实现交通灯的控制,该任务分以下几个方面:
a实现红、绿、黄灯的循环控制。
要实现此功能需要表示三种不同颜色的LED灯分别接在P1个管脚,用软件实现。
b用数码管显示倒计时。
可以利用动态显示或静态显示,串行并出或者并行并出实现。
C实现急通车。
这需要人工实现,编程时利用到中断才能带到目的,只要有按钮按下,那么四个方向全部显示红灯,禁止以诶车辆通行。
当情况解除,让时间回到只能隔断处继续进行。
2.2总体设计框图
见图2-1:
图2-1
三硬件设计
3.1LED循环电路设计
3.1.189cs51单片机概述
MCS-51单片机内部结构:
89CS51是MCS-51系列单片机的典型产品,我们以这一代表性的机型进行系统的讲解。
下图是80C51的基本结构:
图3-180C51的基本结构
89CS51单片机包含中央处理器、程序存储器(ROM)、数据存储器(RAM)、定时/计数器、并行接口、串行接口和中断系统等极大单元及数据总线、地址总线和控制总线等三大总线,现在分别加以说明。
*中央处理器:
8位CPU,含布尔处理器;时钟电路;总线控制逻辑。
中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统的工作,完成运算和控制输入输出等操控。
*数据存储器(RAM):
128KB数据存储器(RAM,可再扩64KB);特殊功能寄存器SFR。
89CS51内部有128个8位用户数及存储单元和128个寄存器单元,他们是统一编址的,专营寄存器只能用于存放控制指令数据,用户只能访问,而不能用于存放用户数据,所以,用户能使用的RAM只有128个,可存放读写的数据,运算的中间结果或用户自定义的字型表。
*程序存储器(ROM):
4KB的程序存储器(ROM/EPROM/Flash,可扩至64KB);89CS51共有4096个8位掩膜ROM,用于存放用户程序,原始数据或表格。
*定时/计数器(ROM):
89CS51有两个16位的可编程定时/计数器,一时想定时或计数产生中断用于控制程序转向。
*并行输入输出(I/O)口:
89CS51共有4组8位I/O口(P0、P1、P2或P3),用于对外数据传输。
*全双工串行号:
89CS51内置一个全双行串行通信口,用于与其它设备间的串行数据传输,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。
*中断系统:
89CS51具备较完善的中断功能,有两个外中断、两个定时/计数器中断和一个串行中断,客满著不同的控制要求,并具有2级优先级别选择。
*时钟电路:
89CS51内置最高频率高达12Hz的时钟电路,用于产生整个单片机运行的脉冲时序,但89CS51单片继续外置震荡电容。
单片机的结构有两种类型,一种是程序存储器和数据存储器分开的形式,即哈佛(Harvard)结构,另一种是采用通用计算机广泛使用的程序存储器与数据存储器合二为一的结构,即普林斯顿(Princeton)结构。
3.1.280C51单片机的时钟
(1)振荡器和时钟电路
80C51内部有一个高增益反相放大器,用于构成振荡器,但要形成时钟脉冲,外部还需附加电路。
80C51的时钟产生方法有以下两种。
a内部时钟方式
利用芯片内部的振荡器,然后在引脚XTALl和XTAL2两端跨接晶体振荡器(简称晶振),就构成了稳定的自激振荡器,发出的脉冲直接送入内部时钟电路。
外接晶振时,Cl和C2的值通常选择为30pF左右;Cl、C2对频率有微调作用,晶振或陶瓷谐振器的频率范围可在1.2MHz~12MHz之间选择。
为了减小寄生电容,更好地保证振荡器稳定、可靠地工作,振荡器和电容应尽可能安装得与单片机引脚XTALl和XTAL2靠近。
图3-2 80C51时钟电路接线方法
b外部时钟方式
此方式是利用外部振荡脉冲接入XTALl或XTAL2。
HMOS和CHMOS单片机外时钟信号接入方式不同。
表3-180C51单片机外部时钟接入方法
芯片类型
接线方法
XTAL1
XTAL2
HMOS
接地
接片外时钟脉输入端(引脚需接上拉电阻)
CHMOS
接片外时钟脉冲输入端
悬空
MCS-51系统的引脚说明:
MCS-51系列单片机中的8031、8051及8751均采用40Pin封装的双列直接DIP结构,图二是它们的引脚配置,40个引脚中,正电源和底线两根,外置石英振荡器的时钟线两根,4组8位共32个I/O口,中断口线与P3口线复用
图3-3
8951的抚慰方式可以自动复位,也可以是手动复位,见下图。
除此之外,RESET/Vpd还是一复用脚,Vcc掉电其间,此脚可以接上没用电源,以保证单片机内部RAM的数据不丢失。
在编程时,EA/Vpp脚还需加上21V的编程电压。
3.1.380C51单片机的的封装和引脚
80C51系列单片机采用双列直插式(DIP).QFP44(QuadFlatPack)和LCC(LeadedChipCaiier)形式封装。
这里仅介绍常用的总线型DIP40封装。
如图3-4所示。
40个引脚按引脚功能大致可分为4个种类:
电源、时钟、控制和I/O引脚
(1)电源:
VCC-芯片电源,接+5V;VSS-接地端;
图3-480C51单片机的的封装和引脚
(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功能:
片内EPROM的芯片,在EPROM编程期间,施加编程电源
Vpp。
(4)I/O线
80C51共有4个8位并行I/O端口:
P0、P1、P2、P3口,共32个引脚。
P3口还具有第二功能,用于特殊信号输入输出和控制信号(属控制总线)。
图3-5上电复位电路图3-6上电+按键复位电路
复位状态:
初始复位不改变RAM(包括工作寄存器R0~R7)的状态,复位后80C51片内各特殊功能寄存器的状态如表所示,表中“x”为不定数。
表3-2复位后的内部特殊功能寄存器状态
寄存器
复位状态
寄存器
复位状态
PC
0000H
TMOD
00H
ACC
00H
TCON
00H
B
00H
TH0
00H
BSW
00H
TL0
00H
SP
07H
TH1
00H
DPTR
0000H
TL0
00H
P0~P3
FFH
SCON
00H
IP
xx000000B
SBUF
xxxxxxxxB
IE
0x000000B
PCON
0xxx0000B
复位时,ALE和
成输入状态,即ALE=
=1,片内RAM不受复位影响。
复位后,P0~P3口输出高电平且使这些双向口皆处于输入状态,并将07H写入堆栈指针SP,同时将PC和其余专用寄存器清0。
此时,单片机从起始地址0000H开始重新执行程序。
所以,单片机运行出错或进入死循环时,可使其复位后重新运行。
3.2.1LED循环说明
东西、南北两干道交于一个十字路口,各干道有一组红、绿、黄三色的指示灯,指挥车辆和行人的安丘按通行。
红灯禁止通行,绿灯亮允许通行。
黄灯亮提示人们注意红、绿灯的状态即将切换,且黄灯燃亮时间为东西,南北两干道的公共停车时间。
25s
3s
2s
25s
3s
2s
东西通道
红灯亮
红灯亮
红灯亮
绿灯亮
绿灯闪
黄灯亮
南北通道
绿灯亮
绿灯闪
黄灯亮
红灯亮
红灯亮
红灯亮
上表说明东西路口哈珀灯亮,南北路口绿灯亮,同时开始25s倒计时。
25s倒计时结束后开始5s倒计时,南北铝扣绿灯闪烁,计时至最后2s时,南北路口黄灯亮。
完成一次这样的循环要30s。
30s结束,南北路口红灯亮,东西路口绿灯亮,并重新30s倒计时,依次循环。
电路图如图三所示。
图3-7
四软件按设计
4.1程序流程图:
如图4-1所示。
图4-1
4.2LED红绿灯显示
如图3-7所示,当P1端口输出高电平,即P1各端口=1时,根据发光二极管的单向导电性可知,这是发光二极管熄灭;当P1个端口输出低电平,即P1各端口=0时,发光二极管亮。
我们可以使用SETB指令使P1各端口输出高电平,使用CLR指令时P各端口输出低电平。
至于循环需要软件控制,程序见附录。
附录一
源程序代码
SECOND1EQU30H;东西路口计时寄存器
SECOND2EQU31H;南北路口计时寄存器
DBUFEQU40H;显示码缓冲1
TEMPEQU44H;显示码缓冲2
LED_G1BITP1.0;东西路口绿灯
LED_Y1BITP1.1;东西路口黄灯
LED_R1BITP1.2;东西路口红灯
LED_G2BITP1.5;南北路口绿灯
LED_Y2BITP1.6;南北路口黄灯
LED_R2BITP1.7;南北路口红灯
ORG0000H
LJMPSTART
ORG0003H
LJMPINTO0
ORG0100H
START:
MOVTMOD,#01H置T0工作方式1
MOVTH0,#3CH
MOVTLO,#0B0H
CLRTFO
SETBTRO启动T0
SETBEX0
SETBPX0设置外中断0高优先级
SETBEA
LOOP:
MOVR2,#20置1s计数初值
MOVR3,#20红灯亮20S
MOVSECOND1,#25东西路口计时显示初值25s
MOVSECOND2,#25南北路口计时显示初值25s
LCALLDISPLAY
LCALLSTATEL调用状态1
WAIT1:
JNBTF0,WAIT1查询50ms到否
CLRTF0
MOVTH0,#3CH恢复T0定时初值50ms
MOVTL0,#0B0H
DJNZR2,WAIT1判断1s到否?
未到继续状态1
MOVR2,#20置50ms计数初值
DECSECIND1东西路口显示时间减1
DECSECOND2南北路口显示时间减1
LCALLDISPLAY
DJNZR3,WAIT1状态1维持20s
MOVR2,#5置50ms计数初值
MOVR3,#3绿灯闪烁3s
MOVR4,#4闪烁间隔200ms
MOVSECOND1,#5东西路口计时显示初值5s
MOVSECOND2,#5南北路口计时显示初值5s
LCALLDISPLAY
WAIT2:
LCALLSTATE2调用状态2
JNBTF0,WAIT2查询50ms到否
CLRTF0
MOVTH0,#3CH恢复T0定时初值50ms
MOVTL0,#0B0H
DJNZR4,WAIT2判断200ms到否?
未到继续状态2
CPLLED_G1东西绿灯闪烁
MOVR4,#4闪烁200ms
DJNZR2,WAIT2判断1s到否?
未到继续状态2
MOVR2,#5置50ma计数初值
DECSECOND1东西路口显示时间减1
DECSECOND2南北路口显示时间减1
LCALLDISPLAY
DJNZR3,WAIT2状态2维持3s
MOVR2,#20置50ms计数初值
MOVR3,#2黄灯闪烁2s
MOVSECOND1,#2东西路口计时显示初值2s
MOVSECOND2,#2南北路口计时显示初值2s
LCALLDISPLAY
WAIT3:
LCALLSTATE3调用状态3
JNBTF0,#3CH查询100ms到否
CLRTF0
MOVTH0,#3CH恢复T0定时初值100ms
MOVTL0,#0B0H
DJNZR2,WAIT3判断1s到否?
未到继续状态3
MOVR2,#20置100ms计数初值
DECSECOND1东西路口显示时间减1
DECSECOND2南北路口显示时间减1
LCALLDISPLAY
DJNZR3,WAIT3状态3维持2s
MOVR2,#20置50ms计数初值
MOVR3,#20红灯闪烁20s
MOVSECOND1,#25东西路口计时显示初值25s
MOVSECOND2,#25南北路口计时显示初值25s
LCALLDISPLAY
WAIT4:
LCALLSTATE4调用状态4
JNBTF0,WAIT4查询100ms到否
CLRTF0
MOVTH0,#3CH恢复T0定时初值100ms
MOVTL0,#0B0H
DJNZR2,WAIT4判断1s到否?
未到继续状态4
MOVR2,#20置100ms计数初值
DECSECOND1东西路口显示时间减1
DECSECOND2南北路口显示时间减1
LCALLDISPLAY
DJNZR3,WAIT4状态4维持2s
MOVR2,#5置50ms计数初值
MOVR3,#4红灯闪烁20s
MOVR3,#3绿灯闪烁3s
MOVSECOND1,#25东西路口计时显示初值5s
MOVSECOND2,#25南北路口计时显示初值25s
LCALLDISPLAY
WAIT5:
LCALLSTATE5调用状态5
JNBTF0,WAIT5查询100ms到否
CLRTF0
MOVTH0,#3CH恢复T0定时初值100ms
MOVTL0,#0B0H
DJNZR4,WAIT5判断200ms到否?
未到继续状态5
CPLLED_G2南北绿灯闪烁
MOVR4,#4闪烁200ms
DJNZR2,WAIT5判断1s到否?
未到继续状态5
MOVR2,#5置100ms计数初值
DECSECOND1东西路口显示时间减1
DECSECOND2南北路口显示时间减1
LCALLDISPLAY
DJNZR3,WAIT5状态5维持3s
MOVR2,#20置50ms计数初值
MOVR3,#20红灯闪烁2s
MOVSECOND1,#25东西路口计时显示初值5s
MOVSECOND2,#25南北路口计时显示初值5s
LCALLDISPLAY
WAIT6:
LCALLSTATE6调用状态4
JNBTF0,WAIT6查询100ms到否
CLRTF0
MOVTH0,#3CH恢复T0定时初值100ms
MOVTL0,#0B0H
DJNZR2,WAIT6判断1s到否?
未到继续状态6
MOVR2,#20置100ms计数初值
DECSECOND1东西路口显示时间减1
DECSECOND2南北路口显示时间减1
LCALLDISPLAY
DJNZR3,WAIT6状态6维持3s
LJMPLOOP
STATE1:
状态1
SETBLED_G1东西路口路灯亮
CLRLED_Y1
CLRLED_R1
CLRLED_G2
CLRLED_Y2
SETBLED_R2南北路口红灯亮
RET
STATE2:
状态2
CLRLED_Y1
CLRLED_R1
CLRLED_G2
CLRLED_Y2
SETBLED_R2南北路口红灯亮
RET
STATE3:
状态3
CLRLED_G1
CLRLED_R1
CLRLED_G2
CLRLED_Y2
SETBLED_R2南北路口红灯亮
SETBLED_Y1东西路口黄灯亮
RET
STATE4:
状态4
CLRLED_G1
CLRLED_Y1
SETBLED_R1东西路口红灯亮
SETBLED_G2南北路口绿灯亮
CLRLED_Y2
CLRLED_R2
RET
STATE5:
状态5
CLRLED_G1
CLRLED_R1
SETBLED_R1东西路口红灯亮
CLRLED_Y2
CLRLED_R2
RET
STATE6:
状态6
CLRLED_G1
CLRLED_Y1
SETBLED_R1东西路口红灯亮
CLRLED_G2
CLRLED_R2
SETBLED_Y2南北路口黄灯亮
RET
DISPLAY:
数码显示
MOVA,SECOND1东西路口计时寄存器
MOVB,#10
DIVAB
MOVDBUF+3,A
MOVA,B
MOVDBUF+2,A
MOVSECOND2南北路口计时寄存器
MOVB,#10
DIYAB
MOVDBUF+1,A
MOVA,B
MOVDBUF,A
MOVR0,#DBUF
MOVR1,#TEMP
MOVR7,#4
DP10:
MOVDPOTR,#LEDMAP
MOVA,@R0
MOVCA,@A+DPTR
MOV@R1,A
INCR0
INCR1
DJNZR7,DP10
MOVR0,#TEMP
MOVR1,#4
DP12:
MOVR7,#8
MOVA,@R0
DP13:
RLCA
MOVP3.0,C
CLRP3.1
SETBP3.1
DJNZR7,DP13
INCR0
DJNZR1,DP12
RET
LENMAP:
DB3FH,06H,5BH,4FH,66H,6DH
DB7DH,07H,7FH,6FH
ORG0200H
INTO0:
PUSHPSW
PUSHACC
SETBLED_R1
SETBLED_R2
CLRLED_G1
CLRLED_Y1
CLRLED_G2
CLRLED_Y2
POPPSW
POPACC
RETI
END
附录二:
底层PCB:
顶层PCB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 80 C51 交通灯