마이크로 세그먼트 & LED
본 자료는 3페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
해당 자료는 3페이지 까지만 미리보기를 제공합니다.
3페이지 이후부터 다운로드 후 확인할 수 있습니다.

목차

LED 란?
LED 광원의 특징
세그먼트란?

실험 1 : LED 순차점등
1. 서론
2. 실험 방법
3. 실험 결과 및 고찰

실험 2 : 7-segment 순차점등
1. 서론
2. 실험 방법
3. 결과 및 고찰

본문내용

◎ 1번 스위치 입력이 “ 1”이면 증가
◎ 1번 스위치 입력이 “ 0”이면 감소
◎ 2번 스위치 입력이 “ 1”이면 0.5초마다 깜빡임
2. 실험 방법
★실험 준비물
ATmega32 Micro-Processor
7-segment, 브레드보드, 스위치, 저항, 전선 등
컴퓨터 및 Avr Edit ver3.6, Pony Prog 소프트웨어
★실험 절차 및 방법
① 회로 구성
ATmega32의 기본 회로구성
A0~A7 포트에 7-segment 연결
D0 포트에 1번 스위치 연결
C0 포트에 2번 스위치 연결
② PC Setting 및 연결
프로그래밍을 위한 AVR Edit 3.6 설치
프로그램 전송 프로그램 Pony Prog 설치
PC와의 통신을 위해 Serial 포트 연결
작동을 위한 전원 연결
프로그램 코딩 - 1번 스위치를 누르면 숫자 증가
#include
void delay(int d1, int d2);
int main(void) {
unsigned char led[10]={ 0x88, 0xEB, 0x4C, 0x49, 0x2B, 0x19, 0x18, 0x8B, 0x08, 0x0b };
int i=0;
DDRC = 0xff;
DDRB = 0x00;
for(;;){
PORTC = led[i];
delay(1000,1000);
if ((PINB&0x10)==0x10)
{
i+=1;
if(i==10)
i=0;
}
else if ((PINB&0x10)==0x00)
{
if(i==0)
i=10;
i-=1;
}
}
return 0;
}
void delay(int d1, int d2)
{
int i, j;
for(i=0;i for(j=0;j }
}
프로그램 코딩 - 2번 스위치를 누르면 0.5초마다 깜빡임
#include
void delay(int d1, int d2);
int main(void) {
unsigned char led[20]={ 0Xff, 0x88, 0Xff, 0xEB, 0Xff, 0x4C, 0Xff, 0x49, 0Xff, 0x2B, 0Xff, 0x19, 0Xff, 0x18, 0Xff, 0x8B, 0Xff, 0x08, 0Xff, 0x0b };
int i=0;
DDRC = 0xff;
DDRB = 0x00;
for(;;){
PORTC = led[i];
delay(800,800);
if ((PINB&0x10)==0x10)
{
i+=1;
if(i==20)
i=0;
}
else if ((PINB&0x10)==0x00)
{
if(i==0)
i=20;
i-=1;
}
}
return 0;
}
void delay(int d1, int d2)
{
int i, j;
for(i=0;i for(j=0;j }
}
3. 결과 및 고찰
★실험 결과
첫 번째 프로그램 입력 후 작동 결과
1번 스위치를 누르고 있지 않은 상태 - 7-segment가 약 2초 간격으로 숫자가 순차적으로 증가
1번 스위치를 누르고 있는 상태 - 7-segment가 약 2초 간격으로
숫자가 순차적으로 감소
★두 번째 프로그램 입력 후 작동 결과
2번 스위치를 누르고 있지 않은 상태 - 7-segment가 0.5초간격으로
깜빡임.
2번 스위치를 누르고 있는 상태 - 아무런 변화 없음.
결과 분석
1번 실험은 성공적으로 실행이됨. 2번 스위치는 전혀 작동을 하지 않음.
C++을 통한 프로그램에 문제가 있는거 같음.
★고찰
두 번째 실험 같은 경우, 쉬프트 제어처럼 비트를 쉬프트 하면서 제어 하는 것이 아니라, 0에서 9까지의 숫자를 차례대로 나타내는데, 포트의 출력이 일관성 또는 반복성이 전혀 없었기 때문에 미리 각각의 A,B,C,D,E,F,G,DP 에 들어오는 포트를 찾아서 미리 배열로 저장해 두고, For 문을 통해 순차적으로 배열이 실행되게 하였다. 첫 번째 LED 쉬프트 제어를 먼저 성공 하면서 배운 내용이 있어서 그리 어렵지 않게 성공 할 수 있었다.
하지만 2번 스위치에 의해 깜빡이면서 숫자가 증가하는 실험은 실패를 하였다.2번 스위치가 전혀 작동이 안되는 이유는 프로그램 구문이 잘못 되었던거 같다. 2번 스위치가 작동되기 위한 구문을 다시 작성해 보았다.
#include
void delay(int d1, int d2);
int main(void) {
unsigned char fnd[10]={ 0x88, 0xEB, 0x4C, 0x49, 0x2B, 0x19, 0x18, 0x8B, 0x08, 0x0b };
unsigned char sw=0x00;
unsigned char swx=0x00;
int i=0;
DDRD = 0x00;
DDRC = 0x00;
DDRA = 0xff;
sw = PIND;
swx = PINC;
do {
if (sw&=0x01) {
do {
sw = PIND;
PORTA = fnd[i];
delay(2000,4000);
i+=1;
if(i==10)
i=0;
if(swx&=0x01) {
swx=PINC;
PORTA=fnd[i];
delay(1000,1000);
}
} while (sw&=0x01);
}
else {
do {
sw = PIND;
PORTA = fnd[i];
delay(2000,4000);
i-=1;
if(i==0)
i=10;
} while(sw==0x01);
}
} while(1);
return 0;
}
void delay(int d1, int d2)
{
int i, j;
for(i=0;i for(j=0;j }
}
위의 코딩은 i의 값이 0이고, 2번 스위치가 연결된 C0포트를 & 비교를 통해 입력 신호를 받으면 A포트에 i 값이 0이 입력이 되고, 숫자가 변하는 시간지연보다 빠르게 0 값을 대입함으로써 7-segment가 깜빡이는 것으로 예상된다. 위의 프로그램을 실행 시켜보진 않았지만 위의 방식대로 하면 2번 스위치의 작동이 될 것으로 생각이 된다. segment 마지막 실험은 비록 실패를 했지만 이번 실험들을 통해 LED와 7-segment등에 대해 조금을 알수 있는 실험이 되었던거 같다.

키워드

  • 가격2,000
  • 페이지수11페이지
  • 등록일2012.06.30
  • 저작시기2010.5
  • 파일형식한글(hwp)
  • 자료번호#755965
본 자료는 최근 2주간 다운받은 회원이 없습니다.
청소해
다운로드 장바구니