NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf ·...

131
ชุดทดลองไมโครคอนโทรลเลอร์ขนาด 32 บิต NUVOTON MICROCONTROLLER 32 BIT LAB นายทิวากร เคี่ยมขาว โครงงานนี้เป็นส่วนหนึ่งของการศึกษาตามหลักสูตรวิศวกรรมศาสตรบัณฑิต ภาควิชาวิศวกรรมไฟฟ้าและอิเล็กทรอนิกส์ประยุกต์ คณะวิศวกรรมศาสตร์ มหาวิทยาลัยศรีปทุม ปีการศึกษา 2557 56EE210

Transcript of NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf ·...

Page 1: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

ชดทดลองไมโครคอนโทรลเลอรขนาด 32 บต

NUVOTON MICROCONTROLLER 32 BIT LAB

นายทวากร เคยมขาว

โครงงานนเปนสวนหนงของการศกษาตามหลกสตรวศวกรรมศาสตรบณฑต ภาควชาวศวกรรมไฟฟาและอเลกทรอนกสประยกต

คณะวศวกรรมศาสตร มหาวทยาลยศรปทม ปการศกษา 2557

56EE210

Page 2: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

หวขอโครงงาน ชดทดลองไมโครคอนโทรลเลอรขนาด 32 บต

โดย นายทวากร เคยมขาว

ภาควชา วศวกรรมไฟฟาและอเลกทรอนกสประยกต อาจารยทปรกษา ผชวยศาสตราจารย เพชร นนทวฒนา

คณะวศวกรรมศาสตร มหาวทยาลยศรปทม อนมตใหนบโครงงานวศวกรรมฉบบนเปนสวนหนงของการศกษาตามหลกสตรวศวกรรมศาสตรบณฑต

..................................................... หวหนาภาควชาวศวกรรมไฟฟา (ดร.ภรชย จอนวฒนกล) และอเลกทรอนกสประยกต ..................................................... อาจารยทปรกษา (ผชวยศาสตราจารย เพชร นนทวฒนา) (วนท 2 เดอน ธนวาคม พ.ศ.2557)

Page 3: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

รหสโครงงาน 56EE210

ชดทดลองไมโครคอนโทรลเลอรขนาด 32 บต NUVOTON MICROCONTROLLER 32 BIT LAB

บทคดยอ โครงงานนไดท าการศกษาเกยวกบชดทดลอง NUVOTON NUC140 เปนชดทดลองไมโครคอนโทรลเลอรขนาด 32 บต เพอทจะศกษาการท าการงานและเขยนคมอการใชงานในบางสวนของชดลอง เพอทจะเปนตวอยางในการศกษาชดทดลอง NUVOTON NUC140 และสถาปตยกรรมของไมโครโพรเซสเซอร ARM Cortex ™ - M0 คอ ARM ทมหนวยประมวลผลทมขนาดเลกทสดทมพนทซลคอนขนาดเลกพเศษใชพลงงานต าและใชการประมวลผลนอยทสดชวยใหนกพฒนาท างานไดอยางมประสทธภาพมากขน การศกษาชดทดลองนกจะมดวยกน 8 การทดลองซงจะศกษาการใชงานของการทดลองการแสดงผลออกทาง LED ก า ร ท ด ล อ ง ก า รแสดงผลออกทาง 7-Segment การทดลองการแสดงผลออกทาง Graphic LCD การทดลองการรบคาจาก Matrix Switch การทดลองการแสดงผลออกทาง Buzzer การทดลองการรบคาจาก Variable Resistance การทดลองรวมกบชดทดลอง ETT ควบคม DC Motor การทดลองรวมกบชดทดลอง ETT ควบคม Stepper Motor จากการศกษาชดทดลองเบองตนทงหมด จงไดจดท าคมอการใชงานขนมาและตวอยางโปรแกรมการใชงานเบองตนเพอทจะใหสะดวกแกผทจะน าไปใชงานและน าไปพฒนาตอยอดจากเดมและเพมเตมจากทมอยใหงายขนเหมาะแกการน าไปใชงานในภายภาคหนา

Page 4: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

กตตกรรมประกาศ

โครงงานนสามารถส าเรจลลวงไปไดดวยด เนองจากไดรบความกรณาจากอาจารยทปรกษา ผชวยศาสตราจารย เพชร นนทวฒนา อาจารยทปรกษาโครงงานทคอยใหความชวยเหลอ และคอยใหค าแนะน าในโครงงานเมอเกดปญหาตางๆมาโดยตลอดตงแตเรมตนท าโครงงานจนกระทงโครงงานนส าเรจลลวงตามวตถประสงคทตงไวจงขอกราบขอบพระคณอาจารยเปนอยางสง ขอกราบขอบพระคณอาจารยประจ าภาควชาวศวกรรมไฟฟาและอเลกทรอนกสประยกตทกทานและอาจารยทเปนผประสทธประสาทวชาความรใหแกขาพเจาตองขอขอบคณมหาวทยาลยศรปทมทใหสถานทและหองปฏบตการในการจดท าโครงงานรวมถงสนบสนนทดลอง NUVOTON NUC140ในการท าโครงงานจนส าฤทธผล ขอขอบคณรนพและเพอนๆนกศกษาสาขาวชาวศวกรรมไฟฟาและอเลกทรอนกสประยกตทกคนทเปนก าลงใจและชวยเหลอมาโดยตลอด สดทายขอกราบขอบพระคณบดา มารดา และครอบครวของขาพเจารวมทงผมพระคณทกทานทคอยใหก าลงใจทดเสมอมา คอยหวงใย และใหการสนบสนนทางการศกษามาโดยตลอด คณความดอนใดทเกดจากโครงงานฉบบน ขาพเจาขอมอบแดผมพระคณทกทาน

Page 5: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

สารบญ

หนา

บทคดยอ ก กตตกรรมประกาศ ข สารบญ ค สารบญตาราง จ สารบญภาพ ฉ

บทท 1 บทน า 1

1.1 ความส าคญของปญหา 2 1.2 วตถประสงค 2 1.3 ประโยชนของโครงงาน 2 1.4 โครงสรางโครงงาน 3 1.5 ขอบเขตของโครงงาน 4 1.6 แผนการด าเนนงาน 4

บทท 2 แนะน า ARM Cortex-M0 5

2.1 สถาปตยกรรมของ ARM Cortex-M0 6 2.2 ชดค าสง Thumb-2 กบการพฒนาไมโครโปรเซสเซอร ARM Cortex-M0 7 2.3 ไปปไลนของ Cortex-M0 8 2.4 สวนประกอบในระบบโปรเซสเซอรของ Cortex-M0 8 2.5 NUC140VE3CN ไมโครคอนโทรลเลอร Cortex-M0 ของ NUVOTON 9 2.6 ขาการใชงาน 14 2.7 เรมตนสรางโปรเจค 15

Page 6: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

สารบญ(ตอ)

หนา

บทท 3 ใบงานการทดลอง 22 3.1 การทดลองการแสดงผลออกทาง LED 22 3.2 การทดลองการแสดงผลออกทาง 7-Segment 29 3.3 การทดลองการแสดงผลออกทาง Graphic LCD 35 3.4 การทดลองการรบคาจาก Matrix Switch 41 3.5 การทดลองการแสดงผลออกทาง Buzzer 47 3.6 การทดลองการรบคาจาก Variable Resistance 51 3.7 การทดลองรวมกบชดทดลอง ETT ควบคม DC Motor 59 3.8 การทดลองรวมกบชดทดลอง ETT ควบคม Stepper Motor 68

บทท 4 เฉลยใบงานการทดลอง 79

4.1 เฉลยใบงานท 1 การทดลองการแสดงผลออกทาง LED 79

4.2 เฉลยใบงานท 2 การทดลองการแสดงผลออกทาง 7-Segment 82

4.3 เฉลยใบงานท 3 การทดลองการแสดงผลออกทาง Graphic LCD 87

4.4 เฉลยใบงานท 4 การทดลองการรบคาจาก Matrix Switch 89

4.5 เฉลยใบงานท 5 การทดลองการแสดงผลออกทาง Buzzer 94

4.6 เฉลยใบงานท 6 การทดลองการรบคาจาก Variable Resistance 96

4.7 เฉลยใบงานท 7 การทดลองรวมกบชดทดลอง ETT ควบคม DC Motor 100

4.8 เฉลยใบงานท 8 การทดลองรวมกบชดทดลอง ETT ควบคม Stepper Motor 105

บทท 5 บทสรปและขอเสนอแนะ 110

เอกสารอางอง 111

Page 7: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

สารบญตาราง

หนา ตารางท 1 1 แผนการด าเนนงาน 4 ตารางท 3.1 การท างานของแตละขา 36 ตารางท 3.2 บตตงคาจอ LCD 37 ตารางท 3.3 แบบฟลสเตป 1 เฟส 71 ตารางท 3.3 แบบฟลสเตป 2 เฟส 71 ตารางท 3.4 แบบฮาลฟสเตป 2 เฟส 72

Page 8: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

สารบญภาพ หนา

ภาพท 1.1 โครงสรางของโครงงาน 3 ภาพท 2.1 ขาการใชงานNUC140VE3CN 14 ภาพท 2.2 หนาตางโปรแกรมในแผนซดขอมลของบรษท NUVOTON 15 ภาพท 2.3 หนาตางเลอกโปรแกรม Keil 16 ภาพท 2.4 โปรแกรม Keil MDK-ARM V4.50 16 ภาพท 2.5 หนาตางใหเลอกยอมรบ License 17 ภาพท 2.6 เรมตนการตดตงโปรแกรม Keil 17 ภาพท 2.7 ตดตงโปรแกรมเรยบรอยแลว 18 ภาพท 2.8 การตดตง Install ULINK Driver 19 ภาพท 2.9 หนาตางโปรแกรม Keil Uvision4 19 ภาพท2.10 เลอกโอเพนโปรเจค 20 ภาพท 2.11 เลอกโฟลเดอร Smpl_GPIO_LED1 20 ภาพท 2.12 คลกเปดโปรแกรม Keil uVision4 Smpl_GPIO_LED1 21 ภาพท 2.13 หนาตางตวอยางโปรแกรมโปรแกรม 21 ภาพท3.1 แสดงรปราง ของไดโอดเปลงแสง 23 ภาพท 3.2 การ Forward Bias 24 ภาพท 3.3 ก. การตอวงจรแบบ Active Low ข. การตอวงจร Active High 24 ภาพท 3.4 บลอกไดอะแกรมของ LED 25 ภาพท 3.5 การตอ7 Segment แบบ Common Cathode และ Common Anode 30 ภาพท 3.6 บลอกไดอะแกรม 7 Segment 30 ภาพท 3.7 การตอใชงาน LCD 37 ภาพท 3.8 ขาใชงานของ Key Pad Switch 42 ภาพท 3.9 ขาการตอใชของ Buzzer 48 ภาพท 3.10 โครงสรางภายในของ Delta-Sigma ADC 52 ภาพท 3.11 โครงสรางภายในของ SAR ADC 53 ภาพท 3.12 ขาการใชงาน ADC 54 ภาพท 3.13 ระบบการแปลงสญญาณดจตอลเปนอะนาลอก 60 ภาพท 3.14 Transfer Curve ในอดมคตของ DAC 3 บต 60

Page 9: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

สารบญภาพ(ตอ) หนา

ภาพท 3.15 คลนไซนทสรางจาก DAC 61 ภาพท3.16 บลอกไดอะแกรมชดทดลองของ ETT-LAB3A 63 ภาพท 3.17 สเตปปงมอเตอรในชดทดลอง ETT-LAB3A 69 ภาพท 3.18 สเตปปงมอเตอร 4 เฟส แบบยนโพลาร (Uni-Polar Stepper Motor) 70 ภาพท 3.19 แสดงการตอวงจรขบสเตปปงมอเตอรโดยใชไอซส าเรจรป และวงจรทรานซสเตอร 72 ภาพท 3.20 การใชมเตอรวดคาความตานทาน 73 ภาพท 3.21 แสดงการตอวงจรเพอทดสอบโดยการสวตซเพอหาล าดบ 74 ภาพท 3.22 วงจรขบสเตปปงมอเตอร ETT-LAB3A 74

Page 10: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

บทท 1 บทน า

สถาปตยกรรมของ ARM ไมโครโพรเซสเซอร ARM Cortex ™ - M0 คอ ARM หนวย

ประมวลผล ทเลกทสดทมพนทซลคอนขนาดเลกพเศษใชพลงงานต าและใชการประมวลผลนอยทสดชวยใหนกพฒนาท างานไดอยางมประสทธภาพมากทสด หนวยประมวลผล Cortex - M0 ยงชวยใหการใชงานในการผสมสญญาณอนาลอกเขากบอปกรณสญญาณดจตอล Cortex - M0เปนอปกรณทพฒนามาจากARM926EJ-Sและสามารถแยกประเภทออกไป แบบ Cortex – R Series และ Cortex – A Series เปนรนทนยมใชกนในจ าพวกอปกรณมอถอ แทบเลต ทใชในดานการประมวลผลแอปพลเคชนซงมหลากหลายรนในปจจบน

1.1 ความส าคญของปญหา ในปจจบนเทคโนโลยดานระบบสมองกลฝงตว (Embedded System) เขามามบทบาทอยาง

มากในชวตประจ าวน และมการพฒนาเทคโนโลยดานตวประมวลผลขนาดเลกทใชพนทในการประมวลผลนอย ปจจบนตวประมวลผลทนยมใชกนมากในในโทรศพทมอถอ Tablet และระบบทมการค านวณหนกหนมาใชไมโครคอนโทรลเลอรและไมโครคอนโทรลเลอรตระกล ARM ทมอยางแพรหลายเนองจากมหลายบรษทซอลขสทธสถาปตยกรรมภายในไปพฒนาตอยอดใชงานในดานตางๆ ทบรษทนนไดออกแบบอปกรณระบบสมองกลฝงตวไว จากทสาขาวชาวศวกรรมไฟฟาและ อเลกประยกต คณะวศวกรรมศาสตร มหาวทยาลยศรปทม ไดรบความรวมมอสนบสนนชดทดลอง NUVOTON รน Nu-LB-NUC140 ชปตระกล ARM Cortex™-M0 จากประเทศไตหวน จ านวน12ชด เพอไวใชในการเรยนการสอนวชาไมโครโปรเซสเซอร วชาไมโครคอนโทรลเลอรและระบบสมองกลฝงตว

Page 11: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

2

ดงนนเพอใหสามารถน าชดการทดลองทไดรบการสนบสนนมาใชประโยชนสงสดในการประกอบการเ รยนการสอน ทางผ จดท าโครงงานนจงไดเสนอการออกแบบชดทดลองไมโครคอนโทรลเลอรขนาด 32 บต NUVOTON พรอมคมอการใชงาน ใบงานการทดลอง และเฉลยใบงานการทดลอง เพองายทจะศกษาและน าไปพฒนาตอยอดจากทผเขยนไดเรมตนไวในภายภาคหนา

1.2 วตถประสงค 1 เพอทจะศกษาไมโครคอนโทรลเลอรตระกล ARM ของบรษท NUVOTON NUC 140 2 เพอทจะน าผลการทดลองของบอรด NUVOTON ไปใชรวมกบบอรด ETT LAB3A ในการเรยนการสอน

1.3 ประโยชนของโครงงาน 1 มความรเกยวกบไมโครคอนโทรลเลอรขนาด32บต 2 ใชเปนตวอยางในการสอนไมโครคอนโทรลเลอร 3 ใชเปนการทดลองปฏบตไมโครคอนโทรลเลอรตอยอดจากหองปฏบตการทเรยน 4 สามารถน าขอมลทมไปควบคมระบบตางๆได

Page 12: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

3

1.4 โครงสรางโครงงาน

1.

ขอบเขตของโครงงาน ชดทดลองไมโครคอนโทรลเลอรขนาด 32 บต ของ NuMicro ARM Cor ประอไปน

- การก าหนดคาการใชงาน NuMicro ARM Cortex™-M0 NUC 140 - การทดลองการแสดงผลออกทาง LED - การทดลองการแสดงผลออกทาง 7-Segment - การทดลองการแสดงผลออกทาง Graphic LCD - การทดลองการแสดงผลออกทาง Buzzer - การทดลองการรบคาจาก Variable Resistance - การทดลองการรบคาจาก Matrix Switch - การทดลองรวมกบชดทดลอง ETT - DC Motor - Stepper ภาพท 1.1 โครงสรางของโครงงาน

ชดทดลอง ETT LAB 3 A

ชดควบคม DC Motor ชดควบคม Stepper Motor

NUVOTON

ARM Cortex™-M0 CPU

NUC140VE3CN Microcontroller 32 Bit

การแสดงผลออก LED

การแสดงผลออกBuzzer

การรบคาจาก Matrix Switch

การรบคาจาก Variable Resistance

การแสดงผลออก7-Segment

การแสดงผลออก Graphic LCD

Page 13: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

4

1.5 ขอบเขตของโครงงาน ชดทดลองไมโครคอนโทรลเลอรขนาด 32 บต ของ NuMicro ARM Cortex™-M0 NUC

140 ประกอบดวยหวขอตอไปน – การก าหนดคาการใชงาน NuMicro ARM Cortex™-M0 NUC 140 – การทดลองการแสดงผลออกทาง LED – การทดลองการแสดงผลออกทาง 7-Segment – การทดลองการแสดงผลออกทาง Graphic LCD – การทดลองการแสดงผลออกทาง Buzzer – การทดลองการรบคาจาก Variable Resistance – การทดลองการรบคาจาก Matrix Switch – การทดลองรวมกบชดทดลอง ETT

o DC Motor o Stepper Motor

1.6 แผนการด าเนนงาน ตารางท 1.1 แผนการด าเนนงาน

ล าดบ ขนตอนการด าเนนงาน EEG491 EEG492

ก.พ. ม.ค. เม.ย. พ.ค. ก.ย. ต.ค. พ.ย. ธ.ค.

1.

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

2. ท าตวอยางปฏบตการเกยวกบบอรดไมโครคอนโทรเลอร

3. พฒนาตอยอดจากการท าปฏบตการทดลองบอรดไมโครคอนโทรลเลอร

4. รวบรวมรายละเอยดการปฏบตและพฒนาเพมเตมพรอมท ารปเลมปฏบตการของการทดลอง

Page 14: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

บทท 2 ทฤษฎทเกยวของ

2.1 แนะน า ARM Cortex-M0[1]

ARM Cortex-M0 เปนไมโครโปรเซสเซอรขนาด32บตทพฒนาภายใตสถาปตยกรรม

ARM926EJ-S หรอ ARMv6 M ทใชหนวยประมวลผล Cortex M0® ARMv6 M โดยพฒนาเพมประสทธภาพขนและได ARM Cortex-M โดยสามารถแบงออกเปน ARM Cortex-M0, ARM Cortex-M1, ARM Cortex-M3 และ SC300 โดยสถาปตยกรรมภายในมคณสมบตทนาสนใจดงน

– เปนโปรเซสเซอรแบบไฮเออราชคอล(Hierarchical)ทรวมเอาซพยคอรเขากบระบบเพอรเฟอรลขนสง

– ซพยคอรเปนสถาปตยกรรมแบบฮาวารด (Harvard Architecture) ไปปไลน 3 ระดบพรอมรองรบการกระโดดไปท างานแบบทนททนใดรองรบค าสง Thumb และ Thumb-2

– หนวยประมวลผลทางคณตศาสตรและลอจก (ALU) มโมดลหารแบบฮารดแวร

– สามารถคณเลขขนาด 16 และ 32 บตไดอยางรวดเรว – มตวควบคมเวกเตอรอนเตอรรปตซบซอน (NVIC : Nested Vector Interrupt

Controller) – ใชระบบบสแบบเมตรกซ – ประสทธภาพความเรวในการประมวลผล 1.21 DMIPS / MHz

สถาปตยกรรม ARMv6 M ทใชหนวยประมวลผล Cortex M0® ARMv6 M มชดค าสงทใช

งาย รวมถงเทคโนโลยการใชงานทงายในระดบ 2 คาดการวาสถาปตยกรรมไมโครโปรเซสเซอร 32 บตรนใหมแบบทนสมย มการเขาทรหสทสงและประสทธภาพยอดเยยม มความจของขอมลมากกวาไมโครคอนโทรลเลอรขนาด 8 บต และ 16 บต ARM Cortex-M มการประมวลผลทมขนาดขอมลทมากกวาขนาด 8 บตและ 16 บตมขอดส าคญในแงของการลดความตองการการใชหนวยความจ าและการเพมประสทธภาพการใชงานของชปหนวยความจ าแบบแฟลช

Page 15: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

6

2.1 สถาปตยกรรมของ ARM Cortex-M0 [3] ไมโครโพรเซสเซอร ARM Cortex-M0 คอ ARM หนวยประมวลผล ทเลกทสดทมพนท

ซลคอนขนาดเลกพเศษใชพลงงานต าและใชการประมวลผลนอยทสดชวยใหนกพฒนาท างานไดอยางมประสทธภาพมากทสด หนวยประมวลผล Cortex-M0 ยงชวยใหการใชงานในการผสมสญญาณอนาลอกเขากบอปกรณสญญาณดจตอล Cortex-M0 การประมวลผลประมาณ 16μW/MHz พนทหนวยประมวลผลต ากวา 12 กโลไบต โดยทไมมใครเทยบ ARM ในฐานะทเปนผน าในดานเทคโนโลยพลงงานต าและยงเปนอปกรณทใชพลงงานต าเปนพเศษ ยงสามารถทจะแยกประเภทของ ARM Cortex ไดอก 3 ประเภทคอ

2.1.1 ARM Cortex A Series เปนซพยทเนนใหน าไปใชกบการประมวลผลแอปพลเคชน

ส าหรบงานทมความซบซอนสงมากเชน ระบบปฏบตการ(OS : Operrating System)เชน Symbian,Linux หรอ Window Embedded โดยซพยส าหรบงานลกษณะนตองมความสามารถในการประมวลผลขอมลสงสด ระบบหนวยความจ าเสมอนหรอ Virtual Memory System ตองสามารถรองรบหนวยบรหารหนวยความจ าหรอ MMU (Memory Management Unit) ไดเปนอยางดรองรบการท างานกบภาษาจาวาตวอยางของผลตภณฑทใชซพยระดบนคอ โทรศพทเคลอนท สมารทโฟนและพอกเกตพซเปนตน

2.1.2 ARM Cortex R Series ใชกบการประมวลผลแบบ Real-Time ความเรวสง ซพยตอง

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

Page 16: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

7

2.1.3 ARM Cortex M Series เปนซพยทออกแบบมาเพอตองการน าไปพฒนาผลตภณฑทตองการความสามารถในการประผลสง งบประมาณต า กนพลงงานต า มวตถในแตละแอปพลเคชนเจาะจงอยางชดเจนซงนนกคอวตถประสงคในการท างานของไมโครคอลโทรลเลอรนนเองดงนนจากชอรนของซพย ARMv6 M ตวอกษร M จงอาจตความไดวาซพยนเหมาะส าหรบการไปพฒนาเปฯชปไมโครคอลโทรลเลอรความสามารถสงตอไป

2.2 ชดค าสง Thumb-2 กบการพฒนาไมโครโปรเซสเซอร ARM Cortex-M0[4] ARM ไดพฒนาชดค าสง Thumb-2 ขนมาตงแตป 2003 ซงเปนชดค าสงทสามารถรองรบการ

ท างานกบค าสง Thumb ทงแบบ 16 และ 32 บต เนองจากปกตแลวค าสงของ Thumb จะเปนค าสง16 บตทเปนสวนหลกในการท างาน

ส าคญของการพฒนาชดค าสงนคอเปนค าสงทใชงานงายมความตองการหนวยความจ านอยและเปนค าสงทมประสทธภาพสง

เหตผลหลกประการหนงของการพฒนาชดค าสง Thumb-2 คอตองการใหซพย ARMv6 M สามารถท างานกบค าสง 32บตได โดยใชหนวยความจ าทนอยและคลองตวกวา หากไมมการพฒนาชดค าสง Thumb-2 การทโปรเซสเซอร ARMv6 M จะท างานกบค าสง 32 บตกตองพฒนาไปใชค าสง ARM ซงท าใหตองการหนวยความจ าในการประมวลผลมาก ตนทนในการพฒนาชปสง

Cortex-M0 เปนโปรเซสเซอรทมความพรอมในการรองรบชดค าสง Thumb-2 ไดอยางสมบรณ นนจงเปนสาเหตทท าให Cortex-M0 โปรเซสเซอรมความแตกตางจาก ARM โปรเซสเซอรดงเดมเนองจากชดค าสง Thumb-2 รองรบการท างานทงค าสง 16 และ 32 บต ท าให Cortex-M0 ไมตองสลบการประมวลผลค าสงไปมาระหวางชดค าสง Thumb มาตรฐาน (16บต) กบ ARM (32บต) ดงรน ARMv4T (ซงกคอARM926EJ-S) สงผลใหการท างานเรวขนมคาการหนวงเวลาประมวลผลลดลงสามารถสรางโปรแกรมทซบซอนดวยขนาดของหนวยความจ าทนอย

Page 17: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

8

2.3 ไปปไลนของ Cortex-M0 Cortex-M0 คอโปรเซสเซอรทมไปปไลน 3 ชวง ประกอบดวยชวงอานหรอเฟตช (Fetch)

ค าสง, ชวงถอดรหสค าสง (Decode) และชวงเอกซควต (Execute) หรอการท าค าสงอยางไรกตาม หาก Cortex-M0 โปรเซสเซอรท างานกบค าสง 16 บต ซพยไมมความจ าเปนตองเฟตชหรออานค าสงทกๆไซเกล เนองจากซพยสามารถรองรบค าสงขนาด 32 บตได ดงนนจงสามารถอานค าสง 16 บตได 2 ค าสงในคราวเดยวโดยค าสง 16 บตอกค าสงหนงจะถกพกไดในบฟเฟอรเพอรอการประมวลผลตอไปท าใหซพยกระท าตามค าสงไดเรวขน

2.4 สวนประกอบในระบบโปรเซสเซอรของ Cortex-M0 สวนประกอบตางๆในระบบโปรเซสเซอร มดงน 2.4.1 Cortex-M0 : ประกอบดวยรจสเตอร หนวยค านวณทางคณตศาสตรและลอจก

บสขอมลบสค าสงและสวนเชอมตอระบบบส 2.4.2 สวนควบคมการอนเตอรรปต : (NVIC : Nested Vectored Interrupt Controller) :

เปนสวนทจดการอนเตอรรปตทงหมด สามารถเปลยนแปลงไปตามผผลตไมโครคอนโทรลเลอร 2.4.3 SYSTICK ไทเมอรของระบบ : เปนไทเมอรนบถอยหลงใชในการสรางสญญาณการ

อนเตอรรปตตามชวงเวลาทก าหนด มลกษณะการท างานคลายกบการท างานของวอทชดอกไทเมอรในไมโครคอลโทรเลอร 8 บต โดยไทเมอร SYSTICK เปนสวนหนงของ NVIC

2.4.4 สวนปองกนหนวยความจ า(MPU : Memory Protection Unit) : ใชในการปองสวน

ขอ งขอ ม ล ในห น ว ยคว ามจ า ภ า ย ใน ท ส า คญขอ ง ซพ ย เ ป น ส วน เ ส ร ม ท ม ม า ให ใ นไมโครคอนโทรลเลอร Cortex-M0

2.4.5 บสเมตรกซ(Bus Matrix) : เปนหวใจของระบบบสภายในของ Cortex-M0 เนองจากเปนสวนจดการเชอมตอทงหมดของบสซพย (AHB : Advanced High-Performance Bus) ในการถายทอดขอมลจากสวนตางๆของโปรเซสเซอร

Page 18: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

9

2.4.6 สวนเชอตอบสซพยกบบสเพอรเฟอรล (AHB-to-APB Bus Bridge) : ในการเชอมตออปกรณเพอรเฟอรลเขากบบสซพย

2.5 NUC140VE3CN ไมโครคอนโทรลเลอร Cortex-M0 ของ NUVOTON[6]

2.5.1 ซพยคอร : ARM Cortex-M0 สามารถอพความไวการประมวลผลไดถง 50 MHz ประสทธภาพของความเรวในการท างาน1.21DMIPS/MHz หรอเทากบ Dhyston 2.1 เมอไมมสภาวะการรอคอยเพอเขาถงหนวยความจ า มตวหารเลขแบบฮารดแวรและหนวยประมวลผลทางคณตศาสตรสามารถคนเลข 32 บตไดในเวลา 1 ไซเกลสญญาณนาฬกา

2.5.2 หนวยความจ า : โปรแกรมหนวยความจ าภายในขนาด 32/64/128 กโลไบต

– โหลดหนวยความจ าแบบ SRAM ฝงตว (LDROM) ขนาด 4 กโลไบต – การตงคาการใชงานขอมล แฟรช มทอยและขนาด 128 กโลไบต ระบบ แฟรช ขอมล แบบฝงตวขนาด 4 กโลไบต 32 กโลไบต และ 64 กโลไบตของหนวยความจ าภายในระบบ – เลอกรปแบบการใชงานขนาด 4 กโลไบต 8 กโลไบตและ 16 กโลไบต – มโหมดการใชงาน PDMA โหมด

2.5.3 ระบบสญญาณนาฬกา : สามารถเลอกใชงานนาฬกาแบบยดหยนได

- มออสซลเลเตอรภายในขนาด 22.1184 MHz (ตด 1% ทใชส าหรบระบบการด าเนนงาน) และ 10 KHz ของการใชงานในโหมดประหยดพลงงาน – PLL 1 ถง 50 MHz การด าเนนการของระบบประสทธภาพสงสดทอปกรณจะรบได –การเขาใชงานจากครสตลภายนอกส าหรบด าเนนการทตองการเวลาทแมนย าโดยใชทความถ 4 ~24 เมกะเฮรต –การเขาใชงานครสตลภายนอกส าหรบฟงกชน RTC และการเขาโหมดประหยดพลงงานทความถ32.768 กโลเฮรต

Page 19: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

10

2.5.4 ไทมเมอร : ม 4 ชด รองรบการท างานตงแตขนาด 4,8,16 และ 32 บตมนาฬกาแยกการท างานอยางอสระส าหรบจบเวลาแตละชดค าสงการท างาน โดยเลอกการท างานแบบครงเดยว แบบประจ า แบบสลบโหมดการท างานอยางตอเนองนบการด าเนนงานโหมด 2.5.5 PWM : การก าหนดจงหวะนาฬกา

– เปนตวก าเนดจงหวะนาฬกา PWM 16 บต และมสญญาณ PWM เอาทพตท 4 กบ 8 บต

– แสดงผลแบบเดยวหรอเสรมคการแสดงผลของ PWM – เปนตวก าเนดจงหวะนาฬกา PWM แตละตวพรอมกบตวเลอกนาฬกาการท างาน – สามารถเลอกการท างานตงแต 8 บต จนถง 16 บต ไดและสามารถแยกการท างาน

กนระหวาง 8 บต กบ 16 บต ทท างานในค าสงเดยวกนได – มการจบสญญาณการขดจงหวะโดยทไมมการเสยเวลาการท างานของระบบ

2.5.6 ADC : การแปลงสญญาณจากอนาลอกเปนดจตอล

– ปอนขอมลตางกน 4 ชองทางรวมถงสามารถปอนอนพตเดยวสนสดท 8 ชองทาง – มการสแกนขอมลทงแบบตอเนองและสแกนรอบเดยว – มรจสเตอรแสดงผลแตละชองทาง – ใชแรงดนไฟฟาในการตรวจขดจ ากดของความไวการประมวลผล – การเรยกใชซอฟตแวรโปรแกรมจากภายในหรอภายนอก

Page 20: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

11

2.5.7 การเชอมตออนเตอรเฟส – สามารถเลอกการท างานในโหมดหลกหรอโหมดรองได – สารถถายโอนขอมลระหวางโหมดไดแบบ 2 ทศทาง – ใชสญญาณนาฬกาในการควบคมการสงขอมล – สามารถสงขอมลผานพอรต RS485

2.5.8 I2S

– การอนเตอรเฟสกบตวแปลงสญญาณเสยงจากภายนอก – ท างานเปนโหมดหลกหรอโหมดรอง – สามารถเลอกขนาดของขอมล 8, 16, 24 และ 32 บต ใชในการค านวน – ใชในการฟงเสยงทงแบบโมโนและสเตอรโอ

2.5.9 USB 2.0

– ชดของอปกรณ USB 2.0 FS ความไวในการประมวลผล 12 Mbps – มตวรบสงสญญาณ USB ภายในชป – การอนเตอรรปต 1 ชองทางสามารถใชไดพรอมกน 4 อนเตอรรปต – ควบคมการสงขอมลเสยงผานอนเตอรรปต – สามารถสงโปรแกรมได 6 โปรแกรม – ภายใน SRAM เปนบฟเฟอร USB ขนาด 512 ไบต – สามารถควบคมการท างานดวยระยะไกลโดยการท า Remote ควบคม

Page 21: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

12

2.5.10 การคอมพาราเตอรแบบอนาลอก – พาราเตอรแบบอนาลอกอพไดถงขน2 – อนพตภายนอกหรอภายในมแถบชองวางของแรงดนทแรงดนลบ – อนเตอรรปตเมอเปรยบเทยบกบผลการเปลยนแปลง – เลอกการปลกการท างานได

2.5.11 RTC การควบคมการสรางฐานเวลาจรง

– การใชซอฟแวรเลอกคาในการตงความถหรอ FCR – การนบเวลา (วนาท นาท ชวโมง) และสามารถตงปฏทน (วน เดอน ป) – สามารถตงเวลาการปลก (วนาท นาท ชวโมง วน เดอน ป)

2.5.12 บส EBI เฉพาะ100 ขาและ 64 ขา เทานน

– สามารถเขาถงขอมลขาด 64 กโลไบตในโหมด 8 บตหรอ 128 กโลไบตในโหมด 16 บต

– ความกวางของการรบขอมล 8-16 บต – ในโหมด 16 บตสามารถเขยนขอมลลงไดถงระดบไบต

2.5.13 Brown-out Detector ; ตวจบแรงดนลดลง

– ม 4 ระดบเลอกใช: 4.5V / 3.8V / 2.7V / 2.2V – สามารถเลอกการใชงานและรเซตคาใหมได

Page 22: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

13

2.5.14 GPIOs พอรตตออนเตอรเฟชใชงานภายนอก – ขาใชงานทวไปของ I/O (GPIO) 80 ขา – โหมดการใชงาน I/O ม4โหมด

o Quasi Bi-Direction o Push-Pull Output o Open-Drain Output o Input Only With High Impendence

– เลอกปอนทรกเกอร TTL/Schmitt – ขา GPIO ทงหมดสามารถถกก าหนดใหเกดการอนเตอรรปตการใชงานใน

ขอบเขตทก าหนดไวได 2.5.15 แรงดนไฟฟาทใช

– 2.5V ถง 5.5V 2.5.16 อณหภมการใชงาน

– ท -40° C ~ 85° C

Page 23: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

14

2.6 ขาการใชงาน [1]

ภาพท 2.1 ขาการใชงาน NUC140VE3CN [1]

Page 24: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

15

2.7 เรมตนสรางโปรเจค[7]

2.7.1 การลงโปรแกรม Keil uVision 4

เปดโปรแกรมจากแผนซดขอมลททางบรษท NUVOTON ทใหมาในกลองไมโครคอนโทรลเลอรหรอท าการดาวนโหลดซอฟตแวรของบรษท Keil โดยตรงท www.keil.com ใหพจารณาในสวน Software Download ทางดานซายมอคลกเลอกหวขอ Evaluation Software เลอกหวขอยอย ARM ในทนจะใชโปรแกรมทางทบรษท NUVOTON ใหมา ท าการเปดโปรแกรมจะแสดงหนาตางดงภาพท 2.2

ภาพท 2.2 หนาตางโปรแกรมในแผนซดขอมลของบรษท NUVOTON

Page 25: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

16

คลกเลอกโปรแกรม Keil จะปรากฏหนาตางดงภาพท 2.3

ภาพท 2.3 หนาตางเลอกโปรแกรม Keil

ใหเลอก Install Keil RVMDK EV Version และ Install Nu-Link Keil Driver

ภาพท 2.4 โปรแกรม Keil MDK-ARM V4.50

Page 26: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

17

จะปรากฏหนาตางหนานขนมา

ภาพท 2.5 หนาตางหนาตางใหเลอกยอมรบ License

คลกปม Next กจะเขาสหนาตาง License Agreement ใหคลกเครองหมายถกทหนา

ชองขอความ I Agree to All Terms Of The Proceeding License Agreement จากนนคลกปม Next

ภาพท 2.6 เรมตนการตดตงโปรแกรม Keil

Page 27: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

18

หลงจากนนจะมหนาตาง Folder Selection เพอเลอกโฟลเดอรส าหรบตดตงโปรแกรม ในทนใหเลอกเปน C:\Keil ตามทเครองก าหนดให เมอคลก Next หนาตาง Customer Information จะปรากฏขน ใหกรอกขอมลตามความเปนจรง โดยเฉพาะชอง e-mail ถาไมปอนขอมล จะไมสามรถคลกปม Next ตอไปเรอยๆจนตดตงโปรแกรมส าเรจ

ภาพท 2.7 ตดตงโปรแกรมเรยบรอยแลว

หลงจากตดตงโปรแกรมเรยบรอยแลว จะแสดงหนาตาง Setup Complete ดงภาพท 2.7 ให

คลกปม Finish เปนอนเสรจขนตอนการตดตง และหลงจากทกดปม Finish จะมหนาตางขนมาถาม Install ULINK Driver ใหตดตงลงไป

ดวยเพอสะดวกในการคอมไพเลอรกบชดลอง NUVOTON NUC140

Page 28: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

19

ภาพท 2.8 การตดตง Install ULINK Driver

หลงจากการตดตงโปรแกรมเสรจสมบรณ กเรมตนการใชงานโปรแกรม Keil Uvision4 ได

เลย

2.7.2 การใชงานโปรแกรม Keil Uvision4

เปดโปรแกรม Keil Uvision4 จะปรากฏหนาตางดงภาพท 2.9

ภาพท 2.9 หนาตางโปรแกรม Keil Uvision4

Page 29: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

20

ใหคลกเลอก Project จากนนเลอก Open Project…

ภาพท2.10 การเลอกใชงาน Open Project…จากตวอยาง

ใหเลอกโฟลเดอร Nuvoton_Lab project จากนนเลอก Nuvoton >> NUC140BSP >>

Nuvoton_Keil >> Sample Project>> Test Lab Project และเลอก Smpl_GPIO_LED1 ดงภาพ

ภาพท 2.11 เลอกโฟลเดอร Smpl_GPIO_LED1

Page 30: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

21

เมอเลอกไฟล Smpl_GPIO_LED1 แลวเปดไฟล Keil Uvision4 ดงภาพท 2.12

ภาพท 2.12 คลกเปดโปรแกรม Keil Uvision4 Smpl_GPIO_LED1

ปรากฏหนาตางดงภาพท 2.13

ภาพท 2.13 หนาตางตวอยางโปรแกรมโปรแกรม

Page 31: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

บทท 3 ใบงานการทดลอง

ใบงานท 1 การทดลองการแสดงผลออกทาง LED

วตถประสงค

1. เพอทจะใหนกศกษาสามารถเขยนโปรแกรมควบคมการแสดงผลดวย LED 2. เพอทจะให LED แสดงผลตามทตองการได 3. สามารถน าไปประยกตใชกบ LED รปแบบอนๆได

อปกรณการทดลอง 1. เครองคอมพวเตอร 2. ชดทดลอง NOVOTON NUC140 3. สาย micro USB

การท างานของหลอดแสดงผล LED (Light Emitting Diodes)[8] แอลอด (LED) ซงยอมาจากค าวา LIGHT EMITTING DIODE เปนไดโอดชนดพเศษทท า

มาจากสารกงตวน าหวตอ พ-เอน (P-N Junction) เมอมการปอนไบแอสเปนแบบฟอรเวรดไบแอสจะท าใหไดโอดสองแสงสวางออกมาแสงทสองสวางออกมามหลายชวงคลน แลวแตชนดของสารทท า เชน แสงสแดง แสงสเขยว แสงสเหลอง หรอ แสงทตาเรามองไมเหน เชน แสงอนฟาเรด (Infrared)

โครงสรางของแอลอดนน ประกอบดวยชนซบสเตรท (Substrate Layer) ท าดวย GaP Of GaAs ชนถดมาจะท าดวยสาร GaAsP ทงสองชน แลวจะท าการโดป (Doped) ใหเปนสารเอน ชนท

Page 32: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

23

สามจะเปนชนของ ซลคอนไพไตต (Si3A4) แลวท าการแพรสารพลงไปใหตดกบสารเอน เกดเปนรอยตอพ-เอน (P-N Junction)

ภาพท3.1 แสดงรปราง ของไดโอดเปลงแสง [8]

เมอแอลอดไดรบฟอรเวรดไบแอสอเลกตรอนในสารกงตวน าชนดเอน มพลงงานสงขนจนสามารถวงขามรอยตอไปรวมกบโฮลในสารพ ท าใหเกดแสงทเรยกวาพลงงานโฟตอน (Photon)เปลงแสงออกมา ปรากฏการณทเกดขนกบไดโอดเปลงแสงนน เกดจากกระบวนการผลตท เรยกวา“อเลกโตรลมเนสเซนส” (Electro Luminescence) คอ การสรางใหหนาสมผสของสารพมขนาดเลกกวาสารเอน เตมสารเจอบางชนดลงไปเชน แกลเลยมอารเซไนดฟอสไฟด (Gallium Arsenird Phosphide : GaAsP) หรอ แกลเลยม ฟอสไฟด (Gallium Phosphide : GaP) เพอใหพลงงานโฟตอนมจ านวนมากทสด และเรองแสงสวางสกใสขน ในปจจบนการพฒนาทางดานแสดงของอปกรณ อเลกทรอนกสไดกาวหนาไปอยางรวดเรว จนมอปกรณอเลกทรอนกสทางแสงขนมากเชนไฟเบอรออปตค ไอซประเภทออปตคอล รวมไปถงวงจรทมการเชอมโยงทางแสง หรอ ออปโตไอโซเลต (Opto Isolate)

ไดโอดเปลงแสงมขอดกคอการใชงานจะใชแรงดนไฟฟานอยกระแสไฟฟาต า โดยทวไปจะใชแรงดนไฟฟาตงแต 1.5 ถง 3.5V ใชกระแสอยในชวง 5 – 20 mA ซงจะท างานไดดทสด ไดโอดเปลงแสงทว ๆ ไปจะมสเดยว แตปจจบนถกสรางใหมสองสอยในตวเดยวกน ซงเรยกวา ทลด (Two LED) มทงแบบทเปน 3 ขา เมอปอนไบแอสแตละครงกจะมสแตกตางกนออกไป

Page 33: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

24

ภาพท 3.2 การ Forward Bias [8]

แสงจากแอลอดทเปนพลงงานโฟตอนนนมอยดวยกน 2 แบบ คอ พลงงานแสงทสามารถมองเหนดวยตาเปลา และ พลงงานแสงทไมสามารถมองเหนดวยตาเปลา ซงแอลอดทใหพลงงานแสงทไมสามารถมองเหนดวยตาเปลาไดแก อนฟราเรดแอลอด (Infrared LED) ซงจะมรปรางและลกษณะงานเชนเดยวกนแอลอดธรรมดา เพยงแตไมมแสงใหเหนดวยตาเปลาในเวลาท างาน

ภาพท 3.3 ก.การตอวงจรแบบ Active Low ข.การตอวงจร Active High

Page 34: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

25

การเชอมตอ LED ในไมโครคอนโทรลเลอรของ NUVOTON คณสมบตของไมโครคอนโทรลเลอรในกรณทสงขอมลออกพอรท แอคทปทลอจก“1”จะจายกระแสซอรสประมาณ 10 mA. ดงนนเมอน า LED มาตอ อาจท าใหไมโครคอนโทรลเลอรเสยหายได เพราะ LED สวางเตมทจะกนกระแสถง 15 mA หรอตอ LED ในลกษณะเปนการซงกกระแส คอใหไฟทพอรต แอคทปทลอจก 0 แลวท าให LED ตดดงภาพท 3.4

ภาพท 3.4 วงจร LED ในชดทดลอง NUVOTON [1]

ขนตอนการทดลอง

1 เปดโปรแกรม Keil Uvision4 2. เปดไฟลตามหวขอ 2.7.2 การใชงานโปรแกรม

Page 35: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

26

ตวอยางโปรแกรมการตด - ดบของ LED 1 หลอด #include "NUC1xx.h" #include "Driver\DrvSYS.h" #include "Driver\DrvGPIO.h" void Init_LED(); int main (void) { UNLOCKREG(); DrvSYS_Open(48000000); LOCKREG(); Init_LED(); while (1) { DrvGPIO_ClrBit(E_GPC, 12); // output Low to turn on LED DrvSYS_Delay(300000); // delay DrvGPIO_SetBit(E_GPC, 12); // output Hi to turn off LED DrvSYS_Delay(300000); // delay } } void Init_LED() { DrvGPIO_Open(E_GPC, 12, E_IO_OUTPUT); DrvGPIO_SetBit(E_GPC, 12); }

Page 36: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

27

3. ท าการ Compile โปรแกรม 4. Download Program ลงชดทดลอง สงเกตผลการทดลองและบนทกผลทเกดขน

ใหนกศกษาอธบายโปรแกรม

ใหนกศกษาเขยน Flow Chart ของโปรแกรม

Page 37: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

28

ใหนกศกษาท าการแกไขโปรแกรม โดยให LED ตด-ดบ 4หลอด จากซายไปขวา

Page 38: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

29

ใบงานท 2 การแสดงผลออกทาง 7 Segments

วตถประสงค

1. เพอใหนกศกษาเขาใจ โปรแกรมไมโครคอนโทรลเลอรเพอควบคม 7 Segments 2. สามารถน าไปประยกตใชกบ 7 Segments ในรปแบบอนๆได

อปกรณการทดลอง

1. เครองคอมพวเตอร 2. ชดทดลอง NOVOTON NUC140 3. สาย micro USB

7 Segments [8] 7 Segments หรอ LED แสดงผลตวเลขชนด 7 สวน นนถอเปนสวนแสดงผลชนดหนงทถกน า มาใชงานอยางแพรหลาย เนองจากคณสมบตเดนทางดานความเดนชดในการแสดงผล มโครงสรางทไมซบซอนใชงานไดงาย และสามารถประยกตใชไดหลากหลายรปแบบตามความตองการ สาเหตทหนวยแสดงผล ชนดนถกเรยกวา LED 7 สวนนน เนองมาจากโครงสรางทมลกษณะเปนการตอ LED 7 ตวรวมกนใน ต าแหนงตางๆ 7 Segment ประกอบดวย LED 7 ดวง รวมจดอก 1 ดวง รวมเปน 8 ดวง 7 Segment ม 2 แบบ คอ Common Cathode และ Common Anode ในทนจะกลาวเฉพาะ Common Cathode

Page 39: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

30

ภาพท 3.5 การตอ 7 Segment แบบ Common Cathode และ Common Anode

การเชอมตอ 7 Segment ในไมโครคอนโทรลเลอรของ NUVOTON

ภาพท 3.6 วงจร 7 Segment ในชดทดลอง NUVOTON [1]

Page 40: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

31

จากวงจร 7 Segment ในชดทดลอง NUVOTON ดานบน แสดงการตอ 7 Segment ทอยภายในชดทดลองของ NUVOTON โดยจะตอแบบ Common Cathode จะท าการแสดงผลโดยใชพอรต GPIO E0-7และใชพอรต GPIO C4-7เปนตวเลอกในการแสดงหลกของ 7 Segment

ขนตอนการทดลอง

1. เปดโปรแกรม Keil Uvision4 2. เปดไฟลตามหวขอ 2.7.2 การใชงานโปรแกรม

ตวอยางโปรแกรม LED แสดงผลตวเลขชนด 7 สวน #include "NUC1xx.h" #include "Driver\DrvSYS.h" #include "Seven_Segment.h" void seg_display(int16_t value); int32_t main (void) { char num[16]; int number=0,count=0; UNLOCKREG(); DrvSYS_Open(48000000); LOCKREG(); close_seven_segment(); while(1) { if(number>9) number=0;

Page 41: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

32

while(count<10) { seg_display(number); count++; } count=0; number++; } } void seg_display(int16_t value) { int8_t digit; digit = value / 1000; close_seven_segment(); show_seven_segment(3,digit); DrvSYS_Delay(5000); close_seven_segment(); value = value - digit * 1000; digit = value / 100; close_seven_segment(); show_seven_segment(2,digit); DrvSYS_Delay(5000); value = value - digit * 100; digit = value / 10; close_seven_segment();

Page 42: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

33

show_seven_segment(1,digit); DrvSYS_Delay(5000); value = value - digit * 10; digit = value; close_seven_segment(); show_seven_segment(0,digit); DrvSYS_Delay(5000); } 3. ท าการ Compile โปรแกรม 4. Download Program ลงชดทดลอง สงเกตผลการทดลองและบนทกผลทเกดขน

ใหนกศกษาอธบายโปรแกรม

ใหนกศกษาเขยน Flow Chart ของโปรแกรม

Page 43: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

34

ใหนกศกษาท าการแกไขโปรแกรม โดยให 7 Segments นบขนจนถงรหสนกศกษา 2 หลกสดทาย

Page 44: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

35

ใบงานท 3 การใชงาน LCD (Graphic LCD)

วตถประสงค

1. เพอทจะใหศกษาการเขยนโปรแกรมการแสดงผลบนจอ LCD 2. เพอทจะสามารถน าโปรแกรมทมอยมาแกไขใหแสดงผลตามทตองการ

อปกรณการทดลอง

1. เครองคอมพวเตอร 2. ชดทดลอง NOVOTON NUC140 3. สาย micro USB

LCD (Liquid Crystal Display) [9] หรอทเราเรยกกนโดยทวไปวา จอ LCD นน เปนจอแสดงผลชนดหนงทไดรบความนยมอยางมาก สามารถพบเหนไดโดยทวไป เชน เครองคดเลข นาฬกา จอโทรศพทสาธารณะ โทรศพทมอถอ เครองเลนเพลง MP3 หรอแมแตบนเครองมอวดตางๆ โดยทวไปจอ LCD จะถก แบงออกเปน 3 ประเภทหลกๆ คอ ประเภททใชในการแสดงตวอกษร (Character Type LCD) และ ประเภททใชในการแสดงภาพ (Graphic Type LCD) และจอ LCD ทแสดงผลในรปแบบอนๆ เฉพาะทางโดยมกมลกษณะการแสดงผลเปนสวนๆ (Segment Display Type LCD) เชนจอ LCD แสดงตวเลขแบบ 7 สวนของเครองมอวด หรอจอ LCD ของเครองเลนเกมในอดต จอ LCD เปนอปกรณแสดงผลแบบผลกเหลว หรอ “จอแสดงผลแบบ LCD” (LCD: Liquid Crystal Display) นนเปนจอแสดงผลแบบ Dot-Matrix ขนาด 4x16 ตวอกษร 4 บรรทด บรรทดละ 16 ตวอกษร ความละเอยดในตวอกษรเทากบ 128x64 Pixels จอแสดงผลแบบ LCD ประกอบดวย 2 สวนหลก คอ สวนแสดงผล (หนาจอ) และสวนควบคม ในการเขยนโปรแกรมแสดงผลทาง LCD จะเปนการเขาถง IC LCD Controller โดยตวไมโครคอนโทรลเลอรจะเปนตวควบคมจงหวะการท างานทงหมด โครงสรางทวไปของ LCD Module

Page 45: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

36

ตารางท 3.1 การท างานของแตละขาทอยภายในจอ LDC [1]

Page 46: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

37

รจสเตอรและหนวยความจ าของ LCD Controller - รจสเตอร IR (Instructor Register) : ท าหนาทเกบขอมลทเปนรหสค าสง เชน การเคลยรการแสดงผลการควบคมการเคลอนทของ Cursor นอกจากนแลวยงท าหนาทเปนตวเกบรายละเอยดตางๆของการแสดงผล ณ ขณะนนดวย - รจสเตอร DR (Data Register) : ท าหนาทเกบขอมลชวคราวส าหรบการท างานภายในลกษณะตางๆ

ตารางท3.2 บตตงคาจอ LCD [1]

การเชอมตอ LCD ในไมโครคอนโทรลเลอรของ NUVOTON

ภาพท 3.7 การตอใชงาน LCD [1]

Page 47: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

38

จากวงจรการเชอมตอจอแสดงผล LCD ในไมโครคอนโทรลเลอรของ NUVOTON จะถกฟกพอรตการใชงานเนองจากจะถกตดตงไวบนชดทดลอง ผานทางพอรต GPIO D 9-11 โดยทพอรต GPD 9-11 เปนพอรตการตอแบบอนเตอรเฟสภายในวงจรชดทดลอง

ขนตอนการทดลอง

1. เปดโปรแกรม Keil Uvision4 2. เปดไฟลตามหวขอ 2.7.2 การใชงานโปรแกรม ตวอยางโปรแกรม LCD (Graphic LCD) #include "NUC1xx.h" #include "Driver\DrvSYS.h" #include "Driver\DrvGPIO.h" #include "NUC1xx-LB_002\LCD_Driver.h" int main(void) { UNLOCKREG(); DrvSYS_Open(48000000); // set to 48MHz LOCKREG(); Initial_panel(); clr_all_panel(); print_lcd(0, "Hello Welcom to "); print_lcd(1, "Microtroller lab"); }

Page 48: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

39

3. ท าการ Compile โปรแกรม 4. Download Program ลงชดทดลอง สงเกตผลการทดลองและบนทกผลทเกดขน

ใหนกศกษาอธบายโปรแกรม

ใหนกศกษาเขยน Flow Chart ของโปรแกรม

Page 49: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

40

ใหนกศกษาท าการแกไขโปรแกรม ใหแสดงชอ รหสนกศกษา สาขาทเรยน

Page 50: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

41

ใบงานท 4 การใชงาน Key Pad Switch

วตถประสงค

1. เพอทศกษาการเขยนโปรแกรมการใชงาน Key Pad Switch 2. เพอทจะสามารถน าโปรแกรมทมอยมาแกไขรบค าสงจาก Key Pad Switch แสดงผล

ตามทตองการได

อปกรณการทดลอง

1. เครองคอมพวเตอร 2. ชดทดลอง NOVOTON NUC140 3. สาย micro USB

การตอวงจรสวตซแบบเมตรก [10] โดยวธการนเหมาะกบระบบทมความจ าเปนตองใชงานสวตซมากๆ เชน วงจรแปนพมพ คยบอรด ทใชส าหรบปอนคาตวเลข ตวอกษร และขอความตางๆ ซง จะเกดความไมสะดวกส าหรบผใชงานเปนอยางมาก ถาออกแบบใหมจ านวนสวตซคยบอรดนอยๆ เพราะจะยากแกการคนหาต าแหนงของตวเลข ตวอกษรทอยซอนกนอยในคยเดยวหลายๆ ชน โดยวธการ นจะตองใชพอรต 2 สวน คอ พอรตส าหรบอานคาสถานะของ คยสวตซ จากทางแถว (Row) และ พอรตส าหรบท าหนาทสงคาออกไป สแกนคย ในแตละหลก (Column) ของวงจรโดยจ านวนของสวตซจะขนอยกบขนาดของแถวและหลกทใช เชน ถาเปนขนาด 4x4 กจะไดทงหมด 16 ต าแหนง เปนตนซงวธการ สแกนคยแบบเมตรกนจะท าทละหลก (Column) โดยเรมจากหลกแรกไปหาหลก สดทายตามล าดบ ส าหรบลกษณะของการตอวงจรโดยทวไปของวธการนจะนยมคงสถานะของ สญญาณดานทเปน Input ใหมคาเปน “1” รอไวกอนเสมอโดยการตอตวตานทาน Pull-Up เขากบ Port- Input รอไวกอน โดยในการสแกนคยจะท าทางดานหลก (Column) โดยสงคาออกไปทางดาน Port- Input ใหมคาเปน

Page 51: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

42

“0” ครงละ 1 บต แลวกอานคาจาก Port-Input เขามาตรวจสอบวาทกบตยงคงเปน “1” อยหรอไม ซงถาพบวามบตใดเปน “0” (Column Active = “0”) กสามารถทราบไดทนทวามการกดคย ขนทต าแหนง Row และ Column นนๆ แตถาทกบตยงคงมคาเปน “1” กใหเปลยนการ Scan ไปยง Column ถดไปอกโดยท าเหมอนกนกบ Column แรกจนครบทก Column

การเชอมตอ Key Pad Switch ในไมโครคอนโทรลเลอรของ NUVOTON

ภาพท 3.8 ขาใชงานของ Key Pad Switch [1]

จากบลอกไดอะแกรมดานบนเปน Key Pad Switch แบบ 3x3 ทอยในชดทดลอง NUVOTON NUC140 โดยจะมพอรต GPIO A 3-5 เปน ROW เพอสแกนในการจายลอจกอนพตและพอรต GPIO A 0-3 เปน Column เพอทจะจายเอาตพตไปยงไมโครคอนโทรลเลอร ท าการประมวลผลและแสดงคาออกไปยงพอรตทตองการ

Page 52: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

43

ขนตอนการทดลอง

1. เปดโปรแกรม Keil Uvision4 2. เปดไฟลตามหวขอ 2.7.2 การใชงานโปรแกรม

ตวอยางโปรแกรม Key Pad Switch #include "NUC1xx.h" #include "DrvSYS.h" #include "Seven_Segment.h" #include "scankey.h" void seg_display(int16_t value); int32_t main (void) { int8_t number,get_number,click=0,set=0; UNLOCKREG();

DrvSYS_Open(48000000); LOCKREG(); OpenKeyPad(); while(1) { get_number = Scankey(); if(get_number == 0) set=1; else if(get_number != 0&&set==1); seg_display(number); close_seven_segment();

Page 53: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

44

} } void seg_display(int16_t value) {

int8_t digit; digit = value / 1000; close_seven_segment(); show_seven_segment(3,digit); DrvSYS_Delay(5000); close_seven_segment(); value = value - digit * 1000; digit = value / 100; close_seven_segment(); show_seven_segment(2,digit); DrvSYS_Delay(5000); value = value - digit * 100; digit = value / 10; close_seven_segment(); show_seven_segment(1,digit); DrvSYS_Delay(5000); value = value - digit * 10; digit = value; close_seven_segment(); show_seven_segment(0,digit); DrvSYS_Delay(5000); }

Page 54: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

45

3. ท าการ Compile โปรแกรม 4. Download Program ลงชดทดลอง สงเกตผลการทดลองและบนทกผลทเกดขน

ใหนกศกษาอธบายโปรแกรม

ใหนกศกษาเขยน Flow Chart ของโปรแกรม

Page 55: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

46

ใหนกศกษาท าการแกไขโปรแกรม โดยใหกด Key Pad Switch แสดงตวเลขบน 7-Segments 2-3 หลก

Page 56: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

47

ใบงานท 5 การแสดงผลออกทาง Buzzer

วตถประสงค

1. เพอทจะศกษาการเขยนโปรแกรมการแสดงผลออกทาง Buzzer 2. เพอทจะสามารถแกไขโปรแกรมการหนวงเวลาสงเสยงออกทาง Buzzer

อปกรณการทดลอง

1. เครองคอมพวเตอร 2. ชดทดลอง NOVOTON NUC140 3. สาย micro USB

BUZZER เปนอปกรณไฟฟาทน าผลของแมเหลกไฟฟามาดงดดใหแกนอามาเจอร(Armature) เคลอนทมาเคาะกบกระดง (Bell) ท าใหเกดเสยงดงได โครงสรางภายในประกอบดวยแทงเหลกรปตวย (U-Shaped) พนขดลวดรอบๆ แทงเหลกนตออนกรมกบหนาสมผสซงเปดปดไดโดยการเคลอนทของกานอามาเจอรการใชงานตองตอกระดงไฟฟาอนกรมกบสวทชกดปม (Push Button) และแหลงจายไฟฟา เชน แบตเตอร เมอกดสวตชกระแสไฟฟาจะผานหนาสมผสและขดลวด ท าใหเกดการดงดดอามาเจอรใหเคลอนทมาเคาะกระดงท าใหเกดเสยงดง ในขณะทอามาเจอรเคลอนทกจะตดวงจรไฟฟาออกไปดวย ดงนนเมอกานอามาเจอรเคาะกระดง แลวกจะดดไปต าแหนงเดมทนท และตอวงจรไฟฟาอกครง เมอใดทปลอยมอจากสวตชกระบวนการทเกดขนกจะหยดลง

Page 57: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

48

การเชอมตอ Buzzer ในไมโครคอนโทรลเลอรของ NUVOTON

ภาพท 3.9 ขาการตอใชของ Buzzer [1] จากบลอกไดอะแกรมดานบน แสดงการตอใชงานของ Buzzer ในชดทดลอง NUVOTON NUC140 โดยตอการใชงานจากพอรต GPIO B 11 เปนขารบค าสงจากไมโครคอนโทรลเลอรเปนลอจก 0 เพอใหสามารถใชงานได

ขนตอนการทดลอง

1. เปดโปรแกรม Keil Uvision4 2. เปดไฟลตามหวขอ 2.7.2 การใชงานโปรแกรม

ตวอยางโปรแกรม การแสดงผลออกทาง Buzzer #include "NUC1xx.h" #include "Driver\DrvSYS.h" #include "Driver\DrvGPIO.h" #include "Driver\DrvADC.h"

Page 58: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

49

int main (void) { UNLOCKREG(); DrvSYS_Open(48000000); LOCKREG(); DrvGPIO_Open(E_GPB, 11, E_IO_OUTPUT); while(1) { DrvGPIO_ClrBit(E_GPB,11); DrvSYS_Delay(100000); DrvGPIO_SetBit(E_GPB,11); DrvSYS_Delay(100000); } } 3. ท าการ Compile โปรแกรม 4. Download Program ลงชดทดลอง สงเกตผลการทดลองและบนทกผลทเกดขน

ใหนกศกษาอธบายโปรแกรม

Page 59: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

50

ใหนกศกษาเขยน Flow Chart ของโปรแกรม

ใหนกศกษาท าการแกไขโปรแกรม โดยท าการหนวงเวลาเพอให BUZZER สงเสยงเตอนชาลง

Page 60: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

51

ใบงานท 6 การใชงาน Variable Resistance

วตถประสงค

1. เพอทจะศกษาการเขยนโปรแกรมการแสดงคาจาก Variable Resistance 2. เพอทจะสามารถแกไขโปรแกรมใชงานการรบคาจาก Variable Resistanceได

อปกรณการทดลอง

1. เครองคอมพวเตอร 2. ชดทดลอง NOVOTON NUC140 3. สาย micro USB

ADC (Analog-To-Digital Converters) [11] ADC แตละชนดจะมจดเดนจดดอยแตกตางกนไปผออกแบบจ าเปนตองเลอกใช ADC ใหเหมาะสมกบลกษณะงาน แปลอยางตรงตวคอ ตวแปลงสญญาณอนาลอกใหเปนสญญาณดจตอล การแปลงสญญาณอนาลอกใหเปนสญญาณดจตอลมดวยกนหลายวธ ดงตอไปน

1. Delta-Sigma Delta-Sigma เปนการแปลงสญญาณทมความละเอยดสง เปนการแปลงทถอวาเปนอดมคต (Ideal) และท างานไดหลายยานความถ ตงแตสญญาณ DC ไปจนถงหลก MHz การท างานของ Delta-Sigma ADC สญญาณอนพตจะถก Oversample โดยตว Modulator หลงจากนนจะน าสญญาณมากรองอกทเพอใหไดคาทถกตองมากขนโดย Digital Filter จงท าใหไดคา ADC ทมความละเอยดสง ทเรทแซมปลงต าเพราะวา Delta-Sigma ท าการ Oversample สญญาณอนพตจงท าใหไดสญญาณเรยบขน(Anti-Aliasing) และในวงจรสวน Digital Filter จะมตนทนทต ากวา Analog Filter โดยปกตแลวความละเอยดสงๆจากการ

Page 61: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

52

แปลงแบบ Delta-Sigma จะใชในงานดานเสยง (Audio), งานควบคมในอตสาหกรรม และ งานเครองมอวดโดยปกตแลว Delta-sigma จะรบสญญาณความแตกตางระหวาง 2 อนพต แทนทจะเปนการวดโวลตเทยบกราวด การวดสญญาณความแตกตาง (Differential) ของอนพตสามารถน าไปวดเซนเซอรแบบบรดจ เชนเทอรโมคปเปลได Delta-Sigma เปนการแปลงสญญาณทแตกตางกบ SAR การแปลงสญญาณแบบ SAR จะเหมอนกบการวดสญญาณ ณ ตอนนน สวน Delta-Sigma จะเหมอนกบคาเฉลยของสญญาณไฟฟาใน 1 ชวงเวลาโดยสวนมาก Delta-Sigma จะมบฟเฟอรและตวขยาย (Programmable Gain Amplifiers = PGA) อยในตว บฟเฟอรจะมอมพแดนสสงเพอใหตอตรงกบขาสญญาณไดโดยไมมท าใหวงจรมคาอมพแดนสมคาผดไปจากเดม ดงนน Delta-Sigma จงสามารถใชวดสญญาณทมขนาดเลกไดด เชนสญญาณจากเทอรโมคปเปล เพราะม PGA อยในตวสามารถปรบคา Gain ไดตามความเหมาะสม

ภาพท 3.10 โครงสรางภายในของ Delta-Sigma ADC [1]

2. SAR ADCs Successive-Approximation-Register (SAR) Analog-To-Digital Converters (ADCs) เปน ADC ทมขายในตลาดมากทสด ความละเอยดจะอยในระดบกลางถงถงความละเอยดสง SAR ADCs ใหอตราการ Sampling ถง 5 Msps ทความละเอยด 8-16 บต โครงสรางแบบ SAR จะใหประสทธภาพสง กนไฟนอย และมขนาดเลกหลกการของ SAR จะเหมอนตาชงแบบ Balance คอจะมน าหนกทไมทราบคาอยดานหนง และน าหนกททราบ

Page 62: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

53

คาอยอกดานหนง เราจะเปลยนน าหนกททราบคาไปเรอยๆจนกระทงตาชง Balance เมอมสญญาณอนพตเขามาสญญาณจะถก Sample เขามาและถก Hold ไวเพอเปรยบเทยบกบแรงดนททราบคา และจะสงผลลพธไปทเอาตพต

