02 lab microbox1

38
IPST-MicroBOX กล่องสมองกล กิจกรรมการทดลอง การทดลองอุปกรณ์กลุ่ม

Upload: strisuksa-roi-et

Post on 24-Jun-2015

1.190 views

Category:

Education


2 download

DESCRIPTION

กิจกรรมการทดลองกลุ่ม แผงวงจรตรวจจับแบบดิจิตอล

TRANSCRIPT

Page 1: 02 lab microbox1

IPST-MicroBOX

กล่องสมองกล

กิจกรรมการทดลองการทดลองอุปกรณ์กลุม่

Page 2: 02 lab microbox1

แผงวงจรขบั แผงวงจรขบั LED LED สองสี สองสี : : ZXZX--LEDLED22CC

220

HIGH

LOW

O LED

Bi-colorLED

R

G

+S

+S

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

Page 3: 02 lab microbox1

การทดลองที� 1 ควบคมุการติดดบัของ LED

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

LED Bl i nk i ng ZX-LED

2C

Bi-co

lor L

ED

-+ S -+ S

Page 4: 02 lab microbox1

การทดลองที� 1 ควบคมุการติดดบัของ LED2.เปิดโปรแกรม AVR Studio สรา้งโปรเจก็ตใ์หม่แลว้ เขียนโปรแกรมต่อไปนี�ลงไป

#include <ipst.h>main(){

while(1){

out_d(7,1);sleep(500);out_d(7,0);sleep(500);

}}

Page 5: 02 lab microbox1

การทดลองที� 1 ควบคมุการติดดบัของ LED

ไมเ่กิดข้อผิดพลาด

กดปุ่ มเพื�อคอมไพล์

3. คอมไพลโ์ปรแกรม ตรวจสอบหน้าต่าง Build ต้องแสดงข้อความ "Build Secceeded” แสดงว่าโปรแกรมที�เขียนขึ�นไม่มีข้อผิดพลาด

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

Page 6: 02 lab microbox1

การทดลองที� 1 ควบคมุการติดดบัของ LED

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

4. ทาํการเชื�อมต่อบอรด์ IPST เข้ากบัเครื�องโปรแกรม PX-4005. เชื�อมต่อสายระหว่าง PX-400 กบัคอมพิวเตอร์6. จ่ายไฟให้กบับอรด์ IPST7. เปิดโปรแกรม AVR Prog โดยไปที�หน้าต่าง Tools เลือก AVR Prog

Page 7: 02 lab microbox1

8. กดปุ่ ม Browse เลือกตาํแหน่งที�เกบ็โปรแกรม (นามสกลุ *.hex ) จะเกบ็ไว้ไนโฟลเดอร ์Default9. เลือกเบอรข์องไมโครคอนโทรลเลอร ์ให้ตรง10. ถ้าไม่จาํเป็นไม่ให้เข้าไปเปลี�ยนแปลงค่าในโฟลเดอร ์Advanced 11. กดปุ่ ม Program เพื�อโปรแกรมข้อมลูลงไปยงัไมโครคอนโทรลเลอร์

การทดลองที� 1 ควบคมุการติดดบัของ LED1. เลือกไฟล์

2. เลือกเบอร์

3. Program

Page 8: 02 lab microbox1

sleep sleep -- คาํสั �งหน่วงเวลาคาํสั �งหน่วงเวลา

อยูใ่นไฟลเ์ฮดเดอร ์sleep.h

การใชง้าน

sleep(m) – หน่วงเวลา m มลิลวินิาท ี(โดยประมาณ)

out_d(x,y) out_d(x,y) –– คาํสั �งกาํหนดขาพอรต์มีลอจิก คาํสั �งกาํหนดขาพอรต์มีลอจิก ““00” ” หรือ หรือ ““11””

อยูใ่นไฟลเ์ฮดเดอร ์in_out.h

การใชง้าน

out_d(7,1) กาํหนดให ้PD7 มลีอจกิ “1”

out_d(6,0) กาํหนดให ้PD6 มลีอจกิ “0”

ตาํแหน่งพอรต์

Page 9: 02 lab microbox1

แผงวงจรสวิตช ์แผงวงจรสวิตช ์: : ZXZX--SWITCHSWITCH D SWITCH

LOW

HIGH510

