ZLCD240.TXT - โปรแกรมแสดงภาพบนบอร์ด TLCD-308 อย่างง่าย (มกราคม 2548 โดย นัฐพล ไทยสาครพันธ์) บอร์ด TLCD-308 มีความสามารถต่าง ๆ อยู่มากมาย (สามารถศึกษาได้จากคู่มือ) แต่ถ้าหากเราต้องการ ทดลองเขียนโปรแกรมควบคุมด้วยตัวของเราเองก็สามารถทำได้ซึ่งจะกล่าวในบทความนี้ บอร์ด TLCD-308 ใช้โมดูล LCD กราฟฟิค ที่มีคอนโทรลเลอร์ T6963C อยู่ในตัว ซึ่งมันจะคอยช่วยจัดการในส่วนของการแสดงผล ให้เรา ทำให้การเขียนโปรแกรมง่ายขึ้นมากทีเดียว ในส่วนที่เราเขียนโปรแกรมนั้นจะเขียนเป็นภาษา c (keil c51) แล้วแปลงเป็น hex file download ลงใน P89C51RD2+ ซึ่งเป็นไมโครคอนโทรลเลอร์ตระกูล mcs-51 ที่อยู่ด้านหลังบอร์ด # ความรู้พื้นฐานของการแสดงผลบนกราฟฟิก LCD LCD บนบอร์ด TLCD-308 นั้น สามารถแสดงผลได้ 240x128 พิกเซล เราสามารถสั่งให้มีการแสดงผลโดยผ่าน ทาง RAM คือ เราเอาอะไรใส่ใน RAM มันก็จะแสดงผลออกมาอย่างนั้น ถ้าเราต้องการให้พิกเซลไหนติดเราก็เซตบิต ใน RAM ที่อยู่ ณ ตำแหน่งนั้นเป็น 1 (จะให้ดับก็เคียร์ให้เป็น0) แต่เมื่อเราเขียนโปรแกรมเราจะส่งข้อมูลไปใส่ใน RAM ในระดับ byte 1 byte จะเป็น 1 คอลัมภ์ เช่นเราต้องการให้แถวแรก คอลัมภ์แรก แสดง00001111(ดับ4พิกเซลติด4พิกเซล) เราก็จะส่ง 00001111 ไปใส่ใน RAM ตำแหน่งแรก # พื้นฐานการเขียนโปรแกรมติดต่อกับ LCD โดยผ่านทาง T6963C 1.การเขียนข้อมูล (write data) ซึ่งสามารถทำได้ต่อไปนี้ - ส่งข้อมูลออกไปที่ D0 - D7 (ในส่วนของวงจรสามารถดูได้จากคู่มือของ TLCD-308) - C/D เป็น LOW - WR เป็น LOW - สร้าง pulsed ต่ำที่ CE มากกว่า 80 ns ตัวอย่าง ดูได้จากฟังก์ชั่น void lcdw_data (unsigned char x) ใน file zlcd240.c 2.การส่ง byte ควบคุม (write command) - ส่ง byte ควบคุมออกไปที่ D0 - D7 - C/D เป็น high - WR เป็น LOW - สร้าง pulsed ต่ำที่ CE มากกว่า 80 ns ตัวอย่าง ดูได้จากฟังก์ชั่น void lcdw_command (unsigned char x) ใน file zlcd240.c # การควบคุม LCD มีการควบคุมอยู่ 3 แบบ 1.การควบคุมที่ไม่ต้องมีข้อมูลมี byte ควบคุมอย่างเดียว สามารถเขียนได้ดังนี้ -check status (เนื่องจากผมต้องการให้โปรแกรมนี้ง่ายที่สุดผมจึงใช้การหน่วงเวลาแทนการ check status) -write command ตัวอย่าง delay (2); lcdw_command (0xc0); //write then increase address pointer 2.การควบคุมที่ต้องการ 1 byte ข้อมูล -check status -write data -check status -write command 3.การควบคุมที่มี 2 byte ข้อมูล -check status -write data -check status -write data -check status -write command ตัวอย่าง delay(2); //set graphics home address at 0x0000 lcdw_data(0x00); delay(2); lcdw_data(0x00); delay(2); lcdw_command(0x42); # อธิบายฟังก์ชั่นต่างๆในโปรแกรม void lcdw_command(unsigned char); ดูจากด้านบนเรื่องการเขียน byte ควบคุม(write command) void lcdw_data(unsigned char); ดูจากด้านบนเรื่องการเขียนข้อมูล(write data) void lcd_init(void); เป็นฟังก์ชั่นตั้งค่าเริ่มต้นของการแสดงผล void delay(unsigned char); ฟังก์ชั่นหน่วงเวลา void lcd_show(void); เป็นฟังก์ชั่นนำค่าที่เราต้องการแสดงผลใส่ใน RAM โดยการใช้ auto write mode เป็นรูปลายขาวสลับดำในแนวตั้ง สุดท้ายนี้ขอให้ผู้อ่านบทความนี้ได้สนุกกับการดัดแปลงบอร์ด TLCD-308 ให้มีความสามารถหลากหลายยิ่งขึ้น ถ้าหากมีข้อสงสัยหรือความผิดพลาดประการใด สามารถส่ง emailมาได้ที่ jomyung2003@yahoo.com