BASIC4MCU | 8051/PIC | DT-516 강좌 | DT516-120.c ChipCap-R, 온습도 FND display
페이지 정보
작성자 키트 작성일2017-08-24 10:59 조회1,609회 댓글0건첨부파일
본문
//-------------------------------------------------------------
// 82G516 E/V BOARD ( DT-516 )
//-------------------------------------------------------------
// XTAL : 22.1184Hz
//-------------------------------------------------------------
// filename: DT516-120.c
// ChipCap-R, 온습도 FND display
//-------------------------------------------------------------
#include
//
#include "DT516-main.h"
//
U_C Temp, RH;
U_I adc0, adc1;
//
void Timer_0_Interrupt(void) interrupt 1{ // 7200Hz주기
P4=0xFF; // FND OFF
switch(FND_CNT){
case 0: P0=Seg_Data[Temp/10]; FND_COM1=0; break;
case 1: P0=Seg_Data[Temp%10]; FND_COM2=0; break;
case 2: P0=Seg_Data[RH /10]; FND_COM3=0; break;
case 3: P0=Seg_Data[RH %10]; FND_COM4=0; break;
}
if(++FND_CNT>3)FND_CNT=0;
//
if(delay_buf){ if(--delay_buf==0)delay_flg=1; }
}
//
U_I read_ADC(U_C ch){ //ch:0~7
ADCTL=0xE8|ch; //ADC on & speed 270clk/start ADC //ch
while(!(ADCTL & 0x10));
return ((ADCH<<8) + ADCL);
}
//
void main(){
U_I i,sum;
TMOD=2; ET0=1; TR0=1; EA=1;
AUXR=(AUXR|0x40); P1=0xFF; P1M0=0xFF; P1M1=0; //P1.ch Hi-impedance input//ADCH=상위(BIT9,8) ADCL=하위
while(1){
sum=0; for(i=0;i<64;i++)sum+=read_ADC(0); adc0=sum/64;
sum=0; for(i=0;i<64;i++)sum+=read_ADC(1); adc1=sum/64;Temp=(U_C)((((float)adc0*0.0048875855327468230694037145650049)-0.5)*50.0-50.0); // ChipCap1 Temp
RH =(U_C)((((float)adc1*0.0048875855327468230694037145650049)-0.5)*25.0); // ChipCap1 RH
t_delay_ms(500);
delay_ms(500);
}
}
//
댓글 0
조회수 1,609등록된 댓글이 없습니다.