打印
[技术问答]

启动ADC程序问题

[复制链接]
1893|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
#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没启动  数据 可以转换  
沙发
tianxj01| | 2018-11-2 09:29 | 只看该作者
P06_Input_Mode;//配置通道为输入模式
ADCCON0 &= 0xf0;ADCCON0 |= 3;//配置ADC转换通道
ADC_EN;//使能ADC

//下面是ADC运行循环
{
clr_ADCF;//清除ADCF,才可以启动下一次转换
set_ADCS; //设置ADCS,启动本次转换
while(ADCF == 0);     //等待ADCF置位
}
   

使用特权

评论回复
板凳
huangcunxiake| | 2018-11-2 09:53 | 只看该作者
参考ADC例子里面的设置顺序,顺序别乱了,或者按照手册说明的操作顺序。

使用特权

评论回复
地板
734774645| | 2018-11-3 15:30 | 只看该作者
外设的操作顺序一定要按要求来。

使用特权

评论回复
5
zhuomuniao110| | 2018-11-4 19:30 | 只看该作者
你都没有启动ADC的通道3

使用特权

评论回复
6
zhuomuniao110| | 2018-11-4 19:30 | 只看该作者
void main (void) 
{
                InitialUART0_Timer1(115200);

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


使用特权

评论回复
7
zhuomuniao110| | 2018-11-4 19:31 | 只看该作者
你缺个
Enable_ADC_AIN3;

使用特权

评论回复
8
zhuotuzi| | 2018-11-5 20:54 | 只看该作者
没有使能操作。

使用特权

评论回复
9
zhuotuzi| | 2018-11-5 20:54 | 只看该作者
没有使能操作。

使用特权

评论回复
10
三年级小学生|  楼主 | 2018-11-7 09:14 | 只看该作者

谢谢   问题已解决

使用特权

评论回复
11
zhuomuniao110| | 2018-11-8 09:56 | 只看该作者
楼主666,这个芯片ADC用起来不错吧

使用特权

评论回复
12
八层楼| | 2018-11-8 12:44 | 只看该作者
没有加上使能代码

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

15

帖子

0

粉丝