Zx led8

Page 1

อุปกรณและคําสัง่ ควบคุมอุปกรณแบบสัญญาณดิจิทัล ประกอบดวย 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


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.