CONTACT | TEL : 02-728-3440, EMAIL : SALES@ASTRONLOGIC.COM
การใช้งานบอร์ด WIZARD FLEX-A01 เพื่อควบคุมโมดูล LCD ตอนที่ 1

» การใช้งานบอร์ด WIZARD FLEX-A01 เพื่อควบคุมโมดูล LCD ตอนที่ 1

อุปกรณ์สำหรับแสดงผลในปัจจุบันมีหลายแบบด้วยกัน LCD ก็เป็นอุปกรณ์แสดงผลประเภทหนึ่งที่ได้รับความนิยมอย่างแพร่หลาย ในส่วนนี้เป็นการยกตัวอย่างการใช้งาน FPGA เพื่อควบคุมจอแสดงผลLCD แบบ 16 ตัวอักษร 1 แถว

สำหรับบทความนี้จะแบ่งออกเป็น 2 ตอน ซึ่งตอนแรกจะอธิบายถึงหลักการทั่วไปและคำสั่งที่ใช้ควบคุมโมดูล LCD และในตอนที่ 2 จะเป็นการเชื่อมต่อบอร์ด WIZARD FLEX-A01 เข้ากับโมดูล LCD และ การเขียนภาษา VHDL สำหรับควบคุมการแสดงผลของโมดูล LCD

ส่วนประกอบหลักในโมดูล LCD
1.ตัวควบคุม (Controller) เป็นอุปกรณ์สำหรับรับข้อมูลที่จะส่งมาจากอุปกรณ์ภายนอกเพื่อควบคุมการทำงานภายในโมดูล LCD เช่นการลบจอภาพ , การแสดงตัวอักษร หรือการเลื่อนเคอร์เซอร์ เป็นต้น
2.ตัวขับ (Driver) เป็นอุปกรณ์รับข้อมูลจากตัวควบคุม (Controller) เพื่อขับให้ตัวแสดงผลแสดงข้อมูลตามที่กำหนด
3.ตัวแสดงผล (Dot Matrix Display) เป็นอุปกรณ์แสดงผลให้สามารถมองเห็นเป็นตัวอักษรหรืออักขระ ซึ่งภายในชุดแสดงผลจะเป็นผลึกเหลวที่สามารถแสดงผลให้เห็นโดยอาศัยการเปิดและปิดตัวเองกับแสงจากภายนอก

โมดูล LCD แบบ 16 ตัวอักษร 1 บรรทัด
สำหรับ LCD ที่อยู่บนบอร์ด WIZARD FLEX-A01 จะเป็น LCD แบบ 16 ตัวอักษร 1 บรรทัด จะมีขาให้ต่อใช้งานทั้งหมด 14 ขา สามารถแสดงตำแหน่งการจัดขาของโมดูล LCD ได้ดังรูปที่ 1

รูปที่ 1 LCD แบบ 16 ตัวอักษร 1 แถวและการจัดตำแหน่งขา

โดยแต่ละขาจะมีหน้าที่การทำงานที่แตกต่างกันดังนี้
ขาที่ 1 (Vss) : กราวด์
ขาที่ 2 (Vdd) : ไฟเลี้ยง +5V
ขาที่ 3 (Vo) : ขาอินพุทสำหรับรับแรงดันจากภายนอกเพื่อปรับความเข็มของการแสดงผล
ขาที่ 4 (RS) : ขาอินพุทใช้สำหรับบอกตัวควบคุมภายใน LCD ว่าในขณะนั้นเป็นข้อมูลสำหรับแสดงผลหรือเป็นคำสั่งสำหรับเซตค่าต่างๆภายใน LCD โดยที่หากกำหนดให้ RS เป็นลอจิก "0" ข้อมูลที่ส่งมาจะเป็นคำสั่งและถ้ากำหนดให้ RS เป็นลอจิก "1" ข้อมูลที่ส่งมาจะเป็นข้อมูลสำหรับการแสดงผล
ขาที่ 5 (R/W) : ขาอินพุทสำหรับเลือกว่าจะทำการอ่านหรือเขียนข้อมูลแก่ LCD หากกำหนดให้ขา R/W เป็นลอจิก "0" จะเป็นการเขียนข้อมูลให้แก่ LCD และหากกำหนดกำหนดให้ขา R/W เป็นลอจิก "1" จะเป็นการอ่านข้อมูลจาก LCD
ขาที่ 6 (E) : ขาอินพุทสำหรับแอนนาเบิลให้คอนโทรลเลอร์ใน LCD ทำงานตามข้อมูลที่ส่งไป
ขาที่ 7 ถึงขาที่ 14 (DB0-DB7) : ขาข้อมูลขนาด 8 บิตใช้สำหรับส่งผ่านข้อมูลระหว่าง LCD กับอุปกรณ์ภายนอก

