单片机课程设计交通灯完整版.docx
- 文档编号:24949439
- 上传时间:2023-06-03
- 格式:DOCX
- 页数:27
- 大小:422.05KB
单片机课程设计交通灯完整版.docx
《单片机课程设计交通灯完整版.docx》由会员分享,可在线阅读,更多相关《单片机课程设计交通灯完整版.docx(27页珍藏版)》请在冰豆网上搜索。
单片机课程设计交通灯完整版
1.引言
交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。
交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
本系统采用单片机AT89C51为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强。
本设计就是采用单片机模拟十字路口交通灯的各种状态显示以及倒计时时间。
本设计系统由单片机I/O口扩展系统、交通灯状态显示系统、LED数码显示系统、复位电路等几大部分组成。
系统除基本的交通灯功能外,还具有倒计时等功能,能够较好的模拟实现了十字路口可能出现的状况。
2.总体设计方案
2.1.总体要求
设计一个交通信号灯实时控制系统,要求具有以下功能:
(1)在一个十字路口的两条主干道上,分别装上一套红、黄、绿3种信号灯。
(2)在通常情况下,一条主干道为绿灯,另一条主干道为红灯。
(3)采用定时器中断方式控制南北向、东西向交通灯,指示时间为25s,当时间为5s时绿灯亮,为3s时黄灯点亮,25s时间到,交通灯换向。
亮灯规律:
东西绿灯亮25s,南北红灯亮25s
东西绿灯闪5s,南北红灯亮5s
东西黄灯亮2s,南北红灯亮2s
东西红灯亮25s,南北绿灯亮25s
东西红灯亮5s,南北绿灯闪5s
东西红灯亮2s,南北黄灯亮2s
2.2.设计目的
(1)加强对单片机和汇编语言的认识,充分掌握和理解设计各部分的工作原理、设计过程、选择芯片器件、模块化编程等多项知识。
(2)用单片机模拟实现具体应用,使个人设计能够真正使用。
(3)把理论知识与实践相结合,充分发挥个人能力,并在实践中锻炼。
(4)提高利用已学知识分析和解决问题的能力。
(5)提高实践动手能力。
3.硬件设计说明
3.1.AT89C51简介:
AT89C51(如图2-10所示)是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压,高性能CMOS8位微处理器,俗称单片机。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89S51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
AT89C51单片VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时当8051通电,时钟电路开始工作,在RESET引脚上出现24个时钟周期以上的高电平,系统即初始复位。
初始化后,程序计数器PC指向0000H,P0-P3输出口全部为高电平,堆栈指钟写入07H,其它专用寄存器被清“0”。
RESET由高电平下降为低电平后,系统即从0000H地址开始执行程序。
然而,初始复位不改变RAM(包括工作寄存器R0-R7)的状态,
特殊功能寄存器
初始态
特殊功能寄存器
初始态
ACC
00H
B
00H
PSW
00H
SP
07H
DPH
00H
TH0
00H
DPL
00H
TL0
00H
IP
xxx00000B
TH1
00H
IE
0xx00000B
TL1
00H
TMOD
00H
TCON
00H
SCON
xxxxxxxxB
SBUF
00H
P0-P3
1111111B
PCON
0xxxxxxxB
8051的初始态(4-2-2)
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
芯片擦除:
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89S51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
3.2.LED数码管显示模块
3.2.1.七段数码显示器:
七段发光线段分别用a、b、c、d、e、f、g七个小写字母表示。
3.2.2.LED数码管:
半导体数码管又称LED数码管,是一种广泛使用的显示器件。
LED有两种:
共阳极型和共阴极型。
LED优点:
亮度高、字形清晰,工作电压低(1.5~3V)、体积小、可靠性高、寿命长,响应速度极快。
共阳极段码序列号:
:
DB0C0H,0F9H,0A4H,0B0H,99H
DB92H,82H,0F8H,80H,90H,88H
DB83H,0C6H,0A1H,86H,84H,0FFH,8CH
共阴极段码序列号:
DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H
DB7FH,6FH,77H,7CH,39H,5EH,79H,71H,76H
3.3.复位电路
复位方式有多种,本设计接线图如图复位电路框图
在设定的定时时间内,AT89C51必须在RST引脚产生一个由高到低的电平变化,以清内部定时器.
3.4.晶振电路
晶振电路原理图如3-2:
3-2 晶振模块原理图
选取原则:
传统做法,但能够实现所需,即最简单也最是实用。
电容选取10uf,晶振为12MHz。
3.5.74LS164驱动数码管电路
3.5.1.器件功能作用
8位串入,并出移位寄存器
3.5.2.概述
74HC164、74HCT164是高速硅门CMOS器件,与低功耗肖特基型TTL(LSTTL)器件的引脚兼容。
74HC164、74HCT164是8位边沿触发式移位寄存器,串行输入数据,然后并行输出。
数据通过两个输入端(DSA或DSB)之一串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。
两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。
时钟(CP)每次由低变高时,数据右移一位,输入到Q0,Q0是两个数据输入端(DSA和DSB)的逻辑与,它将上升时钟沿之前保持一个建立时间的长度。
主复位(MR)输入端上的一个低电平将使其它所有输入端都无效,同时非同步地清除寄存器,强制所有的输出为低电平。
3.5.3.特性
∙门控串行数据输入
∙异步中央复位
∙符合JEDEC标准no.7A
∙静电放电(ESD)保护:
·HBMEIA/JESD22-A114-B超过2000V
·MMEIA/JESD22-A115-A超过200V。
∙多种封装形式
∙额定从-40°C至+85°C和-40°C至+125°C。
3.5.4.功能图
图1.逻辑符号
图2.IEC逻辑符号
图3.功能图
3.5.5.引脚信息
图5.DIP14、SO14、SSOP14和TSSOP14封装的引脚配置
引脚说明
符号
引脚
说明
DSA
1
数据输入
DSB
2
数据输入
Q0~Q3
3~6
输出
GND
7
地(0V)
CP
8
时钟输入(低电平到高电平边沿触发)
/M/R
9
中央复位输入(低电平有效)
Q4~Q7
10~13
输出
VCC
14
正电源罗亩的笔记
3.5.6.功能表(真值表)
工作模式
输入
输出
/M/R
CP
DSA
DSB
Q0
Q1至Q7
复位(清除)
L
L
X
X
L
L至L
移位
H
↑
l
l
L
q0至q6
H
↑
l
h
L
q0至q6
H
↑
h
l
L
q0至q6
H
↑
h
H
H
q0至q6
H=HIGH(高)电平
h=先于低-至-高时钟跃变一个建立时间(set-uptime)的HIGH(高)电平
L=LOW(低)电平
l=先于低-至-高时钟跃变一个建立时间(set-uptime)的LOW(低)电平
q=小写字母代表先于低-至-高时钟跃变一个建立时间的参考输入(referencedinput)的状态
↑=低-至-高时钟跃变
3.6.硬件原理框图:
4.软件设计思想及流程
4.1.设计思想
基于完成以上任务分析,结合所学有关知识,尤其是本学期所学关于单片机的中断系统和定时/计数器的相关知识及应用,我们知道对于红、绿、黄四组各三盏灯的控制,可以通过把这十二盏灯分别接到单片机的六个输出引脚,若用P1口进行输出,则分配如下
L1L2L3L4L5L6
(东西红)(东西黄)(东西绿)(南北红)(南北黄)(南北绿)
LED显示分布
4.2.设计序流程图:
东西绿灯亮,南北红灯亮
4.3.效果图
5.主程序
SECOND1EQU30H;东西路口计时寄存器
SECOND2EQU31H;南北路口计时寄存器
DBUFEQU40H;显示码缓冲1
TEMPEQU44H;显示码缓冲2
LED_G1BITP1.0;东西路口绿灯
LED_Y1BITP1.1;东西路口黄灯
LED_R1BITP1.2;东西路口红灯
LED_G2BITP1.3;南北路口绿灯
LED_Y2BITP1.4;南北路口黄灯
LED_R2BITP1.5;南北路口红灯
ORG0000H
LJMPSTART
ORG0100H
START:
MOVTMOD,#01H;置T0工作方式1
MOVTH0,#3CH
MOVTL0,#0B0H
CLRTF0
SETBTR0;启动T0
CLRA
MOVP1,A
LOOP:
MOVR2,#20;置1s计数初值
MOVR3,#20;红灯亮20S
MOVSECOND1,#25;东西路口计时显示初值25s
MOVSECOND2,#25;南北路口计时显示初值25s
LCALLDISPLAY
LCALLSTATE1;调用状态1
WAIT1:
JNBTF0,WAIT1;查询50ms到否
CLRTF0
MOVTH0,#3CH;恢复T0定时初值50ms
MOVTL0,#0B0H
DJNZR2,WAIT1;判断1s到否?
未到继续状态1
MOVR2,#20;置50ms计数初值
DECSECOND1;东西路口显示时间减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,WAIT3;查询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,#5;东西路口计时显示初值5s
MOVSECOND2,#5;南北路口计时显示初值5s
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,#2;红灯闪烁2s
MOVSECOND1,#2;东西路口计时显示初值2s
MOVSECOND2,#2;南北路口计时显示初值2s
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_Y1
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
MOVA,SECOND2;南北路口计时寄存器
MOVB,#10
DIVAB
MOVDBUF+1,A
MOVA,B
MOVDBUF,A
MOVR0,#DBUF
MOVR1,#TEMP
MOVR7,#4
DP10:
MOVDPTR,#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
LEDMAP:
DB0C0H,0F9H,0A4H,0B0H,99H
DB92H,82H,0F8H,80H,90H,88H
DB83H,0C6H,0A1H,8
6.参考资料
[1]王文杰.许文斌.单片机应用技术.冶金工业出版社,2008
[2]李全利.单片机原理及接口技术第二版.高等教育出版社2009
[3]胡汉才.单片机原理及其接口技术.清华大学出版社,2006
[4]严天峰.单片机应用系统设计与仿真调试.北京航空航天大学出版社2006
[5]张毅刚.MCS-51单片机应用设计.哈尔滨工业大学出版社.1997
7.附录
元器件名称
元器件规格
数量
单片机
AT89C51
1个
数码管
共阴极
4个
LED灯
红色
4个
黄色
4个
绿色
4个
8位移位寄存器
74LS164
4个
六反相器
74LS05
6个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 课程设计 交通灯 完整版