当前位置:文档之家› 嵌入式数控系统中键盘接口模块的设计

嵌入式数控系统中键盘接口模块的设计

科技信息 SCIENCE & TECHNOLOGY INFORMATION2008 年 第 10 期
按键控制是嵌入式数控系统中人机交互的一部分, 在选择工作方
式、编制加工程序、设置加工参数和控制加工时, 需要通过键盘输入各
种信息。在按键数量较多的场合下, 采用由行线和列线组成的矩阵式
键盘进行设计。按键设置在行线和列线的交叉点上, 可以大大减少 I/O
口的使用数量。
本文采用北京炜煌公司的 WH8280 键盘控制芯片
[1]
实现矩阵式键
盘设计。采用专用的键盘控制芯片可以采用中断的方式实现对键码的
读取, 免去对键盘的循环扫描, 节约了 CPU 的运算资源; 同时芯片内
部含去抖动电路, 在很大程度上降低了系统硬件和软件设计的复杂
度。
1.硬件设计
WH8280 是炜煌科技发展有限公司自行设计的、具有 SPI 串行接
口功能的、可同时驱动 8 位共阴式数码管的智能显示驱动芯片, 该芯
片同时还可连接多达 64 键的键盘矩阵, 单片即可完成 LED 显示﹑键
盘接口的全部功能。
WH8280 采用 SPI 接口方式与微处理器通讯, 串行数据从 DATA
引脚送入芯片, 并由 CLK 端同步。当片选信号变为低电平后, DATA 引
脚上的数据在 CLK 引脚的上升沿被写入 WH8280 的缓冲寄存器。微
处理器通过通用的 I/O 端口(GPIO) 与键盘芯片连接, 中断信号连接到
微处理器的外部中断 EXINT, 在中断程序中通过串口向键盘控制芯片
发送读键盘指令并从中读取键值, 从而提高了 CPU 的工作效率和系
统的实时性。键盘电路图如图 1 所示。
图 1 键盘电路图
SPI 接口协议需要四个 I/O脚, 即串行时钟、主机输入/从机输出数
据线、主机输出/从机输入线和从机选择线
[2]
。本数控系统中 GPIO 分配
如下: SPI_OUT、SPI_CS、SPI_CLK、SPI_OUT_EN 为数字输出口, SPI_IN
为数字输入口。和键盘芯片相连的数据信号 SPI_DATA 为双向口, 当
SPI_OUT_EN 为低电平时, SPI 处于输出状态, SPI_DATA=SPI_OUT, 这
时微处理器不读取 SPI_IN 信号; 当 SPI_OUT_EN 为高电平时, SPI 处
于输入状态, SPI_IN=SPI_DATA, 并且与 SPI_OUT 隔开, 微处理器得到
需要的数据信号 SPI_DATA 的电平。
2.软件设计
为了能利用 GPIO 口编程实现 SPI 接口协议, 需要实现相应的 I/O
口读写驱动函数, 软件模拟串行时钟, 从而控制键盘芯片控制指令的
输出以及同步数据的输入和输出。可以通过以下两个函数来实现
GPIO 的编程:
void GPIOSetBit(int pio_bit_index,int value)
GPIO 输出函数。Val 值为 0, 表示输出低电平, 非零表示输出高电
平。
char GPIORead(int pio_bit_index)
GPIO 读函数。返回值若为 0 表示输入为低电平; 若为 1 表示输入
高电平。
WH8280 读取键盘数据的指令宽度为 16 位, 前 8 位为微处理器
发送到 WH8280 的指令, 后 8

