⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adcauton6100blit.h

📁 在基于avr内核的单片机上实现MP3播放器的功能
💻 H
字号:
#define channel       4

#define   use_channel(locate) ADMUX&=0xf0;(ADMUX|=locate)

#define    adc_channel    A,channel 
#define N6100BLitADC   A,4

unsigned int get_ad(void) 
{ 
unsigned int i=0;
     
unsigned char adl; 
unsigned char adh ;
in(N6100BLitADC);
un_upres(N6100BLitADC);
 ADMUX=0b11000000;  //use internal ref ,,right,
 use_channel(channel);
  ADCSRA =0B10000100;  // 16feq divi
  ADCSRA|=0B01000000; //启动一次转换
  i=0;
_delay_us(60); 
   while (( (ADCSRA & 0x10)==0) && (i<2000)) i++;// Wait for the AD conversion to complete 
_delay_us(60);
 ADCSRA&=0xef;//off adc
 adl=ADCL; 
 adh=ADCH; 
 
i=(adh*256+adl);

return i;
  
}     


#define io_size       12	
unsigned int Get_ADC(void) 
{uchar i,max_id,min_id;
uint max_valu,min_valu;
uint  j=0;
uint buf[io_size];
for(i=0;i<io_size;i++)
{
buf[i]=get_ad(); 
}
for(i=0;i<io_size;i++)
{j+=buf[i];
}
j/=io_size ; //adc average
max_id=0;min_id=0;
max_valu=j;min_valu=j;
for(i=0;i<io_size;i++)
{if(buf[i]>max_valu)  {max_id=i;max_valu=buf[max_id];}
if(buf[i]<min_valu)  {min_id=i;min_valu=buf[min_id];}
}
j=0;
for(i=0;i<io_size;i++)
{if((i!=max_id) && (i!=min_id)) j+=buf[i];
}
if(max_id==min_id)  j/=(io_size-1);
else   j/=(io_size-2);

return  j;
}

#define  uart_debug_adc  0
void AutoN6100BLit(void )
{
uint8 PWM=0x40;
for(uint adci=0;adci<128;adci++)
   {
uint16 adc=Get_ADC(); 
		#if uart_debug_adc==1	
	         diruart[0]=0xDD;
		     CopyBytes((uint8 *)&adc,&diruart[1],2);
			 uart_send2(&diruart[0],3);
	    #endif		
if(adc<=890) 	{if(PWM<0x80) PWM++;}
else if(adc<910)	break;
else  PWM--;
N6100BLitPWM=PWM;_delay_ms(1);
   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -