บทที่ 2 ทฤษฏี ... -...

31
บทที่ 2 ทฤษฏีที่เกี่ยวข้อง โครงงาน ระบบป้ องกันการโจรกรรมและติดตามรถจักรยานยนต์พร้อมการแจ้งเตือนผ่าน โทรศัพท์มือถือ” เป็นโครงงานที่เกี่ยวข้องกับไมโครคอนโทรลเลอร์และอิเล็กทรอนิกส์ มีเนื ้อหาทีเกี่ยวข้องดังต่อไปนี 2.1 พื้นฐานไมโครคอนโทรลเลอร์ [1] ไมโครคอนโทรลเลอร์เป็นอุปกรณ์ทางอิเล็กทรอนิกส์ชนิดหนึ ่งซึ ่งมีความสามารถในการ ใช้งานเป็นอุปกรณ์ควบคุมที่สามารถโปรแกรมการทางานได้ซึ ่งในปัจจุบันนี ้มีการใช้งาน ไมโครคอนโทรลเลอร์กันอย่างแพร่หลายเนื่องจากใช้งานง่ายและสามารถประยุกต์ใช้งานได้อย่าง หลากหลาย 1. ส่วนประกอบของไมโครคอนโทรลเลอร์ ในปัจจุบันนี ้ไมโครคอนโทรลเลอร์มีการผลิตขึ ้นมาหลายแบบหลายรุ่นขึ ้นอยู่กับ บริษัทผู้ผลิตแต่โดยทั่วไปแล้วไมโครคอนโทรลเลอร์จะประกอบด้วยส ่วนประกอบที่คล้ายกันดังนี 1.1 หน่วยประมวลผลกลาง (Central Processor Unit) จะเป็นส่วนที่เป็นตัวตัดสินใจต่างๆ ซึ ่งจะทางานตามโปรแกรมที่เราเขียนและอัดเข้าไปในตัวไมโครคอนโทรลเลอร์ 1.2 หน่วยความจา (Memory) เป็นตัวเก็บข้อมูลต่างๆที่ต้องใช้ในไมโครคอนโทรล- เลอร์ ไม่ว่าจะเป็นหน่วยความจาโปรแกรมหรือหน่วยความจาข้อมูลโดยหน่วยความจาที่ใช้ได้แกROM , EPROM , EEPROM , RAM และ FLASH 1.3 พอร์ตสัญญาณเข้าและออก (Input & Output Port ) เป็นส่วนที่จะใช้ในการติดต่อกับ อุปกรณ์ภายนอก 1.4 คุณสมบัติอื่นๆไมโครคอนโทรลเลอร์ สมัยใหม่จะมีฟังก์ชันพิเศษเพิ่มเติมเช่น Time/Counter, Analog to Digital Converter , Analog Comparator , UART/USART

Transcript of บทที่ 2 ทฤษฏี ... -...

Page 1: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

บทท 2

ทฤษฏทเกยวของ

โครงงาน ‚ระบบปองกนการโจรกรรมและตดตามรถจกรยานยนตพรอมการแจงเตอนผานโทรศพทมอถอ” เปนโครงงานทเกยวของกบไมโครคอนโทรลเลอรและอเลกทรอนกส มเนอหาทเกยวของดงตอไปน

2.1 พนฐานไมโครคอนโทรลเลอร [1]

ไมโครคอนโทรลเลอรเปนอปกรณทางอเลกทรอนกสชนดหนงซงมความสามารถในการใชงานเปนอปกรณควบคมทสามารถโปรแกรมการท างานไดซงในปจจบนนมการใชงานไมโครคอนโทรลเลอรกนอยางแพรหลายเนองจากใชงานงายและสามารถประยกตใชงานไดอยางหลากหลาย

1. สวนประกอบของไมโครคอนโทรลเลอร ในปจจบนนไมโครคอนโทรลเลอรมการผลตขนมาหลายแบบหลายรนขนอยกบ

บรษทผผลตแตโดยทวไปแลวไมโครคอนโทรลเลอรจะประกอบดวยสวนประกอบทคลายกนดงน 1.1 หนวยประมวลผลกลาง (Central Processor Unit) จะเปนสวนทเปนตวตดสนใจตางๆ

ซงจะท างานตามโปรแกรมทเราเขยนและอดเขาไปในตวไมโครคอนโทรลเลอร 1.2 หนวยความจ า (Memory) เปนตวเกบขอมลตางๆทตองใชในไมโครคอนโทรล- เลอร

ไมวาจะเปนหนวยความจ าโปรแกรมหรอหนวยความจ าขอมลโดยหนวยความจ าทใชไดแก ROM , EPROM , EEPROM , RAM และ FLASH

1.3 พอรตสญญาณเขาและออก (Input & Output Port ) เปนสวนทจะใชในการตดตอกบอปกรณภายนอก

1.4 คณสมบตอนๆไมโครคอนโทรลเลอร สมยใหมจะมฟงกชนพเศษเพมเตมเชนTime/Counter, Analog to Digital Converter , Analog Comparator , UART/USART

Page 2: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

4

2. AVR ไมโครคอนโทรลเลอร [2] ส าหรบโครงงานนเลอกใชไมโครคอนโทรลเลอรตระกล AVR ATmega128 เปน

ไมโครคอนโทรลเลอรในตระกล AVR ของบรษท Atmel ซงจะมคณสมบตและขอมลทวไปของไมโครคอนโทรเลอรดงตอไปน

2.1 คณสมบตทส าคญของไมโครคอนโทรเลอร AVR ATmega128 (ก) ไมโครคอนโทรลเลอรขนาด 8 บต ก าลงไฟต า ประสทธภาพสง

(ข) สถาปตยกรรมแบบ Advanced RISC (Reduce Instruction Set Computer)

- 133 ค าสง มความเรวในการประมวลผล 1 ค าสงตอ 1 สญญาณนาฬกา

- รจสเตอรใชงาน 32 ตวขนาด 8 บต และรจสเตอรควบคม

- ความเรวในการท างานสงถง 16 MIPS ทความถสญญาณนาฬกา 16 MHz

(ค) หนวยความจ าโปรแกรมแบบ Nonvolatile และหนวยความจ าขอมล

- หนวยความจ าโปรแกรมแบบ Nonvolatile และหนวยความจ าขอมล

- หนวยความจ าขอมล EEPROM ขนาด 4 กโลไบต เขยน/ลบได 100,000 ครง

- หนวยความจ าขอมล SRAM ขนาด 4 กโลไบต

(ง) สามารถขยายหนวยความจ าไดมากถง 64 กโลไบต

(จ) มวงจรดบกอนเตอรเฟสแบบ JTAG

(ฉ) โมดลใชงานประกอบไปดวย

- โมดลไทเมอร/เคานเตอร ขนาด 8 บต 2 ตวพรอมปรสเกลเลอรและโหมด

เปรยบเทยบ

- ก าหนดใหท างานแบบ 16 บต ดวยการใชไทเมอร 2 ตว ท างานรวมกน

พรอมปรสเกลเลอร โหมดเปรยบเทยบและโหมดตรวจจบสญญาณอนพต

- ตวนบแบบเรยลไทมกบออสซเลเตอรแยกเฉพาะ

- โมดลสรางสญญาณ PWM 8 ชอง

- PWM 6 ชองก าหนดความละเอยดไดตงแต 2 ถง 16 บต

- โมดลเชอมตอแบบอนกรม TWI(Two-wire Serial), SPI และ USART

- โมดลวอตดอกซไทเมอร (Watchdog timer)

- โมดลแปลงสญญาณอะนาลอกเปนดจตอลขนาด 10 บต

Page 3: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

5

- โมดลเปรยบเทยบแรงดนอนาลอก

(ช) คณสมบตพนฐานส าหรบไมโครคอนโทรลเลอร

- เพาเวอรออนรเซตและเบราวเอาตดเทคแบบโปรแกรมได

- RC ออสซเลเตอรภายในเพอสรางสญญาณความถ

- แหลงอนเตอรรปตทงภายในและภายนอก

- 6 โหมดสลปประกอบดวย โหมด Idle, ADC Noise Reduction, Power-save,

Power-down, Standbye และ Extended Standby

- ก าหนดโหมดสญญาณความถนาฬกาดวยซอฟตแวร

(ฌ) ขาพอรตอนพต/เอาทพต 53 ขาประกอบดวยพอรต A, B, C, D, E, F, G ดง

แสดงในเรองของรายละเอยดขาพอรต AVR ATmega128

2.2 การท างานกบบตและไบตขอมล การใชงานไมโครคอนโทรเลอร โดยสวนใหญแลวจะเปนการควบคมพอรตอนพตเอาทพต

แบบดจตอล ในระดบบตและไบต การสรางไลบรารเพอจดการกบขอมลในระดบบตและไบต

(Bit/Byte Manipulation) จงมความจ าเปน นอกจากจะน ามาใชงานไดอยางรวดเรวแลวยงสามารถ

น าไปแจกจายใหกบทมพฒนา เพอการท างานทรวดเรวและเปนไปในทศทางเดยวกนอกดวย โดย

ฟงกชนไลบรารทจะสรางขนจะประกอบไปดวยฟงกชนทเกยวของกบบตและไบตขอมลโดยตรง

เชน การเลอนบตขอมล การหมนบตขอมล การเซตบต การเคลยรบต การสลบบต การสรางขอมล

จาก 8 บต เปน 16 บตและ 32 บตเปนตน

2.2.1 บตและไบตขอมล

ไมโครคอนโทรลเลอร AVR เปนไมโครคอนโทรลเลอรขนาด 8 บต ประกอบไปดวย

รจสเตอรขนาด 8 บต หากตองการท างานในแบบ 16 บตกจะน ารจสเตอร ขนาด 8 บต 2 ตวมา

ท างานรวมกน ลกษณะของขอมลขนาด 8 บต แสดงดงตารางท 2.1

Page 4: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

6

ตารางท 2.1 แสดงต าแหนงบตและชอเรยก

ต าแหนงบต

บต7 บต6 บต5 บต4 บต3 บต2 บต1 บต0 คา

ขนาด8บต MSB LSB

ขนาด4บต Nibble High Nibble low

ขนาด1ไบท

BYTE

คาในแตละบต

1

0

1

0

1

0

0

1

A9

จากตารางท 2.1

- บตท 7 เปนต าแหนงบตสงสดหรอทเรยกวา บตนยส าคญสงสด (Most significant bit) หรอชอยอ MSB บต

- บตท 0 เปนต าแหนงบตต าสดหรอทเรยกวา บตนยส าคญต าสด (Least significant bit) หรอชอยอ LSB บต

- ต าแหนงบตท 0 ภงบตท 3 เรยกวา 4 บตราง หรอ Nibble Low บต - ต าแหนงบตท 4 ถงบตท 7 เรยกวา 4 บตบน หรอ Nibble High บต

- บตท 0 ถง 7 มขนาด 8 บตหรอเทากบ 1 ไบต

การท างานกบบตขอมลจงตองเขาใจถงชอเรยกในแตละต าแหนงและในแตละบตขอมล

ส าหรบภาษา C จะมการด าเนนการทางบตขอมลทเรยกวา Bitwise Operator แสดงดงตารางท 2.2

Page 5: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

7

ตารางท 2.2 ตวด าเนนการทางบตไบตขอมล

เครองหมายด าเนนการ

การท างาน ตวอยาง

& การ AND ขอมล ผลลพธจะเปน 1 เมอบตทงสอง

เปน 1 นอกนนเปน 0 (1 & 1 เทากบ 1) a & b ผลลพธ คอ

0x00

| การ OR ขอมล ผลลพธจะเปน 0 เมอบตทงสอง

เปน 0 นอกนนเปน 1 (0 | 0เทากบ 0) a | b ผลลพธ คอ

0x13

^ การ XOR ขอมล ผลลพธจะเปน 0 เมอคาบต

เหมอนกนหากคาบตทงสองตางกนจะใหคาเปน 1 (1 ^ 1 เทากบ 0 หรอ 0 ^ 0เทากบ 0)

a^b ผลลพธ คอ 0x13

<< การเลอนบตไปทางขวา (Shift Left) ศนยจะถก

เตมเขาไปทางซาย a<<1 ผลลพธ คอ

0x20

>> การเลอนบตไปทางขวา (Shift Right) ศนยจะถก

เตมเขาไปทางขวา a>> 1 ผลลพธ คอ

0x08

~ การ NOT คอการกลบคาบต ใหเปนคาตรงขาม ~a ผลลพธ คอ

0xFA จากตารางท 2.2 เมอก าหนดให a = 0x10 และ b=0x03

การท างานกบบตและไบตขอมลจงอาศยการด าเนนการทางบตไบตขอมล ในตารางท 2.2

มาใชในการจดการกบขอมลทงในระดบบตและในระดบไบต การจดการขอมลในระดบบตและ

ไบตมความจ าเปนทตองท าความเขาใจ เนองจากการใชงานไมโครคอนโทรลเลอรจะเกยวของกบ

ขอมลและรจสเตอรขนาด 8 บตหรอ 1 ไบต โดยผลการกระท าทางบตสรปไดดงตารางท 2.3

Page 6: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

8

ตารางท 2.3 ตวด าเนนการทางบตไบตขอมลและผลลพธ

A B A AND B A OR B A XOR B ~A ~B 0 0 1 1

0 1 0 1

0 0 0 1

0 1 1 1

0 1 1 0

1 1 0 0

1 0 1 0

2.2.2 อนพต/เอาตพต AVR ATmega128

ATmega128 เปนไมโครคอนโทรลเลอรขนาด 8 บตตระกล AVR สถาปตยกรรมแบบ

RISC (Reduced Instruction Set Computer) เชนเดยวกบ ATmega16 แตมคณสมบตทมากกวา ใน

ตวถงแบบ Thin Profile Plastic Quad Flat Package (TQFP) และ Micro Lead Frame Package

(MLF) การจดต าแหนงขาพอรตแสดงดงภาพท 2.1

ภาพท 2.1 รายละเอยดขา AVR ATmega128

Page 7: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

9

2.2.3 รายละเอยดขาพอรต ATmega128

ไมโครคอนโทรลเลอร AVR ATmega128 มจ านวนขาพอรตอนพตดจตอลทงสน 53 ขา

พอรตประกอบไปดวยพอรต A ถง F พอรตละ 8 บต และพอรต G จ านวน 5 บต โดยในแตละขา

พอรตสามารถท าหนาทไดมากกวาหนงหนาท โดยหนาทพเศษเพมเตมจะอางองกบคณสมบตของ

โมดลตางๆ มรายละเอยดดงตารางท 2.4

ตารางท 2.4 แสดงขา PORT A (PA0-PA7)

ขาพอรต ขาพอรตฟงกชนพเศษ

PA7 AD7 (ขาเชอมตอหนวยความจ าภายนอก แอดเดรสและดาตา บตท 7)

PA6 AD6 (ขาเชอมตอหนวยความจ าภายนอก แอดเดรสและดาตา บตท 6)

PA5 AD5 (ขาเชอมตอหนวยความจ าภายนอก แอดเดรสและดาตา บตท 5)

PA4 AD4 (ขาเชอมตอหนวยความจ าภายนอก แอดเดรสและดาตา บตท 4)

PA3 AD3 (ขาเชอมตอหนวยความจ าภายนอก แอดเดรสและดาตา บตท 3)

PA2 AD2 (ขาเชอมตอหนวยความจ าภายนอก แอดเดรสและดาตา บตท 2)

PA1 AD1 (ขาเชอมตอหนวยความจ าภายนอก แอดเดรสและดาตา บตท 1)

PA0 AD0 (ขาเชอมตอหนวยความจ าภายนอก แอดเดรสและดาตา บตท 0)

ขา PORT A นอกจากจะใชเปนขาพอรตอนพตเอาทพตดจตอลขนาด 8 บตแลว ยงมคณสมบตทส าคญดงน

-ใชเปนขาพอรตเพอตอขยายหนวยความจ าภายนอกเพมเตม โดยเปนทงขาแอดเดรสและดาตาขนาด 8 บต รปแบบการตอใชงานหนวยความจ าภายนอกเพมเตมแสดงดงภาพท 2.2 ซงเปนการตอขยายหนวยความจ าประเภท SRAM เพมเตม โดยการตอขยายหนวยความจ าจะใชขา PORT A เปนทงขาแอดเดรสและดาตา 8 บตลาง (บตท 0 ถงบตท 7) และใชขา PORTC เปนขาแอดเดรส 8บตบน (บตท 8 ถงบตท 15)

Page 8: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

10

ภาพท 2.2 การตอหนวยความจ าแรม (SRAM) ภายนอกกบ AVR ATmega128

