OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3855|回复: 0

关于STC15W多通道ad采集

[复制链接]

13

主题

24

帖子

0

精华

初级会员

Rank: 2

积分
90
金钱
90
注册时间
2018-6-19
在线时间
11 小时
发表于 2018-8-7 14:15:22 | 显示全部楼层 |阅读模式
下面是源代码,是采集一个通道的。现在我想采集2个4个或者8个。我想法是吧读取的值存到数组然后在经过冒泡排序取出最大的那个值。但是我不知道如何去采集多路AD
有没有大神帮帮我。谢谢

#include<stdio.h>
#include<STC15W4K.H>
#define VCC 3.3
unsigned int ADC_P11();
void usart();
void delay500ms();
void main()
{
        float vin;
//        float vinall[8];//&#182;¨ò&#229;ò&#187;&#184;&#246;êy×é   
        unsigned int ADvalue;
//        unsigned int a = 0;
        usart();
//        printf("′&#174;&#191;ú3&#245;ê&#188;&#187;ˉíê3é");
        while(1)
        {
                ADvalue = ADC_P11();
                vin = VCC * ADvalue / 1023;
//                vinall[a] = vin;
//                a++;
                printf("%.3f       ",vin);
//                if(a == 7)
//                         a = 0;
                delay500ms();
        }
}
unsigned int ADC_P11()
{
        unsigned int i;
        unsigned char status = 0;//&#197;D&#182;&#207;ADê&#199;·&#241;íê3é
        unsigned int AD_Dat = 0;
        ADC_CONTR |= 0X80;//&#191;a&#198;&#244;AD
        for(i=0; i<10000; i++);// &#209;óê±&#206;è&#182;¨μ&#231;&#212;′
        P1ASF |= 0X02;//ê1&#196;üP1.1
        ADC_CONTR = 0XE1;//// &#209;&#161;&#212;&#2411.1×÷&#206;aAD×a&#187;&#187;í¨μà£&#172;×&#238;&#184;&#223;×a&#187;&#187;&#203;ù&#182;è£&#172;&#199;&#229;×a&#187;&#187;íê3é±ê&#214;&#190;&#161;£
//        for(i=0; i<1000; i++);//ò&#187;&#184;&#246;í¨μà2&#187;Dèòa&#209;óê±£&#172;μ&#171;&#182;à&#184;&#246;í¨μà&#212;òDèòa
        ADC_CONTR |= 0X08;//&#198;&#244;&#182;ˉAD£&#172;ADC_START = 1£&#187;
        while(status == 0)
        {
                status = ADC_CONTR & 0x10;
        }
        ADC_CONTR &= 0XE7;//&#189;&#171;ADC_FLAG&#199;&#229;0£&#187;ADC_FLAG = 0£&#187;ADC_START = 0;
        AD_Dat = (ADC_RES<<2)|(ADC_RESL&0x03);
        return AD_Dat;
}
void usart(void)
{
        TMOD = 0X20;
        TH1 = 0XFA;
        TL1 = 0XFA;
        TR1 = 1;
        AUXR = 0X00;
        SCON = 0X50;
        TI = 1;
}
void delay500ms(void)
{
   unsigned char i,j,k;
   for(i=93;i>0;i--)     //×¢òaoó&#195;&#230;&#195;&#187;·&#214;o&#197;
   for(j=235;j>0;j--)    //×¢òaoó&#195;&#230;&#195;&#187;·&#214;o&#197;
   for(k=125;k>0;k--);    //×¢òaoó&#195;&#230;óD·&#214;o&#197;
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-23 18:49

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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