N76E003 ADC使用方法

N76E003 ADC使用方法主要特点 1 12 位 ADC 2 8 通道单端输入模式 一次只能测一个通道电压 值都存在 ACCRH ACCRL 3 内部带隙电压 band gapvoltage 为 1 22V 可作为内部参考电压 4 启动方式 软件启动 硬件触发方式启动 ADC 模块结构图实例不多说了 直接贴代码 实现的功能为使用内部参考电压测 VCC 电压值 voidmain void

主要特点:

1、12位ADC。

2、8通道单端输入模式。(一次只能测一个通道电压,值都存在ACCRH、ACCRL)

3、内部带隙电压(band-gap voltage)为1.22V,可作为内部参考电压

4、启动方式:软件启动、硬件触发方式启动

ADC模块结构图

N76E003 ADC使用方法

实例

不多说了,直接贴代码,实现的功能为使用内部参考电压测VCC电压值。

void main(void) { uint16_t BandGap_H, BandGap_L, AIN3_H, AIN3_L; uint16_t BandGap_v; uint32_t AIN3_v = 0; uint16_t voltage = 0; while(1) { Enable_ADC_BandGap; clr_ADCF; set_ADCS; // Each time ADC start trig signal while(ADCF == 0); clr_ADCF; set_ADCS; // Each time ADC start trig signal while(ADCF == 0); clr_ADCF; set_ADCS; // Each time ADC start trig signal while(ADCF == 0); BandGap_H = ADCRH; BandGap_L = ADCRL; BandGap_v = BandGap_H << 4 | BandGap_L; //printf ("\n Value = 0x%bx",ADCRH); //printf ("\n Value = 0x%bx",ADCRL); Enable_ADC_AIN3; clr_ADCF; set_ADCS; // Each time ADC start trig signal while(ADCF == 0); AIN3_H = ADCRH; AIN3_L = ADCRL; AIN3_v = AIN3_H << 4 | AIN3_L; //printf ("\n AIN3 Value = 0x%bx",ADCRH); //printf ("\n AIN3 Value = 0x%bx",ADCRL); voltage = (uint16_t)((uint32_t)AIN3_v * 1220 / BandGap_v ); Timer0_Delay1ms(1000); } }

注意事项:

这里多次测内部产考电压的原因是:

连续(不延时)多次读取band-gap voltage的值 与 单次读取然后延时再次读取到的值不同,而且延时时间不同,读取到的值也不同(相当无语)

例如下面两段代码:

Enable_ADC_BandGap; //Find in "Function_define.h" - "ADC INIT" while(1) { clr_ADCF; set_ADCS; // Each time ADC start trig signal while(ADCF == 0); BandGap_H = ADCRH; BandGap_L = ADCRL; Timer0_Delay1ms(1000); }
Enable_ADC_BandGap; //Find in "Function_define.h" - "ADC INIT" while(1) { clr_ADCF; set_ADCS; // Each time ADC start trig signal while(ADCF == 0); BandGap_H = ADCRH; BandGap_L = ADCRL; //Timer0_Delay1ms(1000); }

加延时和不加延时读出来的值是不一样的,实测不加延时读出来的比较准确。所以实例中使用的小技巧是连续读3次内部参考电压后再测vcc,当然具体多少次自己定义。

实验结果

vcc万用表测得的电压为3.3v,adc测得的电压为3.27v左右,误差30mv左右。

最后说一句,假如vcc不固定的,想用内部参考电压,但要求精度高的方案,慎用这款mcu

 

也许有错误,望大家指正,不胜感激!

 

版权声明:本文为博主原创文章,转载请注明出处。 

链接:https://blog.csdn.net/Huangxuesi/article/details/

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231969.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c++反编译工具_pc下载软件

    c++反编译工具_pc下载软件  昨天在逆向某App的时候,发现有个加密工具类中的native方法是用C语言编写的,隐藏在so文件中。某大佬推荐逆向工具unidbg,能在pc端直接调用so文件中的函数,最终成功解决了问题。逆向工具之unidbg目录一、`unidbg`引入二、`unidbg`概述三、`unidbg`使用姿势1、下载`unidbg`项目2、导入到IDEA中①、解压压缩包②、打开`IDEA`,导入解压的项目3、测试`unidbg`4、运行自己的`so`文件①、编写`EncryptUtilsJni`类②、参数说明③、执行结果

    2026年1月21日
    5
  • 一次xxoo提权[通俗易懂]

    一次xxoo提权[通俗易懂]数据库root权限。然并卵。看了一下phpinfo得知是mysql5.0的然后想要通过udf之类的提权一波,结果一执行sql语句就被狗拦截了。然而数据库这条路是GG了OS名称:MicrosoftWindowsServer2008R2Enterprise修补程序:安装了1个修补程序。然后各种e…

    2022年7月17日
    22
  • ES5详解_es6配置表

    ES5详解_es6配置表目录1严格模式1.1使用1.2严格模式的作用1.3严格模式的规定2JSON2.1**`JSON.parse`**2.2`JSON.stringify`3对象扩展3.1Object.create3.2Object.defineProperties3.3对象本身的方法3.4Object.keys4数组扩展4.1indexof/lastIndexOf4.2forEach4.3map4.4filter5函数扩展1严格模式1.1使用在JS文件的头部或者函数的

    2025年7月22日
    5
  • vim 语法高亮

    vim 语法高亮

    2022年2月2日
    267
  • visual studio2010注释快捷键_html中注释的快捷键

    visual studio2010注释快捷键_html中注释的快捷键VS注释快捷键操作:  注释:先CTRL+K,然后CTRL+C  取消注释:先CTRL+K,然后CTRL+U

    2022年8月15日
    7
  • Android应用开发揭秘2

    Android应用开发揭秘2Android应用开发揭秘2

    2022年6月11日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号