|
|
 |
|
| |

การเขียนอักขระลงบน LCD Module ด้วยภาษาไพธอน เขียนโดย อ.จักรกฤษณ์ แสงแก้ว สาขาสารสนเทศศาสตร์ คณะวิทยาการสารสนเทศ มหาวิทยาลัยมหาสารคาม
บทความนี้ผู้เขียนนำท่านศึกษาการเขียนอักขระลงบน LCD Module ด้วยภาษาไพธอน
ท่านจะพบว่าไพธอนมีความง่ายต่อการใช้งานและมีประสิทธิภาพสูงมาก หากมองในด้าน
Productivity แล้วภาษาไพธอนประกอบด้วยไลบรารี่สนับสนุนอย่างครอบคลุม และสำคัญที่สุดเป็น
Open Source
ปัจจุบันนี้ไพธอนสามารถรันอยู่บนระบบปฏิบัติการต่าง ๆ อย่างกว้างขวาง กระทั่งมือถือรุ่นใหม่
ๆ ที่สนับสนุนซิมเบียน ท่านสามารถนำไพธอนไปทำงานบนอุปกรณ์อิเล็กทรอนิกส์เหล่านั้นได้
บทความนี้จะทำให้ท่านได้ทราบถึงการทำงานระหว่างอุปกรณ์อิเล็กทรอนิกส์และโปรแกรมภาษา
ผู้เขียนหวังว่าบทความนี้จะกระตุ้นเตือนให้นักพัฒนาบ้านเมืองไทย กล้าที่จะเป็นนักคิด
นักเขียน และนักพัฒนา โดยนำความรู้ที่ตนได้ศึกษาค้นคว้าและบรรจงเขียนด้วยความรู้สึกของท่าน
เพื่อกลั่นเป็นบทความที่ยังประโยชน์ต่อเพื่อนมนุษยชาติ
ผู้เขียนขอเริ่มบทความนี้ โดยมีสาระสำคัญดังต่อไปนี้ :
1. แผนภาพ Schematic ของ LPT และ LCD Module
2. แผนภาพตำแหน่งต่าง ๆ ของ LPT Port
3. ลักษณะทางกายภาพของ LCD Module
4. การเชื่อมต่อสายสัญญาณ
5. แหล่งพลังงานจาก USB Port
6. เชื่อมต่อ USB Port เข้ากับไมโครคอมพิวเตอร์
7. เชื่อมสาย LPT เข้ากับไมโครคอมพิวเตอร์
8. แหล่งจ่ายไฟกระตุ้นให้ LCD Module เริ่มต้นทำงาน
9. ซอฟต์แวร์และไลบรารี่ที่เกี่ยวข้อง
10. เริ่มต้นเขียนโค๊ดด้วยภาษาไพธอน
11. ผลลัพธ์จากการพิมพ์คำสั่ง put2lcd()
12. ทดลองพิมพ์คำสั่ง put2lcd("* electoday.com")
13. สรุป
1. แผนภาพ Schematic ของ LPT และ LCD Module
ในการอ่านแผนภาพ Schematic ท่านต้องมีความรู้พื้นฐานเกี่ยวกับสัญลักษณ์ทางอิเล็กทรอนิกส์พื้นฐาน
หากท่านไม่เข้าใจรายละเอียดของแผนภาพด้านล่างนี้ ขอให้ศึกษาเพิ่มเติมในหัวข้อที่ได้กล่าวไปแล้ว

2. แผนภาพตำแหน่งต่าง ๆ ของ LPT Port

3. ลักษณะทางกายภาพของ LCD Module
เนื่องจาก LCD Module ที่ถูกผลิตขึ้นจากหลายบริษัทจะมีลักษณะทางกายภาพที่แตกต่างกัน
แต่อุปกรณ์เหล่านั้นเป็นไปตามข้อกำหนดของการสร้าง LCD ขนาด 2x16 ด้วยกันทั้งสิ้น

ภาพด้านหน้าของ LCD Module ภาพด้านหลังของ
LCD Module
4. การเชื่อมต่อสายสัญญาณ
สายสัญญาณถูกเชื่อมเข้าด้วยกันระหว่างสัญญาณด้าน LCD Module และ LPT Port
แสดงได้ดังภาพต่อไปนี้

