微机原理实验交通灯控制实验.docx
- 文档编号:28283144
- 上传时间:2023-07-10
- 格式:DOCX
- 页数:16
- 大小:164.49KB
微机原理实验交通灯控制实验.docx
《微机原理实验交通灯控制实验.docx》由会员分享,可在线阅读,更多相关《微机原理实验交通灯控制实验.docx(16页珍藏版)》请在冰豆网上搜索。
微机原理实验交通灯控制实验
课程设计
课程设计名称:
交通灯控制实验
专业班级:
学生姓名:
学号:
指导教师:
课程设计时间:
2014.12.22---2015.1.2
微机原理专业课程设计任务书
学生姓名
专业班级
学号
题目
交通灯控制实验
课题性质
工程设计
课题来源
自拟课题
指导教师
同组姓名
主要内容
L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。
编程使六个灯按交通灯变化规律亮灭。
任务要求
1:
掌握并理解芯片8255和8253计时器工作原理
2:
掌握并理解源程序和程序中的函数
3:
熟悉8255内部结构和与单片机的接口逻辑,掌握8255芯片的3种工作方式。
4:
了解单片机外围芯片8255的工作原理、初始化编程以及输入、输出程序设计方法
参考文献
《微型计算机原理及运用》谭浩强清华大学出版社
《16/32位微机原理、汇编语言及接口技术》陈涛机械工业出版社
《微机接口技术应用》
审查意见
指导教师签字:
教研室主任签字:
年月日
一:
设计的目的和内容
1目的:
通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用。
2内容:
如图1,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东
西路口的交通灯与PC2、PC1、PC0相连。
编程使六个灯按交通灯变化规律亮灭。
图1
二:
设计思想:
在选择循环的时间上,老师上课时说过,长延时可以采用双层嵌套,外层嵌套为0FFFFH,内层嵌套为4000H,我在编程时外层送进了0,相当于初值为65536,内层送进了4000H。
为了达到闪烁和延时的区别,我在编闪烁的程序时,给外层嵌套送入初值3000H,内层0100H(这是我通过实验的结果)。
人眼感觉闪烁的效果只是短延时的结果
此方案是通过并行接口芯片8255A和8086计算机的硬件连接,以及通过8253延时的方法,来实现十字路口交通灯的模拟控制。
如上图所示,红灯(RLED),黄灯(YLEDD)和绿灯(GLED)分别接在8255的A,B,C口的低四位端口,PA0,PA1,PA2,PA3分别接南,东,北,西路口的红灯,B,C口类推。
8086工作在最小模式,低八位端口AD0~AD7接到8255和8253的D0~D7,AD8~AD15通过地址锁存器8282,接到三八译码器,译码后分别连到8255和8253的CS片选端。
8253的三个门控端接+5V,CLOCK0接由分频器产生的1MHZ的时钟脉冲,OUT0接到CLOCK1和CLOCK2,OUT1接到8086的AD18,8086通过检测此端口是否有高电平来判断是否30S定时到。
OUT2产生1MHZ方波通过或门和8255的B口共同控制黄灯的闪烁。
8255三个口全部工作在方式0既基本输入输出方式,红绿灯的转换由软件编程实现。
三:
设计方案与硬件连接
设8253各口地址分别为:
设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=1
s,因此通道0的计数初值为10000=2710H。
由此方波分别作为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次闪烁。
三个通道的门控信号都未用,均接+5V即可。
四:
程序流程图
五:
程序分析
1:
源程序
datasegment
io8255aequ28ah
io8255bequ28bh
portc1db24h,44h,04h,44h,04h,44h,04h;六个灯可能
db81h,82h,80h,82h,80h,82h,80h;的状态数据
db0ffh;结束标志
dataends
codesegment
assumecs:
code,ds:
data
start:
movax,data
movds,ax
movdx,io8255b
moval,90h
outdx,al;设置8255为C口输出
movdx,io8255a
re_on:
movbx,0
on:
moval,portc1[bx]
cmpal,0ffh
jzre_on
outdx,al;点亮相应的灯
incbx
movcx,200;参数赋初值
testal,21h;是否有绿灯亮
jzde1;没有,短延时
movcx,2000;有,长延时
de1:
movdi,9000;di赋初值9000
de0:
decdi;减1计数
jnzde0;di不为0
loopde1
pushdx
movah,06h
movdl,0ffh
int21h
popdx
jzon;没有,转到on
exit:
movah,4ch;返回
int21h
codeends
endstart
可通过对cx的初始值设定来改变黄色灯亮的时间间隔来改变红灯亮的时间长度。
2:
调用函数分析
中断-中断函数简介
1、EnableIntr;
语法:
BOOLEnableIntr();
功能描述:
将微机实验装置的中断输入设为有效,执行此函数后,PLX9054将接受微机
实验装置上的中断请求,然后根据该请求申请一个PCI中断。
参数:
无
返回值:
如果成功,则返回True,否则返回False
备注:
应用程序在调用该函数之前,必须先调用Startup函数。
2、DisableIntr;
语法:
BOOLDisableIntr();
功能描述:
将微机实验装置的中断输入设为无效,执行此函数后,PLX9054将不相应微
机实验装置上的中断请求
参数:
无
返回值:
如果成功,则返回True,否则返回False
备注:
应用程序在调用该函数之前,必须先调用Startup函数。
3、RegisterISR;
语法:
BOOLRegisterISR(ISR_ROUTINEpfuncISR);
功能描述:
注册中断服务程序,当微机实验箱上的中断输入有效时,且实验箱上的中断
输入使能,程序将会执行该中断服务程序。
参数:
pfuncISR:
该参数即为中断服务函数名
返回值:
如果成功,则返回True,否则返回False
备注:
应用程序在调用该函数之前,必须先调用Startup函数
六:
调试记录及结果分析
1:
本电路没有设置显示倒计时的七段LED数码管,如果应用到街道上,不利于司机、行人把握
2:
在上机调试中发现,由于此软件延时的时间均为估算时间,不是特别准确,对于交通要求特别高的地方不宜采用。
如果是放到一个大的交通灯系统中,会影响到各个交通灯的运行时间,可能整个系统对交通的指挥调度会大大偏离理论计算,不能有效地防止和消除交通堵塞现象;
3:
当出现紧急情况,在特种车(如消防车、救护车)正要通过时,这种编程方式就不能完成;
但是,可以看到以上方案的一般性,只要将程序里的数据排列或规律稍加修改就可应用到任何一个路口的某一个方向上的交通灯上了,可移植性很强。
七:
参考资料
《微型计算机原理及运用》谭浩强清华大学出版社
《16/32位微机原理、汇编语言及接口技术》陈涛机械工业出版社
《微机接口技术应用》
八:
芯片资料
1.8255
8255的内部结构
8255A是一个40引脚的双列直插式集成电路芯片
按功能可把8255A分为三个逻辑电路部分,即:
口电路、总线接口电路和控制逻辑电路。
(1)口电路
8255A共有三个8位口,其中A口和B口是单纯的数据口,供数据I/O使用。
而C口则既可以作数据口,又可以作控制口使用,用于实现A口和B口的控制功能。
数据传送中A口所需的控制信号由C口高位部分(PC7~PC4)提供,因此把A口和C口高位部分合在一起称之为A组;同样理由把B口和C口低位部分(PC3~PC0)合在一起称之为B组。
(2)总线接口电路
总线接口电路用于实现8255A和单片微机的信号连接。
其中包括:
(a)数据总线缓冲器
数据总线缓冲器为8位双向三态缓冲器,可直接和80C51的数据线相连,与I/O操作有关的数据、控制字和状态信息都是通过该缓冲器进行传送。
(b)读/写控制逻辑
与读写有关的控制信号有
CS—片选信号(低电平有效)
RD—读信号(低电平有效)
WR—写信号(低电平有效)
A0、A1—端口选择信号。
8255A共有四个可寻址的端口(即A口、B口、C口和控制寄存器),用二位地址编码即可实现选择。
参见下表。
RESET—复位信号(高电平有效)。
复位之后,控制寄存器清除,各端口被置为输入方式。
读写控制逻辑用于实现8255A的硬件管理:
芯片的选择,口的寻址以及规定各端口和单片微机之间的数据传送方向。
(c)控制逻辑电路
控制逻辑电路包括A组控制和B组控制,合在一起构成8位控制寄存器。
用于存放各口的工作方式控制字
8255A工作方式及数据I/O操作
(1)8255A的工作方式
8255A共有三种工作方式,即方式0、方式1、方式2.
(a)方式0基本输入/输出方式
方式0下,可供使用的是两个8位口(A口和B口)及两个4位口(C口高4位部分和低4位部分)。
四个口可以是输入和输出的任何组合。
方式0适用于无条件数据传送,也可以把C口的某一位作为状态位,实现查询方式的数据传送。
(b)方式1选通输入/输出方式
A口和B口分别用于数据的输入/输出。
而C口则作为数据传送的联络信号。
具体定义见表7–2。
可见A口和B口的联络信号都是三个,如果A或B只有一个口按方式1使用,则剩下的另外13位口线仍然可按方式0使用。
如果两个口都按方式1使用,则还剩下2位口线,这两位口线仍然可以进行位状态的输入输出。
方式1适用于查询或中断方式的数据输入/输出。
(c)方式2双向数据传送方式
只有A口才能选择这种工作方式,这时A口既能输入数据又能输出数据。
在这种方式下需使用C口的五位线作控制线,信号定义如表7–2所示。
方式2适用于查询或中断方式的双向数据传送。
如果把A口置于方式2下,则B口只能工作于方式0.
(2)数据输入操作
用于输入操作的联络信号有:
STB(StroBe)—选通脉冲,输入,低电平有效。
当外设送来STB信号时,输入数据装入8255A的锁存器。
IBF(InputBufferFull)—输入缓冲器满信号,输出,高电平有效。
IBF信号有效,表明数据已装入锁存器,因此它是一个状态信号。
INTR(INTerruptRequest)—中断请求信号,高电平有效,当IBF数据输入过程:
当外设准备好数据输入后,发出信号,输入的数据送入缓冲器。
然后IBF信号有效。
如使用查询方式,则IBF即作为状态信号供查询使用;如使用中断方式,当信号由低变高时,产生INTR信号,向单片微机发出中断。
单片微机在响应中断后执行中断服务程序时读入数据,并使INTR信号变低,同时也使IBF信号同时变低。
以通知外设准备下一次数据输入。
(3)数据输出操作
用于数据输出操作的联络信号有:
ACK(ACKnowledge)—外设响应信号输入,低电平有效。
当外设取走输出数据,并处理完毕后向单片微机发回的响应信号为高,信号由低变高(后沿)时,中断请求信号有效。
向单片微机发出中断请求。
OBF(OutputBufferFull)——输出缓冲器满信号,输出,低电平有效。
当单片微机把输出数据写入8255A锁存器后,该信号有效,并送去启动外设以接收数据。
INTR—中断请求信号,输出,高电平有效。
数据输出过程:
外设接收并处理完一组数据后,发回ACK信号。
该信号使OBF变高,表明输出缓冲器已空。
如使用查询方式,则OBF可作为状态信号供查询使用;如使用中断方式,则当ACK信号结束时,INTR有效,向单片微机发出中断请求。
在中断服务过程中,把下一个输出数据写入8255A的输出缓冲器。
写入后OBF有效,表明输出数据已到,并以此信号启动外设工作,取走并处理8255A中的输出数据。
2.8253定时计数器
8253内部可分为6个模块,每个模块的功能如下:
1.数据总线缓冲器及数据总线D0~D7
2.读/写控制逻辑及控制引脚
CS*A1A0
I/O地址
读操作RD*
写操作WR*
000
001
010
011
40H
41H
42H
43H
读计数器0
读计数器1
读计数器2
无操作
写计数器0
写计数器1
写计数器2
写控制字
3.控制字寄存器
在初始化编程时,CPU写入方式控制字到控制字寄存器中,用以选择计数通道及其相应的工作方式。
8253的控制字:
8253的工作方式也是有控制字来决定,其控制字意义如下
4.计数通道0、计数通道1、计数通道2
3个计数通道内部结构完全相同。
每个计数通道都由一个16位计数初值寄存器、一个16位减法计数器和一个16位计数值锁存器组成
计数初值存于预置寄存器,在计数过程中,减法计数器的值不断递减,而预置寄存器中的预置不变。
输出锁存器用于写入锁存命令时,锁定当前计数值。
计数器的3个引脚说明:
(1)CLK时钟输入信号
在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减1
(2)GATE门控输入信号
控制计数器工作,可分成电平控制和上升沿控制两种类型
(3)OUT计数器输出信号
当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号
8253有6种工作方式,由方式控制字确定
区分这6种工作方式的主要标志由3点:
一是输出波形不同;二是启动计数器的触发方式不同;三是计数过程中门控信号GATE对计数器操作的控制不同。
1..方式0--低电平输出(GATE信号上升沿继续计数)
2.方式1--低电平输出(GATE信号上升沿重新计数)
3.方式2--周期性脉冲输出
4.方式3--周期性方波输出
OUT输出低电平,装入计数值n后,OUT立即跳变为高电平。
如果当前GATE为高电平,则立即开始减“1”计数,OUT保持为高电平,若n为偶数,则当计数值减到n/2时,OUT跳变为低电平,一直保持到计数值为“0”,系统才重新置入计数值n,实现循环计数。
这时OUT端输出周期为n×CLK周期,占空比为1:
1的方波序列:
若n为奇数,则OUT端输出周期为n×CLK周期,占空比(n+1)/2:
(n-1)/2的近似方波序列。
5.方式4--单次负脉冲输出(软件触发)
6.方式5--单次负脉冲输出(硬件触发)
每种工作方式的设置过程类似:
⑴设定工作方式
⑵设定计数初值
⑶硬件启动
⑷计数初值进入减1计数器
⑸每输入一个时钟计数器减1的计数过程
⑹计数过程结束
九:
总结
这个实验是与现实生活是比较接近,通过这个实验,我大概知道了交通灯的工作原理,也加深了以前学的知识,更进一步认识了8255、8253芯片,并且掌握了对并行接口的使用。
交通灯控制设计方面的东西,我了解的较少,只是大概的知道8255可编程并行接口芯片和8253可以用来定时。
刚开始只是把实验箱的线连接,原理什么都不知道,只好大量的查资料像怎么样使用8253来定时及输出一定频率的脉冲,怎么样用8282这个地址锁存器来存储高位地址和低位地址以及交通有哪些规则,后来终于弄懂了,并且可以修改代码来得到自己需要的结果,对微机原理越加有兴趣,也想更深入的了解一些有关于这方面的知识。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验 交通灯 控制