SlideShare ist ein Scribd-Unternehmen logo
1 von 82
Downloaden Sie, um offline zu lesen
การพฒนาโปรแกรมบน IPST-MicroBOX
การพัฒนาโปรแกรมบน IPST MicroBOX
                                                 กฤษดา ใจเย็น
                                                 นคร ภักดีชาติ
                                          วรพจน์ กรแก้ววัฒนกุล




 บริษท อินโนเวตีฟ เอ็กเพอริเมนต์ จํากัด
     ั
 www.inex.co.th
ชุดที่ 1
  ุ




 ส่โลก
 สู
สู ลกไมโครคอนโทรลเลอร์
                                        ส่โลกไมโครคอนโทรลเลอร
                                                     ประวัติไมโครโปรเซสเซอร์

คอมพิวเตอร์ คือ อุปกรณ์ทใ่ี ช้ซอฟต์แวร์เป็นตัวดําเนินการทํางาน ว่าต้องการให้
อุปกรณ์์ใดทํางานใดบ้าง
            ํ ใ ้
         การพัฒนาระบบคอมพิวเตอร์กเป็ นรูปเป็ นร่างมากขึนเมือ Intel ได้พฒนา
                                    ็ ู                ้ ่             ั
อุปกรณ์สาหรับประมวลผลคําสัง่ ทีเรียกว่า “ไมโครโปรเซสเซอร์”
         ํ                     ่
"(Microprocessor)"
 (     p        )




                         MPU 4004 (MCS-4)
ไมโครโปรเซสเซอรตวแรกของโลก
ไมโครโปรเซสเซอร์ตวแรกของโลก
                 ั
 1971: 4004 ไมโครโปรเซสเซอร์
  เป็ นไมโครโปรเซสเซอร์ตวแรกจากอินเทล
   ป็ ไ โ โป            ์ ั         ิ
  ประดิษฐกรรมชินนี้พฒนาขึนเพือใช้กบเครืองคิดเลขของ Busicom และปู
                    ้ ั     ้ ่       ั ่
  ทางเขาสู ารออกแบบสงประดษฐใหมๆ อยางเชน เครองคอมพวเตอรสวน
  ทางเข้าส่การออกแบบสิงประดิษฐ์ใหม่ๆ อย่างเช่น เครืองคอมพิวเตอร์สวน
                         ่                                 ่          ่
  บุคคล
  จํานวนทรานซิสเตอร์: 2,300 ตัว
  ความเร็วสัญญาณนาฬิกา: 108 kHz
             ็ ั
 1972: 8008 ไมโครโปรเซสเซอร์
  8008 เป็ นไมโครโปรเซสเซอร์ทมประสิทธิภาพสงกว่าร่น 4004 ถึงสองเท่า
           เปนไมโครโปรเซสเซอรทมประสทธภาพสูงกวารุ
                               ่ี ี                            ถงสองเทา
  โดยมีการกล่าวถึงในบทความของ Radio Electronics เมือปี 1974 ว่า อุปกรณ์
                                                         ่
  ทีชอ Mark-8 ใช้ชป 8008 สําหรับ Mark-8 นันเป็ นทีรจกกันว่าคือคอมพิวเตอร์
      ่ ่ื        ิ                       ้       ่ ู้ ั
  รุนแรกสําหรับใช้ภายในบ้าน
    ่
  จํานวนทรานซิสเตอร์: 3,500 ตัว
  ความเรว:
  ความเร็ว: 200 kHz
สู ลกไมโครคอนโทรลเลอร์
                                 ส่โลกไมโครคอนโทรลเลอร
                                                    ไมโครโปรเซสเซอร์

                 Address                 การทํางานของไมโครโพรเซสเซอร์
                   Data    ROM       จะทําหน้ าที่ประมวลคําสังข้อมูลในรูป
                                                              ่    ู    ู
                                     สัญญาณดิจิตอล           มาเทียบกับตาราง
                                     ชุดคําสัง เพื่อกําหนดการทํางานในแบบ
                                             ่
                 Address             ตางๆ
                                     ต่างๆ         สวนอตราการประมวลผลนน
                                                   ส่วนอัตราการประมวลผลนัน ้
Microprocessor     Data
                           RAM       ขึนอยู่กบความถี่สญญาณนาฬิกาที่ป้อนให้
                                       ้       ั       ั
                                     ไมโครโพรเซสเซอร์ จําเป็ นต้องมีอปกรณ์
                                                                      ุ
                                     ร่วมอื่นๆประกอบเข้าด้วยกัน ไม่ว่าจะเป็ น
                 Address
                                     หน่ วยความจํา อุปกรณ์ รบ-ส่งสัญญาณ
                                                              ั
                   Data    I/O
                            /        ตางๆ
                                     ต่างๆ
สู ลกไมโครคอนโทรลเลอร์
                                           ส่โลกไมโครคอนโทรลเลอร
                                                ไมโครคอนโทรลเลอร์กบไมโครโปรเซสเซอร์
                                                                  ั

                                                        จริง ๆ แล้วไมโครโปรเซสเซอร์สามารถ
  Interrupt
  I t     t
                                Address
                                                        นาไปประยุกตใชในงานตางๆ
                                                        นําไปประยกต์ใช้ในงานต่างๆ มากมาย
                                  Data    ROM
                                                        แต่ด้วยขนาดของระบบซึ่งมีขนาดใหญ่
  Watchdog
                                                        รวมถึงลักษณะงานบางอย่างไม่
                                                         ํ ป็ ้ ใช้
                                                        จาเปนตองใชความสามารถในการ
                                                                          ส     ใ
                                Address
                                                        ประมวลผลมากนัก
                                          RAM
               Microprocessor     Data

                                                        ไมโครคอนโทรลเลอร์จึงได้ถือกําเนิดขึน
                                                        ไมโครคอนโทรลเลอรจงไดถอกาเนดขน      ้
                                                        โดยได้ทาการรวมอุปกรณ์ พืนฐานต่างๆ
                                                               ํ                  ้
                                Address
                                                        เข้ามาอยู่ในไอซีตวเดียว เพื่อลดขนาด
                                                                         ั
                                  Data    I/O
                                                        และความซบซอนของวงจรลง ทาให
                                                        และความซับซ้อนของวงจรลง ทําให้
  Oscillator
                                                        ราคาของระบบถูกลง


MicroController
สู ลกไมโครคอนโทรลเลอร์
                                           ส่โลกไมโครคอนโทรลเลอร
                                               ไมโครคอนโทรลเลอร์ที่มีใช้งานทัว ๆ ไป
                                                                             ่

   ไมโครโปรเซสเซอร์


                                                          ไมโครคอนโทรลเลอร์ MCS-51




ไมโครคอนโทรลเลอร์ PIC
ไ โ     โ               ไมโครคอนโทรลเลอร์ BASIC Stamp
                        ไ โ     โ                             ไมโครคอนโทรลเลอร
                                                              ไมโครคอนโทรลเลอร์ AVR
สู ลกไมโครคอนโทรลเลอร์
ส่โลกไมโครคอนโทรลเลอร
  ไมโครคอนโทรลเลอร์ที่มีใช้งานทัว ๆ ไป
                                ่
สู ลกไมโครคอนโทรลเลอร์
                                 ส่โลกไมโครคอนโทรลเลอร
                    ตัวอย่างการใช้งานไมโครคอนโทรลเลอร์ในเครื่องปรับอากาศ

                                         ระบบควบคุมของเครื่องปรับอากาศ


         +V
                                                 ตรวจสอบการเปิ ด
                                                จากรีโมตหรือสวิตช์
                          220V



Data In

                                             สั ่งให้คอมเพรสเซอร์ทางาน
                                                                  ํ
Digital In

Microcontroller                                                              มากกว่า
      Digital Out   Compressor                                               ค่าที่ต้งไว้
                                                                                     ั
                                               ตรวจสอบอุณหภูมิจาก
                                               เซนเซอร์ กับค่าที่ต้งไ
                                                                   ั ไว้
A/D in                                                        น้อยกว่า
                                                              ค่าที่ต้งไว้
                                                                      ั

                                           สั ่งให้คอมเพรสเซอร์หยุดทํางาน
ขนตอนการพฒนาโปรแกรมกบไมโครคอนโทรลเลอร
   ขันตอนการพัฒนาโปรแกรมกับไมโครคอนโทรลเลอร์
     ้

   ภาษา BASIC       ภาษา Java   Analog
                                                Digital



            ซอฟตแวร
            ซอฟต์แวร์              ฮาร์ดแวร์์
                                       ์
ภาษา C
ขันตอนการพัฒนาโปรแกรมกับไมโครคอนโทรลเลอร์
  ้
                         ออกแบบฮาร์ดแวร์



                                            เขียนโปรแกรมบน
                                               ี โป
       แก้ไขข้อผิดพลาด
                                                คอมพิวเตอร์




          ตรวจสอบ                           คอมไพล์โปรแกรม
         ขอผดพลาด
         ข้อผิดพลาด                          เปนภาษาเครอง
                                             เป็ นภาษาเครือง
                                                         ่



                         ดาวนโหลดโปรแกรม
                         ดาวน์โหลดโปรแกรม
                            ไปยังบอร์ด
