ค้นหาบล็อกนี้

Custom Search

วันเสาร์ที่ 21 พฤษภาคม พ.ศ. 2554

Digital Clock & Temp with FTTL-655 Display

FTTL-655 เป็นจอแบบ Duplex LED Display ผมไม่เคยเล่นหรือเจอจอแบบนี้มาก่อน
มันประหลาดดี มันจะมี 2 common แถมแต่ละ sigment พ่วงกันแบบ งงๆ
หา datasheet ก็ไม่มี แต่ไปเจออันนี้เข้า
http://libesz.digitaltrip.hu/digital-clock/
มีที่เดียวจริงๆ แถม Source ดันเป็นภาษา C อีก เลยต้องดำน้ำเอง



มาว่ากันถึงหลักการขับแบบที่ผมคิดเอง
FTTL655S มีตัวเลข 4 หลัก ใช้ pin ในการขับ segment 14pin
มี colon ด้วยก็ 15pin พอดี แบบไม่รวม common และ am-pm ผมไม่ได้ใช้



อันดับแรกผมจะแบ่ง จอออกเป็น 4 ส่วน เพื่อง่ายต่อการมอง
ใช้ข้อมูล 4byte คือ 2byte บน 2byte ล่าง แยกจากกัน
ข้อมูล segment หลัก1-2 ใช้ 2byte คือ 1byte บน 1byte ล่าง
ข้อมูล segment หลัก3-4 ใช้ 2byte คือ 1byte บน 1byte ล่าง

ในข้อมูล 1byte ที่ส่งให้กับ segment จะประกอบด้วย
เลขสองหลัก และในตัวเลขสองหลักจะมี 2common sigment พ่วงกัน
จึงต้องแบ่งแยกข้อมูลออกเป็น 4 ชุดคือ

Table A = digit1บน+digit2บน
Table B = digit1ล่าง+digit2ล่าง

เอาทั้งหมดมารวมกันเป็น 2byte บนกับล่าง (A กับ B) ส่งแล้ว scan ตามลำดับ

เนื่องจากจอเป็นแบบ 2common การ scan จึงทำได้สองครั้ง
ผมก็เอาข้อมูล หลัก1-2 บน กับ หลัก3-4 บน ส่งออกไปยัง port 1-2
ตามลำดับ จากนั้นสั่ง common1 on ต่อไป ก็เอาข้อมูล หลัก1-2 ล่าง
กับ หลัก3-4 ล่าง ส่งออกไปยัง port 1-2 จากนั้นสั่ง common 2 on

การเปิดตาราง (อ้างจาก Code) โปรดดูรูปวงจรของ FTTL655S ประกอบ
ถ้านับหลักซ้ายมือสุดเป็นหลักที่1จะเห็นว่ามีการต่อ segment เหมือนกัน
ในหลักที่ 2 และ 4 สามารถใช้ตารางเดียกันได้ ส่วนหลักที่ 1 และ 3 ต่างกัน
เราก็แยกเป็นสองตาราง รวมทั้งหมด 3 ตาราง โดย table-A ใช้กับหลักที่ 1
table-B ใช้กับหลักที่ 3 และ table-C ใช้กับหลักที่ 2และ4

ต่อไปเป็นการเปิดตารางผมจะเรียกข้อมูลชุดบนว่า A และชุดล่างว่า B
ทุกครั้งที่เปิดตารางของแต่ละหลัก จะได้ข้อมูล 2 ชุด คือ A และ B
ซึ่งก็คือข้อมูลของ Common ซึ่งมีอยู่สองชุดนั่นเอง
แต่ใน 1 byte นั้นมันจะมีตัวเลขอยู่สองหลัก ดังนั้นเมื่อเปิดตารางแล้ว
ก็จะได้ข้อมูลมา 4 ชุดหรือ 4 byte คือ

A หลักที่ 1 และ B หลักที่ 1
A หลักที่ 2 และ B หลักที่ 2

นำข้อมูล A1 กับ A2 มา OR กันเป็น 1 byte
นำข้อมูล B1 กับ B2 มา OR กันเป็น 1 byte

การ scan ทำดังนี้
1.สั่ง Common 1-2 Off
2.เอาข้อมูลที่ได้จาก A1+A2 ส่งออกไปที่ port สั่ง Common 1 On
ค้างไว้ 5ms จากนั้น
3.สั่ง Common 1-2 Off
4.เอาข้อมูลที่ได้จาก B1+B2 ส่งออกไปที่ port สั่ง Common 2 On
ค้างไว้ 5ms กลับไปทำข้อ 1

จบแล้วครับ อาจไม่สมบูรณ์เท่าไร แต่คงพอเป็นแนวทางได้นะครับ

ประกอบไปด้วย Program Driver ตัวอย่าง และ Program นาฬิกา DS1307
และ Temp DS18B20 แก้ไขจาก Digital clock - Temp with 1.8 LED Display


Source Code