Bi-color LED

10kSWITCH +S

+SR

G

+5

GND

10kR1

SW1

0V

+5

GND

10kR1

SW1

5V

0V ลอจิก “0”

5V ลอจิก “1”

Page 10: 02 lab microbox1

ZX

-LED

2C

Bi-co

lor L

ED

-+ S -+ S

ATMEGA16

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

Page 11: 02 lab microbox1

3. เปิดโปรแกรม AVR Studio สรา้งโปรเจก็ตใ์หม่แลว้ เขียนโปรแกรมต่อไปนี�ลงไป

#include <ipst.h>main(){

while(1){

if(in_b(4)==0){

out_d(7,1);}else{

out_d(7,0);}

}}

การทดลองที� 2 การอ่านค่าจากแผงวงจรสวิตช์

Page 12: 02 lab microbox1

การทดลองที� 2 การอ่านค่าจากแผงวงจรสวิตช์

4. คอมไพลโ์ปรแกรม5. ดาวน์โหลดโปรแกรมลงไปยงัไมโครคอนโทรลเลอร์6. ทดสอบการทาํงานของโปรแกรม

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

เมื�อปล่อยสวิตช ์LED …..

Page 13: 02 lab microbox1

บททดสอบ 1 สวิตชก์ดติด กดดบั

ZX-LED

2C

Bi-co

lor LE

D

-+ S -+ S

ATMEGA16

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

Page 14: 02 lab microbox1

เฉลย รปูแบบที� 1

#include <ipst.h>void main(){

while(1){

if(in_b(4)==0){toggle_d(7);sleep(300);}

}}

Page 15: 02 lab microbox1

เฉลย รปูแบบที� 2

#include <ipst.h>char a=0;main(){

while(1){

if(in_b(4)==0){

if (a==0){

a=1;out_d(7,1);

}else{

a=0;out_d(7,0);

}sleep(300);

}}

}

Page 16: 02 lab microbox1

ฟังชั�นสาํหรับอ่านค่าจากพอร์ตอินพุตฟังก์ชั�น in_a สาํหรับอา่นคา่ระดบัสญัญาณดิจิตอลจากพอร์ต Aฟังก์ชั�น in_b สาํหรับอา่นคา่ระดบัสญัญาณดิจิตอลจากพอร์ต Bฟังก์ชั�น in_c สาํหรับอา่นคา่ระดบัสญัญาณดิจิตอลจากพอร์ต Cฟังก์ชั�น in_d สาํหรับอา่นคา่ระดบัสญัญาณดิจิตอลจากพอร์ต D

รปูแบบฟังกช์ั �นchar in_a(x)char in_b(x)char in_c(x)char in_d(x)

พารามิเตอร ์x ทาํหน้าที�กาํหนดขาสญัญาณที�ต้องการอ่านค่าซึ�งมีค่าตั �งแต่ 0 ถึง 7 การคืนค่า อาจมีค่าเป็น 0 หรือ 1

GND 11GND

31

+5V

RB5

RB6

RB7

SW1

R510k

R710k

R910k

R4150R

R6150R

R8150R

6

7

8

SW2

SW3

ตวัอย่าง

if (in_b5==0){out_d(6,1);

}

Page 17: 02 lab microbox1

แผงวงจรแสดงผลตวัเลข 4 หลกั : Display4

ใช้แสดงผลในรปูแบบของตวัเลข 4 หลกัหรอืไฟแสดงตาํแหน่ง 8 จดุหรอืผสมกนั

• ใช ้LED ตวัเลข 7 ส่วน 4 หลกัแบบแคโทดร่วม

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

Page 18: 02 lab microbox1

+5V

LED1-LED8

Rp21k*8

J1

ONcommon

controlled

Q1KRC102M

Q2KRC102M

Q3KRC102M

Q4KRC102M

Q5KRC102M

+5V

Rp1220k*8

+5V

R1-R8300R

A7A6A5A4A3A2A1A0

Y7Y6Y5Y4Y3Y2Y1Y0

GND

VCC

98765432

1112131415161718

10

20

OE2OE11 19

J1DIGIT1

J2DIGIT2

J3DIGIT3

J4DIGIT4

J5LED

C101uF/50V

K2PORT

K1PORT

