BASIC4MCU | 질문게시판 | 답변 : 8051 적외선 센서
페이지 정보
작성자 master 작성일2018-08-06 17:01 조회16,958회 댓글3건
https://www.basic4mcu.com/bbs/board.php?bo_table=gac&wr_id=2647
본문
// MCU BASIC: https://www.basic4mcu.com// DateTime : 2018-08-06 오후 5:05:06// by Ok-Hyun Park//#include <reg51.h>sbit dq=P3^5; // connect with DS1820 Data pinsbit rs=P3^0;sbit en=P3^1;sbit FAN=P1^0; // 온풍기//void delayus(int us){int i;for(i=0; i<us; i++);}//void delay_ms(int j){unsigned char i;for(; j; j--)for(i=122; i<=0; i--);}//bit reset(void){bit presence;dq=0; delayus(29); dq=1; delayus(3);presence=dq; delayus(25);return(presence);}//bit readbit(void){unsigned char i=0;dq=0; dq=1;for(i=0; i<3; i++); return(dq);}//void writebit(bit Dbit){unsigned char i=0;dq=0; dq=Dbit?1: 0; delayus(5); dq=1;}//unsigned char readbyte(void){unsigned char i;unsigned char din=0;for(i=0; i<8; i++){ din|=readbit()?0x01<<i: din; delayus(6); }return(din);}//void writebyte(unsigned char dout){unsigned char i;for(i=0; i<8; i++){ writebit((bit)(dout&0x1)); dout=dout>>1; }delayus(5);}//unsigned char*ReadTemp(){unsigned char n,buff[2]=0;reset();writebyte(0xcc); writebyte(0x44); while(readbyte()==0xff); delay_ms(500);reset();writebyte(0xcc); writebyte(0xbe); for(n=0; n<9; n++)buff[n]=readbyte();return buff;}//void main(){unsigned char tp,*temp,t=0x00;while(1){temp=ReadTemp();temp[1]=temp[1]&0x07; tp=temp[0]>>4;temp[1]=temp[1]<<4; tp=tp+temp[1];if(tp<10){ FAN=0; } // 10도 이하면 온풍기 ONelse { FAN=1; } // 10도 이상이면 온풍기 OFF}}
LCD 코드를 빼고 온풍기 코드를 추가했습니다.
댓글 3
조회수 16,958rohyunge님의 댓글
rohyunge 작성일
아 정말 감사합니다 답변달아주신줄 모르고 계속 혼자서 찾고있었네요
tp<20이면 20도 이상이면~ 이런식이 되는건가용?
master님의 댓글
master 작성일비슷한데 20도 미만이면이죠
rohyunge님의 댓글
rohyunge 작성일아 그렇죠 정말 감사드립니다!