单片机课程设计(交通灯)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《单片机原理》课程设计任务书
班级:2006电子6,10
一.实训目的
1. 熟悉软件的操作和使用方法;
2.了解单片机中断系统、定时/计数器的编程应用
3.进一步熟练使用开发系统的各种调试方法。
二.设备
89C51 基本实验单元、计算机设备系统、发光二极管显示单元
三.实训原理
(一)实训说明
用8051单片机设计一交通信号灯模拟控制系统,能够完成正常情况下的轮流放行以及特殊情况和紧急情况下的红绿灯控制
1.掌握单片机中断系统、定时/计数器的编程应用。
2.通过对交通灯控制程序的编写与调试,掌握中断程序的结构。
3.正常情况下A、B道(A、B道交叉组成十字路口,A是主道,B是支道)轮流放行,A道放行1分钟(其中5秒用于警告),B道放行30秒(其中5秒用于警告)。
4.一道有车而另一道无车时,使有车车道放行,K2键按下表示A道有车,K3键按下表示B道有车。
5.K1键按下表示有紧急车辆通过时,A、B道均为红灯。
控制码表
(二)实训连线表
注:74LS08安装在A15模块的U1位置,上对齐。(三)程序流程图
主程序一道有车、一道无车时的中断服务程序(INT1)
紧急情况时的中断服务程
序(INT0)
交通信号灯模拟控制系统程序流程图
四. 实训步骤
1. 输入程序并检查无误,对程序进行汇编、调试,然后烧写程序到89c51单片机;
2. 连接A01、A06、A08和A15各相应的引脚;
3. 运行程序,看交通灯是否正常运行,按下K5、K1键,观察交通灯的变化情况,按下K9键看是不是两道交通灯都变为红灯。
五 思考题
改变程序,同时实现左转弯和右转弯控制?
课程设计时间及进度安排
课程设计集中在一周(5天)进行。为保证达到预计的教学任务及目的,以小组为单位分别进行资料的收集、方案论证、电路设计、编程、调试、实验及
设计报告中的几点说明
设计完成后,要求每个同学写出设计报告。设计报告包括设计过程、逻辑电路图、程序框图、程序、调试说明、心得体会等内容,逻辑电路图和程序框图必须按照下列原则画出。
1、程序框图的原则是:
①程序框图一般有几个框图构成,通常所有的框图画在一张图纸上。所画框图不必太详细,也不能太模糊,关键是要反映出程序的主要思路,逻辑顺序,输入输出以及控制点的设计思想。
②框图要能清晰地表示出控制信息和数据信息的流向。信息的流向可以是任意的,通常由左至右、自上到下。
③所有框图和连线必须清晰整齐。
2、画逻辑电路图的原则是:
①一般把电路的输入端画在左边,输出端画在右边,重要的电路画在上部,不重要的画在下部。
②所有通路应尽量连接,连接线可交叉,但若相交则要用一个圆点表示。如果走线拥挤须将通路分开画时,应在断口两端做上标记。
③超出一张纸的逻辑电路,应使用同一坐标系统(像地图一样),标出信号从一张到另一张的引出点和引入点。
参考程序:
BANK0_REG EQU 00H ;选择第0组寄存器
BANK1_REG EQU 08H ;选择第1组寄存器
BANK2_REG EQU 10H ;选择第2组寄存器
BANK3_REG EQU 18H ;选择第3组寄存器
ORG 0000H
LJMP MAIN ;指向主程序
ORG 0003H
LJMP EMERG ;指向紧急车辆出现中断程序外部中断0
ORG 0013H
LJMP ONEBUSY ;指向一道有车另一道无车中断程序外部中断1
ORG 0100H
MAIN:
lcall delay
MOV PSW,#BANK0_REG
MOV SP,#30H
SETB PX0 ;置外部中断0为高优先级中断
MOV TCON,#00H ;置外部中断0,中断1为电平触发
MOV TMOD,#10H ;置定时器1为方式1
MOV IE,#85H ;开CPU中断,开外中断0、中断1中断
Again:
MOV P1,#06 ;0F3H ;;A绿灯放行,B红灯禁止
MOV R2,#110 ;置0.5秒循环次数
DISP1:
LCALL DELAY ;调用0.5秒延时子程序
DJNZ R2,DISP1 ;55秒不到继续循环
MOV R2,#06 ;3秒钟置A绿灯闪烁循环次数WARN1:
CPL P1.2 ;A绿灯闪烁
LCALL DELAY
DJNZ R2,WARN1 ;闪烁次数未到继续循环
MOV P1,#0ah ;F5H A黄灯警告,B红灯禁止
MOV R2,#04
YEL1:
LCALL DELAY
DJNZ R2,YEL1 ;2秒未到继续循环
MOV P1,#021h ;DEH A红灯,B绿灯
MOV R2,#50
DISP2:
LCALL DELAY
DJNZ R2,DISP2 ;25秒未到继续循环
MOV R2,#06H
WARN2:
CPL P1.5 ;B绿灯闪烁
LCALL DELAY
DJNZ R2,WARN2
MOV P1,#011h ;EEH; A红灯,B黄灯
MOV R2,#04H
YEL2:
LCALL DELAY
DJNZ R2,YEL2
LJMP Again ;循环执行主程序
;---------------------------------------------- ;紧急情况中断子程序
;---------------------------------------------- EMERG:
PUSH P1 ;P1口数据压栈
PUSH 02H ;R2寄存器压栈
PUSH TH1 ;TH1压栈
PUSH TL1 ;TL1压栈
MOV P1,#09H ;0f6h A,B道均为红灯
MOV R5,#40 ;置20秒循环初值DELAY0:
LCALL DELAY
DJNZ R5,DELAY0 ;20秒未到继续循环
POP TL1 ;弹栈恢复现场
POP TH1
POP 03H