การใช้งานจอแสดงผล Character LCD

Download all demo files: clcd.7z

บทนำ

ในคอมพิวเตอร์ ผู้ใช้งานสามารถอ่านข้อความหรือดูรูปภาพได้ผ่านทางจอแสดงผล (Monitor) แบบต่างๆ เช่นจอภาพหลอดสูญอากาศ (Cathode Ray Tube, CRT) จอภาพแบบผลึกเหลว (Liquid-crystal Display, LCD) และ จอภาพแบบ LED ที่ความละเอียดสูง ส่วนระบบสมองกลฝังตัวขนาดเล็ก เช่น Microcontroller จะไม่สามารถเชื่อมต่อกับจอภาพขนาดใหญ่ เพราะไม่มีส่วนควบคุมการแสดงผลเช่น VGA Controller

โมดูลจอแสดงผล LCD ดังรูป 1-1 สามารถแสดงข้อความอย่างง่าย เช่น ข้อความแสดงสถานะ เป็นต้น ข้อมูลตัวเลขจากเซนเซอร์นิยมใช้งานกับระบบสมองกลฝังตัว เนื่องจากเชื่อมต่อได้โดยตรง (สัญญาณดิจิตอล) มีขนาดเล็กและประหยัดพลังงาน

รู้จักกับจอแสดงผล LCD

จอแสดงผล LCD ประกอบด้วยหน้าจอผลึกเหลวที่มีจุดภาพหรือ Pixel ขนาดเล็กและส่วนควบคุมการแสดงผล (LCD Controller) มีหน้าที่ควบคุมการทำงานของหน้าจอ เช่น ลบข้อความบนหน้าจอ เว้นบรรทัด ขึ้นบรรทัดใหม่ และควบคุมการเปิด-ปิดของ Pixel เพื่อแสดงเป็นตัวอักษรหรือรูปภาพ ลักษณะตัวอักษรและภาษา ขึ้นอยู่กับผู้ผลิต LCD Controller เช่น HD44780 จากบริษัท Hitachi สามารถรองรับภาษาอังกฤษและญี่ปุ่น [1] เป็นต้น จอแสดงผล LCD ที่ใช้งานกับ Microcontroller แบ่งตามลักษณะของ Pixelได้สองชนิดคือ แบบตัวอักษร (Character LCD) และแบบรูปภาพ (Graphical LCD) ดังรูป 1-1

รูป 1-1 จอแสดงผล LCD แบบ Characterและ Graphical [2]

รูป 1-1 จอแสดงผล LCD แบบ Characterและ Graphical [2]

เมื่อเปรียบเทียบกับ 7-Segment จอแสดงผลแบบ LCD มีจุดเด่นคือ สามารถแสดงได้ทั้งข้อความและตัวเลข ได้มากกว่า 7-Segment และเชื่อมต่อกับ Microcontroller ง่ายกว่า อย่างไรก็ตาม โมดูลจอแสดงผล LCD ที่ติดตั้งหน้าจอแบบต่างๆ และ LCD Controller รวมเข้าไว้ด้วยกันจะมีราคาสูงกว่า 7-Segment

สำหรับข้อความภาษาไทยเนื่องจาก LCD Controller ไม่ได้รองรับตัวอักษรภาษาไทยGraphical LCD จึงเป็นที่นิยม เพราะสามารถใช้รูปตัวอักษรภาษาไทยและมีพื้นที่สำหรับสระกับวรรณยุกต์ หากต้องการแสดงข้อความภาษาไทยใน Character LCD ผู้พัฒนาต้องสร้างตัวอักษรและเก็บไว้ในหน่วยความจำ CGRAM [1],[3] ใน LCD Controller ซึ่งจะไม่กล่าวถึงรายละเอียด

การทดลองแสดงผลผ่านจอ LCD

อุปกรณ์ที่ใช้ในการทดลอง

รูป 2-1 แสดงชุดทดลอง aMG CLCD2 ประกอบด้วยจอแสดงผล LCD แบบตัวอักษร ขนาด 16 x 4 และบอร์ดสำหรับใช้งานกับ STM32F4DISCOVERY เมื่อเชื่อมต่อ aMG CLCD2 กับ STM32F4DISCOVERY และ aMG F4 Connect2 ผู้ใช้งานควรใช้ไฟเลี้ยงจาก Adaptor เพื่อให้จอแสดงผลทำงานได้เต็มที่ (ปกติ STM32F4DISCOVERY สามารถทำงานได้ เมื่อต่อไฟเลี้ยงจากสาย USB)

