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

목차

실험 1 LED 순차점등
 1. 서론
  1-1. 실험 목표
  1-2. 관련자료
 2. 실험 방법
  2-1. 준비물
  2-2. 실험 절차 및 방법
 3. 결과
  3-1. 실험 결과 및 분석
  3-2. 고찰

실험 1 7-segment 순차점등
 1. 서론
  1-1. 실험 목표
  1-2. 관련자료
 2. 실험 방법
  2-1. 준비물
  2-2. 실험 절차 및 방법
 3. 결과
  3-1. 실험 결과 및 분석
  3-2. 고찰

본문내용

int i=0;// 변수 I와 초기값 지정
DDRD = 0x00;// D포트를 입력 포트로 지정
DDRA = 0xff;// A포트를 모두 출력 포트로 지정
sw = PIND;// D포트를 sw라는 입력포트로 지정
do {
if (sw&=0x01) { // sw의 출력값과 & 비교하여 0x01이면
do { // 다음을 실행
sw = PIND; // sw라는 변수에 입력변수로 지정
PORTA = fnd[i]; // port A 에 i값(0) 대입
delay(2000,4000); // 시간 지연 함수
i+=1; // 데이터 출력을 하나씩 증가
if(i==10) // 만약 10번째 입력 값까지 도달 시
i=0; // 다시 0 입력
} while (sw&=0x01); // sw의 출력값과 & 비교하여 반복함
}
else {//위의 if구문에서 비교하여 거짓이 되면 여기서부터 실행
do {
sw = PIND;
PORTA = fnd[i];
delay(2000,4000);
i-=1;
if(i==0)
i=10;
} while(sw==0x01);//sw가 0x01값과 같은 동안 반복
}
} while(1);
return 0;
}
void delay(int d1, int d2)
{
int i, j;
for(i=0;i for(j=0;j }
}
==================================================
⑤ 실험을 위한 프로그램 작성(구문추가)
- 2번 스위치를 누르면 0.5초마다 깜빡임
==================================================
unsigned char fnd[10]={ 0x88, 0xEB, 0x4C, 0x49, 0x2B, 0x19, 0x38, 0x8B, 0x08, 0x0B };
unsigned char sw=0x00;
unsigned char swx=0x00;
int i=0;
DDRD = 0x00;
DDRC = 0x00;//C포트 입력으로 지정
DDRA = 0xff;
sw = PIND;
swx = PINC;//swx 변수를 입력으로 사용
do {
if (sw&=0x01) {
do {
sw = PIND;
PORTA = fnd[i];
delay(2000,4000);
i+=1;
if(i==10)
i=0;
if(swx==0x01) {//C0포트가 입력이 있으면
swx=PINC;//swx 변수를 C포트 입력으로 사용
PORTA^=0xff;//A포트 현재값은 OR 비교하여 깜빡임
delay(1000,1000);//시간지연
}
} while (sw&=0x01);
}
else {
do {
==================================================
⑥ 작성된 각 프로그램 전송
- AVR Edit로 작성된 프로그램을 컴파일 하여 hex 파일 생성
- Pony Prog에서 해당 프로그램을 불러 ATmega32로 전송
⑦ 각 프로그램 별 결과 확인
- 실험 목표에 맞게 동작하는지 스위치 조작을 통해 확인
3. 결과
3-1. 실험 결과 및 분석
① 실험 결과
- 작성된 두 프로그램 컴파일 결과 : 이상 없음
- 첫 번째 프로그램 입력 후 작동 결과
: 1번 스위치를 누르고 있지 않은 상태 - 7-segment가 약 2초 간격으로 숫자 0, 1, 2, ~ 8, 9 로 증가
1번 스위치를 누르고 있는 상태 - 7-segment가 약 2초 간격으로
숫자 9, 8, ~ 1, 0 으로 감소
(7-segment 숫자 증가 및 감소 작동 확인)
- 두 번째 프로그램 입력 후 작동 결과
: 2번 스위치를 누르고 있지 않은 상태 - 7-segment가 약 2초
간격으로 숫자 0, 1, ~ 8, 9 로 증가 중, 0.5초 간격으로 깜빡임
2번 스위치를 누르고 있는 상태 - 스위치 먹지 않음
(아무런 변화 없음)
② 결과 분석
- ATmega32의 포트 설정 : 7-segment에 숫자가 올바르게 표시되는
각 값 확인 후 입력
- 1번 스위치 입력 포트 이용 및 반복 실행 방법은 실험 1과 동일
- 2번 스위치에 의한 변화가 전혀 없으므로 입력포트 이용방법에
문제가 있는 것으로 예상
3-2. 고찰
- 이번 실험에서 실험1과 마찬가지인 1번 스위치에 의한 숫자 증가와 감소는 어렵지 않게 성공했다.
하지만 2번 스위치에 의한 깜빡이는 프로그램이 작동하지 않았다. 2번 스위치가 전혀 안 먹는 다는 것은 입력포트의 이용이 잘 못된 것으로 예상되어지는데, 입력포트의 변수 비교구문을 & 비교와 OR 비교로 바꾸어도 2번 스위치에 의한 변화는 없었다. 이는 구문 자체가 잘 못 되었거나, 구문의 위치가 잘 못되었을 수 있다.
실험 이튿날 실험실 학부생의 조언을 얻어 적어본 실행이 예상되는 프로그래밍 구문은 다음과 같다.
============================================================
if (sw&=0x01) {
do {
sw = PIND;
PORTA = fnd[i];
delay(2000,4000);
i+=1;
if(i==10)
i=0;
if(swx&=0x01) {//C0포트에 & 비교를 이용해 swx 입력
swx=PINC;//swx 변수를 C포트 입력으로 사용
PORTA=fnd[i];//A포트 현재값에 변수i 초기치 대입
delay(1000,1000);//시간지연
}
} while (sw&=0x01);
}
============================================================
변수 i의 초기치가 0이고, 2번 스위치가 연결된 C0포트를 & 비교를 통해 입력 신호를 받으면 A포트에 i 값이 0이 입력이 되고, 숫자가 변하는 시간지연보다 빠르게 0 값을 대입함으로써 7-segment가 깜빡이는 것으로 예상된다.
해당 구문을 직접 실행 해 보진 않았지만, 위와 같은 해석적으로 프로그램이 정상 구동 될것이라 예측된다.
실험 목표에 맞는 결과를 얻어내진 못했지만, 본 실험을 통해 7-segment의 구조와 이용방법 등을 알 수 있게 되었고, Input가 2개가 되는 실험에 대한 접근도 할 수 있는 기회가 되었다.
  • 가격2,000
  • 페이지수14페이지
  • 등록일2012.06.30
  • 저작시기2010.5
  • 파일형식한글(hwp)
  • 자료번호#755966
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니