เมื่อไม่นานมานี้ผมทำเกี่ยวกับ 7segment เยอะก็เลยปิ๊งไอเดียที่จะเอามาทำ
display module แบบสำเร็จรูปคือมี controller chip ในตัวเลย
โดยการใช้งานจะต้องให้ง่ายมากที่สุด มาดูวิดีโอกันก่อน
จะเห็นว่าสามารถควบคุมการทำงานต่างๆได้อย่างง่ายดายโดยมี command บางตัว
ที่ใกล้เคียงกับ LCD ทั่วไป ส่วนที่เหลือยังไม่ได้กำหนดเป็นมาตรฐาน และใน version
ต่อๆไปอาจไม่ได้อ้าง command นี้
จริงๆอุปกรณ์ไม่ได้เยอะขนาดนี้ถ้าผมใช้ 7segment common A เพราะ mcs-51
มันขับแบบซอร์ซไม่ได้อย่างที่เรารู้กัน วงจรก็เลยใหญ่อย่างที่เห็น แต่ก็เอาเหอะอันแรก
เอาอะไรมากชิมิ
มาดู specification กันก่อน
Controller :at89c2051 @11.0592-MHz
Baud :9600-bps
Fifo Buffer :32-byte
Display Data Register :8-byte
Character Gen. Register :n/a
Scan frq. :~500Hz
Support Ascii :0-9
รายละเอียดกลุ่มคำสั่งมีดังนี้
Command pre fix :0xfe
Home Address :0x01
Clear Display :0x02
Display Off :0x03
Display On :0x04
Dot Control :0x09
Define Bin :0x0c
Rotate Display Register Left :0x0d
Rotate Display Register Right :0x0e
CG-Ram Address :0x40 -->> n/a
DD-Ram Address :0x80
Home Address
กำหนดให้ DD-Ram Address ไปอยู่ในตำแหน่ง 0 หรือ Digit1
--ตัวอย่าง--
[0xfe]-[0x01]
Clear All Display Register
เคลียร์ Display Register ทั้ง 8byte พร้อมกับ
กำหนดให้ DD-Ram Address ไปอยู่ในตำแหน่ง 0 หรือ Digit1
--ตัวอย่าง--
[0xfe]-[0x02]
Display Off
ปิดการแสดงผล ไม่มีผลกับ Display Register
--ตัวอย่าง--
[0xfe]-[0x03]
Display On
เปิดการแสดงผล ไม่มีผลกับ Display Register
--ตัวอย่าง--
[0xfe]-[0x04]
Dot Control Page1
ใช้ส่งข้อมูลเฉพาะ Dot-segment ของ Display Register ทั้ง 8-byte
--ตัวอย่าง--
[0xfe]-[0x09]-[xxxxxxxx]
Dot-On x=1
Dot-Off x=0
บิต 0 เป็น Dot ของ Digit1 ไล่ขึ้นไปจนถึง Digit8
Define Bin
ใช้ส่งข้อมูลแบบ Binary เช่นต้องการตัวอักษรแปลกๆ ที่เราสร้างขึ้นเอง
หลังกระทำคำสั่ง DD-Ram Address+1
--ตัวอย่าง--
[0xfe]-[0x0c]-[xxxxxxxx]
Segment-On x=1
Segment-Off x=0
Bit0 = Segment-A
Bit1 = Segment-B
Bit2 = Segment-C
Bit3 = Segment-D
Bit4 = Segment-E
Bit5 = Segment-F
Bit6 = Segment-G
Bit7 = Segment-Dot
Rotate Display Register Left
ใช้หมุนข้อมูล Display Register ไปทาง ซ้ายหนึ่งครั้ง ต่อคำสั่ง ไม่มีผลกับ DD-Ram Address
--ตัวอย่าง--
[0xfe]-[0x0d]
Rotate Display Register Right
ใช้หมุนข้อมูล Display Register ไปทาง ขวาหนึ่งครั้ง ต่อคำสั่ง ไม่มีผลกับ DD-Ram Address
--ตัวอย่าง--
[0xfe]-[0x0e]
DD-Ram Address
ใช้กำหนด DD-Ram Address
--ตัวอย่าง--
[0xfe]-[0x80... thru 0x87]
การใช้งาน
เราสามารถส่งตัวเลข 0-9 ที่เป็นรหัส ascii ไปแสดงผลได้ทันที นอกเหนื่อจากนี้จะไม่มีผล
หรือข้อมูลจะถูกละทิ้งไป ในทุกๆครั้งที่ส่งข้อมูลไปแสดงผล display buffer address จะ
เพิ่มขึ้นเองอัตโนมัติ รวมทั้งคำสั่ง define bin ด้วย ที่เหลือศึกษาได้จาก code ครับ
Source Code v1.0
ไม่มีความคิดเห็น:
แสดงความคิดเห็น