[Microchip]/PIC12F_PIC10F2011. 3. 1. 23:00

[PIC12F EVM] ADC테스트

[PIC12F673 EVM] ADC테스트



PIC12F 에는 10비트 ADC가 4채널 포함되어 있다.
아래는 PIC12F683의 ADC블록도 이다.



사용법은 간단하다.  ADCON0레지스터에 초기화 해주고 ADRES레지스터 값을 읽으면 된다.



PIC12F683 ADC 제어 코드
void ADC_Init(void)
{
    Cbi(ANSEL, BIT3);
    Sbi(TRISIO, BIT4);
   ADCON0 = 0x8D;
}

unsigned int ADC_Read(unsigned char Ch)
{
 if(Ch == 0)Cbi(ADCON0, BIT2|BIT3);
 else if(Ch == 1){Sbi(ADCON0, BIT3);Sbi(ADCON0, BIT2);}
 else if(Ch == 2){Sbi(ADCON0, BIT3);Cbi(ADCON0, BIT2);}
 else if(Ch == 3)Sbi(ADCON0, BIT2|BIT3);
 
 GODONE = 1;while(GODONE);  
  
 return (ADRESH<<8)|ADRESL; 
}


VR이 연결된 채널3의 ADC값을 LCD에 출력해서 확인하는 테스트를 해 보았다.
먼저 PIC12F683보드의 전원을 연결하고 VR을 연결한다.



LCD에 표기하기 위해  [LCD Module] 을 이용한다. 브레드보드에서 쉽게 확장하기 위해 만들었던 PCB를 이용하면 쉽게 연결가능하다.



PIC12F683 ADC테스트 예제 소스코드
void main(void)
{
 unsigned int cnt = 0;

 //시스템 초기화
 SystemInit();
 
 //LED초기화
 Led1Init();

 //ADC초기화
 ADC_Init();

 //LCD초기화
 InitShfitRegister();
 LcdInit();
 
 //               0123456789abcdef
 LcdDspStr(0, 0, "1:PIC12F683 EVM ");
 LcdDspStr(0, 1, "ADC:");

 while(1)
 {
  SendIntStr(5, 1, ADC_Read(3));
  Delay(50);
 }
}



테스트 동영상


Posted by nexp

댓글을 달아 주세요