ตารางท 2.5 แสดงขา PORT B (PB0-PB7)

ขาพอรต ขาพอรตฟงกชนพเศษ

PB7 OC2/OC1C (โมดลเปรยบเทยบและสรงสญญาณเอาตพต PWM ส าหรบไทเมอร/เคานเตอร 2 หรอโมดลเปรยบเทยบและสรางสญญาณเอาตพต PWM ชอง C ส าหรบไทเมอร/เคานเตอร 1)

PB6 OC1B (โมดลเปรยบเทยบและสรางสญญาณเอาตพต PWM ชอง B ส าหรบไทเมอร/เคานเตอร 1)

PB5 OC1A (โมดลเปรยบเทยบและสรางสญญาณเอาตพต PWM ชอง A ส าหรบไทเมอร/เคานเตอร 1)

PB4 OC0 (โมดลเปรยบเทยบและสรางสญญาณเอาตพต PWM ส าหรบไทเมอร/เคานเตอร)

PB3 MISO (ขาสญญาณ อนพตมาสเตอร/เอาตพตสเลฟ ส าหรบบส SPI) PB2 MOSI (ขาสญญาณ อนพตมาสเตอร/เอาตพตสเลฟ ส าหรบบส SPI) PB1 SCK (ขาสญญาณนาฬกาส าหรบบส SPI) PB0 SS (ขาสญญาณอนพตเลอกสเลฟ ส าหรบบส SPI)

นอกเหนอจากตารางท 2.5 สามารถก าหนดเพมเตมไดดงน

ขา PORT B นอกจากจะใชเปนขาพอรตอนพตเอาตพตดจตอลขนาด 8 บตแลว ยงมคณสมบตทส าคญดงน

Page 9: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

11

- ใชเปนขาพอรตส าหรบสรางสญญาณ Pulse Width Modulator (PWM) 3ชองทางคอ A, B และ C ซงน าไปประยกตใชในการควบคมการท างานของมอเตอร และใชเปนขาพอรตส าหรบเชอมตอกบอปกรณภายนอกแบบอนกรม (Serial Peripheral Interface) หรอทนยมเรยกวาบสแบบ SPI ตารางท 2.6 แสดงขา PORT C (PC0-PC7)

ขาพอรต ขาพอรตฟงกชนพเศษ

PC7 A15 (ขาสญญาณแอดเดรส บตท 15)

PC6 A14 (ขาสญญาณแอดเดรส บตท 14)

PC5 A13 (ขาสญญาณแอดเดรส บตท 13)

PC4 A12 (ขาสญญาณแอดเดรส บตท 12)

PC3 A11 (ขาสญญาณแอดเดรส บตท 11)

PC2 A10 (ขาสญญาณแอดเดรส บตท 10)

PC1 A9 (ขาสญญาณแอดเดรส บตท 9)

PC0 A8 (ขาสญญาณแอดเดรส บตท 8)

นอกเหนอจากตารางท 2.6 สามารถก าหนดเพมเตมไดดงน

ขา PORT C นอกจากจะเปนขาพอรตอนพตเอาตพตดจตอลแลว ยงมคณสมบตส าคญดงน - ใชงานเปนขาพอรตส าหรบเชอมตอหนวยความจ าภายนอก โดยเปนขาแอดเดรส 8 บตบน

(บตท 8 ถง 15) ท างานรวมกบขา PORT A ดงทกลาวมาแลวขางตน

Page 10: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

12

ตารางท 2.7 แสดงขา PORT D (PD0-PD7)

ขาพอรต ขาพอรตฟงกชนพเศษ PD7 T2 (อนพตสญญาณ ส าหรบไทเมอร/เคานเตอร 2)

PD6 T1 (อนพตสญญาณ ส าหรบไทเมอร/เคานเตอร 1)

PD5 XCK1 (ขาอนพตเอาตพตสญญาณนาฬกาภายนอกส าหรบโมดล USART1 )

PD4 ICP1 (ขาอนพตตรวจจบสญญาณของ ไทเมอร/เคานเตอร 1)

PD3 INT3/TXD1 (ขาอนพตอนเตอรรปตเนองจากสญญาณภายนอกชองท 3 หรอขาสงขอมลโมดล UART1)

PD2 INT2/RXD1 (ขาอนพตอนเตอรรปตเนองจากสญญาณภายนอกชองท 2 หรอขารบขอมลโมดล UART1)

PD1 INT1/SDA (ขาอนพตอนเตอรรปตเนองจากสญญาณภายนอกชองท 1 หรอขาขอมลอนกรมส าหรบโมดล TWI)

PD0 INT0/SCL (ขาอนพตอนเตอรรปตเนองจากสญญาณภายนอกชองท 0 หรอขาสญญาณนาฬกาส าหรบโมดล TWI)

นอกเหนอจากตารางท 2.7 สามารถก าหนดเพมเตมไดดงน ขา PORT D นอกจากจะใชเปนขาพอรตอนพตเอาตพตดจตอลขนาด 8 บตแลว ยงมคณสมบตทส าคญดงน

- ขาพอรตอนเตอรรปตเนองจากสญญาณภายนอกชองท 0 ถง 3 - ขาพอรตส าหรบอนพตสญญาณนาฬกาจากภายนอกของไทเมอรเคานเตอร 1 และ 2 หรอ

ทเรยกวาการท างานในโหมดเคานเตอร

- ขาตรวจจบสญญาณอนพต (Input Capture) ของไทเมอร/เคานเตอร 1 เมอตรวจจบสญญาณไดจะใชไดเวลาในการจบสญญาณมา สามารถน ามาประยกตใชในการจบสญญาณความถ หรอหาความกวางของสญญาณ PWM ได เปนตน

- ขาพอรตส าหรบโมดลอนกรม USART1 ชองท 1 เพอใชในการสอสารขอมลอนกรมกบอปกรณภายนอก แบบ RS-232 ชองท 1

Page 11: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

13

- ขาพอรตส าหรบการเชอมตอดวยสายสญญาณ 2 เสน (Two-wire Serial Interface (TWI)) หรอทรจกกนในชอ I2C บส ตารางท 2.8 แสดงขา PORT E (PE0-PE7)

ขาพอรต ขาพอรตฟงกชนพเศษ

PE7 INT7/ICP3 (ขาอนพตอนเตอรรปตเนองจากสญญาณภายนอกชองท 7 หรอขาอนพตตรวจจบสญญาณของไทเมอร/เคานเตอร 3)

PE6 INT6/T3 (ขาอนพตอนเตอรรปตเนองจากสญญาณภายนอกชองท 7 หรออนพตรบสญญาณส าหรบไทเมอร/เคานเตอร 3)

PE5 INT5/OC3C (ขาอนพตอนเตอรรปตเนองจากสญญาณภายนอกชองท 5 หรอโมดลเปรยบเทยบและสรางสญญาณเอาตพต PWM ชอง C ส าหรบไทเมอร/เคานเตอร3)

PE4 INT4/OC3B (ขาอนพตอนเตอรรปตเนองจากสญญาณภายนอกชองท 4 หรอโมดลเปรยบเทยบและสรางสญญาณเอาตพต PWM ชอง B ส าหรบไทเมอร/เคานเตอร3)

PE3 AIN1/OC3A (อนพตเปรยบเทยบแรงดนอะนาลอกดานลบ หรอโมดลเปรยบเทยบและสรางสญญาณเอาตพต PWM ชอง A ส าหรบไทเมอร/เคานเตอร3)

PE2 AIN0/XCK0 (อนพตเปรยบเทยบแรงดนอะนาลอกดานบวก หรออนพตเอาตพตสญญาณนาฬกาจากภายนอกส าหรบโมดล USART0)

PE1 PDO/TXD0 (ขาโปรแกรมขอมลเอาตพต หรอขาสงขอมลโมดล UART0)

PE0 PDI/RXD0 (ขาโปรแกรมขอมลอนพต หรอขารบขอมลโมดล UART0)

นอกเหนอจากตารางท 2.8 สามารถก าหนดเพมเตมไดดงน

ขา PORT E นอกจากจะใชเปนขาพอรตอนพตเอารพตดจตอลขนาด 8 บตแลว ยงมคณสมบตทส าคญดงน

- ขาพอรตอนเตอรรปตเนองจากสญญาณภายนอกชองท 4 ถง 7 - ขาตรวจจบสญญาณอนพต (Input Capture) ไทเมอร/เคานเตอร 3

