[技术问答] 启动ADC程序问题

[复制链接]
329|11
 楼主 | 2018-11-2 08:57 | 显示全部楼层 |阅读模式
#include        "N76E003.h"
#include        <intrins.h>
#include "stdint.h"
#include "SFR_Macro.h"

unsigned char duanma[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};


        void        delay (uint16_t        z)
        {
                                uint16_t        i,j;
                                        for(i=z;i>0;i--)
                                                for(j=110;j>0;j--);

        }



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;
       
                P1M1 = 0x00;
                P1M2 = 0xff;               
       
                P0M1 = 0x40;
                P0M2 = 0xbf;
       
               
    while(1)
    {
            ADCCON0 &= 0xf0;
                        ADCCON0 |= 3;
            ADCF=1;
            ADCS=1;                                                                                                // Each         time ADC start trig signal
            while(ADCF==0);
            AIN3_H = ADCRH;
            AIN3_L = ADCRL;
//                        AIN3_H = 0xf4;
//            AIN3_L = 0xf4;
            AIN3_v = AIN3_H << 4 | AIN3_L;
                        voltage = AIN3_v *500/4096;
                       
                       
                       
                                P0=0xf7;
                                delay(50);
                                P1=duanma[voltage/1000];
                               
                               
                                P0=0xfe;
                                delay(50);
                                P1=duanma[voltage%1000/100];

                                P0=0xfd;
                                delay(50);
                                P1=duanma[voltage%100/10];
                               
                                P0=0xef;
                                delay(50);
                                P1=duanma[voltage%10];
                        四位数码管显示0  AD没启动  数据 可以转换  
| 2018-11-2 09:29 | 显示全部楼层
  1. P06_Input_Mode;//配置通道为输入模式
  2. ADCCON0 &= 0xf0;ADCCON0 |= 3;//配置ADC转换通道
  3. ADC_EN;//使能ADC

  4. //下面是ADC运行循环
  5. {
  6. clr_ADCF;//清除ADCF,才可以启动下一次转换
  7. set_ADCS; //设置ADCS,启动本次转换
  8. while(ADCF == 0);     //等待ADCF置位
  9. }
  10.    
复制代码
| 2018-11-2 09:53 | 显示全部楼层
参考ADC例子里面的设置顺序,顺序别乱了,或者按照手册说明的操作顺序。
| 2018-11-3 15:30 | 显示全部楼层
外设的操作顺序一定要按要求来。
| 2018-11-4 19:30 | 显示全部楼层
你都没有启动ADC的通道3
| 2018-11-4 19:30 | 显示全部楼层
  1. void main (void)
  2. {
  3.                 InitialUART0_Timer1(115200);

  4.                 Enable_ADC_AIN3;                                                // Enable AIN0 P1.7 as ADC input, Find in "Function_define.h" - "ADC INIT"
  5.                 while(1)
  6.     {
  7.                         clr_ADCF;
  8.                         set_ADCS;                                                                        // ADC start trig signal
  9.       while(ADCF == 0);
  10.                         printf ("\n Value = 0x%bx",ADCRH);
  11.                         printf ("\n Value = 0x%bx",ADCRL);
  12.                         Timer0_Delay1ms(100);
  13.     }
  14. }


复制代码
| 2018-11-4 19:31 | 显示全部楼层
你缺个
Enable_ADC_AIN3;
| 2018-11-5 20:54 | 显示全部楼层
没有使能操作。
| 2018-11-5 20:54 | 显示全部楼层
没有使能操作。
 楼主 | 2018-11-7 09:14 | 显示全部楼层

谢谢   问题已解决
| 2018-11-8 09:56 | 显示全部楼层
楼主666,这个芯片ADC用起来不错吧
| 2018-11-8 12:44 | 显示全部楼层
没有加上使能代码
扫描二维码,随时随地手机跟帖
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复

您需要登录后才可以回帖
登录 | 注册
高级模式
我要创建版块 申请成为版主

论坛热帖

快速回复 返回顶部 返回列表