วันศุกร์ที่ 9 ธันวาคม พ.ศ. 2554

ต่อจอ lcd 16x2

   ไมโครคอนโทรลเลอร์ก็เหมือนกับเคสคอมพิวเตอร์ย่อขนาดมาใส่ไว้ในชิบ ในบทความนี้จะพาต่อจอแสดงผลออกมาครับ ซึ่งจอแสดงผลที่เป็นพื้นฐานที่นำมาต่อกับไมโครคอนโทรลเลอร์คือจอ LCD Character แต่จอแสดงผลแบบนี้จะมี IC คอนโทรลอีกที่ IC ตัวนั้นคือ IC เบอร์ hd44780 ซึ่งตอนแรกผมตั้งใจจะเขียน library ติดด่อกับ hd44780 แต่พอได้ไปดู library ที่เขาเขียนไว้แล้วเอาของเขาดีกว่า เขียนดีกว่าเราเยอะ lib ที่เอามานี้ผมเอามาจาก avrfreaks.net สาวก avr ควรไปสมัครเป็นสมาชิกไว้ เพราะจะโหลด lib เขาต้องเป็นสมาชิกก่อนถึงจะโหลดได้


วันอังคารที่ 6 ธันวาคม พ.ศ. 2554

รีจิสเตอร์ คืออะไร


  registers คือวงจรภายในที่ทำหน้าที่ควบคุมการทำงานของไมโครคอนโทรลเลอร์ เราสามารถติดต่อกับรีจิสเตอร์ผ่าน RAM โดยมีการแบ่งได้หลายแบบ ถ้าแบ่งตามลักษณะการทำงานจะแบ่งได้ 3 ชนิด


  1. control register ทำหน้าที่ควบคุมการทำงาน
  2. data register   ทำหน้าที่รับส่งข้อมูล
  3. status register  ทำหน้าที่บอกสถานะ
ยกตัวอย่าง register ที่เกี่ยวกับ I/O ของ atmega8 มีอยู่ 3 ตัว คือ DDR ,PORT และ PIN DDR เป็น control register PORT และ PIN เป็น data register มาดูโปรแกรมกัน

  1. #include <avr/io.h>

  2. int main()
  3. {
  4. DDRB = 0xFF ;
  5. DDRC = 0x00 ;
  6. while(1)
  7. {
  8. PORTB = PINC ;
  9. }
  10. }
จากโปรแกรมผมเซ็ต port B ให้เป็น output เซ็ต port C ให้เป็น input แล้วนำข้อมูลจาก port C มาออกที่ port B ข้อมูลของregister สามารถหาอ่านได้ ใน use manual ของ mcu เบอร์นั้นๆ นะครับ

วันจันทร์ที่ 5 ธันวาคม พ.ศ. 2554

เริ่มต้นเขียนโปรแกรม Microcontroller

     ในการเริ่มต้นเขียนโปรแกรมไมโครคอนโทรลเลอร์นั้นจริงๆ จะต้องศึกษาสถาปัตยกรรมภายในของไมโครคอนโทรลเลอร์ของเบอร์ที่เราจเขียน แต่ถ้าเขียนด้วยภาษาซีแล้วอาจจะไม่ต้องไปทำความเข้าใจถึงขนาดนั้นเอาแค่ทำความเข้าใจเรื่องรีจิสเตอร์ ในตอนแรกนี้จะมีรีจิสเตอร์ที่เกี่ยวข้องอยู่สองตัวคือ DDR (รีจิสเคอร์ควบคุมกำหนดทิศทางของข้อมูล) กับ PORT (เป็นรีจิสเตอร์ข้อมูลที่ใช้เก็บข้อมูลที่เช้า ออก ผ่าน port)

     สำหรับภาษาซีที่เขียนในคอนโทรลเลอร์นั้นหลักๆ จะแยกออกสองส่วนที่อยู่ในฟังก์ชั่นหลัก ( main )


  1.           int main()
  2.          {
  3.                ประกาศตัวแปร เซ็ตรีจิสเตอร์(ส่วนที่1)

  4.                       while loop 
  5.                       {
  6.                         งานที่จะทำ   (ส่วนที่2)
  7.                        }
  8.           }