ภาพท 3.11 โครงสรางภายในของ SAR ADC [1]

3. Flash ADC Flash ADCs เปนทรกนในอกชอวา Parallel ADCs หรอแปลเปนไทยไดวา การแปลงสญญาณอนาลอกเปนดจตอลแบบขนาน ADC ชนดนเปน ADC ทเรวทสด Flash ADCs จะใชในงานทมแบนวธกวาง อยางไรกตามโดยทวไปแลวจะกนกระแสมากกวา ADC ชนดอน มราคาแพง และโดยทวไปจะจ ากดความละเอยดไวทความละเอยด 8 บต Flash ADCs สรางมาจากวงจร Comparator มาตอเรยงกน โดย Comparator แตละตวจะมคาเทากบ 1 บต ซงเปนผลลพธมาจากการเปรยบเทยบคาของวงจร Comparator ตวอยางการใชงานไดแกการสอสารผานดาวเทยม, ออสซสโลสโคป, ระบบประมวลผลเรดาร

Page 63: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

54

การเชอมตอ ADCในไมโครคอนโทรลเลอรของ NUVOTON

ภาพท 3.12 ขาการใชงาน ADC [1] จากวงจรดานบนรบคาจาก VR ในชดทดลองของ NUVOTON NUC140 โดย VR จะปรบคาตงแต 0-5V โดยไมโครคอนโทรลเลอรจะแปลงเปนสญญาณดจตอลได 4095 ระดบ

ขนตอนการทดลอง

1. เปดโปรแกรม Keil Uvision4 2. เปดไฟลตามหวขอ 2.7.2 การใชงานโปรแกรม

ตวอยางโปรแกรม Variable Resistance #include "NUC1xx.h" #include "Driver\DrvSYS.h" #include "Seven_Segment.h"

Page 64: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

55

void InitADC(void); void seg_display(int16_t value); int32_t main (void) { int32_t adc_value; UNLOCKREG(); SYSCLK->PWRCON.XTL12M_EN = 1; SYSCLK->CLKSEL0.HCLK_S = 0; LOCKREG(); InitADC(); while(1) { while(ADC->ADSR.ADF==0); ADC->ADSR.ADF=1; adc_value=ADC->ADDR[7].RSLT; seg_display(adc_value); ADC->ADCR.ADST=1; } } void InitADC(void) { GPIOA->OFFD|=0x00800000; SYS->GPAMFP.ADC7_SS21_AD6=1; SYSCLK->CLKSEL1.ADC_S = 2; SYSCLK->CLKDIV.ADC_N = 1; SYSCLK->APBCLK.ADC_EN = 1;

Page 65: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

56

ADC->ADCR.ADEN = 1; ADC->ADCR.DIFFEN = 0; ADC->ADCR.ADMD = 0; ADC->ADCHER.CHEN = 0x80; ADC->ADSR.ADF =1; ADC->ADCR.ADIE = 1; ADC->ADCR.ADST=1; } void seg_display(int16_t value) { int8_t digit; digit = value / 1000; close_seven_segment(); show_seven_segment(3,digit); DrvSYS_Delay(5000); value = value - digit * 1000; digit = value / 100; close_seven_segment(); show_seven_segment(2,digit); DrvSYS_Delay(5000); value = value - digit * 100; digit = value / 10; close_seven_segment(); show_seven_segment(1,digit); DrvSYS_Delay(5000); value = value - digit * 10; digit = value;

Page 66: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

57

close_seven_segment(); show_seven_segment(0,digit); DrvSYS_Delay(5000); } 3. ท าการ Compile โปรแกรม 4. Download Program ลงชดทดลอง สงเกตผลการทดลองและบนทกผลทเกดขน

ใหนกศกษาอธบายโปรแกรม

ใหนกศกษาเขยน Flow Chart ของโปรแกรม

Page 67: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

58

ใหนกศกษาท าการแกไขโปรแกรม โดยใหแสดงคาออกทางจอกราฟฟก LCD

Page 68: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

59

ใบงานท 7 การตอใชงานรวมกบชดทดลอง ETT LAB3A โดยการควบคม DC Motor

วตถประสงค

1. เพอทจะศกษาการเขยนโปรแกรมควบคม DC Motor 2. เพอทจะสามารถแกไขโปรแกรมใชงานควบคม DC Motor รปแบบตางๆได

อปกรณการทดลอง

1. เครองคอมพวเตอร 2. ชดทดลอง NOVOTON NUC140 3. สาย micro USB 4. สายจมเปอรเมย เมย

คณสมบตของ Digital To Analog Converter [12] อปกรณทางไฟฟา/อเลกทรอนกส โดยทวไปทเปนอนาลอก สามารถควบคมการท างานโดยการใหอนพตเปนระดบ แรงดนทแตกตางกน ตวอยางเชน มอเตอรกระแสตรง ซงควบคมความเรวโดย เป ลยนระดบแรงดน (ห รอกระแส) ของขดลวดสนาม เ มอน าระบบด จตอลหรอไมโครคอนโทรลเลอรมาใชควบคมอปกรณทางอนาลอกเหลาน จงตองมวงจรซง สามารถแปลงสญญาณทางดจตอลเปนระดบแรงดนตอเนอง แบบอนาลอก ตงแตศนยโวลตจนถงระดบสงสดท ก าหนดไว เรยกวาวงจร Digital To Analog Converter (DAC)

Page 69: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

60

ภาพท 3.13 ระบบการแปลงสญญาณดจตอลเปนอนาลอก

จากภาพแสดงถงสวนประกอบหลกของระบบ DAC โดยทวไป ไมโครคอมพวเตอรจะมเอาตพตเปนคาไบนารวงจรแลทชรบคาไบนารเขามาเพอสงไปยง DAC ในวงจรจะใชแหลงก าเนดแรงดนหรอกระแสคงทเพออางองในการแปลงขอมล ไบนารเปนระดบกระแส ตอมาจะมวงจรแปลงจากกระแสเปนระดบแรงดน (Current-To-Voltage Converter) ซงปกตจะใชออปแอมป ทายสดสญญาณอนาลอกทไดจะผานวงจร Low-Pass Filter เพอก าจดสญญาณความถสงทแฝงอยในสญญาณทถกสรางขนมา

ภาพท 3.14 Transfer Curve ในอดมคตของ DAC 3 บต

Page 70: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

61

จากภาพเปนกราฟแสดงถงความสมพนธระหวางเอาตพตทเปนอนาลอกกบอนพตทเปนดจตอลขนาด 3 บตเรยกวา Transfer Curve สงเกตวาเมออนพตไบนารเพมขน เอาตพตอนาลอกจะเพมในลกษณะขนบนได ขนาดของแตละขนจะหาไดจาก

stepsize = VFS/2n

เมอให VFS คอระดบแรงดนเอาตพตสงสด

n คอจ านวนบตของอนพต

เนองจากเอาตพตของ DAC จะเพมเปนขนๆ รปคลนสญญาณ ทไดจาก DAC จงมลกษณะไมเรยบ ดงตวอยางในภาพแสดงถงสญญาณไซน ทสรางจาก DAC

ภาพท 3.15 คลนไซนทสรางจาก DAC

ถาเพมจ านวนบต ความละเอยดของ DAC จะเพมขน เชน เมอ ใช DAC 12 บต และ VFS = 5.0 V ความละเอยดคอ 5.0 V / 4096 = 1.22 mV ซงจะ ละเอยดกวา DAC 8 บตถง 16 เทาความถกตองของ DAC ขนอยกบหลายสวน

1. Quantization Error

Page 71: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

62

DAC บต VFS = 5.0 V เอาตพตจะมความละเอยด 19.53 mV ถาตองการเอาตพต 4.00 V DAC จะใหเอาตพตไดใกลเคยง ทสดคอ 4.04 V (19.53 mV x 205) ผดพลาด 4 mV โดยทวไปคาผด พลาดจะเทากบ +/- 0.5 LSB (Least sSignificant Bit) ตวอยางเชน DAC 8 บต ความผดพลาดจะเปน 1 ใน 512 หรอ +/- 0.195 % 2. Offset And Gain Errors เมออนพตไบนารเทากบ 0 แตเอาตพตของ DAC ไมเปน 0 เรยก วา Offset Error และอาจเกดรวมกบ Gain Error ความผดพลาดเหลา นจะท าให Transfer Curve โคงขนหรอลง ขนอยกบความไมสมดลภายใน DAC อยางไรกตาม Offset Error และ Gain Error จะแกไดโดยใชความตานทานปรบคาไดตอไวภายนอก 3. Nonlinearity คอคาความคลาดเคลอนสงสดของ Transfer Curve เทยบกบเสนตรงจากจดศนยและจดสงสด ซงจะขนอยกบความผดพลาดของสวนประกอบภาย ใน DAC ใน Data Sheet ของ DAC จะระบเปนเปอรเซนตเทยบกบคาสงสด หรอระบเปนเศษสวนของ LSB (โดยทวไปคอ +/- 0.5 LSB) 4. Settling time คอชวงเวลานบแตใหอนพตจนกระทง DAC ใหเอาตพต วดเมอเอาตพตทไดผดพลาดจากคาจรงนอยกวา 0.5 LSB คาเวลานอาจนอยกวา 100 ns ส าหรบ DAC ความเรวสง และอาจมากกวา 100 us ส าหรบ DAC ราคาถก

Page 72: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

63

บลอกไดอะแกรมชดทดลองของ ETT-LAB3A

ภาพท3.16 บลอกไดอะแกรมชดทดลองของ ETT-LAB3A

จากบลอกไดอะแกรมดานบนเปนการตอวงจรชดขบมอเตอรในชดทดลองของ ETT-LAB3A สามารถตอผานพอรตทมอยในชดทดลองและตอกบพอรต GPIO A 0-3 ของชดทดลอง NUVOTON NUC140 โดยท าการตอกบพอรต P0-3 ในวงจรขบมอเตอรของชดทดลอง ETT-LAB3A และตอไฟพอรต P10 และตอกราวดพอรต P9

ขนตอนการทดลอง

1. เปดโปรแกรม Keil Uvision4 2. เปดไฟลตามหวขอ 2.7.2 การใชงานโปรแกรม

Page 73: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

64

ตวอยางโปรแกรมการควบคม DC Motor #include <stdio.h> #include "NUC1xx.h" #include "Driver\DrvGPIO.h" #include "Driver\DrvSYS.h" void InitGPIO(); void Forward(); void Backward(); void Stop(); int main (void) { UNLOCKREG(); DrvSYS_Open(48000000); LOCKREG(); Initial_panel(); clr_all_panel(); InitGPIO(); Forward(); DrvSYS_Delay(45000000); Backward(); DrvSYS_Delay(45000000); Stop(); while(1) { Forward();

Page 74: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

65

DrvSYS_Delay(45000000); Stop(); Backward(); DrvSYS_Delay(45000000); } } void InitGPIO() { DrvGPIO_Open(E_GPA,0,E_IO_OUTPUT); DrvGPIO_Open(E_GPA,1,E_IO_OUTPUT); DrvGPIO_ClrBit(E_GPA,0); DrvGPIO_ClrBit(E_GPA,1); } void Forward() { DrvGPIO_SetBit(E_GPA,0); DrvGPIO_ClrBit(E_GPA,1); } void Backward() { DrvGPIO_ClrBit(E_GPA,0); DrvGPIO_SetBit(E_GPA,1); } void Stop() { DrvGPIO_ClrBit(E_GPA,0); DrvGPIO_ClrBit(E_GPA,1); }

Page 75: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

66

3. ท าการ Compile โปรแกรม 4. Download Program ลงชดทดลอง สงเกตผลการทดลองและบนทกผลทเกดขน

ใหนกศกษาอธบายโปรแกรม

ใหนกศกษาเขยน Flow Chart ของโปรแกรม

Page 76: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

67

ใหนกศกษาท าการแกไขโปรแกรมโดยให DC Motor หมนไปทางดานซาย 3 ครงและทางดานขวา 2 ครง

Page 77: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

68

ใบงานท 8 การตอใชงานรวมกบชดทดลอง ETT LAB3A โดยการควบคม Stepping Motor

วตถประสงค

1. เพอทจะศกษาการเขยนโปรแกรมควบคม Stepping Motor 2. เพอทจะสามารถแกไขโปรแกรมใชงานควบคม Stepping Motor รปแบบตางๆได

อปกรณการทดลอง

1. เครองคอมพวเตอร 2. ชดทดลอง NOVOTON NUC140 3. สาย micro USB 4. สายจมเปอรเมย เมย

สเตปปงมอเตอร (Stepping Motor) [13] สเตปปงมอเตอรเปนอปกรณเอาตพตอยางหนง ซงสามารถน าไอซไมโครคอนโทรลเลอร มาท าการควบคมไดสะดวก และเปนมอเตอรทเหมาะสมส าหรบใชในงานควบคมการหมน ทตองการต าแหนง และทศทางทแนนอน การท างานของ สเตปปงมอเตอรจะขบเคลอนทละขนๆ ละ ( Step) 0.9, 1.8, 5, 7.5, 15 หรอ 50 องศา ซงขนอยกบคณสมบตแตละชนดของสเตปปงมอเตอรตวนนๆ สเตปปงมอเตอรจะแตกตางจากมอเตอรกระแสตรงทวไป ( DC MOTOR ) โดยการท างานของมอเตอรกระแสตรงจะหมนไปแบบตอเนอง ไมสามารถหมนเปนแบบสเตปๆ ไดดงนนในการน าไปก าหนดต าแหนงจงควบคมไดยากกวา แตในสวนใหญเราจะใชสเตปปงมอเตอรมาท าการการควบคมโดยใชวธในระบบดจตอล เชน พรนเตอร ( Printer ) พลอตเตอร ( X-Y Plotter ) ดสกไดรฟ ( Disk drive ) ฯลฯ

Page 78: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

69

ขอดของสเตปปงมอเตอรเมอเปรยบกบมอเตอรกระแสตรง ( DC MOTOR)

1. การควบคมไมตองอาศยตวตรวจจบการหมน 2. ไมตองใชแปรงถาน ดงนนจงท าใหไมมสวนทจะตองสกหรอ และปญหาของการสปารค ( ทเกดจากหนาสมผสของแปรงถานแหวนตวน าในโรเตอร ) ทท าใหเกดสญญาณรบกวน 3. การควบคมโดยทางวงจรดจตอลหรอไมโครโพรเซสเซอร ท าไดงาย และสะดวก

ภาพท 3.17 สเตปปงมอเตอรในชดทดลอง ETT-LAB3A

สเตปปงมอเตอรทจะน ามาใชในการทดลองน จะใชสเตปปงแบบยนโพลาร ( Uni.-Polar Stepper Motor) ซงโครงสรางของสเตปปงมอเตอรแบบนจะมสวนประกอบทส าคญ 2 สวนดวยกนคอ 1. สวนทท าการหมน (Rotor) จะเปนแมเหลกถาวรหรออนๆ 2. สวนทอยกบท (Stator) เปนขดลวดทพนไวจ านวนหลายๆขด

Page 79: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

70

ภาพท 3.18 สเตปปงมอเตอร 4 เฟส แบบยนโพลาร (Uni-Polar Stepper Motor)

วธการขบสเตปปงมอเตอรใหหมนโดยการกระตนเฟส ในการควบคมสเตปปงมอเตอรเพอทจะใหท าการหมน มวธการควบคมกระแสไฟทจายใหกบขดลวดสเตเตอร (Stator) ในแตละเฟสของสเตปปงมอเตอร อยางเปนล าดบทแนนอน โดยถาหากเราตองการใหกระแสไหลในเฟสใดๆ กจะท าใหสถานะของเฟสนนๆเปนสถานะลอจก "1" และในการกระตนเฟสของของสเตปปงมอยดวยกน 2 แบบคอ 1. การกระตนเฟส แบบฟลสเตปมอเตอร (Full Step Motor) ยงสามารถแบงการกระตนเฟสออกไดเปนอก 2 วธดวยกนคอ

1.1 การกระตนเฟสแบบฟลสเตป 1 เฟส (Single-Phase Driver)

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

Page 80: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

71

1.2 การกระตนเฟสแบบฟลสเตป 2 เฟส (Two-Phase Driver) ตารางท 2 เปนการปอนกระแสใหกบขดลวด 2 ขด ของสเตปปงมอเตอรพรอมๆกนไป และจะกระตนเรยงถดกบไปเชนเดยวกบแบบหนงเฟส ดงนนการกระตนแบบนจงตองใชก าลงไฟมากขน และจะท าใหมแรงบดของมอเตอรมากกวาการกระตนแบบ 1 เฟส

