Login | thai-learning | Privacy Policy | About Us |

Thai Learning | ทฤษฎี IS ขั้นสูง | เว็บไทย | สารสนเทศวิทยานิพนธ์ | หนังสือรามคำแหงทั้งหมด | เกี่ยวกับผู้จัดทำ | บทกลอน |
วิชาที่เรียน 1/2555
   เมนูหลักวิชาเรียน 1/2555
   การโปรแกรมเว็บสารสนเทศ ฯ
   การโปรแกรมงานภูมิศาสตร์ ฯ
   โปรแกรมสำหรับงานสารสนเทศ
   อินเตอร์เน็ตและการบริการ สารสนเทศบนเว็บ
   บรรยากาศ เทอม 1-2555
โปรแกรมที่ผมพัฒนาครับ
   เมนูหลักโปรแกรมที่ผมพัฒนา
   ถอดรหัสผ่าน M$-Access
   ระบบการเข้าเรียนและให้คะแนน
   การทำงานของ Adder Logic
   ปรับระดับเสียงโวลุ่ม ด้วย CLI
   เกมส์เลื่อนภาพแสนสนุก vb6
    โปรแกรมจับเวลา การนำเสนอผลงานวิชาการ
บทความที่ผมเขียนครับ
   เมนูบทความ
   ภาษาซีสำหรับผู้เริ่มต้น
   ไมโครคอนโทรเลอร์เบื้องต้น
   ไมโครคอนโทรลเลอร์จำลอง
   การกำเนิดกระแสไฟฟ้าอย่างง่าย
   ควบคุมแรงดัน 0-220 โวลท์
   Graphics LCD ด้วย CCSC
   การออกแบบ PCB ด้วย Orcad
   การออกแบบ PCB ด้วย Protel
   ไพธอนส่งเมล์ด้วย GPRS
   ไพธอนควบคุม LCD ผ่าน LPT
   ควบคุม LPT ด้วย Labview
   อิมเมจโปรเซสซิ่ง ตอน 1/3
   อิมเมจโปรเซสซิ่ง ตอน 2/3
   อิมเมจโปรเซสซิ่ง ตอน 3/3
   ภาษาซีบนลินุกซ์สมองกลฝังตัว
   การใช้งาน MinGW เบื้องต้น
   ภาษาซี ARM-LPC2368
   ออกแบบ FPGA ด้วย Schematic
   ออกแบบ FPGA ด้วยภาษา VHDL
   ออกแบบ PCB เทคนิค Dryfilm
   เขียนโปรแกรม Python GUI
   การติดตั้ง NumPy 1.6.1
   เขียนไพธอนถอดรหัส MDB
   วิชวลเบสิค ควบคุมกล้อง
   สังเคราะห์ภาพกราฟิก pov-ray
   อิมพอร์ท MySQL ด้วย BigDump
   ติดตั้ง postgresql และ phppgadmin บน centos linux
   การใช้งานเธรดด้วยภาษา PHP
   การสังเคราะห์สีให้ไวยากรณ์ภาษา
   การสร้าง Search Engine
   เขียนไพธอน Client/Server
   การสร้างพาทิชั่นที่ใหญ่กว่า 3TB บนลินุกซ์ (Ubuntu)
   การรันสคริปต์ CGI ด้วยภาษาไพธอน
   การใช้งานคำสั่ง DD บน Ubuntu - Linux
   การใช้งาน Raspberry Pi
   การเอ็กซีคิวส์ + การจัดเรียงแอพฯในลินุกซ์
   X11 ด้วย Xming และ Putty
   TITAN5 บน Ubuntu - Linux
   รหัสจังหวัดทั่วโลก + เรดาร์
   การควบคุมเว็บบราวเซอร์ผ่าน SELENIUM ด้วยภาษาไพธอน
โปรแกรมภาษา
   เมนู VB-Classic
   ฟังก์ชั่น Visual Basic
   คำสั่ง Visual Basic
   ตัวแปรภาษาไพธอน (ขั้นสูง)
   โมดูลต่าง ๆ ภายในภาษาไพธอน
ข่าวสารไอที
   กูเกิ้ลเปิดตัว Tablet 7 นิ้ว
   อินเดีย IIT เปิดตัว Tablet
   RaspBerry PI สมองกลฝังตัว
   คอมพิวเตอร์จิ๋ว
บริการสารสนเทศ
   ไทยเว็บ 2012
   เว็บไทย
   ฐานข้อมูล วิทยานิพนธ์
   รวมคำศัพท์ภาษาไทย
   เคยฟังมั้ย - เพลงมาร์ช มมส
   ประวัติศาสตร์ชาติไทย หลวงปู่ฤาษีลิงดำ
   เพลงน้อมใจปล่อยวาง 1
   เพลงน้อมใจปล่อยวาง 2
   เพลงน้อมใจปล่อยวาง 3
เกี่ยวกับเรา
   เกี่ยวกับผู้ก่อตั้ง
   บทกลอนที่ผมแต่งครับ..
   แลกลิงค์กับเรา ที่นี่
   รายละเอียดแม่ข่าย
   ดาต้าเซนเตอร์ (Data Center)
   เงื่อนไขการใช้งาน

  
 

การเขียนอักขระลงบน 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






All trademarks and trade names are the property of their respective owners and used here for identification purposes only.
Privacy Policy | Terms of service | Report a Policy Violation (0.0054 sec)