logo资料库

汇编语言交通灯控制系统设计.doc

第1页 / 共9页
第2页 / 共9页
第3页 / 共9页
第4页 / 共9页
第5页 / 共9页
第6页 / 共9页
第7页 / 共9页
第8页 / 共9页
资料共9页,剩余部分请下载后查看
交通灯控制系统 一、设计要求 1.东西方向车辆放行 60 秒钟。即东西方向的绿灯和南北方向的红灯同时点亮 1 分钟; 2.1 分钟后,东西方向的黄灯闪烁 5 秒钟,以警示车辆将切换红绿灯。此时南 北方向仍维持红灯点亮。在南北方向亮红灯期间,在 2 位数码管上显示计数值(每 秒减 1),从 60 减为 0。 3.东西方向的黄灯闪烁 5 秒钟后,转为南北方向放行 20 秒钟。即东西方向的红 灯和南北方向的绿灯同时点亮 20 秒钟; 4.南北方向放行 20 秒钟后,转为南北方向的黄灯闪烁 5 秒钟,以警示将切换红 绿灯。此时东西方向仍维持红灯点亮。 5.南北方向的黄灯闪烁 5 秒钟后,再转为东西方向车辆放行 1 分钟。如此循环 重复。 二、设计目的 ⒈ 了解交通灯管理的基本工作原理 ⒉ 熟悉 8259A 中断控制器的工作原理和应用编程 ⒊ 熟悉 8255A 并行接口的各种工作方式和应用 ⒋ 熟悉 8254 计数器/定时器的工作方式及应用编程,掌握利用软硬件相结合定 时的方法 ⒌ 掌握多位 LED 显示问题的解决 三、程序设计流程图 主程序流程图,如下图所示。 装入计数初值 页码:1
四、总体设计和电路图 Ⅰ.芯片选择及端口选择 1.用实验系统 8255A 实现对信号灯的控制(所用端口自定);2 位数码显示用 8255A 实现控制。 2. 用实验系统 8254 的计数器 2 定时向实验系统主片 8259A 的 IRQ7 请求中断, 以实现要求的 1 分钟、5 秒钟和 20 秒的定时。实验系统 8254 的计数器 2 的 CLK2 接 OPCLK,频率为 1.19318MHZ;GATE2 已接 +5V;定时采用软硬件相结合的方式 实现。 ⒊ 用实验系统的发光二极管模拟红绿灯。 注:8259A 的端口地址为:218H、219H 8255A 的端口地址为:端口 A-200H、端口 B-201H、端口 C-202H、控制端 口-203H 页码:2
8254 的端口地址为:计数器 0-208H、计数器 1-209H、计数器 2-20aH、控 制寄存器 0-20bH。 Ⅱ.设计电路图 图 2-1 交通灯实时控制系统 8255 原理图 图 2-2 中断服务原理图 页码:3
图 2-3 中断服务电路接线图 图 2-4 电路连线图 Ⅲ..交通灯程序 本次设计中,选用 8254 的计数器 0 定时向实验系统主片 8259A 的 IRQ0 请求 中断。设置 8254 的计数器 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 ;8254 端口地址 COUNT0 EQU 208H COUNT1 EQU 209H COUNT2 EQU 20aH Z8259 EQU 222H D8259 EQU 220H 页码:4
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 页码:5
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 ;初始化 8254 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:东西方向黄灯闪烁,南北绿灯 页码:6
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 页码:7
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 分钟。如此循环重复。。 五、结果测试分析 1.状态灯显示测试 当电路连接完毕后,将写好的测试程序刷写到芯片内,K1 和 K2 分别给端口送高 电平和低电平,通电即可检测。 2.数码管的测试 将串口的和电路板上的接口连接,将写好的测试程序刷写到芯片内,开电源即可 测试。 六、总结 1、软件延时与定时器计时 软件延时,设计简单,使用方便,但是无法进行精确计时,无法在实际应用中进 行使用,本次设计采用了,定时器 0 进行计时,每 10ms 产生一个脉冲信号,可 以准确的计时并方便 8 段数码管进行显示 2、中断使用的作用 页码:8
分享到:
收藏