Page 12: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

14

- ขาพอรตสรางสญญาณ PWM ส าหรบไทเมอร/เคานเตอร3 - ขาอนพตดานบวกและลบส าหรบโมดลเปรยบเทยบแรงดนอะนาลอก - ขาพอรตส าหรบโมดลอนกรม USART0 ชองท 0

ตารางท 2.9 แสดงขา PORT F (PF0-PF7)

ขาพอรต ขาพอรตฟงกชนพเศษ

PF7 ADC7/TDI (ขาอนพตสญญาณอะนาลอกชองท 7 หรอขาทดสอบ JTAG ส าหรบอนพตขอมล)

PF6 ADC6/TDO (ขาอนพตสญญาณอะนาลอกชองท 6 หรอขาทดสอบ JTAG ส าหรบเอาตพตขอมล)

PF5 ADC5/TMS (ขาอนพตสญญาณอะนาลอกชองท 5 หรอขาทดสอบ JTAG ส าหรบเลอกโหมด)

PF4 ADC4/TCK (ขาอนพตสญญาณอะนาลอกชองท 4 หรอขาทดสอบ JTAG ส าหรบสญญาณนาฬกา)

PF3 ADC3 (ขาอนพตสญญาณอะนาลอกชองท 3)

PF2 ADC2 (ขาอนพตสญญาณอะนาลอกชองท 2)

PF1 ADC1 (ขาอนพตสญญาณอะนาลอกชองท 1)

PF0 ADC0 (ขาอนพตสญญาณอะนาลอกชองท 0)

นอกเหนอจากตารางท 2.9 สามารถก าหนดเพมเตมไดดงน

ขา PORT F นอกจากจะเปนขาพอรตอนพตเอาตพตดจตอลขนาด 8 บตแลว ยงมคณสมบตส าคญดงน - ขาพอรตส าหรบวงจร JTAG ส าหรบการดบกโปรแกรม - ขาพอรตส าหรบโมดลแปลงสญญาณอะนาลอกเปนดจตอลขนาด 10 บต 8 ชอง

Page 13: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

15

ตารางท 2.10 แสดงขา PORT G (PG0-PG7)

ขาพอรต ขาพอรตฟงกชนพเศษ

PG4 TOSC1 (ขา RTC ออสซเลเตอร 1 ส าหรบไทเมอร / เคาเตอร 0) PG3 TOSC2 (ขา RTC ออสซเลเตอร 2 ส าหรบไทเมอร / เคาเตอร 0) PG2 ALE (ขาแลซแอดเดรสส าหรบเอนเอเบลหนวยความจ าภายนอก) PG1 RD (ขาสโตป สญญาณอานขอมลหนวยความจ าภายนอก) PG0 WD (ขาสโตป สญญาณเขยนขอมลหนวยความจ าภายนอก)

นอกเหนอจากตารางท 2.10 สามารถก าหนดเพมเตมไดดงน

ขา PORT G นอกจากจะใชเปนขาพอรตอนพตเอาตพตดจตอลขนาด 5 บตแลว ยงมคณสมบตส าคญดงน - ขาพอรตออสซเลเตอรส าหรบโมดลสญญาณนาฬกาเวลาจรง Real-Time Clock (RTC) - ขาพอรตส าหรบอาน-เขยนหนวยความจ าภายนอก ท างานรวมกบขา PORT A และ PORT C พอรตอนพตและพอรตเอาตพตดจตอลของ ATmega128 ดงภาพท 2.3 และ 2.4 มคณสมบตแบบเดยวกบ ATmega16 โดยก าหนดคณสมบตของขาพอรตผานทางรจสเตอร DDRx และ PORTx รวมถงบต PUD ในรจสเตอร SFIOR แสดงดงตารางท 2. 11 ตารางท 2.11 การก าหนดรปแบบของขาพอรต

DDxn PORTxn PUD

(in SFIOR) I/O Pull-Up สถานะ

0 0 X Input No Tri-state (Hi-Z) 0 1 0 Input Yes Pxn will source current if

ext. pulled low 0 1 1 Input No Tri-state (Hi-Z) 1 0 X Output No Output Low (Sink) 1 1 X Output No Output High (Source)

Page 14: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

16

นอกเหนอจากตารางท 2.11 สามารถก าหนดเพมเตมไดดงน (ก) DDxn และ PORTxn เปนชอบตของรจสเตอร DDRx และ PORTx โดย x แทนดวย A, B, C, D … และ n แทนดวยตวเลข 0 ถง 7 (ข) หากใชงานพอรตเปนเอาตพต จะตองไมลมคาลอจก “1” ใหกบรจสเตอร DDxn เพอใหขาพอรตสามารถขบกระแสไดเตมท

ภาพท 2.3 การใชงานพอรตเอาตพตของ AVR ATmega128

ภาพท 2.4 การใชงานพอรตอนพตของ AVR ATmega128

Page 15: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

17

2.2 การเขยนโปรแกรมภาษาซเบองตน [3]

1. พนฐานโปรแกรมภาษาซ

พนฐานเกยวกบคอมพวเตอร หนวยส าคญทสดของคอมพวเตอรกคอ หนวยประมวลผล

หรอทเรยกกนวา CPU โดยปกต CPU จะมภาษาของตวเองทเรยกวา ภาษาเครอง (Machine

Language) ซงจะเปนภาษาทประกอบไปดวยเลขฐานสองมากมาย ดงน นการทจะเขยน

โปรแกรมควบคมการท างานของคอมพวเตอร โดยใชภาษาเครองโดยตรงนนจงท าไดยาก จงไดม

การพฒนาตวแปรภาษาเครองทเรยกวา โปรแกรมภาษาระดบสงขนมา หรอทเรยกวา High Level

Languages โดยภาษาในระดบสงเหลาน จะมลกษณะรปแบบการเขยน (Syntax) ทท าใหเขาใจได

งายตอการสอสารกบผพฒนา และถกออกแบบมาใหงายตอการใชงาน และจะเปลยนค าสงจาก

ผใชงาน ไปเปนเปนภาษาเครอง เพอทจะควบคมการท างานของคอมพวเตอรตอไป ตวอยางของ

โปรแกรมภาษาระดบสง ไดแก COBOL ใชกนมากส าหรบโปรแกรมทางดานธรกจ, Fortran ใชกน

มากส าหรบการพฒนาโปรแกรมดานวทยาศาสตรและวศวกรรมศาสตร เพราะงายตอการค านวณ,

Pascal มใชกนทวไป แตเนนส าหรบการพฒนาเครองมอส าหรบการเรยนการสอน, C & C++ ใช

ทวไป ปจจบนมผเลอกทจะใชกนอยางแพรหลาย, PROLOG เนนหนกไปทางดานงานประเภท AI

และ JAVA ใชไดทวไป ปจจบนเรมมผหนมาสนใจกนมากและเพมขนอยางรวดเรว

2. ตวแปร

ตวแปรจะเปนชอทใชในการบอกจ านวนหรอปรมาณ ซงสามารถทจะท าการเปลยนแปลง

จ านวนไดดวยโปรแกรมคอมพวเตอร การตงชอตวแปร จะตองตงชอใหแตกตางไปจากชอของตว

แปรอนๆ ยกตวอยางชอของตวแปร ไดแก x, y, peter, num_of_points และ streetnum เปนตน โดย

ปกตการเขยนโปรแกรมทด ควรจะตงชอตวแปรใหสอดคลองกบการท างานหรอหนาทของตวแปร

นนๆ เพราะเมอถงเวลาตองมาท าการปรบปรงแกไขโปรแกรม จะสามารถท าไดโดยไมยากนก

ในภาษา C หรอ C++ ไดมกฏในการตงชอตวแปรทสามารถใชงานไดดงน

- ชอตวแปรจะตองขนตนดวยตวอกษร

- ชอตวแปรจะประกอบไปดวย ตวอกษร ตวเลข และ _ ไดเทานน

- ชอตวแปรจะตองไมใชชอ reserved word (ชอทมการจองไวแลว)

Page 16: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

18

ตวอยางของชอตวแปรทสามารถน ามาใชตงชอได ไดแก length, days_in_year, DataSet1,

Profit95, Pressure, first_one และตวอยางของชอ ทไมสามารถน ามาใชเปนชอตวแปรได ยกตวอยาง

เชนay-in-year, 1data, int, first.val เปนตน