IC174HC541 DISP1 DISP2 DISP3 DISP4

dp

gf

e

d

c

b

a

วงจรของแผงวงจรแสดงผลตวัเลข 4 หลกั : Display4

Page 19: 02 lab microbox1

รปูแบบฟังกช์ั �น void segment(unsigned int val)

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

ตวัอย่างที� 1segment(2549); // แสดงค่าข้อมูล 2549 ที� LED ตวัเลข 7 ส่วน

ตัวอย่างที� 2int i=0;

while(1){

sleep(1000); // หน่วงเวลา 1 วินาทีsegment(i++); // แสดงค่าข้อมูลของ i ที� 7 เซกเมนต์ พร้อมเพิ�มค่า i

}

ฟังกช์ั �น segment หรอื SEGMENT สาํหรบัแสดงผลขอ้มูลที� LED ตวัเลข 7 ส่วน

Page 20: 02 lab microbox1

การทดลองที� 3 แสดงผลข้อมูลที� 7 เซกเมนต ์โดยเพิ�มค่าขึ�น 1 ค่าทุกๆ 1 วินาที เริ�มต้นที�ค่า 0

1. ทาํการเชื�อมต่อแผงวงจร 7

เซกเมนตเ์ข้ากบับอรด์ IPST• เชื�อมต่อสายขอ้มลู 8 บติจากพอรต์ C

เขา้กบัจุดต่อ PORT ของ DSP4

• ต่อสายจากจุด PB4 เขา้กบัจุดต่อ DIGIT4

• ต่อสายจากจุด PB3 เขา้กบัจุดต่อ DIGIT3

• ต่อสายจากจุด PB2 เขา้กบัจุดต่อ DIGIT2

• ต่อสายจากจุด PB1 เขา้กบัจุดต่อ DIGIT1

Page 21: 02 lab microbox1

2. เปิดโปรแกรม AVR Studio สรา้งโปรเจก็ตใ์หม่แลว้ เขียนโปรแกรมต่อไปนี�ลงไป

#include <ipst.h>main(){

int i=0;while(1){

segment(i++);sleep(1000);

}}

การทดลองที� 3

Page 22: 02 lab microbox1

การทดลองที� 3

4. คอมไพลโ์ปรแกรม5. ดาวน์โหลดโปรแกรมลงไปยงัไมโครคอนโทรลเลอร์6. ทดสอบการทาํงานของโปรแกรม

Page 23: 02 lab microbox1

การทดลองที� 4 แสดงผลข้อมูลที� 7 เซกเมนต์ โดยการเพิ�มค่าขึ�น 1 ค่าทุกๆ 1 วินาที เริ�มต้นจาก 0 เมื�อนับถึง 10 ให้ปิดการแสดงผล

1. ใช้วงจรในการทดลองที� 3

#include <ipst.h>main(){

int i=0;for(i=0;i<11;i++){

segment(i);sleep(1000);

}segment_off();while(1);

}

2. เปิดโปรแกรม AVR Studio สร้างโปรเจก็ต์ใหม่แล้ว เขียนโปรแกรมต่อไปนี�ลงไป

Page 24: 02 lab microbox1

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

1. ใช้วงจรในการทดลองที� 3 แล้วต่อสวิตชเ์พิ�มเติมเข้าที�ตาํแหน่ง PD7 ในตาํแหน่งขา LOW

Page 25: 02 lab microbox1

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

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

#include <ipst.h>main(){

int i=0;while(1){

segment(i);if(in_d(7)==0){

while(in_d(7)==0);sleep(100);i++;

}}

}

Page 26: 02 lab microbox1

การทดลองที� 6 แสดงค่าจาํนวนครั �งในการกดสวิตชที์� 7 เซกเมนต ์ เพิ�มขึ�นทีละ 1 เมื�อกดค้างค่าการนับจะเพิ�มขึ�นอย่างต่อเนื�อง

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

#include <ipst.h>main(){

int i=0;while(1){

segment(i);if(in_d(7)==0){

i++;sleep(200);

}}

}

Page 27: 02 lab microbox1

บททดสอบ 2

เขียนโปรแกรมตั �งเวลานับ 60 วินาที ในแบบนับลง (Count down) เมื�อนับลงมาจนกระทั �งถึง 0 หน้าจอแสดงผลจะต้องดบัลงอตัโนมติั