ภาษาที่ใช้เขียนติดต่อกับไมโครคอนโทรลเลอร์
            ภาษาทใชเขยนตดตอกบไมโครคอนโทรลเลอร
                  เช่นเดียวกับการเขียนโปรแกรมบนคอมพิวเตอร์
                  เชนเดยวกบการเขยนโปรแกรมบนคอมพวเตอร
      ไมโครคอนโทรลเลอร์สามารถเขียนโปรแกรมโดยใช้ภาษาระดับสูง เช่น
                       ภาษา BASIC ภาษา C หรือ PASCAL ได้
     แต่ภาษาที่ติดกับตัวไมโครคอนโทรลเลอร์แต่ละตัวมาคือ ภาษาแอสเซมบลี้
                      ในแต่ละตระกูลของไมโครคอนโทรลเลอร์
               กจะมโครงสรางทางภาษา (แอสแซมบล แตกตางกน
               ก็จะมีโครงสร้างทางภาษา (แอสแซมบลี้ ) แตกต่างกัน




ภาษาสูงกับไมโครคอนโทรลเลอร์แบ่งออกเป็ น 2 รูปแบบคือ
        1. ใช้คอมไพเลอร์ ภาษาต่าง ๆ ช่วยในการเขียนโปรแกรม
        2. ใช้อินเตอร์พรีเตอร์ ซึ่งฝังตัวอยู่ในโมดูลไมโครคอนโทรลเลอร์เบอร์นัน ๆ
                                                                            ้
การพัฒนาไมโครคอนโทรลเลอร์ในปัจจุบน
                                     ั
รูปแบบที่ 1 ใช้ไมโครคอนโทรลเลอร์มีตวแปลภาษา
                                   ั
  • โมดลสําเร็จรป ไม่ต้องพึ่งอปกรณ์ ภายนอก
    โมดูลสาเรจรูป ไมตองพงอุปกรณภายนอก
  • มี อินเตอร์พรีตเตอร์ (ตัวแปลภาษาในตัว)
  • ซอฟต์แวร์ภาษาเบสิกเขียนง่าย มีให้ใช้งานฟรี
  • ใช้เวลาในการเรียนร้น้อย พัฒนางานได้เร็ว
    ใชเวลาในการเรยนรู อย พฒนางานไดเรว




ราคาค่อนข้างสูงเมือเทียบกับไมโครคอนโทรลเลอร์ตระกูลอื่น
การพฒนาไมโครคอนโทรลเลอรในปจจุบ
     การพัฒนาไมโครคอนโทรลเลอร์ในปัจจบัน
                                                             ่
                            รูปแบบที่ 2 ใช้ไมโครคอนโทรลเลอร์ผานคอมไพเลอร์
                              ู
                                   • ต้องใช้เครื่องโปรแกรมภายนอกในการโปรแกรม
                                   • คอมไพเลอร์ภาษา C แจกฟรีี
                                        ไ      ์
                                   • ทํางานด้วยความเร็วสูง
                                   • ราคา(ไมโครคอนโทรลเลอร์ ) ไม่แพง




สําหรับผูเริ่มต้น ใช้ระยะเวลาในการเรียนรูนานกว่ารูปแบบที่ 1
        ้                               ้
ATMEGA-16 จาก ATMEL หัวใจของ IPST-MicroBOX
•   หน่วยความจําโปรแกรมภายใน 16 kByte
•   หน่วยความจํา RAM 1 kByte
•   ทํางานด้วยความเร็ว 16 ล้านคําสังต่อวินาที ทีคริสตอล 16 MHz
                                   ่            ่
•   พอร์ตอินพตเอาต์พต 32 ตําแหน่ง
    พอรตอนพุตเอาตพุ      ตาแหนง
•   วงจรพัลส์วดธ์มอดูเลเตอร์ 4 ช่อง
              ิ
•   ไทเมอร์เคาน์เตอร์ 3 ตัว
•   การสือสารอนุกรม SPI/I2C/USART
        ่
•   วงจรแปลงสัญญาณอะนาลอกเป็ นดิจตอล 10 บิต 8 ช่อง
                                 ิ
•   สามารถโปรแกรมและลบได้นบหมืนครง
          โป          ไ ้ ั ่ื ั ้
ATMEGA-16 จาก ATMEL หัวใจของ IPST-MicroBOX


                         วงจรแปลงสัญญาณ
 ไทเมอร์เคาน์เตอร์
                      อะนาลอกเปนดจตอล บต
                      อะนาลอกเปนดิจิตอล 10 บิต
                                                                      PA0-PA7
                                                            PORTA
                                                                    (อะนาลอกอินพุต)
หน่วยความจําโปรแกรม
     16 กิโลไบต์
        กโลไบต
                                                            PORTC    PC0-PC7

 หน่วยความจําข้อมูล
                                                  พอร์ต
     1 กิโลไบต์
       กโลไบต
                                                  อินพุต
                                                            PORTD    PD0-PD7
                                                 เอาต์พุต
หน่วยความจํา EEPROM
      512 ไบต์
          ไบต                                               PORTB    PB0-PB4
                                 ออสซิลเลเตอร์
                                   16 MHz
ATMEGA16                                                    PORTB
                                                                       PB5-PB7
                                                                    ดาวนโหลดโปรแกรม
                                                                    ดาวน์โหลดโปรแกรม
                                                                        แบบ ISP
พ น้ อง ในตระกล
พี่ ๆ นอง ๆ ในตระกูล ATMEGA ของ Atmel
ชุดที่ 2
  ุ




แนะนํากล่องสมองกล
แนะนากลองสมองกล
IPST-MICROBOX

    ชุดสมบูรณ์์แบบ
บอร์ดควบคุมหลัก
    ์         ั
ตาแหนงตาง บนบอร์ด IPST MICROBOX
                          ตําแหน่ งต่าง ๆ บนบอรด IPST-MICROBOX
                           พอร์ต P6-P7       พอร์ต C สําหรับ
                           (อิ นพตอะนาลอก)
                           (อนพุตอะนาลอก)    ต่อบอร์ดขับ 7 เซกเมนต์ สวิตช์ เปิด/ปิด
                                             ตอบอรดขบ เซกเมนต สวตช เปด/ปด
                                                                                        จุดต่อไฟเลี้ยง
                                                                                        จากอแดปเตอร์
พอรต P0 P5
พอร์ต P0-P5
(อิ นพุตอะนาลอก)
                                                                                         จุดต่อไฟจาก
                                                                                         แบตเตอรี่


                                                                                      ไมโครคอนโทรลเลอร์
                                                                                      ATMEGA16

 พอรต B0 B4
 พอร์ต B0-B4                                                                             คริสตอล 16 MHz
                                                                                         ครสตอล
 (เอนกประสงค์)
                                                                                         พอร์ต D
                                                                                         (เอนกประสงค)
                                                                                         (เอนกประสงค์)
                   สวิตช์รีเซต       จุดเชื่อมต่อสําหรับ        พอร์ต D0 และ D1
                                     ดาวน์ โหลดโปรแกรม          รับและส่งข้อมูลอนุกรม
กลุุมบอร์ดควบคุมและโปรแกรม
    ่          ุ
• เครืองโปรแกรม PX-400
     ่
• บอร์ดหลัก IPST-MICROBOX

กลุมแผงวงจรตรวจจับแบบดิจตอล
   ่                    ิ
• แผงวงจรสวิตช์
• โมดูลรับแสงอินฟราเรด

กลุมแผงวงจรตรวจจบแบบอ นาลอก
กล่ แผงวงจรตรวจจับแบบอะนาลอก
• วัดแสง,อุณหภูม,ิ เสียง
• วัดความต้านทาน,สนามแม่เหล็ก

กลุมแผงวงจรขับเอาต์พต
   ่                ุ
• ขับ LED ,ขับ 7 เซกเมนต์
          ,
• ขับมอเตอร์,ขับรีเลย์
กลุ บอรดควบคุมและโปรแกรม
กล่มบอร์ดควบคมและโปรแกรม




1. แผงวงจร Micro BOX
2. ชุ   ์ โ โป      PX-400 ้       ่
2 ชดดาวนโหลดโปรแกรม PX 400 พรอมสายตอพอรตอนุกรม
                                       ์
3. แผงวงจร UCON-232S สําหรับแปลงพอร์ต USB เป็ นพอร์ตอนุกรม
กลุ่มแผงวงจรขับเอาต์พต
                                                          ุ                ุ


แผงวงจรขับ LED สองสี




                                                                           แผงวงจรขับรีเลย์
                           แผงวงจรขับ ตัวเลข 7 ส่วน
แผงวงจรขับ LED อินฟราเรด
แผงวงจรขบ      อนฟราเรด




แผงวงจรขับลําโพงเปี ยโซ          แผงวงจรขับมอเตอร์
                                                        แผงวงจรแสดงผลและพอร์ตเอนกประสงค์
กล่มแผงวงจรตรวจจับแบบดิจิตอล
กลุ แผงวงจรตรวจจบแบบดจตอล



2 ชุด


                        • เป็ นอุปกรณ์รบข้อมูลดิจทล
                                 ุ      ั     ู ิ ั
                        • ให้โลจิก ‘0’ ถ้าตรวจจับคลืน
                                                    ่
                        อินฟราเรดย่านความถี่ 38kHz ได้
กลุ่มแผงวงจรตรวจจับแบบอะนาลอก
                                    ุ


    แผงวงจรตรวจจับแสง
                             แผงวงจรตรวจจับสนามแม่เหล็ก
                                                                   โมดูลตรวจจับเสียง




    แผงวงจรตรวจจบแสง
                ั ส
            อินฟราเรด           แผงวงจรตรวจจับอุณหภูมิ


                                                          โมดูลตรวจจับและวัดระยะทาง
                                                                   ด้วยแสงอินฟราเรด

แผงวงจรตรวจจับการสะท้อน   แผงวงจรตรวจวัดค่าความต้านทาน
กลุ่มแผงวงจรตัวต้านทานปรับค่าได้
                                         ุ




                                               แผงวงจรตัวต้านทานปรับค่าได้ แบบเลื่อน
แผงวงจรตัวต้านทานปรับค่าได้ ตัวตัง
                              ้ ้




                                                                  สัญลักษณ์ ของ
                                                           ตวตานทานปรบคาได
                                                           ตัวต้านทานปรับค่าได้
แผงวงจรตัวต้านทานปรับค่าได้ ตัวนอน
                              ้
ชุดที่ 3
  ุ




การติดตัง
        ้
AVR Studio
เครืื่องมือหลกในการพฒนาโปรแกรมบนไมโครคอลโทรเลอร์ตระกูล AVR
          ื ั ใ     ั โป        ไ โ     โ       ์
   เครืองมือสําหรับสร้างและแก้ไขซอร์สโค้ด
       ่
   เครืองมือสําหรับคอมไพล์ซอร์สโค้ดให้เป็ นภาษาเครือง
         ่                                         ่
   เครองมอสาหรบการจาลองการทางาน
             ่ื ื ํ ั    ํ        ํ
   เครืองมือสําหรับโปรแกรมไมโครคอนโทรลเลอร์ผานพอร์ตอนุุกรม
           ่                                     ่
* AVR Studio ไม่มีคอมไพเลอร์ภาษา C ติดตังอยู่ภายในจะต้องติดตังโปรแกรม Winavr ก่อนถึงจะคอมไพล์ภาษา C ได้
                                        ้                    ้
AVR Studio เป็ นซอฟต์แวร์จาก
            เปนซอฟตแวรจาก
ผูผลิตชิปไมโครคอนโทรลเลอร์ AVR
 ้
สามารถดาวน์ โหลดเวอร์ชนล่าสุดได้ที่
                       ั     ุ
www.atmel.com/avr

                     เลอกหวขอ
                        ื ั ้
                   Tools & Software
ซอฟต์แวร์คอมไพล์เลอร์ภาษา C สําหรับไมโครคอนโทรลเลอร์ AVR
 เป็ นซอฟต์แวร์ open source ดาวน์ โหลดโปรแกรมได้ที่
  http://sourceforge.net/projects/winavr/
  http://sourceforge net/projects/winavr/
 ผลลัพธ์จากการคอมไพล์เป็ น *.hex ดาวน์ โหลดลงไมโครคอนโทรลเลอร์
  ไดทนท
  ไ ้ ั ี
 ใช้งานร่วมกับ AVR Studio โดย AVR Studio จะค้นหาโปรแกรม
  WINAVR โ ตโนมัติหลังจากติดตังแล้้ว
            โดยอัั โ ั ั             ั้
เป็ นไฟล์สนับสนุนชุดคําสังหรือฟังก์ชนต่าง ๆ
                              ่          ั
 segment.h สําหรับควบคุมการแสดงผล 7           sound.h สําหรับการสร้างเสียง
   เซกเมนต์
                                               analog h สํ ั
                                                analog.h สาหรบการอานคาอะนาลอกจากขา
                                                                  ่ ่
 lcd.h สําหรับควบคุมการแสดงผล LCD               พอร์ตของ AVR
 led.h สําหรับควบคม LED 8 ดวงบนบอร์ด 7
        สาหรบควบคุม        ดวงบนบอรด           in out.h สําหรับการอ่านค่าและส่งค่าไปยัง
                                                in_out.h สาหรบการอานคาและสงคาไปยง
   เซกเมนต์                                      พอร์ตอินพุตเอาต์พต
                                                                  ุ
 motor.h สําหรับการควบคุมมอเตอร์
                                                     gp2d120.h srf05 h sht11 h
                                                     gp2d120 h ,srf05.h , sht11.h,
 serial.h สําหรับการสื่อสารข้อมูลอนุกรมกับ              timer.h , memsic.h
   คอมพิวเตอร์

        ทําการคัดลอก โฟลเดอร์ include ไปไว้ในไดรฟ์ C เพื่อการเรียกใช้งานได้สะดวก
ทดลองสร้าง Project
เลือก New Project หลังจากเรียกโปรแกรม AVR Studio
ทดลองสร้าง Project
 Project type:  AVR GCC
 Project name:  Counting
                                     ตังชื่อ Counting
                                       ้
 เลือก Location ตามความเหมาะสม
     ื
ทดลองสร้าง Project




รายชื่อไฟล์ที่            เขียนซอร์สโค้ด
 เกีี่ยวข้้อง                 ภาษา C




                            หน้ าต่าง
                          แสดงผลลัพธ์
                          การคอมไพล
                          การคอมไพล์
การปรับแต่งค่าในโปรเจ็ค
 โปรเจ็คทีสร้างขึนใหม่ตองผ่านการปรับค่าต่าง ๆ ก่อนเริมพัฒนา
           ่      ้     ้                             ่
  โปรแกรม
 เลือกเมนู Project  Configuration Options

 หัวข้อ General



             atmega16
                                                        เช็คทังหมด
                                                              ้


             16000000
การปรับแต่งค่าในโปรเจ็ค

              กดเพื่อเพิ่มไฟล์ iinclude
              กดเพอเพมไฟล l d




หัวข้อที่ 2
การปรับแต่งค่าในโปรเจ็ค
ปรับแต่งเฉพาะเมือต้องการใช้งานเกี่ยวข้องกับการคํานวณคณิตศาสตร์
                 ่
  serial.h และ lcd.h



                                             เพิ่มไลบรารี libm.a
ุ
ชุดคําสังในไลบรารี IPST
        ่
 in_out.h
  in out h    – รวมคาสงพนฐานเพอจดการอนพุตเอาทพุต
                รวมคําสังพืนฐานเพือจัดการอินพตเอาท์พ
                                 ่ ้ ่
   sleep.h – รวมคําสังหน่ วงเวลาเป็ นมิลลิวนาที
                       ่                    ิ
   led.h – รวมคําสังแสดงผลข้อมูลบนแถว LED 8 ดวง
                    ่
   segment.h รวมคาสงแสดงผลขอมูลบน
    segment h – รวมคําสังแสดงผลข้อมลบน LED แบบ 7 ส่วน
                                   ่                  สวน
   timer.h – รวมคําสังจับเวลา
                         ่
   analog.h - รวมคําสังอ่านค่าอินพุตแบบอะนาลอก
                               ่
   sound.h รวมคาสงสงสญญาณเสยงออกทางลาโพงเปยโซ
    sound h – รวมคําสังส่งสัญญาณเสียงออกทางลําโพงเปี ยโซ
                             ่
   motor.h – รวมคําสังควบคุมมอเตอร์ไฟตรง
                           ่
ตาแหนงตาง บนบอร์ด IPST MICROBOX
                          ตําแหน่ งต่าง ๆ บนบอรด IPST-MICROBOX
                           พอร์ต P6-P7       พอร์ต C สําหรับ
                           (อิ นพตอะนาลอก)
                           (อนพุตอะนาลอก)    ต่อบอร์ดขับ เซกเมนต์ สวิตช์ เปิด/ปิด
                                             ตอบอรดขบ 7 เซกเมนต สวตช เปด/ปด
                                                                                       จุดต่อไฟเลี้ยง
                                                                                       จากอแดปเตอร์
พอรต P0 P5
พอร์ต P0-P5
(อิ นพุตอะนาลอก)
                                                                                        จุดต่อไฟจาก
                                                                                        แบตเตอรี่


                                                                                    ไมโครคอนโทรลเลอร์
                                                                                    ATMEGA16

 พอรต B0 B4
 พอร์ต B0-B4                                                                            คริสตอล 16 MHz
                                                                                        ครสตอล
 (เอนกประสงค์)
                                                                                        พอร์ต D
                                                                                        (เอนกประสงค)
                                                                                        (เอนกประสงค์)
                   สวิตช์รีเซต       จุดเชื่อมต่อสําหรับ       พอร์ต D0 และ D1
                                     ดาวน์ โหลดโปรแกรม         รับและส่งข้อมูลอนุกรม
S1                 D1
                                      POWER              1N4002           +5V
        K1 +
DC IN/OUT -



                                                                                                                                                               IPST MicroBOX
                                                                                                                                                       วงจรของ IPST-MicroBOX
                                        R1             IC1
                                        1k          LM2940-5.0

                                                 LED1
          K2                   BD1
                              W04M
AC/DC input
       6-12V
                                                                                      +5V



                                                                                30               10
                                                     C4                       AVC C            VC C               C1         C2             C3
                                R2                0.1/50V         32                                           0.1/50V    1000/6.3V     1000uF/6.3V
                               4.7k                                     ARE F
                      R3
                     47R
                                                                   9                                                              +5V
                                                                       RESET                                        R20
                                                                                                                   150R
                                                                                                          40                                 J6
 MOSI          +5V         SW1
                                                           C5
                                                                                 IC1   PA0                                                   PA 0
                           Reset
                                                        0.1/50V               ATMEGA16                              R21
                                                                                                                   150R
RESET                                     R4                                                              39                                 J7
  SCK                                    150R
                                                                   6 PB5/MOSI                      PA1                                       PA 1
 MISO                                                                                                               R22
                                          R5                                                                       150R
                                                                                                          38                                 J8
                                         150R
                                                                   7 PB6/MISO                      PA2                                       PA 2
                                                                                                                    R23
                                          R6                                                                       150R
                                         150R                                                             37                                 J9
                                                                   8 PB7/SCK                       PA3                                       PA 3
                                                                                                                    R24
        +5V                                                                                                        150R
                                          R7                                                              36                                 J10
                                         150R                                                      PA4                                       PA 4
   J1                                                              1 PB0                                            R25
  PB0                                                                                                              150R
                                          R8                                                              35                                 J11
                                         150R                                                      PA5                                       PA 5
   J2                                                              2 PB1                                            R26
  PB1                                                                                                              150R
                                          R9                                                              34                                 J12
                                         150R                                                      PA6                                       PA 6
   J3                                                              3 PB2
                                                                       2                                            R27
  PB2                                                                                                              150R
                                         R10                                                              33                                 J13
                                         150R                                                      PA7                                       PA 7
   J4                                                              4 PB3
  PB3
                                         R11                                                                                      +5V
                                         150R
   J5                                                              5 PB4                                            R28
                                                                                                                   150R
  PB4                                                                                                     14                                 J14
                                                                                                  PD0                                        PD0/RxD
                                                                                                                    R29
        +5V                                                                                                        150R
                                                                                                          15                                 J15
                                          R12                                                     PD1                                        PD1/TxD
                                          150R                    22                                                R30
                                                                       PC0                                         150R
                                          R13                                                             16                                 J16
                                          150R
                                                                                                  PD2                                        PD2
  J22                                                             23 PC1                                            R31
PORTC                                     R14                                                             17       150R
                                                                                                                                             J17
                                          150R
                                                                  24 PC2                          PD3                                        PD3
                                          R15                                                                       R32
                                                                                                                   150R
                                          150R
                                                                  25 PC3                                  18                                 J18
                                                                                                  PD4                                        PD4
                                          R16                                                                       R33
                                          150R
                                                                  26 PC4                                  19       150R
                                                                                                                                             J19
                                          R17
                                                                                                  PD5                                        PD5
                                          150R                                                                      R34
                                                                  27                                               150R
                                                                       PC5                                20                                 J20
                                          R18                                                     PD6                                        PD6
                                          150R
                                                                  28                                                R35
                                                                       PC6                                21       150R
                                                                                                                                             J21
                                          R19                                                     PD7                                        PD7
                                          150R
                                                                  29
                                                                       PC7                                11
                                                                                                  GND
                                                                                                          31
                                                                                                  GND
                                                                         XTAL1                 XTAL2
                                                                           12                     13

                                                                        C6             Xtal1        C7
                                                                       30pF           16MHz        30pF
การเชื่อมต่อกับคอมพิวเตอร์เพื่อดาวน์ โหลดข้อมล
การเชอมตอกบคอมพวเตอรเพอดาวนโหลดขอมูล
ชุดที่ 4
  ุ




การทดลองอุปกรณ์์กลุ่ม
แผงวงจรขบ      สองส ZX-LED2C
แผงวงจรขับ LED สองสี : ZX LED2C
                              O   LED
                                        220
                                                        S
                                                        +
                                                        +       LOW
                                   R
                                       Bi-color
                             G           LED
                                                        S
                                                        +      HIGH




                ใช้
                ใ LED แบบ 2 สีในการแสดงผล โดยเลือกได้ 2 แบบ
                                                         ไ
                ช่อง HIGH ถ้าอินพุตเป็ นลอจิก "1" LED ติดเป็ นสีแดง
                ช่อง LOW ถ้าอินพตเป็ นลอจิก "0" LED ติดเป็ นสีเขียว
                ชอง         ถาอนพุตเปนลอจก            ตดเปนสเขยว
                ถ้าไม่ใช่สญญาณที่กาหนด LED จะดับ
                          ั        ํ
การทดลองที่ 1 ควบคุมการติดดับของ LED
                    ุ



             LED   Blinking




                                                                            ZX-LED2C
                                                 Bi-color LED
                                                            D
                                                       +        S   -   +   S   -




1.ทําการเชื่อมต่อแผงวงจร ZX-LED2C เข้ากับบอร์ด IPST ที่ตาแหน่ ง PD7
                                                        ํ
การทดลองที่ 1 ควบคุมการติดดับของ LED
                   ุ
2.เปิ ดโปรแกรม AVR Studio สร้างโปรเจ็กต์ใหม่แล้ว
เขียนโปรแกรมต่อไปนี้ ลงไป
เขยนโปรแกรมตอไปนลงไป

#include <ipst.h>
           p
void main()
{
     while(1)
     {
          out_b(1,1);
          out b(1 1);
          sleep(500);
          out_b(1,0);
          sleep(500);
     }
}
การทดลองที่ 1 ควบคุมการติดดับของ LED
                   ุ
                                             3. คอมไพล์โปรแกรม ตรวจสอบ
                                             หน้ าต่าง Build ต้องแสดง
                                             ข้อความ "Build Secceeded”
                        กดปุมเพอคอมไพล
                        กดป่ มเพื่อคอมไพล์   แสดงวาโปรแกรมทเขยนขนไมม
                                             แสดงว่าโปรแกรมที่เขียนขึนไม่มี
                                                                      ้
                                             ข้อผิดพลาด

                                             4. เปิดโปรแกรม AVR Prog โดย
                                             ไปที่หน้ าต่าง Tools เลือก
                                             AVR Prog

               ไ เกิดข้้อผิดพลาด
               ไม่
การทดลองที่ 1 ควบคุมการติดดับของ LED
                   ุ
                                4. เปิดโปรแกรม AVR Prog โดยไปที่หน้ าต่าง Tools
                                เลืือก AVR Prog
                                * ข้อที่ 4 ข้ามขันตอนสําคัญไปคือ การเชื่อมต่อบอร์ด
                                                 ้
                                IPST เข้ากับคอมพิวเตอร์และจ่ายไฟให้กบบอร์ด IPST
                                      เขากบคอมพวเตอรและจายไฟใหกบบอรด    ั

4. ทาการเชอมตอบอรด
4 ทําการเชื่อมต่อบอร์ด IPST
เข้ากับเครื่องโปรแกรม PX-400
5. เชื่อมต่อสายระหว่าง PX-400
กับคอมพิวเตอร์
6. จ่ายไฟให้กบบอร์ด IPST
               ั
7. เปิ ดโปรแกรม AVR Prog โ
        โ                 โดย
ไปที่หน้ าต่าง Tools
เลอก
เลือก AVR Prog
การทดลองที่ 1 ควบคุมการติดดับของ LED
                     ุ
             1. เลือกไฟล์
                                            8. กดปุ่ ม Browse เลือกตําแหน่ งที่เก็บ
                                            โปรแกรม (นามสกุล *.hex ) จะเก็บไว้ไน
                                                                ุ
                                            โฟลเดอร์ Default
                                            9. เลือกเบอร์ของไมโครคอนโทรลเลอร์
                                            ให้
                                            ใ ้ตรง
                                            10. ถ้าไม่จาเป็ นไม่ให้เข้าไปเปลี่ยนแปลง
                                                        ํ
                                            คาในโฟลเดอร
                                            ค่าในโฟลเดอร์ Advanced
                                            11. กดปุ่ ม Program เพื่อโปรแกรมข้อมูล
3. Program                                  ลงไปยังไมโครคอนโทรลเลอร์




                            2. เลือกเบอร์
sleep - คําสังหน่่ วงเวลา
          ํ ั่
 อยูในไฟล์เฮดเดอร์์ sleep.h
     ่ ไฟ ์
 การใช้งาน
   sleep(m) – หน่วงเวลา m มิลลิวนาที (โดยประมาณ)
                                ิ
        ตําแหน่ งพอร์ต
        ตาแหนงพอรต

out_d(x,y) – คําสังกําหนดขาพอร์ตมีลอจิก “0” หรือ “1”
                  ่
 อยูในไฟล์เฮดเดอร์ in_out.h
     ่
 การใช้งาน
   out_d(7,1) กําหนดให้ PD7 มีลอจิก “1”
        (,)
   out_d(6,0) กําหนดให้ PD6 มีลอจิก “0”
แผงวงจรสวิตช์ : ZX-SWITCH     D   SWITCH



                             SWITCH                 10k         S
                                                                +   LOW



                                  510                           S
                                                                +   HIGH
                                           R


                                                G    Bi-color LED




              +5    0V ลอจิก “0”                                    +5

      R1
      10k           5V ลอจิก “1”               R1

              0V                               10k
                                                                    5V
SW1                                     SW1

              GND                                                   GND
การทดลองที่ 2 การอ่านค่าจากแผงวงจรสวิตช์
1.ทําการเชื่อมต่อแผงวงจร ZX-LED2C เข้ากับบอร์ด IPST ที่ตาแหน่ ง PD7
                                                        ํ
2 เชื่อมต่อแผงวงจรสวิตช์เข้ากับช่อง PB4
2. เชอมตอแผงวงจรสวตชเขากบชอง




                                                                                        ZX
                                                             Bi-color LED
                                                             B




                                                                                         X-LED2C
                            ATMEGA16
                                                                   +        S   -   +   S   -
การทดลองที่ 2 การอ่านค่าจากแผงวงจรสวิตช์
3. เปิดโปรแกรม AVR Studio สร้างโปรเจ็กต์ใหม่แล้ว
เขียนโปรแกรมต่อไปนี้ ลงไป
เขยนโปรแกรมตอไปนลงไป
#include <ipst.h>
void main()
{
       while(1)
       {
              if(in_b(4)==0)
              {
                     out_d(7,1);
                     o t d(7 1)
              }
              else
              {
                     out_d(7,0);
              }
       }
}
การทดลองที่ 2 การอ่านค่าจากแผงวงจรสวิตช์
4. คอมไพล์โปรแกรม
5. ดาวน์ โหลดโปรแกรมลงไปยังไมโครคอนโทรลเลอร์
6. ทดสอบการทํางานของโปรแกรม



เมือกดสวิตช์ LED ......
เมอกดสวตช
   ่

เมือปล่อยสวิตช์์ LED …..
   ่
บททดสอบ 1 สวิตช์กดติด กดดับ




                                                                                                   ZX-LED
                                                                         Bi-colo LED
                                  ATMEGA16




                                                                               or




                                                                                                        D2C
                                                                              +        S   -   +   S   -




เขียนโปรแกรมใช้ฮาร์ดแวร์เดิม เมื่อกดสวิตช์ 1 ครัง LED ติด กดสวิตช์อีก 1 ครัง LED
              ใ                                 ้                          ้
ดับ สลับกันไปเรือย ๆ
                ่
เฉลย รูปแบบที่ 1
       ู




 #include <ipst.h>
 void main()
 {
        while(1)
        {
               if(in_b(4)==0)
               if(i b(4) 0)
               {
               toggle_d(7);
               sleep(300);
               }
        }
 }
เฉลย รูปแบบที่ 2
#include <ipst.h>
char a=0;
void main()
{
       while(1)
       {
               if(in_b(4)==0)
               {
                       if (a==0)
                       {
                               a=1;
                               out_d(7,1);
                       }
                       else
                       {
                               a=0;
                               out_d(7,0);
                               out d(7,0);
                       }
                       sleep(300);
               }
       }
}
ฟังชันสําหรับอ่านค่าจากพอร์ตอินพุต
      ่
 ฟังก์ชน in_a สําหรับอ่านค่าระดับสัญญาณดิจตอลจากพอร์ต A
        ั่                                ิ
 ฟังก์ชน in_b สําหรับอ่านค่าระดับสัญญาณดิจตอลจากพอร์ต B
        ั่                                      ิ
 ฟังก์ชน in_c สําหรับอ่านค่าระดับสัญญาณดิจตอลจากพอร์ต C
        ั่                                  ิ
 ฟังก์ชน in_d สําหรับอ่านค่าระดับสัญญาณดิจตอลจากพอร์ต D
        ั่                                    ิ

รูปแบบฟังก์ชน
            ั่
                                                                 +5V

                                       R4    R5     R7     R9          ตัวอย่าง
                                      150R   10k    10k    10k
                              RB5 6

       char in_a(x)           RB6 7
                                       R6
                                      150R
                                              SW1
                                                                       if (in_b5==0)
       char in_b(x)           RB7 8
                                       R8
                                      150R
                                                     SW2               {
                                                                         out_d(6,1);
                                                                            _
       char in_c(x)          GND
                                 31
                                                            SW3
                                                                       }
                             GND 11

       char in_d(x)

พารามิเตอร์ x ทําหน้ าที่กาหนดขาสัญญาณที่ต้องการอ่านค่าซึ่งมีค่าตังแต่ 0 ถึง 7
                             ํ                                    ้
การคืืนค่่า อาจมีีค่าเป็็ น 0 หรืือ 1
แผงวงจรแสดงผลตัวเลข 4 หลัก : Display4
                     ใช้แสดงผลในรูปแบบของตัวเลข 4 หลัก
                          ไฟแสดงตําแหน่่ ง 8 จุดหรืือผสมกัน
                     หรืือไฟ      ํ                       ั

                     • ใช้ LED ตวเลข 7 สวน 4 หลกแบบแคโทดรวม
                       ใช       ั       ่      ั     โ ่
                     และมี LED จํานวน 8 ดวง สามารถเลือกให้แยกกัน
                     แสดงผลหรอรวมกนกได
                     แสดงผลหรือรวมกันก็ได้
                     • มีจุดต่อขาพอร์ต C แบบ 10 ขา จํานวน 2 จุด
                     เพือต่อกับแผงวงจรหลัก MicroBOX และต่อพ่วง
                           ่
                     เพือขยายจํานวนหลักทีตองการแสดงผล
                         ่                ่ ้
                     เมือขยายจะเป็ นการขยายคราวละ 4 หลัก
                       ่
                     และมจุดตอ 3 ขา อนเปนขาควบคุมการแสดงผลของ
                             ี ่       ั ป็
                     แต่ละหลัก หากใช้ปกติ 4 หลักจะมีจุดต่อควบคุม 4 ชุด
วงจรของแผงวงจรแสดงผลตัวเลข 4 หลัก : Display4

                                  +5V

                                                     C1
                                   20
                                                  01uF/50V
   +5V                         VCC
                               IC1                                                                                          Rp2
          K2                                                                                                                1k*8
                             74HC541                               DISP1    DISP2       DISP3        DISP4
         PORT            2                   18                a
                             A0         Y0
                         3   A1         Y1   17               b
                         4                   16                c
                             A2         Y2
                         5                   15               d
                             A3         Y3
                         6                   14                e
                             A4         Y4
                         7   A5         Y5   13                f
                         8                   12               g
                             A6         Y6
                         9                   11               dp
                             A7         Y7
                         1                   19     R1-R8
 K1                          OE1 OE2
PORT                            GND                 300R       Q1        Q2           Q3          Q4
                                  10                         KRC102M   KRC102M      KRC102M     KRC102M
                 Rp1                               +5V
                220k*8



                                          J1
                                        DIGIT1

                                          J2
                                        DIGIT2

                                                                                                             LED1-LED8
                                                                                                                           common
                                          J3                                                                              controlled   ON
                                        DIGIT3
                                                                                                                  Q5
                                          J4                                                                    KRC102M                 J1
                                        DIGIT4


                                          J5
                                         LED
ฟังก์ ชั่น segment หรือ SEGMENT สํ าหรับแสดงผลข้ อมูลที่ LED ตัวเลข 7 ส่ วน
  รูปแบบฟังก์ ชั่น      void segment(unsigned int val)

  พารามิเตอร์์ val ทําหน้้ าทีกาหนดค่่ าข้้ อมูลทีต้ องการแสดงผลข้้ อมูลที่ LED ตัวเลข 7 ส่่ วน(ทั้ง 4 หลัก)
                                ่ํ                 ่
  ช่ วงข้ อมูลทีเ่ ป็ นไปได้ คอตั้งแต่ 0 ถึง 9999 เท่ านั้น ถ้ าค่ าข้ อมูลมีค่ามากกว่ านีจะแสดงข้ อความเป็ น “----”
                              ื                                                           ้

  ตัวอย่ างที่ 1
         segment(2549);                               //    แสดงค่ าข้ อมูล 2549 ที่ LED ตัวเลข 7 ส่ วน
  ตัวอย่ างที่ 2
         int i=0;
         while(1)
         {
                 sleep(1000);                                        // หน่ วงเวลา 1 วินาที
                 segment(i++);                                       // แสดงค่ าข้ อมูลของ i ที่ 7 เซกเมนต์ พร้ อมเพิมค่ า i
                                                                                                                     ่
         }
การทดลองที่ 3
แสดงผลข้้อมูลทีี่ 7 เซกเมนต์์ โดยเพ่ิ มค่่าขึึน 1 ค่่าทุกๆ 1 วิ นาทีี เร่ิ มต้้นทีี่ค่า 0
                              โ               ้

                                                 1. ทําการเชื่ือมต่่ อแผงวงจร 7
                                                      ํ
                                                 เซกเมนต์ เข้ ากับบอร์ ด IPST
                                                 • เชื่อมต่อสายข้อมูล 8 บิตจากพอร์ ต C
                                                 เขากบจุดตอ
                                                 เข้ากับจดต่อ PORT ของ DSP4
                                                 • ต่อสายจากจุด PB4 เข้ากับจุดต่อ DIGIT4
                                                 • ต่อสายจากจด PB3 เข้ากับจดต่อ DIGIT3
                                                   ตอสายจากจุด         เขากบจุดตอ
                                                 • ต่อสายจากจุด PB2 เข้ากับจุดต่อ DIGIT2
                                                   ตอสายจากจุด         เขากบจุดตอ
                                                 • ต่อสายจากจด PB1 เข้ากับจดต่อ DIGIT1
การทดลองที่ 3
2. เปิดโปรแกรม AVR Studio สร้างโปรเจ็กต์ใหม่แล้ว
เขีียนโปรแกรมต่่อไปนีี้ ลงไป
      โป         ไป ไป

#include <ipst.h>
void main()
{
     unsigned int i=0;
       hil (1)
     while(1)
     {
           segment(i );
           segment(i++);
           sleep(1000);
     }
 }
การทดลองที่ 3
4. คอมไพล์โปรแกรม
5. ดาวน์ โหลดโปรแกรมลงไปยังไมโครคอนโทรลเลอร์
6. ทดสอบการทํางานของโปรแกรม
การทดลองที่ 4   แสดงผลข้อมูลที่ 7 เซกเมนต์ โดยการเพิ่มค่าขึน 1 ค่าทุกๆ 1 วินาที
                                                             ้
                เริ่มต้นจาก 0 เมื่อนับถึง 10 ให้ปิดการแสดงผล
                เรมตนจาก เมอนบถง ใหปดการแสดงผล



#include <ipst.h>
void main()
                                             1. ใช้วงจรในการทดลองที่ 3
{
     unsigned int i=0;
         g           ;
     for(i=0;i<11;i++)                       2. เปิดโปรแกรม AVR Studio
     {                                       สร้างโปรเจ็กต์ใหม่แล้ว เขียน
          segment(i);                        โปรแกรมตอไปนลงไป
                                             โปรแกรมต่อไปนี้ ลงไป
          sleep(1000);
     }
     segment_off();
     while(1);
          ( );
}
การทดลองที่ 5   แสดงผลข้อมูลที่ 7 เซกเมนต์ โดยแสดงค่าจํานวนครังในการกดสวิตช์
                                                              ้
                (ใช้วิธีกดค้างค่าการนับจะไม่เพิ่มขึน)
                (ใชวธกดคางคาการนบจะไมเพมขน)        ้


                                        1. ใช้วงจรในการทดลองที่ 3
                                           แล้วต่อสวิตช์เพิ่มเติม
                                           เข้้าทีี่ตาแหน่่ ง PD7
                                                     ํ
                                           ในตําแหน่ งขา LOW
การทดลองที่ 5   แสดงผลข้อมูลที่ 7 เซกเมนต์ โดยแสดงค่าจํานวนครังในการกดสวิตช์
                                                              ้
                (ใช้วิธีกดค้างค่าการนับจะไม่เพิ่มขึน)
                (ใชวธกดคางคาการนบจะไมเพมขน)        ้

#include <ipst h>
          <ipst.h>                          2. เปิดโปรแกรม AVR Studio
void main()                                 สร้างโปรเจ็กต์ใหม่
{                                           แล้วเขียนโปรแกรมต่อไปนี้ ลงไป
  unsigned i t i 0
      i   d int i=0;                                ไ ์ป
                                            4. คอมไพล์โปรแกรม
  while(1)                                  5. ดาวน์ โหลดโปรแกรมลงไปยัง
  {
     segment(i);                            ไมโครคอนโทรลเลอร
                                            ไมโครคอนโทรลเลอร์
     if(in_d(7)==0)                         6. ทดสอบการทํางานของโปรแกรม
     {
        while(in_d(7)==0);
        sleep(100);
           ;
        i++;
     }
  }
}
การทดลองที่ 6   แสดงค่าจํานวนครังในการกดสวิตช์ที่ 7 เซกเมนต์ เพ่ิ มขึนทีละ 1
                                     ้                                 ้
                เมืื่อกดค้้างค่่าการนัับจะเพิ่ มขึึนอย่่างต่่อเนืื่ อง
                                                   ้

                                             1. ใช้วงจรในการทดลองที่ 5
#i l d <i t h>
#include <ipst.h>
void main()
                                             2. เปิดโปรแกรม AVR Studio
{                                            สร้างโปรเจ็กต์ใหม่
  unsigned int i=0;                          แล้้วเขีียนโปรแกรมต่่อไป ี้ ลงไป
                                                        โป         ไปนี ไป
  while(1)                                   4. คอมไพล์โปรแกรม
  {                                          5. ดาวนโหลดโปรแกรมลงไปยง
                                             5 ดาวน์ โหลดโปรแกรมลงไปยัง
     segment(i);
     if(in_d(7)==0)
                                             ไมโครคอนโทรลเลอร์
     {                                       6. ทดสอบการทํางานของโปรแกรม
       i++;
       sleep(200);

        }
    }
}
บททดสอบ 2

            เขียนโปรแกรมตังเวลานับ 60 วินาที
                           ้
            ในแบบนับลง (Count down) เมือนับ
                                        ่
            ลงมาจนกระทังถึง 0 หน้ าจอแสดงผล
                         ่
            จะต้องดับลงอัตโนมัติ
บททดสอบ 3
            เขียนโปรแกรมแสดงผลข้อมูลที่
            7 เซกเมนต์ โดยให้แสดงค่าเริ่มต้น
            ที่ 100
            เมื่อกดสวิตช์ที่ PD7 ค่าการนับจะต้อง
            เพิ่มขึน 1 ค่า
            เพมขน คา
                   ้
            เมื่อมีการกดสวิตช์ที่ PD6 ค่าการนับ
            จะต้องลดลง 1 ค่า
การทดลองที่ 7   แสดงผล LED 8 หลัก โดยแสดงค่าความสัมพันธ์ของตัวเลขที่
                กาหนดใหออกไปแสดงผลในรูปเลขฐานสอง
                กําหนดให้ออกไปแสดงผลในรปเลขฐานสอง 0b11000001

                                          1. เชื่อมต่อสายข้อมูล 8 บิตจากพอร์ต C
                                                  ของบอร์ด IPST เข้้ากับบอร์ด DSP-4
                                                          ์            ั    ์
                                          2. ต่อสายจากจุด PB0 เข้ากับบอร์ด DSP-4
                                          3. จัมเปอร์จมไปทาง COM CONTROL
                                               ๊       ั๊
การทดลองที่ 7          แสดงผล LED 8 หลัก โดยแสดงค่าความสัมพันธ์ของตัวเลขที่
                       กาหนดใหออกไปแสดงผลในรูปเลขฐานสอง
                       กําหนดให้ออกไปแสดงผลในรปเลขฐานสอง 0b11000001

4. เปิดโปรแกรม AVR Studio สร้างโปรเจ็กต์ใหม่ แล้วเขียนโปรแกรมต่อไปนี้ ลงไป
5. คอมไพล์โปรแกรม
6. ดาวน์ โหลดโปรแกรมลงไปยังไมโครคอนโทรลเลอร์
7. ทดสอบการทางานของโปรแกรม
7 ทดสอบการทํางานของโปรแกรม


    #include <ipst.h>
    void main()
    {
      while(1)
      {
         led8(0b11000001);
      }
    }
การทดลองที่ 8   ไฟกระพริบ LED 8 หลัก โปรแกรมจะสังให้ LED บิต 2 (หลักที่ 3 เมื่อนับ
                                                       ่
                จากซ้ายมือ) กับบิต 7(หลักที่ 8 เมื่อนับจากซ้ายมือ)กระพริ บต่อเนื่ อง
                จากซายมอ) กบบต 7(หลกท เมอนบจากซายมอ)กระพรบตอเนอง



                                           1. ใช้วงจรในการทดลองที่ 7
                                           2 เปิดโปรแกรม AVR Studio
                                           2. เปดโปรแกรม
 #include <ipst.h>                         สร้างโปรเจ็กต์ใหม่ แล้วเขียน
 void main()
 {
                                           โปรแกรมต่อไปนี้ ลงไป
    while(1)                               3. คอมไพล์โปรแกรม
    {                                      4. ดาวน์ โหลดโปรแกรมลงไปยัง
      l d8(0b10000100)
      led8(0b10000100);                    ไมโครคอนโทรลเลอร์์
                                           ไ โ        โ
      sleep(200);                          5. ทดสอบการทํางานของโปรแกรม
      led8(0b00000000);
      sleep(200);
    }
  }
