单片机交通灯控制系统综合设计文档格式.docx
《单片机交通灯控制系统综合设计文档格式.docx》由会员分享,可在线阅读,更多相关《单片机交通灯控制系统综合设计文档格式.docx(36页珍藏版)》请在冰豆网上搜索。
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—FalshProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
具有128*8位内部RAM,有32根可编程I/O线、两个16位定时器/计数器·
5个中断源、可编程串行通道、低功耗的闲置和掉电模式、片内振荡器和时钟电路。
管脚说明:
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)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节
PSEN:
外部程序存储器的选通信号。
EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
当/EA端保持高电平时,此间内部程序存储器。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
振荡器特性:
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
芯片擦除:
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
(2)复位部分:
采用上电+按钮电平复位,复位电容采用
电阻
,连接如图:
(3)显示部分:
数码管显示部分
采用四位一体共阴数码管,分别显示西和北的剩余时间,A到G为码段控制端口,1到4为片选端口。
数码段显示部分通过74LS245接单片机管脚的P0口,片选部分由P2.0到P2.1提供,具体的共阴数码管见图。
其中P2.1控制北边和西边剩余时间的十位数的显示;
P2.0控制北边和西边剩余时间的个位数的显示。
晶体管显示部分
由于对称性,设计时只设计了西北两个方向。
由红黄绿按要求显示。
用P1端口作为输出端口,用P1.2到P1.7端口分别控制西和北两组灯的状态,低电平点亮,具体端口功能如下:
P1.2控制北边红灯的亮灭;
P1.3控制北边黄灯的亮灭;
P1.4控制北边绿灯的亮灭;
P1.5控制东边红灯的亮灭;
P1.6控制东边黄灯的亮灭;
P1.7控制东边绿灯的亮灭。
(4)驱动部分:
74LS245
3软件设计
3.1程序流程图
(1)T0中断服务程序
(2)外部中断零服务程序
(3)主程序
3.2软件系统设计
(1)主程序
P0口作为字形码输出口P2口输出为选信号用P1口控制交通灯的亮灭
23H为标示位,当23H为0时南北红灯亮东西绿灯亮,并进入计时;
当23H为1时东西南北黄灯亮,并进入计时;
当32H为2时南北绿灯亮东西红灯亮,并进入计时;
当23H为1时东西南北黄灯亮,并进入计时。
27H为特殊情况标示位,当27H为0时南北红灯东西绿灯亮。
当27H为2时南北绿灯东西红灯亮。
还有通过标示位2FH.0来判断是否进入东西南北都红的紧急状态。
ORG0100H
MAIN:
MOVSP,#50H
MOVTCON,#05H;
定义中断方式
MOV20H,#05H;
时间计数单元,A道放行时间
MOV21H,#02H;
黄灯亮时间
MOV22H,#05H;
B道放行时间
MOV23H,#00H;
交通灯转换标示位
MOV24H,#05H;
时间欲存区,A道放行时间
MOV25H,#02H;
MOV26H,#05H;
MOV27H,#0FFH;
特殊情况下转换标示位
MOV28H,#01H;
MOV30H,#05H;
显示缓存区
MOV31H,#00H
MOVTMOD,#01H;
16位计数器
MOVTH0,#03CH
MOVTL0,#0B0H
MOVIE,#10000111B
SETBTR0;
T0启动计数
MOVR2,#13H
MOVP2,#0FFH
ML1:
ACALLDISP
MOVA,23H
CJNEA,#00H,X1
SETBP1.2
CLRP1.3
CLRP1.4
CLRP1.5
CLRP1.6
SETBP1.7
X1:
CJNEA,#01H,X2
CLRP1.2
SETBP1.3
SETBP1.6
CLRP1.7
X2:
CJNEA,#02H,X3
SETBP1.4
SETBP1.5
X3:
CJNEA,#03H,X4
X4:
JNB2FH.0,ML2
AJMPX4
ML2:
JBTR0,ML1
MOVA,27H
CJNEA,#00H,X11
X11:
CJNEA,#01H,X21
X21:
CJNEA,#02H,X31
X31:
JBP1.0,M1
M1:
MOVC,P1.0;
按键消振
JCM2
M2:
LCALLDELAY
MOVC,P1.0
JCML10
STOP1:
JNCSTOP1
MOVR0,#20H
MOVR1,#24H
MOVA,27H;
加一
MOV23H,A
CLRC
ADDA,R1
MOVR1,A
ADDA,R0
MOVR0,A
INC@R1
MOVA,@R1
CJNEA,#100,H1
MOVA,#00H
MOV@R1,A
H1:
MOV@R0,A
MOVB,#0AH
DIVAB
MOV31H,A
MOV30H,B
ML10:
JBP1.1,M3
M3:
MOVC,P1.1;
JCM4
M4:
MOVC,P1.1
JCML2
STOP2:
JNCSTOP2
减一
DEC@R1
CJNEA,#0FFH,H2
MOVA,#99
H2:
LJMPML1
DELAY:
MOVR4,#14H
DL00:
MOVR5,#0FFH
DL11:
DJNZR5,DL11
DJNZR4,DL00
RET
(2)T0中断服务程序
T0主要是完成计时,和标示位更值得功能。
当23H为0时按20H内的初值计时,当23H为1和3时按21H内的初值计时,当23H为2时按22H内的的初值计时。
*********TIMEPROCESS******
TIME:
PUSHACC
PUSHPSW
DJNZR2,RET0
MOVR2,#13H
MOVA,23H
CJNEA,#00H,L1
MOVA,20H
CLRC
DECA
CJNEA,#0FFH,GO11
INCA
MOV23H,A
MOVA,24H
MOV20H,A
LJMPL1
GO11:
MOV20H,A
LJMPRET0
L1:
CJNEA,#01H,L2
MOVA,21H
CLRC
DECA
CJNEA,#0FFH,GO12
INCA
MOVA,25H
MOV21H,A
LJMPL2
GO12:
L2:
CJNEA,#02H,L4
MOVA,22H
CJNEA,#0FFH,GO13
MOVA,26H
MOV22H,A
LJMPL4
GO13:
RET0:
POPPSW
POPACC
RETI
L4:
CJNEA,#03H,RET0
MOVA,21H
CJNEA,#0FFH,GO14
MOVA,#00H
MOVA,25H
MOV21H,A
LJMPRET0
GO14:
LJMPRET
(3)外部中断零服务程序
外部中断零服务程序主要完成的是特殊情况下交通灯状态标示位的转换当P3.0和P3.1有键按下式停T0中断,进入相应键的处理,当第二次有键按下式,若是相同键即推出中断服务程序,若是相异键,就改变特殊情况状态标示位。
SECTION1:
PUSHACC
PUSHPSW
QQQ:
MOVC,P3.0;
JCJJJ
ACALLDELAY
MOVC,P3.0
STOP3:
JNCSTOP3
CLRTR0
CJNEA,#00H,PPP1
MOVA,#0FFH
MOV27H,A
MOV28H,#01H
SETBTR0
AJMPPP1
PPP1:
CJNEA,#02H,PPP
MOV27H,#00H
PPP:
INC27H
PP1:
JJJ:
MOVC,P3.1;
JCQQQ
MOVC,P3.1
STOP4:
JNCSTOP4
MOVA,28H
CJNEA,#02H,GGG1
MOVA,#01H
MOV28H,A
LJMPPP1
GGG1:
CJNEA,#00H,GGG
MOV27H,#02H
MOV28H,#02H
GGG:
INC28H
MOV27H,28H
其他程序段都只是完成特定简单功能只须说明器完成功能即可。
4Proteus软件仿真
4.1初始状态0仿真图
东边绿灯亮,北边红灯亮。
4.2状态1
北边和东边黄灯闪烁。
4.3状态2
东边由黄灯闪烁转亮为红灯,同时北边由黄灯闪烁转亮为绿灯。
4.4状态3
东边和北边均黄灯闪烁。
4.5状态4
东西道有车而南北道无车时,按K0键,北边转亮红灯同时东边转亮绿灯。
4.6状态5
东西道无车而南北道有车时,按K1键,东边转亮红灯同时北边转亮绿灯。
4.7状态6
紧急车通过时,按K2键,北边和东边均转亮红灯。
5电子综合设计体会
通过这次做交通灯的课程设计,自己再次学习了微机原理,并认真复习单片机,查阅和浏览了很多的相关资料,并且对wave和proteus软件的使用有了一定的了解。
虽然提前做了一些准备工作,但完成初次编程用wave进行编译时,确也出现了一系列的问题。
例如:
有的符号未定义,源程序起始地址重复,标点符号漏写等,最终还是利用wave中的单步跟踪功能将问题一一解决。
软件模拟时,我们用proteus仿真软件运行,发现有时两个绿灯同时亮,当有紧急车辆通过时,两个红灯不受按键控制,出现抖动现象等等一系列的问题。
但是最后在同学的帮助下终于完成任务。
通过这次学习,发现自己对书本的掌握只是很表层的一部分,离实际应用还有很大一段距离。
真是不用不知道,一用吓一跳。
做课程设计期间,自己进一步学习了单片机书上的例子,而且学习了许多书本之外的东西。
尤其是,和几个同学一起进行编程调试进而运行时期间,发现自己还算比较喜欢编程。
这次做单片机课程设计也对自己以后的学习方向有很大的影响。
参考文献
期刊论文:
[1]刘心红、郭福田、孙振兴、曾丽丽,Proteus仿真技术在单片机教学中的应用(大庆石油学院应用技术学院,河北秦皇岛),实验技术与管理(ExperimentalTechnologyandManagement)2007,24(3):
96-102
[2]蔡军、曹慧英,智能交通灯控制系统的设计与实现,(重庆邮电学院,重庆400065)
重庆邮电学院学报(JournalofChongqingUniversityofPostsandTelecommunicationsJun),200416(3):
128-132
[3]杨汉祥、刘良福、邬喜辉,利用单片机改进交通灯控制系统(北京电子科技学院学报),北京电子科技学院学报(JournalofBeijingElectronicScienceandTechnologyinstitute)2005,13(4):
68-72
书、专著:
[1]余发山主编《单片机原理与应用技术》北京:
中国矿大出版社2004
[2]赖寿宏主编《微型计算机控制技术》北京:
机械工业出版社2002
[3]李朝青.单片机原理及接口技术[M].北京:
北京航空航天大学出版社,1999.87—90
[4]李广第等.单片机基础[M].北京:
北京航空航天大学出版社,2001.147-151
[5]栾桂冬,张金铎,金欢阳.传感器及其应用[M].西安:
西安电子科技大学出版社,2002.255-261
电子文献:
AT89C51单片机简介:
附1:
源程序代码
ORG0000H
LJMPMAIN
ORG0003H
LJMPSECTION1
ORG000BH
LJMPTIME
ORG0013H
LJMPSE