() 해외배송 가능
판매가 | |
---|---|
소비자가 | 0원 |
적립금 |
|
무이자할부 | |
제조사 | 자체제작 |
원산지 | |
상품코드 | P00000BH |
수량 | |
국내/해외배송 | |
SNS 상품홍보 | |
QR코드 | |
QR코드 보내기 |
SENSCOMP 사의 초음파 모듈을 연결하여 거리를 측정,디스프레이 합니다.
C 언어로 프로그램 되어 있습니다.
/////////////////////////////////////////////////////////////
/****************************************************
*
* ULTRA SONIC Smart Instrument Demonstration Program
* (c) SAMPLE Electronics co. 09 March 2004
* http://www.SAMPLE.co.kr
*
* Programmed by Junghoon Kim
*
*
* 이 프로그램은 SenseComp 사의 초음파 모듈을 이용하여
* 거리를 감지하는 예를 설명하기 위한 데모 프로그램입니다.
* 초당 5 회 측정합니다. FND 4 자리로 9.999 Meter 까지 거리를
* 측정하며 최소 분해능은 1MM 입니다.
*
* 프로그램은 C 언어로 작성한 것이며 Crossware의
* 8051 C 컴파일러 데모버젼으로 컴파일 하였습니다.
*
*
* SE-600 외부 트리거모드:
* ( SE-600 에서 CLK 점퍼를 제거 합니다.)
*
* INIT핀에 주기가 200mS (최소 128mS)이며 폭이 192mS 인 펄스를 공급합니다.
* INIT 핀이 LOW 에서 HIGH 로 변할때 초음파가 발사되며 초음파가 반송되면
* ECHO 핀에서 초음파 반사 거리에 따른 펄스(A)가 출력됩니다.
*
* INIT 입력:
* +-----------------------------------+
* | |
* | |
* -------+ +----------
*
* |<---주기 T: 200 mS (최소 128 mS) ---->|
*
* ECHO 출력:
* |<---A--->|||||||||||||||
* +++++++++++++++-----------+
* ||||||||||||||| |
* ||||||||||||||| |
* -----------------+++++++++++++++ +----------
*
*
* A : 측정 구간
*
* 거기계 정도 교정:
* STEP 1: 단거리를 측정(50 CM)하여 실제 거리와 측정값이 일치하도록 OFFSET 값을 결정합니다.
* STEP 2: 원거리를 측정하여 실제 거리와 측정값이 일치하도록 Numerator 값을 조정 합니다.
* STEP 3: STEP 1 과 STEP 2 를 반복합니다.
*
* SE-600 커넥터 핀, 점퍼위치 (부품면)
* /----------\
* / +-+ \
* / |o|CLK \
* / |o| \
* | +-+ +-+ |
* BLNK ---->| |o| |
* BINH ---->| |o| |
* INIT ---->| |o| |
* OSC ---->| |o|J1 |
* ECHO ---->| |o| |
* GND ---->| |o| COMPONENT |
* 6V~30V DC ---->| |o| SIDE |
* | +-+ |
* \ /
* \ /
* \ /
* \----------/
*
*
****************************************************/
#include <sfr.h>
#include <os.h>
//////////////////////////////////////////////
#define OFFSET 1600
#define NUMERATOR 2000
#define DENUMERATOR 2200
//////////////////////////////////////////////
#define INIT 0xFB // P3.2 INIT Pulse Out
#define FND0 0xFE // P3.0 FND 0 Select Left Most Digit
#define FND1 0xDF // P3.5 FND 1 Select
#define FND2 0xFD // P3.1 FND 2 Select
#define FND3 0xEF // P3.4 FND 3 Select Right Most Digit
//////////////////////////////////////////////
// 7 Segment LED 패턴 데이터
// hgfedcba
#define DIG0 0xC0 // 11000000b ; 0 P2.0
#define DIG1 0xF9 // 11111001b ; 1 +-----a-----+
#define DIG2 0xA4 // 10100100b ; 2 | |
#define DIG3 0xB0 // 10110000b ; 3 P2.5 f b P2.1
#define DIG4 0x99 // 10011001b ; 4 | |
#define DIG5 0x92 // 10010010b ; 5 | P2.6 |
#define DIG6 0x82 // 10000010b ; 6 +-----g-----+
#define DIG7 0xD8 // 11011000b ; 7 | |
#define DIG8 0x80 // 10000000b ; 8 P2.4 e c P2.2
#define DIG9 0x98 // 10011000b ; 9 | |
// ; | P2.3 |
#define DIGM 0xBF // 10111111b ; - +-----d-----+ * h P2.7
#define DIGP 0x7F // 01111111b ; .
#define DIGB 0xFF // 11111111b ; "Blank"
//////////////////////////////////////////////
_sfrbit HOLD = _p1^7; // Hold Key (In)
//////////////////////////////////////////////
unsigned int trailer;
unsigned int task;
unsigned long table;
unsigned char int_state;
unsigned char fnd_state;
unsigned char boat;
unsigned char init_mask;
unsigned char fnd[4];
unsigned char mfnd[4];
bit hold;
//////////////////////////////////////////////
const char segment_pattern[] = { DIG0, DIG1, DIG2,\
DIG3, DIG4, DIG5, DIG6, DIG7, DIG8, DIG9 };
const char segment_select[] = { FND0, FND1, FND2, FND3};
//////////////////////////////////////////////
void _interrupt IVN_TIMER0 time_base() { // Timer 0 Interrupt Service
_tl0 = 0x18; _th0 = 0xFC; // 1000 1 mSec / 12 MHz Xtal
//////////////////////////////////////////////
_p3 = init_mask & 0xff;
_p1 = fnd[fnd_state];
_p3 = init_mask & segment_select[fnd_state++];
fnd_state &= 0x03;
//////////////////////////////////////////////
if(int_state == 0) { //
init_mask = INIT; // Init Low
hold = 1; // Hold Key 상태 입력
}
//////////////////////////////////////////////
if(int_state == 8) {
init_mask = 0xFF; // Init High
_tl1 = 0x00; _th1 = 0x00; // 내부 카운터 리세트
_tr1 = 1; // Timer 1 동작시작
}
//////////////////////////////////////////////
if(int_state == 194) { //
_tr1 = 0; // Timer 1 동작금지
task = _tl1;
task &= 0x00FF;
trailer = _th1;
trailer = (trailer << 8) & 0xFF00;
table = trailer | task;
table -= OFFSET;
table = table * NUMERATOR / (5 * DENUMERATOR);
trailer = table;
}
//////////////////////////////////////////////
if(int_state == 195) {
boat = trailer % 10;
mfnd[3] = segment_pattern[boat];
trailer /= 10;
}
//////////////////////////////////////////////
if(int_state == 196) {
boat = trailer % 10;
mfnd[2] = segment_pattern[boat];
trailer /= 10;
}
//////////////////////////////////////////////
if(int_state == 197) {
boat = trailer % 10;
mfnd[1] = segment_pattern[boat];
trailer /= 10;
}
//////////////////////////////////////////////
if(int_state == 198) {
boat = trailer % 10;
mfnd[0] = segment_pattern[boat];
trailer /= 10;
}
//////////////////////////////////////////////
if(int_state >= 199) {
int_state = 0;
if (hold) {
fnd[0] = mfnd[0] & DIGP;
fnd[1] = mfnd[1];
fnd[2] = mfnd[2];
fnd[3] = mfnd[3];
}
} else {
int_state++; //
}
//////////////////////////////////////////////
}
void main(void) {
fnd[0] = DIGM;
fnd[1] = DIGM;
fnd[2] = DIGM;
fnd[3] = DIGM;
_tmod = 0x91; // 0b10010001 Timer0 = Mode1, Timer, use TR0
// Timer1 = Mode1, Timer, use TR1 & INT1
_tl0 = 0xFF;
_th0 = 0xFF;
_tl1 = 0x00;
_th1 = 0x00;
_tr0 = 1; // Timer 0 동작시작
_et0 = 1; // 타이머 0 인터럽트 가능상태 설정
_ea = 1; // 글로벌 인터럽트 가능상태 설정
while(1) ;
}
/////////////// EOF //////////////////////////
/////////////////////////////////////////////////////////////
SRF-620, SRF-640 을 연결하여 사용합니다.
1 MM 단위의 정밀한 거리측정이 가능합니다.
상품안내에 표시된 가격(파란색 글자)은 부가세 포함 가격 입니다.
현금영수증 / 지출증빙 영수증 발행을 원하시면
총 결재금액(부가세 포함된 금액)을 무통장 입금하시고 주문 메모란에
"현금영수증 / 지출증빙 신청" 이라고 표시해주시고
핸드폰 번호 / 사업자 번호를 기재해주시면 됩니다.
영수증은 한가지만 발행됩니다.
(개인 카드로 결재하시면 학교 제출용 현금 영수증이나 세금 계산서를 발행하지 않습니다.)
학교 행정실에 제출 가능한 영수증 종류를 반드시 확인하여야 합니다.
세금 계산서 발행시 사업자 등록증 사본을
FAX ( 02-701-8058) 또는 Email ( sample@korea.com )으로
보내주시기 바랍니다.
계산서 담당 직원의 이름과 전화번호를 알려 주시기 바랍니다.
세금계산서는 전자 세금 계산서를 발행하며 메일로 보내드립니다.
7만원 이상이면 배송료를 샘플전자가 부담합니다.
거래명세서에 택배비 대신 다른 명칭으로 기입하기 원하시면 주문란에 메모 남기시면 됩니다.
산간벽지나 도서지방은 별도의 추가금액을 지불하셔야 하는 경우가 있습니다.
고객님께서 주문하신 상품은 입금 확인후 배송해 드립니다.
*** 교환 및 반품이 가능한 경우 ***
- 상품을 공급 받으신 날로부터 7일이내
( 상품가치가 상실된 경우에는 교환/반품이 불가능합니다.)
- 공급받으신 상품 및 용역의 내용이 표시.광고 내용과 다르거나 다르게 이행된 경우에는 공급받은 날로부터 3월이내, 그사실을 알게 된 날로부터 30일이내
*** 교환 및 반품이 불가능한 경우 ***
- 고객님의 책임 있는 사유로 상품등이 멸실 또는 훼손된 경우.
- 포장을 개봉하였거나 포장이 훼손되어 상품가치가 상실된 경우
- 복제가 가능한 상품(CD, 디스켓의 소프트웨어)등의 포장을 훼손한 경우
*** 반품 반송시 유의사항 ***
샘플전자로 물품을 보내실때 샘플전자 판매 상품인지, 샘플전자 쇼핑몰 또는 매장에서
직접 구입하신 상품인지 확인하셔야 하며 반드시 영수증 사본을 첨부하시고 반품전
샘플전자에 전화로 내용 확인을 하신 후에 보내셔야 합니다.
*** 입찰 업체를 통하여 구입하신 물품의 반품 ***
입찰 업체에 반환요청을 하셔야 합니다.
샘플전자는 입찰 업체를 경우한 물품을 직접 환불하거나 교환하지 않습니다.
※ 고객님의 마음이 바뀌어 교환, 반품을 하실 경우 상품반송 비용은 고객님께서 부담하셔야 합니다.
=========================<< 경고 / 주의 >>=========================
샘플전자에서 판매하는 모든 상품은 전자부품 또는 모듈형식의 부품입니다.
어린이가 먹거나 만지지 않도록 관리하여야 합니다.
전기를 이용하므로 화재가 발생할 수 있습니다. 또한 열이 발생하는 부품은
화상에 주의하여야 합니다. 반드시 소화시설이 갖추어진 개방된 공간에서
소방 관리자 책임 지도하에 교육적 용도로만 사용하여야 합니다.
샘플전자에서 판매하는 부품, 상품은 무인자동화, 원격제어, 의료기기와 AC220V 를
ON/OFF 제어, 자동차 개조(튜닝) 용도로 사용할 수 없습니다.
상품의 포장을 개봉한 것은 화재 발생 가능성과 화상 가능성을 인지한 것을 의미하며
이러한 사용조건에 동의 하실 수 없으면 구입처를 통하여 반품및 환불을 요청하여
주시기 바랍니다.
==========================================================