位为 WH8280 返回的键盘代码。在指令
的前半段, DATA 引脚处于高阻输入状态, 接收来自微处理器的指令;
在指令的后半段, DATA 引脚在第 9 个 DCLK 脉冲的上升沿从输入状
态变为输出状态, 输出键盘代码的值, 并在第 16 个脉冲的下降沿恢复
为输入状态, 等待接收下一个指令。
数控系统在中断方式下从键盘芯片按键缓存器中获取键盘值时,
需要两个步骤: 先发送读键盘指令 15H, 然后读取按键值。相应的程序
代码如下:
spi_send_byte(0x15);
key_code=spi_rd_key();
其中, 向键盘控制芯片发送指令的驱动程序如下:
void spi_send_byte(unsigned char out_byte)
{
int i;
GPIOSetBit(SPI_CS,0); //选中键盘芯片
spi_long_delay();
for(i = 0; i < 8; i++)
{
if(out_byte & 0x80)//输出高电平
GPIOSetBit(SPI_OUT,1);
else //输出低电平
GPIOSetBit(SPI_OUT,0);
GPIOSetBit(SPI_CLK,1); //形成串行时钟
spi_short_delay();
GPIOSetBit(SPI_CLK,0);
spi_short_delay();
out_byte <<= 1; //准备输出下一位
}
}
从键盘芯片读取键盘芯片的驱动如下:
unsigned char spi_rd_key(void)
{
int i;
unsigned char spi_key_val;
spi_key_val = 0;
GPIOSetBit(SPI_CS,0); //选中键盘芯片
GPIOSetBit(SPI_OUT_EN,1); //输入准备
spi_long_delay();
for(i = 0; i < 8; i++) (下转第 27 页)
嵌入式数控系统中键盘接口模块的设计
李 芳
(南京航空航天大学金城学院 江苏 南京 210016)
【摘 要】本文采用 WH8280 键盘控制芯片在嵌入式数控系统中实现了键盘接口模块的设计。从硬件设计和软件设计两方面详细地讨论
了中断方式下按键状态的采集, 采用通用的输入/ 输出端口模拟 WH8280 通讯所需要的 SPI 协议。以 WH8280 为核心的键盘接口模块设计方
便, 可靠性高, 可以应用于其它嵌入式系统中。
【关键词】键盘接口模块; 数控系统; SPI; 驱动函数
○IT技术论坛○
50科技信息 SCIENCE & TECHNOLOGY INFORMATION2008 年 第 10 期


对于已训练好的 RBF 网络, 采用 sim 函数对 2005 年采暖季的
PM
10
质量浓度进行预测, 并以 2005 年采暖季 PM
10
实际监测浓度作为
检验样本, 检验 RBF 神经网络模型的预测效果。
为了评价预测效果, 采用如下指标进行分析:
(1) 平均准确率 ACC=
1
N
N
i = 1
"(1-
y
i
- t
i
t
i
)
(2) 平均绝对误差 MAE=
1
N
N
i = 1
" y
i
- t
i
(3) 相关系数
当网络训练结束后, 用 MATLAB 工具箱中的 postreg 函数
[3]
实现
网络输出响应与目标值之间的线性回归, 并计算其相关系数。
其中 y
i
表示预测值, t
i
表示监测值, N 为样本数。
模型的预测结果如图 3, 从图 3 可以看出 PM
10
质量浓度的预测值
与监测值的拟合效果较好。计算得平均准确率为 80.51%, 预测值与监
测值之间的平均绝对误差为 0.029mg/m
3
, 通过预测值与监测值之

间的
回归分析, 其相关系数为 0.834。
图 3 PM
10
质量浓度监测值与预测值对比
3.结论
(1) 本文通过主成分分析对预选因子进行分析, 起到了降维的作
用, 从而简化了 RBF 神经网络的结构。作主成分分析时, 用 MATLAB
工具箱中的 prestd 函数和 prepca 函数处理数据简单, 方便。
(2) 本文直接利用 MATLAB 神经网络工具箱函数 newrb 建立了
RBF 神经网络 PM
10
质量浓度预测模型, 其训练速度快, 建模方便, 模
型预测准确率较高, 平均准确率为 80.51%, 预测值与监测值之间的平
均绝对误差为 0.029mg/m
3