2.การกระตนเฟส แบบฮาลฟสเตป (Half Step Motor) หรอ One-Two Phase Driver คอการกระตนเฟสแบบฟลสเตป 1 เฟส และ 2 เฟส เรยงล าดบกนไป แสดงดงตารางท 3 แรงบดทไดจากการกระตนเฟสแบบนจะมเพมมากขน เพราะชวงของสเตปมระยะสนลง ในการกระตนแบบน เราจะตองมการกระตนทเฟสถง 2 ครง จงจะไดระยะของ สเตปเทากบการกระตนเพยงครงเดยว ของแบบฟลสเตป 2 แบบแรก ความละเอยดของการหมนต าแหนงองศาตอสเตป กเปนสองเทาของแบบแรก ความถกตองของต าแหนงทก าหนดจงมมากขน

ตางรางท 3.3 แบบฟลสเตป 1 เฟส

สเตปท เฟสท 1 เฟสท 2 เฟสท 3 เฟสท 4 1 1 0 0 0 2 0 1 0 0 3 0 0 1 0 4 0 0 0 1

ตารางท 3.4 แบบฟลสเตป 2 เฟส

สเตปท เฟสท 1 เฟสท 2 เฟสท 3 เฟสท 4 1 1 1 0 0 2 0 1 1 0 3 0 0 1 1 4 1 0 0 1

Page 81: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

72

ตารางท 3.5 แบบฮาลฟสเตป 2 เฟส

สเตปท เฟสท 1 เฟสท 2 เฟสท 3 เฟสท 4 1 1 0 0 0 2 1 1 0 0 3 0 1 0 0 4 0 1 1 0 5 0 0 1 0 6 0 0 1 1 7 0 0 0 1 8 1 0 0 1

วงจรทใชในการขบสเตปปงมอเตอรโดยใชไอซส าเรจรป และวงจรจากทรานซสเตอร โดยใชไอซส าเรจรปเบอร ULN2003 จะมคณสมบตเปนไอซไดเวอรกระแสสงแบบคอลเลคเตอรเปด สามารถเลอกแรงดนไดกวาง 5-30 V จายกระแสไดสงถง 500 mA ตอขา และมไดโอดทปองกนกระแสยอนกลบอยภายในไอซ สวนแอลอดทตอในวงจรเราจะตอไวเพอแสดงการกระตนแตละเฟส ของแตละแบบ

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

Page 82: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

73

วธการตรวจสอบหาเฟสของขดลวด สเตปปงมอเตอร ในขนตอนท 1 ใหสงเกตวา สเตปปงมอเตอรทน ามาทดลองทเปนแบบยนโพลาร ( Uni-Polar Stepper Motor) จะมจ านวนสาย 5 เสนหรอ 6 เสน (ถอดจากดสกไดรฟเกาขนาด 5 นวน ามาใชงานได) ในขนตอนท 2 ใชมเตอรวดคาความตานทานของเสนลวดในแตละขดขนตอนการวด ใหหาสายทตอเปนจดรวมเสยกอน(Common) โดยใหใช มลตมเตอรตงคาไวส าหรบการวดคาความตานทาน แตละเสน สงเกตทคาความตานทาน ถาหากเราไมไดวดระหวาง จดตอรวม(Common) กบสายแตละเสน คาความตานทานจะมคาเปน 2 เทาของการวดระหวางจดตอรวมกบสายทใชงาน ตวอยางเชน ถาใหจด B เปนจดรวม หากวดระหวางทจด A กบจด B จะมคาเทากบ 60 Ohm แตถาวดระหวางทจด A และจด C ซงไมใชจดรวมกจะไดคาเทากบ 120 Ohm หากเปนแบบทมสาย 6 เสนกจะมจดรวมสองจด เพราะมขดลวดคนละชดกน และสายทเปนจดรวมสวนใหญจะมสเหมอนกน ท านองเดยวกนหากเปนแบบทมสาย 5 เสนกจะมจดรวมเพยงจดเดยวเทานน ในขนตอนท 3 หากเปนแบบทมสาย 6 เสนกใหท าการตอจดรวมเขาดวยกนจะไดเปน 5 เสน แลวตอวงจรตาม รปหลงจากนนใหทดลองกดสวตซ ทตอเขากบแตละจดโดยเรมท จด A จด B จด C และจด D แลวใหสงเกตการหมนของสเตปปงมอเตอรวาหมนไดตอเนองหรอไม หากมการกระโดดขามสเตปกใหทดลองโดยเรยงล าดบการกดสวตซใหม จนหาล าดบของสายไดถกตองคอมอเตอรเดนตามทละสเตป อยางเปนล าดบ

ภาพท 3.20 การใชมเตอรวดคาความตานทาน

Page 83: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

74

ภาพท 3.21 แสดงการตอวงจรเพอทดสอบโดยการสวตซเพอหาล าดบ

บลอกไดอะแกรมทใชขบ สเตปปงมอเตอร

ภาพท 3.22 วงจรขบสเตปปงมอเตอร ETT-LAB3A

จากภาพดานบนแสดงวงจรควบคมสเตปปงมอเตอรของบอรดทดลอง ETT-LAB3A ซงใชมอเตอรสเตปปง ชนดยนโพลาร 48 สเตป นนคอมการเคลอนทไปสเตปละ 7.5 องศาเมอควบคม

Page 84: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

75

แบบฟลสเตป โดย สญญาณลอจกทเขามาควบคมจะถกสงผาน IC 74HC245 ซงท าหนาทเปนบฟเฟอรใหกบไมโคร คอนโทรลเลอร และใช IC ULN2803 ในการขบกระแสเพอควบคมมอเตอร โดยสายสญญาณของเฟสท 1-4 จะถกตอกบสายพอรตขาท P0, 1, 2 และ 3 โดยตอไปยงพอรต GPIO A 0-3 และจายไฟเลยงจากชดทดลอง NUVOTON NUC140 ไปยงพอรต P10 และตอกราวดไปยงพอรต P9 เพอจายไฟไปยงชดทดลอง ETT-LAB3A

ขนตอนการทดลอง

1 เปดโปรแกรม Keil Uvision4 2. เปดไฟลตามหวขอ 2.7.2 การใชงานโปรแกรม

ตวอยางโปรแกรมการควบคม Stepping Motor #include "NUC1xx.h" #include "Driver\DrvGPIO.h" #include "Driver\DrvSYS.h" #define d360 12 #define d180 12/2 #define d90 12/4 #define d45 12/8 unsigned char CW[8] ={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08}; unsigned char CCW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; void CW_MOTOR(uint16_t deg); void CCW_MOTOR(uint16_t deg); int main (void)

Page 85: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

76

{ CW_MOTOR(d360); CCW_MOTOR(d180); } void CW_MOTOR(uint16_t deg) { int i=0,j=0; for(j=0;j<(deg);j++) { for(i=0;i<8;i++) { GPIOA->DOUT=CW[i]; DrvSYS_Delay(50000);//delay 2000us = 2ms } } } void CCW_MOTOR(uint16_t deg) { int i=0,j=0; for(j=0;j<(deg);j++) { for(i=0;i<8;i++) { GPIOA->DOUT=CCW[i]; DrvSYS_Delay(50000); } } }

Page 86: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

77

3. ท าการ Compile โปรแกรม 4. Download Program ลงชดทดลอง สงเกตผลการทดลองและบนทกผลทเกดขน

ใหนกศกษาอธบายโปรแกรม

ใหนกศกษาเขยน Flow Chart ของโปรแกรม

Page 87: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

78

ใหนกศกษาท าการแกไขโปรแกรม โดยให Stepping Motor หมนเดนหนา 90 องศาถอยหลง 180 องศาและเดนหนา 360 องศา

Page 88: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

บทท 4 เฉลยใบงานการทดลอง

เฉลยใบงานท 1 การทดลองการแสดงผลออกทาง LED สงเกตผลการทดลองและบนทกผลทเกดขน จากการทดลองการแสดงผลออกทาง LED ในชดทดลองของ NUVOTON NUC140 จากโปรแกรมตวอยางทใหมา ท าใหเหนวา LED ตดและดบเปนจงหวะตามการสงงานของโปรแกรมโดย LED จะตดดวงแรกทางซายมอจาก LED ทงหมด 4ดวง ใหนกศกษาอธบายโปรแกรม โปรแกรมการตดดบของ LED เรมตนการ #include "NUC1xx.h" เปนการดงไดเวอรของชป NUVOTON มาใชงานเปนคาเรมตมจากนน #include "Driver\DrvSYS.h" ดงคาการใชงานของซสเทมไดเวอรออกมาเพอตงคาสวนตางๆภายในไอซ #include "Driver\DrvGPIO.h"เปนเซตคาขาการใชงานทอยบนชดทดลอง NUVOTON ในชดค าสง main เรมตน UNLOCKREG(); เปนการปลดลอกรจสเตอรเพอเขาไปเซตคา ความเรวของ CPU โดยเซตคาความเรวในการท างานไวท 48 MHz จากนนกท าการปดรจสเตอร LOCKREG(); เรมค าสง LED ท างานโดยการเขยนโปรแกรมสงงานก าหนดอนพตใหกบ DrvGPIO_Open(E_GPC, 12, E_IO_OUTPUT);เปดการท างานโดยใชพอรตขา E 12 เปนขาเอาตพต DrvGPIO_ClrBit(E_GPC, 12); เปนการเซตคาใหบตเปน 0 เพอใหหลอด LED ท างานจากนนหนวงเวลาให LED แสดงผล และท าการเซตบตอกครง DrvGPIO_SetBit(E_GPC, 12);เพอให LED ดบ และท างานตอไปในโหมด while จนครบตามทเขยนโปรแกรมไว

Page 89: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

80

เฉลย Flow chart ของโปรแกรม

Start

#include "NUC1xx.h"

Init_LED();

while (1)

#include "Driver\DrvSYS.h"

#include "Driver\DrvGPIO.h"

DrvGPIO_SetBit(E_GPC, 12);

DrvSYS_Delay(300000);

DrvGPIO_ClrBit(E_GPC, 12);

LOCKREG();

UNLOCKREG();

DrvSYS_Open(48000000);

1

1

DrvSYS_Delay(300000);

End

No

Yes

Page 90: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

81

เฉลยใบงานแกไขโปรแกรม โดยให LED ตดดบ 4 ดวง #include "NUC1xx.h" #include "Driver\DrvGPIO.h" #include "Driver\DrvUART.h" #include "Driver\DrvSYS.h" void Init_LED(); int main (void) { UNLOCKREG(); DrvSYS_Open(48000000); LOCKREG(); Init_LED(); while (1) { DrvGPIO_ClrBit(E_GPC, 12); DrvSYS_Delay(300000); DrvGPIO_SetBit(E_GPC, 12); DrvSYS_Delay(300000); DrvGPIO_ClrBit(E_GPC, 13); DrvSYS_Delay(300000); DrvGPIO_SetBit(E_GPC, 13); DrvSYS_Delay(300000); DrvGPIO_ClrBit(E_GPC, 14); DrvSYS_Delay(300000);

Page 91: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

82

DrvGPIO_SetBit(E_GPC, 14); DrvSYS_Delay(300000); DrvGPIO_ClrBit(E_GPC, 15); DrvSYS_Delay(300000); DrvGPIO_SetBit(E_GPC, 15); DrvSYS_Delay(300000); } } void Init_LED() { DrvGPIO_Open(E_GPC, 12, E_IO_OUTPUT); DrvGPIO_Open(E_GPC, 13, E_IO_OUTPUT); DrvGPIO_Open(E_GPC, 14, E_IO_OUTPUT); DrvGPIO_Open(E_GPC, 15, E_IO_OUTPUT); DrvGPIO_SetBit(E_GPC, 12); DrvGPIO_SetBit(E_GPC, 13); DrvGPIO_SetBit(E_GPC, 14); DrvGPIO_SetBit(E_GPC, 15); }

Page 92: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

83

เฉลยใบงานท 2 การทดลองการแสดงผลออกทาง 7-Segment สงเกตผลการทดลองและบนทกผลทเกดขน จากการทดลองการแสดงผลออกทาง 7-Segment ในชดลอง NUVOTON NUC140 จากโปรแกรมทใหมาแสดงถง 7-Segment ทมการท างาน โดยการการนบขนจาก 0 ถง 9 และเมอครบรอบแลวกจะมการรเซตคากลบมาเรมนบ 0 ใหมและนบขนไปแบบนเรอยๆจบครบค าสงของโปรแกรมทใหมาในตวอยางชดการทดลอง ใหนกศกษาอธบายโปรแกรม โปรแกรมการแสดงผลออกทาง 7-Segment เรมตนการ #include "NUC1xx.h" เปนการดงไดเวอรของชป NUVOTON มาใชงานเปนคาเรมตมจากนน #include "Driver\DrvSYS.h" ดงคาการใชงานของซสเทมไดเวอรออกมาเพอตงคาสวนตางๆภายในไอซ #include "Seven_Segment.h" เปนการเซตคาขา 7-Segment ทอยบนชดทดลอง NUVOTON ในชดค าสง main เรมตน UNLOCKREG(); เปนการปลดลอกรจสเตอรเพอเขาไปเซตคา ความเรวของ CPU โดยเซตคาความเรวในการท างานไวท 48 MHz จากนนกท าการปดรจสเตอร LOCKREG(); จากนนประกาศให 7-Segment บตสดทายท างานโดยใชค าสง digit = value เพอเลอกแสดงหลก 7-Segment จากนนท าการเคลย 7-Segment โดยใชค าสง close_seven_segment();เพอเปนการเซตคาเรมตน คอ 0 จากนนใชค าสง show_seven_segment เพอแสดงตวเลขตามทโปรแกรมไว และท าการหนวงเวลาการแสดงผลของ 7-Segment โดยใชค าสง if(number>9) number=0; เปนค าสงนบขนจาก 0 ถง 9 และวนกลบมาท 0 ดงเดม

Page 93: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

84

เฉลยใบงานท 2 Flow chart ของโปรแกรม

int32_t main (void)

#include "NUC1xx.h"

Start

1

close_seven_segment(); #include "Seven_Segment.h"

LOCKREG(); #include "Driver\DrvSYS.h"

#include "NUC1xx-LB_002\LCD_Driver.h"

DrvSYS_Open(48000000);

UNLOCKREG();

int number=0,count=0;

char num[16];

1

while (1) No

Yes

if(number>9) number=0;

while(count<50)

End

Page 94: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

85

void seg_display(int16_t value)

digit = value;

digit = value / 10;

digit = value / 100;

digit = value / 1000;

int8_t digit;

Start

End

Page 95: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

86

เฉลยใบงานท 2 โปรแกรม #include "NUC1xx.h" #include "Driver\DrvSYS.h" #include "Seven_Segment.h" #include "NUC1xx-LB_002\LCD_Driver.h" void seg_display(int16_t value); int32_t main (void) { char num[16]; int number=0,count=0; UNLOCKREG(); DrvSYS_Open(48000000); LOCKREG();

close_seven_segment(); while(1) { { seg_display(number); count++; } count=0; number++; if(number>99) number=0; while(count<50) {

Page 96: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

87

seg_display(number); count++; } count=0; number++; } } void seg_display(int16_t value) {

int8_t digit; digit = value / 1000; close_seven_segment(); show_seven_segment(3,digit); DrvSYS_Delay(5000); close_seven_segment(); value = value - digit * 1000; digit = value / 100; close_seven_segment(); show_seven_segment(2,digit); DrvSYS_Delay(5000); value = value - digit * 100; digit = value / 10; close_seven_segment(); show_seven_segment(1,digit); DrvSYS_Delay(5000); value = value - digit * 10; digit = value; close_seven_segment();

Page 97: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

88

show_seven_segment(0,digit); DrvSYS_Delay(5000); }

Page 98: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

89

