微机原理课程设计实现交通灯的仿真.doc_第1页
微机原理课程设计实现交通灯的仿真.doc_第2页
微机原理课程设计实现交通灯的仿真.doc_第3页
微机原理课程设计实现交通灯的仿真.doc_第4页
微机原理课程设计实现交通灯的仿真.doc_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

青 岛 大 学理学与信息科学学院通 信 原 理 课 程 设 计 报 告设 计 题 目 交通灯微机接口设计 学生专业班级 电子信息工程07级2班 学生姓名(学号) 林飞(20074345) 指 导 教 师 孙洁老师 完 成 时 间 实 习(设计)地点 信息楼机房 14 / 14微机原理课程设计报告一、 设计题目数字控制系统在交通路灯管理中的应用二、 设计内容设有一十字路口,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东西绿L6 L7无效 L8无效状态1 11 0 0 0 0 0 0状态2 0 1 0 0 1 0 0 0状态3010 001 0 0 0状态4 0 1 1 0 0 0 0 0 状态5 1 0 0 0 0 1 0 0状态61 0 0 0 001 0 0状态71 0 0 1 0 0 0 0转换成控制码为:交通灯控制码表 十六进制 二进制状态1 03H 00000011B状态2 12H 00010010B状态3 02H 12H 00000010B 00010010B状态4 06H 00000110B状态5 21H 00100001B状态6 01H 21H00000001B00100001B状态7 09H 00001001B2)电路设计的思路: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。故芯片的地址只与8086的地址的低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、 总体硬件电路构成框图82593片8282地址译码电路82538286数据缓冲器8255交通灯80868284A口控制灯提供时钟信号计数器1的OUT1向8255的C口PC0写8086通过读8255C口的数来记时,相当于构成了反馈系统4、 电路图:初始化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时间是否到?否3)软件流程图:4)程序代码:* MY8259_ICW1 EQU 20H ;实验系统中 8259的ICW1端口地址 MY8259_ICW2 EQU 21H ;实验系统中8259的ICW2端口地址 MY8259_ICW3 EQU 21H ;实验系统中8259的ICW3端口地址 MY8259_ICW4 EQU 21H ;实验系统中8259的ICW4端口地址 MY8259_OCW1 EQU 21H ;实验系统中8259的OCW1端口地址 MY8259_OCW2 EQU 20H ;实验系统中8259的OCW2端口地址 MY8259_OCW3 EQU 20H ;实验系统中8259的OCW3端口地址 MY8253_COUNT0 EQU 40H ;实验系统中8253计数器0端口地址 MY8253_COUNT1 EQU 41H ;实验系统中8253计数器1端口地址MY8253_COUNT2 EQU 42H ;实验系统中8253计数器2端口地址 MY8253_MODE EQU 43H ;实验系统中8253控制寄存器端口地址 MY8255_A EQU 0F0H ;实验系统中8255的A口地址 MY8255_B EQU 0F1H ;实验系统中8255的B口地址 MY8255_C EQU 0F2H ;实验系统中8255的C口地址 MY8255_MODE EQU 0F3H ;实验系统中8255的控制寄存器地址* DATA SEGMENT CS_BAK DW ? ;保存INTR原中断处理程序入口段地址的变量 IP_BAK DW ? ;保存INTR原中断处理程序入口偏移地址的变量 DATA ENDS CODE SEGMENT ASSUME CS:CODE ,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,3508H INT 21H MOV IP_BAK, ES ;保存INTR原中断处理程序入口偏移地址 MOV CS_BAK, BX ;保存INTR原中断处理程序入口段地址 MOV AX,SEG INITIAL MOV DS,AX MOV DX,OFFSET INITIAL MOV AX,2508H INT 21H ;设置中断向量 MOV DX,MY8259_ICW1 ; 初始化实验系统中8259的ICW1 MOV AL,13H ;边沿触发、单片8259、需要ICW4 OUT DX,AL MOV DX, MY8259_ICW2 ;初始化实验系统中8259的ICW2 MOV AL,08H ;IR0中断类型号 OUT DX,AL MOV DX,MY8259_ICW4 ;初始化实验系统中8259的ICW4 MOV AL,03H ;自动结束EOI OUT DX,AL MOV DX,MY8259_OCW1 ;初始化实验系统中8259的OCW1 MOV AL,0FEH ;打开IR0的屏蔽位 OUT DX,AL MOV AL,00H MOV DX, MY8259_OCW2 ;初始化实验系统中8259的OCW2,完成8259的初始化 OUT DX,AL QUERY: MOV DX,MY8259_OCW3 ;向8259的OCW3发送查询命令 MOV AL,0CH OUT DX,AL IN AL,DX ;读出查询字 TEST AL,80H ;判断中断是否已响应 JZ QUERY ;没有响应则继续查询 AND AL,01H CMP AL,00H JNE QUERY ;若不是IR0请求,继续查询 L4: INT 08H ;调用08H中断程序 CALL DELAY3S ;延时3秒 MOV DX,MY8255_A ;写8255的A口 MOV AL,12H OUT DX,AL ; L2、L5亮 CALL DELAY45S ;延时45秒 MOV CX, 03H ;周期1S,循环三次完成灯闪烁 L2: MOV DX,MY8255_A ;写8255的A口 MOV AL,02H OUT DX,AL ; L2亮 、L5灭 CALL DELAYHALFS ;延时0.5秒 MOV DX,MY8255_A MOV AL,12H OUT DX,AL ; L2、L5亮 CALL DELAYHALFS ;延时0.5秒 DEC CX JNZ L2 ;L2亮,L5闪烁 MOV DX,MY8255_A ;写8255的A口 MOV AL,06H OUT DX,AL ; L2、L3亮 CALL DELAY3S ;延时3秒 MOV DX,MY8255_A ;写8255的A口 MOV AL,21H OUT DX,AL ; L1、L6亮 CALL DELAY45S ;延时40秒 MOV CX,03H ;周期1S,循环三次完成灯闪烁 L3: MOV DX,MY8255_A ;写8255的A口 MOV AL,01H OUT DX,AL ; L1亮 、L6灭 CALL DELAYHALFS ;延时0.5秒 MOV DX,MY8255_A ;写8255的A口 MOV AL,21H OUT DX,AL ; L1、L6亮 CALL DELAYHALFS ;延时0.5秒 DEC CX ;L1亮,L6闪烁 JNZ L3 MOV DX,MY8255_A ;写8255的A口 MOV AL,09H OUT DX,AL ; L1、L4亮 CALL DELAY3S ;延时3秒 JMP L4 ;循环一次完成,跳到L4重新开始循环 MOV AH,4CH INT 21H ;返回DOS INITIAL PROC ;中断类型号08H的中断子程序 MOV DX,MY8253_MODE ;对8253初始化 MOV AL,36H OUT DX,AL MOV AX, 0E86BH MOV DX,MY8253_COUNT0 OUT DX,AL MOV AL,AH OUT DX,AL ;计数器0工作方式3 ,OUT0为频率20HZ的方波 MOV DX, MY8255_MODE MOV AL,89H OUT DX,AL ;8255初始化完成 A口输出,C口输入 MOV DX,MY8255_A MOV AL,03H OUT DX,AL ;两个红灯L1、L2亮,灯初始化完成 IRET INITIAL ENDP ;开机初始化完成 DELAY3S PROC ;延时3S子程序 MOV AL,51H MOV DX,MY8253_MODE OUT DX,AL MOV AL,59H MOV DX,MY8253_COUNT1 OUT DX,AL ;计数器1工作方式0 ,计数初值为59 L1: MOV DX, MY8255_C IN AL,DX CMP AL,01H LOOPNZ L1 RET DELAY3S ENDP DELAY45S PROC ;延时45S子程序 MOV AL,71H MOV DX,MY8253_MODE OUT DX,AL MOV AX,0899H MOV DX,MY8253_COUNT1 OUT DX,AL MOV AL,AH OUT DX,AL ;计数器1工作方式0 ,计数初值为899 L5: MOV DX, MY8255_C IN AL,DX CMP AL,01H LOOPNZ L5 RET DELAY45S ENDP DELAYHALFS PROC ;延时0.5S子程序 MOV AL,51H MOV DX,MY8253_MODE OUT DX,AL MOV AL,09H MOV DX,MY8253_COUNT1 OUT DX,AL ;计数器1工作方式0 ,计数初值为9 L6: MOV DX, MY8255_C IN AL,DX CMP AL,01H LOOPNZ L6 RET DELAYHALFS ENDP DELAY40S PROC ;延时40S子程序 MOV AL,71H MOV DX,MY8253_MODE OUT DX,AL MOV AX,0799H MOV DX,MY8253_COUNT1 OUT DX,AL MOV AL,AH OUT DX,AL ;计数器1工作方式0 ,计数初值为799 L7: MOV DX, MY8255_C IN AL,DX CMP AL,01H LOOPNZ L7 RET DELAY40S ENDP CODE ENDS END START四、 设计总结设计心得:通过这次课程设计针对设计的内容和要求,我利用8086、8259、8253、8255、8282、8286以及38译码器和门电路设计了交通灯数字控制系统。通过利用汇编,编写了软件控制程序。同时查阅资料,用PROTEL软件设计出了硬件系统。在这次课程设计的过程中,我无论是在关于X86系列的相关知识或在接口芯片的初始化及应用方面还是在利用所学到知识全面设计系统方面收获都很大。刚拿到设计题目觉得无从下手,经过仔细分析问题之后找到了行之有效的解决问方法。虽然六盏灯一共有七种不同的亮灭状态,其实只需用8255的A口的低六位不同状态即可控制。针对不同的延时时间,采用8253的计数器0和计数器1的级联可以准确定时。考虑到绿灯闪烁频率为1HZ,故让8253的计数器0的输出OUT0为20HZ的方波作为计数器1的时钟频率。这样对8253计数器1的计数初值写不同的值即可实现不同的定时。本系统的核心计时方法是:8253计数器1的输出OUT1送给8255的C口的PC0,然后8086读8255的C口的值来判断是否改变灯的状态。8255的C口相当于控制系统中的反馈环节,是本系统的能够准确及时的原因所在。对于硬件系统的设计查阅相关资料,从而引入了8284、8282、8286芯片使硬件系统更加完善。硬件设计最大的问题是地址译码电路的设计,针对这一问题我先找出8259、8253、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论