1、微机原理接口课程实习 微机原理及接口技术课程实习姓名(学号): 所在小组成员: 班级: 实习课程名:交通灯控制器设计所在学院: 信息学院任课教师: 提交时间: 2014/12/25 交通灯控制器设计摘要:十字道口的自动红绿灯是交通法规的无声命令,是司机和行人的行为准则。它具有固定的“红灯绿灯”转换间隔,并自动切换。它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。在正常的情况下,在交通灯的通行与禁止时间控制显示中,如东西、南北两方向各30秒,最后还有3到5秒的闪烁缓冲时间,也就是说两个路口轮流放行,且以2位8段数码管显示剩余时间,但是到了夜间,两个路口均为黄灯闪烁时
2、,可放行。 所利用设备及过程:为交通信号灯的实时控制和管理。利用并行接口8255A、中断接口8259A和定时器8253A,以及键盘和数码显示电路,设计一套十字路口的交通灯管理系统,通行时间(或禁止时间)30秒,准备时间3秒,在准备时间里黄灯闪烁3次,闪烁频率为0.5秒,周而复始。用 LED 数码管倒计时显示时间。 总体设计芯片选择1用实验系统8255A实现对信号灯的控制;2位数码显 示用8255A实现控制。 2. 用实验系统8235的计数器2定时向实验系统主片8259A的IRQ7请求中断,以实现要求的30秒、3秒钟定时。 实验系统8235的计数器2的CLK2接OPCLK,频率为1.19318M
3、HZ;GATE2已接 +5V; 定时采用软硬件相结合的方式实现。3. 用实验系统的发光二极管模拟红绿灯。 注:8259A的端口地址为:20H、21H 8255A的端口地址为:端口A-60H、端口B-61H、端口C-62H、控制端口-63H 8253的端口地址为:计数器0-40H、计数器1-41H、计数器2-42H、控制寄存0-43H。 设计思想设计数器2的计数初值为59520,由于CLK2接脉冲信号,频率为1.193MHZ,所以每50ms中断一次。利用CX对不同的状态时间计数,用来实现计数器2对1秒,3秒钟定时。中断子程序分为数码显示刷新部分和红绿黄灯,各种状态切换部分。每20次中断即刷新LE
4、D显示。交通灯由8255的C端口输出的数字量控制。 线路图设计 流程图设计 详细设计设计源程序1数据段定义T1 DB 00HT2 DB 03HLEDTAL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH用T1作为个位取数的指针用T2作为十位取数的指针2.芯片及其端口的初始化IN AL,21H;AND AL,08H OUT 21H,AL MOV AL,80H;初始化8255 ,A,B,C三口均工作在方式0 OUT 63H,AL MOV AL,0B6H;初始化8253,计数器#2工作在方式3,产生方波信号 OUT 43H,AL MOV AX,59500; OU
5、T 42H,AL;C口传出数据,先传低4位,然后传高4位 MOV AL,AH OUT 42H,AL3.写IRQ6和IRQ7PUSH DSMOV AX,0000HMOV DS,AXMOV AX,OFFSET IRQ7ADD AX,2000H MOV SI,003CH MOV SI,AX MOV AX,0000H MOV SI,003EH MOV SI,AX POP DSCLIPUSH AXPUSH DSMOV AX,0000HMOV DS,AXMOV AX,OFFSET IRQ6 ADD AX,2000H MOV SI,0038H MOV SI,AX MOV AX,0000H MOV SI,00
6、3AH MOV SI,AX POP DS POP AX 4.显示红绿灯主程序的设计分别设了用于显示南北道和东西道的不同段,DEC_60表示在南北方向通向,DEC_45表示在东西方向同行,由于篇幅问题,代码查看下面源程序附件。 调试与运行程序是一开始几个人一起商量后实现的,无论是在语法上和逻辑上都没有大的问题。接着用G=0000:2000运行程序,查看验证结果是否和预想的一样。 结果经装载入程序后,数码管开始显示30,代表交通灯的二极管,显示东西红灯,南北绿灯亮,每一秒数码管减一,减到3时,南北绿灯闪烁直到零换道显示,东西绿灯亮,南北红灯亮,直到数码管计数到3,绿灯闪烁,如此不断循环。当按下KK
7、+的时候,无论数码管计数到何数值都重新从30秒开始计数。 总结与体会初学微机原理时,感觉摸不着头绪。面对着众多的术语、概念及原理性的问题不知道该如何下手。在了解课程的特点后,我发现,应该以微机的整机概念为突破口,在如何建立整体概念上下功夫。由于自己没有学号汇编语言,所以在代码理解上非常吃力,有时一些稍复杂的代码都要想很久,这是没有打好基础的缘故。另外,由于我们是参考了别人的程序设计,所以也没有遇到什么很大的问题。从这次课程设计中,个人也觉得团队的重要性,分工合作不仅能促进办事效率,往往能事半功倍,一起交流还能获得一些未有的知识与见解。 参考文献1林志贵.微型计算机原理与接口技术.北京:机械工业
8、出版社,2010 附件源程序:STACK SEGMENT STACK DB 64 DUP(0) STACK ENDS DATA SEGMENT T1 DB 00HT2 DB 03HLEDTAL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,73H ;发光二极管序列化DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: CLIMOV AX,DATAMOV DS,AXMOV BX,OFFSET LEDTALPUSH DSMOV AX,0000HMOV DS,AXMOV AX,OFFSET I
9、RQ7ADD AX,2000H MOV SI,003CH MOV SI,AX MOV AX,0000H MOV SI,003EH MOV SI,AX POP DSCLIPUSH AXPUSH DSMOV AX,0000HMOV DS,AXMOV AX,OFFSET IRQ6 ADD AX,2000H MOV SI,0038H MOV SI,AX MOV AX,0000H MOV SI,003AH MOV SI,AX POP DS POP AX CLI PUSH AXPUSH DSMOV AX,0000HMOV DS,AXMOV AX,OFFSET IRQ2 ADD AX,2000H MOV S
10、I,0034H MOV SI,AX MOV AX,0000H MOV SI,0036H MOV SI,AX POP DS POP AXIN AL,21H ;开IRQ7,IRQ6,IRQ2中断源AND AL,3BH OUT 21H,AL MOV AL,80H ;初始化8255 ,A,B,C三口均工作在方式0 OUT 63H,AL MOV AL,0B6H ;初始化8253,计数器2工作在方式3,产生方波信号 OUT 43H,AL MOV AX,59500 ;传入50毫秒的初值 OUT 42H,AL ;C口传出数据,先传低4位,然后传高4位 MOV AL,AH OUT 42H,ALMLOAD: MO
11、V T1,00H ;初始值显示30秒,并开始倒计时 ,个位是0 MOV T2,03H ;设置十位是3COUNT_1: MOV CX,14H ;作为1秒的中断次数计数器 ,南北道倒计时程序 DEC_60: STI ;开中断 CALL DISP1 CMP T2,00H ;判断十位是否减到0,如果不是则保持南北道绿灯亮 JNZ K1 CMP T1,03H ;判断个位是否为3秒,如果是则用全部的灯闪烁表示黄灯 JG K1 MOV AL,33H ;此处灯显示状态不变OUT 62H,AL CMP CX,0AH ;比较是否是10,进行闪烁。JG K2 MOV AL,3FH ;绿灯二极管灭 OUT 62H,A
12、L JMP K2 K1: MOV AL,33H ;显示南北干道绿灯亮通行 OUT 62H,AL K2: CMP CX,00H ;判断是否到了一秒,然后倒计时减1 JNZ DEC_60 CMP T1,03H ;如果够1秒,且个位大于3秒JG LIGHT_60 CMP T2,00H ;小于3秒判断十位是否为零?唔为零,则跳到判断各位是否为零JNZ N1 TEST T1,0FFH ;判断是否个位、十位均减到0 JNZ LIGHT_60 ;不是则继续倒计时 JMP SLOAD ;是则(标志位ZF=0)跳转到东西干道程序 N1: TEST T1,0FFH ;此处的功能是判断个位是否为0,且十位不为0 J
13、NZ LIGHT_60 MOV T1,09H ;个位为0则使个位为9 DEC T2 ;十位减1 JMP COUNT_1 LIGHT_60:DEC T1 ;个位减一秒JMP COUNT_1 SLOAD: MOV T1,00H MOV T2,03H COUNT_2: MOV CX,14H ;东西干道倒计时程序 DEC_45: STI ;开中断 CALL DISP1 CMP T2,00H ;判断十位是否减到0,如果不是东西道绿灯亮 JNZ K3 CMP T1,03H ;判断各位是否为3秒,如果是则用全部的灯闪烁表示黄灯 JG K3 MOV AL,0CCH ;此处灯显示状态不变OUT 62H,AL C
14、MP CX,0AH JG K4 MOV AL,0CFH ;绿灯二极管灭 OUT 62H,AL JMP K4 K3: MOV AL,0CCH ;显示东西干道绿灯亮通行 OUT 62H,AL K4: CMP CX,00H ;判断是否到了一秒,然后倒计时减1 JNZ DEC_45 CMP T1,03H JNBE LIGHT_45 TEST T2,0FFH JNZ N2 TEST T1,0FFH ;判断是否个位、十位均减到0 JNZ LIGHT_45 ;不是则继续倒计时 JMP MLOAD ;是则(标志位ZF=0)跳转到南北道程序,依次循环 N2: TEST T1,0FFH ;此处的功能是判断个位是否
15、为0,且十位不为0 JNZ LIGHT_45 MOV T1,09H ;是则使个位为9 DEC T2 ;十位减1 JMP COUNT_2 LIGHT_45:DEC T1 JMP COUNT_2IRQ7: DEC CX ;确定是否为1秒的中断服务程序 MOV AL,20H OUT 20H,AL IRET IRQ6: ;kk1控制MOV T1,00HMOV T2,03HMOV AL,20H ;从三十秒重新开始计数 OUT 20H,AL JMP COUNT_1 IRET IRQ2: MOV T1,00H MOV T2,00H MOV AL,21H OUT 20H,AL MOV AL,0F0H OUT
16、62H,AL CALL DELAY MOV AL,0FFH OUT 62H,AL JMP IRQ2 IRET DISP1 PROC NEAR ;显示子程序_1,用来显示8段数码管中0-9数字。 MOV DL,0FEH MOV SI,OFFSET T1;显示内容首地址送SI L1: MOV AL,DL ;点亮最左边的显示器,位码送AL TEST AL,04H ;判断是否点亮了从右往左的第二个LED JZ END1 ;已经点亮了 OUT 60H,AL ;位码送A口 ROL AL,01H ;改变位码 MOV DL,AL ;位码送DL保存 MOV AL,SI ;去要显示的字符 XLAT ;把显示字符换成相应的8断段码 OUT 61H,AL ;显示字符的8段码送端口B CALL DELAY ;延时,1位显示器点亮的时间 INC SI ;地址加1JMP L1 END1: RET DISP1 ENDP DELAY PROC NEAR ;软件延时子程序_1:延时5毫秒 PUSH DX PUSH AX MOV DX,20 LOOP1: MOV AX,10 L4: DEC AX JNZ L4 DEC DX JNZ LOOP1 POP AX POP DX RET DELAY ENDP CODE ENDS END START
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1