微机原理实验交通灯控制实验.docx
《微机原理实验交通灯控制实验.docx》由会员分享,可在线阅读,更多相关《微机原理实验交通灯控制实验.docx(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、课 程 设 计课程设计名称: 交通灯控制实验 专 业 班 级 : 学 生 姓 名 : 学 号 : 指 导 教 师 : 课程设计时间: 2014.12.22-2015.1.2 微机原理 专业课程设计任务书学生姓名专业班级学号题 目交通灯控制实验课题性质工程设计课题来源自拟课题指导教师同组姓名主要内容L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。编程使六个灯按交通灯变化规律亮灭。任务要求1:掌握并理解芯片8255和8253计时器工作原理2:掌握并理解源程序和程序中的函数3:熟悉8255内部结构和与单片机的接口逻辑
2、,掌握8255芯片的3种工作方式。4:了解单片机外围芯片8255的工作原理、初始化编程以与输入、输出程序设计方法参考文献微型计算机原理与运用 谭浩强 清华大学出版社16/32位微机原理、汇编语言与接口技术 陈涛 机械工业出版社微机接口技术应用审查意见指导教师签字:教研室主任签字: 年 月 日 一:设计的目的和内容1 目的:通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用。2 内容:如图1,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。编程使六个灯按交通灯变化规律亮灭。 图1二:设计思
3、想:在选择循环的时间上,老师上课时说过,长延时可以采用双层嵌套,外层嵌套为0FFFFH,内层嵌套为4000H,我在编程时外层送进了0,相当于初值为65536,内层送进了4000H。为了达到闪烁和延时的区别,我在编闪烁的程序时,给外层嵌套送入初值3000H,内层0100H(这是我通过实验的结果)。人眼感觉闪烁的效果只是短延时的结果此方案是通过并行接口芯片8255A和8086计算机的硬件连接,以与通过8253延时的方法,来实现十字路口交通灯的模拟控制。如上图所示,红灯(RLED),黄灯(YLEDD)和绿灯(GLED)分别接在8255的A,B,C口的低四位端口,PA0,PA1,PA2,PA3分别接南
4、,东,北,西路口的红灯,B,C口类推。8086工作在最小模式,低八位端口AD0AD7接到8255和8253的D0D7,AD8AD15通过地址锁存器8282,接到三八译码器,译码后分别连到8255和8253的CS片选端。8253的三个门控端接+5V,CLOCK0接由分频器产生的1MHZ的时钟脉冲,OUT0接到CLOCK1和CLOCK2,OUT1接到8086的AD18,8086通过检测此端口是否有高电平来判断是否30S定时到。OUT2产生1MHZ方波通过或门和8255的B口共同控制黄灯的闪烁。8255三个口全部工作在方式0既基本输入输出方式,红绿灯的转换由软件编程实现。三:设计方案与硬件连接 设8
5、253各口地址分别为:设8253基地址即通道0地址为04A0H;通道1为04A2H;通道2为04A4H;命令控制口为04A6H。黄灯闪烁的频率为1HZ,所以想到由8253产生一个1HZ的方波, 8255控制或门打开的时间,在或门打开的时间内,8253将方波信号输入或门使黄灯闪烁。由于计数值最大为65535,1MHZ/65536的值远大于2HZ,所以采用两个计数器级联的方式,8253通道0的clock0输入由分频器产生的1MHZ时钟脉冲,工作在方式 3即方波发生器方式,理论设计输出 周期为0.01s的方波。1MHZ的时钟脉冲其重复周期为T=1/1MHZ=1s,因此通道0的计数初值为10000=2
6、710H。由此方波分别作为clock1和clock2的输入时钟脉冲,所以通道1和通道2的输入时钟频率为100HZ,通道1作计数器工作在方式1,计数初值3000=BB8H既30s,计数到则输出一个高电平到8255的PA7口,8255将A口数据输入到8086,8086检测到高电平既完成30s定时。通道2工作在方式3需输出一个1HZ的方波,通过一个或门和8086共同控制黄灯的闪烁,因此也是工作在方波发生器方式,其计数初值为100=64H,将黄灯的状态反馈到8055的端口PB7和PC7,同样输入到8086,8086通过两次检测端口状态可知黄灯的状态变化,计9次状态变化可完成5次闪烁。三个通道的门控信号
7、都未用,均接5V即可。四:程序流程图 开始 设置8255A口输出C口输出 南北路口绿灯亮,东西路口红灯亮 长延时 南北路口黄灯亮,东西路口红灯亮 南北路口红灯亮,东西路口绿灯亮 长延时 南北路口绿灯亮,东西路口红灯亮是否有键按下?返回DOS五:程序分析1:源程序data segmentio8255a equ 28ahio8255b equ 28bhportc1 db 24h,44h,04h,44h,04h,44h,04h ;六个灯可能 db 81h,82h,80h,82h,80h,82h,80h ;的状态数据 db 0ffh ;结束标志data endscode segment assume
8、cs:code,ds:datastart: mov ax,data mov ds,ax mov dx,io8255b mov al,90h out dx,al ;设置8255为C口输出 mov dx,io8255are_on: mov bx,0on: mov al,portc1bx cmp al,0ffh jz re_on out dx,al ;点亮相应的灯 inc bx mov cx,200 ;参数赋初值 test al,21h ;是否有绿灯亮 jz de1 ;没有,短延时 mov cx,2000 ;有,长延时de1: mov di,9000 ;di赋初值9000de0: dec di ;减
9、1计数 jnz de0 ;di不为0 loop de1 push dx mov ah,06h mov dl,0ffh int 21h pop dx jz on ;没有,转到onexit: mov ah,4ch ;返回 int 21hcode endsend start可通过对cx的初始值设定来改变黄色灯亮的时间间隔来改变红灯亮的时间长度。2:调用函数分析中断-中断函数简介1、EnableIntr;语法:BOOL EnableIntr();功能描述:将微机实验装置的中断输入设为有效,执行此函数后,PLX9054将接受微机实验装置上的中断请求,然后根据该请求申请一个PCI中断。参数:无返回值:如果
10、成功,则返回True,否则返回False备注:应用程序在调用该函数之前,必须先调用Startup函数。2、DisableIntr;语法:BOOL DisableIntr();功能描述:将微机实验装置的中断输入设为无效,执行此函数后,PLX9054将不相应微机实验装置上的中断请求参数:无返回值:如果成功,则返回True,否则返回False备注:应用程序在调用该函数之前,必须先调用Startup函数。3、RegisterISR;语法:BOOL RegisterISR(ISR_ROUTINE pfuncISR);功能描述:注册中断服务程序,当微机实验箱上的中断输入有效时,且实验箱上的中断输入使能,程
11、序将会执行该中断服务程序。参数:pfuncISR:该参数即为中断服务函数名返回值:如果成功,则返回True,否则返回False备注:应用程序在调用该函数之前,必须先调用Startup函数六:调试记录与结果分析1:本电路没有设置显示倒计时的七段LED数码管,如果应用到街道上,不利于司机、行人把握2:在上机调试中发现,由于此软件延时的时间均为估算时间,不是特别准确,对于交通要求特别高的地方不宜采用。如果是放到一个大的交通灯系统中,会影响到各个交通灯的运行时间,可能整个系统对交通的指挥调度会大大偏离理论计算,不能有效地防止和消除交通堵塞现象;3:当出现紧急情况,在特种车(如消防车、救护车)正要通过时
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验 交通灯 控制
限制150内