รูป 2-1 บอร์ด aMG CLCD2

รูป 2-1 บอร์ด aMG CLCD2

การทดลองแสดงข้อความ LCD สองบรรทัด

จุดประสงค์

  • เพื่อให้ผู้ใช้งานเรียนรู้การใช้งาน Character LCD block และ Data Storage block สำหรับแสดงข้อความต่างๆ

ใน Waijung Blockset มี Block ที่เกี่ยวข้องกับการใช้งานโมดูล aMG CLCD2 ซึ่งอยู่ใน library:WaijungBlockset / Hardware Modules / Character LCD มีดังนี้
Character LCD Setup Block ในรูป 2-2 ทำหน้าที่ตั้งค่าการใช้งาน STM32F4DISCOVERY กับโมดูล LCD โดยผู้ใช้สามารถเลือกขาสำหรับส่งคำสั่ง (Control Pin) และข้อความ (Data Pin) ไปยังโมดูล LCD

รูป 2-2 ลักษณะและการตั้งค่าของ Character LCD Setup Block

รูป 2-2 ลักษณะและการตั้งค่าของ Character LCD Setup Block

Character LCD Write Block ในรูป 2 3 ทำหน้าส่งข้อความและตำแหน่งที่จะแสดงข้อความไปยังโมดูล LCD สำหรับตำแหน่งที่จะแสดงข้อความ จะถูกระบุด้วยพิกัด (xpos, ypos) โดยจุด (0, 0) จะอยู่มุมบนซ้ายของหน้าจอเป็นจุดเริ่มต้น และจุดพิกัด (15, 3) จะอยู่มุมล่างขวาซึ่งเป็นจุดสุดท้าย เป็นต้น

รูป 2-3 ลักษณะและการตั้งค่าของ Character LCD Write Block

รูป 2-3 ลักษณะและการตั้งค่าของ Character LCD Write Block

Character LCD Write Block มี Input สำหรับข้อความสำหรับแสดงผล ซึ่งเป็นตัวแปรชนิด String Simulink Model ดังรูป 2 4 ใช้สำหรับแสดงข้อความผ่าน LCD สองบรรทัด โดยใช้ Volatile Data Storage Block ซึ่งอยู่ใน Library: Simulink / Misc / Data Storage

รูป 2-4 Simulink Model สำหรับแสดงข้อความผ่าน LCD สองบรรทัด

รูป 2-4 Simulink Model สำหรับแสดงข้อความผ่าน LCD สองบรรทัด

จากรูป 2-4 ตัวอย่างนี้จะแสดงการใช้งานCharacter LCD Write Blockทั้งสองวิธีดังนี้

  1. เมื่อไม่ใช้ String Buffer ผู้ใช้งานต้องเพิ่ม VolatileData Storage ReadBlock สำหรับอ่านข้อความจากตัวแปร และส่งให้ Character LCD Write Block
  2. เมื่อใช้ String Buffer ผู้ใช้งานต้องกำหนดชื่อตัวแปรที่ต้องการแสดงผลใน Character LCD Write Block

ในตัวแปร str1มีข้อความเริ่มต้น (Initial value) ‘Hello…’ และข้อความ ‘Welcome to Waijung’ สำหรับตัวแปร str2 เมื่อ Download ลงใน STM32F4DISCOVERY และต่อไฟเลี้ยงจาก Adaptor จอ LCD จะแสดงข้อความ ดังรูป 2-5

รูป 2-5 การทดลองแสดงข้อความ LCD สองบรรทัด

รูป 2-5 การทดลองแสดงข้อความ LCD สองบรรทัด

การทดลองแสดงข้อความ LCD สี่บรรทัด

  • เพื่อให้ผู้ใช้งานสามารถแสดงผลจากตัวแปรต่างๆ เช่นค่าที่อ่านได้จาก ADC หรือ ค่าจาก Source Block
  • เพื่อให้ผู้ใช้งานสามารถสร้าง Subsystem Block สำหรับใช้งานแสดงผล LCD ได้

การทดลองที่ผ่านมาจะแสดงข้อความแบบกำหนดไว้คงที่ ซึ่งผู้ใช้ต้องแก้ไขใน Model และ Download ใหม่อีกครั้ง หากต้องการแสดงผลข้อมูลที่การเปลี่ยนแปลงตลอดเวลา เช่น การนับจำนวน นับเวลา หรือการอ่านจากเซนเซอร์ ไม่สามารถใช้กับ Character LCD WriteBlock ได้โดยตรง เนื่องจากชนิดของตัวแปร

