资源描述:
《微机原理与接口技术交通灯设计.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《微机原理与接口技术》课程设计姓名:*******班级学号:*******任课老师:*******一、实验课题《交通信号灯控制系统》二、实验目的在熟悉8086/8088指令系统的基础上,掌握8086/8088汇编语言程序设计方法;掌握8259可编程中断控制器,8255可编程并行接口、8253可编程定时/计数器的应用三、实验要求1、模拟交通信号灯(分A、B两组)的红、黄、绿灯(实验箱中的发光二极管)交替变换的过程。2、在实验箱的LED显示器上显示当前剩余时间(每秒更新一次,倒计时)。A组、B组之间时间关系如下:
2、A组B组绿灯26秒红灯30秒黄灯4秒红灯30秒绿灯26秒黄灯4秒四、实验设备PC机一台、实验箱一个(8086、8259、8255、8253芯片及相关电路、发光二极管六只)及导线若干。四、设计1、设计思路(1)分析问题——各端口应用——代码实现(2)具体应用(8255的B口做灯信号的输出,A口做位选码的输出,C口做LED的输出。)(3)实验内容1、系统中,8259采用初始化命令字ICW1、ICW2、ICW4和操作命令字OCW1,允许内部中断IRQ0和外部中断IRQ12、系统中,8255选用(10000000)方
3、式选择字,A组工作0方式,A端口输出,PC3-PC7输出,B组0方式,B端口输出,PC3-PC0输出3、系统中,8253选用(00110101)选择零号端口读写两个字节,工作方式2(频率发生器)二十进制2、程序流程开始初始化8259初始化8255初始化8253设置中断向量设置交通灯初态显示时间启动计数器结束3、电路原理图1.193MHz8253GATE0Clk0OUT0IRQ08259IRQ1图1系统硬件电路图位选码PB0~PB78255PC4~PC7PC0~PC3PA0~PA7KK1-发光二极管电路红灯绿灯
4、a~dp数码管显示模块3、设计代码STACKSEGMENTSTACKDW64DUP(?)STACKENDSDATASEGMENTTIMERDB00H,30H;IRQ0中断次数,通行剩余时间(A道30秒,B道30秒)初始设为B道通行TABDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH;七段码,用于显示时间,顺序不可调换DISOFFDB00H,00H,00H,00H;LED显示器缓冲区,数字(剩余时间)的个位和十位RODDB00H;当前道路通行状态(00:为A通行道;01为B通
5、行)LIGHTDB0D7H;信号灯的输出信号(11010111)KK1DB00H;暂停开关KK1计数LIGHTZTDB00HDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,0000H;数据段清零MOVDS,AX;填写中断向量表MOVAX,OFFSETIRQ0;提取IRQ0的中断处理程序的偏移地址ADDAX,2000H;加载时IP=2000H(绝对地址)MOVSI,0020H;中断号0的矢量地址为(20H-23H)MOV[SI],AX;填
6、写中断处理程序的偏移地址写进中断向量表MOVAX,0000HMOVSI,0022HMOV[SI],AX;填写中断处理程序的段地址写进中断向量表MOVAX,OFFSETIRQ1ADDAX,2000HMOVSI,0024H;中断号1的矢量地址为(24H-27H)MOV[SI],AXMOVAX,0000HMOVSI,0026HMOV[SI],AX;加载数据段MOVAX,DATAMOVDS,AX;8259初始化MOVAL,13H;8259初始化ICW1(00010011)单片方式需写ICW4OUT20H,AL;端地址
7、A0=0MOVAL,08H;ICW2(00001000)中断向量号的高五位(000001)OUT21H,ALMOVAl,01H;ICW4(00000001)一般全嵌套,非缓冲,非自动中断结束,十六位机系统OUT21H,AL;特征位:D7-D5=000MOVAL,0FCH;OCWl允许IRQ0、IRQ1中断OUT21H,AL;8255初始化MOVAL,80H;(10000000)方式选择字,A组工作0方式,A端口输出,PC3-PC7输出,B组0方式,B端口输出,PC3-PC0输出OUT63H,AL;初始化825
8、3MOVAL,35H;(00110101)选择零号端口读写两个字节,工作方式2(频率发生器)二十进制OUT43H,ALMOVAX,380;定时(频率乘以时间)OUT40H,AL;低字节MOVAL,AHOUT40H,AL;高字节STI;开中断(允许CPU接收中断)M:CALLDISP2CMPKK1,1JZZT;调用时间显示函数CMPTIMER+1,04H;判断是否到了最后4秒,到了则跳转JZR1CMP