接口技术上机实验 交通灯模拟

other / 2011年03月24日 22时36分 / 16062人浏览
具体要求如下: 1.东西方向车辆放行60秒钟。即东西方向的绿灯和南北方向的红灯同时点亮1分钟; 2.1分钟后,东西方向的黄灯闪烁5秒钟,以警示车辆将切换红绿灯。此时南北方向仍维持红灯点亮。在南北方向亮红灯期间,在2位数码管上显示计数值(每秒减1),从65减为0。 3.东西方向的黄灯闪烁5秒钟后,转为南北方向放行20秒钟。即东西方向的红灯和南北方向的绿灯同时点亮20秒钟; 4.南北方向放行20秒钟后,转为南北方向的黄灯闪烁5秒钟,以警示将切换红绿灯。此时东西方向仍维持红灯点亮。 5.南北方向的黄灯闪烁5秒钟后,再转为东西方向车辆放行1分钟。如此循环重复。 交通信号灯实时控制和管理的总体设计 ㈠ 芯片选择及端口选择 1.用实验系统8255A实现对信号灯的控制(所用端口自定);2位数码显示用8255A实现控制。 2. 用实验系统8235的计数器2定时向实验系统主片8259A的IRQ7请求中断,以实现要 求的1分钟、5秒钟和20秒的定时。 实验系统8235的计数器2的CLK2接OPCLK,频率为1.19318MHZ;GATE2已接 +5V; 定时采用软硬件相结合的方式实现。 ⒊ 用实验系统的发光二极管模拟红绿灯。 注:8259A的端口地址为:218H、219H 8255A的端口地址为:端口A-200H、端口B-201H、端口C-202H、控制端口-203H 8253的端口地址为:计数器0-208H、计数器1-209H、计数器2-20aH、控制寄存器0-20bH。 ㈡ 实验连接线路图及相关说明 (1)线路图 试验箱交通灯组 片选信号引脚连接 8259A的片选信号引脚连接:218-21F 8255A的片选信号引脚连接:200-207 8253 的片选信号引脚连接:208-20F (三)设计思想 设计数器0的计数初值为25000,由于CLK0接脉冲信号,频率为2.5MHZ,所以每10ms中断一次。利用CX对不同的状态时间计数,用来实现计数器0对1分钟,20秒钟,5秒钟的定时。中断子程序分为数码显示刷新部分和红绿黄灯各种状态切换部分。每进入中断即刷新LED显示。用对于东西车道和南北车道黄灯闪烁利用标志位判断实现,满足比较条件就暗,不满足条件就亮。 (四)设计流程图 主程序流程图: 中断服务程序流程图: 四、实验环境及条件 ⒈超想—3000TB综合实验/仿真系统 ⒉导线 3.微机原理及接口技术试验箱 五、源程序清单 ⒈本次设计中,选用8235的计数器0定时向实验系统主片8259A的IRQ0请求中断。设置8253的计数器0每10ms请求一次中断,工作于模式3;8255的A端口控制交通灯;数码管驱动程序采用指导老师提供的程序。 初始化程序: DATA SEGMENT LED   DB   3FH,06H,5BH,4FH,66H,6DH,7DH,07H        ;存放七段代码表 DB   7FH,6FH,77H,7CH,39H,5EH,79H,71H D1       EQU 10H D2       EQU 200H             ;8255A端口A EA    EQU 200H                ;8259端口地址 EE    EQU 203H CONTROL EQU 20bH           ;8253端口地址 COUNT0   EQU 208H COUNT1   EQU 209H COUNT2   EQU 20aH Z8279     EQU        222H D8279     EQU        220H LEDMOD    EQU        00    ;左边输入,八位显示外部译码八位显示 LEDFEQ    EQU        38H   ;扫描频率 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA CODE    SEGMENT ASSUME CS:CODE CONT     DB 0 CONT1     DB 0 CONT2     DB 0 BKSD     DB 0 BKAD     DB 0 BKDA     DB 0 TEMP     DB 0 ;******************************************* START: MOV AX,0 MOV DS,AX MOV AX,OFFSET IRQ0 ADD AX,2000H MOV SI,0FH*4 MOV [SI],AX MOV AX,0 MOV [SI+2],AX IN AL,218H AND AL,7FH OUT 219H,AL CLI MOV AL,80H         ;初始化8255 OUT EE,AL MOV AL,00 OUT EA,AL MOV AL,0f0H OUT EA,AL MOV    DX,218H       ;8259初始化 MOV    AL,00010010b OUT    DX,AL MOV    AL,08H MOV    DX,219H OUT    DX,AL MOV      DX,203H     ;设置为全输出 MOV      AL,80H OUT      DX,AL MOV      DX,200H MOV      AL,0ffh OUT      DX,AL        ;清LED MOV      DX,200H      ;全红 MOV      AL,0F0H OUT      DX,AL MOV AL,00110110b    ;初始化 8253 OUT CONTROL,AL MOV AX,2500 MOV DX,COUNT0 OUT DX,AL MOV AL,AH OUT COUNT0 ,AL MOV AX,DATA MOV DS,AX 中断服务程序: A1:     STI HLT JMP A1 IRQ0:                                     ;写数码管程序,暂缺 JMP COMPARE COMPARE:CMP DL,0 JZ STATE0 CMP DL,1 JZ STATE1 CMP DL,2 JZ STATE2 CMP DL,3 JZ STATE3 STATE0:                 ;状态0:东西红南北绿 mov al,01011010b out D2,al DEC SI JNZ CHANGE1 DEC DH MOV SI,100 CHANGE1:DEC CX CMP CX,0 JNZ M0 MOV CX,500 STATE1:     DEC DI          ;状态1:东西方向黄灯闪烁,南北绿灯 CMP DI,0 JNZ SHINE1 MOV AL, 00001010b      ;东西灭,南北绿 OUT D2,AL MOV DI,50 JMP CHANGE SHINE1:     MOV AL,11111010B      ;东西黄,南北绿 OUT D2,AL CHANGE:     DEC SI JNZ CHANGE2 DEC DI MOV SI,100 CHANGE2:DEC CX CMP CX,0 JNZ M1 MOV CX,2000 MOV DH,25 STATE2:     MOV AL,10100101b           ;状态2:东西绿灯,南北红灯 OUT D2,AL DEC SI JNZ CHANGE3 DEC DH MOV SI,100 CHANGE3:DEC CX CMP CX,0 JNZ M2 MOV CX,500 STATE3: DEC DI                    ;状态3:东西绿灯,南北黄灯闪烁 CMP DI,0 JNZ SHINE2 MOV AL,10100000B                    ;东西绿灯,南北灭 OUT D2,AL MOV DI,50 JMP SOURCE SHINE2:     MOV AL,10101111B             ;东西绿,南北黄 OUT D2,AL SOURCE:     DEC SI JNZ CHANGE4 DEC DH MOV SI,100 CHANGE4:DEC CX CMP CX,0 JNZ M3 MOV CX,6000 MOV DH,65 M0:     MOV DL,0            ;下次进入状态0 JMP EXIT M1:     MOV DL,1            ;下次进入状态1 JMP EXIT M2:     MOV DL,2            ;下次进入状态2 JMP EXIT M3:     MOV DL,3            ;下次进入状态3 EXIT:     MOV AL,20H OUT 218H,AL IRET CODE ENDS END START 六、程序运行结果 1.即东西方向的绿灯和南北方向的红灯同时点亮1分钟; 2.1分钟后,东西方向的黄灯闪烁5秒钟,。此时南北方向仍维持红灯点亮。 3.东西方向的黄灯闪烁5秒钟后,转为东西方向的红灯和南北方向的绿灯同时点亮20秒钟; 4. 20秒钟后,转为南北方向的黄灯闪烁5秒钟,此时东西方向仍维持红灯点亮。 5.南北方向的黄灯闪烁5秒钟后,东西方向的绿灯和南北方向的红灯同时点亮1分钟。如此循环重复。 6. 由于数码显示模块没有完成,数码管没有倒计时显示。 七、课程设计总结 1、软件延时与定时器计时 软件延时,设计简单,使用方便,但是无法进行精确计时,无法在实际应用中进行使用,本次设计采用了,定时器0进行计时,每10ms产生一个脉冲信号,可以准确的计时并方便8段数码管进行显示 2、使用中断的好处 使用中断比较麻烦,在试验中需要两次加载初始化程序和中断服务程序,并且需要手工指定中断服务地址和中断向量号;但是使用中断可以进行多样化设计,强化程序功能与执行效率。 在本设计中程序每10MS请求一次中断,实现精确定时与数码管显示刷新。