(3) 用主成分分析做数据的预处理只能减少 RBF 网的输入节点
数, 不能减少 RBF 网的隐节点数, 如何减少 RBF 网的隐节点数, 还需
作进一步的研究。
【参考文献】
[1] 伍长荣, 叶明全, 胡学钢.基于 PCA 的 RBF 神经网络预测方法研究[J].安徽
工程科技学院学报, 2007, 22(1) : 59- 62.
[2] 黄海洪, 孙崇智, 金龙.基于主分量的神经网络水位预报模型应用研究[J].南
京气象学院学报, 2005, 28(1) : 58- 63.
[3] 周开利, 康耀红.神经网络模型及其 MATLAB 仿真程序设计[M].北京: 电子
工业出版社, 2005.
[4] 思科技产品研发中心.MATLAB6.5 神经网络分析与设计[M].北京: 电子工业
出版社, 2003.
作者简介: 张承中(1947—) , 男, 浙江宁波人, 教授, 博士生导师, 从事环境
工程与科学的教学与研究工作。
※基金项目: 陕西省自然科学基金资助项目(2002E
2
- 12)。
[ 责任编辑: 韩铭]


( 上接第 70 页)3.检测抓斗的相对坐标, 并计算出抓斗与舱口的
水平间距;
针对码头现场的工作环境, 检测装置选择了 SICK 公司的微波雷
达物位仪, 能对物料提供精确的物位测量, 受温、湿度的影响较小, 对
视觉噪声的抗干扰性较好, 在软件处理上采用目标消影和辨识技术,
将扫描数据中的噪声和遮挡物进行消除, 重构出整个料堆的轮廓, 对
被遮挡部分的曲面采用合适的联想算法, 以此来进行曲面的重构估
算, 保持了模型的正确性。
【参考文献】
[1] 陆林根.江苏南通港口集团, 港口散货装卸运输自动控制系统.
[2] 陈家源.港口企业管理[M].大连海事大学出版社, 1999 年 9 月.
[3] 刘雄.基于 WinCC 的港口集散管理系统,2005.5.
作者简介: 尚领军(1976—) , 男, 山东青岛人。1999 年毕业于西安交通大学
电气工程学院。曾任青岛益和电气集团任技术科电气副科长, 现就读于新疆大
学机械工程学院 05 级硕士研究生。研究方向: 全自动卸船机的开发。
樊军, 男, 新疆大学机械工程学院副教授。
王超, 男, 新疆大学机械工程学院 05 级硕士研究生。
[ 责任编辑: 张新雷]
( 上接第 50 页)
{
GPIOSetBit(SPI_CLK,1); //形成串行时钟
spi_short_delay();
spi

_key_val <<= 1;
if(GPIORead (SPI_IN)) //读入高电平
spi_key_val |= 0x01;
GPIOSetBit(SPI_CLK,0);
spi_short_delay();
}
GPIOSetBit(SPI_CS,1); //取消片选
GPIOSetBit(SPI_OUT_EN,0);
return spi_key_val;
}
在数控系统的微处理器中, 定义 FIFO 缓冲器来存放键值, 以备查
询或者获取不同的按键状态。
3.结论
本文讨论了在嵌入式数控系统中采用 WH8280 键盘控制芯片实
现矩阵式键盘的设计。从硬件电路搭建以及底层驱动函数的编写上,
详细地阐述了中断方式下按键状态的采集, 大大简化了数控系统的设
计。
【参考文献】
[1] 北京炜煌科技发展有限公司.WH8280 串行接口 LED 数码管及键盘管理器
件[EB/OL].https://www.doczj.com/doc/9513560333.html,.
[2] 蔡向东.单片机软件模拟 SPI 接口的解决方案[J].信息技术,2006(6):134- 135.
作者简介: 李芳(1979—), 女, 江苏人, 助教, 硕士, 研究方向是机械电子和金
属材料学。
[ 责任编辑: 张艳芳]
○科教前沿○




27

相关主题
文本预览
相关文档 最新文档