实验3模拟交通灯控制实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
综合实验一:模拟交通灯控制实验
一、实验目的
1、了解时间常数的计算方法。
2、了解 80C51 中断的工作机理、过程,掌握中断服务程序的编制。
3、掌握80C51 单片机内部定时/计数器的工作方式选择,初始化程序的设
置以及中断服务子程序的设计。
二、实验内容
编写模拟交通灯运行控制程序。要求红绿灯亮灯延时时间为30 秒,黄灯亮灯延时时间为10 秒。利用二位八段LED 显示器进行时间显示。时间显示采用倒
计时的方式。时间归零时信号进行切换。
三、实验要求
掌握单片机内部通用资源如中断、定时计数器、串行口及并行端口的应用。
时间的延时必须采用定时器定时中断方式进行,定时器 0 或定时器 1 可任选一个(默认为0)。编程时请充分考虑定期器的时间扩展问题。
利用二位八段LED 显示器进行时间显示,显示码采用串行口模式0 进行输出。显示方式及相应的程序编写请参考实验一。显示部分的详细接线原理及
对应的显示码参考图15。
掌握中断系统的基本概念及使用方法。如:中断被响应所需的必要条件;一
个完整的中断响应过程;中断优先级的概念
信号灯的控制由并行口P0 口输出进行快关控制。
四、实验线路图
图3.1 为交通灯控制接线示意图,除红绿黄六路交通灯外,还需要用到两个
八段 LED 显示器,用于显示交通灯时间显示,显示码采用串行口模式0 进行输出。
图 3.2 为八段显示器接线原理图,具体说明了串行口工作模式0的硬件线路。由于开发板一有 6 个八段显示器,在实验过程中除正常计时的两个八段LED 外,
将其余四个灭掉。
图3.1 交通灯控制接线示意图
图3.2 八段显示器接线原理图五、程序及注释
ORG 0000H
AJMP MAIN
ORG 000BH;定时器计数器T0 中断矢量
ORG 0030H
MAIN:
MOV TMOD,#01H ;设定时器/计数器 T0 为方式 1,T1 为方式 0 MOV SCON,#00H
MOV SP,#60H;设堆栈指针SP为 60H
SETB TR0;启动定时器 /计数器 T0
SETB PT0;T0 中断为高优先级
SETB ET0;允许定时器 /计数器 T0 中断
SETB EA;开中断
MOV TL0,#0B0H ;设T0 时间常数为100ms
MOV TH0,#3CH
;ORG 0100H
RED:
SETB P0.0;设置灯的初始状态
CLR P0.1
CLR P0.2
CLR P0.3
CLR P0.4
SETB P0.5
MOV R0,#30;红绿灯亮30 秒
MOV R1,#10;黄灯亮10 秒
LOOP1:MOV A,R0
LCALL SHOW
WAIT1:JNB 20H.0,WAIT1 ;显示管每隔 1 秒倒计数 CLR
20H.0
DJNZ R1,WAIT1
MOV R1,#10
DEC R0;倒计时从30到1
CJNE R0,#00H,LOOP1
YELLOW: ;设置灯的初始状态
CLR P0.0
SETB P0.1
CLR P0.2
CLR P0.3
SETB P0.4
CLR P0.5
MOV R0,#10;黄灯亮10 秒
MOV R1,#10
LOOP2:MOV A,R0
WAIT2:JNB 20H.0,WAIT2
CLR 20H.0
DJNZ R1,WAIT2
MOV R1,#10
DEC R0
CJNE R0,#00H,LOOP2
GREEN:
CLR P0.0
CLR P0.1
SETB P0.2
SETB P0.3
CLR P0.4
CLR P0.5
MOV R0,#30
MOV R1,#10
LOOP3:MOV A,R0
LCALL SHOW
WAIT3:JNB 20H.0,WAIT3
CLR 20H.0
DJNZ R1,WAIT3
MOV R1,#10
DEC R0
CJNE R0,#00H,LOOP3
LJMP MAIN
SHOW:
MOV 21H,R0
MOV 22H,R1
MOV B,#10
DIV AB
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV 4BH,A
MOV A,B
MOVC A,@A+DPTR
MOV 4AH,A
MOV 4CH,#0FFH;前四个显示管灭MOV 4DH,#0FFH
MOV 4EH,#0FFH
MOV 4FH,#0FFH
MOV R1,#4AH
WORD格式
MOV R0,#06H
TRAN:MOV A,@R1
CLR TI
MOV SBUF,A
HERE:JNB TI,HERE
INC R1
DJNZ R0,TRAN;循环六次,是的六个显示管有相应的状态
MOV R0,21H
MOV R1,22H
RET
TAB:
DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
T0INT:
MOV TH0,#3CH
MOV TL0,#0B0H
SETB 20H.0 SETB
TR0
RETI
六、实验心得和体会
本次实验综合性较高,囊括了半本书的知识范围。在最初写程序时,我不时参考课本266 页的程序,但也遇到了很大的困难,最终是和同学讨论着完成的。一个实验有不同的的程序,用不同的思路写出来的程序不同。