reserved word (ชอทมการจองไวแลว)Reserved words หรอตวแปรทไดจองไวแลวนน จะ

ประกอบไปดวยตวอกษรตวเลกทงหมด และจะมความส าคญส าหรบภาษา C++ และจะไมน ามาใช

ดวยวตถประสงคอนๆ ตวอยางของ Reserved words ไดแก and, bool, break, case, catch, char,

class, continue, default, delete, do, double, if , else, enum, export, extern เปนตน

นอกจากนในภาษา C หรอ C++ ชอตวแปร ทประกอบไปดวยอกษรเลก หรอใหญ กมความ

แตกตางกน หรอทเรยกวา Case sensitive ยกตวอยางเชน‘X’ และ ‘x’ เปนตวแปรตางกน

‘peter’ และ ‘Peter’ เปนตวแปรตางกน‘bookno1’ และ ‘bookNo1’ เปนตวแปรตางกน

‘XTREME’ และ ‘xtreme’ เปนตวแปรตางกน‘X1’ และ ‘x1’ เปนตวแปรตางกน

‘int’ และ ‘Int’ เปนตวแปรตางกน

ในภาษา C หรอ C++ (และโปรแกรมในภาษาอนๆ) ตวแปรทกตวทจะมการเรยกใชใน

โปรแกรมจ าเปนตองมการก าหนดชนดของตวแปรนนๆ กอนทจะท าการเรยกใชตวแปร

การก าหนดชนดของตวแปรมวตถประสงคหลก 2 ประการไดแก

- เปนการบอกชนด และตงชอตวแปรทจะเรยกใช ชนดของตวแปรจะท าใหคอมไพเลอร

สามารถแปลค าสงไดอยางถกตอง (ยกตวอยางเชน ใน CPU ค าสงทใชในการบวกตวเลขจ านวนเตม

2 จ านวน ยอมแตกตางจากค าสงทจะบวกจ านวนจรง 2 จ านวนเขาดวยกน)

- ชนดของตวแปร ยงเปนบงบอกคอมไพเลอรใหทราบวาจะตองจดเตรยมเนอทใหกบตว

แปรตวนนมากนอยเทาใด และจะจดวางตวแปรนนไวแอดเดรส (Address) ไหนทสามารถเรยกมา

ใชใน code ได

ส าหรบในบทความนจะพจารณาชนดตวแปร 4 ชนดทใชกนมากไดแก int, float, bool และ char

int ชนดตวแปรทสามารถแทนคาจ านวนเตมไดทงบวกและลบ โดยปกตส าหรบ

คอมพวเตอรทวไป คอมไพเลอร จะจองเนอท 2 ไบต ส าหรบตวแปรชนด int จงท าใหคาของตวแปร

มคาตงแต -32768 ถง +32768 ตวอยางของคา int ไดแก 123 -56 0 5645 เปนตน

Page 17: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

19

float ชนดของตวแปรทเปนตวแทนของจ านวนจรง หรอตวเลขทมคาทศนยม ความละเอยด

ของตวเลขหลงจดทศนยมขนอยกบระบบคอมพวเตอร โดยปกตแลว ตวแปรชนด float จะใชเนอท

4 ไบต นนคอจะใหความละเอยดของตวเลขหลงจดทศนยม 6 ต าแหนง และมคาอยระหวาง -1038

ถง +1038 ตวอยางของคา float ไดแก 16.315 -0.67 31.567

bool ชนดของตวแปรทสามารถเกบคาลอจก จรง (True) หรอ เทจ (False) ตวแปรชนดน

เปนทรจกกนอกชอคอ ตวแปรบลน (Boolean) ตวอยางของตวแปรชนด bool ไดแก 1,0

(เมอ 1 = true และ 0 = false)

char เปนชนดตวแปรทเปนตวแทนของ ตวอกษรเพยงตวเดยว อาจเปนตวอกษร ตวเลข

หรอตวอกขระพเศษ โดยปกตตวแปรชนดนจะใชเนอทเพยง 1 ไบต ซงจะใหตวอกษรในรปแบบท

แตกตางกนไดถง 256 คา การเขยนรปแบบของ char หลายๆ ตว โดยปกต จะอางองกบ American

Standard Code for Information Interchange (ASCII)

3. การเขยนโปรแกรมแบบมทางเลอก

การเขยนโปรแกรมแบบมทางเลอก จะสามารถท าใหโปรแกรมสามารถตดสนใจหรอ

เปรยบเทยบ จากนนกจะเลอกด าเนนการไปในทศทางหนงจากสองทศทาง ขนอยกบผลทไดจากการ

เปรยบเทยบนน

3.1 เงอนไข (Condition)

- เปนตวก าหนดเงอนไขทผพฒนาโปรแกรมไดสรางขนมา

- ผลลพธทไดจากเงอนไข จะมคา จรงหรอ เทจ

3.2 โครงสรางของเงอนไข (Condition Control Structures) ประโยคเงอนไขสามารถทจะเขยนใหอยในรปภาษา C จะเขยนไดดงน

if condition then A else B ซงหมายความวา ถาเงอนไข (condition) มคาเปนจรง กจะด าเนนการท าค าสง A มเชนนนกจะท าค าสง B ตวอยางของการเขยนโครงสรางทางเลอกในภาษา C สามารถเขยนไดดงน

if (x < y) a = x * 2; else a = x + y;

Page 18: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

20

ความหมายของ code ดงกลาว หมายความวา ถา คา x มคานอยกวา y แลว a = x*2 แตถา x มคามากกวาหรอเทากบ y แลว a = x+y รปแบบของเงอนไข สวนใหญจะอยในรป ‚ตวแปร โอเปอเรเตอร ตวแปร‛ โอเปอเรเตอรทกลาวถงนจะมอย 2 แบบ ดวยกนคอ โอเปอเรเตอรสมพนธ (Relational Operator) และ โอเปอเรเตอรลอจก (Logical Operator) โอเปอเรเตอรสมพนธทใชในภาษา C มดงตอไปน

ตารางท 2.12 ตวด าเนนการโอเปอเรเตอร

โอเปอรเรเตอร ความหมาย ยกตวอยาง < >

<= >= == !=

นอยกวา มากกวา นอยกวาหรอเทากบ มากกวาหรอเทากบ เทากบ ไมเทากบ

5<4 เปนเทจ 5>4 เปนจรง 3<=3 เปนเทจ 3>=3 เปนจรง 2==5 เปนเทจ 2!=5 เปนจรง

3.3 การเขยนโปรแกรมแบบวนซ า (Repetition & Loop)

กระบวนการหนงทส าคญในการออกแบบอลกอรทม กคอความสามารถในการวนLoop

ของการท างานของกลมค าสงตามทนกพฒนาตองการ ดงนนส าหรบตอนน กจะน าเสนอการพฒนา

โปรแกรมเพอใหบางสวนของค าสงสามารถมการวนซ าไดหลายครง ส าหรบค าสงทสามารถใชใน

การเขยนโปรแกรมแบบวนซ าในภาษา C ไดแก While, Do-while และ For

3.3.1 โครงสรางการเขยนโปรแกรมแบบวนซ าโดยใชค าสง For

Loop for จะเรมดวยการน า คาเรมตนเปรยบเทยบกบเงอนไขทก าหนดไว ถาเงอนไข เปนจรง จะท า statement ในLoop ถา เปนเทจ จะเลกท า งานในLoop กรณเมอตรวจสอบเงอนไขแลวเปนจรงเมอท า งานในLoopแลว กจะเพมหรอลดคาตวแปรในเงอนไขอก 1 หรอมากกวาตามทก าหนดไวโดยอตโนมต แลวตรวจสอบเงอนไขอกครง ถาเงอนไข เปนเทจ จะเลกท า ซ าในLoop มรปแบบ Statement ดงน

for ( เรมตน ; เงอนไข ; เปลยนแปลง )

statement;

Page 19: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

21

เมอเรมตน เปนการก าหนดคาตวแปรเรมตนทตองการ สวนเงอนไขหากคาลอจกมคาเปน

จรง กจะท าตามในโครงสรางของการวนซ าคอ run ค าสง Statement แตถาเปนเทจกจะออกจาก

โครงสรางการวนซ า สวนเปลยนแปลง จะท าการปรบคาของตวแปรทตองการ ยกตวอยางเชน

for ( count=0 ; count < 10 ; count++) 3.3.2 โครงสรางการเขยนโปรแกรมแบบวนซ าโดยใชค าสง while

