와 함께 LM35DZ & PIC16F877A 프로젝트> 온도 센서

R

reinneguhn

Guest
나의 프로젝트)입니다 24.5C 예 : (세그먼트에 대한과 온도를 감지 LM35DZ - 양극 7 일반 다음을 수행 ADC를 함께 PIC16F877A 및 디스플레이 출력을 통해 4.지금까지 회로와, 이루어진다 모두 왼쪽 부분 코딩.내가 참조 전압의 2V예요 사용합니다.제가 프로그램을 내 쳤에 좀 문제가 건물.내 프로그램은 다음과 같이이다 :

코드 :/ / ************************************************ ***************************

/ / 파일 이름 : pictemp.c

/ / 버전 : 1.0

/ / 설명 : PIC는 온도계를

/ / 대상 : 마이크로 칩의 마이크로 컨트롤러를 PIC16F877a

/ / 최종 업데이트 : 28 년 3 월 2010

/ / ************************************************ ***************************#은 <pic.h> 포함(XT는 & WDTDIS 및 PWRTDIS 및 보호 해제 및 BORDIS & \ __CONFIG

LVPDIS & DEBUGEN);FOSC 20000000L를 정의 #메기 SSEG const [] = (0b11000000, / / 0, LED는 세그먼트 :, B와 C 나 디, 전자,여

0b11111001, / / 1, LED는 세그먼트 : B으로 C

0b10100100, / / 2, LED가 세그먼트 :, B와 D의 이메일은 G

0b10110000, / / 3, LED는 세그먼트 :, B와 C 나 개발은 G

0b10011001, / / 4, LED는 세그먼트 : B와 C가,여은 G

0b10010010, / / 5, LED가 세그먼트 :, C 나 D의여은 G

0b10000010, / / 6, LED는 세그먼트 :, C 나 디, 전자,여은 G

0b11111000, / / 7 세그먼트 LED에 :, B으로 C

0b10000000, / / 8, LED는 세그먼트 :, B와 C 나 디, 전자,여은 G

0b10010000, / / 9, LED는 세그먼트 :, B와 C 나 D의여은 G

0b11000110, / / C 나 LED가 세그먼트 :, 디, 전자,여);서명되지 않은 번째 문자 DispDigit [4];

서명되지 않은 번째 문자 DigitCount;정적 무효 인터럽트 ISR이 (무효)

(

면 (TMR0IF) (/ / TIMER0 인터럽트 플래그

/ * 낮은 세그먼트를 당겨 * /

PORTB = DispDigit [DigitCount];

/ * 활성화 자리와 고급 옆에 자리를 *로 /

PORTD = ~ (1 <<DigitCount );/ * 자리 개수 *를 재설정 /

(해당되는 경우 DigitCount> 3)

DigitCount = 0;TMR0 = 156;

TMR0IF = 0;

)

)/ / 지연 함수#은 _delay_us를 정의 (x)를 (서명되지 않은 우리를 메기; \

우리가 = (x)를 / (30000000/FOSC 1) |; \

= 0) 계속 (하면서 - 우리!;)무효의 _delay_ms (서명 int 처지)

(

내가 번째 문자 서명되지 않은;

(합니까

전 = 4;

(합니까

_delay_us (164);

반면) (- 1);

) 동안 (- 미시시피);

)/ * 7 세그먼트 놔 번호 : 0부터 99.9 *에 떠있는 가치를 구현 /SSEG_putnum을 (플로트 번호) 무효

(

서명되지 않은 번째 문자 iDigit, iDigit1, iDecimal;

(전화 번호> 99.9)을 반환하는 경우;/ * 전역 인터럽트 비활성화 * /

GIE = 0;iDigit = (int) 번호;

/ / = 번호 - iDigit; / / 정수로 변환 부동 임시직 플로트

/ / temp2 = 임시직 * 10 플로트;

/ / iDecimal = (int) temp2;

iDecimal = (int는) (번호 - iDigit) * 10; / / 10 진수 자리 잡아

DispDigit [1] = SSEG [iDecimal]; / / 첫 번째 10 진수 자리

(iDigit> = 10) (면

iDigit1 = iDigit / 10;

DispDigit [3] = SSEG [iDigit1]; / / 둘째 자리

iDigit = iDigit - (iDigit1 * 10);

다른) (

DispDigit [3] = SSEG [0]; / / 제로 로그인 둘째 자리

)

DispDigit [2] = SSEG [iDigit] & 0x7F; / / 첫 번째 숫자 소수점이있는/ * 글로벌 인터럽트 활성화 * /

GIE = 1;

)메인 (무효) 무효