Printf Block ซึ่งอยู่ใน Library: WaijungBlockset / Miscใช้ทำหน้าที่แปลงข้อมูลตัวเลข เช่น เลขทศนิยม (Double และ Float) หรือจำนวนเต็มต่างๆ ให้เป็นข้อมูลชนิด String เพื่อนำไปแสดงผล ผู้ใช้งานสามารถดูตัวอย่างการใช้งาน Printf Block ใน Simulink Model ดังรูป 2-6โดยตั้งค่าดังนี้

  • Printf1 Block, printf format: Hello…
  • Printf2 Block, printf format: Waijung Tutorial
  • Printf3 Block, printf format: Index: %d
  • Printf4 Block, printf format: AN5 Value: %1.3f
รูป 2-6 Simulink Blockสำหรับแสดงข้อความผ่าน LCD สี่บรรทัด

รูป 2-6 Simulink Block สำหรับแสดงข้อความผ่าน LCD สี่บรรทัด

ใน Model ประกอบด้วย Subsystem เพื่อทำหน้าที่ตั้งค่าเริ่มต้นสำหรับการใช้งานจอ LCD และแสดงข้อความ ดังรูป 2-8 และ รูป 2-7 ตามลำดับ

รูป 2-7Subsystem Block สำหรับตั้งค่าการใช้งานเริ่มต้น CLCD และกำหนดตัวแปรแบบ String

รูป 2-7 Subsystem Block สำหรับตั้งค่าการใช้งานเริ่มต้น CLCD และกำหนดตัวแปรแบบ String

รูป 2-8 Subsystem Blockสำหรับแสดงข้อความผ่าน LCD สี่บรรทัด

รูป 2-8 Subsystem Blockสำหรับแสดงข้อความผ่าน LCD สี่บรรทัด

รูป 2-9 การทดลองแสดงข้อความ LCD สี่บรรทัด

รูป 2-9 การทดลองแสดงข้อความ LCD สี่บรรทัด

เมื่อ STM32F4DISCOVERY เริ่มทำงาน ตัวเลขในบรรทัดที่สามนับเพิ่มๆ ทุก 1 วินาที และค่าที่อ่านได้จากตัวต้านทานปรับค่าได้จะแสดงการเปลี่ยนแปลง ในบรรทัดที่สี่

การทดลองเปลี่ยนข้อความด้วยปุ่มกด

จุดประสงค์

  • เพื่อให้ผู้ใช้งานเรียนรู้ Subsystem Block แบบ Enabled Subsystem

Simulink Model ดังรูป 2-10 ประกอบด้วย Enabled Subsystem block ซึ่งอยู่ใน Library:Simulink / Ports & Subsystems โปรแกรมจะทำคำสั่งภายในEnabled Subsystem เมื่อมีสัญญาณ ON จากสวิตซ์ปุ่มกดภายใน Enabled Subsystem Block มี Printf Block จำนวน 4 ชุดเพื่อกำหนดข้อความทั้งสี่บรรทัด ดังรูป 2 11 สำหรับ Enabled Subsystem1 Block กำหนดค่าของ String Buffer ดังนี้

  • message1 Block, Printf Format: Embedded system
  • message2 Block, Printf Format: is just a
  • message3 Block, Printf Format: mini computer
  • message4 Block, Printf Format: system 
รูป 2-10 Simulink Model สำหรับการทดลองเปลี่ยนข้อความด้วยปุ่มกด

รูป 2-10 Simulink Model สำหรับการทดลองเปลี่ยนข้อความด้วยปุ่มกด

รูป 2-11 Subsystem Block สำหรับกำหนดข้อความ

รูป 2-11 Subsystem Block สำหรับกำหนดข้อความ

เมื่อ Download Simulink Model ลงใน STM32F4DISCOVERY แล้ว เมื่อกดสวิตซ์ SW1 ข้อความ “FiO boards and WaijungBlockset is for anyone” จะปรากฏเมื่อกดสวิตซ์ SW2 ข้อความ “Embedded system is just a mini computer system” จะปรากฏขึ้นบน LCD ดังรูป 2-12

รูป 2-12 การทดลองแสดงข้อความผ่าน LCD โดยใช้สวิตซ์ปุ่มกด

รูป 2-12 การทดลองแสดงข้อความผ่าน LCD โดยใช้สวิตซ์ปุ่มกด