คำสั่งควบคุมโมดูล LCD
ในการเขียนคำสั่งให้แก่โมดูล LCD จะต้องกำหนดให้สัญญาณ R และ R/W เป็นลอจิก "0" จากนั้นจึงส่งคำสั่งออกไปที่บัสข้อมูลและทำการหน่วงเวลาเพื่อให้ตัวคอนโทรลใน LCD ตอบสนองกับคำสั่งที่จะส่งไป หลังจากนั้นจึงกำหนดให้สัญญาณ E เป็นลอจิก "1" เพื่อแอนนาเบิลให้ LCD ตอบสนองกับคำสั่งและคำสั่งที่ใช้ควบคุม LCD ที่สำคัญมีดังนี้

1.คำสั่งเคลียร์ตัวแสดงผล (Clear Display)
เป็นคำสั่งใช้สำหรับเขียนข้อมูลช่องว่างหรือ SPACE (ASCII A0H) เข้าไปใน DDRAM ทั้งหมดและเมื่อตัวควบคุมทำคำสั่งนี้ ตัวควบคุมจะทำการกำหนดแอดแดรสของ DDRAM เป็น 0 และเคอร์เซอร์จะกลับไปอยู่ตำแหน่งบนสุดซ้ายมือของจอแสดงผลจะมีข้อมูลคำสั่งเป็น 01H โดยมีรูปแบบคำสั่งดังนี้

2.คำสั่ง Return Home
เป็นคำสั่งสำหรับให้เคอร์เซอร์เคลื่อนที่กลับไปยังตำแหน่งซ้ายสุดบนจอแสดงผล โดยที่ข้อมูลในจอภาพไม่เปลียนแปลง ข้อมูลคำสั่งจะเป็น 02H หรือ 03H ก็ได้ โดยมีรูปแบบคำสั่งดังนี้

3.คำสั่งเลือกโหมดการป้อนข้อมูล (Entry Mode Set)
จะเป็นคำสั่งการเลือกโหมดการป้อนข้อมูล ซึ่งข้อมูลคำสั่งสำหรับการเลือกโหมดการป้อนข้อมูลจะอยู่ในช่วง 04H ถึง 07H โดยมีรูปแบบคำสั่งดังนี้

โดยที่
บิต I/D เป็นบิตที่ใช้กำหนดว่า เมื่อเขียนหรืออ่านข้อมูลแล้วจะทำให้แอดแดรสของ DDRAM เพิ่มขึ้นหรือลดลงหนึ่งแอดแดรส หากกำหนดให้ I/D เป็นลอจิก "1" แอดแดรสของ DDRAM จะเพิ่มขึ้นและหากกำหนดให้เป็นลอจิก "0" แอดแดรส DDRAM จะลดลง
บิต S เป็นบิตที่ใช้สำหรับกำหนดลักษณะของการแสดงผลเมื่อมีการป้อนข้อมูล หากกำหนดให้บิต S เป็นลอจิก "1" เมื่อมีข้อมูลใหม่ปรากฎบนจอแสดงผลแล้วตัวเคอร์เซอร์จะอยู่กับที่ตัวอักษรข้อมูลเดิมจะถูกเลื่อนไปทางซ้ายหากกำหนดให้บิต S เป็นลอจิก "0" ข้อมูลตัวอักษรจะอยู่กับที่และตัวเคอร์เซอร์จะเลื่อนไปทางขวา