Page 28: 02 lab microbox1

บททดสอบ 3 เขียนโปรแกรมแสดงผลข้อมูลที� 7 เซกเมนต ์โดยให้แสดงค่าเริ�มต้นที� 100 เมื�อกดสวิตชที์� PD7 ค่าการนับจะต้องเพิ�มขึ�น 1 ค่า เมื�อมีการกดสวิตชที์� PD6 ค่าการนับจะต้องลดลง 1 ค่า

Page 29: 02 lab microbox1

การทดลองที� 7 แสดงผล LED 8 หลกั โดยแสดงค่าความสมัพนัธ์ของตวัเลขที�กาํหนดให้ออกไปแสดงผลในรปูเลขฐานสอง 0b11000001

1. เชื�อมต่อสายข้อมูล 8 บิตจากพอรต์ Cของบอรด์ IPST เข้ากบับอรด์ DSP-4

2. ต่อสายจากจุด PB0 เข้ากบับอรด์ DSP-43. จ ั �มเปอรจ์ ั �มไปทาง COM CONTROL

Page 30: 02 lab microbox1

การทดลองที� 7 แสดงผล LED 8 หลกั โดยแสดงค่าความสมัพนัธ์ของตวัเลขที�กาํหนดให้ออกไปแสดงผลในรปูเลขฐานสอง 0b11000001

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

#include <ipst.h>main(){

while(1){

led8(0b11000001);}

}

Page 31: 02 lab microbox1

การทดลองที� การทดลองที� 88 ไฟกระพริบ LED 8 หลกั โปรแกรมจะสั �งให้ LED บิต 2 (หลกัที� 3 เมื�อนับจากซ้ายมือ) กบับิต 7(หลกัที� 8 เมื�อนับจากซ้ายมือ)กระพริบต่อเนื�อง

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

#include <ipst.h>main(){

while(1){

led8(0b10000100);sleep(200);led8(0b00000000);sleep(200);

}}

Page 32: 02 lab microbox1

การทดลองที� 9 ไฟกระพริบ LED 8 หลกั ไล่ลาํดบัจากซ้ายไปขวา

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

#include <ipst.h>main(){

char i = 0b10000000;while (1){

led8(i);i = i >> 1;if (i == 0){i = 0b10000000;}sleep(100);

}}

Page 33: 02 lab microbox1

บททดสอบ 4

เขียนโปรแกรมแสดงไฟวิ�งที� LED 8 หลกั โดยวิ�งวนจากบิต 0 ไปยงับิต 7

Page 34: 02 lab microbox1

แผงวงจรลาํโพงเปียโซ แผงวงจรลาํโพงเปียโซ : : SPEAKERSPEAKER

C110/16V

SP1Piezospeaker

S+

K1SOUND

• ใช้ลาํโพงเปียโซ มีอิมพีแดนซ์ 32W

• มีค่าความถี�เรโซแนนซ์ในย่าน 1 ถึง 3kHz

Page 35: 02 lab microbox1

ชดุคาํสั �งสาํหรบักาํเนิดเสียง

beep_a(char ch)beep_b(char ch)beep_c(char ch)beep_d(char ch)

ฟังกช์นั beep กาํเนิดเสียงความที� 2kHz นาน 10 mSec

ตวัอยา่งbeep_d(3);

ส่งเสยีงออกลาํโพงที�ตําแหน่ง PD3

รปูแบบ

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

sound_a(char ch,int freq,int time)sound_b(char ch,int freq,int time)sound_c(char ch,int freq,int time)sound_d(char ch,int freq,int time)

รปูแบบ ตวัอยา่ง

sound_b(3,800,500)

ส่งเสยีงออกลาํโพงที�ตําแหน่ง PB3 ความถี� 800 Hz ระยะเวลา 0.5 วนิาที

Page 36: 02 lab microbox1

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

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

SPEAKER

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

Page 37: 02 lab microbox1

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

#include <ipst.h>main(){

while (1){

beep_d(6);sleep(200);beep_d(6);sleep(1000);

}}

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

Page 38: 02 lab microbox1

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

#include <ipst.h>main(){

while (1){

sound_d(6,800,500);sleep(200);sound_d(6,800,500);sleep(1000);

}}

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