(

서명되지 않은 int의 iValue, iCTemp;

CentTemp 있자;TRISA = 0xFF; RA0에 RA7에 대해 / / 입력

TRISB = 0x00; RB0에 RB7에 대해 / / 출력

TRISD = 0x00; RC0에 대한 RC7 / / 출력/ * 초기 출력 포트 * /PORTB = 0xFF;

PORTD = 0xFF;/ *의 초기화 TIMER0 : 기간 : 1 / (Fosc/32) 엑스 Prescale 엑스 TMR0

0.0016 석사 엑스 64 * 100 = 10.24 미시시피 * /OPTION을 = 0b00000101; / / 1:64 Prescale

TMR0 = 156; / / 모든 인터럽트 10.24 석사

TMR0IE = 1; / / 설정 TMR0의 인터럽트는 오버플로우

GIE = 1; / / 글로벌 인터럽트 활성화/ * 초기 변수는 *를 사용하여 /DigitCount = 0;

DispDigit [0] = SSEG 정보 [10]; / / 섭씨 가입

DispDigit [1] = SSEG [0]; / / 제로 자리

DispDigit [2] = SSEG [0]; / / 제로 자리

DispDigit [3] = SSEG [0]; / / 제로 자리

(용;;) (/ * 첫번째 샘플 가져오기 * /ADCON0 = 0b10000001;

ADCON1 = 0b10001101; / / 맞아, Vref 정렬 : VCFG1 및 VCFG0 (1 VoltReference)

GODONE = 1; / / 채널 0에 전환을 시작

(GODONE) 동안 계속; / / 잠깐 만요 전환 완료

iValue = ADRESL가; / / 8 비트 LSB가 결과를 가져오기

iValue 는 = (ADRESH <<8); / / 2 비트 MSB가 결과를 가져오기

iCTemp = iValue;

_delay_ms (50);/ * 예제 2 * 가져오기 /GODONE = 1; / / 채널 0에 전환을 시작

(GODONE) 동안 계속; / / 잠깐 만요 전환 완료

iValue = ADRESL가; / / 8 비트 LSB가 결과를 가져오기

iValue 는 = (ADRESH <<8); / / 2 비트 MSB가 결과를 가져오기

iCTemp = iValue;

_delay_ms (50);/ * 예제 3 * 가져오기 /GODONE = 1; / / 채널 0에 전환을 시작

(GODONE) 동안 계속; / / 잠깐 만요 전환 완료

iValue = ADRESL가; / / 8 비트 LSB가 결과를 가져오기

iValue 는 = (ADRESH <<8); / / 2 비트 MSB가 결과를 가져오기

iCTemp = iValue;/ *은 평균 섭씨 값을 계산 * /

/ * (Value/5.12 ADC)를 / Vref, LM35DZ 절판 = 10mV / C 나 Vref = 2 볼트 *를 /CentTemp = (iCTemp/3.0) / 5.12;
/ * 이제 결과 * 디스플레이 /

SSEG_putnum (CentTemp);

_delay_ms (200);

)

)

/ * EOF : pictemp.c * /

 
마이크로 칩은 '을'ADGO 변경 등록의 이름을

변경 사항 GODONE가 ADGO하는.

 
좋아 내가하고 ADGO 변경된 GODONE을 컴파일러는 프로그램 말했다 오류에 있어요.그러나 내가로드 프로그램이 표시되는 모든 PIC16f877a 그게 모두 4 7 - 세그먼트는 8.8.8.8을 보여주는.생각하는 무슨을 당신이 지금 문제가 되나??

 
난 제발 생각하는 프로젝트 파일에이 헤더가 필요 전 .. 파일 헤더와 함께 수있는 사람이 도움을??올린날짜 분 후 2 시간 44 :디스플레이는 아직 변경되지 않습니다.아직 8.8.8.8를 표시.는 않는다 문제는 아무도 알아?

 
내가 '지금 같은 프로젝트를 마우스 오른쪽 없는데 내가 문제를했습니다 같은
(수도 코드를 게시 하시다면 최종 u는 u면 상관 없어)
고맙습니다 많이

 
기본적으로 위의 코드는이야 .. 마지막 코드
당신은 그냥 ..를 ADGO에 GODONE을해야 변경

 

Welcome to EDABoard.com

Sponsor

Back
Top