《模拟交通灯控制实验(共5页).doc》由会员分享,可在线阅读,更多相关《模拟交通灯控制实验(共5页).doc(5页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上实验报告课程名称:微机原理与接口技术 指导老师:彭勇刚 成绩:_实验名称:_实验类型:_同组学生姓名:_一、实验目的和要求(必填)二、实验内容和原理(必填)三、主要仪器设备(必填)四、操作方法和实验步骤五、实验数据记录和处理六、实验结果与分析(必填)七、讨论、心得模拟交通灯控制实验一、实验目的1、了解时间常数的计算方法。2、了解80C51中断的工作机理、过程,掌握中断服务程序的编制。3、掌握80C51单片机内部定时计数器的工作方式选择,初始化程序的设置以及中断服务子程序的设计。装 订 线二.实验内容和实验原理编写模拟交通灯运行控制程序。要求红绿灯亮灯延时时间为30秒,
2、黄灯亮灯延时时间为10秒。利用二位八段LED显示器进行时间显示。时间显示采用倒计时的方式。时间归零时信号进行切换。实验线路图如下图:专心-专注-专业 除红绿黄六路交通灯外,还需要用到两个八段LED显示器,用于显示交通灯时间显示,显示码采用串行口模式0进行输出三实验器材:1. Micetek仿真器一台2. 实验板一块四 程序及实验结果:调试通过的.LST文件如下: ORG 0000H0000 0130 AJMP MAIN ORG 000BH ;定时器T0的中断矢量000B 21A3 AJMP T0INT ; 跳转到中断服务程序 ORG 0030H MAIN:0030 MOV TMOD,#01H
3、;写控制字,T0为方式1;0033 MOV SCON,#00H0036 MOV SP,#60H ;设堆栈指针SP为60H0039 D28C SETB TR0 ;启动T0;003B D2B9 SETB PT0 ;T0中断为高优先级003D D2A9 SETB ET0 ;允许T0中断003F D2AF SETB EA ;开放CPU中断0041 758AB0 MOV TL0,#0B0H ;定时常数为100ms0044 758C3C MOV TH0,#3CH ORG 0100H RED: ;红灯0100 D280 SETB P0.0 ;设置输出的初始状态0102 C281 CLR P0.10104 C
4、282 CLR P0.20106 C283 CLR P0.30108 C284 CLR P0.4010A D285 SETB P0.5010C 781E MOV R0,#30 ;红灯亮30s010E 790A MOV R1,#10 ;黄灯亮10s0110 E8 LOOP1:MOV A,R00111 LCALL SHOW ;转移到数码显示子程序0114 3000FD WAIT1:JNB 20H.0,WAIT1 ;数码管计数间隔为1s0117 C200 CLR 20H.00119 D9F9 DJNZ R1,WAIT1 011B 790A MOV R1,#10011D 18 DEC R0 ;红灯从3
5、0s开始倒计时011E B800EF CJNE R0,#00H,LOOP1 YELLOW:0121 C280 CLR P0.0 ;设置输出的初始状态0123 D281 SETB P0.10125 C282 CLR P0.20127 C283 CLR P0.30129 D284 SETB P0.4012B C285 CLR P0.5012D 780A MOV R0,#10 ;黄灯亮的时间为10s012F 790A MOV R1,#100131 E8 LOOP2:MOV A,R00132 LCALL SHOW ;转移到数码显示子程序0135 3000FD WAIT2:JNB 20H.0,WAIT2
6、 ; 数码管计数间隔为1s0138 C200 CLR 20H.0013A D9F9 DJNZ R1,WAIT2013C 790A MOV R1,#10 ;黄灯从10s开始倒计时013E 18 DEC R0013F B800EF CJNE R0,#00H,LOOP2 GREEN:0142 C280 CLR P0.0 ;设置灯的初始状态0144 C281 CLR P0.10146 D282 SETB P0.20148 D283 SETB P0.3014A C284 CLR P0.4014C C285 CLR P0.5014E 781E MOV R0,#30 ;绿灯亮30s0150 790A MOV
7、 R1,#10 ;黄灯亮10s0152 E8 LOOP3:MOV A,R00153 LCALL SHOW ;转移到数码显示子程序0156 3000FD WAIT3:JNB 20H.0,WAIT30159 C200 CLR 20H.0015B D9F9 DJNZ R1,WAIT3015D 790A MOV R1,#10015F 18 DEC R0 ;数码管从30开始倒计时0160 B800EF CJNE R0,#00H,LOOP3 0163 LJMP MAIN SHOW: ;数码显示子程序0166 8821 MOV 21H,R00168 8922 MOV 22H,R1016A 75F00A MO
8、V B,#10016D 84 DIV AB016E MOV DPTR,#TAB0171 93 MOVC A,A+DPTR0172 F54B MOV 4BH,A0174 E5F0 MOV A,B0176 93 MOVC A,A+DPTR0177 F54A MOV 4AH,A0179 754CFF MOV 4CH,#0FFH ;前四个数码管灭017C 754DFF MOV 4DH,#0FFH017F 754EFF MOV 4EH,#0FFH0182 754FFF MOV 4FH,#0FFH0185 794A MOV R1,#4AH0187 7806 MOV R0,#06H ;循环次数为6次0189
9、 E7 TRAN:MOV A,R1018A C299 CLR TI018C F599 MOV SBUF,A018E 3099FD HERE:JNB TI,HERE0191 09 INC R10192 D8F5 DJNZ R0,TRAN ;循环6次,显示数码管相应状态0194 A821 MOV R0,21H0196 A922 MOV R1,22H0198 22 RET TAB:0199 C0F9A4 019C B09992 019F 82F880 01A2 90 DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H T0INT: ;中断服务程序01A3
10、758C3C MOV TH0,#3CH01A6 758AB0 MOV TL0,#0B0H01A9 D200 SETB 20H.001AB D28C SETB TR001AD 32 RETI ;中断结束 实验结果如图:五 心得体会:通过本次实验我了解了80C51中断的工作机理、过程并初步掌握了80C51单片机内部定时计数器的工作方式选择,初始化程序的设置以及中断服务子程序的设计,深化了对于课上理论知识的学习。我认为本次实验综合型较强,在编写程序时有以下几个关键点:一是理解数码管的接线原理图;二是正确使用中断系统,如定时常数的设置,中断服务子程序的编写等;三是一些使用汇编语言编写程序的基本方法和结构,如使用CJNE、DJNE等指令构造循环结构以实现灯的倒计时计数。