ขั้นแรกเรามาทำความเข้าใจหลักการใช้งาน 16x2 LCD ตัวนี้กันก่อน ขาสัญญาณที่ใช้งานนั้นมีขาสำคัญอยู่ได้แก่ RS, RW, E และ D มีการใช้งาน ดังนี้
RS เป็น 1 คือเก็บข้อมูล เป็น 0 คือเก็บคำสั่ง
RW เป็น 1 คืออ่านข้อมูล เป็น 0 คือเขียนข้อมูล
E ใช้กำหนดให้ 16x2 LCD รับค่าสัญญาณมาทำงานที่ขอบขาลง
D คือขาสัญญาณใช้ส่งข้อมูลไปยัง 16x2 LCD มีข้อมูล 2 แบบ คือส่งคำสั่งกับส่งข้อมูลเกี่ยวกับตัวอักษร แต่ในการใช้งานจริงมีการใช้งาน 2 mode ได้แก่ 4-bit mode และ 8-bit mode
4-bit mode ใช้ขาสัญญาณ 4 เส้นส่งข้อมูลได้ทีละ 4 bits
8-bit mode ใช้ขาสัญญาณ 8 เส้นส่งข้อมูลได้ทีละ 4 bits
ในที่นี้เราใช้ 4-bit mode ต่อวงจรดังรูปภาพด้านล่างนี้
จากรูปเราใช้ขา 2 ถึงขา 5 ของ arduino uno r3 สำหรับส่งสัญาณไปยัง 16x2 LCD ใช้ 4 เส้นเพราะเป็น 4-bit mode
เรามาทำความรู้จักหน่วยความจำใน 16x2 LCD กัน
1. DDRAM ใช้เก็บตัวอักษรที่จะไปแสดงบนหน้าจอ คือถ้าเขียนข้อมูลลงไปในหน่วยความจำตัวนี้ มันจะเอาข้อมูลไปเทียบกับ ascii chart แล้วดึงตัวอักษรมาแสดงบนหน้าจอ
2. CGRAM ใช้เก็บตัวอักษรเฉพาะ เราสามารถสร้างอักษรเองและเอาไปเก็บในหน่วยความจำตัวนี้ได้ สำหรับ 16x2LCD ตัวนี้เก็บได้ 8 ตัวอักษร
วิธีการประดิษฐ์ตัวอักษรใช้เอง
1. จากรูปคือเรามีการดำเนินการ 3 ส่วนคือ DDRAM data, CGRAM address และ CGRAM data
2. ให้เขียนข้อมูลไปยัง DDRAM data จากนั้นเขียนคำสั่งไปยัง CGRAM address โดยที่ 3-bit แรก (0-3) ของ DDRAM address และบิตที่ 3-5 ของ CGRAM address ตรงกัน ตามรูปด้านบน ในขั้นนี้คือการกำหนดตำแหน่งของ CGRAM ว่าเราจะสร้างอักษรใหม่ลงไปตรงไหน บิตที่ 3-5 ของ CGRAM คือหมายเลขที่อยู่ของ CGRAM ที่เราจะเขียน ส่วน DDRAM data กำหนดเพื่อเก็บอักษรที่เราสร้างเองไปแสดงบนหน้าจอ
3. เขียนข้อมูลลง CGRAM data ในที่นี้ 16x2 LCD เราเป็นแบบ 5x8 dot เวลาเราสร้างเรากำหนดไปว่าจุดไหนดำให้เป็น 1 ดูตามรูปด้านบน บิตที่ 0-2 คือเลขบอกบรรทัดของอักษรที่เราจะสร้าง จากรูปด้านบนเราเว้นบรรทัดสุดท้ายไว้สำหรับ cursor position
4. เวลาเขียนข้อมูลลง CGRAM data จะเขียนไปทีละ 8-bit จำนวน 8 ครั้งติดต่อกันเพื่อสร้างอักษร 1 ตัวโดยไม่ต้องเขียนคำสั่ง CGRAM address ใหม่เพราะมันจะเพิ่มขึ้นทีละ 1 เองโดยอัตโนมัติ
5. จากรูปด้านบน * คือไม่มีผล ไม่ว่าจะเป็น 0 หรือ 1
วิธีทำให้คำว่า บางกอก แสดงบนหน้าจอ
1. สร้างตัวอักษร บ โดยใช้เว็บนี้ช่วย http://www.quinapalus.com/hd44780udg.html เราจะได้ข้อมูลสำหรับ CGRAM data ไว้สร้างอักษรที่เราต้องการ
2. กำหนดตำแหน่งของ cursor
3. ทำตามวิธีการประดิษฐ์ตัวอักษรใช้เองแล้วจะได้อักษรที่เราต้องการมาแสดงบนหน้าจอ
4. ทำซ้ำตั้งแต่ข้อ 1 โดยเปลี่ยนเป็นตัวอักษรที่เหลือ คือกำหนดตำแหน่ง cursor ใหม่ ส่วน DDRAM data ให้บวก 1 เพิ่มขึ้นเพราะตำแหน่งเดิมถูกเขียน บ ไปแล้ว ส่วน CGRAM address ให้บวก 8 เพราะในการสร้างอักษรตัวนึงใช้การส่งข้อมูล 8 ครั้ง ดูตามรูปด้านบน ทำให้ตำแหน่งของ CGRAM address เพิ่มขึ้น 8 เพื่อใช้เขียนอักษรตัวใหม่
ขอบคุณมากๆค่ะ จากรุ่นน้อง รุ่น 55
ตอบลบขอบคุณเช่นกันค่า :)
ลบขอบคุณมากๆค่ะเป็นประโยชน์มากๆค่ะ
ตอบลบขอบคุณนะคะ <3
ลบ