今天捣鼓了捣鼓EBS003板子上的滑条,顺便把按键也加上了。
原理图:
代码:主程序:
#include "SC_Init.h" //MCU Init header,Include all IC resource headers
#include "SC_it.h"
#include "..\Drivers\SCDriver_list.h"
#include "HeadFiles\SysFunVarDefine.h"
/**************************************Generated by EasyCodeCube*************************************/
/*************************************.Generated by EasyCodeCube.************************************/
/*****************************************************************************************************
* Function Name: main
* Description : This function implements main function.
* Arguments : None
* Return Value : None
******************************************************************************************************/
void main(void)
{
/*** MCU init***/
SC_Init();
/*<Generated by EasyCodeCube begin>*/
/*<UserCodeStart>*//*<SinOne-Tag><9>*/
TouchKeyInit();
/*<UserCodeEnd>*//*<SinOne-Tag><9>*/
/*<UserCodeStart>*//*<SinOne-Tag><10>*/
while(1)
{
/*<UserCodeStart>*//*<SinOne-Tag><51>*/
if(SOCAPI_TouchKeyStatus & 0x40)
{
/*<UserCodeStart>*//*<SinOne-Tag><55>*/
SOCAPI_TouchKeyStatus &= 0xbf;
/*<UserCodeEnd>*//*<SinOne-Tag><55>*/
/*<UserCodeStart>*//*<SinOne-Tag><56>*/
TouchKeyRestart();
/*<UserCodeEnd>*//*<SinOne-Tag><56>*/
}
/*<UserCodeEnd>*//*<SinOne-Tag><51>*/
/*<UserCodeStart>*//*<SinOne-Tag><14>*/
if(SOCAPI_TouchKeyStatus & 0x80)
{
/*<UserCodeStart>*//*<SinOne-Tag><22>*/
SOCAPI_TouchKeyStatus &= 0x7f;
/*<UserCodeEnd>*//*<SinOne-Tag><22>*/
/*<UserCodeStart>*//*<SinOne-Tag><18>*/
exKeyValueFlag = TouchKeyScan();
/*<UserCodeEnd>*//*<SinOne-Tag><18>*/
/*<UserCodeStart>*//*<SinOne-Tag><79>*/
Slider_value = TKSlideModulePCBArray[0].OutValue;
Module1_value = TKSlideModulePCBArray[1].OutValue;
/*<UserCodeEnd>*//*<SinOne-Tag><79>*/
/*<UserCodeStart>*//*<SinOne-Tag><35>*/
UserCode();
/*<UserCodeEnd>*//*<SinOne-Tag><35>*/
/*<UserCodeStart>*//*<SinOne-Tag><36>*/
TouchKeyRestart();
/*<UserCodeEnd>*//*<SinOne-Tag><36>*/
}
/*<UserCodeEnd>*//*<SinOne-Tag><14>*/
}
/*<UserCodeEnd>*//*<SinOne-Tag><10>*/
/*<Generated by EasyCodeCube end>*/
}
初始化代码:
void SC_Init(void)
{
SC_GPIO_Init();
SC_OPTION_Init();
/*write initial function here*/
EA = 1;
}
void SC_GPIO_Init(void)
{
GPIO_Init(GPIO4, GPIO_PIN_2,GPIO_MODE_OUT_PP);
GPIO_Init(GPIO4, GPIO_PIN_1,GPIO_MODE_OUT_PP);
GPIO_Init(GPIO4, GPIO_PIN_0,GPIO_MODE_OUT_PP);
GPIO_Init(GPIO1, GPIO_PIN_4,GPIO_MODE_OUT_PP);
GPIO_Init(GPIO1, GPIO_PIN_5,GPIO_MODE_OUT_PP);
GPIO_Init(GPIO1, GPIO_PIN_6,GPIO_MODE_OUT_PP);
GPIO_Init(GPIO1, GPIO_PIN_7,GPIO_MODE_OUT_PP);
GPIO_Init(GPIO3, GPIO_PIN_5, GPIO_MODE_OUT_PP);
GPIO_Init(GPIO3, GPIO_PIN_4, GPIO_MODE_OUT_PP);
GPIO_Init(GPIO0, GPIO_PIN_6, GPIO_MODE_OUT_PP);
GPIO_Init(GPIO2, GPIO_PIN_2, GPIO_MODE_OUT_PP);
GPIO_Init(GPIO0, GPIO_PIN_2, GPIO_MODE_OUT_PP);
GPIO_Init(GPIO3, GPIO_PIN_7, GPIO_MODE_OUT_PP);
/*GPIO_Init write here*/
}
按键处理代码:
void UserCode()
{
/*<UserCodeStart>*//*<SinOne-Tag><23>*/
if(Slider_value>0&&Slider_value<25) //挡位值0-7,L1灯亮
{
P14=1;
P15=P16=P17=0;
}
if(Slider_value>=25&&Slider_value<50) //挡位值8-14,L1、l2灯亮
{
P14=P15=1;
P16=P17=0;
}
if(Slider_value>=50&&Slider_value<75) //挡位值15-22,L1、l2、l3灯亮
{
P14=P15=P16=1;
P17=0;
}
if(Slider_value>=75&&Slider_value<=100) //挡位值23-30,L1、l2、l3、l4灯亮
{
P14=P15=P16=P17=1;
}
if(Slider_value==0) //没有滑条值,灯全灭
{
P14=P15=P16=P17=0;
}
///////////////////////////////////////////////
if((exKeyValueFlag&0x00000004)==0x00000004)
{
P42=1;
P41=P40=0;
}
if((exKeyValueFlag&0x00000008)==0x00000008)
{
P41=1;
P42=P40=0;
}
if((exKeyValueFlag&0x0000000C)==0x00000000)
{
P41=0;
P42=P40=0;
}
/*<UserCodeEnd>*//*<SinOne-Tag><23>*/
}
效果图:
|