Loop while จะเรมการท า งานดวยการทดสอบเงอนไขทก าหนดไวตนLoopกอนเสมอ ถาเงอนไขเปนจรง จะท า งานซ าในLoop แตถาเงอนไขเปน เทจ จะเลกท างานในLoop (ท างานในLoopขณะทเงอนไขเปนจรงเทานน) รปแบบของ while มดงน

Loop while ทม statement เดยว มรปแบบดงน while(เงอนไขเปรยบเทยบ) statement;

Loop while ทมหลาย statement มรปแบบดงน while(เงอนไขเปรยบเทยบ) { statement; statement; statement; }

Loop while ซอนกน มรปแบบ ดงน while(เงอนไขเปรยบเทยบของLoopนอก) { statement; statement;

while(เงอนไขเปรยบเทยบของLoopใน) { statement; statement; statement; }

statement; statement; }

Page 20: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

22

3.3.3 โครงสรางการเขยนโปรแกรมแบบวนซ าโดยใชค าสง do - while Loop do จะเรมดวยการท างานรอบแรก 1 รอบกอนเสมอ และมการทดสอบเงอนไขททายLoop ถาเงอนไขเปน จรง จะมการท า ซ าในLoop แตถาเงอนไขเปน เทจ จะเลกท างานในLoop มรปแบบดงน

Loop do ทม statement เดยว มรปแบบดงน do statement;

while(เงอนไขเปรยบเทยบ); Loop do ทมหลาย statement มรปแบบดงน

do{ statement;

statement; statement; }while(เงอนไขเปรยบเทยบ);

Loop do ซอนกน มรปแบบดงน do{

statement; statement; do{

statement; statement;

}while(เงอนไขเปรยบเทยบLoopใน); statement;

}while(เงอนไขเปรยบเทยบLoopนอก);

Page 21: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

23

4. ฟงกชน ความหมายของสวนประกอบในฟงกชน มดงน function_type คอ ประเภทคาหรอขอมลทไดจากการท างานของฟงกชน ซงจะตองใหคา

คนกลบมาเกบไวในชอของฟงกชน (function_name) ถาเปนประเภท void จะเปนฟงกชนประเภททตองมการ return value

function_name คอ ชอฟงกชนทก า หนดขนตามกฎเกณฑการตงชอของ C++ และจะเปนชอทใชส า หรบการเรยกใชฟงกชนตอไป

(parameter1,parameter2,…) หรอพารามเตอรประกอบไปดวย ประเภทและชอของตวแปรใชรบคาคงทเพอน า มาใชท า งานในฟงกชน ในขณะทฟงกชนนนถกเรยกใชท า งาน พารามเตอรของ ฟงกชนมมากกวา 1 ตวและหลายประเภทได

return (value); โดยท return เปนคยเวรด และ value คอคาคงททสงคนไปใหแกชอฟงกชน 1 คาหรอไมมกได ( กรณเปนฟงกชนทไมใหคาใด ๆ)

ตวอยางการก าหนดชอฟงกชน เชน int factorial (int number) parameter ของฟงกชนเปน integer ของฟงกชนชอ factorial ประเภทฟงกชนใหเปน integer

4.1 การประกาศชอฟงกชนทผใชก าหนดไวทตอนตนโปรแกรมกอนฟงกชน main() เรยกวาฟงกชนตนแบบ (prototype) หรอการก า หนดฟงกชน (function declaration) แสดงวาในโปรแกรมมการสรางและเรยกใชฟงกชนเหลาน ซงสามารถเรยกใชชอฟงกชนนน ณ ต า แหนงใด ๆ ของโปรแกรมกได ยกเวนหาม เรยกใชชอฟงกชนนนในตวฟงกชนเอง การประกาศฟงกชนตนแบบ(prototype) ทมพารามเตอร(parameters) ท า ได 2 ลกษณะ คอ

4.1.1 ในสวนของพารามเตอรของฟงกชน เขยนทงชนดขอมลและตวพารามเตอร เชน int factorial(int number);

4.1.2 ในสวนของพารามเตอรของฟงกชน เขยนเฉพาะชนดขอมล เชน int factorial(int);

4.2 การเรยกใชฟงกชนมรปแบบการเรยกใชเสมอนเปน statement เชน line()factorial(x)โดยทฟงกชนใดทมพารามเตอรก า หนดไว ตองใสคา argument ใหถกตองในขณะเรยกใชดวย และเรยก xของฟงกชน factorial() วาอากวเมนต (argument)

Page 22: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

24

4.3 เมอมการเรยกใชฟงกชน ณ ต า แหนงใด โปรแกรมจะไปท า งานในฟงกชนนนจนเสรจ แลวจะกลบมาท า งานตอใน statement ถดไปจากต า แหนงทเรยกใชฟงกชน

4.4 สามารถเรยกใชฟงกชนกครงกไดในโปรแกรม 5. ตารางอาเรย

อารเรย (array) เปนขอมลชนดมโครงสราง (structure) หมายถงเปนขอมลชดหนงมจ านวนสมาชกขอมลแนนอนและตองเปนชนดเดยวกนทงชดแตละรายการของขอมลในชดนนๆ เรยกวา สมาชกของอารเรย (element of array) สมาชกแตละตวมตวชต าแหนงทอยเรยกวา อนเดกซ (index) เพอใชส าหรบการอางองถงขอมลแตละสมาชก โดยอนเดกซเปนขอมลชนดทมล าดบ เชน integer ตวอยางขอมลชนดอารเรย 1 มต เชน คะแนนสอบของนกศกษา 10 คน เปนตวเลขประเภท int ก าหนดเปนโครงสรางของอารเรยดงภาพท 2.5

int score[10];

ภาพท 2.5 โครงสรางของอาเรย

ความหมายของขอมลในอารเรยโดยใช index เปนตวชขอมลในแตละชอง เปนดงน อารเรยชองท [0] มคาคะแนนนกศกษา คนท 1 เกบอย คอ 20 อารเรยชองท [1] มคาคะแนนนกศกษา คนท 2 เกบอย คอ 25 อารเรยชองท [2] มคาคะแนนนกศกษา คนท 3 เกบอย คอ 15 อารเรยชองท [3] มคาคะแนนนกศกษา คนท 4 เกบอย คอ 30 อารเรยชองท [4] มคาคะแนนนกศกษา คนท 4 เกบอย คอ 28 อารเรยชองท [5] มคาคะแนนนกศกษา คนท 4 เกบอย คอ 16 อารเรยชองท [6] มคาคะแนนนกศกษา คนท 4 เกบอย คอ 23 อารเรยชองท [7] มคาคะแนนนกศกษา คนท 4 เกบอย คอ 24 อารเรยชองท [8] มคาคะแนนนกศกษา คนท 4 เกบอย คอ 30 อารเรยชองท [9] มคาคะแนนนกศกษา คนท 10 เกบอย คอ 26

Page 23: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

25

ถาคะแนนทเกบเปนขอมลชนด int จะจองพนทหนวยความจ า ในการเกบขอมล 2 byte * 10 ชอง เทากบ 20 byte

การเรยกใชจะได score [0] = 20; score[1] = 25; score[2] = 15; score[9 ]= 26;

2.3 ค าสง AT-Command [4]

AT-Command คอ ชดค าสงทใชส าหรบเชอมตอระหวางอปกรณสอสารตางๆ เชน โมเดม หรออปกรณ DTE (Data Terminal Equipment) เพอโตตอบสงงานอปกรณเหลานน ใหท างานตามทเราตองการส าหรบการตดตอโทรศพทมอถอ จะใชชดค าสงทเรยกวา GSM AT COMMAND ยกตวอยางการใช AT Command เชน

AT เปนชดค าสงเชคความพรอมของโทรศพทเคลอนท

ATD 0892870254; เปนค าสงใหโทรออกไปยงหมายเลข 0892870254

ATH เปนค าสงใหวางสาย

AT+CMGF เปนค าสงในการเลอกโหมดการสง

AT+CMGS เปนค าสงการสง SMS

AT+CMGD เปนค าสงลบขอความออกจากหนวยความจ า

1. หลกการสง SMS [3]

SMS ยอมาจาก Short Message Service เปนบรการสงขอความสนๆจากโทรศพทมอถอตนทางผานชมสายไปยงโทรศพทมอถอปลายทาง โดยสามารถสงไดสงสด 160 ตวอกษรโดยแตละตวอกษรใชรหส7 bit และมการใชตวอกษรชนดอนๆเชนขนาด 8 bit หรอ 16 bit ซงมวตถประสงคเพอการใชงานทแตกตางกนออกไป ตามขอก าหนดมาตรฐานขององคการ ETSI (European Telecommunications Standards Institute)

