矩阵键盘扫描.docx
- 文档编号:3449285
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:9
- 大小:17.11KB
矩阵键盘扫描.docx
《矩阵键盘扫描.docx》由会员分享,可在线阅读,更多相关《矩阵键盘扫描.docx(9页珍藏版)》请在冰豆网上搜索。
矩阵键盘扫描
键盘是单片机常用输入设备,在按键数量较多时,为了节省I/O口等单片机资源,一般采取扫描的方式来识别到底是哪一个键被按下。
即通过确定被按下的键处在哪一行哪一列来确定该键的位置,获取键值以启动相应的功能程序。
/**************************************************
*FileName:
LEDDebug
*Autor:
HR
*Version:
V1.0
*Data:
*Descrption:
none
***************************************************
*
*
*
***************************************************/
#include"include.h"
JOBJob_Data;----------1
SYS_TimeHandlerSYS_Time;---------2
MSGMsg_Key;/*按键任务使用的结构体消息*/---------3
uint16test_a;---------4
uint16TX_Buff_Byte[25];---------4
uint8TX_Buff_ASIC[25];---------4
/************************************************
主程序
************************************************/
intmain()
{
BSP_Init();---------5
SYSTEM_LogShow();---------6
for(;;){
SYS_100US_handler();---------7
SYS_10MS_handler();---------8
SYS_100MS_handler();---------9
SYS_200MS_handler();---------10
}
}
1,JOBJob_Data;
typedefstructWELD/*任务用的焊接数据包(结构体数据类型)*/
{
//临时标记
uint8FgWeldRunEn;//焊接输出标记
uint8FgGasRunEn;//焊接气体输出标记
uint8FgPowerRunEn;//系统工作标记
uint8FgMotorRunEn;//送丝机系统工作标记
uint8FgLcmFlickerEn;//显示闪烁工作标记
uint8FgRoughMachiningEn;//粗调节有效
uint8FgCURRENTIndicateLedEn;//输出正常电流指示LED
uint8FgMotorCheckEn;//送丝机系统检测标记
uint8FgEepromSaveEn;//数据记忆标记
uint8FgLcmHoldEn;//冻结显示内容
uint8FgVRDReset;//VRD复位辅助标记
uint8LockState;//4T焊接辅助指令
uint8Fg_RXFinish;//串口接收数据完成标记
uint8Fg_ShowLog;//开机LOG辅助标记
uint8Fg_UsartConnect;//USART连接标记
uint8FgACVoltageState;//网压状态标记
uint8FgSystemFault;//系统故障标记
uint8FgFactoryTest;//工厂调试标记
uint8FgDisChannel;//公英制切换
uint8RunVolatgeTest;//关机检测状态
//临时数据处理
uint16FaultOrderSet;/*设备故障指令数据缓存*/
uint16SystemOrderSet;/*传递系统指令数据缓存*/
uint16LcmOrderSet;/*传递LCM显示指令数据缓存*/
uint16DriveOrderSet;/*传递驱动组件指令数据缓存*/
uint16WorkOrderSet;/*焊接工作指令数据缓存*/
uint16MainMenu;/*主目录数据缓存*/
uint16CheckOrderSet;
uint16LcmVoltageData;/*焊接显示电压数据缓存*/
uint16LcmCurrentData;/*焊接显示电流数据缓存*/
uint16LcmVoltageDataDis;/*焊接显示电压数据缓存*/
uint16LcmCurrentDataDis;/*焊接显示电流数据缓存*/
uint16LcmMotorData;/*焊接显示电机数据缓存*/
uint16LcmTempData;/*焊接显示温度数据缓存*/
uint16LcmACSupplyState;/*网压显示数据缓存*/
uint16LCMDataBuff_1;/*LCM1显示数据缓存*/
uint16LCMDataBuff_2;/*LCM2显示数据缓存*/
uint16SystemVoltageData;/*焊接实际电压数据缓存*/
uint16SystemCurrentData;/*焊接实际电流数据缓存*/
uint16SystemCurrentBuff;
//设备数据处理(需要记忆)//
uint16WeldWorkSetMode;//焊接类型选择:
MMA,TIG,MIG
uint16WeldRunSetVRD;//VRDset
uint16WeldRunSetMode;//焊接方式选择:
2T,4T
//MMA//
uint16MMASetCurrent;//MMA手工焊电流设置
//TIG//
uint16TIGSetCurrent;//TIG焊接电流
//MIG//
uint16MIGSetVoltage;//MIG焊接电压
uint16MIGSetMotorSpeed;//MIG送丝速度
uint16MIGSetInductance;//MIG电子电抗
uint16MIGSetVoltageFine;//MIG焊接电压微调
uint8MIGSetVoltageCorrect;//系统给定焊接电压修正
uint8MIGDisVoltageCorrect;//系统显示焊接电压修正
uint8MIGSetCurrentCorrect;//系统给定焊接电流修正
uint8MIGDisCurrentCorrect;//系统显示焊接电流修正
//外置MIG//
uint16Ext_MIGSetVoltage;//MIG焊接电压//已更改
uint16Ext_MIGSetMotorSpeed;//MIG送丝速度//已更改
uint16Ext_MIGSetInductance;//MIG电子电抗//已更改
uint16Ext_MIGSetVoltageFine;//MIG焊接电压微调//已更改
uint8Ext_MIGSetVoltageCorrect;//系统给定焊接电压修正//已更改
uint8Ext_MIGDisVoltageCorrect;//系统显示焊接电压修正//已更改
uint8Ext_MIGSetCurrentCorrect;//系统给定焊接电流修正//已更改
uint8Ext_MIGDisCurrentCorrect;//系统显示焊接电流修正//已更改
uint8CheckW_VRD_RunI_2T4T;
int16V_Set_Value_08;
}JOB;
2,SYS_TimeHandlerSYS_Time;
typedefstruct
{
uint16TimHandler_100uS;
uint16TimHandler_10mS;
uint16TimHandler_100mS;
uint16TimHandler_200mS;
}SYS_TimeHandler;
3,MSGMsg_Key;
typedefstructTMSG/*任务用的消息信息数据包(结构体数据类型)*/
{
uint8message;/*传递消息值的任务,用于识别消息的来源*/
uint8WParam;/*消息附加信息1*/
uint8IParam;/*消息附加信息2*/
uint8SParam;/*消息附加信息3*/
uint8TParam;/*消息附加信息4*/
uint8errWParam;/*任务错误消息代码*/
uint8errIParam;/*错误消息附加信息*/
uint16databuff;/*消息附加信息数据*/
uint32dataTime;/*消息的时间戳*/
}MSG;
4,uint16test_a;
4,uint16TX_Buff_Byte[25];
4,uint8TX_Buff_ASIC[25];
externuint16TX_Buff_Byte[];
externuint8TX_Buff_ASIC[];
voidUSART_SendCodeTest(uint16Bata)
{
staticuint8i=0;
TX_Buff_Byte[0]=Job_Data.WeldWorkSetMode;
TX_Buff_Byte[1]=Job_Data.LcmOrderSet;
TX_Buff_Byte[2]=Job_Data.MainMenu;
TX_Buff_Byte[3]=Job_Data.MIGSetInductance;
TX_Buff_Byte[4]=Job_Data.MMASetCurrent;
TX_Buff_Byte[5]=Job_Data.MIGSetVoltage;
TX_Buff_Byte[6]=Job_Data.MIGSetMotorSpeed;
TX_Buff_Byte[7]=Job_Data.TIGSetCurrent;
TX_Buff_Byte[8]=Job_Data.LcmVoltageData;
TX_Buff_Byte[9]=Job_Data.LcmCurrentData;
TX_Buff_Byte[10]=Job_Data.CheckW_VRD_RunI_2T4T;
TX_Buff_Byte[11]=RobotCheckSum(TX_Buff_Byte,10);
RobotUsartByteToHexAsicii(TX_Buff_Byte,11,TX_Buff_ASIC);
if(USART_GetFlagStatus(USART1,USART_FLAG_TC)==1)
{
USART_SendData(USART1,TX_Buff_ASIC[i]);
i++;
if(i>23)i=0;
}
}
5,BSP_Init();
voidBSP_Init(void)
{
RCC_Configuration();
GPIO_Configuration();
USART_Configuration();
NVIC_Configuration();
TIM2_Configuration();
SysTick_Configuration();
}
6,SYSTEM_LogShow();
voidSYSTEM_LogShow(void)
{
Delay_Ms(500);
Job_Data.Fg_ShowLog=ENABLE;
//Job_Data.LcmOrderSet=DIR_AC_SupplyCheck_Msg;
Job_Data.LcmOrderSet=DIR_StarLcmLogo_Msg;
}
7,SYS_100US_handler();
voidSYS_100US_handler(void)
{
staticuint16TimCount=0;
if(SYS_Time.TimHandler_100uS==SET)
{
SYS_Time.TimHandler_100uS=RESET;
TimCount++;
if(TimCount>9)
{
TimCount=0;
KEY_Encoder(GPIO_EncoderKey());
LCM_ScanLED();
LCM_DisMenuCase(Job_Data.LcmOrderSet);
USART_DecodeData();
}
}
}
8,SYS_10MS_handler();
voidSYS_10MS_handler(void)
{
if(SYS_Time.TimHandler_10mS==SET)
{
SYS_Time.TimHandler_10mS=RESET;
if(Job_Data.Fg_ShowLog==DISABLE)
{
COMMOND_OrderChang
(Job_Data.WeldWorkSetMode,Job_Data.MainMenu);
USART_SendCode();
}
}
}
9,SYS_100MS_handler();
voidSYS_100MS_handler(void)
{
if(SYS_Time.TimHandler_100mS==SET)
{
SYS_Time.TimHandler_100mS=RESET
}
}
10,SYS_200MS_handler();
voidSYS_200MS_handler(void)
{
staticuint16Tim;
if(SYS_Time.TimHandler_200mS==SET)
{
SYS_Time.TimHandler_200mS=RESET;
if(Job_Data.Fg_ShowLog==ENABLE)
{
Tim++;
if(Tim>15)
{
Job_Data.Fg_ShowLog=DISABLE;
}
}
Job_Data.LcmVoltageDataDis=Job_Data.LcmVoltageData;
Job_Data.LcmCurrentDataDis=Job_Data.LcmCurrentData;
}
}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 矩阵 键盘 扫描
![提示](https://static.bdocx.com/images/bang_tan.gif)