More Related Content Similar to IPST-MicroBOX 1/3 (20) IPST-MicroBOX 1/33. สู ลกไมโครคอนโทรลเลอร์
ส่โลกไมโครคอนโทรลเลอร
ประวัติไมโครโปรเซสเซอร์
คอมพิวเตอร์ คือ อุปกรณ์ทใ่ี ช้ซอฟต์แวร์เป็นตัวดําเนินการทํางาน ว่าต้องการให้
อุปกรณ์์ใดทํางานใดบ้าง
ํ ใ ้
การพัฒนาระบบคอมพิวเตอร์กเป็ นรูปเป็ นร่างมากขึนเมือ 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
9. สู ลกไมโครคอนโทรลเลอร์
ส่โลกไมโครคอนโทรลเลอร
ตัวอย่างการใช้งานไมโครคอนโทรลเลอร์ในเครื่องปรับอากาศ
ระบบควบคุมของเครื่องปรับอากาศ
+V
ตรวจสอบการเปิ ด
จากรีโมตหรือสวิตช์
220V
Data In
สั ่งให้คอมเพรสเซอร์ทางาน
ํ
Digital In
Microcontroller มากกว่า
Digital Out Compressor ค่าที่ต้งไว้
ั
ตรวจสอบอุณหภูมิจาก
เซนเซอร์ กับค่าที่ต้งไ
ั ไว้
A/D in น้อยกว่า
ค่าที่ต้งไว้
ั
สั ่งให้คอมเพรสเซอร์หยุดทํางาน
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
ุ
แนะนํากล่องสมองกล
แนะนากลองสมองกล
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 เซกเมนต์
,
• ขับมอเตอร์,ขับรีเลย์
24. กลุ่มแผงวงจรขับเอาต์พต
ุ ุ
แผงวงจรขับ LED สองสี
แผงวงจรขับรีเลย์
แผงวงจรขับ ตัวเลข 7 ส่วน
แผงวงจรขับ LED อินฟราเรด
แผงวงจรขบ อนฟราเรด
แผงวงจรขับลําโพงเปี ยโซ แผงวงจรขับมอเตอร์
แผงวงจรแสดงผลและพอร์ตเอนกประสงค์
26. กลุ่มแผงวงจรตรวจจับแบบอะนาลอก
ุ
แผงวงจรตรวจจับแสง
แผงวงจรตรวจจับสนามแม่เหล็ก
โมดูลตรวจจับเสียง
แผงวงจรตรวจจบแสง
ั ส
อินฟราเรด แผงวงจรตรวจจับอุณหภูมิ
โมดูลตรวจจับและวัดระยะทาง
ด้วยแสงอินฟราเรด
แผงวงจรตรวจจับการสะท้อน แผงวงจรตรวจวัดค่าความต้านทาน
27. กลุ่มแผงวงจรตัวต้านทานปรับค่าได้
ุ
แผงวงจรตัวต้านทานปรับค่าได้ แบบเลื่อน
แผงวงจรตัวต้านทานปรับค่าได้ ตัวตัง
้ ้
สัญลักษณ์ ของ
ตวตานทานปรบคาได
ตัวต้านทานปรับค่าได้
แผงวงจรตัวต้านทานปรับค่าได้ ตัวนอน
้
29. AVR Studio
เครืื่องมือหลกในการพฒนาโปรแกรมบนไมโครคอลโทรเลอร์ตระกูล AVR
ื ั ใ ั โป ไ โ โ ์
เครืองมือสําหรับสร้างและแก้ไขซอร์สโค้ด
่
เครืองมือสําหรับคอมไพล์ซอร์สโค้ดให้เป็ นภาษาเครือง
่ ่
เครองมอสาหรบการจาลองการทางาน
่ื ื ํ ั ํ ํ
เครืองมือสําหรับโปรแกรมไมโครคอนโทรลเลอร์ผานพอร์ตอนุุกรม
่ ่
* AVR Studio ไม่มีคอมไพเลอร์ภาษา C ติดตังอยู่ภายในจะต้องติดตังโปรแกรม Winavr ก่อนถึงจะคอมไพล์ภาษา C ได้
้ ้
30. AVR Studio เป็ นซอฟต์แวร์จาก
เปนซอฟตแวรจาก
ผูผลิตชิปไมโครคอนโทรลเลอร์ AVR
้
สามารถดาวน์ โหลดเวอร์ชนล่าสุดได้ที่
ั ุ
www.atmel.com/avr
เลอกหวขอ
ื ั ้
Tools & Software
32. ซอฟต์แวร์คอมไพล์เลอร์ภาษา C สําหรับไมโครคอนโทรลเลอร์ AVR
เป็ นซอฟต์แวร์ open source ดาวน์ โหลดโปรแกรมได้ที่
http://sourceforge.net/projects/winavr/
http://sourceforge net/projects/winavr/
ผลลัพธ์จากการคอมไพล์เป็ น *.hex ดาวน์ โหลดลงไมโครคอนโทรลเลอร์
ไดทนท
ไ ้ ั ี
ใช้งานร่วมกับ AVR Studio โดย AVR Studio จะค้นหาโปรแกรม
WINAVR โ ตโนมัติหลังจากติดตังแล้้ว
โดยอัั โ ั ั ั้
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 เพื่อการเรียกใช้งานได้สะดวก
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
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
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);
}
}
}
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);
}
}
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)
}
}