게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
avr이용한 lm35(온도) fnd로 표시하는데 막혔습니다
게시물ID : programmer_10689짧은주소 복사하기
작성자 : 반대ㄴㄴ해
추천 : 0
조회수 : 1519회
댓글수 : 6개
등록시간 : 2015/06/01 21:08:40
옵션
  • 본인삭제금지

제목 없음.png



#include <avr/io.h>
#include <util/delay.h>
#define S7_1 0x7F; 
#define S7_2 0xBF; 
#define S7_3 0xDF;
const char Font[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};
unsigned int adc_value, temp;
unsigned char value_10 ;
void control_7Seg(char N)
{
unsigned int i;
unsigned char N10, N1,N_p1;
N10 = temp /10; //10의자리
N1= temp %10;//1의자리
N_p1= (temp/10)%10;//소수점 1자리
for(i=0;i<16;i++) // 16번 평균화 작업후 표시
    {
       PORTD= S7_1; //10의 자리를 켜준다
       PORTE = Font[N10];
       _delay_ms(1000);
       PORTD = S7_2; // 1의 자리를 켜준다
       PORTE = Font[N1];
       _delay_ms(1000);
       PORTD = S7_3; // 소수점 첫번쨰 자리를 켜준다.
       PORTE = Font[N_p1];
       _delay_ms(1000);
   }
}
int main(void)
{PORTE=0X00;
  DDRE=0xff; // A포트 전체를 출력단자로 사용
  PORTD=0x00;
  DDRD=0xE0; // C포트중 7,6,5 핀 출력단자로 사용
  DDRF=0x00;
ADMUX=0Xc0;// 내부 2.56V 사용 ADC PORTF의 1번핀사용
ADCSRA=0xe7; //ADC동작
while(1)
  {
  control_7Seg(temp);
  value_10=ADCW;//ADCW LM35온도 받음 ADC_VALUE 온도값
  
  temp = value_10 * 100/ 1024 ;
 

     };
}

회로는 C.A를 사용하였고 TR은 2N3906인 pnp TR을 사용하였습니다 

일단 컴파일을 하면 에러는 하나도 없습니다. 그래서 더더욱이 막혔습니다.

lm35에서 출력된값을 lm358로 증폭을 시켜 Vout쪽을 측정하면 10배의 증폭된 값이 나오는데, 

PORTF로 입력된 lm35 값을 안에서 변화은 하지 못하는 걸로 생각이 됩니다. 

그래서 이것저것 찾아는 봤는데 fnd3개가 다 000 으로 밖에 표시가 되지 않습니다.

플래그를 쓰라는 말이 있던데 어떻게 하는지 제가 혼자 공부하면서 하는거라 

자료가 부족해서 카페나 인터넷등 요리조리 찾아보는데 이부분에서 막히네요. 

죄송하지만 도움좀 요청합니다 .



전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호