การทดลองที่ 9   ไฟกระพริบ LED 8 หลัก ไล่ลาดับจากซ้ายไปขวา
                                         ํ




                                        1. ใช้วงจรในการทดลองที่ 7
 #include <ipst.h>
 #i l d <i t h>                         2 เปิดโปรแกรม AVR Studio
                                        2. เปดโปรแกรม
 void main()                            สร้างโปรเจ็กต์ใหม่ แล้วเขียน
 {
   unsigned char i = 0b10000000;        โปรแกรมต่อไปนี้ ลงไป
   while (1)                            3. คอมไพล์โปรแกรม
   {                                    4. ดาวน์ โหลดโปรแกรมลงไปยัง
     led8(i);
     i = i >> 1;                        ไมโครคอนโทรลเลอร์์
                                        ไ โ        โ
     if (i == 0)                        5. ทดสอบการทํางานของโปรแกรม
     {i = 0b10000000;}
     sleep(100);
   }
 }
บททดสอบ 4

            เขียนโปรแกรมแสดงไฟวิ่งที่ LED 8 หลัก
             โดยวิ่งวนจากบิต 0 ไปยังบิต 7
แผงวงจรลําโพงเปี ยโซ : SPEAKER
                           • ใช้ลาโพงเปี ยโซ มีอิมพีแดนซ์ 32
                                 ํ
                           • มีค่าความถี่เรโซแนนซ์ในย่าน 1 ถึง 3kH
                             มคาความถเรโซแนนซในยาน ถง 3kHz




         K1
       SOUND
                 C1
   +           10/16V
   S




                  SP1
                 Piezo
                speaker
