[ บทความ : ทดลองใช้ 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