按照PIC16F18446核心板的一个厂家例程,是通过判断敲门声大小分别发出叮咚门铃声或警报声,发出声音是通过按不同频率翻转连接无源蜂鸣器的两个引脚,这在之前我的一个帖子里已经叙述过(https://bbs.21ic.com/icview-2980828-1-1.html),检测敲门声则是通过一个压电陶瓷片来完成,我参考这个例子也制作了相应的蜂鸣器和压电陶瓷片组件(见下图):
整个实装置如下:
敲门振动会引起压电陶瓷片两极的电压变化,通过ADC转换就可以得到相应的数值。实验用的组件准备插在扩展槽1上,对应的ADC软件引脚是A0,因此在MCC中进行设置:
然后在主循环中进行检测和判断,代码如下:
ADCC_StartConversion(0); //启动ADC_0通道转换
while(1 == ADCC_IsConversionDone());
adc_val = ADCC_GetConversionResult(); //获得转换结果
// adc_val = ADCC_GetSingleConversion(0);//获得单次转换结果
if(adc_val > 10){
LCD_write_value(60,4,4,0,1,adc_val);
if(adc_val > 200)
SND_alarmX4();
else if(adc_val > 20-0)
SND_dingDong(2);
}
这次adc转换的测试比较顺利,在仔细分析了adc.c文件中的函数后,自己尝试着就获得了结果,不象I2C的测试,花了近一周时间都没能完成。
|