회원가입 ID/PW 찾기
AA

ADC 해서 그값을 세그먼트에 나타내는 소스입니다..
#include <mega128.h>            
#include <delay.h>

char seg_pat[16]= {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
   0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71};
                        
void  AD_disp(int);   // A/D 변환값 표시 
                
void main(void)
{             
        int   ad_val;
                  
 DDRB = 0xFF;   // 포트 B 출력 설정
        DDRF = 0xF0;      // PF4-PF7 출력, PF0-PF3 입력
                                                       
        ADMUX = 0x0;      // ADC0 단극성 입력 선택
        ADCSRA = 0x87;    // ADEN=1, 16MHz  256분주 -> 125kHz
        delay_ms(5);
        
         while(1){
               ADCSRA = 0xC7;                           // ADEN=1, ADSC = 1 변환 시작
               while((ADCSRA & 0x10) == 0);             // ADIF=1이 될떄까지
               ad_val = (int)ADCL + ((int)ADCH << 8);   // A/D 변환값 읽기     
              
               AD_disp(ad_val);    // A/D 변환값 표시
         }
}    

// A/D 변환값 표시
void AD_disp(int val)
{               
        float  fval;
        int  ival, buf;
        char N100, N10, N1;
       
        fval = (float)val * 5.0 / 1023.0;
        ival = (int)(fval  * 100.0 + 0.5);
       
        N100 = ival / 100;      // 정수부 추출
        buf = ival % 100;       
       
        N10 = buf / 10;         // 소수 첫째 자리 추출
        N1 = buf % 10;          // 소수 둘째 자리 추출

        PORTF = 0b11100000; // SEG 1(소수 둘째 자리 표시)  
       PORTB = seg_pat[N1];       
        delay_ms(1);
          
        PORTF = 0b11010000; // SEG 2(소수 첫째 자리 표시)
 PORTB = seg_pat[N10];             
 delay_ms(1);                         
 
      PORTF = 0b10110000; // SEG 3(정수부 표시)
        PORTB = seg_pat[N100];       
        delay_ms(1);
}

**************************************
        fval = (float)val * 5.0 / 1023.0;
        ival = (int)(fval  * 100.0 + 0.5);
**************************************
이부분이 이해가 안가요..정말 답답합니다..고수님들 부탁점 할게요..ㅜㅜ

댓글 4
  • 마이컴이 10bit AD 분해능을 가지므로 5V : 1024 = XV : 1 이렇게 해 보면 됩니다.

    즉, 마이컴에 들어오는 값이 0 ~ 1023 (총갯수1024) 인데요. 그것이 0V ~ 5V를 표현합니다.

    따라서 비례식으로 보시면 1의 변화량은 위와 같습니다.

    AD 채널에 5V가 들어간다고 하면 1023이 나와야 하는데 위의 식에 대입해 보세요.  val에 1023을 대입해 보시면

    5V가 나옵니다. 머 그런뜻이에요.

    ival = (int)(fval  * 100.0 + 0.5);  이것은 예를들어 fval 이 2.456볼트가 나온다고 하면 100을 곱했으니 245.6가 되고

    반올림 +0.5를 하니 246이 되겠네요.

    이런 뜻입니다.

    계산식같은 경우는 모를때 값을 대입해 보는것이 최고입니다.


  • No Profile
    어려워서 GG네요.
  • No Profile
    글쓴이 쭈우 08.12.11 16:12 댓글 좋아요 0 싫어요 0
    감사합니다...
    ^^
  • No Profile

    덕분에 알아갑니다 ㄳ 합니다^^:

하드웨어 설계 및 개발에 대하여 개발자들이 자유롭게 토론하는 공간입니다.
- Q&A, 자유주재 토론, 관련 정보 공유
- 분야 : 마이크로프로세서 응용, 전기/전자(아날로그/디지털) 회로 설계, C/C++ 프로그래밍, 펌웨어,
         PCB Artwork, 트러블슈팅 등 하드웨어 설계에 관한 전반인 내용
※ 게시글에 맞는 분류를 선택하여 글을 작성해 주시면 쾌적한 사이트 운영에 많은 도움이 됩니다.
※ 하드웨어 인사이트는 회원들간의 거래정보를 게재할 뿐이지, 그 어떤 책임과 의무도 가지지 않습니다.

search
번호 분류 제목 글쓴이 조회 수 날짜
136 전기전자 아무거나 HOTlm3886 power1 에드소닉 881 2009.01.08
135 드론/로봇/라인트레이서 HOT아크마님 질문이 있습니다..1 박정범 990 2008.12.21
134 드론/로봇/라인트레이서 HOT아크마님 다시 질문드릴께요1 박정범 1089 2008.12.20
133 드론/로봇/라인트레이서 HOT악마 라인트레이서 스위치관련 질문요..1 박정범 1188 2008.12.20
132 전기전자 아무거나 HOTkeil c compiler.. 도움좀..6 히무라켄신 1270 2008.12.19
131 드론/로봇/라인트레이서 HOT마이컴을 공부하려면?2 필링사랑 1201 2008.12.15
130 전기전자 아무거나 HOT피에조 센서 피스파이스 시뮬레이션 ㅜ9 깝채 5594 2008.12.09
129 전기전자 아무거나 HOT커패시터 충전시간5 빛나는 영혼 2377 2008.12.03
128 전기전자 아무거나 HOT마이크로프로세서 질문인데요2 마모루 772 2008.12.03
127 전기전자 아무거나 HOT장애인시설 안내강화 지하철네비게이션 작성중2 뚱뚱한팬더 1130 2008.11.26
126 전기전자 아무거나 HOT자일링스를 8051로..1 이순재 910 2008.11.22
125 전기전자 아무거나 HOT라인트레이서와 라이트 트레이서의 차이점1 빨래 869 2008.11.18
124 전기전자 아무거나 HOTL165관련 질문입니다.2 Tristan77 857 2008.11.17
123 드론/로봇/라인트레이서 HOTAVR128 센서+모터 소스입니다. 봐주세용;;2 천청심 2212 2008.11.16
122 전기전자 아무거나 HOT3채널 온도계를 만들어보라는데...3 성민군 794 2008.11.13
121 전기전자 아무거나 HOT전자과 관련이요4 투덜이닌자 680 2008.11.11
120 전기전자 아무거나 HOTPIR 회로도 설명좀 해주세요.6 준똥 4991 2008.10.31
119 전기전자 아무거나 HOT시뮬레이션 관련 질문입니다.1 준똥 749 2008.10.31
118 드론/로봇/라인트레이서 HOT아크마라인트레이서중 핸들갑 먹이는부분에서 납득안되는부분이 ㅎㅎ4 초보꾼 3574 2008.10.30
117 전기전자 아무거나 HOT막막합니다..어떻게 해야하나요?11 암흑 763 2008.10.29
Prev 1 ... 28 29 30 31 32 33 34 35 36 37 ... 39 Next
  • 무관심 때문에 사람은 실제로 죽기전에 죽어버린다.
    - 위젤
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.