[ บทความ : ทดลองใช้ภาษาซีกับบอร์ด ET-BOARD V6 ] [ภาค MCS-51] ตอนที่ 6 ติดต่อกับ LCD แบบตัวอักษร |
จากบทความแล็บตอนที่ 5 เราได้ทำการติดต่อกับแผง 7-segment บนบอร์ด ET-BOARD V6 ไปแล้ว ... ในสัปดาห์นี้เราก็จะ มาติดต่อกับอุปกรณ์แสดงผลอีกประเภทหนึ่ง ซึ่งการจะใช้ งานตัวอย่างของบทความนี้ได้ ผู้อ่านจะต้องมี LCD แบบตัวอักษรด้วยนะครับ จึงจะทำการทดลองได้ ... ในบทความตอนนี้ เราจะใช้ LCD แบบ 16x2 (2 แถว โดยแต่ละแถวมี 16 หลัก แต่ผมใช้ 16x4 เพราะมีแต่รุ่นนี้ครับ) ... ว่าแล้ว ให้ผู้อ่าน เลือก jumper บนบอร์ดเป็น CH ก่อน แล้วก็ติดตั้ง LCD เข้ากับบอร์ดดังรูปด้านล่างครับครับ
เมื่อติดตั้งเรียบร้อยแล้วเราก็จะเริ่มเขียนโปรแกรมกันเลย ... แต่เพื่อเป็นการประหยัดเวลาการเขียนโปรแกรม เราก็จะ ใช้ไลบรารี Munc5x กันครับ ... [ให้ผู้อ่านดาวน์โหลดไลบรารีไปด้วยครับ] ... ส่วนตัวอย่างโปรแกรม ผมก็จะใช้โปรแกรมที่ชื่อ hellov6.c ซึ่งมีรายละเอียดของโปรแกรมดังนี้ครับ
/* * Filename : HelloV6.c * Author : Supachai Budsaratij * School of Computer and Advanced Technologies * Rajabhat Institute Phetchaburi * e-mail : raek@se-ed.org * Date : 08-08-2000 [dd-mm-yyyy] * compile : cc51 helloV6 -pio m=L * Hardware : ETT ET-BOARD V6 [MCS-51] */ #define USE_LCD #define USE_RS232 #include <8051io.h> #include "etv6.h" main() { int count; PowerOnReset(); count = 0; LcdCommand(LCD_CLS); LcdGoto(0,0); LcdPutS("- drOT startup -"); LcdGoto(1,1); LcdPutS("Line 2."); LcdGoto(2,2); LcdPutS("Line 3."); LcdGoto(3,3); LcdPutS("Line 4."); while(1) { printf("Hello no.%d/n", count); if (count++ == 10000) { count = 0; } } }ผลของการทำงานเป็นดังนี้ครับ
ส่วนถ้าผู้อ่านใช้ LCD แบบ 16x2 ก็ให้แก้ไขโปรแกรมเป็นดังนี้ครับ
/* * Filename : HelloV6.c * Author : Supachai Budsaratij * School of Computer and Advanced Technologies * Rajabhat Institute Phetchaburi * e-mail : raek@se-ed.org * Date : 08-08-2000 [dd-mm-yyyy] * compile : cc51 helloV6 -pio m=L * Hardware : ETT ET-BOARD V6 [MCS-51] */ #define USE_LCD #define USE_RS232 #include <8051io.h> #include "etv6.h" main() { int count; PowerOnReset(); count = 0; LcdCommand(LCD_CLS); LcdGoto(0,0); LcdPutS("- drOT startup -"); LcdGoto(1,1); LcdPutS("Line 2."); LcdGoto(2,2); while(1) { printf("Hello no.%d/n", count); if (count++ == 10000) { count = 0; } } }ส่วนที่แสดงผลด้วยคำสั่ง printf( ... ) นั้นจะเป็นการส่งข้อมูลผ่านระบบสื่อสาร RS-232 มาที่ PC ดังนั้น หน้าจอส่วนแสดงผลบน โปรแกรมสื่อสาร RS232 ก็จะเป็นดังนี้ครับ
ผมอยากให้ผู้อ่านเอาโปรแกรมตัวอย่างตอนนี้ไปเปรียบเทียบกับบทความก่อนหน้านี้ คือเรื่อง MTOOL-7 กับ LCD ก็จะเห็นว่า โปรแกรมนั้นแทบจะ เรียกได้ว่าเหมือนกัน แตกต่างกันเรื่องของการเรียกใช้ header file เล็กน้อยเท่านั้นเอง ... นี่ก็เป็น ประโยชน์จากการสร้างไลบรารีล่ะครับ ... บทความตอนนี้คงเท่านี้ก่อนครับ เจอกันคราวหน้าครับ