论文部分内容阅读
在对8279键盘/显示接口分析的基础上,设计实现8位LED七段数码管显示驱动和16键盘输入电路。利用可编程8279可实现对键盘/显示的自动扫描,以减轻CUP负担。其工作稳定,不会出现误操作,且程序实现简单。
键盘;显示;扫描;接口;驱动
[中图分类号]TP33[文献标识码]A [文章编号]1009-9646(2011)06-0022-02
一、引言
在单片机的实验以及实际开发项目中,LED数码管显示及键盘输入是非常常见的应用。该系统的设计也是开发人员经常遇到的问题。LED数码管显示系统主要有两种常用系统:CPU扫描方式显示系统和用可编程显示接口芯片组成的显示系统。前者接口电路简单,成本低,但程序设计麻烦且占用CPU资源高。本文介绍的是基于后者的系统。
二、8279键盘/显示接口分析
8279是为8位微处理机设计的通用可编程键盘和显示I/O接口芯片。它的特点是硬件扫描键盘和显示器,能同时执行键盘与显示器操作。接收键盘输入数据和控制显示器显示CPU给定的数据是8279的两个基本功能,它的工作方式由CPU通过编程设定,8279的逻辑符号和引脚如图1所示。其主要引脚功能分析如下。
1.数据线
DB0~DB7:双向三态数据总线,在接口电路中与系统数据总线相连,用于传送CPU和8279之间的数据和命令。
2.地址线
/CS=0选中8279,读写有效,当A0=1时,为命令字及状态字地址;当A0=0时,为数据地地址,故8279芯片占用2个端口地址。
3.控制线
CLK:外部时钟信号输入线。8279通过内部定时器将该信号分频为内部时钟(100KHz)。
IRQ:中断请求输出线,高电平有效。
/WR:写输入控制线,低电平有效。
/RD:读输入控制线,低电平有效。
SL0~SL3:扫描输出线,用来作为扫描键盘和显示的代码输出或直接输出线。
RL0~RL7:回复输入线,用来作为键盘或传感器矩阵的信号输入线。
OUTA0~OUTA3:通常作为显示信号的高4位输出线。
OUTB0~OUTB3:通常作为显示信号的低4位输出线。
/BD:显示熄灭输出线,低电平有效。当/BD=0时将显示全熄灭。
三、键盘/显示驱动电路设计
图2所示是基于8031单片机应用系统的键盘/显示驱动电路。8279的DB0~DB7接8031P0口,与CUP完成数据和命令的传输。A0与/CS分别接8031P2.0和P2.6,进行地址控制。CLK端接ALE,通过分频得到内部时钟。IRQ经反相后接8031外部中断1输入端/INT1,用于键盘中断。
OUTA、OUTB口显示数据输出线分别与2个7406驱动器输入端相连,经反相后作为LED段选信号驱动LED数码管。
SL0~SL2扫描输出线接在3~8线译码器74LS138的输入端,8位输出中2位用于键盘扫描输出线,同时8位输出经75451驱动后,作为8路七段LED数码管位选驱动信号。
来自RL0~RL7的8路回复信号,由回复缓冲器缓冲并锁存。在键盘工作方式中,回复线作为键盘扫描输入线。在逐行列扫描时,回复线用来搜索每一行列中闭合的按键。当某一按键闭合时,去抖电路被置位,延时等待约10ms后,再检测按键是否继续闭合,并将该键的地址、控制状态一起形成键盘数据送入8279内部FIFO存储器,同时IRQ发出中断请求。对于键值的读取可采中断方式,也可采用查询方式。
四、程序设计
在实际应用中,有关8279工作的软件一般应包括三个程序,即初始化子程序、中断服务子程序和显示子程序。其中初始化子程序用于设定8279的工作方式,中断服务子程序完成按键的识别与处理,显示子程序将显示缓冲区的数据送数码显示器显示输出。现设LED数码管为8位,左端输入;键盘为16键,编码扫描,双键互锁模式;8031工作频率为12MHz。下面给出相应的C语言编写的程序。
#include
#include
#define C8279XBYTE[0x4100]
#define D8279XBYTE[0x4000]
uchar code table[]={0xc0, 0xf9,0xa4, 0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88, 0x83,0xc6,0xa1, 0xc6, 0x8e};
unsigned char keyval;
void init8279(void)
{
C8279=0x34;C8279=0x01; C8279 = 0xdc;
}
void view8279(void)
{
C8279=0x90; D8279=table[keyval];
}
void getkey(void) interrupt 2
{
C8279=0x40; keyval=D8279; view8279();
}
void main(void)
{
init8279();
EA=1; EX1=1; IT1=1;
while(1);
}
[1]何立民.MCS-51系列单片机应用系统设计[M].北京航天工业大学出版社,1990.
[2]李华.MCS-51系列单片机实用接口技术[M].北京航天工业大学出版社,1993.
[3]郭天祥.新概念51单片机C语言教程[M].电子工业出版社,2009.
键盘;显示;扫描;接口;驱动
[中图分类号]TP33[文献标识码]A [文章编号]1009-9646(2011)06-0022-02
一、引言
在单片机的实验以及实际开发项目中,LED数码管显示及键盘输入是非常常见的应用。该系统的设计也是开发人员经常遇到的问题。LED数码管显示系统主要有两种常用系统:CPU扫描方式显示系统和用可编程显示接口芯片组成的显示系统。前者接口电路简单,成本低,但程序设计麻烦且占用CPU资源高。本文介绍的是基于后者的系统。
二、8279键盘/显示接口分析
8279是为8位微处理机设计的通用可编程键盘和显示I/O接口芯片。它的特点是硬件扫描键盘和显示器,能同时执行键盘与显示器操作。接收键盘输入数据和控制显示器显示CPU给定的数据是8279的两个基本功能,它的工作方式由CPU通过编程设定,8279的逻辑符号和引脚如图1所示。其主要引脚功能分析如下。
1.数据线
DB0~DB7:双向三态数据总线,在接口电路中与系统数据总线相连,用于传送CPU和8279之间的数据和命令。
2.地址线
/CS=0选中8279,读写有效,当A0=1时,为命令字及状态字地址;当A0=0时,为数据地地址,故8279芯片占用2个端口地址。
3.控制线
CLK:外部时钟信号输入线。8279通过内部定时器将该信号分频为内部时钟(100KHz)。
IRQ:中断请求输出线,高电平有效。
/WR:写输入控制线,低电平有效。
/RD:读输入控制线,低电平有效。
SL0~SL3:扫描输出线,用来作为扫描键盘和显示的代码输出或直接输出线。
RL0~RL7:回复输入线,用来作为键盘或传感器矩阵的信号输入线。
OUTA0~OUTA3:通常作为显示信号的高4位输出线。
OUTB0~OUTB3:通常作为显示信号的低4位输出线。
/BD:显示熄灭输出线,低电平有效。当/BD=0时将显示全熄灭。
三、键盘/显示驱动电路设计
图2所示是基于8031单片机应用系统的键盘/显示驱动电路。8279的DB0~DB7接8031P0口,与CUP完成数据和命令的传输。A0与/CS分别接8031P2.0和P2.6,进行地址控制。CLK端接ALE,通过分频得到内部时钟。IRQ经反相后接8031外部中断1输入端/INT1,用于键盘中断。
OUTA、OUTB口显示数据输出线分别与2个7406驱动器输入端相连,经反相后作为LED段选信号驱动LED数码管。
SL0~SL2扫描输出线接在3~8线译码器74LS138的输入端,8位输出中2位用于键盘扫描输出线,同时8位输出经75451驱动后,作为8路七段LED数码管位选驱动信号。
来自RL0~RL7的8路回复信号,由回复缓冲器缓冲并锁存。在键盘工作方式中,回复线作为键盘扫描输入线。在逐行列扫描时,回复线用来搜索每一行列中闭合的按键。当某一按键闭合时,去抖电路被置位,延时等待约10ms后,再检测按键是否继续闭合,并将该键的地址、控制状态一起形成键盘数据送入8279内部FIFO存储器,同时IRQ发出中断请求。对于键值的读取可采中断方式,也可采用查询方式。
四、程序设计
在实际应用中,有关8279工作的软件一般应包括三个程序,即初始化子程序、中断服务子程序和显示子程序。其中初始化子程序用于设定8279的工作方式,中断服务子程序完成按键的识别与处理,显示子程序将显示缓冲区的数据送数码显示器显示输出。现设LED数码管为8位,左端输入;键盘为16键,编码扫描,双键互锁模式;8031工作频率为12MHz。下面给出相应的C语言编写的程序。
#include
#include
#define C8279XBYTE[0x4100]
#define D8279XBYTE[0x4000]
uchar code table[]={0xc0, 0xf9,0xa4, 0xb0,0x99,0x92,0x82,0xf8,
0x80,0x90,0x88, 0x83,0xc6,0xa1, 0xc6, 0x8e};
unsigned char keyval;
void init8279(void)
{
C8279=0x34;C8279=0x01; C8279 = 0xdc;
}
void view8279(void)
{
C8279=0x90; D8279=table[keyval];
}
void getkey(void) interrupt 2
{
C8279=0x40; keyval=D8279; view8279();
}
void main(void)
{
init8279();
EA=1; EX1=1; IT1=1;
while(1);
}
[1]何立民.MCS-51系列单片机应用系统设计[M].北京航天工业大学出版社,1990.
[2]李华.MCS-51系列单片机实用接口技术[M].北京航天工业大学出版社,1993.
[3]郭天祥.新概念51单片机C语言教程[M].电子工业出版社,2009.