搜索

[8/16位单片机] 【Curiosity Nano测评报告】+ADC测试通过

[复制链接]
2961|5
 楼主 | 2020-6-29 09:27 | 显示全部楼层 |阅读模式
    按照PIC16F18446核心板的一个厂家例程,是通过判断敲门声大小分别发出叮咚门铃声或警报声,发出声音是通过按不同频率翻转连接无源蜂鸣器的两个引脚,这在之前我的一个帖子里已经叙述过(https://bbs.21ic.com/icview-2980828-1-1.html),检测敲门声则是通过一个压电陶瓷片来完成,我参考这个例子也制作了相应的蜂鸣器和压电陶瓷片组件(见下图):
send_02.jpg

    整个实装置如下:
send_01.jpg

    敲门振动会引起压电陶瓷片两极的电压变化,通过ADC转换就可以得到相应的数值。实验用的组件准备插在扩展槽1上,对应的ADC软件引脚是A0,因此在MCC中进行设置:
I2C_04.jpg

    然后在主循环中进行检测和判断,代码如下:
        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的测试,花了近一周时间都没能完成。




使用特权

评论回复
 楼主 | 2020-6-29 09:43 | 显示全部楼层
    这是测试时将电压器旋钮调到最小,测得数据为80:
adc_T01.jpg

    这是将电位器旋钮调到最大(+3.3V电源),测得数值为1023:
adc_T02.jpg

使用特权

评论回复
| 2020-6-29 10:16 | 显示全部楼层
功能性蛮强的!

使用特权

评论回复
| 2020-6-29 12:01 | 显示全部楼层
可以可以。非常棒。装备齐全

使用特权

评论回复
 楼主 | 2020-6-29 13:32 | 显示全部楼层
最大值为1023,表明是ADC的精度是10位的。

使用特权

评论回复
 楼主 | 2020-6-30 17:07 | 显示全部楼层
经过测试,将启动ADC的代码移出主循环,放在进入主循环之前:
        ADCC_StartConversion(0);        //启动ADC_0通道转换

这行等等转换结果可以不用:
        while(1 == ADCC_IsConversionDone());

在主循环中仅保留这行获取转换结果的代码:
        adc_val = ADCC_GetConversionResult(); //获得转换结果

也能正确获得转换结果。

使用特权

评论回复
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

我要发帖 投诉建议 创建版块 申请版主

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式

论坛热帖

在线客服 快速回复 返回顶部 返回列表