您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 微机原理课程设计实现交通灯的仿真
青岛大学理学与信息科学学院通信原理课程设计报告设计题目交通灯微机接口设计学生专业班级电子信息工程07级2班学生姓名(学号)林飞(20074345)指导教师孙洁老师完成时间实习(设计)地点信息楼机房2微机原理课程设计报告一、设计题目数字控制系统在交通路灯管理中的应用二、设计内容设有一十字路口,1、3为南北方向,2、4为东西方向。每个路口均有红、黄、绿三个灯初始状态为四个路口的红灯亮,3秒之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口通车;延时45秒后,1、3路口绿灯闪烁3秒,后绿灯灭,黄灯亮,3秒后,1、3路口的红灯亮,而同时2、4路口的绿灯亮,2、4路口开始通车;延时40秒后,2、4路口绿灯闪烁3秒后绿灯灭,黄灯亮,3秒后,2、4路口的红灯亮,同时1、3路口的红灯亮(即四个路口的红灯亮),3秒之后,1、3路口的绿灯亮,2、4路口的红灯亮,重复上面的过程。三、设计思路与步骤1)设计内容分析:通过分析设计要求找出灯亮的规律:1.东西南北两个方向起始状态全为红,延续3秒。2.东西方向红灯亮,南北方向绿灯亮,延续45秒。3.东西方向红灯亮,南北方向绿灯以频率1HZ闪烁3秒。4.东西方向红灯亮,南北方向黄灯亮,延续3秒。5.东西方向绿灯亮,南北方向红灯亮,延续40秒。6.东西方向绿灯亮以频率1HZ闪烁3秒,南北方向红灯。7.东西方向黄灯亮,南北方向红灯亮,延续3秒。8.东西方向红灯亮,南北方向红灯亮循环以上步骤。通过分析灯亮的规律,总结出如下的功能表:交通灯亮灭功能表灯状态南北红L1东西红L2南北黄L3东西黄L4南北绿L5东西绿L6L7无效L8无效状态111000000状态201001000状态3010001000状态401100000状态510000100状态6100000100状态7100100003转换成控制码为:交通灯控制码表十六进制二进制状态103H00000011B状态212H00010010B状态302H12H00000010B00010010B状态406H00000110B状态521H00100001B状态601H21H00000001B00100001B状态709H00001001B2)电路设计的思路:1、计时功能实现逻辑:通过8253计数器0和计数器1级联实现准确定时;用8255的A口低六位控制东西、南北路口交通灯的状态;灯的亮灭可直接由8086输出0,1控制。用8259A管理可屏蔽中断即开机初始化。采用两个计数器级联的方式,并且计数器0工作于方式3用于产生方波信号,计数器1工作方式0,计数到时高电平信号。计数器1的输出端OUT1接入8255芯片的PC0口,通过查询8255的C口的值,以完成计时功能。将计数器0的输出OUT0接到计数器1的输入端CLK1,而CLK0的输入采用1.19MHZ的时钟频率,计数器0计数初值为59499=0E86BH,则OUT0=20HZ,即计数器1的时钟频率为20HZ。当计数器1的记数初值为9时,0.5S后OUT1输出一高电平。8086通过读取8255C口的值,来决定对A口写入的数据。因此每隔0.5秒8086变换灯的状态,持续6次即完成3秒的闪烁功能。当计数器1的记数初值为899时,45S后OUT1输出一高电平。通过查询8255的C口PC0的状态改变,达到延时45秒的作用。同理计数器1的计数初值分别为59、799时,分别为3、40秒的延时。2、译码电路设计通过分析8259、8253、8255各端口地址,设计合理的地址译码电路。8259的地址为20H、21H,8253的地址为40H、41H、42H、43H,8255的端口地址为0F0H、0F1H、0F2H、0F3H。故芯片的地址只与48086的地址的低8位有联系,不妨设高十二为全为1将它们相与后作为38译码器的始能信号E3。再分析发现8259、8253、8255各端口地址的低八位其中D2、D3均为0,将8086的地址总线的D2、D3作为38译码器的始能信号E1、E2。将8086的地址总线的D0、D1分别与8253和8255的A0、A1连接,利用D4、D5、D6、D7构成译码电路。将8086的地址总线的D0与8259的A0连接,利用D2、D4、D5、D6、D7通过38译码器构成译码电路。具体见下图所示:3、总体硬件电路构成框图4、电路图:82593片8282地址译码电路82538286数据缓冲器8255交通灯80868284A口控制灯提供时钟信号计数器1的OUT1向8255的C口PC0写8086通过读8255C口的数来记时,相当于构成了反馈系统563)软件流程图:初始化8259、8253、8255且L1、L2亮等待8253延时3s时间是否到?否等待8253延时45s时间是否到?否等待8253延时3s时间是否到?否等待8253延时3s时间是否到?否L2、L5亮L2亮,L5闪烁L2、L3亮L1、L6亮等待8253延时40s时间是否到?否L1亮,L6闪烁等待8253延时3s时间是否到?否L1、L4亮等待8253延时3s时间是否到?否74)程序代码:*****************************************************************MY8259_ICW1EQU20H;实验系统中8259的ICW1端口地址MY8259_ICW2EQU21H;实验系统中8259的ICW2端口地址MY8259_ICW3EQU21H;实验系统中8259的ICW3端口地址MY8259_ICW4EQU21H;实验系统中8259的ICW4端口地址MY8259_OCW1EQU21H;实验系统中8259的OCW1端口地址MY8259_OCW2EQU20H;实验系统中8259的OCW2端口地址MY8259_OCW3EQU20H;实验系统中8259的OCW3端口地址MY8253_COUNT0EQU40H;实验系统中8253计数器0端口地址MY8253_COUNT1EQU41H;实验系统中8253计数器1端口地址MY8253_COUNT2EQU42H;实验系统中8253计数器2端口地址MY8253_MODEEQU43H;实验系统中8253控制寄存器端口地址MY8255_AEQU0F0H;实验系统中8255的A口地址MY8255_BEQU0F1H;实验系统中8255的B口地址MY8255_CEQU0F2H;实验系统中8255的C口地址MY8255_MODEEQU0F3H;实验系统中8255的控制寄存器地址*****************************************************************DATASEGMENTCS_BAKDW?;保存INTR原中断处理程序入口段地址的变量IP_BAKDW?;保存INTR原中断处理程序入口偏移地址的变量DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAX,3508HINT21HMOVIP_BAK,ES;保存INTR原中断处理程序入口偏移地址MOVCS_BAK,BX;保存INTR原中断处理程序入口段地址MOVAX,SEGINITIALMOVDS,AXMOVDX,OFFSETINITIALMOVAX,2508HINT21H;设置中断向量MOVDX,MY8259_ICW1;初始化实验系统中8259的ICW1MOVAL,13H;边沿触发、单片8259、需要ICW4OUTDX,ALMOVDX,MY8259_ICW2;初始化实验系统中8259的ICW2MOVAL,08H;IR0中断类型号8OUTDX,ALMOVDX,MY8259_ICW4;初始化实验系统中8259的ICW4MOVAL,03H;自动结束EOIOUTDX,ALMOVDX,MY8259_OCW1;初始化实验系统中8259的OCW1MOVAL,0FEH;打开IR0的屏蔽位OUTDX,ALMOVAL,00HMOVDX,MY8259_OCW2;初始化实验系统中8259的OCW2,完成8259的初始化OUTDX,ALQUERY:MOVDX,MY8259_OCW3;向8259的OCW3发送查询命令MOVAL,0CHOUTDX,ALINAL,DX;读出查询字TESTAL,80H;判断中断是否已响应JZQUERY;没有响应则继续查询ANDAL,01HCMPAL,00HJNEQUERY;若不是IR0请求,继续查询L4:INT08H;调用08H中断程序CALLDELAY3S;延时3秒MOVDX,MY8255_A;写8255的A口MOVAL,12HOUTDX,AL;L2、L5亮CALLDELAY45S;延时45秒MOVCX,03H;周期1S,循环三次完成灯闪烁L2:MOVDX,MY8255_A;写8255的A口MOVAL,02HOUTDX,AL;L2亮、L5灭CALLDELAYHALFS;延时0.5秒MOVDX,MY8255_AMOVAL,12HOUTDX,AL;L2、L5亮CALLDELAYHALFS;延时0.5秒DECCXJNZL2;L2亮,L5闪烁9MOVDX,MY8255_A;写8255的A口MOVAL,06HOUTDX,AL;L2、L3亮CALLDELAY3S;延时3秒MOVDX,MY8255_A;写8255的A口MOVAL,21HOUTDX,AL;L1、L6亮CALLDELAY45S;延时40秒MOVCX,03H;周期1S,循环三次完成灯闪烁L3:MOVDX,MY8255_A;写8255的A口MOVAL,01HOUTDX,AL;L1亮、L6灭CALLDELAYHALFS;延时0.5秒MOVDX,MY8255_A;写8255的A口MOVAL,21HOUTDX,AL;L1、L6亮CALLDELAYHALFS;延时0.5秒DECCX;L1亮,L6闪烁JNZL3MOVDX,MY8255_A;写8255的A口MOVAL,09HOUTDX,AL;L1、L4亮CALLDELAY3S;延时3秒JMPL4;循环一次完成,跳到L4重新开始循环MOVAH,4CHINT21H;返回DOSINITIALPROC;中断类型号08H的中断子程序MOVDX,MY8253_MODE;对8253初始化MOVAL,36HOUTDX,ALMOVAX,0E86BHMOVDX,MY8253_COUNT0OUTDX,ALMOVAL,AHOUTDX,AL;计数器0工作方式3,OUT0为频率20HZ的方波MOVDX,MY8255_MODEMOVAL,89H10OUTDX,AL;8255初始化完成A口输出,C口输入MOVDX,MY8255_AMOVAL,03HOUTDX,AL;两个红灯L1、L2亮,灯初始化完成IRETINITIALENDP;开机初始化完成DELAY3SPROC;延时3S子程序MOVAL,51HMOVDX,MY8253_MODEOUTDX,ALMOVAL,59HMOVDX,MY8253_COUNT1OUTDX,AL;计数器1工作方式0,计数初值为59L1:MOVDX,MY8255_CINAL,DXCMPAL,01HLOOPNZL1RETDELAY3SENDPDELAY45SPROC;延时45S子程序MOVAL,71HMOVDX,MY8253_MODEOUTDX,ALMOVAX,0899HMOVDX,MY8253_COUNT1OUTDX,ALMOVAL,AHOUTDX,AL;计数器1工作方式0,计数初值为899L5:MOVDX,MY8255_CINAL,DXCMPAL,01HLOOPNZL5RETDELAY45SENDPDELAYHALFSPROC;延时0.5S子程序MOVAL,51HMOVDX,MY8253_MODEOUTDX,ALMOVAL,09HMOVDX,MY8253_COUNT1OUTDX,AL;计数器1工作方式0,计数初值为911L6:MOVDX,MY8255_CINAL,DXCMPAL,01HLOOPNZL6RETDELAYHALFSENDPDEL
本文标题:微机原理课程设计实现交通灯的仿真
链接地址:https://www.777doc.com/doc-230331 .html