อุปกรณและคําสัง่ ควบคุมอุปกรณแบบสัญญาณดิจิทัล ประกอบดวย 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; while(1) { LED8(20,i++); // เลือกจุดตอพอรต 20 ในการเชื่อมตอกับแผงวงจร ZX-LED8 // แลวแสดงคาเลขฐานสอง 8 บิต (00000000 ถึง 11111111) delay(500); // หนวงเวลา 0.5 วิ นาที } } ผลลัพธคือ ไฟติดเป็ นลักษณะไฟวิงจากด้ านขวาไปด้ านซ้ าย
การเชื่อมตอทางฮารดแวร
ไฟลไลบรารีนี้ใชงานกับจุดตอพอรตดิจิตอลทั้งหมดของแผงวงจร IPST-SE โดยใชเพียง 1 จุดตอพอรตในการติดตอกับแผงวงจร ZX-LED8