本帖最后由 wangku001wei 于 2012-9-24 21:37 编辑
依然是简单分析
首先看原理图
使用了CapSense组件
注意 由于我们在General选项卡中选择了 IDAC disable,use external Rb 在具体配置中 出现了 sCmod 和 sRb0 在Slidrs 中添加了Slider Name (slider)并设置了5个元素,线性方式,64精度
在具体引脚配置中 出现了 LS_slider_e0 到 LS_slider_e4
并且和实际电路对应 代码分析
/************************************************************************************* 操作原理 程序中,所有的滑动传感器连续判断手指在滑动器上的位置 发现手指的位置后,点亮对应位置处的LED;否则若没有发现手指,熄灭所有的LED /*************************************************************************************/
#include <device.h> /************************************************************************************* * 3: Scan all slider sensors continuously and report finger position * 主函数的功能: * 1: 关闭所有的LED * 2: 启动电容感应组件 * 3: 连续扫描所有的滑动传感器并指示手指的位置 * 4: 根据手指在滑动传感器上的位置点亮对应位置的LED灯 /*************************************************************************************/
#define NUM_LED (3)
void main() { uint8 CentroidPosition=0xFF; uint8 LedData=0; uint8 TempVar=0;
/*使能全局中断*/ CYGlobalIntEnable;
/*关闭LED灯*/ LED_Control_Reg_Write(LedData);
/*启动并且初始化电容感应传感器*/ CapSenseSlider_Start(); CapSenseSlider_CSHL_InitializeAllBaselines();
while(1) { /*扫描并更新电容滑动感应传感器S */ CapSenseSlider_CSD_ScanAllSlots(); CapSenseSlider_CSHL_UpdateAllBaselines();
/* 得到滑动器上手指的圆心位置 */ CentroidPosition = (uint8)CapSenseSlider_CSHL_GetCentroidPos(CapSenseSlider_CSHL_LS_SLIDER);
/* 如果在滑动器上发现了手指,则点亮对应位置处的LED*/ LedData = 0; if(CentroidPosition != 0xFF) { /* 得到手指的位置,并转换为LED的显示位置 */ LedData = 1 << (CentroidPosition >> NUM_LED); }
/* 更新LED灯的状态*/ LED_Control_Reg_Write(LedData); } } CapSense组件的使用 可参考帮助文档 在配置对话框框中 单击Data Sheet即可出现一个PDF
由于只是针对代码的简单分析 对组件的使用还不是很了解 接下来准备阅读ADC 和 CapSense 组件的说明文档 |