4.คำสั่งควบคุมการแสดงผล (Display ON/OFF Control)
เป็นคำสั่งสำหรับควบคุมการเปิด-ปิดจอแสดงผลและควบคุมเคอร์เซอร์บนจอแสดงผล โดยมีค่าข้อมูลคำสั่งสำหรับควบคุมการแสดงผลจะมีค่าตั่งแต่ 08H ถึง 0FH (8 รูปแบบคำสั่ง) มีรูปแบบคำสั่งดังนี้

โดยที่
บิต B เป็นบิตที่ใช้สำหรับควบคุมการกระพริบของเคอร์เซอร์ถ้ากำหนดให้ B เป็นลอจิก "1" เคอร์เซอร์จะกระพริบและหากกำหนดให้ป็นลอจิก "0" ตัวเคอร์เซอร์จะไม่กระพริบ
บิต C จะใช้สำหรับควบคุมการแสดงตัวเคอร์เซอร์บนจอแสดงผล หากกำหนดให้บิต C มีค่าเป็นลอจิก "1" จะเป็นการกำหนดให้แสดงตัวเคอร์เซอร์และหากกำหนดให้เป็นลอจิก "0" จะไม่แสดงตัวเคอร์เซอร์หรือปิดเคอร์เซอร์นั้นเอง
บิต D ใช้สำหรับควบคุมการเปิดปิดจอแสดงผลซึ่งหากกำหนดให้บิต D เป็นลอจิก "0" จะเป็นการปิดจอแสดงผลและหากกำหนดให้เป็นลอจิก "1" จะเป็นการเปิดจอแสดงผล

5.คำสั่งควบคุมการเลื่อนเคอร์เซอร์และข้อมูลตัวอักษร (Cursor or Display Shift)
เป็นคำสั่งสำหรับกำหนดให้ตำแหน่งเคอร์เซอร์หรือข้อมูลเกิดขึ้นทางซ้ายหรือขวาสำหรับคำสั่งนี้จะมีรหัสคำสั่งตังแต่ 10H ถึง 1FH โดยมีรูปแบบคำสั่งดังนี้

โดยที่

S/C
R/L
ลักษณะการเลื่อน
0
0
เลื่อนเคอร์เซอร์จากตำแหน่งเดิมไปทางซ้าย 1 ตำแหน่ง
0
1
เลื่อนเคอร์เซอร์จากตำแหน่งเดิมไปทางขวา 1 ตำแหน่ง
1
0
เลื่อนตัวอักษรที่เกิดขึ้นใหม่ไปทางซ้าย
1
1
เลื่อนตัวอักษรที่เกิดขึ้นใหม่ไปทางขวา

 

6.คำสั่งกำหนดฟังก์ชันการทำงาน (Function Set)
เป็นคำสั่งสำหรับกำหนดลักษณะการส่งผ่านข้อมูลเป็นแบบ 8 บิตหรือ 4 บิต กำหนดจำนวณบรรทัดการแสดงผลและความละเอียดของตัวอักษรในการแสดงผล โดยมีรูปแบบคำสั่งดังนี้

