综合实验一:模拟交通灯控制实验一、实验目的1、了解时间常数的计算方法。2、了解 80C51 中断的工作机理、过程,掌握中断服务程序的编制。3、掌握 80C51 单片机内部定时/计数器的工作方式选择,初始化程序的设置以及中断服务子程序的设计。二、实验内容编写模拟交通灯运行控制程序。要求红绿灯亮灯延时时间为 30 秒,黄灯亮灯延时时间为 10 秒。利用二位八段 LED 显示器进行时间显示。时间显示采纳倒计时的方式。时间归零时信号进行切换。三、实验要求掌握单片机内部通用资源如中断、定时计数器、串行口及并行端口的应用。时间的延时必须采纳定时器定时中断方式进行,定时器 0 或定时器 1 可任选一个(默认为 0)。编程时请充分考虑定期器的时间扩展问题。利用二位八段 LED 显示器进行时间显示,显示码采纳串行口模式 0 进行输出。显示方式及相应的程序编写请参考实验一。显示部分的详细接线原理及对应的显示码参考图 15。掌握中断系统的基本概念及使用方法。如:中断被响应所需的必要条件;一个完整的中断响应过程;中断优先级的概念信号灯的控制由并行口 P0 口输出进行快关控制。四、实验线路图图为交通灯控制接线示意图,除红绿黄六路交通灯外,还需要用到两个八段 LED 显示器,用于显示交通灯时间显示,显示码采纳串行口模式 0 进行输出。图为八段显示器接线原理图,具体说明了串行口工作模式 0 的硬件线路。由于开发板一有 6 个八段显示器,在实验过程中除正常计时的两个八段 LED 外,将其余四个灭掉。图 交通灯控制接线示意图图 八段显示器接线原理图五、程序及注释ORG 0000HAJMP MAINORG 000BH ;定时器计数器 T0 中断矢量AJMP T0INTORG 0030HMAIN:MOV TMOD,#01H ;设定时器/计数器 T0 为方式 1,T1 为方式 0MOV SCON,#00HMOV SP,#60H ;设堆栈指针 SP 为 60HSETB TR0 ;启动定时器/计数器 T0SETB PT0 ;T0 中断为高优先级SETB ET0 ;允许定时器/计数器 T0 中断SETB EA ;开中断MOV TL0,#0B0H ;设 T0 时间常数为 100msMOV TH0,#3CH;ORG 0100HRED:SETB ;设置灯的初始状态CLR CLR CLR CLR SETB MOV R0,#30 ;红绿灯亮 30 秒MOV R1,#10 ;黄灯亮 10 秒LOOP1:MOV A,R0LCALL SHOWWAIT1:JNB ,WAIT1 ;显示管每隔 1 秒倒计数CLR DJNZ R1,WAIT1MOV R1,#10DEC R0 ;倒计时从 30 到 1CJNE R0,#00H,LOOP1YELLOW: ;设置灯的初始...