最消费类的方案开发,一直用到九齐的片子,带AD的基本都是062D,但是后面推出了062E代替了D版,看资料,使用AD需要一个零点校准的初始化程序,刚开始也一脸懵逼,经过一番摸索有,在这里做一个记录,

//ADC初始化校准 ---------------------------------------------------------------------------------
//void F_ADJMD(void)
//void F_GND_Convert(char count)
//void ADC_Calibration_Pro(void)

void F_GND_Convert(char count)
{
      char i;
      ADMD  = 0x90 | C_VSS;                // Select (GND) pad as ADC input
      CLRWDT();                            //clear WDT, which is defined in NY8Common.h
      delay(100);                            // Delay 0.56ms(Instruction clock=4MHz/2T) for waiting ADC stable
      for(i=1;i<=count;i++)
      {                  
       ADMDbits.START = 1;                // Start a ADC conversion session
       while(ADMDbits.EOC == 0)
           ;                                // Waiting for ADC conversion complet    
       R_AIN_DATA_LB += ( 0x0F & ADR); 
      }
}

void F_ADJMD(void)
{
    DISI();
    ADMDbits.GCHS = 1;                    // Enable global ADC channel    (SFR "ADMD")
    F_GND_Convert(8);                    // executing GND ADC converting 8 times
    R_AIN_DATA_LB >>= 3;                // Only get Bit7~4

if(R_AIN_DATA_LB >= 2)
    {
        ADJMD = 0x00;
        while(1)
        {
            CLRWDT();
            R_AIN_DATA_LB = 0;
            F_GND_Convert(8);            // executing GND ADC converting 8 times
            R_AIN_DATA_LB >>= 3;        // Only get Bit7~4
            if((ADJMD<0x1F) & (R_AIN_DATA_LB >= 2)){ADJMD++;}
            else if(ADJMD == 0x1F){ADJMD = 0x00;break;}
            else {R_AIN_DATA_LB = 1;break;}
        }
    }

if(R_AIN_DATA_LB == 0)
    {
        ADJMD = 0x20;
        while(1)
        {
            CLRWDT();
            R_AIN_DATA_LB = 0;
            F_GND_Convert(8);                    // executing GND ADC converting 8 times
                R_AIN_DATA_LB >>= 3;                // Only get Bit7~4
            if((ADJMD<0x3F)&(R_AIN_DATA_LB == 0)){ADJMD++;}
            else if(ADJMD == 0x3F){ADJMD = 0x20;break;}        
            else {break;}  
        }
    }
}

void ADC_Calibration_Pro(void)
{
    //----- Initial ADC-----      
    ADMD  = C_ADC_En | C_ADC_CH_Dis | C_VSS ;    // Enable ADC power, Disable global ADC input channel. Select PA1 pad as ADC input (SFR "ADMD")

//----- ADC high reference voltage source select-----
//    ADVREFH = C_Vrefh_VDD;                    // ADC reference high voltage is supplied by internal VDD (Note: ADC clock freq. must be equal or less than 2MHz @ VDD=5.0V) 
//     ADVREFH = C_Vrefh_4V;                    // ADC reference high voltage is supplied by internal 4V  (Note: ADC clock freq. must be equal or less than 1MHz)
//     ADVREFH = C_Vrefh_3V;                    // ADC reference high voltage is supplied by internal 3V  (Note: ADC clock freq. must be equal or less than 500KHz)
     ADVREFH = C_Vrefh_2V;                    // ADC reference high voltage is supplied by internal 2V  (Note: ADC clock freq. must be equal or less than 250KHz)
      delay(100);                                // 4M/2T , 0.56mS
//----- ADC clock frequency select----------------------------     
//    ADR     = C_Ckl_Div1;                        // ADC clock=Fcpu/1, Clear ADIF, disable ADC interrupt    
//    ADR     = C_Ckl_Div2;                     // ADC clock=Fcpu/2, Clear ADIF, disable ADC interrupt    
    ADR      = C_Ckl_Div8;                    // ADC clock=Fcpu/8, Clear ADIF, disable ADC interrupt    
//    ADR     = C_Ckl_Div16;                    // ADC clock=Fcpu/16, Clear ADIF, disable ADC interrupt    
 
//----- ADC Sampling pulse width select-------------     
    ADCR  = C_Sample_1clk | C_12BIT;        // Sample pulse width=1 adc clock, ADC select 12-bit conversion ( Note: ADC clock freq. must be equal or less than 500KHz)
//     ADCR  = C_Sample_2clk | C_12BIT;        // Sample pulse width=2 adc clock, ADC select 12-bit conversion ( Note: ADC clock freq. must be equal or less than 1MHz)
//  ADCR  = C_Sample_4clk | C_12BIT;        // Sample pulse width=4 adc clock, ADC select 12-bit conversion ( Note: ADC clock freq. must be equal or less than 1.25MHz)
//     ADCR  = C_Sample_8clk | C_12BIT;         // Sample pulse width=8 adc clock, ADC select 12-bit conversion ( Note: ADC clock freq. must be equal or less than 2MHz)

//--------------------------------------------------    
    ADJMD = 0x00;
    F_ADJMD();
}

