[ บทความ : ทดลองใช้ LTC1298 บนบอร์ด ET-V6 ]

จากบทความ ทดลองสร้าง sensor แสงด้วย LDR อ่านบทความ .. เราจะได้บอร์ด sensor ที่มีหน้าตาดังนี้ครับ

ให้เรานำบอร์ดเสียบเข้ากับพอร์ตของ LTC1298 ดังรูปต่อไปนี้

เรามาลองใช้โปรแกรมตัวอย่างที่มากับบอร์ดกันเลยครับ ... เริ่มต้นกดปุ่ม FUNC แล้วที่ 7-Segment จะแสดงดังนี้

ตอนนี้ให้เรากดแป้น 2 เพื่อเลือกใช้โปรแกรมตัวอย่าง หลังจากนั้นที่ 7-Segment ก็จะเปลี่ยนการแสดงผลออกมาเป็นดังนี้

หลังจากนั้นก็กดแป้น 0 ตามดัวย E

ขั้นตอนสุดท้ายให้เรากดแป้น Inc เพื่อเริ่มต้นทำงาน หลังจากนั้น 7-Segment ก็จะแสดงออกมาดังนี้

เอาล่ะเรามี Sensor กับบอร์ดควบคุมที่พร้อมจะทำงานแล้ว ... มาดูสนามทดสอบกัน (...จริงแล้วก็คือ กระดาษ A4 ที่แปะเทป กาวสีดำเท่านั้นแหละครับ) ... เป็นดังรูปต่อไปนี้ครับ

ว่าแล้ว เราก็เอา sensor ไปตรวจจับเส้นสีดำดูสักหน่อย ... อ้อ ... ผลลัพธ์ออกมาเป็นดังนี้เลย (ค่าที่ได้นี่จะเปลี่ยนแปลงตาม VR ที่เราปรับด้วยนะครับ)

,

คราวนี้มาดูพื้นที่ที่เป็นสีขาวดูบ้าง

,

มาดู source code ของตัวอย่างที่ 15 ของบอร์ด Et-V6 กันดีกว่าครับ



	          INCL  "SFR.HEAD"
	;
	;***********************
	;      EXAMPLE #15     *
	;     ATOD LTC1298     *
	;***********************
	
	SCAN_D    EQU   0100H
	UNPK      EQU   0109H
	DPCOM     EQU   011BH
	HTOD      EQU   0111H
	SORT      EQU   0115H
	MUL16     EQU   012DH
	RD_AD12   EQU   0166H
	;
	DISPY     EQU   22H
	DISPY1    EQU   23H
	DISPY2    EQU   24H
	BUF_HEX   EQU   39H

	          ORG   8000H

	START:    LCALL READ_AD          ;o/p = DPTR
	          MOV   B,#122           ;1.22 mv *100
	          LCALL MUL16            ;DPTR*B (Result A,DPTR)
	;
	          LCALL CONVERT
	          LCALL UNPK
	          MOV   DISPY,#0
	          MOV   DISPY1,#0
	          SETB  DISPY2.7
	          LJMP  START
	;
	;***********************
	; READ ATOD CHANNEL #0 *
	;***********************

	READ_AD:  MOV   DPTR,#BUF_AD      ;buffer a/d value
	          MOV   R4,#9             ;count 9 value

	READ_AD1: PUSH  DPL
	          PUSH  DPH
	          MOV   B,#5
	          LCALL SCAN_D
	          MOV   R1,#0             ;a/d channel 0
	          LCALL RD_AD12
	          POP   DPH
	          POP   DPL

	          MOV   A,R1              ;data high
	          MOVX  @DPTR,A
	          INC   DPTR
	          MOV   A,R2              ;data low
	          MOVX  @DPTR,A
	          INC   DPTR
	          DJNZ  R4,READ_AD1       ;

	          MOV   DPTR,#BUF_AD      ;a/d value sorting
	          MOV   A,#9
	          LCALL SORT

	          MOV   DPTR,#BUF_AD+4*2  ;a/d value position 5
	          MOVX  A,@DPTR
	          MOV   B,A
	          INC   DPTR
	          MOVX  A,@DPTR
	          MOV   DPH,B             ;a/d output in DPTR
	          MOV   DPL,A
	          RET
	;
	;***********************
	;   CONVERT HEX TO DEC *
	;***********************
	; I/P = A,DPTR

	CONVERT:  LCALL HTOD             ;I/P = DPTR
	          MOV   BUF_HEX+0,R2     ;O/P
	          MOV   BUF_HEX+1,R3
	          MOV   BUF_HEX+2,R4

	          MOV   B,A              ;BYTE 3 (0-7)
	          MOV   R2,#06H          ;BIT 0 = 65535
	          MOV   R3,#55H
	          MOV   R4,#35H
	          JNB   B.0,CONV1
	          LCALL ADD_DEC

	CONV1:    MOV   R2,#13H          ;BIT 1 = 131072
	          MOV   R3,#10H
	          MOV   R4,#72H
	          JNB   B.1,CONV2
	          LCALL ADD_DEC

	CONV2:    MOV   R2,#26H          ;BIT 2 = 262144
	          MOV   R3,#21H
	          MOV   R4,#44H
	          JNB   B.2,CONV3
	          LCALL ADD_DEC

	CONV3:    MOV   BUF_HEX+2,BUF_HEX+1  ;VALUE / 100
	          MOV   BUF_HEX+1,BUF_HEX+0
	          RET
	;
	;***********************
	;    ADD BCD 3 BYTE    *
	;***********************
	;
	ADD_DEC:  MOV   A,BUF_HEX+2
	          ADD   A,R4
	          DA    A
	          MOV   BUF_HEX+2,A
	          MOV   A,BUF_HEX+1
	          ADDC  A,R3
	          DA    A
	          MOV   BUF_HEX+1,A
	          MOV   A,BUF_HEX+0
	          ADDC  A,R2
	          DA    A
	          MOV   BUF_HEX+0,A
	          RET

	          ORG   9000H
	BUF_AD:   DFS   2*9
	          END



เขียนโดย : ศุภชัย บุศราทิจ
Author : Supachai Budsaratij
e-mail : raek@se-ed.net
วันที่ทำการปรับปรุง : ๑ ก.พ.. ๒๕๔๔