ชุดคําสังสําหรับกําเนิดเสียง
        ่
ฟังก์ชน beep กําเนิดเสียงความที่ 2kHz นาน 10 mSec
      ั
    รูปแบบ
                           ตัวอย่าง
 beep_a(char     ch)
 beep_b(char
 beep b(char     ch)       beep d(3);
                              p_ ( );
 beep_c(char     ch)       ส่งเสียงออกลําโพงทีตาแหน่ง PD3
                                              ่ ํ
 beep_d(char     ch)

ฟังก์ชน sound กําเนิดเสียงโดยกําหนดความถี่และระยะเวลาได้
      ั

    รูปแบบ                                        ตัวอย่าง
sound_a(char    ch,int   freq,int     time)        sound_b(3,800,500)
                                                       d b(3 800 500)
sound_b(char    ch,int   freq,int     time)
sound_c(char    ch,int   freq,int     time)
                                                  ส่งเสียงออกลําโพงทีตาแหน่ง PB3
                                                                     ่ ํ
sound_d(char    ch,int   freq,int     time)       ความถี่ี 800 Hz ระยะเวลา 0.5 วินาทีี
                                                                                 ิ
การทดลองที่ 10           โปรแกรมกําเนิดสัญญาณเสียงแบบง่ายที่ขา PD6

 1. เชื่อมต่อลําโพงเปี ยโซเข้ากับ PD6

  * ยังไม่ต้องถอดบอร์ด 7 เซกเมนต์ออก เพื่อใช้ในการทดลองต่อไป




                                                      SPEAKER
การทดลองที่ 10   โปรแกรมกําเนิดสัญญาณเสียงแบบง่ายที่ขา PD6


                                         2. เปิดโปรแกรม AVR Studio
                                            เปดโปรแกรม
                                         สร้างโปรเจ็กต์ใหม่ แล้วเขียน
                                         โปรแกรมต่อไปนี้ ลงไป
 #include <ipst.h>                       3. คอมไพล์โปรแกรม
 void main()                             4. ดาวน์ โหลดโปรแกรมลงไปยัง
 {                                       ไมโครคอนโทรลเลอร
                                         ไมโครคอนโทรลเลอร์
   while (1)
   {
                                         5. ทดสอบการทํางานของโปรแกรม
      beep_d(6);
      beep d(6);
      sleep(200);
      beep_d(6);
      sleep(1000);
       l   (1000)
   }
 }
การทดลองที่ 11   โปรแกรมกําเนิดสัญญาณเสียงแบบง่ายแบบที่ 2 ที่ขา PD6


                                         2. เปิดโปรแกรม AVR Studio
                                            เปดโปรแกรม
                                         สร้างโปรเจ็กต์ใหม่ แล้วเขียน
                                         โปรแกรมต่อไปนี้ ลงไป
  #include <ipst.h>                      3. คอมไพล์โปรแกรม
  void main()                            4. ดาวน์ โหลดโปรแกรมลงไปยัง
  {                                      ไมโครคอนโทรลเลอร
                                         ไมโครคอนโทรลเลอร์
    while (1)
    {
                                         5. ทดสอบการทํางานของโปรแกรม
       sound_d(6,800,500);
       sound d(6 800 500);
       sleep(200);
       sound_d(6,800,500);
       sleep(1000);
        l   (1000)
    }
  }

Weitere ähnliche Inhalte

Was ist angesagt?

o-net-work4-40
o-net-work4-40o-net-work4-40
o-net-work4-40savimint
 
Chapter2 Input & Output Devices
Chapter2 Input & Output DevicesChapter2 Input & Output Devices
Chapter2 Input & Output DevicesAdul Yimngam
 
แนวข้อสอบบรรจุครูผู้ช่วย วิชาเอกคอมพิวเตอร์ ชุดที่ 4
แนวข้อสอบบรรจุครูผู้ช่วย วิชาเอกคอมพิวเตอร์ ชุดที่ 4แนวข้อสอบบรรจุครูผู้ช่วย วิชาเอกคอมพิวเตอร์ ชุดที่ 4
แนวข้อสอบบรรจุครูผู้ช่วย วิชาเอกคอมพิวเตอร์ ชุดที่ 4Mevenwen Singollo
 
ข้อสอบปรนัย 40 ข้อ เรื่องคอมพิวเตอร์เบื้องต้นนักเรียนนายสิบตำรวจ
ข้อสอบปรนัย 40 ข้อ เรื่องคอมพิวเตอร์เบื้องต้นนักเรียนนายสิบตำรวจข้อสอบปรนัย 40 ข้อ เรื่องคอมพิวเตอร์เบื้องต้นนักเรียนนายสิบตำรวจ
ข้อสอบปรนัย 40 ข้อ เรื่องคอมพิวเตอร์เบื้องต้นนักเรียนนายสิบตำรวจMarr Ps
 

Was ist angesagt? (7)

Ch08
Ch08Ch08
Ch08
 
o-net-work4-40
o-net-work4-40o-net-work4-40
o-net-work4-40
 
Chapter2 Input & Output Devices
Chapter2 Input & Output DevicesChapter2 Input & Output Devices
Chapter2 Input & Output Devices
 
Js unit 1
Js unit 1Js unit 1
Js unit 1
 
แนวข้อสอบบรรจุครูผู้ช่วย วิชาเอกคอมพิวเตอร์ ชุดที่ 4
แนวข้อสอบบรรจุครูผู้ช่วย วิชาเอกคอมพิวเตอร์ ชุดที่ 4แนวข้อสอบบรรจุครูผู้ช่วย วิชาเอกคอมพิวเตอร์ ชุดที่ 4
แนวข้อสอบบรรจุครูผู้ช่วย วิชาเอกคอมพิวเตอร์ ชุดที่ 4
 
Hardware 6
Hardware 6Hardware 6
Hardware 6
 
ข้อสอบปรนัย 40 ข้อ เรื่องคอมพิวเตอร์เบื้องต้นนักเรียนนายสิบตำรวจ
ข้อสอบปรนัย 40 ข้อ เรื่องคอมพิวเตอร์เบื้องต้นนักเรียนนายสิบตำรวจข้อสอบปรนัย 40 ข้อ เรื่องคอมพิวเตอร์เบื้องต้นนักเรียนนายสิบตำรวจ
ข้อสอบปรนัย 40 ข้อ เรื่องคอมพิวเตอร์เบื้องต้นนักเรียนนายสิบตำรวจ
 

Ähnlich wie IPST-MicroBOX 1/3 (20)

Comtype
ComtypeComtype
Comtype
 
Basiccom2
Basiccom2Basiccom2
Basiccom2
 
Cpu
CpuCpu
Cpu
 
Communication Concept
Communication ConceptCommunication Concept
Communication Concept
 
Test onet 50
Test onet 50Test onet 50
Test onet 50
 
Ch1 com tech
Ch1 com techCh1 com tech
Ch1 com tech
 
บทที่ 2. ระบบคอมพิวเตอร์
บทที่ 2. ระบบคอมพิวเตอร์บทที่ 2. ระบบคอมพิวเตอร์
บทที่ 2. ระบบคอมพิวเตอร์
 
คอมพิวเตอร์และอุปกรณ์
คอมพิวเตอร์และอุปกรณ์คอมพิวเตอร์และอุปกรณ์
คอมพิวเตอร์และอุปกรณ์
 
คอมพิวเตอร์และอุปกรณ์
คอมพิวเตอร์และอุปกรณ์คอมพิวเตอร์และอุปกรณ์
คอมพิวเตอร์และอุปกรณ์
 
Pang 3
Pang 3Pang 3
Pang 3
 
8v,
8v,8v,
8v,
 
8v,
8v,8v,
8v,
 
8v,
8v,8v,
8v,
 
8v,
8v,8v,
8v,
 
8v,
8v,8v,
8v,
 
8v,
8v,8v,
8v,
 
ระบบคอมพิวเตอร์
ระบบคอมพิวเตอร์ระบบคอมพิวเตอร์
ระบบคอมพิวเตอร์
 
ดัชนี
ดัชนีดัชนี
ดัชนี
 
อุปกรณ์เครือข่ายคอมพิวเตอร์
อุปกรณ์เครือข่ายคอมพิวเตอร์อุปกรณ์เครือข่ายคอมพิวเตอร์
อุปกรณ์เครือข่ายคอมพิวเตอร์
 
Supichaya
SupichayaSupichaya
Supichaya
 

IPST-MicroBOX 1/3

  • 1. การพฒนาโปรแกรมบน IPST-MicroBOX การพัฒนาโปรแกรมบน IPST MicroBOX กฤษดา ใจเย็น นคร ภักดีชาติ วรพจน์ กรแก้ววัฒนกุล บริษท อินโนเวตีฟ เอ็กเพอริเมนต์ จํากัด ั www.inex.co.th
  • 2. ชุดที่ 1 ุ ส่โลก สู
  • 3. สู ลกไมโครคอนโทรลเลอร์ ส่โลกไมโครคอนโทรลเลอร ประวัติไมโครโปรเซสเซอร์ คอมพิวเตอร์ คือ อุปกรณ์ทใ่ี ช้ซอฟต์แวร์เป็นตัวดําเนินการทํางาน ว่าต้องการให้ อุปกรณ์์ใดทํางานใดบ้าง ํ ใ ้ การพัฒนาระบบคอมพิวเตอร์กเป็ นรูปเป็ นร่างมากขึนเมือ Intel ได้พฒนา ็ ู ้ ่ ั อุปกรณ์สาหรับประมวลผลคําสัง่ ทีเรียกว่า “ไมโครโปรเซสเซอร์” ํ ่ "(Microprocessor)" ( p ) MPU 4004 (MCS-4)
  • 4. ไมโครโปรเซสเซอรตวแรกของโลก ไมโครโปรเซสเซอร์ตวแรกของโลก ั  1971: 4004 ไมโครโปรเซสเซอร์ เป็ นไมโครโปรเซสเซอร์ตวแรกจากอินเทล ป็ ไ โ โป ์ ั ิ ประดิษฐกรรมชินนี้พฒนาขึนเพือใช้กบเครืองคิดเลขของ Busicom และปู ้ ั ้ ่ ั ่ ทางเขาสู ารออกแบบสงประดษฐใหมๆ อยางเชน เครองคอมพวเตอรสวน ทางเข้าส่การออกแบบสิงประดิษฐ์ใหม่ๆ อย่างเช่น เครืองคอมพิวเตอร์สวน ่ ่ ่ บุคคล จํานวนทรานซิสเตอร์: 2,300 ตัว ความเร็วสัญญาณนาฬิกา: 108 kHz ็ ั  1972: 8008 ไมโครโปรเซสเซอร์ 8008 เป็ นไมโครโปรเซสเซอร์ทมประสิทธิภาพสงกว่าร่น 4004 ถึงสองเท่า เปนไมโครโปรเซสเซอรทมประสทธภาพสูงกวารุ ่ี ี ถงสองเทา โดยมีการกล่าวถึงในบทความของ Radio Electronics เมือปี 1974 ว่า อุปกรณ์ ่ ทีชอ Mark-8 ใช้ชป 8008 สําหรับ Mark-8 นันเป็ นทีรจกกันว่าคือคอมพิวเตอร์ ่ ่ื ิ ้ ่ ู้ ั รุนแรกสําหรับใช้ภายในบ้าน ่ จํานวนทรานซิสเตอร์: 3,500 ตัว ความเรว: ความเร็ว: 200 kHz
  • 5. สู ลกไมโครคอนโทรลเลอร์ ส่โลกไมโครคอนโทรลเลอร ไมโครโปรเซสเซอร์ Address การทํางานของไมโครโพรเซสเซอร์ Data ROM จะทําหน้ าที่ประมวลคําสังข้อมูลในรูป ่ ู ู สัญญาณดิจิตอล มาเทียบกับตาราง ชุดคําสัง เพื่อกําหนดการทํางานในแบบ ่ Address ตางๆ ต่างๆ สวนอตราการประมวลผลนน ส่วนอัตราการประมวลผลนัน ้ Microprocessor Data RAM ขึนอยู่กบความถี่สญญาณนาฬิกาที่ป้อนให้ ้ ั ั ไมโครโพรเซสเซอร์ จําเป็ นต้องมีอปกรณ์ ุ ร่วมอื่นๆประกอบเข้าด้วยกัน ไม่ว่าจะเป็ น Address หน่ วยความจํา อุปกรณ์ รบ-ส่งสัญญาณ ั Data I/O / ตางๆ ต่างๆ
  • 6. สู ลกไมโครคอนโทรลเลอร์ ส่โลกไมโครคอนโทรลเลอร ไมโครคอนโทรลเลอร์กบไมโครโปรเซสเซอร์ ั จริง ๆ แล้วไมโครโปรเซสเซอร์สามารถ Interrupt I t t Address นาไปประยุกตใชในงานตางๆ นําไปประยกต์ใช้ในงานต่างๆ มากมาย Data ROM แต่ด้วยขนาดของระบบซึ่งมีขนาดใหญ่ Watchdog รวมถึงลักษณะงานบางอย่างไม่ ํ ป็ ้ ใช้ จาเปนตองใชความสามารถในการ ส ใ Address ประมวลผลมากนัก RAM Microprocessor Data ไมโครคอนโทรลเลอร์จึงได้ถือกําเนิดขึน ไมโครคอนโทรลเลอรจงไดถอกาเนดขน ้ โดยได้ทาการรวมอุปกรณ์ พืนฐานต่างๆ ํ ้ Address เข้ามาอยู่ในไอซีตวเดียว เพื่อลดขนาด ั Data I/O และความซบซอนของวงจรลง ทาให และความซับซ้อนของวงจรลง ทําให้ Oscillator ราคาของระบบถูกลง MicroController
  • 7. สู ลกไมโครคอนโทรลเลอร์ ส่โลกไมโครคอนโทรลเลอร ไมโครคอนโทรลเลอร์ที่มีใช้งานทัว ๆ ไป ่ ไมโครโปรเซสเซอร์ ไมโครคอนโทรลเลอร์ MCS-51 ไมโครคอนโทรลเลอร์ PIC ไ โ โ ไมโครคอนโทรลเลอร์ BASIC Stamp ไ โ โ ไมโครคอนโทรลเลอร ไมโครคอนโทรลเลอร์ AVR
  • 8. สู ลกไมโครคอนโทรลเลอร์ ส่โลกไมโครคอนโทรลเลอร ไมโครคอนโทรลเลอร์ที่มีใช้งานทัว ๆ ไป ่
  • 9. สู ลกไมโครคอนโทรลเลอร์ ส่โลกไมโครคอนโทรลเลอร ตัวอย่างการใช้งานไมโครคอนโทรลเลอร์ในเครื่องปรับอากาศ ระบบควบคุมของเครื่องปรับอากาศ +V ตรวจสอบการเปิ ด จากรีโมตหรือสวิตช์ 220V Data In สั ่งให้คอมเพรสเซอร์ทางาน ํ Digital In Microcontroller มากกว่า Digital Out Compressor ค่าที่ต้งไว้ ั ตรวจสอบอุณหภูมิจาก เซนเซอร์ กับค่าที่ต้งไ ั ไว้ A/D in น้อยกว่า ค่าที่ต้งไว้ ั สั ่งให้คอมเพรสเซอร์หยุดทํางาน
  • 10. ขนตอนการพฒนาโปรแกรมกบไมโครคอนโทรลเลอร ขันตอนการพัฒนาโปรแกรมกับไมโครคอนโทรลเลอร์ ้ ภาษา BASIC ภาษา Java Analog Digital ซอฟตแวร ซอฟต์แวร์ ฮาร์ดแวร์์ ์ ภาษา C
  • 11. ขันตอนการพัฒนาโปรแกรมกับไมโครคอนโทรลเลอร์ ้ ออกแบบฮาร์ดแวร์ เขียนโปรแกรมบน ี โป แก้ไขข้อผิดพลาด คอมพิวเตอร์ ตรวจสอบ คอมไพล์โปรแกรม ขอผดพลาด ข้อผิดพลาด เปนภาษาเครอง เป็ นภาษาเครือง ่ ดาวนโหลดโปรแกรม ดาวน์โหลดโปรแกรม ไปยังบอร์ด
  • 12. ภาษาที่ใช้เขียนติดต่อกับไมโครคอนโทรลเลอร์ ภาษาทใชเขยนตดตอกบไมโครคอนโทรลเลอร เช่นเดียวกับการเขียนโปรแกรมบนคอมพิวเตอร์ เชนเดยวกบการเขยนโปรแกรมบนคอมพวเตอร ไมโครคอนโทรลเลอร์สามารถเขียนโปรแกรมโดยใช้ภาษาระดับสูง เช่น ภาษา BASIC ภาษา C หรือ PASCAL ได้ แต่ภาษาที่ติดกับตัวไมโครคอนโทรลเลอร์แต่ละตัวมาคือ ภาษาแอสเซมบลี้ ในแต่ละตระกูลของไมโครคอนโทรลเลอร์ กจะมโครงสรางทางภาษา (แอสแซมบล แตกตางกน ก็จะมีโครงสร้างทางภาษา (แอสแซมบลี้ ) แตกต่างกัน ภาษาสูงกับไมโครคอนโทรลเลอร์แบ่งออกเป็ น 2 รูปแบบคือ 1. ใช้คอมไพเลอร์ ภาษาต่าง ๆ ช่วยในการเขียนโปรแกรม 2. ใช้อินเตอร์พรีเตอร์ ซึ่งฝังตัวอยู่ในโมดูลไมโครคอนโทรลเลอร์เบอร์นัน ๆ ้
  • 13. การพัฒนาไมโครคอนโทรลเลอร์ในปัจจุบน ั รูปแบบที่ 1 ใช้ไมโครคอนโทรลเลอร์มีตวแปลภาษา ั • โมดลสําเร็จรป ไม่ต้องพึ่งอปกรณ์ ภายนอก โมดูลสาเรจรูป ไมตองพงอุปกรณภายนอก • มี อินเตอร์พรีตเตอร์ (ตัวแปลภาษาในตัว) • ซอฟต์แวร์ภาษาเบสิกเขียนง่าย มีให้ใช้งานฟรี • ใช้เวลาในการเรียนร้น้อย พัฒนางานได้เร็ว ใชเวลาในการเรยนรู อย พฒนางานไดเรว ราคาค่อนข้างสูงเมือเทียบกับไมโครคอนโทรลเลอร์ตระกูลอื่น
  • 14. การพฒนาไมโครคอนโทรลเลอรในปจจุบ การพัฒนาไมโครคอนโทรลเลอร์ในปัจจบัน ่ รูปแบบที่ 2 ใช้ไมโครคอนโทรลเลอร์ผานคอมไพเลอร์ ู • ต้องใช้เครื่องโปรแกรมภายนอกในการโปรแกรม • คอมไพเลอร์ภาษา C แจกฟรีี ไ ์ • ทํางานด้วยความเร็วสูง • ราคา(ไมโครคอนโทรลเลอร์ ) ไม่แพง สําหรับผูเริ่มต้น ใช้ระยะเวลาในการเรียนรูนานกว่ารูปแบบที่ 1 ้ ้
  • 15. ATMEGA-16 จาก ATMEL หัวใจของ IPST-MicroBOX • หน่วยความจําโปรแกรมภายใน 16 kByte • หน่วยความจํา RAM 1 kByte • ทํางานด้วยความเร็ว 16 ล้านคําสังต่อวินาที ทีคริสตอล 16 MHz ่ ่ • พอร์ตอินพตเอาต์พต 32 ตําแหน่ง พอรตอนพุตเอาตพุ ตาแหนง • วงจรพัลส์วดธ์มอดูเลเตอร์ 4 ช่อง ิ • ไทเมอร์เคาน์เตอร์ 3 ตัว • การสือสารอนุกรม SPI/I2C/USART ่ • วงจรแปลงสัญญาณอะนาลอกเป็ นดิจตอล 10 บิต 8 ช่อง ิ • สามารถโปรแกรมและลบได้นบหมืนครง โป ไ ้ ั ่ื ั ้
  • 16. ATMEGA-16 จาก ATMEL หัวใจของ IPST-MicroBOX วงจรแปลงสัญญาณ ไทเมอร์เคาน์เตอร์ อะนาลอกเปนดจตอล บต อะนาลอกเปนดิจิตอล 10 บิต PA0-PA7 PORTA (อะนาลอกอินพุต) หน่วยความจําโปรแกรม 16 กิโลไบต์ กโลไบต PORTC PC0-PC7 หน่วยความจําข้อมูล พอร์ต 1 กิโลไบต์ กโลไบต อินพุต PORTD PD0-PD7 เอาต์พุต หน่วยความจํา EEPROM 512 ไบต์ ไบต PORTB PB0-PB4 ออสซิลเลเตอร์ 16 MHz ATMEGA16 PORTB PB5-PB7 ดาวนโหลดโปรแกรม ดาวน์โหลดโปรแกรม แบบ ISP
  • 17. พ น้ อง ในตระกล พี่ ๆ นอง ๆ ในตระกูล ATMEGA ของ Atmel
  • 18. ชุดที่ 2 ุ แนะนํากล่องสมองกล แนะนากลองสมองกล
  • 19. IPST-MICROBOX ชุดสมบูรณ์์แบบ
  • 21. ตาแหนงตาง บนบอร์ด IPST MICROBOX ตําแหน่ งต่าง ๆ บนบอรด IPST-MICROBOX พอร์ต P6-P7 พอร์ต C สําหรับ (อิ นพตอะนาลอก) (อนพุตอะนาลอก) ต่อบอร์ดขับ 7 เซกเมนต์ สวิตช์ เปิด/ปิด ตอบอรดขบ เซกเมนต สวตช เปด/ปด จุดต่อไฟเลี้ยง จากอแดปเตอร์ พอรต P0 P5 พอร์ต P0-P5 (อิ นพุตอะนาลอก) จุดต่อไฟจาก แบตเตอรี่ ไมโครคอนโทรลเลอร์ ATMEGA16 พอรต B0 B4 พอร์ต B0-B4 คริสตอล 16 MHz ครสตอล (เอนกประสงค์) พอร์ต D (เอนกประสงค) (เอนกประสงค์) สวิตช์รีเซต จุดเชื่อมต่อสําหรับ พอร์ต D0 และ D1 ดาวน์ โหลดโปรแกรม รับและส่งข้อมูลอนุกรม
  • 22. กลุุมบอร์ดควบคุมและโปรแกรม ่ ุ • เครืองโปรแกรม PX-400 ่ • บอร์ดหลัก IPST-MICROBOX กลุมแผงวงจรตรวจจับแบบดิจตอล ่ ิ • แผงวงจรสวิตช์ • โมดูลรับแสงอินฟราเรด กลุมแผงวงจรตรวจจบแบบอ นาลอก กล่ แผงวงจรตรวจจับแบบอะนาลอก • วัดแสง,อุณหภูม,ิ เสียง • วัดความต้านทาน,สนามแม่เหล็ก กลุมแผงวงจรขับเอาต์พต ่ ุ • ขับ LED ,ขับ 7 เซกเมนต์ , • ขับมอเตอร์,ขับรีเลย์
  • 23. กลุ บอรดควบคุมและโปรแกรม กล่มบอร์ดควบคมและโปรแกรม 1. แผงวงจร Micro BOX 2. ชุ ์ โ โป PX-400 ้ ่ 2 ชดดาวนโหลดโปรแกรม PX 400 พรอมสายตอพอรตอนุกรม ์ 3. แผงวงจร UCON-232S สําหรับแปลงพอร์ต USB เป็ นพอร์ตอนุกรม
  • 24. กลุ่มแผงวงจรขับเอาต์พต ุ ุ แผงวงจรขับ LED สองสี แผงวงจรขับรีเลย์ แผงวงจรขับ ตัวเลข 7 ส่วน แผงวงจรขับ LED อินฟราเรด แผงวงจรขบ อนฟราเรด แผงวงจรขับลําโพงเปี ยโซ แผงวงจรขับมอเตอร์ แผงวงจรแสดงผลและพอร์ตเอนกประสงค์
  • 25. กล่มแผงวงจรตรวจจับแบบดิจิตอล กลุ แผงวงจรตรวจจบแบบดจตอล 2 ชุด • เป็ นอุปกรณ์รบข้อมูลดิจทล ุ ั ู ิ ั • ให้โลจิก ‘0’ ถ้าตรวจจับคลืน ่ อินฟราเรดย่านความถี่ 38kHz ได้
  • 26. กลุ่มแผงวงจรตรวจจับแบบอะนาลอก ุ แผงวงจรตรวจจับแสง แผงวงจรตรวจจับสนามแม่เหล็ก โมดูลตรวจจับเสียง แผงวงจรตรวจจบแสง ั ส อินฟราเรด แผงวงจรตรวจจับอุณหภูมิ โมดูลตรวจจับและวัดระยะทาง ด้วยแสงอินฟราเรด แผงวงจรตรวจจับการสะท้อน แผงวงจรตรวจวัดค่าความต้านทาน
  • 27. กลุ่มแผงวงจรตัวต้านทานปรับค่าได้ ุ แผงวงจรตัวต้านทานปรับค่าได้ แบบเลื่อน แผงวงจรตัวต้านทานปรับค่าได้ ตัวตัง ้ ้ สัญลักษณ์ ของ ตวตานทานปรบคาได ตัวต้านทานปรับค่าได้ แผงวงจรตัวต้านทานปรับค่าได้ ตัวนอน ้
  • 28. ชุดที่ 3 ุ การติดตัง ้
  • 29. AVR Studio เครืื่องมือหลกในการพฒนาโปรแกรมบนไมโครคอลโทรเลอร์ตระกูล AVR ื ั ใ ั โป ไ โ โ ์  เครืองมือสําหรับสร้างและแก้ไขซอร์สโค้ด ่  เครืองมือสําหรับคอมไพล์ซอร์สโค้ดให้เป็ นภาษาเครือง ่ ่  เครองมอสาหรบการจาลองการทางาน ่ื ื ํ ั ํ ํ  เครืองมือสําหรับโปรแกรมไมโครคอนโทรลเลอร์ผานพอร์ตอนุุกรม ่ ่ * AVR Studio ไม่มีคอมไพเลอร์ภาษา C ติดตังอยู่ภายในจะต้องติดตังโปรแกรม Winavr ก่อนถึงจะคอมไพล์ภาษา C ได้ ้ ้
  • 30. AVR Studio เป็ นซอฟต์แวร์จาก เปนซอฟตแวรจาก ผูผลิตชิปไมโครคอนโทรลเลอร์ AVR ้ สามารถดาวน์ โหลดเวอร์ชนล่าสุดได้ที่ ั ุ www.atmel.com/avr เลอกหวขอ ื ั ้ Tools & Software
  • 31.
  • 32. ซอฟต์แวร์คอมไพล์เลอร์ภาษา C สําหรับไมโครคอนโทรลเลอร์ AVR  เป็ นซอฟต์แวร์ open source ดาวน์ โหลดโปรแกรมได้ที่ http://sourceforge.net/projects/winavr/ http://sourceforge net/projects/winavr/  ผลลัพธ์จากการคอมไพล์เป็ น *.hex ดาวน์ โหลดลงไมโครคอนโทรลเลอร์ ไดทนท ไ ้ ั ี  ใช้งานร่วมกับ AVR Studio โดย AVR Studio จะค้นหาโปรแกรม WINAVR โ ตโนมัติหลังจากติดตังแล้้ว โดยอัั โ ั ั ั้
  • 33.
  • 34. เป็ นไฟล์สนับสนุนชุดคําสังหรือฟังก์ชนต่าง ๆ ่ ั  segment.h สําหรับควบคุมการแสดงผล 7  sound.h สําหรับการสร้างเสียง เซกเมนต์  analog h สํ ั analog.h สาหรบการอานคาอะนาลอกจากขา ่ ่  lcd.h สําหรับควบคุมการแสดงผล LCD พอร์ตของ AVR  led.h สําหรับควบคม LED 8 ดวงบนบอร์ด 7 สาหรบควบคุม ดวงบนบอรด  in out.h สําหรับการอ่านค่าและส่งค่าไปยัง in_out.h สาหรบการอานคาและสงคาไปยง เซกเมนต์ พอร์ตอินพุตเอาต์พต ุ  motor.h สําหรับการควบคุมมอเตอร์ gp2d120.h srf05 h sht11 h gp2d120 h ,srf05.h , sht11.h,  serial.h สําหรับการสื่อสารข้อมูลอนุกรมกับ timer.h , memsic.h คอมพิวเตอร์ ทําการคัดลอก โฟลเดอร์ include ไปไว้ในไดรฟ์ C เพื่อการเรียกใช้งานได้สะดวก
  • 35. ทดลองสร้าง Project เลือก New Project หลังจากเรียกโปรแกรม AVR Studio
  • 36. ทดลองสร้าง Project  Project type:  AVR GCC  Project name:  Counting ตังชื่อ Counting ้  เลือก Location ตามความเหมาะสม ื
  • 37. ทดลองสร้าง Project รายชื่อไฟล์ที่ เขียนซอร์สโค้ด เกีี่ยวข้้อง ภาษา C หน้ าต่าง แสดงผลลัพธ์ การคอมไพล การคอมไพล์
  • 38. การปรับแต่งค่าในโปรเจ็ค  โปรเจ็คทีสร้างขึนใหม่ตองผ่านการปรับค่าต่าง ๆ ก่อนเริมพัฒนา ่ ้ ้ ่ โปรแกรม  เลือกเมนู Project  Configuration Options หัวข้อ General atmega16 เช็คทังหมด ้ 16000000
  • 39. การปรับแต่งค่าในโปรเจ็ค กดเพื่อเพิ่มไฟล์ iinclude กดเพอเพมไฟล l d หัวข้อที่ 2
  • 41. ุ ชุดคําสังในไลบรารี IPST ่  in_out.h in out h – รวมคาสงพนฐานเพอจดการอนพุตเอาทพุต รวมคําสังพืนฐานเพือจัดการอินพตเอาท์พ ่ ้ ่  sleep.h – รวมคําสังหน่ วงเวลาเป็ นมิลลิวนาที ่ ิ  led.h – รวมคําสังแสดงผลข้อมูลบนแถว LED 8 ดวง ่  segment.h รวมคาสงแสดงผลขอมูลบน segment h – รวมคําสังแสดงผลข้อมลบน LED แบบ 7 ส่วน ่ สวน  timer.h – รวมคําสังจับเวลา ่  analog.h - รวมคําสังอ่านค่าอินพุตแบบอะนาลอก ่  sound.h รวมคาสงสงสญญาณเสยงออกทางลาโพงเปยโซ sound h – รวมคําสังส่งสัญญาณเสียงออกทางลําโพงเปี ยโซ ่  motor.h – รวมคําสังควบคุมมอเตอร์ไฟตรง ่
  • 42. ตาแหนงตาง บนบอร์ด IPST MICROBOX ตําแหน่ งต่าง ๆ บนบอรด IPST-MICROBOX พอร์ต P6-P7 พอร์ต C สําหรับ (อิ นพตอะนาลอก) (อนพุตอะนาลอก) ต่อบอร์ดขับ เซกเมนต์ สวิตช์ เปิด/ปิด ตอบอรดขบ 7 เซกเมนต สวตช เปด/ปด จุดต่อไฟเลี้ยง จากอแดปเตอร์ พอรต P0 P5 พอร์ต P0-P5 (อิ นพุตอะนาลอก) จุดต่อไฟจาก แบตเตอรี่ ไมโครคอนโทรลเลอร์ ATMEGA16 พอรต B0 B4 พอร์ต B0-B4 คริสตอล 16 MHz ครสตอล (เอนกประสงค์) พอร์ต D (เอนกประสงค) (เอนกประสงค์) สวิตช์รีเซต จุดเชื่อมต่อสําหรับ พอร์ต D0 และ D1 ดาวน์ โหลดโปรแกรม รับและส่งข้อมูลอนุกรม
  • 43. S1 D1 POWER 1N4002 +5V K1 + DC IN/OUT - IPST MicroBOX วงจรของ IPST-MicroBOX R1 IC1 1k LM2940-5.0 LED1 K2 BD1 W04M AC/DC input 6-12V +5V 30 10 C4 AVC C VC C C1 C2 C3 R2 0.1/50V 32 0.1/50V 1000/6.3V 1000uF/6.3V 4.7k ARE F R3 47R 9 +5V RESET R20 150R 40 J6 MOSI +5V SW1 C5 IC1 PA0 PA 0 Reset 0.1/50V ATMEGA16 R21 150R RESET R4 39 J7 SCK 150R 6 PB5/MOSI PA1 PA 1 MISO R22 R5 150R 38 J8 150R 7 PB6/MISO PA2 PA 2 R23 R6 150R 150R 37 J9 8 PB7/SCK PA3 PA 3 R24 +5V 150R R7 36 J10 150R PA4 PA 4 J1 1 PB0 R25 PB0 150R R8 35 J11 150R PA5 PA 5 J2 2 PB1 R26 PB1 150R R9 34 J12 150R PA6 PA 6 J3 3 PB2 2 R27 PB2 150R R10 33 J13 150R PA7 PA 7 J4 4 PB3 PB3 R11 +5V 150R J5 5 PB4 R28 150R PB4 14 J14 PD0 PD0/RxD R29 +5V 150R 15 J15 R12 PD1 PD1/TxD 150R 22 R30 PC0 150R R13 16 J16 150R PD2 PD2 J22 23 PC1 R31 PORTC R14 17 150R J17 150R 24 PC2 PD3 PD3 R15 R32 150R 150R 25 PC3 18 J18 PD4 PD4 R16 R33 150R 26 PC4 19 150R J19 R17 PD5 PD5 150R R34 27 150R PC5 20 J20 R18 PD6 PD6 150R 28 R35 PC6 21 150R J21 R19 PD7 PD7 150R 29 PC7 11 GND 31 GND XTAL1 XTAL2 12 13 C6 Xtal1 C7 30pF 16MHz 30pF
  • 45. ชุดที่ 4 ุ การทดลองอุปกรณ์์กลุ่ม
  • 46. แผงวงจรขบ สองส ZX-LED2C แผงวงจรขับ LED สองสี : ZX LED2C O LED 220 S + + LOW R Bi-color G LED S + HIGH ใช้ ใ LED แบบ 2 สีในการแสดงผล โดยเลือกได้ 2 แบบ ไ ช่อง HIGH ถ้าอินพุตเป็ นลอจิก "1" LED ติดเป็ นสีแดง ช่อง LOW ถ้าอินพตเป็ นลอจิก "0" LED ติดเป็ นสีเขียว ชอง ถาอนพุตเปนลอจก ตดเปนสเขยว ถ้าไม่ใช่สญญาณที่กาหนด LED จะดับ ั ํ
  • 47. การทดลองที่ 1 ควบคุมการติดดับของ LED ุ LED Blinking ZX-LED2C Bi-color LED D + S - + S - 1.ทําการเชื่อมต่อแผงวงจร ZX-LED2C เข้ากับบอร์ด IPST ที่ตาแหน่ ง PD7 ํ
  • 48. การทดลองที่ 1 ควบคุมการติดดับของ LED ุ 2.เปิ ดโปรแกรม AVR Studio สร้างโปรเจ็กต์ใหม่แล้ว เขียนโปรแกรมต่อไปนี้ ลงไป เขยนโปรแกรมตอไปนลงไป #include <ipst.h> p void main() { while(1) { out_b(1,1); out b(1 1); sleep(500); out_b(1,0); sleep(500); } }
  • 49. การทดลองที่ 1 ควบคุมการติดดับของ LED ุ 3. คอมไพล์โปรแกรม ตรวจสอบ หน้ าต่าง Build ต้องแสดง ข้อความ "Build Secceeded” กดปุมเพอคอมไพล กดป่ มเพื่อคอมไพล์ แสดงวาโปรแกรมทเขยนขนไมม แสดงว่าโปรแกรมที่เขียนขึนไม่มี ้ ข้อผิดพลาด 4. เปิดโปรแกรม AVR Prog โดย ไปที่หน้ าต่าง Tools เลือก AVR Prog ไ เกิดข้้อผิดพลาด ไม่
  • 50. การทดลองที่ 1 ควบคุมการติดดับของ LED ุ 4. เปิดโปรแกรม AVR Prog โดยไปที่หน้ าต่าง Tools เลืือก AVR Prog * ข้อที่ 4 ข้ามขันตอนสําคัญไปคือ การเชื่อมต่อบอร์ด ้ IPST เข้ากับคอมพิวเตอร์และจ่ายไฟให้กบบอร์ด IPST เขากบคอมพวเตอรและจายไฟใหกบบอรด ั 4. ทาการเชอมตอบอรด 4 ทําการเชื่อมต่อบอร์ด IPST เข้ากับเครื่องโปรแกรม PX-400 5. เชื่อมต่อสายระหว่าง PX-400 กับคอมพิวเตอร์ 6. จ่ายไฟให้กบบอร์ด IPST ั 7. เปิ ดโปรแกรม AVR Prog โ โ โดย ไปที่หน้ าต่าง Tools เลอก เลือก AVR Prog
  • 51. การทดลองที่ 1 ควบคุมการติดดับของ LED ุ 1. เลือกไฟล์ 8. กดปุ่ ม Browse เลือกตําแหน่ งที่เก็บ โปรแกรม (นามสกุล *.hex ) จะเก็บไว้ไน ุ โฟลเดอร์ Default 9. เลือกเบอร์ของไมโครคอนโทรลเลอร์ ให้ ใ ้ตรง 10. ถ้าไม่จาเป็ นไม่ให้เข้าไปเปลี่ยนแปลง ํ คาในโฟลเดอร ค่าในโฟลเดอร์ Advanced 11. กดปุ่ ม Program เพื่อโปรแกรมข้อมูล 3. Program ลงไปยังไมโครคอนโทรลเลอร์ 2. เลือกเบอร์
  • 52. sleep - คําสังหน่่ วงเวลา ํ ั่  อยูในไฟล์เฮดเดอร์์ sleep.h ่ ไฟ ์  การใช้งาน sleep(m) – หน่วงเวลา m มิลลิวนาที (โดยประมาณ) ิ ตําแหน่ งพอร์ต ตาแหนงพอรต out_d(x,y) – คําสังกําหนดขาพอร์ตมีลอจิก “0” หรือ “1” ่  อยูในไฟล์เฮดเดอร์ in_out.h ่  การใช้งาน out_d(7,1) กําหนดให้ PD7 มีลอจิก “1” (,) out_d(6,0) กําหนดให้ PD6 มีลอจิก “0”
  • 53. แผงวงจรสวิตช์ : ZX-SWITCH D SWITCH SWITCH 10k S + LOW 510 S + HIGH R G Bi-color LED +5 0V ลอจิก “0” +5 R1 10k 5V ลอจิก “1” R1 0V 10k 5V SW1 SW1 GND GND
  • 54. การทดลองที่ 2 การอ่านค่าจากแผงวงจรสวิตช์ 1.ทําการเชื่อมต่อแผงวงจร ZX-LED2C เข้ากับบอร์ด IPST ที่ตาแหน่ ง PD7 ํ 2 เชื่อมต่อแผงวงจรสวิตช์เข้ากับช่อง PB4 2. เชอมตอแผงวงจรสวตชเขากบชอง ZX Bi-color LED B X-LED2C ATMEGA16 + S - + S -
  • 55. การทดลองที่ 2 การอ่านค่าจากแผงวงจรสวิตช์ 3. เปิดโปรแกรม AVR Studio สร้างโปรเจ็กต์ใหม่แล้ว เขียนโปรแกรมต่อไปนี้ ลงไป เขยนโปรแกรมตอไปนลงไป #include <ipst.h> void main() { while(1) { if(in_b(4)==0) { out_d(7,1); o t d(7 1) } else { out_d(7,0); } } }
  • 56. การทดลองที่ 2 การอ่านค่าจากแผงวงจรสวิตช์ 4. คอมไพล์โปรแกรม 5. ดาวน์ โหลดโปรแกรมลงไปยังไมโครคอนโทรลเลอร์ 6. ทดสอบการทํางานของโปรแกรม เมือกดสวิตช์ LED ...... เมอกดสวตช ่ เมือปล่อยสวิตช์์ LED ….. ่
  • 57. บททดสอบ 1 สวิตช์กดติด กดดับ ZX-LED Bi-colo LED ATMEGA16 or D2C + S - + S - เขียนโปรแกรมใช้ฮาร์ดแวร์เดิม เมื่อกดสวิตช์ 1 ครัง LED ติด กดสวิตช์อีก 1 ครัง LED ใ ้ ้ ดับ สลับกันไปเรือย ๆ ่
  • 58. เฉลย รูปแบบที่ 1 ู #include <ipst.h> void main() { while(1) { if(in_b(4)==0) if(i b(4) 0) { toggle_d(7); sleep(300); } } }
  • 59. เฉลย รูปแบบที่ 2 #include <ipst.h> char a=0; void main() { while(1) { if(in_b(4)==0) { if (a==0) { a=1; out_d(7,1); } else { a=0; out_d(7,0); out d(7,0); } sleep(300); } } }
  • 60. ฟังชันสําหรับอ่านค่าจากพอร์ตอินพุต ่ ฟังก์ชน in_a สําหรับอ่านค่าระดับสัญญาณดิจตอลจากพอร์ต A ั่ ิ ฟังก์ชน in_b สําหรับอ่านค่าระดับสัญญาณดิจตอลจากพอร์ต B ั่ ิ ฟังก์ชน in_c สําหรับอ่านค่าระดับสัญญาณดิจตอลจากพอร์ต C ั่ ิ ฟังก์ชน in_d สําหรับอ่านค่าระดับสัญญาณดิจตอลจากพอร์ต D ั่ ิ รูปแบบฟังก์ชน ั่ +5V R4 R5 R7 R9 ตัวอย่าง 150R 10k 10k 10k RB5 6 char in_a(x) RB6 7 R6 150R SW1 if (in_b5==0) char in_b(x) RB7 8 R8 150R SW2 { out_d(6,1); _ char in_c(x) GND 31 SW3 } GND 11 char in_d(x) พารามิเตอร์ x ทําหน้ าที่กาหนดขาสัญญาณที่ต้องการอ่านค่าซึ่งมีค่าตังแต่ 0 ถึง 7 ํ ้ การคืืนค่่า อาจมีีค่าเป็็ น 0 หรืือ 1
  • 61. แผงวงจรแสดงผลตัวเลข 4 หลัก : Display4 ใช้แสดงผลในรูปแบบของตัวเลข 4 หลัก ไฟแสดงตําแหน่่ ง 8 จุดหรืือผสมกัน หรืือไฟ ํ ั • ใช้ LED ตวเลข 7 สวน 4 หลกแบบแคโทดรวม ใช ั ่ ั โ ่ และมี LED จํานวน 8 ดวง สามารถเลือกให้แยกกัน แสดงผลหรอรวมกนกได แสดงผลหรือรวมกันก็ได้ • มีจุดต่อขาพอร์ต C แบบ 10 ขา จํานวน 2 จุด เพือต่อกับแผงวงจรหลัก MicroBOX และต่อพ่วง ่ เพือขยายจํานวนหลักทีตองการแสดงผล ่ ่ ้ เมือขยายจะเป็ นการขยายคราวละ 4 หลัก ่ และมจุดตอ 3 ขา อนเปนขาควบคุมการแสดงผลของ ี ่ ั ป็ แต่ละหลัก หากใช้ปกติ 4 หลักจะมีจุดต่อควบคุม 4 ชุด
  • 62. วงจรของแผงวงจรแสดงผลตัวเลข 4 หลัก : Display4 +5V C1 20 01uF/50V +5V VCC IC1 Rp2 K2 1k*8 74HC541 DISP1 DISP2 DISP3 DISP4 PORT 2 18 a A0 Y0 3 A1 Y1 17 b 4 16 c A2 Y2 5 15 d A3 Y3 6 14 e A4 Y4 7 A5 Y5 13 f 8 12 g A6 Y6 9 11 dp A7 Y7 1 19 R1-R8 K1 OE1 OE2 PORT GND 300R Q1 Q2 Q3 Q4 10 KRC102M KRC102M KRC102M KRC102M Rp1 +5V 220k*8 J1 DIGIT1 J2 DIGIT2 LED1-LED8 common J3 controlled ON DIGIT3 Q5 J4 KRC102M J1 DIGIT4 J5 LED
  • 63. ฟังก์ ชั่น segment หรือ SEGMENT สํ าหรับแสดงผลข้ อมูลที่ LED ตัวเลข 7 ส่ วน รูปแบบฟังก์ ชั่น void segment(unsigned int val) พารามิเตอร์์ val ทําหน้้ าทีกาหนดค่่ าข้้ อมูลทีต้ องการแสดงผลข้้ อมูลที่ LED ตัวเลข 7 ส่่ วน(ทั้ง 4 หลัก) ่ํ ่ ช่ วงข้ อมูลทีเ่ ป็ นไปได้ คอตั้งแต่ 0 ถึง 9999 เท่ านั้น ถ้ าค่ าข้ อมูลมีค่ามากกว่ านีจะแสดงข้ อความเป็ น “----” ื ้ ตัวอย่ างที่ 1 segment(2549); // แสดงค่ าข้ อมูล 2549 ที่ LED ตัวเลข 7 ส่ วน ตัวอย่ างที่ 2 int i=0; while(1) { sleep(1000); // หน่ วงเวลา 1 วินาที segment(i++); // แสดงค่ าข้ อมูลของ i ที่ 7 เซกเมนต์ พร้ อมเพิมค่ า i ่ }
  • 64. การทดลองที่ 3 แสดงผลข้้อมูลทีี่ 7 เซกเมนต์์ โดยเพ่ิ มค่่าขึึน 1 ค่่าทุกๆ 1 วิ นาทีี เร่ิ มต้้นทีี่ค่า 0 โ ้ 1. ทําการเชื่ือมต่่ อแผงวงจร 7 ํ เซกเมนต์ เข้ ากับบอร์ ด IPST • เชื่อมต่อสายข้อมูล 8 บิตจากพอร์ ต C เขากบจุดตอ เข้ากับจดต่อ PORT ของ DSP4 • ต่อสายจากจุด PB4 เข้ากับจุดต่อ DIGIT4 • ต่อสายจากจด PB3 เข้ากับจดต่อ DIGIT3 ตอสายจากจุด เขากบจุดตอ • ต่อสายจากจุด PB2 เข้ากับจุดต่อ DIGIT2 ตอสายจากจุด เขากบจุดตอ • ต่อสายจากจด PB1 เข้ากับจดต่อ DIGIT1
  • 65. การทดลองที่ 3 2. เปิดโปรแกรม AVR Studio สร้างโปรเจ็กต์ใหม่แล้ว เขีียนโปรแกรมต่่อไปนีี้ ลงไป โป ไป ไป #include <ipst.h> void main() { unsigned int i=0; hil (1) while(1) { segment(i ); segment(i++); sleep(1000); } }
  • 66. การทดลองที่ 3 4. คอมไพล์โปรแกรม 5. ดาวน์ โหลดโปรแกรมลงไปยังไมโครคอนโทรลเลอร์ 6. ทดสอบการทํางานของโปรแกรม
  • 67. การทดลองที่ 4 แสดงผลข้อมูลที่ 7 เซกเมนต์ โดยการเพิ่มค่าขึน 1 ค่าทุกๆ 1 วินาที ้ เริ่มต้นจาก 0 เมื่อนับถึง 10 ให้ปิดการแสดงผล เรมตนจาก เมอนบถง ใหปดการแสดงผล #include <ipst.h> void main() 1. ใช้วงจรในการทดลองที่ 3 { unsigned int i=0; g ; for(i=0;i<11;i++) 2. เปิดโปรแกรม AVR Studio { สร้างโปรเจ็กต์ใหม่แล้ว เขียน segment(i); โปรแกรมตอไปนลงไป โปรแกรมต่อไปนี้ ลงไป sleep(1000); } segment_off(); while(1); ( ); }
  • 68. การทดลองที่ 5 แสดงผลข้อมูลที่ 7 เซกเมนต์ โดยแสดงค่าจํานวนครังในการกดสวิตช์ ้ (ใช้วิธีกดค้างค่าการนับจะไม่เพิ่มขึน) (ใชวธกดคางคาการนบจะไมเพมขน) ้ 1. ใช้วงจรในการทดลองที่ 3 แล้วต่อสวิตช์เพิ่มเติม เข้้าทีี่ตาแหน่่ ง PD7 ํ ในตําแหน่ งขา LOW
  • 69. การทดลองที่ 5 แสดงผลข้อมูลที่ 7 เซกเมนต์ โดยแสดงค่าจํานวนครังในการกดสวิตช์ ้ (ใช้วิธีกดค้างค่าการนับจะไม่เพิ่มขึน) (ใชวธกดคางคาการนบจะไมเพมขน) ้ #include <ipst h> <ipst.h> 2. เปิดโปรแกรม AVR Studio void main() สร้างโปรเจ็กต์ใหม่ { แล้วเขียนโปรแกรมต่อไปนี้ ลงไป unsigned i t i 0 i d int i=0; ไ ์ป 4. คอมไพล์โปรแกรม while(1) 5. ดาวน์ โหลดโปรแกรมลงไปยัง { segment(i); ไมโครคอนโทรลเลอร ไมโครคอนโทรลเลอร์ if(in_d(7)==0) 6. ทดสอบการทํางานของโปรแกรม { while(in_d(7)==0); sleep(100); ; i++; } } }
  • 70. การทดลองที่ 6 แสดงค่าจํานวนครังในการกดสวิตช์ที่ 7 เซกเมนต์ เพ่ิ มขึนทีละ 1 ้ ้ เมืื่อกดค้้างค่่าการนัับจะเพิ่ มขึึนอย่่างต่่อเนืื่ อง ้ 1. ใช้วงจรในการทดลองที่ 5 #i l d <i t h> #include <ipst.h> void main() 2. เปิดโปรแกรม AVR Studio { สร้างโปรเจ็กต์ใหม่ unsigned int i=0; แล้้วเขีียนโปรแกรมต่่อไป ี้ ลงไป โป ไปนี ไป while(1) 4. คอมไพล์โปรแกรม { 5. ดาวนโหลดโปรแกรมลงไปยง 5 ดาวน์ โหลดโปรแกรมลงไปยัง segment(i); if(in_d(7)==0) ไมโครคอนโทรลเลอร์ { 6. ทดสอบการทํางานของโปรแกรม i++; sleep(200); } } }
  • 71. บททดสอบ 2 เขียนโปรแกรมตังเวลานับ 60 วินาที ้ ในแบบนับลง (Count down) เมือนับ ่ ลงมาจนกระทังถึง 0 หน้ าจอแสดงผล ่ จะต้องดับลงอัตโนมัติ
  • 72. บททดสอบ 3 เขียนโปรแกรมแสดงผลข้อมูลที่ 7 เซกเมนต์ โดยให้แสดงค่าเริ่มต้น ที่ 100 เมื่อกดสวิตช์ที่ PD7 ค่าการนับจะต้อง เพิ่มขึน 1 ค่า เพมขน คา ้ เมื่อมีการกดสวิตช์ที่ PD6 ค่าการนับ จะต้องลดลง 1 ค่า
  • 73. การทดลองที่ 7 แสดงผล LED 8 หลัก โดยแสดงค่าความสัมพันธ์ของตัวเลขที่ กาหนดใหออกไปแสดงผลในรูปเลขฐานสอง กําหนดให้ออกไปแสดงผลในรปเลขฐานสอง 0b11000001 1. เชื่อมต่อสายข้อมูล 8 บิตจากพอร์ต C ของบอร์ด IPST เข้้ากับบอร์ด DSP-4 ์ ั ์ 2. ต่อสายจากจุด PB0 เข้ากับบอร์ด DSP-4 3. จัมเปอร์จมไปทาง COM CONTROL ๊ ั๊
  • 74. การทดลองที่ 7 แสดงผล LED 8 หลัก โดยแสดงค่าความสัมพันธ์ของตัวเลขที่ กาหนดใหออกไปแสดงผลในรูปเลขฐานสอง กําหนดให้ออกไปแสดงผลในรปเลขฐานสอง 0b11000001 4. เปิดโปรแกรม AVR Studio สร้างโปรเจ็กต์ใหม่ แล้วเขียนโปรแกรมต่อไปนี้ ลงไป 5. คอมไพล์โปรแกรม 6. ดาวน์ โหลดโปรแกรมลงไปยังไมโครคอนโทรลเลอร์ 7. ทดสอบการทางานของโปรแกรม 7 ทดสอบการทํางานของโปรแกรม #include <ipst.h> void main() { while(1) { led8(0b11000001); } }
  • 75. การทดลองที่ 8 ไฟกระพริบ LED 8 หลัก โปรแกรมจะสังให้ LED บิต 2 (หลักที่ 3 เมื่อนับ ่ จากซ้ายมือ) กับบิต 7(หลักที่ 8 เมื่อนับจากซ้ายมือ)กระพริ บต่อเนื่ อง จากซายมอ) กบบต 7(หลกท เมอนบจากซายมอ)กระพรบตอเนอง 1. ใช้วงจรในการทดลองที่ 7 2 เปิดโปรแกรม AVR Studio 2. เปดโปรแกรม #include <ipst.h> สร้างโปรเจ็กต์ใหม่ แล้วเขียน void main() { โปรแกรมต่อไปนี้ ลงไป while(1) 3. คอมไพล์โปรแกรม { 4. ดาวน์ โหลดโปรแกรมลงไปยัง l d8(0b10000100) led8(0b10000100); ไมโครคอนโทรลเลอร์์ ไ โ โ sleep(200); 5. ทดสอบการทํางานของโปรแกรม led8(0b00000000); sleep(200); } }
  • 76. การทดลองที่ 9 ไฟกระพริบ LED 8 หลัก ไล่ลาดับจากซ้ายไปขวา ํ 1. ใช้วงจรในการทดลองที่ 7 #include <ipst.h> #i l d <i t h> 2 เปิดโปรแกรม AVR Studio 2. เปดโปรแกรม void main() สร้างโปรเจ็กต์ใหม่ แล้วเขียน { unsigned char i = 0b10000000; โปรแกรมต่อไปนี้ ลงไป while (1) 3. คอมไพล์โปรแกรม { 4. ดาวน์ โหลดโปรแกรมลงไปยัง led8(i); i = i >> 1; ไมโครคอนโทรลเลอร์์ ไ โ โ if (i == 0) 5. ทดสอบการทํางานของโปรแกรม {i = 0b10000000;} sleep(100); } }
  • 77. บททดสอบ 4 เขียนโปรแกรมแสดงไฟวิ่งที่ LED 8 หลัก โดยวิ่งวนจากบิต 0 ไปยังบิต 7
  • 78. แผงวงจรลําโพงเปี ยโซ : SPEAKER • ใช้ลาโพงเปี ยโซ มีอิมพีแดนซ์ 32 ํ • มีค่าความถี่เรโซแนนซ์ในย่าน 1 ถึง 3kH มคาความถเรโซแนนซในยาน ถง 3kHz K1 SOUND C1 + 10/16V S SP1 Piezo speaker
  • 79. ชุดคําสังสําหรับกําเนิดเสียง ่ ฟังก์ชน beep กําเนิดเสียงความที่ 2kHz นาน 10 mSec ั รูปแบบ ตัวอย่าง beep_a(char ch) beep_b(char beep b(char ch) beep d(3); p_ ( ); beep_c(char ch) ส่งเสียงออกลําโพงทีตาแหน่ง PD3 ่ ํ beep_d(char ch) ฟังก์ชน sound กําเนิดเสียงโดยกําหนดความถี่และระยะเวลาได้ ั รูปแบบ ตัวอย่าง sound_a(char ch,int freq,int time) sound_b(3,800,500) d b(3 800 500) sound_b(char ch,int freq,int time) sound_c(char ch,int freq,int time) ส่งเสียงออกลําโพงทีตาแหน่ง PB3 ่ ํ sound_d(char ch,int freq,int time) ความถี่ี 800 Hz ระยะเวลา 0.5 วินาทีี ิ
  • 80. การทดลองที่ 10 โปรแกรมกําเนิดสัญญาณเสียงแบบง่ายที่ขา PD6 1. เชื่อมต่อลําโพงเปี ยโซเข้ากับ PD6 * ยังไม่ต้องถอดบอร์ด 7 เซกเมนต์ออก เพื่อใช้ในการทดลองต่อไป SPEAKER
  • 81. การทดลองที่ 10 โปรแกรมกําเนิดสัญญาณเสียงแบบง่ายที่ขา PD6 2. เปิดโปรแกรม AVR Studio เปดโปรแกรม สร้างโปรเจ็กต์ใหม่ แล้วเขียน โปรแกรมต่อไปนี้ ลงไป #include <ipst.h> 3. คอมไพล์โปรแกรม void main() 4. ดาวน์ โหลดโปรแกรมลงไปยัง { ไมโครคอนโทรลเลอร ไมโครคอนโทรลเลอร์ while (1) { 5. ทดสอบการทํางานของโปรแกรม beep_d(6); beep d(6); sleep(200); beep_d(6); sleep(1000); l (1000) } }
  • 82. การทดลองที่ 11 โปรแกรมกําเนิดสัญญาณเสียงแบบง่ายแบบที่ 2 ที่ขา PD6 2. เปิดโปรแกรม AVR Studio เปดโปรแกรม สร้างโปรเจ็กต์ใหม่ แล้วเขียน โปรแกรมต่อไปนี้ ลงไป #include <ipst.h> 3. คอมไพล์โปรแกรม void main() 4. ดาวน์ โหลดโปรแกรมลงไปยัง { ไมโครคอนโทรลเลอร ไมโครคอนโทรลเลอร์ while (1) { 5. ทดสอบการทํางานของโปรแกรม sound_d(6,800,500); sound d(6 800 500); sleep(200); sound_d(6,800,500); sleep(1000); l (1000) } }