เฉลยใบงานท 3 การทดลองการแสดงผลออกทาง Graphic LCD สงเกตผลการทดลองและบนทกผลทเกดขน จากการทดลองการแสดงผลออกทาง Graphic LCD บนชดทดลอง NUVOTON NUC140 ทมจอแสดงผล Graphic LCD ทขนาด 128x64 pixel ซงแสดงตวอกษรได 16 ตวอกษรตอหนงบรรทดและมบรรทดท งหมด 4 บรรทด ใหแสดงคาดวยกนจากโปรแกรมทใหมาเมอท าการ compile เสรจแลวกจะแสดงค าวา Hello Welcom to ทอยบนบรรทดแรกและบรรทดทสองจะแสดงค าวา Microtroller lab จากการสงเกตท าใหเหนวาจะมบรรทดวางอยอกสองบรรทดเพอทจะใสโปรแกรมลงไปแสดงผลไดอก ใหนกศกษาอธบายโปรแกรม โปรแกรมการแสดงผลออกทาง Graphic LCD เรมตนการ #include "NUC1xx.h" เปนการดงไดเวอรของชป NUVOTON มาใชงานเปนคาเรมตมจากนน #include "Driver\DrvSYS.h" ดงคาก า ร ใ ช ง า น ขอ ง ซ ส เ ท ม ไ ด เ ว อ ร อ อ กม า เ พ อ ต ง ค า ส ว น ต า ง ๆภ า ย ใน ไ อ ซ #include "Driver\DrvGPIO.h"เปนเซตคาขาการใชงานทอยบนชดทดลอง NUVOTON จากนนเลอกเซตคาการใชงานจอ LCD #include "NUC1xx-LB_002\LCD_Driver.h" เพอดงไลบราลของการแกไขจอ LCD ในชดค าสง main เรมตน UNLOCKREG(); เปนการปลดลอกรจสเตอรเพอเขาไปเซตคา ความเรวของ CPU โดยเซตคาความเรวในการท างานไวท 48 MHz จากนนกท าการปดรจสเตอร LOCKREG(); จากใหท าการแสดงผลจอ LCD โดยใชชดค าสง print_lcd(0, "Hello Welcom to "); เปนค าสงโดยใหแสดงคาทบรรทดแรก จากนน print_lcd(1, "Microtroller lab");เพอใหแสดงคาบรรทดทสอง

Page 99: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

90

เฉลยใบงานท 3 Flow chart ของโปรแกรม

Start

int32_t main (void)

#include "NUC1xx.h"

1

Initial_panel();

#include "Driver\DrvGPIO.h"

LOCKREG();

#include "Driver\DrvSYS.h"

#include "NUC1xx-LB_002\LCD_Driver.h"

DrvSYS_Open(48000000);

UNLOCKREG();

clr_all_panel();

print_lcd (0, "Hello Welcom to ");

End

1

print_lcd (1, "Microtroller lab");

Page 100: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

91

เฉลยใบงานท 3 โปรแกรม #include <stdio.h> #include "NUC1xx.h" #include "Driver\DrvSYS.h" #include "Driver\DrvGPIO.h" #include "NUC1xx-LB_002\LCD_Driver.h" int main(void) { UNLOCKREG(); DrvSYS_Open(48000000); LOCKREG(); Initial_panel(); clr_all_panel(); print_lcd(0, "Hello Welcom to "); print_lcd(1, "Microtroller lab"); print_lcd(2, "SRIPATUM UNI. "); print_lcd(3, "BY SARGMET GROUP"); }

Page 101: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

92

เฉลยใบงานท 4 การทดลองการรบคาจาก Matrix Switch สงเกตผลการทดลองและบนทกผลทเกดขน การทดลองการรบคาจาก Matrix Switch ทอยบนชดทดลองนน จะมขนาด 3x3 และมปมกดอย 9 ปมดวยกนจากทเขยนโปรแกรมจากตวอยางเสรจแลวกเหน 7-segment สวางขนมาจากนนลองกดปมดกเหนตวเลขไปแสดงบน 7-Segment ทอยบนชดลอง ตามคาคาตวเลขทกดไปเชนถากดปมตรงกลางของปมทงหมดกจะแสดงตวเลข 5 และเมอลองกดปมสดทายกจะแสดงตวเลข 9 แทนตวเลข 5 ทเหนอยกอนหนาน ใหนกศกษาอธบายโปรแกรม โปรแกรมการรบคาจาก Matrix Switch เรมตนการ #include "NUC1xx.h" เปนการดงไดเวอรของชป NUVOTON มาใชงานเปนคาเรมตมจากนน #include "Driver\DrvSYS.h" ดงคาการใชงานของซสเทมไดเวอรออกมาเพอตงคาสวนตางๆภายในไอซ ไอซ #include "Seven_Segment.h" เปนการเซตคาขา 7-Segment ทอยบนชดทดลอง NUVOTON #include "scankey.h"เลอกรบคาจาก Key Pad Switch ขนาด 3x3 ในชดค าสง main เรมตน UNLOCKREG(); เปนการปลดลอกรจสเตอรเพอเขาไปเซตคา ความเรวของ CPU โดยเซตคาความเรวในการท างานไวท 48 MHz จากนนกท าการปดรจสเตอร LOCKREG();เรมตน get_number = Scankey(); เปนการรอรบคามาจาก Key pad ถากดปม Key pad ปมใดปมนง seg_display(number); โปรแกรมจะดวาเรากดปมไหนตวเลขอะไรและจะท าการแสดงผลไปยง 7-Segment ทอยบนชดทดลองโดยจะตดอยตรงท 7-Segment บตท 0 หรอบตสดทาย

Page 102: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

93

เฉลยใบงานท 4 Flow chart ของโปรแกรม

int32_t main (void)

#include "NUC1xx.h"

1

get_number = Scankey();

#include "Seven_Segment.h"

LOCKREG();

#include "Driver\DrvSYS.h"

#include "scankey.h"

DrvSYS_Open(48000000);

UNLOCKREG();

OpenKeyPad();

int8_t number,get_number,click=0,s

et=0;

while

(1)

No

Yes

if(get_number == 0) set=1;

else if(get_number != 0&&set==1)

End

Start 1

seg_display(number);

close_seven_segment();

Page 103: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

94

void seg_display(int16_t value)

digit = value;

digit = value / 10;

digit = value / 100;

digit = value / 1000;

int8_t digit;

End

Start

Page 104: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

95

เฉลยใบงานท 4 โปรแกรม #include "NUC1xx.h" #include "DrvSYS.h" #include "Seven_Segment.h" #include "scankey.h" void seg_display(int16_t value); int32_t main (void) { int8_t number,get_number,click=0,set=0; UNLOCKREG();

DrvSYS_Open(48000000); LOCKREG(); OpenKeyPad(); while(1) { get_number = Scankey(); if(get_number == 0) set=1; else if(get_number != 0&&set==1) { set=0; if(click==0) { number = 0; number = get_number; click++; }

Page 105: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

96

else if(click==1) { number = (number*10)+get_number; click=0; } } seg_display(number); close_seven_segment();

} } void seg_display(int16_t value) {

int8_t digit; digit = value / 1000; close_seven_segment(); show_seven_segment(3,digit); DrvSYS_Delay(5000); close_seven_segment(); value = value - digit * 1000; digit = value / 100; close_seven_segment(); show_seven_segment(2,digit); DrvSYS_Delay(5000); value = value - digit * 100; digit = value / 10; close_seven_segment(); show_seven_segment(1,digit); DrvSYS_Delay(5000);

Page 106: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

97

value = value - digit * 10; digit = value; close_seven_segment(); show_seven_segment(0,digit); DrvSYS_Delay(5000); }

Page 107: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

98

เฉลยใบงานท 5 การทดลองการแสดงผลออกทาง Buzzer สงเกตผลการทดลองและบนทกผลทเกดขน จากการทดลองการแสดงผลออกทาง Buzzer ในชดลองจะมตว Buzzer ขนาดเลกอยบนชดทดลองดวยเพอทงายและสะดวกในการสงเสยงเตอน นากโปรแกรมทใหมานนแสดงใหเหนการสงเสยงของ Buzzer ทอยบนชดทดลอง จะมการสงเสยงบบเปนจงหวะตามทโปรแกรมไวและกสงเสยงไปแบบนนไมมหยดจนกวาจะปดแหลงจายไฟใหกบชดลอง ใหนกศกษาอธบายโปรแกรม โปรแกรมการแสดงผลออกทาง Buzzer เรมตนการ #include "NUC1xx.h" เปนการดงไดเวอรของชป NUVOTON มาใชงานเปนคาเรมตมจากนน #include "Driver\DrvSYS.h" ดงคาการใชงานของซสเทมไดเวอรออกมาเพอตงคาสวนตางๆภายในไอซ #include "Driver\DrvGPIO.h"เปนเซตคาขาการใชงานทอยบนชดทดลอง NUVOTON จากนนเลอกเซตคาการใชงาน #include "Driver\DrvADC.h" เพอดงไลบราลของการแปลงอนาลอกเปนดจตอล ในชดค าสง main เรมตน UNLOCKREG(); เปนการปลดลอกรจสเตอรเพอเขาไปเซตคา ความเรวของ CPU โดยเซตคาความเรวในการท างานไวท 48 MHz จากนนกท าการปดรจสเตอร LOCKREG();เซตลอจก DrvGPIO_ClrBit(E_GPB,11); เลอกขาใชงาน GPB 11 เปนบต 0 เพอให BUZZER ท างานและหนวงเวลาการสงเสยงไว 1 วนาท จากนนกเลอกเคลยบตขานน DrvGPIO_SetBit(E_GPB,11); เพอเลอกปดการท างานสงเสยงของ BUZZER และหนวงเวลา 1วนาทจากนนกจะท างานวนตอไปในลป while

Page 108: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

99

เฉลยใบงานท 5 Flow chart ของโปรแกรม

Start 1

int32_t main (void)

#include "NUC1xx.h"

1

DrvGPIO_ClrBit(E_GPB,11);

#include "Driver\DrvGPIO.h"

LOCKREG();

#include "Driver\DrvSYS.h"

#include "Driver\DrvADC.h"

DrvSYS_Open(48000000);

UNLOCKREG();

DrvGPIO_Open(E_GPB, 11, E_IO_OUTPUT);

while (1) No

Yes

DrvSYS_Delay(100000);

DrvGPIO_SetBit(E_GPB,11);

End

DrvSYS_Delay(100000);

Page 109: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

100

เฉลยใบงานท 5 โปรแกรม #include "NUC1xx.h" #include "Driver\DrvSYS.h" #include "Driver\DrvGPIO.h" #include "Driver\DrvADC.h" int main (void) { UNLOCKREG();

DrvSYS_Open(48000000); LOCKREG(); DrvGPIO_Open(E_GPB, 11, E_IO_OUTPUT); while(1) {

DrvGPIO_ClrBit(E_GPB,11); DrvSYS_Delay(42000000); DrvGPIO_SetBit(E_GPB,11); DrvSYS_Delay(42000000); } }

Page 110: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

101

เฉลยใบงานท 6 การทดลองการรบคาจาก Variable Resistance สงเกตผลการทดลองและบนทกผลทเกดขน จากการทดลองการรบคาจาก Variable Resistance ทมอยบนชดทดลองนน กจะเปนตวตานทานแบบปรบคาได ทจะแปลงคาอนาลอกเปนดจตอลและจากโปรแกรมทใหมาแสดงใหเหนการปรบคาเพอไปแสดงผลบน 7-Segment จากทลองหมนปรบคาเรมตนจาก 0 และปรบขนไปเรอยๆจนสดจะแสดงคา 4095 จะเหนวาเปนคาสดทายทแสดงผล ใหนกศกษาอธบายโปรแกรม โปรแกรมการรบคาจาก Variable Resistance เรมตนการ #include "NUC1xx.h" เปนการดงไดเวอรของชป NUVOTON มาใชงานเปนคาเรมตมจากนน #include "Driver\DrvSYS.h" ดงคาการใชงานของซสเทมไดเวอรออกมาเพอตงคาสวนตางๆภายในไอซ #include "Seven_Segment.h" เปนการเซตคาขา 7-Segment ทอยบนชดทดลอง NUVOTON ในชดค าสง main เรมตน UNLOCKREG(); เปนการปลดลอกรจสเตอรเพอเขาไปเซตคา ความเรวของ CPU โดยเซตคาความเรวในการท างานไวท 48 MHz จากนนกท าการปดรจสเตอร LOCKREG(); รบคา ADC จากขา GPA 7 มาเกบไวท adc_value แลวน ามาแสดงผลท 7-Segment ซงคา ADC จะมขนาด 10 บตจะแสดงคาไดจาก 0 ถง 4095

Page 111: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

102

เฉลยใบงานท 6 Flow chart ของโปรแกรม

int32_t main (void)

#include "NUC1xx.h"

1

Init ADC();

#include "Seven_Segment.h"

LOCKREG();

#include "Driver\DrvSYS.h"

SYSCLK->PWRCON.XTL12M_EN = 1;

UNLOCKREG(); adc_value=ADC->ADDR[7].RSLT;

while (1) No

Yes

while(ADC->ADSR.ADF==0);

ADC->ADSR.ADF=1;

End

SYSCLK->CLKSEL0.HCLK_S = 0;

1 Start

int32_t adc_value;

seg_display(adc_value);

ADC->ADCR.ADST=1;

Page 112: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

103

void InitADC(void)

GPIO initial

Select Operation mode

Enable and Select ADC clock source, and then enable ADC module

Enable ADC interrupt 1;

Select ADC channel

Enable WDT module

Start

void seg_display (int16_t value)

End

Page 113: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

104

เฉลยใบงานท 6 โปรแกรม #include "NUC1xx.h" #include "DrvSYS.h" #include "NUC1xx-LB_002\LCD_Driver.h" void InitADC(void); int32_t main (void) { char TEXT1[16]="ADC Value: "; UNLOCKREG(); SYSCLK->PWRCON.XTL12M_EN = 1; SYSCLK->CLKSEL0.HCLK_S = 0; LOCKREG(); InitADC(); Initial_panel(); clr_all_panel(); print_lcd(0, "Smpl_ADC_VR1"); while(1) { while(ADC->ADSR.ADF==0); ADC->ADSR.ADF=1; sprintf(TEXT1+10,"%4d",ADC->ADDR[7].RSLT); print_lcd(1, TEXT1); DrvSYS_Delay(20000); ADC->ADCR.ADST=1;

Page 114: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

105

} } void InitADC(void) { GPIOA->OFFD|=0x00800000; SYS->GPAMFP.ADC7_SS21_AD6=1; SYSCLK->CLKSEL1.ADC_S = 2; SYSCLK->CLKDIV.ADC_N = 1; SYSCLK->APBCLK.ADC_EN = 1; ADC->ADCR.ADEN = 1; ADC->ADCR.DIFFEN = 0; ADC->ADCR.ADMD = 0; ADC->ADCHER.CHEN = 0x80; ADC->ADSR.ADF =1; ADC->ADCR.ADIE = 1; ADC->ADCR.ADST=1; }

Page 115: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

106

เฉลยใบงานท 7 การทดลองรวมกบชดทดลอง ETT ควบคม DC Motor สงเกตผลการทดลองและบนทกผลทเกดขน จากการทดลองรวมกบชดทดลอง ETT ควบคม DC Motor โดยสงโปรแกรมจากชดทดลอง NUVOTON NUC140 ไปยงชดลอง ETT เพอควบคมมอเตอร จากโปรแกรมตวอยางแสดงใหเหนถงการหมนของมอเตอรทหมนไปทางขวาและทางซายสลบกนไปเรวมากจนตาเปลามองไมทนแตยงมเซนเซอรทอยบนชดทดลองชวยใหเหนทศทางของการหมนในตอนเรมตนอย ใหนกศกษาอธบายโปรแกรม โปรแกรมการทดลองรวมกบชดทดลอง ETT ควบคม DC Motor เรมตนการ #include "NUC1xx.h" เปนการดงไดเวอรของชป NUVOTON มาใชงานเปนคาเรมตมจากนน #include "Driver\DrvSYS.h" ดงคาการใชงานของซสเทมไดเวอรออกมาเพอต งคาสวนตางๆภายในไอซ #include "Driver\DrvGPIO.h"เปนเซตคาขาการใชงานทอยบนชดทดลอง NUVOTON ในชดค าสง main เรมตน UNLOCKREG(); เปนการปลดลอกรจสเตอรเพอเขาไปเซตคา ความเรวของ CPU โดยเซตคาความเรวในการท างานไวท 48 MHz จากนนกท าการปดรจสเตอร LOCKREG(); จากนนสงใหมอเตอรเดนหนา DrvGPIO_SetBit(E_GPA,0); เปนการเคลยบต โดยให GPA 0 ท างานโดยใหมอเตอรหมนไปทางดานหนา DrvGPIO_ClrBit(E_GPA,1);เปนการเซตคาใหมอเตอรหยดการท างาน DrvGPIO_ClrBit(E_GPA,0); เปนการสงใหมอเตอรท างานในหารหมนถ อ ย ห ล ง DrvGPIO_SetBit(E_GPA,1); ส ง ใ ห เ ค ล ย บ ต ก า ร ท า ง า น ใ ห ม อ เ ต อ ร ห ย ด DrvGPIO_ClrBit(E_GPA,0); DrvGPIO_ClrBit(E_GPA,1); เปนค าสงใหมอเตอรหยดการท างานทงโปรแกรม

Page 116: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

107

เฉลยใบงานท 7 Flow chart

int32_t main (void)

#include "NUC1xx.h"

1

clr_all_panel();

#include " Driver\DrvGPIO.h"

LOCKREG();

#include "Driver\DrvSYS.h"

DrvSYS_Open(48000000);

UNLOCKREG();

DrvSYS_Delay(45000000);

InitGPIO();

Forward();

Initial_panel();

Backward();

DrvSYS_Delay(45000000);

1 Start

Stop();

2