Page 24: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

26

2. รปแบบการรบสงขอมล SMS ผาน AT Command

ม 2 รปแบบ คอ Text Mode และ PDU Mode

1. Text Mode เปนการสงขอมลในรปของตวอกษรไดโดยตรง ซงตวเครองสวนใหญไม

รองรบการสงขอมลรปแบบนผานทาง AT Command จงไมสามารถใชงานไดสมบรณ

2. PDU Mode PDU ยอมาจาก (Protocol Description Unit Mode) จะมการท างานคลาย

กบแบบ Text Mode แตแบบ PDU Mode จะสามารถเลอกหรอสรางการเขารหสและถอดรหสไดทก

รปแบบตามตองการโดยไมมขอจ ากด

2.4 การสอสารแบบอนกรม [6]

การสอสารแบบอนกรม คอ การรบ-สงขอมลระหวางอปกรณผานสายสญญาณโดยสงผานขอมลไปทละบตตอเนองกน แบงไดเปน 2 แบบ คอ

Synchronous มการสงสญญาณ clock ไปพรอมกบขอมล Asynchronous ไมมการสงสญญาณ clock ไปพรอมกบขอมล

ในการสอสารรบ-สงในระยะไกลนน จ าเปนตองใช Data Communication Equipment (DCE) อยางเชน Modem เพอใหสงขอมลไดไกลขน แตส าหรบการสอสารไกลในระยะไมเกน 50 ฟต ไมจ าเปนตองใช DCE เรยกวา การสอสารแบบ Null-modem และในการตดตอสอสารขอมลระหวางอปกรณ จ าเปนจะตองมมาตรฐานในการเชอมตอวงจร ซงมาตรฐานทใชกนมากทสดกคอ มาตรฐาน RS232-C

การสอสารขอมลแบบอนกรมระหวางคอมพวเตอรกบอปกรณอนๆ เกอบทงหมดเปนแบบ Asynchronous ดงนน เราจะกลาวถงรายละเอยดเกยวกบการสอสารขอมลแบบ Asynchronousเทานน Asynchronous Serial Communication

การสงขอมลจะมลกษณะเปน FRAME โดยแตละ frame ประกอบดวย

Start bit จ านวน 1 บต โดยทวไปจะเปน Low (0) Data จ านวน 5-8 บต

START | DATA | PARITY | STOP

Page 25: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

27

Parity bit จ านวน 0-1 บต เปนการตรวจสอบความถกตองของขอมล ก าหนดเปน even หรอ odd

Stop bit จ านวน 1-2 บต โดยทวไปจะเปน high (1)

สญลกษณทใชบอกลกษณะของขอมล เชน 7E1: data 7 bits, even parity, 1 stop bit 8N1: data 8 bits, non-parity, 1 stop bit

เนองจากการสอสารแบบ Asynchronous ไมมการสงสญญาณ Clock ไปกบขอมล จงจ าเปนตองเซตสญญาณความถสญญาณ Clock ทางดาน Rx และ Tx ใหเทากนเพอใหรบ-สงขอมลระหวางกนได เรยกวาคาBit rate หรอ Baud

ส าหรบการสอสารแบบอนกรมบน PC รวมถง Microcontroller จะถกจดการโดยสวนทเรยกวา UART( Universal Asynchronous Receiver/Transmitter ) ซงจะท าหนาทรบ-สงขอมล Asynchronous โดยแปลงขอมลในรปขนาน เปนอนกรม Asynchronous แลวคอยสงออก จากนนภาครบกจะรบอนกรม Asynchronousมาแปลงเปนขนานอกทหนง ในการเขอมตอสายสญญาณเขากบอปกรณอนกรมนยมใชหวตอชนด DB9 และDB25 ในทนจะใชเฉพาะหวตอชนด DB9

ส าหรบสายสญญาณทใชในการทดลองในการตดตอระหวาง PC กบ Microcontroller คอ Null Modem Cable-Loopback Handshake ม Diagram ดงภาพท 2.6

ภาพท 2.6 วงจรเชอมโยงของ RS232

Page 26: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

28

2.5 สวทชปรอท [7]

สวทชปรอทจะมลกษณะเปนกระเปาะแกวใสดงภาพท 2.7 ขางในจะบรรจสารปรอทน า

ไฟฟา ซงสามารถไหลไปมาได การท างานจะคลายกบเปนสวทชตวหนงแตจะท างานเมอสารปรอท

ไหลไปดานทมขวจะท าใหขวทงสองตอถงกนท าใหกระแสไหลในวงจร ถาสารปรอทไหลไปใน

ทศทางตรงกนขามจะหยดจายกระแสไฟฟาทนท

ภาพท 2.7 สวทชปรอท

2.6 จอแสดงผล

จอแสดงผลแบบ LCD (Liquid Crystal Display) จดเปนจอแสดงผลอกรปแบบหนง ซง

เปนท นยมน ามาใชงานกนอยางแพรหลายมากขนในปจจบน ซงจอแสดงผลแบบ LCD นมทงแบบ

ทแสดงผลเปนอกขระเพยงอยางเดยว (Character LCD) และแบบทสามารถแสดงผลเปนรปภาพ

หรอสญลกษณ อนๆ ตามความตองการได (Graphic LCD) โดย LCD Display ทเราพบเหนกนโดย

ทวๆ ไปในชวตประจ าวนนอาจมอยหลายแบบ บางชนดกเปนแบบทมการสงผลตขนเฉพาะงานโดย

มรปแบบและรปรางเฉพาะ เชน LCD Display ทน าไปใชในนาฬกาขอมอแบบดจตอล

เครองเลนเกม เครองคดเลข หรอหนาปดวทยแบบตางๆ เปนตน แตในทนจะกลาวถงเฉพาะ Dot-

Matrix LCD ทมวางจ าหนายกนทวๆไปทสามารถซอหามาใชงานกนไดงาย โดยทพบเหนกนทวไป

ไดแกขนาด 16 ตวอกษรไปจนถง 40 ตวอกษร และมจ านวนบรรทดตงแต 1 บรรทดไปจนถง 4

บรรทด ดงภาพท 2.8โดย LCD เหลานอาจมหลายผผลต แตสวนมากแลวจะมโครงสรางการท างาน

Page 27: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

29

และชดค าสงทเหมอนกนเกอบทกประการ อาจมแตกตางกนบางในเรองของความเรวในการอาน/

เขยน

1. โครงสรางโดยทวไปของ LCD

โดยปกตโครงสรางของ LCD จะประกอบขนดวยแผนแกว 2 แผนประกบกนอย โดยเวน

ชองวางตรงกลางไว 6-10 ไมโครเมตร ผวดานในของแผนแกวจะเคลอบดวยตวน าไฟฟาชนดใสเพอ

ใชแสดงตวอกษร ระหวางตวน าไฟฟาใสกบผลกเหลวจะมชนสารทท าใหโมเลกลของผลกรวมตว

กนในทศทางทแสงสองมากระทบซงเรยกวา Alignment Layer และผลกเหลวทใชโดยทวไปจะเปน

แบบ Magnetic โดย LCD สามารถแสดงผลใหเรามองเหนไดทงหมด 3 แบบดวยกนคอ

- แบบใชการสะทอนแสง (Reflective Mode) ซงจะใชสารประเภทโลหะเคลอบอยท

แผนหลงของ LCD ซง LCD ประเภทนเหมาะกบการน ามาใชงานในทๆ มแสงสวางเพยงพอ

- แบบใชการสงผาน (Transitive Mode) โดย LCD แบบนจะวางหลอดไฟไว

ดานหลงจอ เพอท าใหการอานคาแสดงผลท าไดชดเจน

- แบบสงผาน/สะทอน (Transflective Mode) LCD แบบนจะเปนการน าเอาขอดของ

จอแสดงผล LCD ทง 2 แบบมารวมกน

2. การควบคมการแสดงผลของ LCD

ผใชงานไมสามารถจายกระแสไฟฟาตรงใหกบ LCD คางไวตลอดเวลาเพอให LCD

แสดงผลตามทตองการไดเนองจากจะท าใหเกดปฏกรยาไฟฟาเคมขนและจะท าใหอายการใชงาน