九齐单片机NY8B062E的ADC零点校准程序记录相关推荐

  1. 九齐单片机NY8B062D开发笔记(一)准备

    九齐单片机开发笔记 前言 过程 1.芯片介绍 2.开发环境: 3.例程template 4.源文件: 参考资料 前言 各位朋友们,由于九齐的仿真器买不到,这个系列暂时停止更新 由于价格和性能的追求,近 ...

  2. 密脚九齐单片机 SSOP20 NY8BM72A 2K ROM 九齐

    NY8BM72A 是以MTP作为记忆的8bit低单价九齐单片机,有18个IO口,12+1AD通道,2K ROM,4组计时器,3组PWM,3组蜂鸣器, 系統主頻提供 20.8M/19.2M/16M/14 ...

  3. NY8B062D 九齐单片机之ADC(采样值不准的解决办法)

    其实ADC的程序 官方已经给出了 如下 ( 写这篇文章的目的是 就是本人在使用的时候 发现采样的数值 每次在接收采样值 必须要清零 要不然到处漂 ) 下面一段时间官方的程序 我就在上面加了个pwm的测 ...

  4. 九齐单片机应用-小家电开发(1)

    ** 锂电类便携式小家电应用开发-打蛋器 1:应用需求:PWM输出,复位电压2.7V,重启电机电压3.0V 2:结合需求,选用九齐系列单片机中的051F作为主控芯片,配合9017给锂电进行充电. 3: ...

  5. 九齐单片机 NY8A051D点亮LED

    写在前面 这段时间接触九齐的051D,记录一下怎么快速入门这款单片机 定时器 跟普通的8051单片机使用方法类似,直接上代码: #include <ny8.h> #include &quo ...

  6. 九齐单片机NY8A051D程序之 PWM Output

    这个例程原本就是九齐的IDE自带的,我这里傻瓜式的操作给大家看看,另外附带他的源码,没有用的给删了,需要注意的是,这芯片C指令51单片机有那么一点点区别,PWM输出或者做那种进入低功耗的案子,都一定要 ...

  7. 九齐单片机---官方Example_Code

    看到似乎很多人在下载九齐IDE的时候没有把Example_Code也一起下载,也有的人下载了不知道在哪找,我这里把官方的example code分享出来,需要的可以自取,链接失效的话评论区提醒一下. ...

  8. NY8A051F 6 I/O 8-bit EPROM-Based MCU 台湾九齐单片机

    NY8A051F 功能简介 NY8A051F 可以说是台湾九齐的人气王,有硬件PWM,有LVD,有38K红外载波,有各种模式 NY8A051F 宽广的工作电压: NY8A051F 2.0V ~ 5.5 ...

  9. NY8B062D 九齐单片机之ADC芯片

    概述 NY8B062E 是以EPROM作為記憶體的 8 位元微控制器,專為家電或量測等等的I/O應用設計.採用CMOS製程並同 時提供客戶低成本.高性能.及高性價比等顯著優勢.NY8B062E 核心建 ...

最新文章

  1. linux redis 设置日志,linux上redis怎么动态看日志
  2. win7与ubuntu 13.04 64位双系统安装介绍
  3. 数学在机器学习中的作用
  4. explain ref_你必须要掌握的MySQL命令:explain
  5. CodeForces - 617E XOR and Favorite Number (莫队+前缀和)
  6. 老司机做VR视频,需要什么样的全景相机?
  7. 使用证书登陆Linux服务器
  8. Nginx 反向代理配置
  9. 目标检测之SSD数据处理、训练与预测流程记录
  10. php百度地图api的geocoder,百度地图API提供Geocoder类
  11. 软件产品售后服务的内容方案
  12. python程序输入两个整数、实现加减乘除_加减乘除
  13. Axure 教程 |中级电子商务网站设计
  14. 逆向app - 简单apk工具的安装
  15. 支持十亿级密态数据、低代码,蚂蚁集团发布隐语开放平台
  16. android平板2018,2018 Android平板电脑推荐三星或华为更好
  17. java没有舞台_不会偷懒的程序员不是好程序员!
  18. 游戏辅助原理与制作01.扫雷-01基址
  19. 什么是VPS有什么用处?
  20. 潜龙号开启水下机器人_潜龙二号水下机器人:我的老家在沈阳

热门文章

  1. Android 图片模糊、高斯模糊、毛玻璃的三种实现方法
  2. 基于QT实现的联网国际跳棋游戏
  3. mysql中返回上级_MySql 获取当前节点及递归所有上级节点
  4. mysql安装connector选项_MySQL 安装 Connector/J_编程学问网
  5. CCF-CSP 202112-2 序列查询新解
  6. BetaFlight模块设计之二十九:滤波模块分析
  7. 快递鸟物流查询接口调用
  8. Java一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
  9. java中expectations_JMockit 之 Expectations
  10. 对智博教育的midia-class(奥义多媒体教室)(0ss-midia-class)的破解①(共两部分)