Page 1
ชดทดลองไมโครคอนโทรลเลอรขนาด 32 บต
NUVOTON MICROCONTROLLER 32 BIT LAB
นายทวากร เคยมขาว
โครงงานนเปนสวนหนงของการศกษาตามหลกสตรวศวกรรมศาสตรบณฑต ภาควชาวศวกรรมไฟฟาและอเลกทรอนกสประยกต
คณะวศวกรรมศาสตร มหาวทยาลยศรปทม ปการศกษา 2557
56EE210
Page 2
หวขอโครงงาน ชดทดลองไมโครคอนโทรลเลอรขนาด 32 บต
โดย นายทวากร เคยมขาว
ภาควชา วศวกรรมไฟฟาและอเลกทรอนกสประยกต อาจารยทปรกษา ผชวยศาสตราจารย เพชร นนทวฒนา
คณะวศวกรรมศาสตร มหาวทยาลยศรปทม อนมตใหนบโครงงานวศวกรรมฉบบนเปนสวนหนงของการศกษาตามหลกสตรวศวกรรมศาสตรบณฑต
..................................................... หวหนาภาควชาวศวกรรมไฟฟา (ดร.ภรชย จอนวฒนกล) และอเลกทรอนกสประยกต ..................................................... อาจารยทปรกษา (ผชวยศาสตราจารย เพชร นนทวฒนา) (วนท 2 เดอน ธนวาคม พ.ศ.2557)
Page 3
ก
รหสโครงงาน 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 NUC140ในการท าโครงงานจนส าฤทธผล ขอขอบคณรนพและเพอนๆนกศกษาสาขาวชาวศวกรรมไฟฟาและอเลกทรอนกสประยกตทกคนทเปนก าลงใจและชวยเหลอมาโดยตลอด สดทายขอกราบขอบพระคณบดา มารดา และครอบครวของขาพเจารวมทงผมพระคณทกทานทคอยใหก าลงใจทดเสมอมา คอยหวงใย และใหการสนบสนนทางการศกษามาโดยตลอด คณความดอนใดทเกดจากโครงงานฉบบน ขาพเจาขอมอบแดผมพระคณทกทาน
Page 5
ค
สารบญ
หนา
บทคดยอ ก กตตกรรมประกาศ ข สารบญ ค สารบญตาราง จ สารบญภาพ ฉ
บทท 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
ง
สารบญ(ตอ)
หนา
บทท 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
จ
สารบญตาราง
หนา ตารางท 1 1 แผนการด าเนนงาน 4 ตารางท 3.1 การท างานของแตละขา 36 ตารางท 3.2 บตตงคาจอ LCD 37 ตารางท 3.3 แบบฟลสเตป 1 เฟส 71 ตารางท 3.3 แบบฟลสเตป 2 เฟส 71 ตารางท 3.4 แบบฮาลฟสเตป 2 เฟส 72
Page 8
ฉ
สารบญภาพ หนา
ภาพท 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
ช
สารบญภาพ(ตอ) หนา
ภาพท 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
บทท 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
2
ดงนนเพอใหสามารถน าชดการทดลองทไดรบการสนบสนนมาใชประโยชนสงสดในการประกอบการเ รยนการสอน ทางผ จดท าโครงงานนจงไดเสนอการออกแบบชดทดลองไมโครคอนโทรลเลอรขนาด 32 บต NUVOTON พรอมคมอการใชงาน ใบงานการทดลอง และเฉลยใบงานการทดลอง เพองายทจะศกษาและน าไปพฒนาตอยอดจากทผเขยนไดเรมตนไวในภายภาคหนา
1.2 วตถประสงค 1 เพอทจะศกษาไมโครคอนโทรลเลอรตระกล ARM ของบรษท NUVOTON NUC 140 2 เพอทจะน าผลการทดลองของบอรด NUVOTON ไปใชรวมกบบอรด ETT LAB3A ในการเรยนการสอน
1.3 ประโยชนของโครงงาน 1 มความรเกยวกบไมโครคอนโทรลเลอรขนาด32บต 2 ใชเปนตวอยางในการสอนไมโครคอนโทรลเลอร 3 ใชเปนการทดลองปฏบตไมโครคอนโทรลเลอรตอยอดจากหองปฏบตการทเรยน 4 สามารถน าขอมลทมไปควบคมระบบตางๆได
Page 12
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
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
บทท 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
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
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
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
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
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
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
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
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
14
2.6 ขาการใชงาน [1]
ภาพท 2.1 ขาการใชงาน NUC140VE3CN [1]
Page 24
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
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
17
จะปรากฏหนาตางหนานขนมา
ภาพท 2.5 หนาตางหนาตางใหเลอกยอมรบ License
คลกปม Next กจะเขาสหนาตาง License Agreement ใหคลกเครองหมายถกทหนา
ชองขอความ I Agree to All Terms Of The Proceeding License Agreement จากนนคลกปม Next
ภาพท 2.6 เรมตนการตดตงโปรแกรม Keil
Page 27
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
19
ภาพท 2.8 การตดตง Install ULINK Driver
หลงจากการตดตงโปรแกรมเสรจสมบรณ กเรมตนการใชงานโปรแกรม Keil Uvision4 ได
เลย
2.7.2 การใชงานโปรแกรม Keil Uvision4
เปดโปรแกรม Keil Uvision4 จะปรากฏหนาตางดงภาพท 2.9
ภาพท 2.9 หนาตางโปรแกรม Keil Uvision4
Page 29
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
21
เมอเลอกไฟล Smpl_GPIO_LED1 แลวเปดไฟล Keil Uvision4 ดงภาพท 2.12
ภาพท 2.12 คลกเปดโปรแกรม Keil Uvision4 Smpl_GPIO_LED1
ปรากฏหนาตางดงภาพท 2.13
ภาพท 2.13 หนาตางตวอยางโปรแกรมโปรแกรม
Page 31
บทท 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
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
24
ภาพท 3.2 การ Forward Bias [8]
แสงจากแอลอดทเปนพลงงานโฟตอนนนมอยดวยกน 2 แบบ คอ พลงงานแสงทสามารถมองเหนดวยตาเปลา และ พลงงานแสงทไมสามารถมองเหนดวยตาเปลา ซงแอลอดทใหพลงงานแสงทไมสามารถมองเหนดวยตาเปลาไดแก อนฟราเรดแอลอด (Infrared LED) ซงจะมรปรางและลกษณะงานเชนเดยวกนแอลอดธรรมดา เพยงแตไมมแสงใหเหนดวยตาเปลาในเวลาท างาน
ภาพท 3.3 ก.การตอวงจรแบบ Active Low ข.การตอวงจร Active High
Page 34
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
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
27
3. ท าการ Compile โปรแกรม 4. Download Program ลงชดทดลอง สงเกตผลการทดลองและบนทกผลทเกดขน
ใหนกศกษาอธบายโปรแกรม
ใหนกศกษาเขยน Flow Chart ของโปรแกรม
Page 37
28
ใหนกศกษาท าการแกไขโปรแกรม โดยให LED ตด-ดบ 4หลอด จากซายไปขวา
Page 38
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
30
ภาพท 3.5 การตอ 7 Segment แบบ Common Cathode และ Common Anode
การเชอมตอ 7 Segment ในไมโครคอนโทรลเลอรของ NUVOTON
ภาพท 3.6 วงจร 7 Segment ในชดทดลอง NUVOTON [1]
Page 40
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
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
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
34
ใหนกศกษาท าการแกไขโปรแกรม โดยให 7 Segments นบขนจนถงรหสนกศกษา 2 หลกสดทาย
Page 44
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
36
ตารางท 3.1 การท างานของแตละขาทอยภายในจอ LDC [1]
Page 46
37
รจสเตอรและหนวยความจ าของ LCD Controller - รจสเตอร IR (Instructor Register) : ท าหนาทเกบขอมลทเปนรหสค าสง เชน การเคลยรการแสดงผลการควบคมการเคลอนทของ Cursor นอกจากนแลวยงท าหนาทเปนตวเกบรายละเอยดตางๆของการแสดงผล ณ ขณะนนดวย - รจสเตอร DR (Data Register) : ท าหนาทเกบขอมลชวคราวส าหรบการท างานภายในลกษณะตางๆ
ตารางท3.2 บตตงคาจอ LCD [1]
การเชอมตอ LCD ในไมโครคอนโทรลเลอรของ NUVOTON
ภาพท 3.7 การตอใชงาน LCD [1]
Page 47
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
39
3. ท าการ Compile โปรแกรม 4. Download Program ลงชดทดลอง สงเกตผลการทดลองและบนทกผลทเกดขน
ใหนกศกษาอธบายโปรแกรม
ใหนกศกษาเขยน Flow Chart ของโปรแกรม
Page 49
40
ใหนกศกษาท าการแกไขโปรแกรม ใหแสดงชอ รหสนกศกษา สาขาทเรยน
Page 50
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
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
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
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
45
3. ท าการ Compile โปรแกรม 4. Download Program ลงชดทดลอง สงเกตผลการทดลองและบนทกผลทเกดขน
ใหนกศกษาอธบายโปรแกรม
ใหนกศกษาเขยน Flow Chart ของโปรแกรม
Page 55
46
ใหนกศกษาท าการแกไขโปรแกรม โดยใหกด Key Pad Switch แสดงตวเลขบน 7-Segments 2-3 หลก
Page 56
47
ใบงานท 5 การแสดงผลออกทาง Buzzer
วตถประสงค
1. เพอทจะศกษาการเขยนโปรแกรมการแสดงผลออกทาง Buzzer 2. เพอทจะสามารถแกไขโปรแกรมการหนวงเวลาสงเสยงออกทาง Buzzer
อปกรณการทดลอง
1. เครองคอมพวเตอร 2. ชดทดลอง NOVOTON NUC140 3. สาย micro USB
BUZZER เปนอปกรณไฟฟาทน าผลของแมเหลกไฟฟามาดงดดใหแกนอามาเจอร(Armature) เคลอนทมาเคาะกบกระดง (Bell) ท าใหเกดเสยงดงได โครงสรางภายในประกอบดวยแทงเหลกรปตวย (U-Shaped) พนขดลวดรอบๆ แทงเหลกนตออนกรมกบหนาสมผสซงเปดปดไดโดยการเคลอนทของกานอามาเจอรการใชงานตองตอกระดงไฟฟาอนกรมกบสวทชกดปม (Push Button) และแหลงจายไฟฟา เชน แบตเตอร เมอกดสวตชกระแสไฟฟาจะผานหนาสมผสและขดลวด ท าใหเกดการดงดดอามาเจอรใหเคลอนทมาเคาะกระดงท าใหเกดเสยงดง ในขณะทอามาเจอรเคลอนทกจะตดวงจรไฟฟาออกไปดวย ดงนนเมอกานอามาเจอรเคาะกระดง แลวกจะดดไปต าแหนงเดมทนท และตอวงจรไฟฟาอกครง เมอใดทปลอยมอจากสวตชกระบวนการทเกดขนกจะหยดลง
Page 57
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
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
50
ใหนกศกษาเขยน Flow Chart ของโปรแกรม
ใหนกศกษาท าการแกไขโปรแกรม โดยท าการหนวงเวลาเพอให BUZZER สงเสยงเตอนชาลง
Page 60
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
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
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
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
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
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
57
close_seven_segment(); show_seven_segment(0,digit); DrvSYS_Delay(5000); } 3. ท าการ Compile โปรแกรม 4. Download Program ลงชดทดลอง สงเกตผลการทดลองและบนทกผลทเกดขน
ใหนกศกษาอธบายโปรแกรม
ใหนกศกษาเขยน Flow Chart ของโปรแกรม
Page 67
58
ใหนกศกษาท าการแกไขโปรแกรม โดยใหแสดงคาออกทางจอกราฟฟก LCD
Page 68
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
60
ภาพท 3.13 ระบบการแปลงสญญาณดจตอลเปนอนาลอก
จากภาพแสดงถงสวนประกอบหลกของระบบ DAC โดยทวไป ไมโครคอมพวเตอรจะมเอาตพตเปนคาไบนารวงจรแลทชรบคาไบนารเขามาเพอสงไปยง DAC ในวงจรจะใชแหลงก าเนดแรงดนหรอกระแสคงทเพออางองในการแปลงขอมล ไบนารเปนระดบกระแส ตอมาจะมวงจรแปลงจากกระแสเปนระดบแรงดน (Current-To-Voltage Converter) ซงปกตจะใชออปแอมป ทายสดสญญาณอนาลอกทไดจะผานวงจร Low-Pass Filter เพอก าจดสญญาณความถสงทแฝงอยในสญญาณทถกสรางขนมา
ภาพท 3.14 Transfer Curve ในอดมคตของ DAC 3 บต
Page 70
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
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
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
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
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
66
3. ท าการ Compile โปรแกรม 4. Download Program ลงชดทดลอง สงเกตผลการทดลองและบนทกผลทเกดขน
ใหนกศกษาอธบายโปรแกรม
ใหนกศกษาเขยน Flow Chart ของโปรแกรม
Page 76
67
ใหนกศกษาท าการแกไขโปรแกรมโดยให DC Motor หมนไปทางดานซาย 3 ครงและทางดานขวา 2 ครง
Page 77
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
69
ขอดของสเตปปงมอเตอรเมอเปรยบกบมอเตอรกระแสตรง ( DC MOTOR)
1. การควบคมไมตองอาศยตวตรวจจบการหมน 2. ไมตองใชแปรงถาน ดงนนจงท าใหไมมสวนทจะตองสกหรอ และปญหาของการสปารค ( ทเกดจากหนาสมผสของแปรงถานแหวนตวน าในโรเตอร ) ทท าใหเกดสญญาณรบกวน 3. การควบคมโดยทางวงจรดจตอลหรอไมโครโพรเซสเซอร ท าไดงาย และสะดวก
ภาพท 3.17 สเตปปงมอเตอรในชดทดลอง ETT-LAB3A
สเตปปงมอเตอรทจะน ามาใชในการทดลองน จะใชสเตปปงแบบยนโพลาร ( Uni.-Polar Stepper Motor) ซงโครงสรางของสเตปปงมอเตอรแบบนจะมสวนประกอบทส าคญ 2 สวนดวยกนคอ 1. สวนทท าการหมน (Rotor) จะเปนแมเหลกถาวรหรออนๆ 2. สวนทอยกบท (Stator) เปนขดลวดทพนไวจ านวนหลายๆขด
Page 79
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
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
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
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
74
ภาพท 3.21 แสดงการตอวงจรเพอทดสอบโดยการสวตซเพอหาล าดบ
บลอกไดอะแกรมทใชขบ สเตปปงมอเตอร
ภาพท 3.22 วงจรขบสเตปปงมอเตอร ETT-LAB3A
จากภาพดานบนแสดงวงจรควบคมสเตปปงมอเตอรของบอรดทดลอง ETT-LAB3A ซงใชมอเตอรสเตปปง ชนดยนโพลาร 48 สเตป นนคอมการเคลอนทไปสเตปละ 7.5 องศาเมอควบคม
Page 84
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
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
77
3. ท าการ Compile โปรแกรม 4. Download Program ลงชดทดลอง สงเกตผลการทดลองและบนทกผลทเกดขน
ใหนกศกษาอธบายโปรแกรม
ใหนกศกษาเขยน Flow Chart ของโปรแกรม
Page 87
78
ใหนกศกษาท าการแกไขโปรแกรม โดยให Stepping Motor หมนเดนหนา 90 องศาถอยหลง 180 องศาและเดนหนา 360 องศา
Page 88
บทท 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
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
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
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
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
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
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
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
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
88
show_seven_segment(0,digit); DrvSYS_Delay(5000); }
Page 98
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
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
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
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
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
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
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
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
97
value = value - digit * 10; digit = value; close_seven_segment(); show_seven_segment(0,digit); DrvSYS_Delay(5000); }
Page 107
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
บทท 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
119
เลอรเพอทดสอบโปรแกรมคม DC motor สงการไดหรอไมโดยใหท าการเดนหนาและถอยหลงจากโปรแกรมเบองตนสามารถน าไปประยกตใชกบรถเดนตามเสนโดยใชไมโครคอนโทรลเลอรควบคมไดอกดวย การทดลองท 8 การตอใชงานรวมกบชดทดลอง ETT LAB3A เพอใชในการควบคม Stepping Motor จากการทดลองควบคม Stepping Motor ท าไดทราบวาเมอสงใหเรมท างานตามจงหวะเดนหนา 360 องศาและถอยหลง 180 องศานน Stepping Motor จะท างานขาดไปจงหวะนง ซงอาจจะมปญหาหากน าไปใชกบงานทตองการความละเอยดอยางมาก แตเพอการศกษาโปรแกรมการควบคมกจะไมเปนปญหาในหารใชงาน Stepping Motor จากการศกษาชดทดลอง NUVOTON NUC140 ไดทราบขอมลตางๆทมอยในชดทดลองทนอกเหนอจากทเคยทราบมาจากการศกษาไมโครคอนโทรลเลอรขนาด 8 บต ทมอยในแลปการทดลอง ไดศกษาโปรแกรม Keil Uvision4 ทใชกบชดทดลอง NUVOTON ตงแตการตงคาไปจนถงการแอดไลบรารเขาไปในโปรแกรมซงการแอดไลบรารนมความยงยากและซปซอน ท าใหมปญหาบางในการท าแลปการทดลองขนมา เนองจากไลบรารบางสวนตดดบค ในการเขยนโปรแกรมกจะไมคอยมปญหาสามารถน าโปรแกรมมาประยกตใชงานกนได
Page 129
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
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
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