初级会员
- 积分
- 90
- 金钱
- 90
- 注册时间
- 2018-6-19
- 在线时间
- 11 小时
|
下面是源代码,是采集一个通道的。现在我想采集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];//¶¨òåò»¸öêy×é
unsigned int ADvalue;
// unsigned int a = 0;
usart();
// printf("′®¿ú3õê¼»ˉíê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;//ÅD¶ÏADêÇ·ñíê3é
unsigned int AD_Dat = 0;
ADC_CONTR |= 0X80;//¿aÆôAD
for(i=0; i<10000; i++);// Ñóê±Î趨μçÔ′
P1ASF |= 0X02;//ê1ÄüP1.1
ADC_CONTR = 0XE1;//// Ñ¡Ô५.1×÷ÎaAD×a»»í¨μ࣬×î¸ß×a»»Ëù¶è£¬Çå×a»»íê3é±êÖ¾¡£
// for(i=0; i<1000; i++);//ò»¸öí¨μà2»DèòaÑóê±£¬μ«¶à¸öí¨μàÔòDèòa
ADC_CONTR |= 0X08;//Æô¶ˉAD£¬ADC_START = 1£»
while(status == 0)
{
status = ADC_CONTR & 0x10;
}
ADC_CONTR &= 0XE7;//½«ADC_FLAGÇå0£»ADC_FLAG = 0£»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óÃæû·ÖoÅ
for(j=235;j>0;j--) //×¢òaoóÃæû·ÖoÅ
for(k=125;k>0;k--); //×¢òaoóÃæóD·ÖoÅ
}
|
|