ยินดีต้อนรับสู่ Thai Lab Research.Com
![]() |
ยินดีต้อนรับเข้าสู่เว็บไซต์ไทยแล็บรีเสิร์ซดอทคอม เวบไซต์นี้สร้างขึ้นเพื่อสนับสนุนให้คนไทยได้รู้จักการเรียนรู้และประยุกต์ใช้ไมโครคอนโทรลเลอร์สำหรับงานวิจัยเบื้องต้น เช่น การประยุกต์ใช้ไมโครคอนโทรลเลอร์ในการติดต่อกับเซนเซอร์อิเล็กทรอนิกส์ต่างๆ หรือการประยุกต์ในการสร้างชุดทดลองทางฟิสิกส์ เพื่อให้พี่น้องชาวไทยได้ใช้อุปกรณ์ที่เป็นประโยชน์และมีราคาที่สามารถซื้อหากันได้ |
ชี้แจงบทความต่าง ๆ ในเวปครับ
เนื่องจากผมอยากให้เวปนี้เป็นที่รวบรวมความรู้ต่าง ๆ สำหรับผู้เริ่มต้นกับ 8051 แต่ก็ไม่ค่อยมีเวลาที่จะเขียนบทความเองซักที ก็เลยรวบรวมบทความจากเวปของพี่ ๆ น้อง ๆ มาบ้างเขียนเองบ้าง
สำหรับบทความที่ผมนำมาจากเวปอื่น ก็มีการอ้างอิงให้เครดิตด้านล่างบทความ แต่หากเจ้าของบทความท่านใดไม่อณุญาต ก็ให้ติดต่อมานะครับ ผมจะรีบเอาออกให้
ขอบคุณมากครับ
การแสดงภาษาไทยบน GLCD
ช่วงนี้เครียดกับการไปรับทุนเค้ามาเรียนจริง ๆ เลยจะครับ บางครั้งเข้าใจคนฆ่าตัวตายหนี้ปัญหาเลย เลยคิดว่านำความรู้(อันน้อยนิด) ของตัวเองมาเผยแพร่ให้เกิดประโยชน์แก่น้อง ๆ หรือ พี่ ๆ ที่ทำโปรเจค ซึ่งแนวคิดที่ผมจะนำเสนอต่อไปนี้การแสดงภาษาไทยบนจอกราฟฟิก LCD
บทที่ 1 ตาราง อะเรย์ สำหรับ อักษรไทย
ก่อนที่ผมจะทำภาษาไทยบน GLD นั้น มีแนวคิด ความท้าทาย ความยุ่งยาก และความท้อแท้มากมาย แต่สุดท้ายผมก็สรุปเอา 2 แนวคิด (ที่ผมคิดว่าดีที่สุดนะคับ) ซึ่งแต่ละแนวคิดจะมีข้อดีและข้อเสียที่ต่างกัน ซึ่งผมจะขอนำเสนอดังต่อไปนี้นะครับ
1. การสร้างตามรางเป็น อะเรย์ 2 มิติ นั่นก็หมายความว่า ขนาดหน่วยความจำที่เก็บตัวอักษรแต่ละตัวจะมีขนาดเท่ากัน วิธีนี้ง่ายต่อการเขียนโปรแกรมแสดงผลคับ แต่ปัญหาก็คือตัวอักษรบางตัวเช่น ง ซึ่งตัวอักษรมีความกว้างนิดเดียวอาจจะมีความกว้างซักแค่ 5 pixels แต่เมื่อมีตัวอักษรอย่าง ฒ ซึ่งเป็นตัวอักษรที่มีความกว้างมากที่สุดของภาษาไทยมีความกว้างมากถึง 8 pixels นั้นก็หมายความว่าเราก็จะต้องสร้างตาราง อะเรย์ที่มีขนาด 8 pixels สำหรับตัวอักษร ง ถ้ารวมกับตัวอักษรอื่นแล้ว อาจเปลืองเนื้อที่โดยเปล่าประโยชน์เป็นเท่าตัวเลยก็ได้ ฟังแล้วอาจจะงง ผมจะยกตัวอย่างให้ดู เช่น
ง มีตารางอะเรย์เป็น {0x10, 0x20, 0x48, 0x54, 0x7C}
ฒ มีตารางอะเรย์เป็น {0x38, 0x44, 0x68, 0x08, 0x64, 0x78, 0x10, 0x7C}
ก็จะทำการปรับให้ ง มีตารางอะเรย์ดังนี้ {0x00, 0x00, 0x00, 0x10, 0x20, 0x48, 0x54, 0x7C}
2. การสร้างตารางเป็น อะเรย์ 1 มิติ โดยเอาอะเรย์ของตัวอักษรแต่ละตัวมาต่อกัน ซึ่งก็จะแก้ปัญหาแนวคิดที่ 1 ได้แต่การเขียนโปรแกรมควบคุมจะยากขึ้น นั้นก็คือเราจะรู้ได้อย่างไรว่าตัวอักษรแต่ละตัว อยู่ที่ตำแหน่ง อะเรย์ที่เท่าไหร่และจบที่ตำแหน่งอะเรย์ที่เท่าไหร่ เราจึงต้องสร้างตัวแปรมาอีกชุดเพื่อเก็บ ตัวชี้อะเรย์สำหรับตัวอักษรต่าง ๆ ขึ้นมาอีก 1 ตัว แต่รวม ๆ แล้วประหยัดหน่วยความจำมากกว่าแนวคิดที่ 1 แน่นอนครับ
เอาแค่นี้ก่อนนะครับ เดี๋ยวจะมาต่อ บทที่ 2 การสร้างตารางอะเรย์ด้วยตัวเอง
มาแล้ว ๆ มาต่อกันดีกว่าครับ หลังจากที่หายไปนาน
บทที่ 2 การสร้างตารางอะเรย์ด้วยตัวเอง
ก่อนอื่นจินตนาการก่อนเลยว่าอยากได้ตัวอักษรขนาดเท่าไหร่ กว้างสูงเท่าไหร่ (จินตนาการให้หน่วยเป็น pixel นะครับ จะได้สอดคล้องกับการแสดงผลของจอ LCD) แล้วจะสแกนแนวไหน ตัวอย่างที่ผมจะทำให้ดูต่อไปนี้ผมเลือกตัว สูงขนาด 2 byte นะครับ ความกว้างนั้นไม่แน่นอนแล้วแต่ละตัวอักษรละกัน ส่วนวิธีการเก็บค่า table ของตัวอักษรนั้นผมเลือกแบบที่ 2 ละกัน(อ้างอิงจากบทที่ 1) เพราะผมเน้นประหยัดหน่วยความจำเป็นหลัก ว่าแล้วก็ มาเริ่มกันเลยย.ย..ย...ย....ย......(ออกเสียงเหมือนกันแสดงภาพช้าของแก๊ง 3 ช่า)
ส่วนใหญ่นั้นการควบคุมการแสดงผลของจอ GLCD จะต้องเริ่มจากการจองพื้นที่เป็นสี่เหลี่ยมจักตุรัตก่อน เช่น จะแสดง ก โดยที่มีความกว้าง 8 pixal สูง 16 pixel (2 byte) ก็ต้องทำการจอพื้นที่ก่อน
หลังจากที่ทำการจองพื้นที่สำหรับตัวอักษรเสร็จแล้วก็จะเป็นการเริ่มวาดตัวอักษรกันละ จอ GLCD ส่วนใหญ่จะกำหนดการแสดงผลได้ทุกแนว แต่ผมมีปัญหากับจอ Nokia 6100 ของ EPSON (ใคร minor x,y ได้ช่วยบอกตัว Command ทีนะครับ) สำหรับผมแล้วทิศทางหรือแนวการแสดงผลเนี้ยมีผลการการสร้าง ตารางอะเรย์ของตัวอักษรมากเลยทีเดียว
หากท่านต้องการให้ตอนเขียนโปรแกรมแสดงผลง่าย ก็ต้องเก็บค่าตัวแปรอะเรย์ตามทิศทางการแสดงผล ซึ่งอาจไม่เหมือนกับ 3 แบบ ที่ยกตัวอย่างนี้
เอาหละ หลังจากทำความเข้าใจกับหลักการต่าง ๆ แล้ว ก็เริ่มได้เลย เครื่องมือที่ผลใช้ก็จะมี
1. FastLCD.exe
2. ตาราง ascii ภาษาไทย
3. ความพยายามและความอึด
จากตาราง ascii ภาษาไทยจะเห็นได้ว่า ก เป็นอักษรตัวแรก เราก็จะทำการสร้าง ก ไก่ก่อนเลย แล้วไล่ไปเรื่อย ๆ บางส่วนเป็นช่องว่างก็ข้ามไป
1. เปิดโปรแกรม FastLCD.exe
2. คลิกที่หมายเลข 1 เพื่อขยายให้ช่อง pixel ใหญ่ชัดเจน
3. คลิกขวาที่หมายเลข 2 แล้วจะได้ดังนี้
4. เลือก Font ที่รองรับภาษาไทย สำหรับผม ผมเลือก AngsanaUPC ขาด 18
5. กดโอเค แล้วก็พิมพ์ตัวอักษร ก ในหน้านี้
6. กด OK
7. แล้วคลิกซ้ายที่บริเวณพื้นตารางจะได้ตัวอักษร ก ดังรูป
8. กดที่หมายเลข 3 และ 4 เพื่อเลื่อนตัวอักษรให้อยู่ในบรรทัดพอดีเพื่อให้อ่านค่าได้ง่ายขึ้น
ย้อนกลับไปด้านบทถึงตอนที่เลือกทิศทางการแสดงผล ผมเลือกแบบที่ 1 ซึ่งก็จะได้ดังนี้
9. ต่อไปนี้ก็จะทำการเก็บค่าตัวอักษรด้วยตัวเองแล้วนะครับ เนื่องจากว่าตัวอักษรผมสูง 16 pixel (ช่องว่างด้านบนก็เอานะครับ จะเผื่อไว้สำหรับตัวอักษรที่สูง) ผมจึงสร้างตัวแปรอะเรย์ 1 มิติขนาด 16 บิต ซึ่งอาจพิมพ์ลงใน Editor ตัวไหนก็ได้ ให้จุดล่างสุดเป็น MSB (บิตสูงสุด) และจุดบนสุดเป็น LSB (บิตต่ำสุด) ซึ่งก็ได้ได้ค่าดังนี้
Const code unsigned int font_thai[] = {
0x0300, 0xFE80, 0x0240, 0x0040, 0x0040, 0x0040, 0x0080, 0xFF00, //อะเรย์ของ ก
ทำอย่างนี้ไปเรื่อย ๆ จาก ก เป็น ข เป็น ฃ จนหมดทุกตัวเรียงตามตาราง ascii ภาษาไทย
แต่ทุกท่านลองทำดูจะเจอปัญหากับตัวอักษรบางตัวที่มีหางลงมาต่ำกว่าบรรทัด เช่น ญ ฎ ฏ ฐ บทหน้าเรามาว่ากันว่าจะทำอย่างไรดี
โชคดีครับ
โปรโมชันพิเศษ
1. บอร์ด TL-AT89S52
2. บอร์ด TL-ISP-PROG
3. บอร์ด TL-LED-8
4. บอร์ด TL-SWITCH-8
5. บอร์ด TL-7SEGMENT-2
จากราคา 896.- บาท เหลือเพียง 800.- บาท
*หมายเหตุ ราคาไม่รวม Adapter
R&D
- เขียนโปรแกรมสำหรับงาน Microcontroller ตระกูล MCS-51 , AVR และ ARM ด้วยภาษา C
- รับสอนทำโปรเจคสำหรับนิสิตนักศึกษา
- รับสอนพิเศษเพิ่มพูนความรู้สำหรับนักเรียนชั้น ม.4 ขึ้นไปในรายวิชา ฟิสิกส์ ดาราศาสตร์ คณิตศาสตร์ และ ภาษา c สำหรับ Microcontroller
เครื่องวัดECG
รูป ECG ที่วัดตอนทดสอบบางส่วนครับ
![]() |
![]() |
|
![]() |
![]() |
|
วาดกราฟบนGLCDให้ต่อเนื่อง
คลิกเพื่อเข้าชมได้เลยครับ
กราฟที่ไม่ต่อเนื่อง การฟที่ต่อเนื่องดูสวยงามและไฮโซ
จอ6100แสดงภาษาไทย
เชิญชมและแสดงความคิดเห็นได้ทางนี่ครับ
Convert LCD I2C
ผมจึงมีแนวคิดที่จะแก้ทั้ง 2 ปัญหานี้ โดยการเปลี่ยนแนวคิดจากการ Convert เป็น RS-232 เป็น I2C แทน แต่อาจจะต้องใช้ขาเพิ่มเป็น 2 ขา แต่ถ้าแลกกับความอิสระในการต่อกับขาไหนก็ได้ กับราคาที่ย่อมเยาว์แล้วก็คุ้มมากเลยทีเดียวครับ
22/12/2551 วันนี้จึงขอนำเสนอสินค้าตัวนี้ครับ ท่านสามารถดูรายละเอียดเพิ่มเติมโดยกดตรงสั่งซื้อด้านล่างครับ
สั่งซื้อ Convert LCD I2C
แสดงความคิดเห็นเกี่ยวกับ Convert LCD I2C
TL-AVR-PG1B
วันนี้ (14/11/2551) พอดีเปิดเวปไปเรื่อยเลยเจอเข้ากับเครื่องโปรแกรม AVR น่าสนใจมากครับ วงจรง่ายมาก อุปกรณ์ไม่กี่ตัวเอง
แถมไม่ต้องมี Firmware ด้วย แต่ไม่รุ้จะ work เปล่านะ ไว้สั่งของมาก่อนประมาณอาทิตย์หน้าเราเจอกัน
(23/11/2551) เฮ้อเหนื่อยใจ จริง ๆ แล้วผมได้ทำการ test ตั้งแต่วันอังคารแล้ว และตั้งใจจะรีบเอาผลการ test มาลง แต่ปัญหาคือไม่มีกล้อง ดิจิตอลมาถ่ายรูปเลย ไปยืมของเพื่อนมาก็ไม่มีสายดาต้าลิ้งอีก ไปยืมสายดาด้าลิ้งชาวบ้านชาวเมืองมาก็ดันใช้ไม่ได้อีก เกลียดจริง ๆ เลย โซนี่เนี่ย ทำมาได้ไงใช้กับอันอื่นไม่ได้เลย ทั้ง ๆ ยี่ห้ออื่นก็ใช้ร่วมกันได้ทั้งบ้านทั้งเมือง ไปยืม Card Reader พี่เป้ก็กว่าจะเจอพี่เป้ก็ไปวันเสาร์(วันนี้) เลย แต่ไม่เป็นไรมาช้ายังดีกว่าไม่มา จริงมั๊ยครับ
ว่ากันยาวมาเริ่มกันเลย
หลังจากที่หาอุปกรณ์มาครบแล้ว (ขอบคุณพี่เล็ก สำหรับ Ziner diode 5.1 V 2 ตัว ) ก็ทำการบัดกรีอุปกรณ์เข้าไปข้างในเลยดังนี้ครับพี่น้อง
ยิงปืนกาวกันมันชอร์ตแต่ยิงซะน่าเกลียดเลย -*- แต่ไม่เป็นไรปิดฝาก็ดูหล่อขึ้นแล้ว
เห็นมั๊ยหละสวยขึ้นทันตาเห็นครับพี่น้องอิเล็ก
มาดูผลการทดสอบ ผมได้เขียนโปรแกรมยอดฮิตสำหรับ ATmega8 ขึ้นมา(โปรมแกรมไฟวิ่ง) ดังนี้
จากนั้นก็เบิร์นโดยใช้โปรแกรม PronyProg2000 โทดทีลืมถ่ายรูปตอนทำการเบิร์น แต่ก็ใช้ไม่ยากสำหรับ PronyProg2000 หาดูวิธีใช้ตามเน็ตได้
แล้วผลการทดสอบก็ออกมาได้สวยหรูครับพี่น้อง
uC ที่ใช้ทดสอบ
ดูผลการทดสอบเป็น Clip ก็ได้ครับ