LCD สนลงดวยเหตนจงจ าเปนตองปอนสญญาณสลบระหวางปดกบเปด (SCAN) ดวยความถไม

นอยกวา 30 Hz เพอไมใหหนาจอกระพรบ LCD โดยทวไปจะเปนแบบทมสวนควบคม (Controller)

รวมไวในตวอยแลวผใชงานเพยงสงรหสค าสงส าหรบควบคมการท างานของ LCD ใหกบ

Controller วาตองการใหท างานอยางไร ซงสวนใหญแลวจะมสญญาณในการเชอมตอระหวาง LCD

กบ Microcontroller ดงน

1. GND เปน Ground ใชตอระหวาง Ground ของระบบ Microcontroller กบ LCD

2. VCC เปนไฟเลยงวงจรทตองปอนใหกบ LCD มขนาด +5VDC

3. VO เปนขาส าหรบปรบความสวางของหนาจอ LCD

Page 28: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

30

4. RS ใชส าหรบบอกให LCD Controller ทราบวา Code ทสงใหทางขา Data เปนค าสง

หรอขอมล

5. R/W ใชส าหรบก าหนดวาจะอานหรอเขยนขอมลกบ LCD Controller

6. E เปนขา Enable หรอ Chips Select เพอก าหนดการท างานใหกบ LCD Controller

7-14. DB0-DB7 เปนขาสญญาณ Data ใชส าหรบเขยนหรออานขอมล/ค าสง กบ LCD

Controller

ภาพท 2.8 จอแสดงผลแบบ LCD ขนาด 16 ตวอกษร 2 บรรทด

2.7 สวทชแบบเมทรกช [8]

การตอวงจร สวทชแบบเมทรกช โดยวธการนเหมาะกบระบบทมความจ าเปนตองใชงาน

สวทช มากๆ เชน วงจรแปนพมพ Keyboard ดงภาพท 2.9 ทใชส าหรบปอนคาตวเลข ตวอกษร และ

ขอความตางๆ ซง จะเกดความไมสะดวกส าหรบผใชงานเปนอยางมาก ถาออกแบบใหมจ านวน

Switch Keyboard นอยๆเพราะจะยากแกการคนหาต าแหนงของตวเลข ตวอกษรทอยซอนกนอยใน

คยเดยวหลายๆ ชน โดยวธการนจะตองใชพอรต 2 สวน คอ พอรตส าหรบอานคาสถานะของ

Key Switch จากทางแถว (Row) และพอรตส าหรบท าหนาทสงคาออกไป Scan key ในแตละหลก

(Column) ของวงจร โดยจ านวนของสวทช จะขนอยกบขนาดของแถวและหลกทใช เชน ถาเปน

ขนาด 4x3 กจะไดทงหมด 12 ต าแหนง ดงภาพท 2.10

Page 29: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

31

ภาพท 2.9 สวทชแบบเมทรกชขนาด 4x3 ภาพท 2.10 การตอวงจรสวทชแบบเมทรกช

ซงวธการ Scan key แบบ Matrix นจะท าทละหลก (Column) โดยเรมจากหลกแรกไปหา

หลกสดทายตามล าดบ ส าหรบลกษณะของการตอวงจรโดยทวไปของวธการนจะนยมคงสถานะ

ของสญญาณดานทเปน Input ใหมคาเปน ‚1‛ รอไวกอนเสมอโดยการตอตวตานทาน Pull-Up เขา

กบ Port- Input รอไวกอน โดยในการ Scan key จะท าทางดานหลก (Column) โดยสงคาออกไป

ทางดาน Port- Input ใหมคาเปน ‚0‛ ครงละ 1 บต แลวกอานคาจาก Port-Input เขามาตรวจสอบวา

ทกบตยงคงเปน ‚1‛ อยหรอไม ซงถาพบวามบตใดเปน ‚0‛ (Column Active = ‚0‛) กสามารถ

ทราบไดทนทวามการกดคยขนทต าแหนง Row และ Column นนๆ แตถาทกบตยงคงมคาเปน ‚1‛

กใหเปลยนการ Scan ไปยง Column ถดไปอกโดยท าเหมอนกนกบ Column แรกจนครบทก

Column

2.8 GSM โมดล [9]

ET-GSM SIM300CZ ดงภาพท 2.11 เปนชดเรยนรและพฒนาระบบการสอสารไรสายโดยใชโมดล GSM/GPRS รน SIM300CZ ของ ‚ SIMCom Ltd. ‛ เปนอปกรณหลกซง SIM300CZ เปนโมดลสอสารระบบ GSM/GPRS ขนาดเลกรองรบระบบสอสาร GSM ความถ900/1800/1900MHz โดยสงงานผานทางพอรตสอสารอนกรม RS232 ดวยชดค าสง AT Command สามารถประยกตใชงานไดมากมายหลายรปแบบไมวาจะเปนการ รบสงสญญาณแบบ Voice, SMS, Data, FAX และยงรวมถงการสอสารดวย Protocol TCP/IP ดวย

Page 30: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

32

1. คณสมบตของบอรด ET-GSM SIM300CZ V1.0 “ มสวตชแบบ Push-Button ส าหรบใชสงเปด-ปดการท างานของโมดลภายในบอรด “ ม Socket SIM รองรบ SIM Card พรอมวงจร ESD ปองกน SIM เสยหาย “ มวงจร Regulate แยกอสระจ านวน 2 ชดสามารถใชกบแหลงจายภาย Adapter ขนาดตงแต +5V ขนไปสามารถจายกระแสใหกบโมดล SIM300CZ และอปกรณเชอมตอตางๆไดอยางเพยงพอ o มวงจร Regulate ขนาด 4.2V / 3A ส าหรบจายใหกบโมดล SIM300CZ ได?อยางเพยงพอ สามารถใชกบ SIM ของระบบ GSM900MHz แบบ 2-Watt ไดอยางไมเกดปญหา o มวงจร Regulate ขนาด 3.3V / 1A ส าหรบจายใหกบวงจรเชอมตอภายนอกโดยไมตองไป ดงไฟจากตวโมดลมาใช ปองกนปญหาโมดลเสยหายจากวงจรภายนอกดงกระแสเกนพกด และสะดวกตอการออกแบบวงจรเชอมตอเพมเตมโดยไมตองกงวลวากระแสจะไมพอจาย ใหกบอปกรณ “ มวงจร Line Driver ส าหรบแปลงระดบสญญาณโลจกจากโมดล SIM300CZ ใหเปน RS232 ระดบ มาตรฐานครบทกเสนสญญาณทงพอรตทใชในการสอสารส าหรบสงงานโมดลและพอรตส าหรบใชในการพฒนาโปรแกรม (Debug) สามารถเชอมตอกบพอรต RS232 มาตรฐานไดทนท “ ม LED แสดงสถานะพรอมในบอรดส าหรบแสดงสถานะของแหลงจายไฟสถานะพรอมท างานของโมดล สถานะในการเชอมตอกบ Network และสถานะ Power-On/Power-OFF ของโมดล “ มขวส าหรบเชอมตอกบ Handset (ชดปากพดและหฟงของโทรศพทบาน) โดยใชขวตอแบบ RJ11 มาตรฐานพรอมวงจร Voice Filter สามารถน าชด Handset ของโทรศพทบานตอเขากบบอรดทางขวตอแบบ RJ11 ส าหรบใชพดคยโทรออกและรบสายไดโดยสะดวก “ ม Buzzer พรอมวงจรขบเพอสรางสญญาณเสยงในกรณมการโทรเรยกเขามายงโมดล “ มจดยดเสาอากาศส าหรบใชเปนจดพกส าหรบเชอมตอกบเสาอากาศแบบตางๆไดโดยสะดวก “ มขวตอส าหรบตดตงโมดล SIM300CZ พรอมเสารองและสกรยดโมดลกบตวบอรด “ มจดตอสญญาณอนๆทเหลอจากโมดลเชน Keyboard, Display ,GPIO ,Battery Charger ฯลฯ ส าหรบใหผใชตอขยายไปยงวงจรทออกแบบเพมเตมไดโดยงายและสะดวก

Page 31: บทที่ 2 ทฤษฏี ... - dspace.spu.ac.thdspace.spu.ac.th/bitstream/123456789/4760/12/12_บทที่2.pdf · - โมดูลว๊อตดอกซ์ไทเมอร์

33

ภาพท 2.11 โมดล GSM Sim300CZ