实验3 模拟交通灯控制实验

  • 格式:doc
  • 大小:281.00 KB
  • 文档页数:7

下载文档原格式

  / 7
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

综合实验一:模拟交通灯控制实验

一、实验目的

1、了解时间常数的计算方法。

2、了解80C51中断的工作机理、过程,掌握中断服务程序的编制。

3、掌握80C51单片机内部定时/计数器的工作方式选择,初始化程序的设置以及中断服务子程序的设计。

二、实验内容

编写模拟交通灯运行控制程序。要求红绿灯亮灯延时时间为30秒,黄灯亮灯延时时间为10秒。利用二位八段LED显示器进行时间显示。时间显示采用倒计时的方式。时间归零时信号进行切换。

三、实验要求

掌握单片机内部通用资源如中断、定时计数器、串行口及并行端口的应用。

时间的延时必须采用定时器定时中断方式进行,定时器0或定时器1可任选一个(默认为0)。编程时请充分考虑定期器的时间扩展问题。

利用二位八段LED显示器进行时间显示,显示码采用串行口模式0进行输出。

显示方式及相应的程序编写请参考实验一。显示部分的详细接线原理及对应的显示码参考图15。

掌握中断系统的基本概念及使用方法。如:中断被响应所需的必要条件;一个完整的中断响应过程;中断优先级的概念

信号灯的控制由并行口P0口输出进行快关控制。

四、实验线路图

图为交通灯控制接线示意图,除红绿黄六路交通灯外,还需要用到两个八段LED显示器,用于显示交通灯时间显示,显示码采用串行口模式0进行输出。

图为八段显示器接线原理图,具体说明了串行口工作模式0的硬件线路。由于开发板一有6个八段显示器,在实验过程中除正常计时的两个八段LED外,将其余四个灭掉。

图交通灯控制接线示意图

图八段显示器接线原理图五、程序及注释

ORG 0000H

ORG 000BH ;定时器计数器T0中断矢量

AJMP T0INT

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 ;设置灯的初始状态

CLR

CLR

CLR

CLR

SETB

MOV R0,#30 ;红绿灯亮30秒

MOV R1,#10 ;黄灯亮10秒

LOOP1:MOV A,R0

WAIT1:JNB ,WAIT1 ;显示管每隔1秒倒计数CLR

DJNZ R1,WAIT1

MOV R1,#10

DEC R0 ;倒计时从30到1 CJNE R0,#00H,LOOP1

YELLOW: ;设置灯的初始状态CLR

SETB

CLR

CLR

SETB

CLR

MOV R0,#10 ;黄灯亮10秒MOV R1,#10

LOOP2:MOV A,R0

LCALL SHOW

WAIT2:JNB ,WAIT2

CLR

DJNZ R1,WAIT2

MOV R1,#10

DEC R0

CJNE R0,#00H,LOOP2

GREEN:

CLR

CLR

SETB

SETB

CLR

CLR

MOV R0,#30

MOV R1,#10

LOOP3:MOV A,R0 LCALL SHOW

WAIT3:JNB ,WAIT3 CLR

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

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

SETB TR0

RETI

六、实验心得和体会

本次实验综合性较高,囊括了半本书的知识范围。在最初写程序时,我不时参考课本266页的程序,但也遇到了很大的困难,最终是和同学讨论着完成的。一个实验有不同的的程序,用不同的思路写出来的程序不同。