อุปกรณและคําสัง่ ควบคุมอุปกรณแบบสัญญาณดิจิทัล ประกอบดวย 2. แผงวงจรไฟแสดงผล 8 ดวง : ZX-LED8 เปนแผงวงจรทีม่ ี LED ขนาด 3 มิลลิเมตรสําหรับแสดงผล 8 ดวง พรอมจุดตอพวงเอาตพุตเพื่อนําไปใชในการขับรีเลยไดดวย โดยแผงวงจร ZX-LED8 นี้จะตอเขากับขาพอรตใดของแผงวงจร IPST-SE ก็ได โดยใชขาพอรตเพียงขาเดียวในการควบคุมและขับ LED ใหติดดับตามที่ตองการไดพรอมกันถึง 8 ดวง มีหนาตา ของแผงวงจรดังแสดงในรูป
LED8 ซึ่งเปนอุปกรณเอาตพุตที่นํามาใช ในการเรียนรู LED 8 ดวง พรอมวงจรประกอบการควบคุม LED ทั้ง 8 ดวงใหทาํ งานพรอมกันหรือทํางานแยกกันตองใช ความรูเกี่ยวกับระบบเลขฐานสองและโครงสรางของขอมูลทัง้ แบบบิตและไบตในการกําหนดรูปแบบของขอมูลที่นํามาแสดงผล
เลขฐานสอง ในระบบตัวเลขฐานสองนีม้ ีตัวเลขเพียง 2 ตัวคือ “0” และ “1” ซึ่งสามารถใชแทนสถานะตํ่า สูง, เปด-ปด, ไมตอ-ตอ, ดับ-ติด เปนตน แตถาหากนําตัวเลขฐานสอง มากกวา 1 หลักมาพิจารณา เชน 2 หลักจะทําใหเกิดจํานวนของการเปลี่ยนแปลงเปน 4 สถานะ หากแทนดวยการติด-ดับของหลอดไฟ จะไดดับ-ดับ, ดับ-ติด, ติด-ดับและ ติด-ติด ถาหากมี 3 หลักก็จะเกิดการเปลี่ยนแปลง 8 สถานะ จึงสามารถสรุปเปนสมการคณิตศาสตรและความสัมพันธของจํานวนหลักและสถานะของการเปลี่ยนแปลงได ดังนี้ จํานวนของการเปลี่ยนแปลง = 2 จํานวนหลัก ถามี 2 หลักจะไดจํานวนของการเปลี่ยนแปลง 22 = 4 ถามี 3 หลักจะไดจํานวนของการเปลี่ยนแปลง 23 = 8 ถามี 4 หลักจะไดจํานวนของการเปลี่ยนแปลง 24 = 16 การนับจํานวนของระบบเลขฐานสอง เนื่องจากเลขฐานสองมีตัวเลขเพียง 2 ตัวคือ 0 และ 1 เมื่อมีการนับจํานวนขึน้ จึงตองมีการเพิม่ จํานวนหลัก ดังนั้นเพื่อใหเห็นการเปลี่ยนแปลงอยางชัดเจนจะใช เลขฐานสิบเปนตัวเปรียบเทียบดังนี้
เลขฐานสอง 00 01 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111
เลขฐานสิ บ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
ตัวแปรของเลขฐานสอง (bit variables) เมื่อเลขฐานสองถูกนํามาใชงานมากขึน้ จาก 1 หลักเปน 2, 3 จนถึง 8 หลักทําใหเกิดตัวแปรใหม ๆ ดังนี้ (1) บิต (bit) หมายถึง หนึ่งหลักของเลขฐานสอง (binary digit) มี เลข 0 กับ 1 เทานั้น (2) ไบต (byte) หมายถึง เลขฐานสองจํานวน 8 หลักหรือเทากับ 8 บิต ไบตมีความสําคัญมากเพราะในระบบคอมพิวเตอรจะประมวลขอมูลเลขฐานสองครั้งละ 8 บิต หรือ 1 ไบตเปนอยางนอยเสมอ (3) LSB : Least Significant Bit หรือบิตนัยสําคัญตํ่าสุด หมายถึง บิตที่อยูในตําแหนงขวาสุดของเลขฐานสอง มีคานํ้าหนักประจําหลักตํ่าสุดคือ 20 ถาเปน “1” คาของหลักสุดทายเทากับ 1 x 20 = 1 x 1 = 1 แต ถาบิตสุดทายนี้เปน “0” คาของหลักสุดทายจะเทากับ 0 x 20 = 0 x 1= 0 (4) การกําหนดชื่อหลักของเลขฐานสอง บิตที่อยูขวามือสุดจะถูกเรียกวา บิตศูนย (bit0 : b0) หรือบิต LSB บิตถัดมาเรียกวาบิตหนึ่ง (bit 1 : b1) ไลไปทางซายจน ครบ สามารถสรุปชื่อหลักของเลขฐานสองได คือ b7 b6 b5 b4 b3 b2 b1 b0 โดยตัวเลขแสดงตําแหนง 0-7 ตองเขียนเปนตัวหอยเสมอ แตเพื่อความสะดวกจึงขอเขียน ในระดับเดียวกันเปน b7 b6 b5 b4 b3 b2 b1 b0 (5) MSB : Most Significant Bit หรือบิตนัยสําคัญสูงสุด หมายถึงบิตที่อยูในตําแหนงซายมือสุดของเลขฐานสองจํานวนนัน้ ๆ หากเลขฐานสองมีจํานวน 8 บิต บิต MSB คือบิต 7 (bit 7 : b7) มีคานํ้าหนักประจําหลักเทากับ 27 หรือ 128 แตถาหากจํานวนบิตมีนอยกวานั้น เชน 6 บิต, 5 บิตหรือ 4 บิต บิต MSB จะมีคานํ้าหนักประจํา หลักเปลี่ยนเปน 25, 24 และ 23 ตามลําดับ
คานํ้าหนักประจําหลัก ในเลขฐานสิบจะมีคานํ้าหนักประจําหลัก โดยคิดจากจํานวนสิบยกกําลัง โดยในหลักหนวยมีคานํ้าหนักประจําหลักเปน 100 หรือ 1 หลักสิบมีคานํ้าหนักประจํา หลักเปน 101 หรือ 10 ในหลักรอยมีคานํ้าหนักประจําหลักเปน 102 หรือ 100 เปนตน ในเลขฐานสองก็มีคานํ้าหนักประจําหลักเชนกันแตจะคิดจากจํานวนสองยกกําลัง โดยในหลักขวาสุดคือ บิต 0 หรือบิต LSB มีคานํ้าหนักประจําหลักเปน 20 หรือเทากับ 1 หลักถัดมาคือบิต 1 มีคานํ้าหนักเปน 21 หรือ 2 ถัดมาเปนบิต 2 มีคานํ้าหนักเปน 22 หรือ 4 เมื่อพิจารณาที่เลขฐานสอง 8 บิต คานํ้าหนักประจําหลักสามารถสรุปได ดังนี้ บิต คานํ้าหนักประจําหลัก เลขฐานสิบ 0 0 2 1 1 1 2 2 2 2 2 4 3 3 2 8 4 4 2 16 5 5 2 32 6 6 2 64 7 7 2 128 จากคานํ้าหนักประจําหลักจึงสามารถแปลงเลขฐานสองเปนฐานสิบหรือแปลงฐานสิบเปนฐานสองได
การแปลงเลขฐานสองและฐานสิบ การแปลงเลขฐานสองเปนฐานสิบเริ่มตนดวยการกําหนดคานํ้าหนักประจําหลักของเลขฐานสองแตละหลักแลวคูณดวยคาของเลขฐานสองในหลักนั้นๆ สุดทายนํา ผลคูณทัง้ หมดมารวมกันก็จะไดเปนเลขฐานสิบที่ตอ งการ ตัวอยางที่ 1 จงแปลงเลขฐานสอง 1011 เปนฐานสิบ (1) กําหนดคานํ้าหนักประจําหลัก หลัก b3 b2 b1 b0 คานํ้าหนักประจําหลักคือ 23 22 21 20 เลขฐานสอง 1 0 1 1 (2) จากนั้นนําคานํ้าหนักประจําหลักคูณกับคาของเลขฐานสองประจําบิตนั้นแลว นําผลคูณของทุกหลัก มารวมกัน เลขฐานสิบ = (1x23) + (0x22) + (1x21) + (1x20) = (1x8) + (0x4) + (1x2) + (1x1) = 8+0+2+1 = 11
การแปลงเลขฐานสิบเปนเลขฐานสอง จะใชวิธกี ารหารเลขฐานสิบจํานวนนัน้ ดวย 2 แลวเก็บคาของเศษที่ไดจากการหารเปนเลขฐานสองในแตละหลักโดยเศษที่ไดจากการหารครั้งแรกไมวาจะเปน “0” หรื อ “1” จะเปนหลักที่มีนัยสําคัญตํ่าสุดหรือบิต LSB หรือบิต 0 (b0) และเศษตัวสุดทายจะเปนเลขฐานสองหลักที่มีนัยสําคัญสูงสุดหรือบิต MSB ตัวอยางที่ 2 จงแปลงเลขฐานสิบ 13 เปนเลขฐานสอง (1) หาร 13 ดวย 2 ได 6 เศษ 1 เศษที่ ไดจะเปนบิตศูนย (b0) หรือบิต LSB นั่นคือ บิต LSB = 1 (2) หาร 6 ดวย 2 ได 3 เศษ 0 เศษที่ไดจะเปนบิตหนึ่ง (b1) ซึ่งก็คือ 0 (3) หาร 3 ดวย 2 ได 1 เศษ 1 เศษที่ไดจะเปนบิตสอง (b2) ซึ่งก็คือ 1 (4) หาร 1 ดวย 2 ได 0 เศษ 1 เศษที่ไดจะเปนบิตสาม (b3) และเปนบิต MSB ซึ่งก็คือ 1 ดังนั้นจะไดเลขฐานสองเทากับ 1101 เครื่องหมายของเลขฐานสอง ในเลขฐานสองสามารถที่จะมีทั้งคาตัวเลขที่เปนบวกและลบเชนเดียวกับเลขฐานอื่นๆ โดยจะใชบิต MSB เปนตัวกําหนดเครื่องหมายของเลขฐานสอง ถากําหนดบิต MSB เปน “0” เลขจํานวนนั้นจะมีคาเปนบวก และหากกําหนดบิต MSB เปน “1” เลขจํานวนนั้นจะมีคาเปนลบขอมูลตอไปนี้จะเปนการแสดงคาของจํานวนเลขฐานสอง เมื่อคิดเครื่องหมายและไมคิดเครือ่ งหมายโดยไดทําการแปลงเปนเลขฐานสิบเปรียบเทียบเพื่อใหเห็นความแตกตางอยางชัดเจน
เลขฐานสอง 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
เลขฐานสิบ 0 1 2 3 4 5 6 7 8 -7 -6 -5 -4 -3 -2 -1
คิดเครื่องหมายไมคิดเครื่องหมาย 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
กรณีคิดเครื่องหมายเมือ่ นับถอยหลังจาก 0000 ก็จะเปน 1111 นั่นคือเกิดการถอยหลังหนึ่ง จํานวนหรือ -1 นับถอยหลังตอไปจะเปน 1110 ซึ่งก็คือ -2 เมื่อเปนเชนนี้ การแปลงเลขฐานสองที่คิดเครื่องหมายเปนฐานสิบจึงไมสามารถใชวิธีการแปลงแบบเดิมได แตก็ พอมีเทคนิคในการพิจารณา โดยใชหลักเกณฑคานํ้าหนักประจําหลักยกตัวอยาง เลขฐานสอง 1000 เลข 1 ที่อยูหนาสุดมีคานํ้าหนักประจําหลักเทากับ 23 หรือ 8 จากการ กําหนดวาถาคิดเครื่องหมายเมื่อบิต MSB เปน “1” จะตองเปนคาลบดังนั้นจึงเป น -8 สวนอีก 3 หลักที่เหลือจะเปนเลขบวกจึงกลายเปน -8+0 = -8 มาพิจารณาที่ เลขฐานสอง 1101 บิตแรกเปนลบเทากับ -8 สวน 3 บิตหลังเปนบวกมี คา +5 จึงได -8+5= -3 เปนตน สวนประกอบของขอมูล ขอมูลที่ใชในการประมวลผลของไมโครคอนโทรลเลอรนนั้ สามารถกระทําไดตั้งแต 1 บิตขึ้นไปสําหรับไมโครคอนโทรลเลอร ATmega16 ในชุด IPST-MicroBOX จะทํางานกับขอมูล 1 ถึง 16 บิต โดยมีการกําหนดโครงสรางสวนประกอบของขอมูลที่เปนมาตรฐานเดียวกับไมโครคอนโทรลเลอรตัวอื่นทั่วโลกและเหมือนกับใน คอมพิวเตอรดวย ดังนี้
บิต-นิบเบิล-ไบต -เวิรด เปนชื่อหนวยของขอมูลที่ใชในการประมวลผลของไมโครคอนโทรลเลอร
บิต (bit) เปนขนาดของขอมูลเลขฐานสองที่เล็กทีส่ ุดเทากับ 1 หลักของเลขฐานสอง นิบเบิล (nibble) มี ขนาดเทากับ 4 บิต ไบต (byte) มีขนาดเทากับ 8 บิต เวิรด (word) มีขนาดเทากับ 16 บิตหรือ 2 ไบต ipst_led8.h ไฟลไลบรารีขับ LED 8 ดวง เปนไฟลไลบรารีบรรจุชุดคําสัง่ ทีเ่ กี่ยวกับการติดตอกับแผงวงจร ZX-LED8 เพื่อขับ LED 8 ดวง ใหแสดงผลตามตองการกอนเรียกใชงานตองผนวกไฟลไลบรารีไว ในตอนตนของโปรแกรมดวยคําสั่ง #include <ipst_led8.h> หรือ #include <ipst.h>
คําสั่งที่ใชในการควบคุมการทํางานของ ZX – LED8 pinLED8 เปนฟงกชั่นกําหนดจุดตอพอรตของแผงวงจร IPST-SE ที่ตองการเชื่อมตอกับแผงวงจร ZX-LED8 รูปแบบ
void pinLED8 (int pin)
พารามิเตอร pin - ขาพอรตใดๆ ของแผงวงจร IPST-SE มี คา 0 ถึง 30 (แนะนําใหใชจุดตอพอรต 16 ถึง 20) ตัวอยางการเขียนคําสั่ง pinLED8 (20); // เลือกจุดตอพอรต 20 ของแผงวงจร IPST-SE ในการตอกับแผงวงจร ZX-LED8 LED8 เปนฟงกชั่นกําหนดขอมูลสําหรับแสดงผลบนแผงวงจร ZX-LED8 รูปแบบ void LED8 (unsigned char_dat) (ใชในกรณีที่มีการกําหนดขาเชื่อมตอดวย pinLED8) void LED8 (int pin, unsigned char_dat) พารามิเตอร pin - ขาพอรตใดๆ ของแผงวงจร IPST-SE มี คา 0 ถึง 30 (แนะนําใหใชจุดตอพอรต 16 ถึง 20) _dat - ขอมูลสําหรับนําไปแสดงผลมีคา 0 ถึง 255
ตัวอยางคําสั่งควบคุมการทํางานของ ZX-LED8
#include <ipst.h> // include file for IPST-SE void setup() { pinLED8(20); // ใชจุดตอพอรต 20 ในการตอกับแผงวงจร ZX-LED8 } void loop() { unsigned char i=0; while(1) { LED8(i++); // แสดงคาเลขฐานสอง 8 บิต (00000000 ถึง 11111111) delay(500); // หนวงเวลา 0.5 วินาที } }
ตัวอยางคําสั่งควบคุมการทํางานของ ZX-LED8 #include <ipst.h> // include file for IPST-SE void setup() {} void loop() { unsigned char i=0; int a[9]={0b00000001,0b00000011,0b00000111,0b00001111, 0b00011111,0b00111111,0b01111111,0b11111111}; for(i=0;i<9;i++) { LED8(20,a[i]); // เลือกจุดตอพอรต 20 ในการเชื่อมตอกับแผงวงจร ZX-LED8 delay(500); // หนวงเวลา 0.5 วิ นาที } }
ผลลัพธคือ ไฟติดเป็ นลักษณะไฟวิงจากด้ านขวาไปด้ านซ้ าย
การเชื่อมตอทางฮารดแวร ไฟลไลบรารีนี้ใชงานกับจุดตอพอรตดิจิตอลทั้งหมดของแผงวงจร IPST-SE โดยใชเพียง 1 จุดตอพอรตในการติดตอกับแผงวงจร ZX-LED8