交通灯模拟控制系统设计.docx
《交通灯模拟控制系统设计.docx》由会员分享,可在线阅读,更多相关《交通灯模拟控制系统设计.docx(14页珍藏版)》请在冰点文库上搜索。
交通灯模拟控制系统设计
目录
一、一级标题1
1.二级标题1
2.二级标题1
二、标题1
1.二级标题1
2.二级标题1
三、标题1
1.二级标题1
2.二级标题1
四、标题1
1.二级标题1
2.二级标题1
五、标题2
1.二级标题2
2.二级标题2
一、设计目的
1.知识目标
1.熟悉单片机系统设计流程
2.能力目标
1.具备电路制作能力
2.具备整机调试能力
3.素质目标
1.培养团队协作精神
2.培养创新能力
2、任务描述
用单片机设计以交通信号灯模拟控制系统,晶振采用12MHz,具体要求如下:
(1)在正常情况下,A、B道(A、B道交叉组成十字路口,A是主道,B是支道)轮流放行60s(其中5s用于警告),B道放行30s(其中5s用于警告)。
(2)一道有车而另一道无车(用按键开关S1、S2模拟)时,使有车车道放行。
(3)有紧急车辆通过(用按键开关S0模拟)时,A、B道均为红灯。
3、知识点归纳与讲解
1.整体设计分析
(1)正常情况下运行主程序,采用0.5s延时子程序的反复调用来实现各种定时时间。
(2)一道有车而另一道无车时,采用外部中断1方式进入与其相应的中断服务程序,并设置该中断为低优先级断。
(3)有紧急车辆通过时,采用外部中断0方式进入相应的中断服务程序,并设置该中断为高优先级中断,实现中断嵌套。
二、交通信号灯模拟控制系统设计程序流程图
开始
↓
初始化
↓
A绿等、B红灯
↓
延时55秒
↓
A绿灯闪烁3次
↓
A黄灯、B红灯
↓
延时2秒
↓
A红灯、B绿灯
↓
延时25秒
↓
B绿灯闪烁3次
↓
B黄灯、A红灯
↓
延时2秒
1.二级标题
2.二级标题
三、交通信号灯模拟控制系统主程序
ORG0000H
AJMPMAIN4
ORG0003H
AJMPAA0
ORG0013H
AJMPAA1
MAIN4:
SETBPX0
MOVTCON,#00000000B
MOVTMOD,#00010000B
MOVIE,#10000101B
CRY1:
MOVP1,#00001100B
MOVR2,#5
DISP1:
ACALLdelay
DJNZR2,DISP1
MOVR2,#6
LOW2:
CPLP1.2
ACALLdelay
DJNZR2,LOW2
MOVR2,#4
CRY3:
MOVP1,#00001010B
ACALLdelay
DJNZR2,CRY3
MOVP1,#00100001B
MOVR2,#5
DISP2:
ACALLdelay
DJNZR2,DISP2
MOVR2,#6
LOW3:
CPLP1.5
ACALLdelay
DJNZR2,LOW3
MOVR2,#4
CRY6:
MOVP1,#00010001B
ACALLdelay
DJNZR2,CRY6
AJMPCRY1
SJMP$
//MAIN3:
MOVR5,#10
//MAIN2:
MOVR3,#100
//MAIN1:
MOVR1,#100
//LOW1:
NOP
//NOP
//NOP
//DJNZR1,LOW1
//DJNZR3,MAIN1
//DJNZR5,MAIN2
//RET
AA0:
PUSHP1
PUSH03H
PUSHTH1
PUSHTL1
mova,p1
MOVP1,#09H//1111011000001001
MOVR5,#10
DELAY0:
ACALLDELAY
DJNZR5,DELAY0
movp1,a
POPTL1
POPTH1
POP03H
POPP1
RETI
AA1:
CLREA
PUSHP1
PUSH03H
PUSHTH1
PUSHTL1
mova,p1
SETBEA
JNBP3.0,BP
MOVP1,#0CH
SJMPDELAY1
BP:
JNBP3.1,EXIT
MOVP1,#21H
DELAY1:
MOVR6,#0AH
NEXT:
ACALLDELAY
DJNZR6,NEXT
EXIT:
movp1,a
CLREA
POPTL1
POPTH1
POP03H
POPP1
SETBEA
RETI
DELAY:
MOVR3,#0AH
MOVTH1,#3CH
MOVTL1,#0B0H
SETBTR1
LP1:
JBCTF1,LP2
SJMPLP1
LP2:
MOVTH1,#3CH
MOVTL1,#0B0H
DJNZR3,LP1
RET
END
四、交通信号灯模拟控制系统原理图
1.单片机最小系统原理图
2.交通灯示意图
3.紧急开关电路图
五、主要元器件介绍
1.AT89C52单片机
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程
AT89S52引脚图DIP封装
Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
AT89S52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,AT89S52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0不具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.1分别作定时器/计数器2的外部计数输入(P1.0/T2)和定时器/计数器2的触发输入(P1.1/T2EX)。
在flash编程和校验时,P1口接收低8位地址字节。
引脚号第二功能:
P1.0T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5MOSI(在系统编程用)
P1.6MISO(在系统编程用)
P1.7SCK(在系统编程用)
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动
AT89S52引脚图PLCC封装
4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部存储存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p3输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。
在flash编程和校验时,P3口也接收一些控制信号。
端口引脚第二功能:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2INTO(外中断0)
P3.3INT1(外中断1)
P3.4TO(定时/计数器0)
P3.5T1(定时/计数器1)
P3.6WR(外部数据存储器写选通)
P3.7RD(外部数据存储器读选通)
此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。
RST:
复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
ALE/PROG:
当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
PSEN:
程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当AT89S52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP:
外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。
FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp。
XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
一、心得体会
在这次单片机实训中,我感谢老师对我的指点和教导,让我受益匪浅学到了很多东西,同时我也认识到要想学好专业知识就需要我们脚踏实地的学习,在实践中我们要严谨,细心,特别是不管怎么样,先感谢学校给我的这么多机会,真正的学到了东西。
随着电子技术的发展,特别是随着大规模集成电路的产生,给人们的生活带来了根本性的变化,我们就学习了单片机这门课程,感觉是有点难。
也不知道整个学习过程是怎么过来得,可是时间不等人。
单片机是一门很好的学问,需要我去钻研它。
时光飞逝,一转眼,一个学期就过了一半,本学期的单片机综合课程设计也在一周内完成了。
俗话说“好的开始是成功的一半”。
说起课程设计,我认为最重要的就是做好设计的预习,认真的研究老师给的题目,选一个自己有兴趣的题目。
其次,老师对实验的讲解要一丝不苟的去听去想,因为只有都明白了,做起设计就会事半功倍,如果没弄明白,就迷迷糊糊的去选题目做设计,到头来一点收获也没有。
最后,要重视程序的模块化,修改的方便,也要注重程序的调试,掌握其方法。
在全组人竭尽全力,老师的精心指导下,程序基本编写成功,这是我们共同努力的结果,在享受我们成果之时,不得不感慨单片机的重要性与高难度性,所以为期一周的单片机课程设计没有浪费我我们学到了很多知识,也让我们对单片机有了更深一步的了解,虽然最后结果是出来了,可这与老师的精心指导是分不开的她引导我们的思路,本来一窍不通的我们经过老师的点拨基本上通了,所以老师是功不可没的。
这次实习我们使用控制电路的单片机是AT89S52。
开始点亮第一个发光二极管就出问题,这对准备大干一场的我是个不小的打击。
老师过来检查发现我用的是P0口,而其他同学用的是P1口,十分欣慰,指正P0口应从第二个端口接线。
之后的实习也是波折起伏,发光二级管,数码管,独立按键,定时计速器,程序调试无数次,从中也总结出不少调试的技巧,写好一个漂亮的程序,首先需要冷静的思考,其次需要细心的排序,排除先后主次的关系。
接着逻辑性要明显,每一句要明确存在的意义。
其中有很多程序是我自己写的,因为一个跟着老师板书的学生是永远没有自己的作品的。
虽然其中存在很多错误,但是我在调试中成长。
一个星期的实习很快就过去了。
在此我感谢老师的教导,感谢同学们的鼓励,感谢自己的独树一帜,让我对这个小小的电路板有了大大的认识。
总而言之,单片机课程设计对于我们有很大的帮助,我们从中受益匪浅。
2.二级标题
若正文部分有图和表:
图1引脚定义(图标题为五号宋体加粗居中)
表1P3口的备选功能(表标题为五号宋体加粗居中)
引脚
第二功能
信号名称
P3.0
P3.1
P3.2
P3.3
P3.4
P3.5
P3.6
P3.7
RXD
TXD
INT0
INT1
T0
T1
WR
RD
串行数据接收
串行数据发送
外部中断0请求
外部中断1请求
定时器/计数器0计数输入
定时器/计数器1计数输入
外部RAM写选通
外部RAM读选通