โดยที่
บิต F เป็นบิตสำหรับเลือกขนาดความละเอียดของตัวอักษรที่จะแสดงผล หากกำหนดให้บิต F มีค่าเป็นลอจิก "0" จะเป็นการแสดงผลแบบ 5x7 จุด และหากกำหนดค่าเป็นลอจิก "1" การแสดงผลจะเป็นแบบ 5x10 จุด
บิต N เป็นบิตสำหรับกำหนดจำนวนบรรทัดในการแสดงผลหากกำหนดบิต N ให้มีค่าเป็นลอจิก "0" จะเป็นการแสดงผลแบบ 1 บรรทัด และหากกำหนดให้เป็นลอจิก "1" การแสดงผลจะได้มากว่า 2 บรรทัด บิต DL เป็นบิตสำหรับกำหนดจำนวนบิตที่จะส่งผ่านข้อมูล หากกำหนดให้บิต DL มีค่าเป็นลอจิก "0" จะเป็นการกำหนดให้ส่งผ่านข้อมูลแบบ 4 บิต และหากกำหนดให้เป็นลอจิก "1" เป็นการกำหนดให้การส่งผ่านข้อมูลเป็นแบบ 8 บิต

7.คำสั่งเลือกแอดแดรสของ CGRAM (Set CGRAM Address)
จะเป็นการกำหนดแอดแดรสใน CGRAM โดยจะต้องทำการกำหนดแอดแดรสก่อนเขียนหรืออ่านข้อมูลจาก CGRAM โดยที่แอดแดรสของ CGRAM จะอยู่ระหว่าง 00H ถึง 3FH โดยมีรูปแบบคำสั่งดังนี้

8.คำสั่งเลือกแอดแดรสของ DDRAM (Set DDRAM Address)
เป็นคำสั่งสำหรับกำหนดค่าแอดแดรสใน DDRAM ก่อนที่จะทำการอ่านข้อมูลหรือเขียนข้อมูลจาก DDRAM โดยที่แอดแดรสของ DDRAM จะขึ้นอยู่กับการกำหนดค่า N ในคำสั่งกำหนดฟังก์ชันการทำงานด้วย หากกำหนดค่า N เป็นลอจิก "0" (1 บรรทัด) แอดแดรสของ DDRAM จะอยู่ระหว่าง 80H ถึง 0CFH และหากกำหนดค่า N เป็นลอจิก "1" (2 บรรทัด) ค่าแอดแดรสของ DDRAM จะมี 2 ช่วงคืออยู่ระหว่าง 80H ถึง 87H และ C0H ถึง C7H โดยมีรูปแบบคำสั่งดังนี้

การเชื่อมต่อและควบคุมจอแสดงผลแบบ LCD
เมื่อเริ่มต้นใช้งาน LCD จะต้องกำหนดค่าให้แก่ขา RS ของโมดูล LCD เพื่อให้คอนโทรลเลอร์ภายใน LCD รู้ว่าข้อมูลต่อไปที่จะได้รับจากอุปกรณ์ภายนอกนั้นเป็นรหัสคำสั่งหรือข้อมูลที่จะแสดงผล จากนั้นจะเป็นจะเป็นการส่งข้อมูลมาที่ขาข้อมูลของ LCD ขั้นตอนต่อไปจะต้องส่งสัญญาณพัลซ์ให้แก่ขา E เพื่อแอนนาเบิลให้ LCD รับข้อมูลจากบัสข้อมูลเข้าไป โดยพัลซ์ที่ป้อนให้แก่ขา E ต้องเป็นพัลซ์ขอบขาลง แสดงความสัมพันธ์ของขา RS , R/W และ E เพื่อการอ่านและเขียนข้อมูลกับโมดูล LCD ดังตารางที่ 1

ตารางที่ 1 ความสัมพันธ์ของขา RS , R/W และ E

RS
R/W
E
การทำงาน
0
0
เขียนคำสั่งให้แก่ LCD
0
1
อ่านสถานะจาก LCD
1
0
เขียนข้อมูลให้แก่ LCD
1
1
อ่านข้อมูลจากแก่ LCD

 

ในตอนต่อไปคุณจะได้พบกับการเชื่อมต่อ LCD เข้ากับบอร์ด WIZARD FLEX-A01 และการเขียนโปรแกรมภาษา VHDL เพื่อควบคุมการแสดงผลของ LCD