一种矩阵键盘的MCU实现

时间:2022-08-26 05:40:14

【摘 要】使用430单片机设计一种矩阵键盘。该键盘配有特殊功能按键指示灯,能够与上位机进行422通信。通过422将按键对应键值上传给上位机,接收上位机点灯命令点亮或熄灭一个或若干个指示灯。

【关键词】430单片机;矩阵键盘;422通信;动态扫描

【Abstract】Use 430 MCU to design a matrix keyboard. The keyboard is equipped with special function key indicator lights and is able to communicate with upper computer by 422. Transmit key codes to the upper computer and receive orders from the upper computer to light on or turn off one or several indicator lights by 422.

【Key words】430 MCU; Matrix keyboard; 422 communication; Dynamic scanning

1 矩阵键盘

矩阵键盘是目前使用较为广泛的一种键盘。当键盘中按键数量较多时,为减少I/O口的使用,而通常将按键排列成矩阵形式,这种形式的键盘称为矩阵键盘。本文设计键盘按键为47个,数量较大,因此将按键设计为矩阵形式。

2 电路设计

电路设计主要介绍控制芯片的选型和指示灯控制电路的设计。

2.1 控制芯片选型

根据键盘需要实现的功能,可知其需要较快的数据处理速度,需要较多的外设和I/O口。此外键盘的功耗要求尽量小。为满足以上要求,兼顾功能实现和低功耗,本文选择430单片机MSP430FG4616作为控制芯片。该型MCU具有电压低,功耗小,片内外设和IO资源丰富等优点,完全满足设计要求。

2.2 按键指示灯控制电路

键盘上特殊功能按键设置指示灯,其中包括16对红绿双色状态指示灯,6个绿色特殊按键指示灯,共38个指示灯。由于指示灯个数较多,为节省I/O本文利用同时点亮多个数码管的方法即动态扫描法点亮指示灯。38个指示灯共分为5组对应5个数码管,每组指示灯共用一个正电源输入端(字选端),5组中相同位段接到单片机同一个作为指示灯负极的I/O(位选端),本文使用P9作为按键指示灯的负极。指示灯电路如图3所示,图中a~h端分别接至单片机P9.0~P9.7,并且设置P9.0~9.7为输出高电平,使所有指示灯初状态处于熄灭状态。使用单片机I/O控制MOS管的通断实现“字选”,由单片机控制相应I/O输出高低电平实现“位选”。指示灯控制电路如图1所示。

图1 按键指示灯及控制电路

3 软件设计

键盘软件实现的主要功能有按键采集、LED灯驱动、422通讯等。软件设计主要介绍按键指示灯的控制。按键的检测和识别通过扫描法实现,具体实现过程不做详细介绍。

3.1 程序流程图

主函数主要完成按键和数据的处理,定时器1主要完成按键的防抖LED灯的点亮。控制程序流程如图2所示。

3.2 指示灯控制

键盘按键指示灯的点亮和熄灭由单片机I/O控制。上位机发送相应的控制指令至单片机,单片机根据命令点亮或熄灭一个或若干个相应指示灯。

由于键盘按键指示灯的数量较多,使用静态控制方式控制指示灯虽然软件编程较为简单,但占用I/O口过多。为减少I/O的使用数量,可利用人眼“视觉暂留”特性将需要工作的5组指示灯轮流点亮,由于依次点亮的速度很快,人眼无法察觉,每组指示灯点亮时间大于1ms,看起来每一组中被点亮的灯一直处于亮的状态。程序每次进入定时器中断1,就按顺序依次点亮5组灯中的一组。

(a)主函数(b)定时器1中断

图2 控制程序流程图

定时器1的定时周期设为2ms。定时器1中断函数实现按键防抖,扫描点灯,扫描周期10ms,每一组灯点亮时间2ms。

定时器中断1函数点灯部分

#pragma vector=TIMERB0_VECTOR

__interrupt void Timer_B (void)

{

//点灯扫描

if(Flag_LED_disp==1)

{

P10OUT = 0xff;

shuma_sel(shuma_count);//选通一组指示灯

P10OUT=LED_P10_dat[shuma_count]; //按顺序点亮

if(shuma_count

shuma_count++;

else

shuma_count = 0;

}

LED_P10_dat数组根据上位机点灯控制命令控制五组指示灯相应的负极(位选端)导通或断开。函数shuma_sel控制五组指示灯的字选端,用于指示灯的组选通。两函数配合控制五组指示灯的亮灭。

4 结论

本文介绍了一种具有特定功能的矩阵式键盘的设计和实现,并主要给出了按键指示灯的控制方法。键盘所有主要功能均已实现,可应用于工程实际。

【参考文献】

[1]沈建华,杨艳琴.MSP430系列16位超低功耗单片机原理与实践[M].北京航空航天大学出版社,2008.

[2]姚德法.单片机应用中的键盘模块设计[J].信息技术与信息化,2005.

[3]杨杜鼎.单片机矩阵键盘接口设计[J].科技创新,2012.

上一篇:应用技术大学市场营销专业课程实践体系改革 下一篇:基于校企合作的城市地下空间系毕业实习改革