今天捣鼓了捣鼓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>*/
- }
效果图:
|