1.5 矩阵键盘按键识别
在MC9S12XS128单片机的I/O口设计4×4行列式键盘,采用程序扫描识别键号,当有按键按下时,其键号显示在共阴极LED数码管上。其电路如图7所示。在键盘的按键识别中通常采用“行扫描法”(逐行或列)扫描查询法。判断键盘中有无键按下时,将列线PT0~PT3置为输出,将其中一条线置低电平其余3条线输出高电平,然后检测行线的状态。只要有一行的电平为低,则表示键盘中有键被按下,而且闭合的键为被拉低的低电平行线与4根列线中低电平线相交叉的对应按键。若判断所有行线均为高电平,则键盘中无键按下(具体可用查表的方法)。
但是此种方法单片机需要通过不停的扫描查询,方可准确的检测到按键值。考虑到PP口有中断功能所以可将这4个口设置成中断的模式来获得按键值,本设计中是将拉高的4位通过一个与门接到单片机的带中断的引脚上,这样当任意键按下时就会产生低电平发生中断,这时单片机再进行按键判断,从而无需一直查询,减少了MCU的负荷量。
数码管显示电路采用共阴极使用两个锁存器74HC573分别接到PORTA口和PORTB口来实现。也可应用液晶显示接口:1602和12864接口显示。
2 系统软件设计
系统软件采用C语言编写,由于存在键盘阵列、数码管显示和液晶显示,它可以完成较多的常规实验项目。如LED流水灯实验、基于PWM控制的蜂鸣器实验、数码管驱动、键盘驱动、1602液晶驱动、ATD转换等多个实验;还可以进行目前工业控制所常用的通信试验,如串口,IIC,CAN,LIN,485总线实验,基本具备单片机开发工业控制系统的能力。下面以电子钟为例来介绍其软件设计思想。
在电子钟设计中对于时间的产生,选择PIT0,即对周期中断定时器0做初始化,使其每隔1 ms产生1次中断,定义4个变量分别为:毫秒,秒,分,时,然后在中断服务程序中根据这4个变量在实际中的关系更新这4个变量。在主程序中判断键盘按键值和进行时间显示,这里定义3个键值:1,2,3。软件程序流程图如图8所示。
3 结语
本套单片机开发板为即将参加“飞思卡尔”竞赛的学生提供了一个灵活高效的学习平台,同时可为大学本科学生学习嵌入式开发系统以及为汽车电子行业工程师提供良好的开发平台,具有较高的实用性和推广价值。