5. แหล่งพลังงานจาก USB Port
เนื่องจากอุปกรณ์อิเล็กทรอนิกส์ทุกชนิดต้องการกระแสไฟฟ้าเพื่อเป็นแหล่งจ่ายกระแสไฟฟ้าให้อุปกรณ์เหล่านั้นสามารถทำงานได้
ผู้เขียนเลือกใช้ไฟเลี้ยงจาก USB Port ท่านสามารถใช้แหล่งกำเนิดกระแสไฟฟ้าจากหม้อแปลงได้เช่นกัน
แสดงปลายสาย USB ดังภาพต่อไปนี้

6. เชื่อมต่อ USB Port เข้ากับไมโครคอมพิวเตอร์
เนื่องจากบทความนี้ผู้เขียนใช้แหล่งกำเนิดพลังงานจาก USB Port ที่มาพร้อมกับเมนบอร์ด
ซึ่งกำเนิดพลังงาน 5 volte กระแสตรง และสามารถนำมาเลี้ยง LCD Module ได้
แสดงการเชื่อมต่อ USB Port เข้ากับไมโครคอมพิวเตอร์ได้ดังนี้

7. เชื่อมสาย LPT เข้ากับไมโครคอมพิวเตอร์
สายสัญญาณที่เชื่อมต่อระหว่างหัวต่อ LPT และ LCD Module ต้องนำมาเสียบเข้ากับ
Parallel Port เพื่อส่งสัญญาณข้อมูลระหว่างอุปกรณ์อิเล็กทรอนิกส์ แสดงได้ดังภาพต่อไปนี้

8. แหล่งจ่ายไฟกระตุ้นให้ LCD Module เริ่มต้นทำงาน
เมื่อท่านป้อนกระแสไฟฟ้าเข้ากับ LCD Module จะทำให้โมดูลดังกล่าวสว่างเป็นแถบสีดำเกิดขึ้น
และเมื่อท่านป้อนสัญญาณดิจิตอลผ่านเข้ามายังอุปกรณ์นี้จะแสดงผลลัพธ์ให้ปรากฎบนจอแสดงผลได้

