조도측정기
본 자료는 4페이지 의 미리보기를 제공합니다. 이미지를 클릭하여 주세요.
닫기
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
해당 자료는 4페이지 까지만 미리보기를 제공합니다.
4페이지 이후부터 다운로드 후 확인할 수 있습니다.

목차

■ 동작설명
■ 회로도
■ 사용부품 리스트
■ 동작흐름도
■ 프로그램소스

본문내용

N(100자리 표시)
PORTB = seg_pat[N100];
delay_ms(1);
PORTF = 0b11110000;
PORTF = 0b01110000;// SEG4 ON(1000자리 표시)
PORTB = seg_pat[N1000];
delay_ms(1);
PORTF = 0b11110000;
}
// LED 표시 함수
void LED_disp(int val)
{
// 조명의 조도 기준(학교)에 따른 Level
// val = (ad_val2-ad_val1)/(lux2-lux1)*(lux-lux1) + ad_val1
if(val >= 951)// 8단계(1500lx 이상)
{
PORTC = 0b00000000;// LED 모두 ON
Command(HOME);// 첫번째 라인에 출력
LCD_String1(a);
Command(LINE2);// 두번째 라인에 출력
LCD_String("Level 8 - Bright");
}
else if(val >= 852)// 7단계(600lx 이상)
{
PORTC = 0b10000000;// LED1-7 ON
Command(HOME);
LCD_String1(a);
Command(LINE2);
LCD_String("Level 7 - Bright");
}
else if(val >= 735)// 6단계(300lx 이상)
{
PORTC = 0b11000000; // LED1-6 ON
Command(HOME);
LCD_String1(a);
Command(LINE2);
LCD_String("Level 6 - Normal");
}
else if(val >= 664)// 5단계(200lx 이상)
{
PORTC = 0b11100000;// LED1-5 ON
Command(HOME);
LCD_String1(a);
Command(LINE2);
LCD_String("Level 5 - Normal");
}
else if(val >= 618)// 4단계(150lx 이상)
{
PORTC = 0b11110000;// LED1-4 ON
Command(HOME);
LCD_String1(a);
Command(LINE2);
LCD_String("Level 4 - Normal");
}
else if(val >= 414)// 3단계(60lx 이상)
{
PORTC = 0b11111000;// LED1-3 ON
Command(HOME);
LCD_String1(a);
Command(LINE2);
LCD_String("Level 3 - Dark ");
}
else if(val >= 302)// 2단계(30lx 이상)
{
PORTC = 0b11111100;// LED1-2 ON
Command(HOME);
LCD_String1(a);
Command(LINE2);
LCD_String("Level 2 - Dark ");
}
else if(val >= 176)// 1단계(15lx 이상)
{
PORTC = 0b11111110; // LED1 ON
Command(HOME);
LCD_String1(a);
Command(LINE2);
LCD_String("Level 1 - Dark ");
}
else// 0단계(15lx 미만)
{
PORTC = 0b11111111;// LED 모두 OFF
Command(HOME);
LCD_String1(a);
Command(LINE2);
LCD_String("Level 0 - Dark ");
}
}
// LCD 초기화 함수
void LCD_init(void)
{
DDRD = 0xFF;// 포트 D 출력 설정
PORTD &= 0xFB;// E = 0;
delay_ms(1);
Command(0x20);
delay_ms(1);
Command(0x20);
delay_us(100);
Command(0x20);
Command(FUNCSET);
Command(DISPON);
Command(ALLCLR);
Command(ENTMODE);
}
// 문자열 출력 함수
void LCD_String(char flash str[])
{
char flash *pStr=0;
pStr = str;
while(*pStr)
{
Data(*pStr++);
}
}
// sprintf 호출 함수
void LCD_String1(char str[])
{
while(*str)
Data(*str++);
}
// 인스트럭션 쓰기 함수
void Command(unsigned char byte)
{
Busy();
// 인스트럭션 상위 바이트
PORTD = (byte & 0xF0);// 데이터
PORTD &= 0xFE;// RS = 0;
PORTD &= 0xFD;// RW = 0;
delay_us(1);
PORTD |= 0x04;// E = 1;
delay_us(1);
PORTD &= 0xFB;// E = 0;
// 인스트럭션 하위 바이트
PORTD = ((byte<<4) & 0xF0);// 데이터
PORTD &= 0xFE;// RS = 0;
PORTD &= 0xFD;// RW = 0;
delay_us(1);
PORTD |= 0x04;// E = 1;
delay_us(1);
PORTD &= 0xFB;// E = 0;
delay_ms(1);
}
// 데이터 쓰기 함수
void Data(unsigned char byte)
{
Busy();
// 데이터 상위 바이트
PORTD = (byte & 0xF0);// 데이터
PORTD |= 0x01;// RS = 1;
PORTD &= 0xFD;// RW = 0;
delay_us(1);
PORTD |= 0x04;// E = 1;
delay_us(1);
PORTD &= 0xFB;// E = 0;
// 데이터 하위 바이트
PORTD = ((byte<<4) & 0xF0);// 데이터
PORTD |= 0x01;// RS = 1;
PORTD &= 0xFD;// RW = 0;
delay_us(1);
PORTD |= 0x04;// E = 1;
delay_us(1);
PORTD &= 0xFB;// E = 0;
}
// Busy Flag Check -> 일반적인 BF를 체크하는 것이 아니라
// 일정한 시간 지연을 이용한다.
void Busy(void)
{
delay_us(200);
}
  • 가격1,000
  • 페이지수14페이지
  • 등록일2007.06.30
  • 저작시기2007.6
  • 파일형식한글(hwp)
  • 자료번호#418077
본 자료는 최근 2주간 다운받은 회원이 없습니다.
  • 편집
  • 내용
  • 가격
청소해
다운로드 장바구니