หน้าหลัก สินค้า กระดานข่าว การสั่งซื้อ Download เกี่ยวกับเรา Contact
Search

   เตรียมตัวก่อนทำโปรเจค
       ความรู้เบื้องต้นเกี่ยวกับ MCS-51
       การเขียนโปรมแกรมด้วยภาษา C
       การใช้งาน Compiler Keil
       การสร้าง Hex File
       การ Burn และการทดสอบ
       ไฟวิ่ง(การใช้งานพอร์ตเอาท์พุต)
       Switch(การใช้งานพอร์ตอินพุต)
       7 Segment
       LCD
       RS 232(ติดต่อพอร์ตอนุกรม)
       DS1820
       การทำ PCB

   Easy Circuit
       แปลงไฟ +5 เป็น +/-5
       วงจรไอซีเรกกูเลเตอร์
       วงจรทดสอบคริสตอล

   บทความน่าสนใจ
       การแสดงภาษาไทยบน GLCD
       โปรโมชันพิเศษ
       R&D
       เครื่องวัดECG
       วาดกราฟบนGLCDให้ต่อเนื่อง
       จอ6100แสดงภาษาไทย
       Convert LCD I2C
       TL-AVR-PG1B

   เกร็ดความรู้ทั่วไป
       นำวงจรจากProtel ลง word

   ปฏิทิน

ออนไลน์ตอนนี้ 2 คน

   นาฬิกา

   สถิติ
Website counter

   Link


เว็บไซต์อิเล็กทรอนิกส์-นานาสาระ
Mechatronics Blog

หม่ำบีบีกัน

ยินดีต้อนรับสู่ 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 ภาษาไทย

แต่ทุกท่านลองทำดูจะเจอปัญหากับตัวอักษรบางตัวที่มีหางลงมาต่ำกว่าบรรทัด เช่น ญ ฎ ฏ ฐ บทหน้าเรามาว่ากันว่าจะทำอย่างไรดี

 

โชคดีครับ


โปรโมชันพิเศษ

Promotion : พิเศษหากท่านสั่งซื้อชุดการทดลองครบชุดซึ่งประกอบด้วย
    1. บอร์ด TL-AT89S52
    2. บอร์ด TL-ISP-PROG
    3. บอร์ด TL-LED-8
    4. บอร์ด TL-SWITCH-8
    5. บอร์ด TL-7SEGMENT-2

จากราคา 896.- บาท เหลือเพียง 800.- บาท
*หมายเหตุ ราคาไม่รวม Adapter

R&D

- รับพัฒนางาน R&D
- เขียนโปรแกรมสำหรับงาน Microcontroller ตระกูล MCS-51 , AVR และ ARM ด้วยภาษา C

- รับสอนทำโปรเจคสำหรับนิสิตนักศึกษา

- รับสอนพิเศษเพิ่มพูนความรู้สำหรับนักเรียนชั้น ม.4 ขึ้นไปในรายวิชา ฟิสิกส์ ดาราศาสตร์ คณิตศาสตร์ และ ภาษา c สำหรับ Microcontroller

เครื่องวัดECG

เป็นโปรเจคจบของผมครับ (จบมาได้ 1 ปีละ) เคยเอาไปโพสในเวปเก่าของ electoday แล้ว แต่พอดีมีคนถามถึง จึงเอามาให้ชมกันเล่น ๆ



รูป ECG ที่วัดตอนทดสอบบางส่วนครับ

วาดกราฟบนGLCDให้ต่อเนื่อง

ท่านที่เคยทำ ออสซิลโลสโคป หรือเคยแสดงกราฟบนจอ GLCD คงจะเคยเจอปัญหาที่อาจแก้ไม่ตก ก็คือความไม่ต่อเนื่องของเส้นกราฟ บทความนี้ผมจะเสนอแนวคิดของตัวเองสมัยทำโปรเจคอยู่ปี 3 เพื่อให้เส้นกราฟมีความต่อเนื่อง
คลิกเพื่อเข้าชมได้เลยครับ
     
กราฟที่ไม่ต่อเนื่อง             การฟที่ต่อเนื่องดูสวยงามและไฮโซ

จอ6100แสดงภาษาไทย

     ช่วงนี้เกิดคึกเลยมานั้งทำเล่น ๆ ใครสนใจก็ลองเข้ามาชมกัน ทำเรื่อย ๆ นะครับถ้าทางจะไม่เสร็จง่าย ๆ

เชิญชมและแสดงความคิดเห็นได้ทางนี่ครับ

Convert LCD I2C

ในบางครั้งนั้นเราใช้งาน uC ตัวเล็ก ๆ 20 ขา หรือ 8 ขา แต่เราจำเป็นต้องต่อ LCD ด้วย ซึ่งการต่อจอ LCD นั้นต้องใช้อย่างน้อย 6 ขาของ uC จึงได้มีคนทำตัว Convert ให้การติดต่อกับจอ LCD นั้นเป็นการติดต่อแบบ RS-232 ซึ่งใช้สายสัญญาณเพียงแค่เส้นเดียว แต่ปัญหาก็คือ ต้องต่อกับขาของ Tx ทำให้ไม่สามารถใช้ได้หากงานหลักเราต้องใช้งานการติดต่อแบบ RS-232 และอีกอย่างก็คือ ราคาตัว Convert นี้ราคาแพงมาก ประมาณ 500 - 600 บาทเลยทีเดียว
ผมจึงมีแนวคิดที่จะแก้ทั้ง 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 ก็ได้ครับ





สั่งซื้อ TL-AVR-PG1B
เชิญแสดงความคิดเห็นด้านนี้ครับ