9. ซอฟต์แวร์และไลบรารี่ที่เกี่ยวข้อง
บทความนี้เลือกใช้ภาษาไพธอนในการอิมพลิเมนต์ (สร้าง) และเนื่องจากวินโดวส์
2000, NT, XP ไม่อนุญาตให้โปรแกรมเมอร์ควบคุมพอร์ตขนานได้โดยตรง ดังนั้นเราจะใช้ไลบรารี่ชื่อ
winioport เพื่อจัดการพอร์ตขนานผ่านภาษาไพธอน ผู้เขียนแสดงรายการโปรแกรมและไลบรารี่ที่ใช้งานในบทความนี้
ดังต่อไปนี้
ติดตั้งโปรแกรมภาษาไพธอน
ติดตั้งโมดูล WinIOport
10. เริ่มต้นเขียนโค๊ดด้วยภาษาไพธอน
| ซอร์สโค๊ด
: การแสดงผลอักขระให้ปรากฎบนจอ LCD Module ผ่านพอร์ตขนาน |
from
winioport import *
import time
def delay():
time.sleep(0.1) # 0.1 second delay
def enable(): Initial_out(1) # E goes
high.
def disable(): Initial_out(0) # E goes
low.
def write(): Auto_Feed(0) # RW goes
low -> write to display
def instrreg(): Data_Strobe(0) # RS
goes low -> DATA register selected
def datareg(): Data_Strobe(1) # RS
goes high -> INSTRUCTION register selected
def send_instruction_to_LCD(commnd):
disable()
write()
instrreg()
pportOut(commnd)
enable()
disable()
def send_data_to_LCD(char):
disable()
write()
datareg()
pportOut(char)
enable()
disable()
def interface_8-bit_1_line_display():
send_instruction_to_LCD(48)
def interface_8-bit_2-line_display():
send_instruction_to_LCD(56)
def Shift_display_left(times = 1):
for i
in range(times):
send_instruction_to_LCD(24)
def Shift_display_right(times = 1):
for i
in range(times):
send_instruction_to_LCD(28)
def Move_cursor_left(times = 1):
for i
in range(times):
send_instruction_to_LCD(16)
def Move_cursor_right(times = 1):
for i
in range(times):
send_instruction_to_LCD(20)
def Display_ON_with_block_cursor():
send_instruction_to_LCD(15)
def Display_ON_with_underline_cursor():
send_instruction_to_LCD(15)
def Display_ON_without_cursor():
send_instruction_to_LCD(15)
def Display_ON_without_cursor():
send_instruction_to_LCD(12)
def Display_OFF():
send_instruction_to_LCD(8)
def Cursor_home():
delay()
send_instruction_to_LCD(2)
delay()
delay()
def Clear_display():
delay()
send_instruction_to_LCD(1)
delay()
delay()
def Set_DDRAM_address(adrs):
"Set DDRAM address."
send_instruction_to_LCD(128 + adrs)
def Set_CGRAM_address(adrs):
"Set CGRAM address."
send_instruction_to_LCD(64 + adrs)
def Entry_mode_set(incr = 1, shift
= 0): # default: increase cursor position, no shift
"Entry mode set."
cmmnd = 0x4
if incr: cmmnd |= 0x2
if shift:
cmmnd |= 0x1
send_instruction_to_LCD(cmmnd)
def Put_String(strng):
for i in strng:
send_data_to_LCD(ord(i))
def put2lcd(text):
import pyLCD
interface_8-bit_1_line_display()
Entry_mode_set()
Display_ON_without_cursor()
Cursor_home()
Put_String(text)
>> put2lcd("Thai Python !!") |
11. ผลลัพธ์จากการพิมพ์คำสั่ง put2lcd()
จากตัวอย่างด้านบนเราได้เขียนฟังก์ชั่นเพื่อควบคุม LCD Module และสร้างฟังก์ชั่นหลักคือ
put2lcd() เพื่อนำไปใช้งานได้อย่างสะดวกรวดเร็ว ดังนั้นผลลัพธ์จากการเรียกใช้คำสั่ง
put2lcd("Thai Python !!") สามารถแสดงผลลัพธ์ได้ดังนี้
12. ทดลองพิมพ์คำสั่ง put2lcd("* electoday.com")
เนื่องจากเราได้สร้างฟังก์ชั่น put2lcd() เอาไว้แล้วในตอนต้น ดังนั้นเมื่อเราเรียกใช้งานฟังก์ชั่นนี้
จะหมายถึงการป้อนข้อความเพื่อเขียนลงบน LCD Module ผ่านพอร์ตขนาน ซึ่งผลลัพธ์สามารถแสดงได้ดังภาพต่อไปนี้

13. สรุป
บทความนี้ได้นำท่านศึกษาการเขียนข้อความลงบน LCD Module ด้วยภาษาไพธอน ท่านจะพบว่าภาษาไพธอนเป็นภาษาที่มีประสิทธิภาพสูง
และเป็น Open Source กล่าวคือท่านไม่ต้องจ่ายค่าลิขสิทธิ์ซอฟต์แวร์ นอกจากนั้นไพธอนยังสามารถรันบนระบบปฏิบัติการต่าง
ๆ ได้อย่างกว้างขวาง ผู้เขียนต้องการให้เยาวชนในบ้านเมืองไทย เรียนรู้และใช้งานภาษาไพธอนให้เก่ง
ให้ลึก และยังหวังต่อไปว่าบทความนี้จะกระตุ้นเตือนให้เพื่อน ๆ น้อง ๆ เป็นคนกล้าคิด
กล้าทำ กล้าตัดสินใจ และที่สำคัญ เป็นคนดีของสังคม ร่วมเป็นแรงใจให้กับนักพัฒนาชาวไทยทุกท่าน
"เอ็นโปรเท็ค ประเทศไทย"
แหล่งอ้างอิง
http://www.ipstack.co.kr/bbs/data/down/lcd16x2_lpt_sch.gif
|
|
|

|
|