交通灯系统设计实验报告.docx
《交通灯系统设计实验报告.docx》由会员分享,可在线阅读,更多相关《交通灯系统设计实验报告.docx(15页珍藏版)》请在冰豆网上搜索。
交通灯系统设计实验报告
陕西工业职业技术学院
2010/2011学年第1学期
电子线路设计与仿真
实训报告
课程名称:
电子线路设计与仿真课程设计
—交通灯的控制与设计
班级:
电信0901
姓名:
何雷刚
教学周数:
2周(第17、18周)
地点:
系统控制实验室行知楼(502)
指导教师:
董少明、田宝珍
交通灯的控制与设计
一、课程设计目的、要求与思路
1.1设计目的
(1)加强对单片机和汇编语言的认识,充分掌握和理解设计各部分的工作原理、设计过程、选择芯片器件、模块化编程等多项知识。
(2)用单片机模拟实现具体应用,使个人设计能够真正使用。
(3)把理论知识与实践相结合,并且提高自己的实践动手能力。
(4)提高利用已学知识分析和解决问题的能力。
1.2设计要求
设计个单片机控制的交通灯控制系统,可以实现以下功能:
(1)A道和B道上均有车辆要求通过时,A,B道轮流放行。
A道放行29秒钟,B道放行29秒钟。
(2)一道有车而另一道无车,交通灯控制系统能立即让有车道放行。
(3)绿灯转换为红灯时黄灯亮3秒钟。
1.3设计思路
硬件设计部分,为实现所要求的功能,首先参考多种参考资料,选用AT89C51单片机为硬件设计的核心器件。
它具有128*8位内部RAM,有32根可编程I/O线、两个16位定时器/计数器、5个中断源、可编程串行通道、低功耗的闲置和掉电模式、片内振荡器和时钟电路。
用数码管显示黄、红、绿灯,通过中断扩展实现交通灯系统特殊情况的转换;软件设计部分,分为一个主程序和两个中断子程序。
二、系统总体方案及硬件设计
2.1系统总体方案
显示时间
80C51系统处理器
交
通
灯
的
控
制
最小系统
数码管
2.2硬件设计
(1)AT89C51简介
●功能
AT89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压、高性能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口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。
PSEN:
外部程序存储器的选通信号。
EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
当/EA端保持高电平时,此间内部程序存储器。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
●振荡器特性
XTAL1和XTAL2分别为反向放大器的输入和输出。
该反向放大器可以配置为片内振荡器。
石晶振荡和陶瓷振荡均可采用。
如采用外部时钟源驱动器件,XTAL2应不接。
有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。
●芯片擦除
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms来完成。
在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。
在闲置模式下,CPU停止工作。
但RAM,定时器,计数器,串口和中断系统仍在工作。
在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
(2)复位部分:
采用上电+按钮电平复位,复位电容采用1nF,电阻为100欧和10K欧,连接如图:
(3)晶振电路:
采用两个都为30pF的电容,一个晶振,连接如图:
(4)显示部分:
●数码管显示部分
采用四位一体共阴数码管,分别显示东和北的剩余时间,具体的共阴数码管见图。
P2.0~P2.7控制北边和西边剩余时间的个位数的显示;具体的共阴数码管见下图。
●晶体管显示部分
由于对称性,设计时只设计了东北两个方向。
由红黄绿按要求显示。
用P0端口作为输出端口,用P0.0到P0.5端口分别控制西和北两组灯的状态,低电平点亮,具体端口功能如下:
P0.0控制北边绿灯的亮灭;
P0.1控制北边黄灯的亮灭;
P0.2控制北边红灯的亮灭;
P0.3控制东边绿灯的亮灭;
P0.4控制东边黄灯的亮灭;
P0.5控制东边红灯的亮灭;
三、软件系统的设计
3.1时间的设定
采用软延时的方法。
MCS-51单片机的工作频率为12MHZ,机器周期是时钟周期的12倍,所以一个机器周期12*(1/12M)=1us。
我们可以知道具体没条指令的周期数,这样我们就可以通过指令的执行条数来确定时间。
延时10MS程序如下:
DLY10MS:
MOVR6,#20H
D1:
MOVR7,248
DJNZR7,$
DJNZR6,D1
RET
延时100MS程序如下:
DLY100MS:
MOVR6,#200
D10:
MOVR7,248
DJNZR7,$
DJNZR6,D10
RET
3.2主程序
在程序中,P0口作为红绿灯的输出口,其中P0.0~P0.2作为北边红黄绿灯的接口,P0.3~P0.5作为东边红黄绿灯的接口。
P2.0~P2.7作为数码管的输出部分,其程序如下:
ORG0000H
LJMPMAIN
ORG0050H
MAIN:
MOVP0,#10011110B
MOVP3,#11110111B
MOVR3,#002H
KS:
MOVR0,#000H
MOVR1,#007H
MOVR2,#000H
DJS:
MOVP1,#001H
MOVA,R0
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP2,A
CLRA
LCALLYS
MOVP1,#002H
MOVA,R1
MOVCA,@A+DPTR
MOVP2,A
CLRA
LCALLYS
INCR2
CJNER2,#007H,DJS
MOVR2,#000H
INCR0
CJNER0,#00AH,DJS
MOVR0,#000H
INCR1
CJNER1,#00AH,DJS
MOVR4,#004H
MOVR1,#006H
HD:
MOVP1,#002H
MOVA,#0FCH
MOVP2,A
LCALLYS
CLRA
MOVP1,#001H
MOVA,R1
MOVCA,@A+DPTR
MOVP2,A
MOVP0,#01101101B
MOVP3,#11111011B
LCALLYS
INCR2
CJNER2,#007H,HD
MOVR2,#000H
MOVP2,#000H
MOVP0,#0FFH
MOVP3,#0FFH
LCALLYS1
INCR1
DJNZR4,HD
MOVR4,#000H
MOVP0,#11110011B
MOVP3,#11111100B
DJNZR3,KS
LJMPMAIN
YS:
MOVR7,#055H
MOVR6,#055H
XX:
DJNZR6,$
DJNZR7,XX
RET
YS1:
MOVR7,#0FFH
MOVR6,#0FFH
XX1:
DJNZR6,$
DJNZR7,XX1
RET
TAB:
DB0F6H,0FEH,0E0H,0BEH,0B6H,66H,0F2H,0DAH,60H,0FCH
END
四、Proteus软件仿真
4.1系统原理图
4.2初始状态1仿真图
东边绿灯亮,北边红灯亮
4.3状态2仿真图
北边和东边黄灯闪烁
4.4状态3仿真图
北边的红灯和东边的绿灯亮
五、焊接电路板
5.1焊接的基本步骤
(1)烙铁头上先熔化少量的焊锡和松香,将烙铁头和焊锡丝同时对准焊点。
(2)在烙铁头上的助焊剂尚未挥发完时,将烙铁头和焊锡丝同时接触焊点,开始熔化焊锡。
(3)当焊锡浸润整个焊点后,同时移开烙铁头和焊锡丝。
焊接过程一般以2~3s为宜。
焊接集成电路时,要严格控制焊料和助焊剂的用量。
为了避免因电烙铁绝缘不良或内部发热器对外壳感应电压而损坏集成电路,实际应用中常采用拔下电烙铁的电源插头趁热焊接的方法。
5.2焊接中出现的问题及解决方法
出现的问题:
焊脚太大或太小,电路出现连接的时连接的现象
焊出来的板子出现虚焊,电路有时无法导通。
解决的方法:
焊接前,应对元器件引脚或电路板的焊接部位进行处理,一般有“刮”、“镀”、“测”三个步骤:
“刮”:
就是在焊接前做好焊接部位的清洁工作。
一般采用的工具是小刀和细砂纸,对集成电路的引脚、印制电路板进行清理,去除其上的污垢,清理完后一般还需要往待拆元器件上涂上助焊剂。
“镀”:
就是在刮净的元器件部位上镀锡。
具体做法是蘸松香酒精溶液涂在刮净的元器件焊接部位上,再将带锡的热烙铁头压在其上,并转动元器件,使其均匀地镀上一层很薄的锡层。
“测”:
就是利用万用表检测所有镀锡的元器件是否质量可靠,若有质量不可靠或已损坏的元器件,应用同规格元器件替换。
六、焊接结果
七、课程设计体会
通过这次做交通灯的课程设计,自己再次学习了微机原理,并认真复习单片机,查阅和浏览了很多的相关资料,并且对proteus软件的使用有了一定的了解。
软件模拟时,我们用proteus仿真软件运行,发现有时两个绿灯同时亮,当有紧急车辆通过时,两个红灯不受按键控制,出现抖动现象等等一系列的问题。
但是最后在同学的帮助下终于完成任务。
通过这次学习,发现自己对书本的掌握只是很表层的一部分,离实际应用还有很大一段距离。
真是不用不知道,一用吓一跳。
做课程设计期间,自己进一步学习了单片机书上的例子,而且学习了许多书本之外的东西。
尤其是,和几个同学一起进行编程调试进而运行时期间,发现自己还算比较喜欢编程。
这次做单片机课程设计也对自己以后的学习方向有很大的影响。
附1:
源程序代码
ORG0000H
LJMPMAIN
ORG0050H
MAIN:
MOVP0,#10011110B
MOVP3,#11110111B
MOVR3,#002H
KS:
MOVR0,#000H
MOVR1,#007H
MOVR2,#000H
DJS:
MOVP1,#001H
MOVA,R0
MOVDPTR,#TAB
MOVCA,@A+DPTR
MOVP2,A
CLRA
LCALLYS
MOVP1,#002H
MOVA,R1
MOVCA,@A+DPTR
MOVP2,A
CLRA
LCALLYS
INCR2
CJNER2,#007H,DJS
MOVR2,#000H
INCR0
CJNER0,#00AH,DJS
MOVR0,#000H
INCR1
CJNER1,#00AH,DJS
MOVR4,#004H
MOVR1,#006H
HD:
MOVP1,#002H
MOVA,#0FCH
MOVP2,A
LCALLYS
CLRA
MOVP1,#001H
MOVA,R1
MOVCA,@A+DPTR
MOVP2,A
MOVP0,#01101101B
MOVP3,#11111011B
LCALLYS
INCR2
CJNER2,#007H,HD
MOVR2,#000H
MOVP2,#000H
MOVP0,#0FFH
MOVP3,#0FFH
LCALLYS1
INCR1
DJNZR4,HD
MOVR4,#000H
MOVP0,#11110011B
MOVP3,#11111100B
DJNZR3,KS
LJMPMAIN
YS:
MOVR7,#055H
MOVR6,#055H
XX:
DJNZR6,$
DJNZR7,XX
RET
YS1:
MOVR7,#0FFH
MOVR6,#0FFH
XX1:
DJNZR6,$
DJNZR7,XX1
RET
TAB:
DB0F6H,0FEH,0E0H,0BEH,0B6H,66H,0F2H,0DAH,60H,0FCH
END
2020年6月25日星期四