บทความทั่วไป ของ OpenFog

ตอนที่ 3. - โดย Tumrobot

ลดจำนวน Pin สำหรับเชื่อมต่อ LCD Character Display

พอดีได้มีโอกาส ออกแบบระบบ Home Control ที่มีความสามารถในการควบคุมทั้ง Input และ Output ที่จำเป็นต้องใช้ PIN ที่หลากหลายช่อง แล้วพบว่าด้วยข้อจำกัดของ MCU ที่ใช้งานคือ PIC18F458-I/P มีจำนวน I/O ให้เพียงแค่ 33 Pin ไหนจะต้องให้ I/O อื่นๆ ทำงานหลักๆ เช่น TX,RX หรือติดต่อกับ Pin ควบคุม XPORT แล้วไหนจะต้องติดต่อกับ DS1302 และอุปกรณ์อื่นๆ เช่น Wireless Module, Motion Sensor หรืออื่นๆ อีกก็แล้วแต่ ทำให้ Pin ที่เราต้องการใช้งานลดจำนวนน้อยลงไปอีก

   

ถาม ทำไมต้องใช้ PIC18F458-I/P ทำไมไม่เปลี่ยนไปใช้ PIC เบอร์อื่น ที่มี I/O มากกว่านี้จะได้ไม่ต้องกังวลเรื่องการใช้งานของ I/O

คำตอบ เนื่องจากว่า PIC18F458-I/P นี้สามารถทำการ Update Firmware Over Ethernet ได้นั่นเอง และ PIC เบอร์อื่นๆ ที่มี I/O เยอะกว่านี้ยังไม่ได้ทดสอบระบบ Bootloader ว่าจะสามารถใช้งานได้ดีหรือไม่ และอาจจะต้องเสียเวลา ต้องมาทำการทดสอบ หรือแก้ไข Library บางส่วนอีก ซึ่งการ Update Firmware นี้เป็นฟังก์ชั่นหลัก ที่ช่วยให้เราสามารถพัฒนาและแก้ไขโปรแกรมให้กับ box ของเราได้สะดวกขึ้น ดังนั้นเหตุผลหลักๆ ที่ยังคงใช้ PIC18F458-I/P ก็เพราะสาเหตุนี้นั่นเอง

จากเหตุนี้นี่เองทำให้ต้องกลับมาดูว่าส่วนไหนที่ใช้ I/O ของ PIC MCU เป็นจำนวนมากและถ้าหากสามารถลดจำนวนลงได้ ก็จะช่วยให้มี PIN เหลือสำหรับใช้งานอื่นๆ ได้มากขึ้น จากการลองค้นข้อมูลก็พบว่า LCD Charactor Display สามารถ ลดจำนวน I/O ลงได้ครับ ปกติเรา ถ้าหากเราใช้ LCD ต่อกับ MCU เราจะต่อได้ 2 แบบ คือแบบ data 8 bit การต่อ LCD แบบ 8 Bit จะใช้ I/O ถึง 10 Pin และ แบบ data 4 bit จะใช้ I/O ถึง 6 Pin ซึ่งปัจจุบัน เรานิยมใช้การต่อใช้งานแบบ 4 bit มากกว่า

 

ตัวอย่างการต่อใช้งาน LCD แบบ 8 Bit

 
 

ตัวอย่างการต่อ LCD แบบ 4 Bit

 

และปัจจุบัน นี้เราสามารถลด จำนวน I/O ที่เชื่อมต่อเข้ากับ LCD ให้เหลือแค่ 2 - 3 Pin ได้ครับ ด้วย 74HC595 ด้วยการส่งข้อมูลแบบ 3-wire หรือ แบบ I2C โดยใช้ IC เบอร์ PCF8574T

 

ตัวอย่างการต่อ LCD แบบ 3 - Wire

 
 

ตัวอย่างการต่อ LCD แบบ I2C

 

ซึ่งวิธีการหลังสุดนี้จะใช้ Pin แค่จำนวนเพียง 2 Pin เท่านั้นสำหรับเชื่อมต่อเข้ากับ MCU และปัจจุบันก็มี Board สำเร็จเป็น I2C Module ทำขายออกมาให้หาซื้อได้ในราคาประหยัด หาซื้อได้ตามเวปอิเล็กทรอนิกส์ Online ทั่วไป และสามารถนำมาต่อใช้งานร่วมกับ LCD ได้อย่างง่ายดายครับ

 

I2C LCD Character Module

 

 

ตัวอย่างการต่อใช้งาน สำหรับ I2C LCD Module เข้ากับ LCD Character

   

 

   

ตัวอย่าง Code สำหรับ PIC CCS C สามารถดาวน์โหลดได้จาก ที่นี่