마이크로프로세서 응용 및 실험 - ADC & UART
본 자료는 3페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
해당 자료는 3페이지 까지만 미리보기를 제공합니다.
3페이지 이후부터 다운로드 후 확인할 수 있습니다.

소개글

마이크로프로세서 응용 및 실험 - ADC & UART에 대한 보고서 자료입니다.

목차

마이크로프로세서 응용 및 실험 - ADC & UART

1. 설계과제의 목표 및 제한조건
◎ 제목

2. 서론
- ADC -
◎ ADC란?
◎ 관련 레지스터
- USART -
◎ USART 직렬통신
◎ 통신속도 결정
◎ 관련 레지스터
◎ ASCII 코드

3. 본론
◎ 회로도
◎ 코드 입력 및 설명
◎ 결과


4. 결론
◎ 고찰

본문내용

1;
}
}
}
}
SIGNAL(SIG_ADC)
{
adc_result = ADCH;//ADC 변환값 save
}
SIGNAL(SIG_OVERFLOW0)
{
if(usart_count%2==0)
{
timer_count--;
if(!timer_count)
{
timer_count=100;
c++;
}
c1=c%10;
c2=c/10;
if(c==60) c=0;
TX1_Byte(c2+48); TX1_Byte(c1+48); TX1_Byte('\r');
TCNT0 = 100;
}
}
int main(void)
{
DDRB = 0x1f;
initialize_adc();
timer_count=100;
USART_Init(103);//9600
do{
led_count = adc_result/51;
PORTB = led[led_count];
}while(1);
}
void initialize_adc(void)
{
ADMUX = 0x66;// ADLAR = 1 /
ADCSRA = 0xef;//
TIMSK = 0x01;//Timer/Counter0 overflow interrupt enable
TCNT0 = 100;//(0xff - x + 1) = 15.625
TCCR0 = 0x4d;//fast PWM, clk1024
sei();
}
void TX1_Byte(unsigned char data)
{
while(!(UCSRA & 0x20));//wait for empty transmit buffer(UDRE)
UDR = data;//put data into buffer, send the data
}
unsigned char RX1_Byte(void)//receive a character by USART1
{
while(!(UCSRA & 0x80));//data received (RXC1)
return UDR;
}
void USART_Init(unsigned int baud)
{
UBRRH = (unsigned char)(baud >> 8);
UBRRL = (unsigned char)baud;
UCSRA = 0x00;//asynchronous normal mode
UCSRB = 0x98;//Rx complete Interrupt Enable/Rx(Bit4)/Tx(Bit3) enable
UCSRC = 0x86;//no parity, 1 stop, 8 data
}
만약 's' 입력을 받으면 usart_count값이 1씩 커지게 하고 만약 usart_count값이 홀수이면 해당 값이 더 이상 증가하지 않고 멈추게 설정한다. 멈춘 상태에서 ADC의 변환값이 128초과, 즉 2.5V초과일 때 0~5까지의 입력값을 십의 자리수에 넣는다. ADC변환값이 128이하, 즉 2.5V 이하일 때 0~9의 값을 일의 자리수에 넣는다.
adc_result의 변수에 ADC변환값을 저장한다. 여기서 ADC변환값을 ADCH를 사용한다.
오버플로우 인터럽트 발생은 지난 timer 과제의 것을 그대로 가져와서 1초를 설정한다.
DDRB에서 LED 5개를 출력으로 설정하고, USART_Init을 103으로 설정하여 9600bps의 통신속도를 설정한다.
ADC결과값(총 256)을 5등분하기 위해 51로 나눠준 값을 led_count라는 변수에 저장하고 그에 대해 LED의 출력값을 설정한다.
ADMUX = 0x66 : ADLAR = AVCC 설정, 1로 설정함으로써 ADCH를 사용하도록 한다.
ADCSRA = 0xef : ADC enable, start conversion, auto trigger enable을 설정하고 adc 인터럽트를 사용가능하게 하며 Prescaler를 128로 설정한다.
TIMSK, TCNT0, TCCR0은 저번 주 timer 과제를 그대로 사용하여 1초를 설정한다.
UCSRA = 0x00 : 노말 모드.
UCSRB = 0x98 : RX Complete Interrupt 사용가능, RX, TX 허용.
UCSRC = 0x86; : 패리티모드 사용X, 1 스톱비트, 8 데이터비트 사용.
◎ 결과
4. 결론
◎ 고찰
교수님께서는 이번 내용이 간단하다고 하셨지만 이번 내용이 가장 어려웠다. 이전 내용인 timer와 이번에 배운 ADC와 USART를 동시에 이용하여 사용해야 하는 레지스터의 수가 늘어나고 각 레지스터에 설정해야할 수가 이전보다 많아졌다. 또, 변수를 많이 설정해야 해서 코딩하기가 복잡했다. 또, PDF파일의 연습문제를 붙여넣기해서 사용한 부분이 많아 이해가 잘 가지 않는 부분들도 많았다.
  • 가격2,000
  • 페이지수9페이지
  • 등록일2015.04.27
  • 저작시기2015.4
  • 파일형식한글(hwp)
  • 자료번호#965241
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니