Page 117: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

108

while (1)

No

Yes

End

1

Forward();

DrvSYS_Delay(45000000);

Stop();

Backward();

DrvSYS_Delay(45000000);

Start

void InitGPIO()

DrvGPIO_Open(E_GPA,0-3, E_IO_OUTPUT);

DrvGPIO_ClrBit(E_GPA,0-3);

void Forward() void Backward()

void Stop()

DrvGPIO_ClrBit(E_GPA,0);

DrvGPIO_SetBit(E_GPA,3);

DrvGPIO_ClrBit(E_GPA,2);

DrvGPIO_SetBit(E_GPA,1);

End

Page 118: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

109

เฉลยใบงานท 7 โปรแกรม #include "NUC1xx.h" #include "Driver\DrvGPIO.h" #include "Driver\DrvSYS.h" #include "NUC1xx-LB_002\LCD_Driver.h" void InitGPIO(); void Forward(); void Backward(); void Stop(); int main (void) { UNLOCKREG(); DrvSYS_Open(48000000); LOCKREG(); Initial_panel(); clr_all_panel(); InitGPIO(); Forward(); DrvSYS_Delay(45000000); Backward(); DrvSYS_Delay(45000000); Stop(); while(1) { Forward();

Page 119: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

110

DrvSYS_Delay(45000000); Forward(); DrvSYS_Delay(45000000); Forward(); DrvSYS_Delay(45000000); Stop(); DrvSYS_Delay(45000000); Stop(); DrvSYS_Delay(45000000); Backward(); DrvSYS_Delay(45000000); Backward(); DrvSYS_Delay(45000000); Stop(); DrvSYS_Delay(45000000); Stop(); DrvSYS_Delay(45000000); } } void InitGPIO() { DrvGPIO_Open(E_GPA,0,E_IO_OUTPUT); DrvGPIO_Open(E_GPA,1,E_IO_OUTPUT); DrvGPIO_Open(E_GPA,2,E_IO_OUTPUT); DrvGPIO_Open(E_GPA,3,E_IO_OUTPUT); DrvGPIO_ClrBit(E_GPA,0); DrvGPIO_ClrBit(E_GPA,1); DrvGPIO_ClrBit(E_GPA,2);

Page 120: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

111

DrvGPIO_ClrBit(E_GPA,3); } void Forward() { DrvGPIO_SetBit(E_GPA,0); DrvGPIO_ClrBit(E_GPA,1); DrvGPIO_SetBit(E_GPA,2); DrvGPIO_ClrBit(E_GPA,3); } void Backward() { DrvGPIO_ClrBit(E_GPA,0); DrvGPIO_SetBit(E_GPA,1); DrvGPIO_ClrBit(E_GPA,2); DrvGPIO_SetBit(E_GPA,3); } void Stop() { DrvGPIO_ClrBit(E_GPA,0); DrvGPIO_ClrBit(E_GPA,1); DrvGPIO_ClrBit(E_GPA,2); DrvGPIO_ClrBit(E_GPA,3); }

Page 121: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

112

เฉลยใบงานท 8 การทดลองรวมกบชดทดลอง ETT ควบคม Stepper Motor สงเกตผลการทดลองและบนทกผลทเกดขน จากการทดลองรวมกบชดทดลอง ETT ควบคม Stepper Motor โดยการสงโปรแกรมผานทางชดทดลอง NUVOTON NUC140 เพอไปควบคมการท างานของ Stepper Motor โดยให Stepper Motor ท างานตามโปรแกรมทสงไวจากตวอยางโปรแกรมทใหมานนจะสงเกตไดวา Stepper Motorจะหมนตามเขมนาฬกาไปทละสเตปจนครบรอบ 360 องศาตามทตงโปรแกรมไวจากนน Stepper Motor จะหมนกลบทางเปนการทวนเขมนาฬกาไปทละสเตปดงเดมจนครบ 180 องศาตามทตงไวในโปรแกรมและจะหยดการท างานลง ใหนกศกษาอธบายโปรแกรม โปรแกรมการทดลองรวมกบชดทดลอง ETT ควบคม Stepper Motor เรมตนการ #include "NUC1xx.h" เปนการดงไดเวอรของชป NUVOTON มาใชงานเปนคาเรมตมจากนน #include "Driver\DrvSYS.h" ดงคาการใชงานของซสเทมไดเวอรออกมาเพอต งคาสวนตางๆภายในไอซ #include "Driver\DrvGPIO.h"เปนเซตคาขาการใชงานทอยบนชดทดลอง NUVOTON ในชดค าสง main เรมตน UNLOCKREG(); เปนการปลดลอกรจสเตอรเพอเขาไปเซตคา ความเรวของ CPU โดยเซตคาความเรวในการท างานไวท 48 MHz จากนนกท าการปดรจสเตอร LOCKREG(); CW_MOTOR(d360); เปนการสงให Step Motor เดนหนาตามเขมนาฬกาหนงรอบ 360 องศา CCW_MOTOR(d180); เปนค าสงให Step Motor ถอยหลงทวนเขมนาฬกามา 180 องศา โดยท Step Motor เ ดนหนามความละเอยดในการหมนทละ Step ดง น CW[8] ={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08}; และ Step การเดนถอยหลง CCW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; เมอเรมท างานโปรแกรมจะสงใหหมนไปทละ Step

Page 122: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

113

เฉลยใบงานท 8 Flow chart

int main (void)

#include "NUC1xx.h"

1

unsigned char CCW[8]

#include " Driver\DrvGPIO.h"

#define d45 12/8

#include "Driver\DrvSYS.h"

#define d90 12/4

#define d180 12/2

CCW_MOTOR(d180);

CW_MOTOR(d360);

unsigned char CW[8]

#define d360 12

1 Start

End

Page 123: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

114

for(i=0;i<8;i++)

void CW_MOTOR (uint16_t deg)

for(j=0;j<(deg);j++)

GPIOA->DOUT=CW[i];

int i=0,j=0;

Start

DrvSYS_Delay(50000);

End

Page 124: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

115

for(i=0;i<8;i++)

void CCW_MOTOR (uint16_t deg)

for(j=0;j<(deg);j++)

GPIOA->DOUT=CCW[i];

int i=0,j=0;

DrvSYS_Delay(50000);

End

Start

Page 125: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

116

เฉลยใบงานท 8 โปรแกรม #include "NUC1xx.h" #include "Driver\DrvGPIO.h" #include "Driver\DrvSYS.h" #define d360 12 #define d180 12/2 #define d90 12/4 #define d45 12/8 unsigned char CW[8] ={0x09,0x01,0x03,0x02,0x06,0x04,0x0c,0x08}; unsigned char CCW[8]={0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09}; void CW_MOTOR(uint16_t deg); void CCW_MOTOR(uint16_t deg); int main (void) { CW_MOTOR(d90); CCW_MOTOR(d180); CW_MOTOR(d360); } void CW_MOTOR(uint16_t deg) { int i=0,j=0; for(j=0;j<(deg);j++)

Page 126: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

117

{ for(i=0;i<8;i++) { GPIOA->DOUT=CW[i]; DrvSYS_Delay(50000); } } } void CCW_MOTOR(uint16_t deg) { int i=0,j=0; for(j=0;j<(deg);j++) { for(i=0;i<8;i++) { GPIOA->DOUT=CCW[i]; DrvSYS_Delay(50000); } } }

Page 127: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

บทท 5 บทสรปและขอเสนอแนะ

จากการศกษาการทดลองท 1 ท าใหทราบถงการแสดงผลบนหลอด LED ในชดทดลองและขาการใชงาน LED ทอยบนชดลอง วาจะสงงานแบบไหนไดบาง และอยากใหน าไปพฒนาตอยอดไปใชกบชดขบ LED ทอยบนชดทดลอง ETT LAB3A และตวอยาง LED รปแบบประเภทอนๆและควรน าขอมลทไดมาเผยแพรตอไป การทดลองท 2 การศกษา 7 Segment หรอ LED แสดงผลตวเลขแบบ 7 สวน ท าใหทราบถงการทจะน าไปใชงานประยกตเขาอปกรณแสดงผลแบบดจตอลไดทแสดงผลในรปแบบตวเลข ท าใหงายทจะน าไปพฒนาตอยอดการใชงานในการแสดงผลแบบหลายหลกพรอมๆกนได การทดลองท 3 การใชงาน LCD (Graphic LCD) ท าใหทราบถงขอมลของจอ LCD ทอยบนชดทดลอง วามขนาดกตวอกษร กบรรทดและสามารถแสดงผลเปนแอนเมชนไดเพยงแคน าไปพฒนาตอยอดวาจอแสดงผลการท างานอยางไรกดอท และแสดงผลแบบไหนจากขอมลทอยแลวเพอทจะไดมตวอยางทหลากหลายขนจากคมอเลมน การทดลองท 4 การใชงาน Key Pad Switch เปนศกษาการรบคาจาก Key Pad Switch ทอยบนชดทดลองทมขนาด 3x3 โดยในการทดลองใหท าการแสดงตวเลข 1-9 เมอรบคาจาก Key Pad Switch และไปแสดงผลบนชดทดลอง 7 Segment และอยากใหน าไปศกษาตอเพอแสดงผลบนจอ LCD หรอการท าฟงกชนอนทรบคาจาก Key Pad Switch การทดลองท 5 การแสดงผลออกทาง BUZZER ในตวอยางการทดลองจะแสดงใหเปนถงการท างานของ BUZZER แบบเบองตนเพยงแคสงเสยงเตอนเมอโปรแกรมท างาน เนองจากการศกษาในโปรแกรมชดนมเวลาทจ ากดจากหลายๆอยางจงอยากใหผทสนในน าไปพฒนาตอยอดเพอเปนอปกรณเพอนภยหรออปกรณอนทใช BUZZER เขามาแสดงผล การทดลองท 6 การใชงาน Variable Resistance เปนการทดลองรบคาอนาลอกเขามาแสดงผลยงชดทลองโดยทชดทดลองจะรบคาจาก 0 Vถง 5 Vและแปลงคาแสดงไดละเอยดถง 10 บต 4095 คา เหมาะทจะน าไปท าการเกบคาขอมลรปแบบตางๆเพอเปรยบเทยบตารางแสดงผลการทดสอบในชดโปรแกรมทจะพฒนาในภายภาคหนา การทดลองท 7 การตอใชงานรวมกบชดทดลอง ETT LAB3A ในการทดลองนเปนการทดลองควบคม DC motor ทอยในชดทดลองของ ETT ทมอยในหองปฏบตการไมโครคอลโทรล

Page 128: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

119

เลอรเพอทดสอบโปรแกรมคม DC motor สงการไดหรอไมโดยใหท าการเดนหนาและถอยหลงจากโปรแกรมเบองตนสามารถน าไปประยกตใชกบรถเดนตามเสนโดยใชไมโครคอนโทรลเลอรควบคมไดอกดวย การทดลองท 8 การตอใชงานรวมกบชดทดลอง ETT LAB3A เพอใชในการควบคม Stepping Motor จากการทดลองควบคม Stepping Motor ท าไดทราบวาเมอสงใหเรมท างานตามจงหวะเดนหนา 360 องศาและถอยหลง 180 องศานน Stepping Motor จะท างานขาดไปจงหวะนง ซงอาจจะมปญหาหากน าไปใชกบงานทตองการความละเอยดอยางมาก แตเพอการศกษาโปรแกรมการควบคมกจะไมเปนปญหาในหารใชงาน Stepping Motor จากการศกษาชดทดลอง NUVOTON NUC140 ไดทราบขอมลตางๆทมอยในชดทดลองทนอกเหนอจากทเคยทราบมาจากการศกษาไมโครคอนโทรลเลอรขนาด 8 บต ทมอยในแลปการทดลอง ไดศกษาโปรแกรม Keil Uvision4 ทใชกบชดทดลอง NUVOTON ตงแตการตงคาไปจนถงการแอดไลบรารเขาไปในโปรแกรมซงการแอดไลบรารนมความยงยากและซปซอน ท าใหมปญหาบางในการท าแลปการทดลองขนมา เนองจากไลบรารบางสวนตดดบค ในการเขยนโปรแกรมกจะไมคอยมปญหาสามารถน าโปรแกรมมาประยกตใชงานกนได

Page 129: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

120

เอกสารอางอง [1] Cortex-M0 Processor http://www.arm.com/products/processors/cortex-m/cortex-m0.php [2] เอกสารค าสอนวชาสถาปตยกรรมคอมพวเตอร ผศ.ดร.สรนทร กตตธรกล www.ce.kmitl.ac.th/download.php?DOWNLOAD_ID=2990 [3] Nuvoton Wikipedia http://www.nuvoton.com/NuvotonMOSS/Community/ProductInfo [4] นคร ภกดชาต. ปฏบตการไมโครคอนโทรลเลอร ARM Cortex-M3 กบ STM 32. กรงเทพฯ : บรษท อนโนเวตฟ เอกเพอรเมนต จ ากด [5] ผศ. ชาญวทย. ตงสรวรกล. (2555). การศกษาและทดลอง ARM Fujitsu ดวยภาษาซ. กรงเทพฯ : หางหนสวนจ ากด ว เจ พรนตง [6] โอภาส ศรครรชตถาวร. (2553). เปดโลก 32 บตกบ STM32-Discovery. กรงเทพฯ. หางหนสวนจ ากด ว เจ พรนตง

[7] Keil uVision4 www.keil.com

[8] การท างานของหลอดแสดงผล LED (Light Emitting Diodes)

www.technicchan.ac.th/~web/planteach/14022552aUE.doc

[9] GFG128064A-FPFA liquid crystal module http://www.datamate-j.com/wp-content/uploads/2013/06/GFG128064A-FPFAB001SPEC.pdf

Page 130: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

121

[10] ปฏบตการไมโครโปรเซสเซอรและการออกแบบไมโครคอมพวเตอร การเชอมตอ Matrix Keyboard & Switch http://course.eau.ac.th/course/Download/00137619/LabSheet_%E0%B8%9B%E0%B8%8F%E0%B8%B4%E0%B8%9A%E0%B8%B1%E0%B8%95%E0%B8%B4%E0%B9%84%E0%B8%A1%E0%B9%82%E0%B8%84%E0%B8%A3%E0%B9%82%E0%B8%9B%E0%B8%A3%E0%B9%80%E0%B8%8B%E0%B8%AA%E0%B9%80%E0%B8%8B%E0%B8%AD%E0%B8%A3%E0%B9%8C04.pdf [11] เรยนร ADC Architecture แบบตางๆ

http://www.thaiembedded.com/blog/?cat=38 [12] ภาควชาวศวกรรมคอมพวเตอร คณะวศวกรรมศาสตร มหาวทยาลยเกษตรศาสตร http://www.cpe.ku.ac.th/~yuen/204471/conversion/dac/ [13] สเตปปงมอเตอร (Stepping Motor)โดย Adisak chinawong http://www.adisak51.com/page22.html

Page 131: NUVOTON MICROCONTROLLER 32 BIT LABdspace.spu.ac.th/bitstream/123456789/4668/1/56EE210.pdf · NUC140VE3CN Microcontroller 32 B- การทดลองการแสดงผลออกทาง

122

ประวตสวนตว

ชอ นายทวากร เคยมขาว ขอมลสวนตว วน เดอน ปเกด 8 ตลาคม 2534 อาย 22ป สวนสง 185 เชอชาต ไทย สญชาต ไทย ศาสนา พทธ ทอย 93/194 อาคารลมพนวลล หม 9 ต าบลบางเขน อ าเภอ เมองนนทบร จงหวด นนทบร 11000 โทรศพท 0899862167 E-mail. [email protected] [email protected] ประวตการศกษา ระดบมธยมศกษา โรงเรยนทงสง ปทจบ 2550 ระดบประกาศนยบตรวชาชพ วทยาลยเทคนคทงสง สาขา อเลกทรอนกส ปทจบ 2553 ระดบปรญญาตร มหาวทยาลยศรปทม คณะวศวกรรมศาสตร สาขา ไฟฟาและอเลกทรอนกสประยกต ปทจบ ก าลงศกษา กจกรรมทเคยเขารวม ไดเขารวมการขนทกษะวชาชพ ประเภท ชางอเลกทรอนกส หนยนตเลก ปทเขารวม 2551 เขารวมการแขงขนหนยนตอาชวศกษาชงชนะเลศระดบภาค(ABU Robocon)ปทเขารวม 2552 ไดเขารวมการขนทกษะวชาชพ ประเภท ชางอเลกทรอนกส หนยนตเลก ปทเขารวม 2552 เขารวมการแขงขนหนยนตอาชวศกษาชงชนะเลศระดบภาค(ABU Robocon)ปทเขารวม 2553 ไดเขารวมโครงการ Go Green In The City 2013 ของบรษท Schneider ไดรบรางวลชมเชย ปทเขารวม 2556