硬件课程设计交通灯.docx
- 文档编号:30528673
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:25
- 大小:43.70KB
硬件课程设计交通灯.docx
《硬件课程设计交通灯.docx》由会员分享,可在线阅读,更多相关《硬件课程设计交通灯.docx(25页珍藏版)》请在冰豆网上搜索。
硬件课程设计交通灯
硬件部件设计与调试
实践报告
题目:
基本内容―电子时钟的设计
扩展内容-交通灯
班级:
计本095
姓名:
郑兰涛
学号:
2009021165
指导教师:
王崇
2012年5月
硬件部件设计与调试实践评分表
班级
姓名
指导教师
题目:
基本内容――电子时钟的设计
扩展内容――
评分标准
评分标准
分数权重
评分的依据
得分
A
C
工作态度
10
态度端正,能主动认真完成各个环节的工作,不迟到早退,出勤好。
能够完成各环节基本工作,出勤较好。
独立工作能力
10
能够独立完成各环节的工作,分析、解决问题能力强,有一定的创造性。
能够在老师指导下完成各环节工作,有一定的分析、解决问题能力。
硬件设计能力
20
电路设计合理,简捷,元器件、连线排列整齐、有序。
电路设计基本合理,元器件、连线排列较整齐。
软件调试能力
20
能够独立完成软件的设计与调试工作,程序结构清晰,逻辑严谨,功能完善。
能够在老师指导下完成软件的设计与调试工作,程序功能较完善。
成果演示
及答辩
10
整体工作情况稳定,运行情况过程中无故障发生,能准确回答老师提出的问题。
整体工作情况较好,能够完成各项功能,回答问题基本正确。
实习报告
30
格式规范,层次清晰,设计思想明确,解决问题方法合理,体会深刻。
格式较规范,设计思想基本明确,解决问题方法较合理。
总分
指导教师(签字):
注:
介于A和C之间为B级,低于C为D级和E级。
按各项指标打分后,总分在90~100为优,80~89为良,70~79为中,60~69为及格,60分以下为不及格。
交通灯指挥系统课程设计
需求分析
红绿交通灯是我们日常生活经常见到也是必不可少的,随着城市社会经济的发展,城市道路交通供给和需求的矛盾日益突出,并引发很多交通问题。
当今,红绿灯安装在各个交通路口上,已经成为疏导交通车辆最常见和最有效的手段。
1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。
绿灯时通行信号,面对绿灯的车辆可以直行、左转弯和右转弯,除非另一种标志禁止某一种转向。
左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。
面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。
我们设计的交通灯就是依据上述思路控制十字路口南北东西四个方向车辆通行的。
设计思路
通过可编程并行接口芯片8255A和可编程定时器/计数器芯片8253以及中断控制器8279实现十字路口交通灯的模拟控制,进一步掌握并行接口和定时器/计时器以及数码管控制的实际应用。
实验内容
编写一个交通灯控制程序,实现东西路口与南北路口状态灯的转换。
其中红灯亮,表示该道路禁止通行;黄灯亮表示该道路上未过停车线的车辆禁止通行,已过停车线的车辆继续通行;绿灯表示该道路允许通行。
技术指示
1、用实验箱中提供的发光二极管(红绿黄各两支、共六支)作为南北路口(红绿黄各一支)和东西路口(红绿黄各一支)的模拟交通灯。
2、用可编程并行接口芯片8255A控制模拟交通灯的亮与灭和数码管的倒计时显示。
3、用可编程定时器/计数器芯片8253实现模拟交通灯亮与灭的时间延迟的控制。
4、用数码管作为模拟交通灯亮与灭的时间延迟控制的倒计时显示。
5、用汇编语言编程使六个灯按交通灯变化规律“亮/灭”。
交通灯变化要求:
(1)南北灯绿,东西红灯同时亮30秒,且数码管30秒倒计时显示。
(2)南北黄灯闪烁5秒,同时东西路红灯继续亮,且数码管5秒倒计时显示。
(3)南北路红灯、东西路绿灯同时亮30秒,且数码管30秒倒计时显示。
开始
路口1的车直行时各路口黄灯亮情况
延迟30秒
路口1的车直行→路口2的车直行时黄灯亮情况
延迟5秒
路口2的车直行时黄灯亮情况
延迟30秒
路口2的车直行→路口3的车直行时黄灯亮情况
延迟5秒
路口3的车直行时黄灯亮情况
延迟30秒
路口3的车直行→路口4的车直行时黄灯亮情况
延迟5秒
路口4的车直行时黄灯亮情况
延迟30秒
路口4的车直行→路口1的车直行时黄灯亮情况
延迟5秒
实验原理
通过8253计数,每1ms刷新一次,CX计数不为零,计数值减1,刷新1000次,持续1秒钟(其中输入始终脉冲为1KHZ)。
PA7~PA0控制二极管的亮灭,PB7~PB0控制数码管的显示。
通过设置控制字,使8255A的C口高四位输出,低四位输入。
PC4和PC5对数码管进行位控,让两位十进制数同时显示。
在黄灯显示的时候,通过判断使黄灯亮时灭,灭时亮,以此设置黄灯闪烁。
8255A芯片
D7
D6
D5
D4
D3
D2
D1
D0
B组
C口(半低)
1=输入,0=输出
B口
1=输入,0=输出
B组设置
0=方式0
1=方式1
C组
C口(开)
1=输入,0=输出
C口
1=输入,0=输出
0=0方式
1=1方式
引脚功能
RESET:
复位输入线,当该输入端处于高电平时,所有内部寄存器(包括控制寄存器)均被清除,所有I/O口均被置成输入方式。
CS:
芯片选择信号线,当这个输入引脚为低电平时,即/CS=0时,表示芯片被选中,允许8255与CPU进行通讯;/CS=1时,8255无法与CPU做数据传输.
RD:
读信号线,当这个输入引脚为低电平时,即/RD=0且/CS=0时,允许8255通过数据总线向CPU发送数据或状态信息,即CPU从8255读取信息或数据。
WR:
写入信号,当这个输入引脚为低电平时,即/WR=0且/CS=0时,允许CPU将数据或控制字写入8255。
D0~D7:
三态双向数据总线,8255与CPU数据传送的通道,当CPU执行输入输出指令时,通过它实现8位数据的读/写操作,控制字和状态信息也通过数据总线传送。
PA0~PA7:
端口A输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入锁存器。
PB0~PB7:
端口B输入输出线,一个8位的I/O锁存器,一个8位的输入输出缓冲器。
PC0~PC7:
端口C输入输出线,一个8位的数据输出锁存器/缓冲器,一个8位的数据输入缓冲器。
端口C可以通过工作方式设定而分成2个4位的端口,每个4位的端口包含一个4位的锁存器,分别与端口A和端口B配合使用,可作为控制信号输出或状态信号输入端口。
'
A0,A1:
地址选择线,用来选择8255的PA口,PB口,PC口和控制寄存器.
当A0=0,A1=0时,PA口被选择;
当A0=0,A1=1时,PB口被选择;
当A0=1,A1=0时,PC口被选择;
当A0=1.A1=1时,控制寄存器被选择.
工作原理
8253具有3个独立的计数通道,采用减1计数方式。
在门控信号有效时,每输入1个计数脉冲,通道作1次计数操作。
当计数脉冲是已知周期的时钟信号时,计数就成为定时。
8253内部结构
8253芯片有24条引脚,封装在双列直插式陶瓷管壳内。
1.数据总线缓冲器
数据总线缓冲器与系统总线连接,8位双向,与CPU交换信息的通道。
这是8253与CPU之间的数据接口,它由8位双向三态缓冲存储器构成,是CPU与8253之间交换信息的必经之路。
2.读/写控制
读/写控制分别连接系统的IOR#和IOW#,由CPU控制着访问8253的内部通道。
接收CPU送入的读/写控制信号,并完成对芯片内部各功能部件的控制功能,因此,它实际上是8253芯片内部的控制器。
A1A0:
端口选择信号,由CPU输入。
8253内部有3个独立的通道和一个控制字寄存器,它们构成8253芯片的4个端口,CPU可对3个通道进行读/写操作3对控制字寄存器进行写操作。
这4个端口地址由最低2位地址码A1A0来选择。
如表9.3.1所示。
3.通道选择
(1)CS#——片选信号,由CPU输入,低电平有效,通常由端口地址的高位地址译码形成。
(2)RD#、WR#——读/写控制命令,由CPU输入,低电平有效。
RD#效时,CPU读取由A1A0所选定的通道内计数器的内容。
WR#有效时,CPU将计数值写入各个通道的计数器中,或者是将方式控制字写入控制字寄存器中。
CPU对8253的读/写操作如表9.3.2所示。
4.计数通道0~2
每个计数通道内含1个16位的初值寄存器、减1计数器和1个16位的(输出)锁存器。
8253内部包含3个功能完全相同的通道,每个通道内部设有一个16位计数器,可进行二进制或十进制(BCD码)计数。
采用二进制计数时,最大计数值是FFFFH,采用BCD码计数时。
最大计数值是9999。
与此计数器相对应,每个通道内设有一个16位计数值锁存器。
必要时可用来锁存计数值。
当某通道用作计数器时,应将要求计数的次数预置到该通道的计数器中、被计数的事件应以脉冲方式从CLK端输入,每输入一个计数脉冲,计数器内容减“1”,待计数值计到“0”。
OUT端将有输出。
表示计数次数到。
当某个通道用作定时器时。
由CLK输入一定频率的时钟脉冲。
根据要求定时的时间长短确定所需的计数值。
并预置到计数器中,每输入一个时钟脉冲,计数器内容减“1”,待计数值计到“0”。
OUT将有输出,表示定时时间到。
允许从CLK输入的时钟频在1~2MHz范围内。
因此,任一通道作计数器用或作定时器用,其内部操作完全相同,区别仅在于前者是由计数脉冲进行减“1”计数。
而后者是内时钟脉冲进行减“1”计数。
作计数器时,要求计数的次数可直接作为计数器的初值预置到减“1”计数器中。
作定时器时,计数器的初值即定时系数应根据要求定时的时间进行如下运算才能得到:
定时系数=需要定时的时间/时钟脉冲周期
①设置通道:
向方式控制字寄存器端口写入方式选择控制字,用于确定要设置的通道及工作方式;
②计数/定时:
向通道写入计数值,启动计数操作;
③读取当前的计数值:
向指定通道读取当前计数器值时,8253将计数器值存入锁存器,从锁存器向外提供当前的计数器值,计数器则继续作计数操作。
④计数到:
当计数器减1为0时,通过引脚OUTi向外输出“到”的脉冲信号。
计数初值输入存放在初值寄存器中,计数开始或重装入时被复制到计数器中。
锁存器在非锁存状态,其值随计数器的变化而变化;一旦锁存了计数器的当前值,直到锁存器值被读取后才能解除锁存状态。
5.方式选择控制字
8253的通道工作方式
8253中各通道可有6种可供选择的工作方式,以完成定时、计数或脉冲发生器等多种功能。
8253的各种工作方式如下:
1.方式0:
计数结束则中断
工作方式0被称为计数结束中断方式,它的定时波形如图9.3.4所示。
当任一通道被定义为工作方式0时,OUTi输出为低电平;若门控信号GATE为高电平,当CPU利用输出指令向该通道写入计数值WR#有效时,OUTi仍保持低电平,然后计数器开始减“1”计数,直到计数值为“0”,此刻OUTi将输出由低电平向高电平跳变,可用它向CPU发出中断请求,OUTi端输出的高电平一直维持到下次再写入计数值为止。
在工作方式0情况下,门控信号GATE用来控制减“1”计数操作是否进行。
当GATE=1时,允许减“1”计数;GATE=0时,禁止减“1”计数;计数值将保持GATE有效时的数值不变,待GATE重新有效后,减“1”计数继续进行。
显然,利用工作方式0既可完成计数功能,也可完成定时功能。
当用作计数器时,应将要求计数的次数预置到计数器中,将要求计数的事件以脉冲方式从CLKi端输入,由它对计数器进行减“1”计数,直到计数值为0,此刻OUTi输出正跳变,表示计数次数到。
当用作定时器时,应把根据要求定时的时间和CLKi的周期计算出定时系数,预置到计数器中。
从CLKi,输入的应是一定频率的时钟脉冲,由它对计数器进行减“1”计数,定时时间从写入计数值开始,到计数值计到“0”为止,这时OUTi输出正跳变,表示定时时间到。
有一点需要说明,任一通道工作在方式0情况下,计数器初值一次有效,经过一次计数或定时后如果需要继续完成计数或定时功能,必须重新写入计数器的初值。
2.方式1:
单脉冲发生器
工作方式1被称作可编程单脉冲发生器,其定义波形如图9.3.5。
进入这种工作方式,CPU装入计数值n后OUTi输出高电平,不管此时的GATE输入是高电平还是低电平,都不开始减“1”计数,必须等到GATE由低电平向高电平跳变形成一个上升沿后,计数过程才会开始。
与此同时,OUTi输出由高电平向低电平跳变,形成了输出单脉冲的前沿,待计数值计到“0”,OUTi输出由低电平向高电平跳变,形成输出单脉冲的后沿,因此,由方式l所能输出单脉冲的宽度为CLKi周期的n倍。
如果在减“1”计数过程中,GATE由高电平跳变为低电乎,这并不影响计数过程,仍继续计数;但若重新遇到GATE的上升沿,则从初值开始重新计数,其效果会使输出的单脉冲加宽,如教材图9-22(b)中的第2个单脉冲。
这种工作方式下,计数值也是一次有效,每输入一次计数值,只产生一个负极性单脉冲。
3.方式2:
速率波发生器
工作方式2被称作速率波发生器,其定时波形如图9.3.6所示。
进入这种工作方式,OUTi输出高电平,装入计数值n后如果GATE为高电平,则立即开始计数,OUTi保持为高电平不变;待计数值减到“1”和“0”之间,OUTi将输出宽度为一个CLKi周期的负脉冲,计数值为“0”时,自动重新装入计数初值n,实现循环计数,OUTi将输出一定频率的负脉冲序列,其脉冲宽度固定为一个CLKi周期,重复周期为CLKi周期的n倍。
如果在减“1”计数过程中,GATE变为无效(输入0电平),则暂停减“1”计数,待GATE恢复有效后,从初值n开始重新计数。
这样会改变输出脉冲的速率。
如果在操作过程中要求改变输出脉冲的速率,CPU可在任何时候,重新写人新的计数值,它不会影响正在进行的减“1”计数过程,而是从下一个计数操作用期开始按新的计数值改变输出脉冲的速率。
4.方式3:
方波发生器
工作方式3被称作方波发生器,其定时波型如图9.3.7所示。
任一通道工作在方式3,只在计数值n为偶数,则可输出重复周期为n、占空比为1:
1的方波。
进入工作方式3,OUTi输出低电平,装入计数值后,OUTi立即跳变为高电平。
如果当GATE为高电平,则立即开始减“1”计数,OUTi保持为高电平,若n为偶数,则当计数值减到n/2时,OUTi跳变为低电平,一直保持到计数值为“0”,系统才自动重新置入计数值n,实现循环计数。
这时OUTi端输出的周期为n×CLKi周期,占空比为1:
1的方波序列;若n为奇数,则OUTi端输出周期为n×CLKi周期,占空比为((n+1)/2)/((n-1)/2)的近似方波序列。
如果在操作过程中,GATE变为无效,则暂停减“1”计数过程,直到GATE再次有效,重新从初值n开始减“l”计数。
如果要求改变输出方波的速率,则CPU可在任何时候重新装入新的计数初值n,并从下一个计数操作周期开始改变输出方波的速率。
5.方式4:
软件触发方式计数
工作方式4被称作软件触发方式,其定时波形如图9.3.8所示。
进入工作方式4,OUTi输出高电平。
装入计数值n后,如果GATE为高电平,则立即开始减“1”计数,直到计数值减到“0”为止,OUTi输出宽度为一个CLKi周期的负脉冲。
由软件装入的计数值只有一次有效,如果要继续操作,必须重新置入计数初值n。
如果在操作的过程中,GATE变为无效,则停止减“1”计数,到GATE再次有效时,重新从初值开始减“1”计数。
显然,利用这种工作方式可以完成定时功能,定时时间从装入计数值n开始,则OUTi输出负脉冲(表示定时时间到),其定时时间=n×CLK周期。
这种工作方式也可完成计数功能,它要求计数的事件以脉冲的方式从CLKi输入,将计数次数作为计数初值装入后,由CLKi端输入的计数脉冲进行减“1”计数,直到计数值为“0”,由OUTt端输出负脉冲(表示计数次数到)。
当然也可利用OUTj向CFU发出中断请求。
因此工作方式4与工作方式0很相似,只是方式0在OUTi端输出正阶跃信号、方式4在OUTi端输出负脉冲信号。
6.方式5:
硬件触发方式计数
工作方式5被称为硬件触发方式,其定时波形如图9.3.9所示。
进入工作方式5,OUTi输出高电平,硬件触发信号由GATE端引入。
因此,开始时GATE应输入为0,装入计数初值n后,减“1”计数并不工作,一定要等到硬件触发信号由GATE端引入一个正阶跃信号,减“1”计数才会开始,待计数值计到“0”,OUTi将输出负脉冲,其宽度固定为一个CLKi周期,表示定时时间到或计数次数到。
这种工作方式下,当计数值计到“0”后,系统将自动重新装入计数值n,但并不开始计数,一定要等到由GATE端引入的正跳沿,才会开始进行减“1”计数,因此这是一种完全由GATE端引入的触发信号控制下的计数或定时功能。
如果由CLKi输入的是一定频率的时钟脉冲,那么可完成定时功能,定时时间从GATE上升沿开始,到OUTi端输出负脉冲结束。
如果从CLKi端输入的是要求计数的事件,则可完成计数功能,计数过程从GATE上升沿开始,到OUTi输出负脉冲结束。
GATE可由外部电路或控制现场产生,故硬件触发方式由此而得名。
如果需要改变计数初值,CPU可在任何时候用输出指令装入新的计数初值m,它将不影响正在进行的操作过程,而是到下一个计数操作周期才会按新的计数值进行操作。
从上述各工作方式可看出,GATE作为各通道的门控信号,对于各种不同的工作方式,它所起的作用各不相同。
在8253的应用中,必须正确使用GATE信号,才能保证各通道的正常操作。
7.读取计数器的当前值
⑴直接读计数器:
输出锁存器在非锁存状态会跟随计数器计数的变化而变化,直接读计数器是从锁存器得到计数器的当前值。
但由于计数器处于工作状态,读出值不一定能稳定。
⑵先锁存再读取:
①通过方式选择控制字对指定通道(SC1、SC0)的计数值锁入锁存器(RL1RL0=00),锁存器一旦锁存了当前计数值,就不再随计数器变化直到被读取。
②读计数器通道(有锁存器)。
分析与测试
PORT_A8255EQU200H;8255A端口地址
PORT_B8255EQU201H;8255B端口地址
PORT_C8255EQU202H;8255C端口地址
PORT_CS8255EQU203H;8255控制端口地址
ControlMode8255EQU10001001b;A口方式0,输出,B口方式0,输出,C口低4位输入,高4位输入
PORT_A8253EQU208H;8253计时器0端口地址
PORT_B8253EQU209H;8253计时器1端口地址
PORT_C8253EQU20AH;8253计时器2端口地址
PORT_CS8253EQU20BH;8253计时器控制端口地址
Clock0ModeEQU00110100b;计时器0的工作模式,0通道,先读写低字节后读写高字节,方式2,2进制计数
Clock0CountEQU62500;计时器0的计数值
Clock1ModeEQU01110000b;计时器1的工作模式,1通道,先读写低字节后读写高字节,方式0,2进制计数
Clock1CountEQU16;计时器1的计数值
Data_KEQU10;10进制
Z8279equ212h;8279命令字地址
D8279equ210h;8279数据端口地址
LEDMODequ00h;左边输入,8位显示,外部译码8位
LEDFEQequ38h;扫描频率
Clock1Endequ04h;截获8255C口第三位输入信息用于检测CLOCK1是否计时完毕
codesegment
;主函数
mainprocfar
assumecs:
code,ds:
code
start:
pushcs
popds
callInit8255;初始化8255
movcx,0;清零
MainLoop:
pushcx
leabx,Light;将light的值赋给bx
addbx,cx
moval,[bx]
movah,00h
movdx,PORT_B8255
outdx,al
LittleLoop:
callInitClock0;初始化计时器0
callInitClock1;初始化计时器1
callCheckClock0Over;检测定时器1是否定时1秒结束,从而截获PC2的信息
leabx,Time
popcx
cmpcx,00h
jeinc0
cmpcx,01h
jeInc1
cmpcx,02h
jeinc0
cmpcx,03h
jeInc1
jmpOtherDeal
inc0:
jmpMainDeal
Inc1:
addbx,1
MainDeal:
pushcx
moval,[bx]
movah,00h
pushbx
pushax
callDisplay;8279的显示
popax
decax;ax=ax-1
popbx
mov[bx],al
cmpax,00h
jlResetData;比较后小于这个数就跳转到这里
jmpLittleLoop
ResetData:
;选择亮不同的灯,0-3分别表示light的四种类型
popcx
inccx
cmpcx,00h
jeResetData2
cmpcx,01h
jeResetData1
cmpcx,02h
jeResetData2
cmpcx,03h
jeResetData1
jmpResetData2
ResetData1:
movax,5
leabx,Time
addbx,1
jmpResetData3
ResetData2:
cmpcx,3
jaOtherDeal
movax,30
leabx,Time
ResetData3:
pushcx
mov[bx],al
popcx
jmpMainLoop
OtherDeal:
movcx,0
leabx,Time
movax,30
mov[bx],al
addbx,1
movax,5
mov[bx],al
jmpMainLoop
mainendp
;检测定时器1是否定时1秒结束
CheckClock0Overprocnear
movd
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 硬件 课程设计 交通灯