วันอาทิตย์ที่ 7 กุมภาพันธ์ พ.ศ. 2559

arduino uno 16x2 LCD แสดงภาษาไทย

  เราจะมาสอนใช้ 16x2 LCD Hitachi HD44780 ให้แสดงอักษรภาษาไทยกันโดย  เราจะทำให้บรรทัดแรกแสดงคำว่า Hello Thailand! ส่วนบรรทัดที่สองให้แสดงคำว่า บางกอก
 
  ขั้นแรกเรามาทำความเข้าใจหลักการใช้งาน 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 เพื่อใช้เขียนอักษรตัวใหม่


4 ความคิดเห็น: