自动路灯控制器的设计.docx
《自动路灯控制器的设计.docx》由会员分享,可在线阅读,更多相关《自动路灯控制器的设计.docx(31页珍藏版)》请在冰点文库上搜索。
自动路灯控制器的设计
合肥学院
计算机科学与技术系
微机原理与接口技术
课程设计
课程设计科目
自动路灯控制器的设计
学生姓名
陈超
学号
1304012026
班级
13计科2班
指导教师
高玲玲、何立新
时间
2016.1.10
1、题意分析与解决方案
1.1题意需求分析
自动路灯控制器的设计,先在LED数码管上显示时钟初值,包含有“时”、“分”、“秒”(例如07小时59分59秒),时钟按每秒运转动态显示。
当当前显示时间与实际时间不一致时,应具有校时功能,即可以通过矩阵键盘对时钟数值进行设置、修改。
而且可以按设计的时间使LED灯亮和灭。
当前数码管显示时间与所设定的亮灯和灭灯时间相等时,可以使LED灯亮和灭。
所以在本课程设计中,应需要解决的问题有:
(1)如何驱动LED数码管,将时钟该数值显示在数码管上;
(2)如何实现对矩阵键盘的扫描,获取按键值来对不正确的时钟数值的时、
分、秒进行修改;
如何实现当当前数码管显示时间与所设定的亮灯和灭灯时间,驱动LED灯,持续亮灯,亮灯后,继续走时。
1.2解决问题方法及思路
1.2.1硬件部分
本实验中我们要用到的硬件主要是8253、8259、8279、8255、矩阵键盘、LED七段数码管、LED灯。
设计一个时钟,包含有时、分、秒,驱动LED七段数码显示时间。
对于设定的时钟初值如何显示在数码管上,可以利用8279接口芯片来驱动数码管。
8279模块的B端、C端分别接到数码管的段选和位选。
实现时钟走时,可利用8253定时器/计数器来实现时钟按每秒走时。
将8253芯片的OUT0端接到8259的IR0端口,通过8253的电平输出来触发中断,实现每过1s,秒值加1,并更新数码管的显示。
对于时钟数值与要求时钟不一致时,利用矩阵键盘来触发时钟的修改功能。
矩阵键盘的分配如下:
0—9键为数字功能键,相应键值代表所要修改的数值,E键为时钟修改取消键,F键为时钟修改确认键。
按下时钟修改确认键后,进入修改,从时的十位开始到秒的个位逐位修改。
按照亮灯和灭灯时间,驱动LED灯,并用8255来驱动。
8255有A口、B口、C口,用C口的PC口与LED灯连接,若当前时间与设定时间相等时,则将PC1置成低电平,此时LED灯亮。
若不相等,则置PC1为高电平。
1.2.2软件部分
设定时钟初值,将设定的初值存储在缓冲区中,然后按照LED数码管的显示特性和字模表,通过8279模块的B端、C端先送段选,后送位选,以驱动数码管,实现将时钟数值显示在数码管上。
为了简便8253的操作,可以利用8253的定时器/计数器0来定时0.5s,然后定义标志量对0.5的计时个数进行判断,从而达到时钟以1s为单位进行走时,时钟的动态显示。
8253触发8259的中断时,在中断程序中判断秒值是否等于60,若不相等,则继续计时;若相等,则将秒值置0,分值加1,接着判断分值是否等于60,若不等于,则继续走时;若等于,则分值置0,时值加1,最后对时值进行判断。
若时值等于24,则时值置0;若不等于24小时,则继续走时。
8279模块通过A端、D端获取矩阵键盘的状况,对矩阵键盘的按键的状态判断,来确定是否修改时钟。
当按下的键值为F键值时,则进行时钟修改程序。
接着获取相应的数值键,来修改时间。
LED灯亮灭功能中,比较当前钟值与设定的灯亮时间值是否一样,当一样时,对8255的C口的PC口通过控制字使得与其相连的LED灯亮,比较当前钟值与设定的灯灭时间值是否一样,则将PC口的值置高电平,使LED灯灭。
2、硬件设计
2.1选择芯片8253
2.1.1芯片8253在本设计中的作用
8253定时器/计数器芯片为本实验提供计时功能,对8253完成控制字的设置、定时初值的写入等初始化后,可以实现定时0.5s,然后利用对0.5s的计数标志量的判断,比较其是否为2,来实现1s为单位的走时效果。
2.1.28253的功能分析
8253可编程定时/计数器是Intel公司生产的通用外围芯片之一,主要由数据总线缓冲器、读/写逻辑、控制字寄存器及3个计数器组成。
8253内部有三个计数器,分别成为计数器0、计数器1和计数器2,他们的机构完全相同。
每个计数器的输入和输出都决定于设置在控制寄存器中的控制字,互相之间工作完全独立。
每个计数器通过三个引脚和外部联系,一个为时钟输入端CLK,一个为门控信号输入端GATE,另一个为输出端OUT。
每个计数器内部有一个8位的控制寄存器,还有一个16位的计数初值寄存器CR、一个计数执行部件CE和一个输出锁存器OL。
执行部件实际上是一个16位的减法计数器,它的起始值就是初值寄存器的值,而初始值寄存器的值是通过程序设置的。
输出锁存器的值是通过程序设置的。
输出锁存器OL用来锁存计数执行部件CE的内容,从而使CPU可以对此进行读操作。
8253芯片有6种工作方式:
方式0:
计数结束中断;
方式1:
可编程触发器;
方式2:
频率发生器;
方式3:
方波发生器;
方式4:
软件触发选通信号;
方式5:
硬件触发选通信号。
本实验中,采用的是8253的定时/计数器0,工作在方式2,在计数结束后输出上升沿触发中断。
2.1.38253的技术参数
图2-18253芯片引脚图
D7-D0:
双向三态数据线
CLK0-CLK2:
计数输入,用于输入定时基准脉冲或计数脉冲
GATE0-GATE2:
门控输入,用于启动或禁止计数器的操作,以使计数器和计测对象同步。
低电平禁止工作,为高电平或GATE上升沿出发后,允许计数器工作
OUT0-OUT2:
输出信号,以相应的电平指示计数的完成,或输出脉冲波形
A1、A0:
片内地址寄存器地址输入信号,用于寻找3个计数器和控制字寄存器
#RD、#WR、#CS:
分别为读、写和片选信号,均为低电平有效
表2-1控制功能表
#CS
#RD
#WR
A1
A0
寄存器选择及其操作
0
1
0
0
0
计数器0置计数初值
0
1
0
0
1
计数器1置计数初值
0
1
0
1
0
计数器2置计数初值
0
1
0
1
1
置控制字
0
0
1
0
0
计数器0读出计数值
0
0
1
0
1
计数器1读出计数值
0
0
1
1
0
计数器2读出计数值
0
0
1
1
1
无操作(D7-D0三态)
1
X
X
X
X
禁止(D7-D0三态)
0
1
1
X
X
无操作(D7-D0三态)
2.2选择芯片8255
2.2.1芯片8255在本设计中的作用
本实验中利用8255芯片的A通道来控制LED灯。
2.2.28255的功能分析
8255A采用40脚双列直插式封装单一+5V电源,全部输入/输出均与TTL电平兼容,为可编程通用并行接口芯片。
它有24条可编程的I/O引脚,与Intel系列微处理器完全兼容,直接的位清0或置1功能,简化了接口控制。
8255A是可编程并行接口,内部有3个相互独立的8位数据端口,即A口、B口和C口。
三个端口都可以作为输入端口或输出端口。
8255有三种工作方式。
方式0:
基本输入输出,端口与外设之间无联络信号,只能使用无条件传送方式输入输出数据;方式1:
是选通输入输出方式,PC口用作联络信号;方式2:
双向数据传送方式,仅A口有此功能。
A口有三种工作方式:
即方式0、方式1和方式2,而B口只能工作在方式0或方式1下,而C口通常作为联络信号使用。
8255A的工作只有当片选CS效时才能进行。
8255A在本设计中起并行传输接口作用,将C口作为输出端口,对PC口进行操作,通过C口向LED灯传输数据,来驱动LED灯工作。
2.2.38255的技术参数
PA7~PA0:
A口数据信号线。
PB7~PB0:
B口数据信号线。
PC7~PC0:
C口数据信号线。
RESET:
复位信号。
当此信号来时,所有寄存器都被清除。
同时三个数据端口被自动置为输入端口。
D7~D0:
它们是8255A的数据线和系统总线相连。
CS:
片选信号。
在系统中,一般根据全部接口芯片来分配,若低位地址(比如A5、A4、A3)组成各种芯片选择码,当这几位地址组成某一个低电平,8255A被选中。
只有当其有效时,读信号写才对8255A进行读写。
RD:
读信号。
当此信号有效时,CPU可从8255A中读取数据。
WR:
写信号。
当此信号有效时,CPU可向8255A中写入数据。
A1、A0:
端口选择信号。
8255A内部有3个数据端口和1个控制端口,共4个端口。
规定:
A1、A0为00时,选中A端口;
A1、A0为01时,选中B端口;
A1、A0为10时,选中C端口;
A1、A0为11时,选中控制口。
输入最低电压:
min=-0.5V,max=0.8 V
输入最高电压:
2.0 V
输出最低电压:
0.45 V
输出最高电压:
2.4 V
表2-28255A的技术参数
参数名称
符号
测试条件
最大规范值
最小规范值
输入低电平电压
VIL
0.8V
-0.5V
输入高电平电压
VIH
Vcc
2.0V
输入低电平电压
(数据总线)
VOL
IOL=2.5MA
0.45V
输入低电平电压
(外部端口)
VOL
IOL=1.7MA
0.45V
输入高电平电压
(数据总线)
VOH
IOH=-400MA
2.4V
输入高电平电压
(外部端口)
VOH
IOH=-200MA
2.4V
达林顿驱动电流
IDAR
REXT=750
VEXT=1.5V
-0.4MA
1.0MA
电源电流
ICC
120MA
输入负载电流
IIL
I=Vcc—0V
+10MA
-10MA
输出浮动电流
IOFL
Vout=Vcc--0
+10MA
-10MA
8255A主要参数分析:
8255A的达林顿驱动电流最大为4.0mA,当电流超过达林顿驱动电流是芯片就有可能会被损坏,而LED的驱动电流要比它高的多发光,在保证8255A芯片安全的同时又能让LED管显示就会需要外加器件。
2.3选择芯片8259
2.3.1芯片8259在本设计中的作用
本实验中利用8259芯片来实现LED灯的亮灭。
2.3.28259的功能分析
8259A有4个初始化命令字ICW1~ICW4,它们按照一定的顺序送入,用于设置8259A的初始状态。
无论何时,当微处理器向8259A发送一条A0=0和D4=1的命令时,这条命令就译码为ICW1。
A0=0和D4=1是ICW1的标识位!
利用A0=0,D4=1对ICW1寻址。
[1]
(1)ICW1:
规定8259的连接方式(单片或级联)与中断源请求信号的有效形式(边沿或电平触发)。
命令字格式
ICW1
图2-2ICW1命令字
如图所示,利用A0=0,D4=1寻址。
注意:
D7、D6、D5、D2在8086/8088系统中不用,可为1,也可为0。
它们在8080/8085系统中使用。
(2)ICW2(中断类型码字)
ICW2是设置中断类型码的初始化命令字。
编程时用ICW2设置中断类型码高5位T7~T3,低3位自动插入IR的编码。
ICW2
图2-3ICW2命令字
例如:
写入ICW2的内容为40H,则IR0~IR7对应的8个中断类型号依此为:
40H、41H、….47H,8个中断类型号一定是连号!
ICW2决定了某位中断请求输入线所对应的向量类型码,可以使CPU自动得到相应的中断请求的中断类型号。
(3)ICW3(级连控制字)
ICW3是标志主片/从片的初始化命令字。
(4)ICW4(中断结束方式字)
ICW4为方式控制初始化命令字。
2.3.38259的技术参数
8259A的引线及内部结构
1、 引脚信号
8259A引脚信号如下图所示:
图2-48259A芯片引脚图
D7~D0:
双向、三态数据线,与系统数据总线相连。
对8259A编程时,命令字由此写
入;在第二个中断响应总线周期中,中断类型码由此传给CPU。
RD :
读信号,输入,与系统控制总线IOR 相连。
RD =0时,CPU对8259A进行读操作。
WR :
写信号,输入,与系统控制总线IOW 相连。
当WR =0时,CPU对8259A进行写操作。
A0:
片内寄存器寻址信号,输入,用于对片内寄存器端口寻址。
每片8259A有两个寄
存器端口,A0=0时,选中偶地址端口,A0=1时,选中奇地址端口。
在与8088系统相连时,可将该引脚与地址总线的A0连接;与8086系统连接时,可将该引脚与地址总线的A1连接。
CS :
片选信号,输入。
CS =0时,8259A被选中。
在与8088系统相连时,系统地址信号A15~A1经译码器译码后为8259A产生片选信号。
SP /EN :
双功能双向信号。
当8259A工作在缓冲模式时,它作为输出,用于控制缓冲器的传送方向。
当数据从CPU送往8259A时,SP /EN 输出为高电平;当数据从8259A送往CPU时,SP /EN 输出为低电平。
当8259A工作在非缓冲模式时,它作为输入,用于指定8259A是主片还是从片(级联方式)。
SP /EN =1的8259A为主片,SP /EN =0的8259A为从片。
INT:
中断请求信号,输出,与CPU的中断请求信号线INT相连。
在级联方式下,从片的INT与主片的IR7~IR0中的某一根连接在一起。
INTA :
中断响应信号,输入,与CPU的中断响应信号线INTA 相连。
CAS2~CAS0:
级联控制线,主片的CAS2~CAS0与从片的CAS2~CAS0对应相连。
对于主片,CAS2~CAS0为输出信号;对于从片,CAS2~CAS0为输入信号。
当从片发起的中断请求被响应时,主片通过CAS2~CAS0送出相应的编码给从片,告诉从片该中断请求被允许。
IR7~IR0:
中断请求输入信号,由外设输入。
上升沿(边沿触发方式)或高电平(电平触发方式)表示有中断请求到达。
VCC:
+5V电源输入信号。
GND:
电源地
2.4选择芯片8279
2.4.11、可编程并行接口芯片8279
1)8279的作用
在本设计中用8279芯片控制键盘输入和LED显示。
2)8279的功能分析
8279芯片是一种通用的可编程序的键盘/显示接口器件,单个芯片就能完成键盘输入和LED显示控制两种功能。
可与任何8位机接口。
8279A芯片包括键盘输入和显示输出两个部分。
若采用8279作为键盘/显示器接口,则可以实现对键盘、显示器自动扫描,8279主要是管理键盘输入和显示器输出的。
8279可编程键盘显示器接口芯片具有动态显示驱动电路简单、不占用CPU的时间、可自动进行键盘扫描、与计算机接口方便、编程容易、系统灵活等特点.当今已成为设计计算机应用系统,特别是实时性较高的测控系统的首选器件之一。
图2-58279的内部框图
图中,IRQ:
中断请求输出线,DB0~DB7:
双向数据总路线(传送命令、数据、状态),
、
:
读写控制输入端,RESET:
复位输入端,CLK:
时钟输入端,
:
片选,C和/D(A0):
片内寄存器选址,OUTA0~A3、OUTB0~B3:
8位显示输出端,
:
熄灭显示输出端,SL0~SL3:
公用扫描输出线,RL0~RL7:
键盘回馈输入线,SHIFT:
抵挡键输入线,CNTL/STB:
控制/选通输入线。
另外,8279的键盘接口部分内部有一个8×8位先进先出的堆栈(FIFO),用来存放键盘输入代码,显示器接口部分内部有一个16×8位显示RAM,用来显示段数据,能为16位LED显示器(或其它显示器)提供多路扫描接口。
3)8279的引脚信号和功能
8279可编程键盘显示器接口芯片具有动态显示驱动电路,不占用CPU的时间、可自动进行键盘扫描、与计算机接口方便、编程容易、系统灵活等特点。
8279A是可编程的键盘/显示接口芯片。
它既具有按键处理功能,又具有自动显示功能,在单片机系统中应用很广泛。
8279A内部有键盘FIFO(先进先出堆栈)/传感器,双重功能的8×8=64BRAM,键盘控制部分可控制8×8=64个按键或8×8阵列方式的传感器。
该芯片能自动消抖并具有双键锁定保护功能。
显示RAM容量为16×8,即显示器最大配置可达16位LED数码显示。
4)8279的命令字及其格式
8279三种工作方式:
键盘工作方式、显示工作方式和传感器工作方式。
键盘工作方式:
双键互锁和N键轮回。
双键互锁是指当有两个以上按键同时按下时,只能识别最后一个被释放的按键,并把其键值送入内部FIFORAM中。
N键轮回是指当有多个按键同时按下时,所有按键的键值均可按扫描顺序依次存入FIFORAM中。
显示工作方式:
是指CPU输入至8279内部FIFORAM的数据的输出格式,有8个字符左端入口显示、16个字符左端入口显示、8个字符右端入口显示、16个字符右端入口显示四种方式。
传感器方式:
是指扫描传感器阵列时,一旦发现传感器的状态发生变化就置位INT向CPU申请中断。
选择不同的工作方式均是通过CPU对8279送入命令来进行控制。
8279共有8种命令,命令寄存器为8位,其中D7~D5为命令特征位,D4~D0为命令的控制位。
CPU对8279写入的命令数据为命令字,读出的数据为状态字。
8279共有八条命令,其功能及命令字格式分述如下。
(1)键盘/显示方式设置命令字
命令格式:
D7D6D5D4D3D2D1D0
0
0
0
D
D
K
K
K
其中:
D7、D6、D5=000为方式设置命令特征位。
DD(D4、D3):
用来设定显示方式,如表1-2所示。
表2-3显示方式选择
D4
D3
显示方式
0
0
8个字符显示,左端入口
0
1
16个字符显示,左端入口
1
0
8个字符显示,右端入口
1
0
16个字符显示,右入口
所谓左入口,即显示位置从最左一位(最高位)开始,以后逐次输入的显示字符逐个向右顺序排列;所谓右入口,则是显示位置从最右一位(最低位)开始,以后逐次输入显示字符时,已有的显示字符依次向左移动。
KKK(D2、D1、D0):
用来设定七种键盘/显示扫描方式,如表2-4所示。
表2-4键盘/显示扫描方式
D2
D1
D0
键盘/显示扫描方式
0
0
0
编码扫描键盘,双键锁定
0
0
1
译码扫描键盘,双键锁定
0
1
0
编码扫描键盘,N键轮回
0
1
1
译码扫描键盘,N键轮回
1
0
0
编码扫描传感器矩阵
1
0
1
译码扫描传感器矩阵
1
1
0
选通输入,编码显示扫描
1
1
1
选通输入,译码显示扫描
(2)时钟编程命令
命令格式:
D7D6D5D4D3D2D1D0
0
0
1
P
P
P
P
P
其中:
D7、D6、D5=001为时钟命令特征位。
PPPPP(D4、D3、D2、D1、D0)用来设定外部输入CLK时钟脉冲的分频系数N。
N取值范围为2~31。
如CLK输入时钟频率为2MHZ,PPPPP应被置为10100(N=20),才可获得8279内部要求的100KHZ的时钟频率。
(3)读FIFO/传感器RAM命令
命令格式:
D7D6D5D4D3D2D1D0
0
1
0
AI
X
A
A
A
其中:
D7、D6、D5=010为读FIFO/传感器RAM命令特征位。
该命令字只在传感器方式时使用。
在CPU读传感器RAM之前,必须用这条命令来设定所读传感器RAM中的地址。
AAA(D2、D1、D0)为传感器RAM中的八个字节地址。
AI(D4)为自动增量特征位。
当AI=1时,每次读出传感器RAM后地址自动加1使地址指向下一个存储单元。
这样,下一个数据便从下一个地址读出,而不必重新设置读FIFO/传感器RAM命令。
在键盘工作方式中,由于读出操作严格按照先入先出顺序,因此,不需使用这条命令。
(4)读显示RAM命令
命令格式:
D7D6D5D4D3D2D1D0
0
1
1
AI
A
A
A
A
其中:
D7、D6、D5=011为读显示RAM命令字的特征位。
该命令字用来设定将要读出的显示RAM地址。
AAAA(D3、D2、D1、D0)用来寻址显示RAM中的存储单元。
由于位显示RAM中有16个字节单元,故需要4位寻址。
AI(D4)为自动增量特征位。
AI=1时,每次读出后地址自动加1,指向下一地址。
(5)写显示RAM命令
命令格式:
D7D6D5D4D3D2D1D0
1
0
0
AI
A
A
A
A
其中:
D7、D6、D5=100为写显示RAM命令字的特征位。
在写显示RAM之前用这个命令字来设定将要写入的显示RAM地址。
AAAA(D3、D2、D1、D0)为将要写入的显示RAM中的存储单元地址。
AI(D4)为自动增量特征位。
AI=1时,每次写入后地址自动加1,指向下一次写入地址。
(6)显示禁止写入/消隐命令
命令格式:
D7D6D5D4D3D2D1D0
1
0
1
X
IW/A
IW/B
BL/A
BL/B
其中:
D7、D6、D5=101为显示禁止写入/消隐命令特征位。
IW/A、IW/B(D3、D2)为A、B组显示RAM写入屏蔽位。
当A组的屏蔽位D3=1时,A组的显示RAM禁止写入。
因此,从CPU写入显示器RAM数据时,不会影响A的显示。
这种情况通常在采用双4位显示器时使用。
因为两个四位显示器是相互独立的。
为了给其中一个四位显示器输入数据而又不影响另一个四位显示器,因此必须对另一组的输入实行屏蔽。
BL/A、BL/B(D1、D0)为消隐设置位。
用于对两组显示输出消隐。
若BL=1,对应组的显示输出被消隐。
当BL=0,则恢复显示。
(7)清除命令
命令格式:
D7D6D5D4D3D2D1D0
1
1
0
CD
CD
CD
CF
CA
其中:
D7、D6、D5=110为清除命令特征位。
表2-5显示RAM清除方式
D4
D3
D2
清除方式
1
0
×
将全部显示RAM清为00H
1
1
0
将全部显示RAM置为20H,A组输出0010,B组输出0000
1
1
1
将全部显示RAM置为FFH
0
×
×
D0=0不清除,D0=1按上述方法清除
CF(D1)用来置空FIFO存储器,当CF=1时,执行清除命令后,FIFORAM被置空,使INT输出线复位。
同时,传感器RAM的读出地址也被置为0。
CA(D0)为总清的特征位。
它兼有CD和CF的联合效能。
在CF=1时,对显示的清除方式由D3、D2的编码决定。
显示RAM清除时间约需160us。
在此期间状态字的最高位D7=1,表示显示无效。
CPU不能向显示RAM写入数据。
(8)结束中断/错误方式设置命令
命令格式:
D7D6D5D4D3D2D1D0
1
1
1
E
X
X
X
X