회원가입 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
번호 분류 제목 글쓴이 조회 수 날짜
308 마이크로프로세서 HOTc 소스를 hex파일로 ..3 로이lee 2936 2009.04.14
307 마이크로프로세서 HOTMICOM으로 SWITCH회로를 만들고 싶은데..2 로이lee 2787 2009.04.14
306 마이크로프로세서 HOTallegro15.5메뉴얼을 구합니다.2 프러키온 1426 2009.04.07
305 마이크로프로세서 HOT어셈블리어2 kdama 1216 2009.03.27
304 마이크로프로세서 HOT초음파 센서를 이용한 서보모터 컨트롤에 관해서5 챠리스만 2276 2009.03.26
303 마이크로프로세서 HOT차량 진단 스캐너를 만들려고 합니다.5 TreeOfDream 2668 2009.02.17
302 마이크로프로세서 HOTatm128 로 adc에 다수의 가변저항들을 연결방법좀알려주세요2 콩콩 3655 2009.01.31
301 마이크로프로세서 HOTAVR 입력회로 질문2 포비르 1563 2009.01.14
300 마이크로프로세서 HOTAVR 강좌란에 있는 칼만 필터에 관한2 챠리스만 2890 2009.01.14
299 마이크로프로세서 HOT모터 제어 관련 완전 초보입니다 도와주세요 ㅜ2 모터의신이되리 891 2009.01.10
마이크로프로세서 HOT도와주세요..avr128 ADC 관련4 이정주 2435 2008.12.09
297 마이크로프로세서 HOT베틀로봇을 만들 만큼 충격에 강한 MCU를 알려 주세요.4 스텝빠스텝 1245 2008.12.04
296 마이크로프로세서 HOTATmega128을 이용해서 영상처리를 할려고 하는데여3 붉은개 2590 2008.12.03
295 마이크로프로세서 HOTAD 포트를 확장하고 싶습니다 ㅠㅠ2 코인 1011 2008.11.22
294 마이크로프로세서 HOT서보모터 제어 질문!!!9 암흑혜성 1541 2008.11.20
293 마이크로프로세서 HOTShoveler's Rhapsody(삽질하는 자의 광시곡)2 암흑혜성 3037 2008.11.18
292 마이크로프로세서 HOT초자 입문용 추천 도서 ?9 장군 1000 2008.11.17
291 마이크로프로세서 HOT안녕하세여1 qkdrkd 848 2008.11.07
290 마이크로프로세서 HOTsrf-05를 04모드로 사용 하는데.. 프로그램이.ㅠㅠㅠㅠㅠㅠㅠㅠㅠㅠ4 콜록 2017 2008.10.31
289 마이크로프로세서 HOTpic 가뭔가요?3 용가리오빠 2889 2008.10.31
Prev 1 ... 30 31 32 33 34 35 36 37 38 39 ... 50 Next
  • 사람은 자기가 한 약속을 지킬만한 좋은 기억력을 가져야 한다.
    - 니체
  • * 납포인트 정보 *
  • 글 작성 : 3
  • 댓글 작성 : 1
  • 내 글이 추천받음 : 1
저작권법에 위배되는 콘텐츠는 등록 불가하며, 저작물에 대한 권리는 저작자에게 있습니다.
Copyright 2006-2021 © hardwareis.com, All rights reserved.