목차
실험 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. 고찰
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개가 되는 실험에 대한 접근도 할 수 있는 기회가 되었다.
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
}
==================================================
⑤ 실험을 위한 프로그램 작성(구문추가)
- 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개가 되는 실험에 대한 접근도 할 수 있는 기회가 되었다.
추천자료
IT활용에 관한 사례와 그 효용에 대하여
힐리스 마케팅 보고서
X-BOX 마케팅 전략 분석 기획서(내부/외부 환경 분석, 플스 시장 비교, 시장 분석)
CRM과 기업사례 분석
CRM의 개념, 특징, 목적, 기대효과, 구성, 도입사례, 구축과정, 구축의 문제점 및 개선방안과...
[기업분석]한글과컴퓨터 기업분석, 서울예술단 기업분석, 유니텍 기업분석, 예당엔터테인먼트...
[IC카드][스마트카드]IC카드(스마트카드)의 정의, IC카드(스마트카드)의 등장배경, IC카드(스...
중등(중학교) 컴퓨터교과(컴퓨터교육)의 교과목표, 중등(중학교) 컴퓨터교과(컴퓨터교육)의 ...
ARM GPIO & UART with C language
[마케팅원론] CRM의 정의와 동향을 알아보고, CRM의 성공 사례와 실패 사례를 통해 실패원인...
[기업정보][기업][정보][기업채용정보][기업지식정보][기업인사정보][기업기술정보][기업회계...
베릴로그를 이용한 cpu설계
아웃소싱(Outsourcing)의 성공&실패 사례 애플(Apple)의 성공사례 IBM의 실패사례.pptx