《微机原理与接口技术》课程设计交通灯.doc
微机原理与接口技术课程设计院 系:专 业:年级班级:学 号:姓 名:指导教师:设计日期: 计算机学院 通信工程 通信07-2班 3107090202XX XXX 李保平 2010年1月3日一课程设计目的 用汇编语言独立完成一个程序题,以达到熟练运用汇编语言编程实现有比较完整功能的程序的目的。 了解交通灯管理的基本工作原理 熟悉8259A中断控制器的工作原理和应用编程 熟悉8255A并行接口的各种工作方式和应用 熟悉8253计数器/定时器的工作方式及应用编程,掌握利用软硬件相结合定时的方法 二课程设计任务 本次课程设计的内容为交通信号灯的实时控制和管理。 某交通干线车行道和人行横道的交通信号灯设置如图所示: 其中: 表示红灯、 表示黄灯、 表示绿灯 具体要求如下: 1东西方向车辆放行60秒钟。即东西方向的绿灯和南北方向的红灯同时点亮1分钟; 21分钟后,东西方向的黄灯闪烁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。四部分电路设计及功能解说 设计数器0的计数初值为25000,由于CLK0接脉冲信号,频率为2.5MHZ,所以每10ms中断一次。利用CX对不同的状态时间计数,用来实现计数器0对1分钟,20秒钟,5秒钟的定时。中断子程序分为数码显示刷新部分和红绿黄灯各种状态切换部分。每进入中断即刷新LED显示。用对于东西车道和南北车道黄灯闪烁利用标志位判断实现,满足比较条件就暗,不满足条件就亮。五程序设计流程图1、MAIN程序MAIN程序是总程序,输出说明,等待用户按键并读取键值。用SCANK:;扫描键盘输入,根据键盘输入调用bios 16H 中断的1号功能,读取键盘的状态。2、子程序子程序控制东西方向黄灯闪烁,南北绿灯。七程序清单 初始化程序:DATA SEGMENT LED DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;存放七段代码表 DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H D1 EQU 10HD2 EQU 200H ;8255A端口AEA EQU 200H ;8259端口地址EE EQU 203HCONTROL EQU 20bH ;8253端口地址COUNT0 EQU 208H COUNT1 EQU 209H COUNT2 EQU 20aHZ8279 EQU 222HD8279 EQU 220HLEDMOD EQU 00 ;左边输入,八位显示外部译码八位显示LEDFEQ EQU 38H ;扫描频率DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATACODE SEGMENT ASSUME CS:CODECONT DB 0CONT1 DB 0CONT2 DB 0BKSD DB 0BKAD DB 0BKDA DB 0TEMP DB 0START: MOV AX,0MOV DS,AXMOV AX,OFFSET IRQ0ADD AX,2000HMOV SI,0FH*4MOV SI,AXMOV AX,0MOV SI+2,AXIN AL,218HAND AL,7FHOUT 219H,ALCLIMOV AL,80H ;初始化8255OUT EE,ALMOV AL,00OUT EA,ALMOV AL,0f0HOUT EA,AL MOV DX,218H ;8259初始化MOV AL,00010010bOUT DX,ALMOV AL,08HMOV DX,219HOUT DX,AL MOV DX,203H ;设置为全输出MOV AL,80HOUT DX,ALMOV DX,200HMOV AL,0ffhOUT DX,AL ;清LEDMOV DX,200H ;全红MOV AL,0F0HOUT DX,ALMOV AL,00110110b ;初始化 8253OUT CONTROL,ALMOV AX,2500MOV DX,COUNT0 OUT DX,ALMOV AL,AHOUT COUNT0 ,ALMOV AX,DATAMOV DS,AX中断服务程序:A1: STI HLT JMP A1IRQ0: ;写数码管程序,暂缺 JMP COMPARECOMPARE:CMP DL,0 JZ STATE0 CMP DL,1 JZ STATE1 CMP DL,2 JZ STATE2 CMP DL,3 JZ STATE3STATE0: ;状态0:东西红南北绿 mov al,01011010b out D2,al DEC SI JNZ CHANGE1 DEC DH MOV SI,100CHANGE1:DEC CX CMP CX,0 JNZ M0 MOV CX,500STATE1: DEC DI ;状态1:东西方向黄灯闪烁,南北绿灯 CMP DI,0 JNZ SHINE1 MOV AL, 00001010b ;东西灭,南北绿 OUT D2,AL MOV DI,50 JMP CHANGESHINE1: MOV AL,11111010B ;东西黄,南北绿 OUT D2,ALCHANGE: DEC SI JNZ CHANGE2 DEC DI MOV SI,100CHANGE2:DEC CX CMP CX,0 JNZ M1 MOV CX,2000 MOV DH,25STATE2: MOV AL,10100101b ;状态2:东西绿灯,南北红灯 OUT D2,AL DEC SI JNZ CHANGE3 DEC DH MOV SI,100CHANGE3:DEC CX CMP CX,0 JNZ M2 MOV CX,500STATE3: DEC DI ;状态3:东西绿灯,南北黄灯闪烁 CMP DI,0 JNZ SHINE2 MOV AL,10100000B ;东西绿灯,南北灭 OUT D2,AL MOV DI,50 JMP SOURCESHINE2: MOV AL,10101111B ;东西绿,南北黄 OUT D2,ALSOURCE: DEC SI JNZ CHANGE4 DEC DH MOV SI,100CHANGE4:DEC CX CMP CX,0 JNZ M3 MOV CX,6000 MOV DH,65M0: MOV DL,0 ;下次进入状态0 JMP EXITM1: MOV DL,1 ;下次进入状态1 JMP EXITM2: MOV DL,2 ;下次进入状态2 JMP EXITM3: MOV DL,3 ;下次进入状态3EXIT: MOV AL,20H OUT 218H,AL IRETCODE ENDSEND START八实验结果 程序初始运行界面 1即东西方向的绿灯和南北方向的红灯同时点亮1分钟; 21分钟后,东西方向的黄灯闪烁5秒钟,。此时南北方向仍维持红灯点亮。 3东西方向的黄灯闪烁5秒钟后,转为东西方向的红灯和南北方向的绿灯同时点亮20秒钟; 4 20秒钟后,转为南北方向的黄灯闪烁5秒钟,此时东西方向仍维持红灯点亮。 5南北方向的黄灯闪烁5秒钟后,东西方向的绿灯和南北方向的红灯同时点亮1分钟。如此循环重复。 6. 由于数码显示模块没有完成,数码管没有倒计时显示。九课程设计总结和体会 刚开始进行课程设计时遇到了很多困难,最大的问题就是汇编程序的编写及运行,由于自己实力有限,在编程时请教了不少同学,并通过网络搜集了一些信息。在本次设计中,使用了8259A中断控制器、8253计数器、8255可编程并行接口实现了,对南北、东西方向交通的分别计时、分别控制,但是程序没有实现对双向交通的数码显示,数码显示模块空缺,我们会尽快将程序补全,使其具有完整的交通灯功能。 通过这次课程设计,我们对各个芯片有了进一步的了解,对各个芯片的功能有了更深刻的认识和体会,平时上课的理论知识只是停留在理论的层面,只有通过了这样的试验才能更好的体会到,做到了理论和实际的相结合,使理论知识真正运用到了实践中去。同时,在本次课程设计过程中,李宝平老师以及相关同学给予我相当大的支持和帮助,在此表示诚挚的感谢!十参考文献1、微型计算机原理与接口技术 中国矿业大学出版社 李长青李泉溪 主编2、微机原理及应用 机械工业出版社 胡钢 主编