Professional Documents
Culture Documents
KruPraphasMCS51 Book
KruPraphasMCS51 Book
วิชาไมโครคอนโทรลเลอร์ (3105-2014)
หลักสูตรประกาศนียบัตรวิชาชีพชั้นสูง (ปวส.) พุทธศักราช 2546
ประเภทวิชาอุตสาหกรรม สาขาวิชาอิเล็กทรอนิกส์
Vcc J12 C7
Vcc
31 40 R3 C6 220uF SPK
10K
R8-R15 1uF DSP1
EA
Vcc
11 20
180x8
LE
39 2 VCC 19 a
P0.0 D1 Q1 b
38 3 18 c
P0.1 D2 Q2
37 4 17 d
P0.2 D3 Q3 e
36 5 16 f
P0.3 D4 Q4
35 6 15 g
P0.4 D5 Q5 dp
34 7 14
P0.5 D6 Q6
33 8 13
P0.6 D7 Q7
32 9 12
GND
P0.7 D8 Q8
OE
Vcc Q1 Q2
C3 10 1 74HC573 BC547 BC547
10uF
LED2-LED9
9 28 Vcc J11
RST P2.7
SW1 27
R2 P2.6 R16,R17
10K Vcc 4.7K x2
X1 24 R4-R7
P2.3
11.0592MHz 18 23 10K x4
XTAL2 P2.2 R18,R19
19 22 S1 220 x2
XTAL1 P2.1
21
GND
P2.0 S2
C4,C5 S3
20 AT89S52
S4
22pFx2
เรียบเรียงโดย
ประภาส สุวรรณเพชร
วศ.บ. ไฟฟ้า-โทรคมนมคม (เกียรตินิยม)
ค.อ.ม. ไฟฟ้า (แขนงอิเล็กทรอนิกส์)
แผนกวิชาช่างอิเล็กทรอนิกส์ วิทยาลัยเทคนิคชัยภูมิ
สานักงานคณะกรรมการการอาชีวศึกษา
กระทรวงศึกษาธิการ
เอกสารประกอบการสอน
วิชาไมโครคอนโทรลเลอร์
(3105-2014)
หลักสูตรประกาศนียบัตรวิชาชีพชั้นสูง (ปวส.)
พุทธศักราช 2546 ประเภทวิชาอุตสาหกรรม
สาขาวิชาอิเล็กทรอนิกส์
เรียบเรียงโดย
นายประภาส สุวรรณเพชร
ครูชานาญการ
แผนกวิชาช่างอิเล็กทรอนิกส์ วิทยาลัยเทคนิคชัยภูมิ
สานักงานคณะกรรมการการอาชีวศึกษา
กระทรวงศึกษาธิการ
ก
คำนำ
ปั จจุ บ นั ไมโครคอนโทรลเลอร์ มี ก ารนามาใช้งานกันแพร่ หลายมากขึ้ น โดยมี ก ารฝั ง ตัวของ
ไมโครคอนโทรลเลอร์ อยูใ่ นเครื่ องใช้ไฟฟ้าหลาย ๆ ประเภท เช่น เครื่ องซักผ้าแบบอัตโนมัติ เตาอบไฟฟ้า
เตาไมโครเวฟ เครื่ องปรั บ อากาศที่ ส ามารถก าหนดอุ ณหภู มิ ไ ด้และอื่ น ๆ อี ก มากมาย MCS-51 เป็ น
ไมโครคอนโทรลเลอร์ ตระกูลหนึ่ งที่ได้รับความนิ ยมมากตระกูลหนึ่ ง อันเนื่ องมาจากการกาเนิ ดที่มีมา
นานและการใช้งานง่ายไม่ซบั ซ้อน มีตน้ ทุนในการสร้างวงจรต่า ซึ่งในการใช้งานไมโครคอนโทรลเลอร์
จะต้องประกอบด้วยองค์ประกอบ 2 อย่างคือ ตัวเครื่ องหรื อที่เรี ยกว่า ฮาร์ ดแวร์ (Hardware) และโปรแกรม
หรื อชุ ดคาสั่งที่เรี ยกว่า ซอฟต์แวร์ (Software) ที่ใช้สั่งให้ไมโครคอนโทรลเลอร์ ทาตามความต้องการของ
ผูอ้ อกแบบ หนังสื อเล่มนี้อธิ บายถึงหลักการออกแบบฮาร์ ตแวร์ และการเขียนซอฟท์แวร์ เพื่อใช้ควบคุม
ประภาส สุ วรรณเพชร
ผูเ้ รี ยบเรี ยง
ข
จุดหมำย
1. เพื่อให้มีความรู ้และทักษะพื้นฐานในการดารงชีวติ สามารถศึกษาค้นคว้าเพิ่มเติมหรื อศึกษาต่อ
ในระดับที่สูงขึ้น
2. เพื่อให้มีทกั ษะและสมรรถนะในงานอาชีพตามมาตรฐานวิชาชีพ
3. เพื่อให้สามารถบูรณาการความรู ้ ทักษะจากศาสตร์ ต่าง ๆ ประยุกต์ใช้ในงานอาชีพ สอดคล้องกับ
การเปลี่ยนแปลงทางเทคโนโลยี
4. เพื่อให้มีเจตคติที่ดีต่ออาชีพ มีความมัน่ ใจและภาคภูมิใจในงานอาชีพ รักงาน รักองค์กร สามารถ
ทางานเป็ นหมู่คณะได้ดี และมีความภาคภูมิใจในตนเองต่อการเรี ยนวิชาชีพ
5. เพื่อให้มีปัญญา ใฝ่ รู ้ ใฝ่ เรี ยน มีความคิดสร้างสรรค์ มีความสามารถในการจัดการ การตัดสิ นใจ
และการแก้ปัญหา รู ้จกั แสวงหาแนวทางใหม่ ๆ มาพัฒนาตนเอง ประยุกต์ใช้ความรู ้ในการสร้าง
งานให้สอดคล้องกับวิชาชีพ และการพัฒนางานอาชีพอย่างต่อเนื่อง
6. เพื่อให้มีบุคลิกภาพที่ดี มีคุณธรรม จริ ยธรรม ซื่ อสัตย์ มีวินยั มีสุขภาพสมบูรณ์แข็งแรงทั้งร่ างกาย
และจิตใจ เหมาะสมกับการปฏิบตั ิในอาชีพนั้น ๆ
7. เพื่อให้เป็ นผูม้ ีพฤติกรรมทางสังคมที่ดีงาม ทั้งในการทางาน การอยูร่ ่ วมกัน มีความรับผิดชอบต่อ
ครอบครัว องค์กร ท้องถิ่นและประเทศชาติ อุทิศตนเพื่อสังคม เข้าใจและเห็นคุณค่าของ
ศิลปวัฒนธรรมไทย ภูมิปัญญาท้องถิ่น ตระหนักในปั ญหาและความสาคัญของสิ่ งแวดล้อม
8. เพื่อให้ตระหนักและมีส่วนร่ วมในการพัฒนาและแก้ไขปั ญหาเศรษฐกิจของประเทศ โดยเป็ น
กาลังสาคัญในด้านการผลิตและให้บริ การ
ค
9. เพื่อให้เห็นคุณค่าและดารงไว้ซ่ ึ งสถาบันชาติ ศาสนา และพระมหากษัตริ ย ์ ปฏิบตั ิตนในฐานะ
พลเมืองดีตามระบอบประชาธิปไตย อันมีพระมหากษัตริ ยท์ รงเป็ นประมุข
จุดประสงค์
ผูท้ ี่สาเร็ จการศึกษาหลักสู ตรประกาศนียบัตรวิชาชีพชั้นสู ง พุทธศักราช 2546 ประเภทวิชา
อุตสาหกรรม สาขาวิชาอิเล็กทรอนิกส์ ส ามารถปฏิบตั ิงานระดับช่างเทคนิค ผูค้ วบคุมงาน ผูช้ ่วยวิศวกร
หรื อประกอบอาชีพส่ วนตัว มีความรู ้ ความสามารถ เจตคติและประสบการณ์ดา้ นต่าง ๆ ดังต่อไปนี้
หลักสู ตรรำยวิชำไมโครคอนโทรลเลอร์
วิชำ ไมโครคอนโทรลเลอร์ รหัสวิชำ 3105-2014 จำนวนหน่ วยกิต 2
จำนวนชั่วโมง/สั ปดำห์ 3 ชัว่ โมง จำนวนคำบสอนทั้งหมด 54 ชัว่ โมง ระดับ ปวส.
จุดประสงค์ รำยวิชำ
1. เพื่อให้เข้าใจโครงสร้างและหลักการทางานของไมโครคอนโทรลเลอร์ การใช้ชุดคาสั่ง การ
ประยุกต์ใช้งานไมโครคอนโทรลเลอร์ กบั งานอื่น ๆ
2. เพื่อให้สามารถเขียนโปรแกรมควบคุม วิเคราะห์และทดสอบระบบการทางาน ประยุกต์
ไมโครคอนโทรลเลอร์ กบั งานอื่น ๆ
3. เพื่อให้มีกิจนิสัยในการทางานด้วยความประณี ต รอบคอบและปลอดภัย ตระหนักถึงคุณภาพของ
งาน และมีจริ ยธรรมในงานอาชีพ
มำตรฐำนรำยวิชำ
1. วิเคราะห์และออกแบบวงจรโดยใช้ไมโครคอนโทรลเลอร์
2. เลือกใช้อุปกรณ์หรื อไอซี ได้อย่างเหมาะสมกับระบบควบคุมที่ใช้ไมโครคอนโทรลเลอร์
3. ประกอบและติดตั้ง อุปกรณ์ วงจรไมโครคอนโทรลเลอร์
4. ทดสอบและบารุ งรักษา อุปกรณ์ วงจรไมโครคอนโทรลเลอร์
คำอธิบำยรำยวิชำ
ศึกษาและปฏิบตั ิ โครงสร้างและสถาปัตยกรรมของไมโครคอนโทรลเลอร์ ลักษณะสัญญาณและ
กระบวนการทางาน การรับ-ส่ งข้อมูลกับอุปกรณ์เชื่ อมต่อภายนอก ชุดคาสั่ง และการเขียนโปรแกรม
การวัดและทดสอบวงจรใช้งานของไมโครคอนโทรลเลอร์ การประยุกต์ใช้งานของไมโครคอนโทรลเลอร์
ความรู ้ความจา
ความสาคัญ
การนาไปใช้
ความเข้าใจ
ประเมินค่า
สังเคราะห์
วิเคราะห์
ลาดับ
รวม
เนื้อหา 10 10 10 10 10 10 60
ความรู ้เบื้องต้นเกี่ยวกับไมโครคอนโทรลเลอร์ 5 6 7 4 2 1 25 18
รี จิสเตอร์และหน่วยความจา 5 6 6 4 3 1 25 20
ชุดคาสัง่ และวงจรไทเมอร์/เคาน์เตอร์ 5 6 6 4 3 1 25 19
การสื่ อสารทางพอร์ตอนุกรม การอินเตอร์รัพต์ และว็อชด็อก 5 6 7 4 3 1 26 13
การเขียนโปรแกรมภาษาซี สาหรับไมโครคอนโทรลเลอร์ 5 6 7 4 3 1 26 12
เครื่ องมือช่วยพัฒนางานไมโครคอนโทรลเลอร์ 5 6 7 4 3 1 26 14
การสร้างวงจรภาคจ่ายไฟในแผงวงจรไมโครคอนโทรลเลอร์ 4 5 6 4 3 2 24 25
การสร้างวงจรประมวลผลหลัก (วงจรไมโครคอนโทรลเลอร์) 5 5 6 4 3 2 25 15
การสร้างวงจรโปรแกรมข้อมูลลงไมโครคอนโทรลเลอร์ 4 5 6 4 3 2 24 24
การสร้างวงจรเอาต์พตุ พอร์ต 4 5 6 4 3 2 24 27
การใช้งานพอร์ตทาหน้าที่เป็ นเอาต์พตุ พอร์ตเบื้องต้น 5 6 7 5 3 1 27 11
การสร้างวงจรสวิตช์ 4 5 6 4 3 2 24 26
การใช้งานพอร์ตทาหน้าที่เป็ นอินพุตพอร์ตเบื้องต้น 5 6 7 5 3 1 27 10
การเขียนโปรแกรมหน่วงเวลา 5 6 7 6 3 1 28 6
การสร้างวงจรขับลาโพง 4 5 6 4 3 2 24 22
การเขียนโปรแกรมสร้างความถี่เสี ยง 5 6 7 5 3 1 27 9
การสร้างวงจรแสดงผลตัวเลข 7 ส่ วน 5 5 6 4 3 2 25 17
การเขียนโปรแกรมแสดงผลตัวเลข 7 ส่ วน 5 6 7 7 3 1 29 5
การเขียนโปรแกรมรับสวิตช์เพื่อแสดงผลตัวเลข 7 ส่ วน 6 6 7 7 4 2 32 2
การเขียนโปรแกรมนับพัลส์ดว้ ยวงจรเคาน์เตอร์ 5 6 7 5 3 1 27 8
การสร้างวงจรขับมอเตอร์ไฟฟ้ากระแสตรง 4 5 6 4 3 2 24 21
การเขียนโปรแกรมควบคุมมอเตอร์ไฟฟ้ากระแสตรง 5 6 7 5 3 1 27 7
การสร้างวงจรขับสเต็ปเปอร์มอเตอร์ 4 5 6 4 3 2 24 23
การเขียนโปรแกรมควบคุมสเต็ปเปอร์มอเตอร์ 6 6 7 7 4 1 31 3
การเขียนโปรแกรมควบคุมเซอร์โวมอเตอร์ 5 6 7 7 4 1 30 4
การสร้างวงจรแสดงผลจอผลึกเหลว (LCD) 5 5 6 4 3 2 25 16
การเขียนโปรแกรมแสดงผลจอผลึกเหลว (LCD) 6 6 8 7 4 2 33 1
รวม 131 152 178 130 84 39 714
ลาดับความสาคัญ 3 2 1 4 5 6
ฉ
ตำรำงวิเครำะห์ หลักสู ตร
พฤติกรรม พุทธิพิสยั
ลาดับความสาคัญ
จานวนข้อสอบ
จานวนชัว่ โมง
การนาไปใช้
ความเข้าใจ
ทักษะพิสัย
ประเมินค่า
สังเคราะห์
วิเคราะห์
จิตพิสัย
ความรู ้
ชื่อหน่วย
รวม
หน่ วยที่ 1 ความรู ้เบื้องต้นเกี่ยวกับ
10 10 10 10 10 10 10 10 80
ไมโครคอนโทรลเลอร์
1.1 ระบบตัวเลขและรหัส 5 6 8 5 4 1 2 1 32 1 0:25 4
1.2 ดิจิตอลพื้นฐาน 5 6 8 4 3 1 2 1 30 2 0:25 4
1.3 โครงสร้างพื้นฐานของระบบ
5 6 6 3 3 1 2 1 27 5 0:20 4
คอมพิวเตอร์
1.4 โครงสร้างไมโครคอนโทรลเลอร์
5 6 7 3 3 1 2 1 28 4 0:25 4
MCS-51
1.5 ส่วนประกอบของวงจร
5 6 7 4 3 1 2 1 29 3 0:25 4
ไมโครคอนโทรลเลอร์
รวม 25 30 36 19 16 5 10 5 146 2 20
ลาดับความสาคัญ 3 2 1 4 5 7 6 8
พฤติกรรม พุทธิพิสยั
ลาดับความสาคัญ
จานวนข้อสอบ
จานวนชัว่ โมง
การนาไปใช้
ความเข้าใจ
ทักษะพิสัย
ประเมินค่า
สังเคราะห์
วิเคราะห์
จิตพิสัย
ความรู ้
ชื่อหน่วย
รวม
ลาดับความสาคัญ
จานวนข้อสอบ
จานวนชัว่ โมง
การนาไปใช้
ความเข้าใจ
ทักษะพิสัย
ประเมินค่า
สังเคราะห์
วิเคราะห์
จิตพิสัย
ความรู ้
ชื่อหน่วย
รวม
หน่ วยที่ 3 ชุดคาสัง่ และวงจรไทเมอร์/
10 10 10 10 10 10 10 10 80
เคาน์เตอร์
3.1 ชุดคาสัง่ 5 6 7 3 2 1 2 1 27 2 1:00 10
3.2 วงจรไทเมอร์/เคาน์เตอร์ 5 7 8 5 3 1 2 1 32 1 1:00 10
รวม 10 13 15 8 5 2 4 2 59 2 20
ลาดับความสาคัญ 3 2 1 4 5 7 6 8
พฤติกรรม พุทธิพิสยั
ลาดับความสาคัญ
จานวนข้อสอบ
จานวนชัว่ โมง
การนาไปใช้
ความเข้าใจ
ทักษะพิสัย
ประเมินค่า
สังเคราะห์
วิเคราะห์
จิตพิสัย
ความรู ้
ชื่อหน่วย
รวม
หน่วยที่ 4 การสื่ อสารทางพอร์ตอนุกรม
10 10 10 10 10 10 10 10 80
การอินเตอร์รัพต์ และว็อชด็อก
4.1 การสื่ อสารทางพอร์ตอนุกรม 5 7 9 5 4 1 2 1 34 1 0:45 8
4.2 การขัดจังหวะการทางาน 5 7 9 4 3 1 2 1 32 2 0:45 7
4.3 การใช้งานวงจรว็อชด็อก 3 4 5 3 2 1 2 1 21 3 0:30 5
รวม 13 18 23 12 9 3 6 3 87 2 20
ลาดับความสาคัญ 3 2 1 4 5 7 6 8
พฤติกรรม พุทธิพิสยั
ลาดับความสาคัญ
จานวนข้อสอบ
จานวนชัว่ โมง
การนาไปใช้
ความเข้าใจ
ทักษะพิสัย
ประเมินค่า
สังเคราะห์
วิเคราะห์
จิตพิสัย
ความรู ้
ชื่อหน่วย
รวม
พฤติกรรม พุทธิพิสยั
ลาดับความสาคัญ
จานวนข้อสอบ
จานวนชัว่ โมง
การนาไปใช้
ความเข้าใจ
ทักษะพิสัย
ประเมินค่า
สังเคราะห์
วิเคราะห์
จิตพิสัย
ความรู ้
ชื่อหน่วย
รวม
หน่ วยที่ 6 เครื่ องมือช่วยพัฒนางาน
10 10 10 10 10 10 10 10 80
ไมโครคอนโทรลเลอร์
6.1 เครื่ องมือแปลงภาษาซีเป็ นภาษาเครื่ อง 5 7 8 6 5 2 2 1 36 1 1:00 10
6.2 เครื่ องมือจาลองการทางาน 3 4 5 4 2 1 2 1 22 2 0:35 6
6.3 เครื่ องมือโหลดไฟล์ลงชิพ
2 3 3 2 1 1 1 1 14 3 0:25 4
ไมโครคอนโทรลเลอร์
รวม 10 14 16 12 8 4 5 3 72 2 20
ลาดับความสาคัญ 3 2 1 4 5 7 6 8
พฤติกรรม พุทธิพิสยั
ลาดับความสาคัญ
จานวนข้อสอบ
จานวนชัว่ โมง
การนาไปใช้
ความเข้าใจ
ทักษะพิสัย
ประเมินค่า
สังเคราะห์
วิเคราะห์
จิตพิสัย
ความรู ้
ชื่อหน่วย
รวม
พฤติกรรม พุทธิพิสยั
ลาดับความสาคัญ
จานวนข้อสอบ
จานวนชัว่ โมง
การนาไปใช้
ความเข้าใจ
ทักษะพิสัย
ประเมินค่า
สังเคราะห์
วิเคราะห์
จิตพิสัย
ความรู ้
ชื่อหน่วย
รวม
7.12 การเขียนโปรแกรมแสดงผลตัวเลข 7
5 6 7 7 3 1 3 1 33 5 2:00 10
ส่วน
7.13 การเขียนโปรแกรมรับสวิตช์เพื่อ
6 6 7 7 4 2 3 1 36 2 2:15 10
แสดงผลตัวเลข 7 ส่วน
7.14 การเขียนโปรแกรมนับพัลส์ดว้ ยวงจร
5 6 7 5 3 1 4 1 32 10 2:00 10
เคาน์เตอร์
7.15 การสร้างวงจรขับมอเตอร์ไฟฟ้า
4 5 6 4 3 2 5 1 30 20 1:55 10
กระแสตรง
7.16 การเขียนโปรแกรมควบคุมมอเตอร์
5 6 7 5 3 1 4 1 32 11 2:00 10
ไฟฟ้ากระแสตรง
7.17 การสร้างวงจรขับสเต็ปเปอร์มอเตอร์ 4 5 6 4 3 2 5 1 30 21 1:55 10
7.18 การเขียนโปรแกรมควบคุมสเต็ปเปอร์
6 6 7 7 4 1 3 1 35 3 2:10 10
มอเตอร์
7.19 การเขียนโปรแกรมควบคุมเซอร์โว
5 6 7 7 4 1 3 1 34 4 2:10 10
มอเตอร์
7.20 การสร้างวงจรแสดงผลจอผลึกเหลว
5 5 6 4 3 2 5 1 31 13 1:55 10
(LCD)
7.21 การเขียนโปรแกรมแสดงผลจอผลึก
6 6 8 7 4 2 3 1 37 1 2:15 10
เหลว (LCD)
รวม 101 116 138 106 67 33 88 21 670 42 208
ลาดับความสาคัญ 4 2 1 3 6 7 5 8
ญ
สำรบัญ
หน้า
คานา ก
หลักสู ตรประกาศนียบัตรวิชาชีพชั้นสู งพุทธศักราช 2546 ข
หลักสู ตรรายวิชาไมโครคอนโทรลเลอร์ ง
ตารางวิเคราะห์หลักสู ตรรายวิชา จ
ตารางวิเคราะห์หลักสู ตร ฉ
สารบัญ ญ
สารบัญตาราง ฐ
สารบัญรู ป ฒ
บทที่ 1 ควำมรู้ เบื้องต้ นเกีย่ วกับไมโครคอนโทรลเลอร์ 1
1.1 ระบบตัวเลขและรหัส 5
1.2 ดิจิตอลพื้นฐาน 12
1.3 โครงสร้างพื้นฐานของระบบคอมพิวเตอร์ 15
1.4 โครงสร้างไมโครคอนโทรลเลอร์ MCS-51 17
1.5 ส่ วนประกอบของวงจรไมโครคอนโทรลเลอร์ 23
1.6 สรุ ปสาระสาคัญ 26
บทที่ 2 รีจิสเตอร์ และหน่ วยควำมจำ 31
2.1 หน่วยความจาภายใน 35
2.2 รี จิสเตอร์ 36
2.3 การติดต่อกับหน่วยความจาภายนอก 43
2.4 สรุ ปสาระสาคัญ 46
บทที่ 3 ชุ ดคำสั่ ง และวงจรไทเมอร์ /เคำน์ เตอร์ 53
3.1 ชุดคาสัง่ 57
3.2 วงจรไทเมอร์ /เคาน์เตอร์ 64
3.3 สรุ ปสาระสาคัญ 73
บทที่ 4 กำรสื่ อสำรทำงพอร์ ตอนุกรม กำรอินเตอร์ รัพต์ และว็อชด็อก 79
4.1 การสื่ อสารทางพอร์ตอนุกรม (Serial Port Communication) 83
4.2 การขัดจังหวะการทางาน (Interrupt) 96
4.3 การใช้งานวงจรว็อชด็อก (Watch Dog) 100
ฎ
สำรบัญ (ต่ อ)
หน้า
4.3 สรุ ปสาระสาคัญ 101
บทที่ 5 กำรเขียนโปรแกรมภำษำซีสำหรับไมโครคอนโทรลเลอร์ 107
5.1 ขั้นตอนในการพัฒนาโปรแกรม 111
5.2 ภาษาซีสาหรับไมโครคอนโทรลเลอร์ 115
5.3 การสร้างฟังก์ชนั่ รองขึ้นใช้เอง 126
5.4 สรุ ปสาระสาคัญ 131
บทที่ 6 เครื่ องมือช่ วยพัฒนำงำนไมโครคอนโทรลเลอร์ 137
6.1 เครื่ องมือแปลงภาษาซีเป็ นภาษาเครื่ อง 141
6.2 เครื่ องมือจาลองการทางาน 150
6.3 เครื่ องมือโหลดไฟล์ลงชิพไมโครคอนโทรลเลอร์ 156
6.4 สรุ ปสาระสาคัญ 159
บทที่ 7 ใบงำนกำรทดลอง 165
ใบงานที่ 7.1 การสร้างวงจรภาคจ่ายไฟในแผงวงจรไมโครคอนโทรลเลอร์ 167
ใบงานที่ 7.2 การสร้างวงจรประมวลผลหลัก (วงจรไมโครคอนโทรลเลอร์) 175
ใบงานที่ 7.3 การสร้างวงจรโปรแกรมข้อมูลลงไมโครคอนโทรลเลอร์ 185
ใบงานที่ 7.4 การสร้างวงจรเอาต์พตุ พอร์ ต 195
ใบงานที่ 7.5 การใช้งานพอร์ ตทาหน้าที่เป็ นเอาต์พุตพอร์ ตเบื้องต้น 209
ใบงานที่ 7.6 การสร้างวงจรสวิตช์ 223
ใบงานที่ 7.7 การใช้งานพอร์ ตทาหน้าที่เป็ นอินพุตพอร์ ตเบื้องต้น 233
ใบงานที่ 7.8 การเขียนโปรแกรมหน่วงเวลา 249
ใบงานที่ 7.9 การสร้างวงจรขับลาโพง 267
ใบงานที่ 7.10 การเขียนโปรแกรมสร้างความถี่ เสี ยง 277
ใบงานที่ 7.11 การสร้างวงจรแสดงผลตัวเลข 7 ส่ วน 295
ใบงานที่ 7.12 การเขียนโปรแกรมแสดงผลตัวเลข 7 ส่ วน 307
ใบงานที่ 7.13 การเขียนโปรแกรมรับสวิตช์เพื่อแสดงผลตัวเลข 7 ส่ วน 325
ใบงานที่ 7.14 การเขียนโปรแกรมนับพัลส์ดว้ ยวงจรเคาน์เตอร์ 341
ใบงานที่ 7.15 การสร้างวงจรขับมอเตอร์ไฟฟ้ากระแสตรง 355
ฏ
สำรบัญ (ต่ อ)
หน้า
ใบงานที่ 7.16 การเขียนโปรแกรมควบคุมมอเตอร์ไฟฟ้ากระแสตรง 369
ใบงานที่ 7.17 การสร้างวงจรขับสเต็ปเปอร์มอเตอร์ 383
ใบงานที่ 7.18 การเขียนโปรแกรมควบคุมสเต็ปเปอร์ มอเตอร์ 395
ใบงานที่ 7.19 การเขียนโปรแกรมควบคุมเซอร์ โวมอเตอร์ 409
ใบงานที่ 7.20 การสร้างวงจรแสดงผลจอผลึกเหลว (LCD) 423
ใบงานที่ 7.21 การเขียนโปรแกรมแสดงผลจอผลึกเหลว (LCD) 435
โครงงาน งานวิจยั 459
บรรณานุกรม 467
ภาคผนวก 468
ฐ
สำรบัญตำรำง
ตารางที่ หน้า
1-1 ความสัมพันธ์ของเลขฐาน 10
1-2 เปรี ยบเทียบคุณสมบัติที่แตกต่างกันในแต่ละเบอร์ 19
4-1 บิตเลือกโหมดการทางานวงจรสื่ อสารทางพอร์ตอนุกรม 86
4-2 ตาแหน่งตอบสนองจากการอินเตอร์ รัพต์จากแหล่งต่าง ๆ 96
4-3 ลาดับความสาคัญของอินเตอร์ รัพต์ชนิ ดต่าง ๆ 98
5-1 ผังงานหลักที่ใช้งานไมโครคอนโทรลเลอร์ 112
5-2 ชนิดของตัวแปรในภาษาซีสาหรับไมโครคอนโทรลเลอร์ 116
5-3 ตัวกระทาทางคณิ ตศาสตร์ 118
5-4 ตัวกระทาทางลอจิก 119
5-5 ตัวกระทาการเปรี ยบเทียบ 119
6-1 เปรี ยบเทียบความแตกต่างเฉพาะการโปรแกรมตัวเองของไมโครคอนโทรลเลอร์ 159
7.1-1 ตารางบันทึกแรงดันจุดต่าง ๆ 172
7.2-1 ตารางวัดความต่อเนื่องเพื่อตรวจสอบวงจร 180
7.2-2 ตารางวัดแรงดันเพื่อตรวจสอบวงจร 180
7.3-1 ตารางบันทึกผลการวัดค่าความต้านทานของการเชื่อมต่อ 189
7.4-1 ทดสอบบิต 203
7.5-1 แอดเดรสของแต่พอร์ ตที่สามารถใช้ชื่อแทนได้โดยตรง 212
7.6-1 ตารางบันทึกผลการทดสอบวงจร 229
7.8-1 ค่าที่ใช้กาหนดในรี จิสเตอร์ TH,TL เพื่อให้ได้เวลาที่ตอ้ งการ 255
7.8-2 ตาแหน่งที่ตอบสนองต่อการอินเตอร์ รัพต์ 256
7.8-3 สถานะการทางานของ LED ในงานที่มอบหมาย 262
7.10-1 ความถี่ในแต่ละตัวโน้ต 284
7.11-1 ตารางตรวจสอบการทางานของวงจรแสดงผลตัวเลข 7 ส่ วน 302
7.12-1 ข้อมูลที่ส่งออกพอร์ ตเพื่อให้ติดสว่างเป็ นตัวเลข 314
7.15-1 การควบคุมมอเตอร์ดว้ ยวงจรขับแบบ H-Bridge แบบใช้สวิตช์ 359
7.16-1 ลอจิกที่ใช้การควบคุมทางานของไอซีขบั มอเตอร์ไฟฟ้ากระแสตรง 372
7.17-1 ตารางทดสอบการทางานของวงจรขับสเต็ปเปอร์มอเตอร์ 390
7.18-1 รู ปแบบการกระตุน้ ขดลวดของมอเตอร์แบบเต็มสเต็ป 1 เฟส 398
ฑ
สำรบัญตำรำง (ต่ อ)
ตารางที่ หน้า
7.18-2 รู ปแบบการกระตุน้ ขดลวดของมอเตอร์แบบเต็มสเต็ป 2 เฟส 399
7.18-3 รู ปแบบการกระตุน้ ขดลวดของมอเตอร์แบบครึ่ งสเต็ป 399
7.19-1 มุมของการเคลื่อนที่ของเซอร์โวมอเตอร์ในงานที่มอบหมาย 420
7.20-1 รายละเอียดการทางานของขาต่าง ๆ ของ LCD แบบ Character LCD module 426
7.21-1 หน้าที่ของขาต่าง ๆ ของจอผลึกเหลว 441
7.21-2 ผลการแสดงจากใช้คาสัง่ โหมดการป้ อนข้อมูล 443
7.21-3 ค่าลอจิกที่ใช้ควบคุมการเลื่อนเคอร์ เซอร์ 444
ฒ
สำรบัญรูป
รู ปที่ หน้า
1-1 ระดับแรงดันของลอจิก 13
1-2 โครงสร้างพื้นฐานของระบบคอมพิวเตอร์ 15
1-3 ไมโครคอนโทรลเลอร์ขนาด 40 ขาตัวถังแบบ DIP 19
1-4 โครงสร้างและสถาปัตยกรรมของไมโครคอนโทรลเลอร์ MCS-51 เบอร์ AT89S52 20
1-5 การจัดขาของไมโครคอนโทรลเลอร์ เบอร์ AT89S52 21
1-6 วงจรไฟเลี้ยงขนาด 5 โวลต์แบบใช้หม้อแปลงไฟฟ้ากระแสสลับ 24
1-7 วงจรไฟเลี้ยงขนาด 5 โวลต์ที่ใช้แหล่งจ่ายไฟฟ้ากระแสตรงภายนอก 24
1-8 วงจรรี เซตที่ใช้คุณสมบัติของ RC Time Constant 24
1-9 วงจรสัญญาณนาฬิกา 25
1-10 การกาหนดลอจิกให้ขา EA และพื้นที่ใช้งานเมื่อกาหนดลอจิก 1 หรื อลอจิก 0 26
2-1 การจัดสรรหน่วยความจาภายใน 36
2-2 รายละเอียดของหน่วยความจาภายในใช้งานทัว่ ไป 37
2-3 การจัดสรรรี จิสเตอร์ใช้งานพิเศษ 38
2-4 การใช้งานพอร์ต 1 เป็ นเอาท์พุทพอร์ ต 39
2-5 แสดงการใช้งานพอร์ ต 0 เป็ นอินพุทพอร์ต 39
2-6 ตัวอย่างการใช้งานหน่วยความจาสแต็ก 40
2-7 วงจรเชื่อมต่อหน่วยความจาเก็บโปรแกรม 44
2-8 วงจรเชื่อมต่อหน่วยความจาเก็บข้อมูล 45
2-9 วงจรเชื่อมต่อหน่วยความจาทั้งสองประเภท 45
3-1 ภาษาเครื่ องของไมโครคอนโทรลเลอร์ MCS-51 ส่ งงานออกพอร์ ต 0 (ไฟวิง่ ไบนารี่ ) 57
3-2 บริ เวณหน่วยความจาที่สามารถเข้าถึงข้อมูลโดยตรง 59
3-3 บริ เวณหน่วยความจาที่สามารถเข้าถึงข้อมูลโดยทางอ้อม 59
3-4 วงจรหารความถี่โดยใช้ไอซีนบั เลขไบนารี่ 67
3-5 โครงสร้างในโหมด 0 ของวงจรไทเมอร์เคาน์เตอร์ 1 67
3-6 โครงสร้างในโหมด 0 ของวงจรไทเมอร์เคาน์เตอร์ 1 68
3-7 ความถี่ในแต่ละจุดสาหรับโหมด 0 ของวงจรไทเมอร์ เคาน์เตอร์ 1 68
3-8 โครงสร้างในโหมด 1 ของวงจรไทเมอร์เคาน์เตอร์ 1 69
3-9 โครงสร้างในโหมด 1 ของวงจรไทเมอร์เคาน์เตอร์ 1 70
ณ
สำรบัญรูป (ต่ อ)
รู ปที่ หน้า
3-10 ความถี่ในแต่ละจุดสาหรับโหมด 1 ของวงจรไทเมอร์ เคาน์เตอร์ 1 70
3-11 โครงสร้างในโหมด 2 ของวงจรไทเมอร์ เคาน์เตอร์ 1 72
3-12 โครงสร้างในโหมด 3 73
4-1 รู ปแบบการส่ งข้อมูลแบบซิ งโครนัส 83
4-2 ลักษณะของข้อมูลในการสื่ อสารแบบอะซิงโครนัส 84
4-3 ลักษณะการสื่ อสารอนุกรม 85
4-4 การทางานในโหมด 0 88
4-5 การทางานในโหมด 1 และ 3 89
4-6 สัญญาณ Baud rate แต่ละจุด 90
4-7 การทางานในโหมด 2 92
4-8 แหล่งจ่ายสัญญาณบอด (a) โหมด 0 (b) โหมด 2 (c)โหมด 1 และโหมด 3 93
4-9 โครงสร้างเสมือนของการควบคุมบิตตอบสนองการอินเตอร์ รัพต์ 98
4-10 การกาหนดการรับรู ้ลกั ษณะของสัญญาณอินเตอร์ รัพต์ 100
5-1 โครงสร้างภาษาซี 116
6-1 หน้าต่างโปรแกรมเมื่อเริ่ มโปรแกรม 141
6-2 หน้าต่างของโปรแกรม Keil µVision4 142
6-3 ขั้นตอนในการสร้างโปรเจคไฟล์ 142
6-4 ขั้นตอนการสร้างโฟลเดอร์ ใหม่ 142
6-5 ขั้นตอนการตั้งชื่อโปรเจคไฟล์ 143
6-6 ขั้นตอนการเลือกเบอร์ ไมโครคอนโทรลเลอร์ 143
6-7 หน้าต่างที่ปรากฏหลังเลือกเบอร์ ไมโครคอนโทรลเลอร์ 143
6-8 การสร้างไฟล์เอกสารใหม่เพื่อเขียนโปรแกรม 144
6-9 ผลที่ได้จากการสร้างไฟล์ 144
6-10 ขั้นตอนการบันทึกไฟล์ 144
6-11 ตั้งชื่อไฟล์ 145
6-12 ขั้นตอนการเพิ่มไฟล์ภาษาซี ใน Source group 145
6-13 การเลือกไฟล์เพื่อเพิ่มใน Source group 145
6-14 รายชื่อไฟล์ที่ถูกเพิ่มเข้าไปใน Source Group1 146
ด
สำรบัญรูป (ต่ อ)
รู ปที่ หน้า
6-15 ขั้นตอนการตั้งค่า Option 146
6-16 หน้าต่างการแก้ค่าความถี่คริ สตอล 146
6-17 หน้าต่างที่ใช้เลือกการสร้างไฟล์ภาษาเครื่ อง 147
6-18 หน้าต่างเพื่อใช้เขียนโปรแกรม 147
6-19 ปุ่ มไอคอนที่ใช้ในการแปลงเป็ นภาษาเครื่ อง 148
6-20 ผลที่ได้เมื่อแปลงแล้วผลที่ได้ไม่มีขอ้ ผิดพลาด 148
6-21 ผลที่ได้เมื่อแปลงแล้วผลที่ได้มีขอ้ ผิดพลาด 148
6-22 ปุ่ มเพื่อใช้ทดสอบโปรแกรม 149
6-23 ปุ่ มเพื่อใช้ในการทดสอบโปรแกรม 149
6-24 แสดงการเลือกแสดงพอร์ต 150
6-25 หน้าต่างของโปรแกรม Proteus 151
6-26 แถบเครื่ องมือใช้งาน 151
6-27 แถบเครื่ องมือใช้ปรับมุมอุปกรณ์ 152
6-28 ปุ่ มควบคุมการจาลองการพฤติกรรม 152
6-29 การเลือกอุปกรณ์ 152
6-30 รายการอุปกรณ์ 153
6-31 รายการอุปกรณ์ที่ได้รับการเลือก 153
6-32 การวางอุปกรณ์ 154
6-33 ขั้นตอนการเชื่อมต่อสาย 155
6-34 วงจรเมื่อต่อเชื่อมสายสัญญาณเสร็ จแล้ว 155
6-35 หน้าต่างการโหลดไฟล์และการแก้ค่าความถี่ 155
6-36 การจาลองพฤติกรรม 156
6-37 วงจร STK200 วงจรโปรแกรมข้อมูลลงชิพผ่านทางพอร์ ต LPT 157
6-38 โปรแกรม ISP Flash Programmer 3.0a 157
6-39 หน้าต่างหากติดต่อกับวงจรไมโครคอนโทรลเลอร์ ไม่ได้ 158
6-40 หน้าต่างหากติดต่อกับวงจรไมโครคอนโทรลเลอร์ ได้ 158
6-41 วงจรสื่ อสารทางพอร์ตอนุกรมที่ใช้โปรแกรมข้อมูลลงชิพ 158
7.1-1 วงจรภาคจ่ายไฟ 170
ต
สำรบัญรูป (ต่ อ)
รู ปที่ หน้า
7.1-2 วงจรภาคจ่ายไฟที่ใช้สร้าง 171
7.1-3 แนวการจัดวางและแนวการบัดกรี ของวงจรภาคจ่ายไฟ 171
7.2-1 วงจรไมโครคอนโทรลเลอร์ 178
7.2-2 วงจรไมโครคอนโทรลเลอร์ที่ใช้สร้าง 179
7.2-3 แนวการจัดวางและแนวการบัดกรี ของวงจรไมโครคอนโทรลเลอร์ 179
7.3-1 วงจรเชื่อมต่อคอมพิวเตอร์ สาหรับโปรแกรมตัวเองแบบ STK200 188
7.3-2 แนวการจัดวางและแนวการบัดกรี ของวงจรภาคจ่ายไฟ 188
7.3-3 (a) ผลเมื่อติดต่อได้ (b) ผลเมื่อติดต่อไม่ได้ 190
7.3-4 ข้อมูลในบัฟเฟอร์ที่ได้จากการกดปุ่ ม Disp Buffer 190
7.3-5 หน้าต่างการป้ อนข้อมูลโดยตรงลงในบัฟเฟอร์ 190
7.3-6 ผลจากการป้อนข้อมูลโดยตรงลงในบัฟเฟอร์ (สองแถวแรกจะเป็ น 00) 191
7.3-7 (a) สามารถโปรแกรมได้ (b) เขียนโปรแกรมสาเร็ จ 191
7.3-8 (a) สามารถโปรแกรมได้ (b) เขียนโปรแกรมไม่สาเร็ จ 191
7.3-9 ไม่สามารถติดต่อเพื่อทาการโปรแกรมได้ 192
7.4-1 แสดงโครงสร้างพอร์ ตของไมโครคอนโทรลเลอร์ MCS-51 198
7.4-2 แสดงวงจรไบอัส LED เบื้องต้น 199
7.4-3 แสดงวงจรขับที่ใช้ไอซี เบอร์ 74HC541 200
7.4-4 แสดงวงจรขับที่ใช้ไอซี เบอร์ 74HC573 200
7.4-5 วงจรวงจรสมบูรณ์ที่ใช้ทาการทดลอง 201
7.4-6 ส่ วนของวงจรหลักและส่ วนของวงจรขับ LED ซึ่ งแยกกับคนละแผ่นวงจรพิมพ์ 201
7.4-7 (a) วงจรขับ LED (b) แนวทางจัดวางบนแผ่นวงจรต่อพ่วง 202
7.4-8 การต่อเชื่ อมกับวงจรหลักเพื่อทดสอบทางฮาร์ ตแวร์ 203
7.4-9 ต่อเชื่อมวงจรเอาต์พุตพอร์ ตกับวงจรหลักเพื่อทดลองทางซอฟท์แวร์ 204
7.5-1 วงจรควบคุมรี เลย์ 212
7.5-2 วงจรที่ใช้เชื่อมต่อระหว่างไมโครคอนโทรลเลอร์ กบั LED 213
7.5-3 การต่อวงจรเพื่อจาลองพฤติกรรมใน Proteus 214
7.5-4 วงจรจริ งที่ใช้ทดลอง 214
7.5-5 วงจรที่ใช้ทาการทดลองในงานที่มอบหมาย 220
ถ
สำรบัญรูป (ต่ อ)
รู ปที่ หน้า
7.6-1 วงจรสวิตช์ที่ใช้เชื่ อมต่อกับไมโครคอนโทรลเลอร์ และสัญญาณที่เกิดขึ้น 226
7.6-2 วงจรสมบรู ณ์สาหรับการทดลองเขียนโปรแกรมรับสวิตช์ 227
7.6-3 วงจรสวิตช์สร้างเพิ่มจากวงจรเดิมในใบงานที่ 7.4 227
7.6-4 (a) วงจรสวิตช์ (b) แนวทางจัดวางโดยใช้แผ่นปริ้ นวงจรเดิมของใบงานที่ 7.4 228
7.6-3 การต่อเชื่ อวงจรไมโครคอนโทรลเลอร์ กบั วงจรสวิตช์ 229
7.7-1 วงจรสวิตช์ที่ต่อเข้ากับพอร์ ตไมโครคอนโทรลเลอร์ 236
7.7-2 วงจรที่ใช้ในการทดลอง 238
7.7-3 แสดงการต่อวงจรเพื่อจาลองพฤติกรรมใน Proteus 239
7.7-4 วงจรจริ งที่ใช้ทดลองในใบงาน 7.7 240
7.7-5 วงจรที่ใช้ในการทดลอง 246
7.8-1 โครงสร้างในโหมด 1 ของวงจรไทเมอร์ /เคาน์เตอร์ 1 253
7.8-2 ความถี่ในแต่ละจุดสาหรับโหมด 0 ของวงจรไทเมอร์ /เคาน์เตอร์ 1 253
7.8-3 วงจรที่ใช้ในการทดลอง 257
7.8-4 วงจรที่ใช้จาลองการทางานด้วยโปรแกรม Proteus 258
7.8-5 วงจรจริ งที่ใช้ทดลอง 258
7.8-6 ตาแหน่งการจัดวางของ LED 262
7.8-7 วงจรที่ใช้ในการทดลอง 263
7.9-1 แสดงผลของการรวมกันของคลื่นซายน์ทาให้เกิดรู ปคลื่นสี่ เหลี่ยม 270
7.9-2 แสดงวงจรสวิตช์ที่ใช้เชื่อมต่อกับไมโครคอนโทรลเลอร์ 270
7.9-3 วงจรสมบูรณ์ที่ใช้ในการทดลองการสร้างเสี ยง 271
7.9-4 วงจรขับลาโพงสร้างเพิ่มจากวงจรเดิมในใบงานที่ 7.6 271
7.9-5 (a) วงจรขับลาโพง (b) แนวทางจัดวางโดยใช้แผ่นปริ้ นวงจรเดิมของใบงานที่ 7.6 272
7.9-6 การต่อเชื่ อมวงจรไมโครคอนโทรลเลอร์ กบั วงจรขับลาโพง 273
7.10-1 คาบเวลาของรู ปคลื่นของสัญญาณที่ความถี่ 1 kHz 280
7.10-2 ตัวอักษรแทนชื่อของระดับเสี ยงบนคียข์ องเปี ยโน 282
7.10-3 กลุ่มเสี ยงบนคียข์ องเปี ยโน 283
7.10-4 วงจรสมบูรณ์ที่ใช้ทดลองการเขียนโปรแกรมสร้างเสี ยง 285
7.10-5 วงจรที่ใช้จาลองการทางานด้วยโปรแกรม Proteus 286
ท
สำรบัญรูป (ต่ อ)
รู ปที่ หน้า
7.10-6 วงจรจริ งที่ใช้ทดลอง 286
7.10-7 วงจรที่ใช้ทาการทดลองในงานที่มอบหมาย 292
7.11-1 โครงสร้างภายในของ LED 7 Segment (a) แบบแอโนดร่ วม (b) แบบแคโทด 298
ร่ วม
7.11-2 ชื่อเรี ยกของส่ วนต่าง ๆ และตาแหน่งการจัดขาของ LED 7 Segment แบบเดี่ยว 298
และคู่
7.11-3 (a) โครงสร้างภายในของ 7 Segment เบอร์ TOD-3261AG-B1 (b) ตาแหน่ง 298
หลัก (digit)
7.11-4 วงจรสมบรู ณ์สาหรับการทดลอง 299
7.11-5 วงจรแสดงผลตัวเลข 7 ส่ วนสร้างเพิ่มจากวงจรเดิมในใบงานที่ 7.4 299
7.11-6 (a) วงจรแสดงผลตัวเลข 7 ส่ วน (b) แนวทางจัดวางใช้แผ่นปริ้ นวงจรเดิมของ 300
ใบงานที่ 7.4
7.11-7 การต่อเชื่ อมกับวงจรไมโครคอนโทรลเลอร์ เพื่อทดสอบทางฮาร์ ดแวร์ 301
7.11-8 ต่อเชื่อมวงจรแสดงผลตัวเลขกับวงจรไมโครคอนโทรลเลอร์ เพื่อทดลองทาง 302
ซอฟท์แวร์
7.12-1 วงจรขับตัวเลข 7 ส่ วนแบบ 1 หลัก 310
7.12-2 โครงสร้างภายในของตัวแสดงผลตัวเลข 7 ส่ วนแบบมัลติเพล็ก 311
7.12-3 วงจรขับสาหรับแสดงผลจากตัวแสดงผลตัวเลข 7 ส่ วนที่ต่อแบบมัลติเพล็ก 312
แบบ 2 หลัก
7.12-4 แสดงเส้นทางของสัญญาณเพื่อแสดงเลข “1”ในหลักที่ 1 (ขั้นตอนที่ 2-4) 313
7.12-5 แสดงเส้นทางของสัญญาณเพื่อแสดงเลข “2”ในหลักที่ 2 (ขั้นตอนที่ 6-8) 313
7.12-6 บิตเชื่ อมต่อกับขาของตัวแสดงผลตัวเลข 7 ส่ วน 314
7.12-7 วงจรสมบูรณ์ที่ใช้ทดลองการเขียนโปรแกรมแสดงผล 315
7.12-8 วงจรที่ใช้จาลองการทางานด้วยโปรแกรม Proteus 316
7.12-9 วงจรจริ งที่ใช้ทดลอง 316
7.12-10 วงจรที่ใช้ทาการทดลองในงานที่มอบหมาย 321
7.13-1 วงจรสมบูรณ์ที่ใช้ทดลอง 328
7.13-2 วงจรที่ใช้จาลองการทางานด้วยโปรแกรม Proteus 329
ธ
สำรบัญรูป (ต่ อ)
รู ปที่ หน้า
7.13-3 วงจรจริ งที่ใช้ทดลอง 330
7.13-4 วงจรที่ใช้ทาการทดลองในงานที่มอบหมาย 337
7.14-1 โครงสร้างในโหมด 1 ของวงจรเคาน์เตอร์ 1 344
7.14-2 วงจรสมบูรณ์ที่ใช้ทดลอง 345
7.14-3 การพ่วงสายจากสวิตช์ S1 เข้ามายังขา T1 345
7.14-4 วงจรที่ใช้จาลองการทางานด้วยโปรแกรม Proteus 346
7.14-5 วงจรจริ งที่ใช้ทดลอง 347
7.14-6 วงจรที่ใช้ทาการทดลองในงานที่มอบหมาย 351
7.15-1 ตัวอย่างมอเตอร์ ไฟฟ้ากระแสตรงขนาดเล็กแบบปกติ 358
7.15-2 ตัวอย่างมอเตอร์ ไฟฟ้ากระแสตรงขนาดเล็กแบบที่มีชุดเฟื องทดรอบ 358
7.15-3 วงจรขับแบบ H-Bridge 359
7.15-4 การควบคุมการหมุนของมอเตอร์ดว้ ยวงจรขับแบบ H-Bridge 359
7.15-5 วงจรขับมอเตอร์แบบ H-Bridge ที่ใช้รีเลย์ 360
7.15-6 การควบคุมการหมุนของมอเตอร์ดว้ ยวงจรขับแบบ H-Bridge ที่ใช้รีเลย์ 360
7.15-7 โครงสร้างไอซีขบั มอเตอร์กระแสตรงขนาดเล็กเบอร์ L293D 360
7.15-8 วงจรสมบรู ณ์สาหรับการทดลอง 361
7.15-9 ส่ วนของวงจรหลักและวงจรขับมอเตอร์ ไฟฟ้ากระแสตรงที่แยกคนละ 361
แผ่นวงจรพิมพ์
7.15-10 (a) วงจรขับมอเตอร์ ไฟฟ้ากระแสตรง (b) แนวทางจัดวาง 362
7.15-11 การต่อเชื่ อมกับวงจรไมโครคอนโทรลเลอร์ เพื่อทดสอบทางฮาร์ ดแวร์ 363
7.15-12 ต่อเชื่อมวงจรขับมอเตอร์ ไฟฟ้ากระแสตรงกับวงจรไมโครคอนโทรลเลอร์ 364
7.16-1 วงจรขับมอเตอร์ไฟฟ้ากระแสตรงที่ใช้ไอซี L293 372
7.16-2 ผลที่ได้จากการใช้ PWM ในการควมคุมความเร็ วมอเตอร์ 373
7.16-3 วงจรสมบรู ณ์สาหรับการทดลอง 373
7.16-4 วงจรที่ใช้จาลองการทางานด้วยโปรแกรม Proteus 374
7.16-5 วงจรจริ งที่ใช้ทดลอง 375
7.16-6 วงจรที่ใช้ในการทดลองในงานที่ได้รับมอบหมาย 379
7.17-1 โครงสร้างสเต็ปเปอร์ Bipolar และ Unipolar 386
น
สำรบัญรูป (ต่ อ)
รู ปที่ หน้า
7.17-2 แสดงวงจรขับสเต็ปเปอร์มอเตอร์ที่ใช้ทรานซิสเตอร์ 387
7.17-3 วงจรขับสเต็ปเปอร์มอเตอร์แบบใช้ไอซี ULN2803 387
7.17-4 วงจรสมบรู ณ์สาหรับการทดลอง 388
7.17-5 ส่ วนของวงจรหลักและวงจรขับสเต็ปเปอร์ มอเตอร์ ที่แยกคนละแผ่นวงจรพิมพ์ 388
7.17-6 (a) วงจรขับสเต็ปเปอร์มอเตอร์ (b) แนวทางจัดวาง 389
7.17-7 การต่อเชื่ อมกับวงจรไมโครคอนโทรลเลอร์ เพื่อทดสอบทางฮาร์ ดแวร์ 390
7.17-8 ต่อเชื่อมวงจรขับสเต็ปเปอร์ มอเตอร์ กบั วงจรไมโครคอนโทรลเลอร์ 391
7.18-1 แสดงการเคลื่อนที่เมื่อขับมอเตอร์แบบเต็มสเต็ป 1 เฟส 398
7.18-2 แสดงการเคลื่อนที่เมื่อขับมอเตอร์แบบเต็มสเต็ป 2 เฟส 398
7.18-3 แสดงการเคลื่อนที่เมื่อขับมอเตอร์แบบครึ่ งสเต็ป 399
7.18-4 วงจรสมบรู ณ์สาหรับการทดลอง 400
7.18-5 วงจรที่ใช้จาลองการทางานด้วยโปรแกรม Proteus 400
7.18-6 วงจรจริ งที่ใช้ทดลอง 401
7.18-7 วงจรที่ใช้ในการทดลองในงานที่ได้รับมอบหมาย 405
7.18-1 ภายในเซอร์โวมอเตอร์ 412
7.19-2 คอนเน็คเตอร์ เซอร์ โวมอเตอร์ ของแต่ละบริ ษทั 2 412
7.19-3 สัญญาณพัลส์ที่ใช้ควบคุมเซอร์ โวมอเตอร์ 413
7.19-4 วงจรสมบรู ณ์สาหรับการทดลอง 414
7.19-5 วงจรที่ใช้จาลองการทางานด้วยโปรแกรม Proteus 414
7.19-6 วงจรจริ งที่ใช้ทดลอง 415
7.19-7 วงจรสมบรู ณ์สาหรับการทดลองที่ 1 415
7.19-8 วงจรที่ใช้ในการทดลองในงานที่ได้รับมอบหมาย 420
7.20-1 วงจรสมบรู ณ์สาหรับการทดลอง 427
7.20-2 ส่ วนของวงจรหลักและวงจรแสดงผลจอ LCD ที่แยกคนละแผ่นวงจรพิมพ์ 427
7.20-3 (a) วงจรแสดงผลจอผลึกเหลว (LCD) (b) แนวทางจัดวาง 428
7.20-4 การต่อเชื่ อมกับวงจรไมโครคอนโทรลเลอร์ เพื่อทดสอบทางฮาร์ ดแวร์ 429
7.20-5 ต่อเชื่อมวงจรแสดงผลจอ LCD กับวงจรไมโครคอนโทรลเลอร์ 429
7.21-1 แสดงโครงสร้างภายในตัวควบคุม HD4478 438
บ
สำรบัญรูป (ต่ อ)
รู ปที่ หน้า
7.21-2 แสดงแอดเดรส DDRAM ของ LCD 439
7.21-3 แอดเดรส DDRAM ของ LCD ขนาด 16x1 เมื่อเซตให้แสดงแดงแบบ 1 แถว 439
7.21-4 แอดเดรส DDRAM ของ LCD ขนาด 16x1 เมื่อเซตให้แสดงแดงแบบ 2 แถว 439
7.21-5 แอดเดรส DDRAM ของ LCD ขนาด 16x2 439
7.21-6 แอดเดรส DDRAM ของ LCD ขนาด 20x2 440
7.21-7 แอดเดรส DDRAM ของ LCD ขนาด 16x4 440
7.21-8 ผลที่ได้เมื่อป้ อนข้อมูลเกินบรรทัด ของ LCD ขนาด 16x4 440
7.21-9 แอดเดรส DDRAM ของ LCD ขนาด 20x4 441
7.21-10 ผลที่ได้เมื่อป้ อนข้อมูลเกินบรรทัด ของ LCD ขนาด 20x4 441
7.21-11 ผังงานการ Initialization ของการเชื่ อมต่อแบบ 8 บิต 446
7.21-12 ผังงานการ Initialization ของการเชื่ อมต่อแบบ 4 บิต 447
7.21-13 วงจรสมบรู ณ์สาหรับการทดลอง 448
7.21-14 วงจรที่ใช้จาลองการทางานด้วยโปรแกรม Proteus 448
7.21-15 วงจรจริ งที่ใช้ทดลอง 449
7.21-16 วงจรสมบูรณ์ที่มีการเชื่ อมต่อแบบ 4 บิตที่ใช้ทดลอง 453
7.21-17 วงจรที่ใช้ในการทดลองในงานที่ได้รับมอบหมาย 456
หน่ วยที่ 1
ความรู้ เบื้องต้ นเกีย่ วกับไมโครคอนโทรลเลอร์
หัวข้อเรื่ อง
1.1 ระบบตัวเลขและรหัส
1.2 ดิจิตอลพื้นฐาน
1.3 โครงสร้างพื้นฐานของระบบคอมพิวเตอร์
1.4 โครงสร้างไมโครคอนโทรลเลอร์ MCS-51
1.5 ส่ วนประกอบของวงจรไมโครคอนโทรลเลอร์
สาระสาคัญ
ความรู ้ เบื้ องต้นเกี่ ย วกับ ไมโครคอนโทรลเลอร์ ใ นบทนี้ ก ล่ า วถึ ง ระบบตัวเลขที่ เกี่ ย วข้องกับ
ไมโครคอนโทรลเลอร์ มีหวั ข้อความรู ้ดา้ นดิ จิตอลพื้นฐานที่มีใช้งานในไมโครคอนโทรลเลอร์ ตลอดถึ ง
โครงสร้างของไมโครคอนโทรลเลอร์ในตระกูล MCS-51 และวงจรประกอบต่าง ๆ
สมรรถนะประจาหน่วยการเรี ยนรู ้
แสดงความรู ้เกี่ยวกับโครงสร้างของไมโครคอนโทรลเลอร์ และวงจรประกอบต่าง ๆ
จุดประสงค์การเรี ยนรู ้
จุดประสงค์ ทวั่ ไป
1. เพื่อให้มีความรู ้เกี่ยวกับระบบตัวเลขและดิจิตอลพื้นฐาน
2. เพื่อให้มีความรู ้เกี่ยวกับโครงสร้างพื้นฐานของระบบคอมพิวเตอร์
3. เพื่อให้มีความรู ้เกี่ยวกับโครงสร้างไมโครคอนโทรลเลอร์ MCS-51
4. เพื่อให้มีความรู ้เกี่ยวกับส่ วนประกอบของวงจรไมโครคอนโทรลเลอร์
จุดประสงค์ เชิ งพฤติกรรม
1. บอกวิธีการแปลงเลขฐานในระบบตัวเลขและดิจิตอลพื้นฐานได้
2. บอกเกี่ยวกับโครงสร้างพื้นฐานของระบบคอมพิวเตอร์ ได้
3. บอกโครงสร้างไมโครคอนโทรลเลอร์ MCS-51 ได้
4. บอกการทางานของส่ วนประกอบต่าง ๆของวงจรไมโครคอนโทรลเลอร์ ได้
5. ทาแบบฝึ กหัดเสร็ จทันเวลาและทาแบบทดสอบผ่านเกณฑ์ที่กาหนด
2 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
แบบทดสอบก่อนเรียนหน่ วยที่ 1
คาสั่ ง ให้นกั ศึกษาเลือกคาตอบที่ถูกต้องที่สุดเพียงคาตอบเดียว
1. ตัวเลข 1001012 มีค่าเท่ากับเลขฐานสิ บในข้อ 5. ตัวเลข 876543 ตัวเลข 7 มีน้ าหนักตัวเลขใน
ใด เลขฐานสิ บมีค่าเท่าใด
ก. 13 ก. 7×10
ข. 25 ข. 7×100
ค. 37 ค. 7×1000
ง. 49 ง. 7×10000
จ. 51 จ. 7×100000
2. ตัวเลข 101001012 มีค่าเท่ากับเลขฐานสิ บหก 6. หากวัดแรงดันที่ขาไอซี (TTL) ขาหนึ่งได้
ในข้อใด แรงดัน 4.75 โวลต์ค่าที่เป็ นดิจิตอลจะเป็ น
ก. A5 ลอจิกใด
ข. B5 ก. 0
ค. C5 ข. 1
ง. D5 ค. High impedance
จ. E5 ง. Low impedance
3. ตัวเลข DE16 มีค่าเท่ากับเลขฐานสองในข้อใด จ. Unknown logic
ก. 1100 1100 7. หากอินพุตขาใดขาหนึ่งหรื อทั้งสองมีค่าเป็ น
ข. 1101 1011 ลอจิก 0 เอาต์พุตจะเป็ นลอจิก 0 เกตชนิดนั้น
ค. 1010 1110 คือชนิดใด
ง. 1011 1100 ก. AND gate
จ. 1101 1110 ข. OR gate
4. ตัวเลข 45 ซึ่งเป็ นเลขฐานสิ บเมื่อเป็ น ค. XOR gate
เลขฐานสองจะมีค่าเท่ากับข้อใด ง. NOT gate
ก. 101101 จ. NAND gate
ข. 110010 8. หากอินพุตขาใดขาหนึ่งหรื อทั้งสองมีค่าเป็ น
ค. 101010 ลอจิก 1 เอาต์พุตจะเป็ นลอจิก 1 เกตชนิดนั้น
ง. 100110 คือชนิดใด
จ. 101011 ก. AND gate
ข. OR gate
ค. XOR gate
หน่ วยที่ 1 ความรู ้เบื้องต้นเกี่ยวกับไมโครคอนโทรลเลอร์ 3
ง. NOT gate 13. จานวนพอร์ ตของไมโครคอนโทรลเลอร์ใน
จ. NAND gate ตระกูล MCS-51 (ที่มี 40 ขา) มีกี่พอร์ ต
9. ข้อใดเป็ นส่ วนประกอบของคอมพิวเตอร์ ที่มี ก. 1 พอร์ ต
หน้าที่แปลงพลังงานอื่น ๆ เป็ นไฟฟ้าที่เป็ น ข. 2 พอร์ ต
ระดับลอจิกดิจิตอลเพื่อส่ งให้กบั หน่วย ค. 4 พอร์ ต
ประมวลผลกลาง ง. 8 พอร์ ต
ก. อินพุต จ. 16 พอร์ ต
ข. เอาต์พุต 14. รอบการทางาน 1 Machine cycle ของ
ค. หน่วยความจา ไมโครคอนโทรลเลอร์ ตระกูล MCS-51 จะใช้
ง. หน่วยควบคุม สัญญาณนาฬิกาจานวนเท่าใด
จ. หน่วยประมวลผล ก. 1 Clock
10. ข้อใดเป็ นหน่วยความจาชนิดที่ตอ้ งใช้แสง ข. 4 Clock
UV ในการลบข้อมูล ค. 6 Clock
ก. PROM ง. 8 Clock
ข. EPROM จ. 12 Clock
ค. E2PROM 15. ไมโครคอนโทรลเลอร์ในตระกูล MCS-51
ง. Solar memory เบอร์ใดที่สามารถโปรแกรมตัวเองได้
จ. Light memory ก. 8052
11. บริ ษทั ใดเป็ นผูพ้ ฒั นาไมโครคอนโทรลเลอร์ ข. AT89C52
ในตระกูล MCS-51 ค. AT89S52
ก. AMD ง. AT87C52
ข. Atmel จ. AT87S52
ค. Intel 16. การรี เซตซีพียจู ะต้องรับลอจิกหนึ่งที่ขารี เซต
ง. Microchip เป็ นเวลาไม่นอ้ ยกว่าเท่าใด
จ. Phillips ก. 1 แมชชีนไซเคิล
12. ไมโครคอนโทรลเลอร์ เบอร์ ที่นกั ศึกษาใช้ ข. 2 แมชชีนไซเคิล
ทดลองซึ่ งขึ้นต้นด้วย AT89 เป็ นของบริ ษทั ใด ค. 4 แมชชีนไซเคิล
ก. AMD ง. 8 แมชชีนไซเคิล
ข. Atmel จ. 10 แมชชีนไซเคิล
ค. Intel
ง. Microchip
จ. Phillips
4 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
1.1 ระบบตัวเลขและรหัส
รศ. รัตนพร บ่อคา, ประวัตขิ องจานวนและตัวเลข, วารสารวิทยาศาสตร์ ฉบับที่ 1-2, หน้า 48.
2
หน่ วยที่ 1 ความรู ้เบื้องต้นเกี่ยวกับไมโครคอนโทรลเลอร์ 7
ตัวอย่าง การแปลงเลขฐาน 10 เป็ นเลขฐาน 2
โจทย์ จงแปลงค่า 4510 เป็ นเลขฐาน 2
วิธีทา
ผลลัพธ์ เศษ
45/2 = 22 1 บิตค่าต่าสุ ด (LSB: Least significant bit)
22/2 = 11 0
11/2 = 5 1
5/2 = 2 1
2/2 = 1 0
1/2 = 0 1 บิตค่าสู งสุ ด (MSB: Most significant bit)
คาตอบ 4510 = 1011012
ระบบเลขฐาน 16
ระบบเลขฐาน 16 (HEX: Hexadecimal) เป็ นเลข ตารางที่ 1-1 ความสัมพันธ์ของเลขฐาน
ที่ถูกเรี ยกใช้ในระบบคอมพิวเตอร์ซ่ ึ งใช้แทนตัวเลขที่เป็ น
เลขฐาน 10 เลขฐาน 2 เลขฐาน 16
เลขฐาน 2 เพื่อให้ง่ายต่อการใช้งานเนื่ องจากเลขฐาน 2 มี 0 0000 0
แค่ เลข 0 และ 1 เท่ า นั้น ดัง เช่ น 1000100101102 แต่ เมื่ อ 1
2
0001
0010
1
2
เขียนเป็ นเลขฐาน 16 จะได้เพียง 896H ในระบบเลขฐาน 3 0011 3
4 0100 4
2 ที่มีเพียงเลข 2 ตัวคือ 0 กับ 1 ในระบบเลขฐาน 10 มีเลข 5 0101 5
10 ตัวคือ 0, 1, 2, … 9 และในระบบเลขฐาน 16 มีตวั เลข 6
7
0110
0111
6
7
16 ตัว โดย 10 เลขแรกใช้เลขเดียวกับเลขฐาน 10 คือ 0 ถึง 8 1000 8
9 1001 9
9 ส่ วนที่เหลื ออี ก 6 ตัว จะใช้ตวั อักษรภาษาอังกฤษแทน 10 1010 A
11 1011 B
คือ A, B, C, D, E, Cและ F ดังตารางที่ 1-1 12 1100 C
13 1101 D
14 1110 E
15 1111 F
10 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
การแปลงเลขฐานระหว่างเลขฐาน 2 กับเลขฐาน 16
ในการแปลงเลขฐาน 2 ให้เป็ นเลขฐาน 16 สามารถทาได้โดยการแบ่งกลุ่มตัวเลขของเลขฐาน 2
เริ่ มจากขวาไปซ้ายเป็ นกลุ่ม ๆ ละ 4 บิต และใช้จากตารางแสดงความสัมพันธ์ของเลขฐานในการแปลง
เลขฐานได้โดยตรงดังตัวอย่าง
2. แปลงโดยตรงโดยรวมจากน้ าหนักของแต่ละหลักดังตัวอย่าง
ตัวอย่าง การแปลงเลขฐาน 16 ให้เป็ นเลขฐาน 10 โดยรวมจากน้ าหนักในแต่ละหลัก
โจทย์ จงแปลงค่า 6B2H เป็ นเลขฐาน 10
วิธีทา
น้ าหนักฐาน 16 162 161 160
6 B(11) 2
6B2H = (6×16 )+(11×161)+(2×160)
2
= 1536+176+2
คาตอบ = 171410
ระดับลอจิก
ระดับลอจิกที่ใช้งานในวงจรจริ ง สถานะของลอจิกดิจิตอล 2 สถานะจะแทนค่าด้วยแรงดันไฟฟ้า
คือ ลอจิก 0 แทนแรงดัน 0 โวลต์ และลอจิก 1 แทนแรงดัน 5 โวลต์ แต่ในเป็ นความจริ งอุปกรณ์ที่นามาใช้
งานจะสามารถรับรู ้ลอจิกได้กว้างพอสมควร โดยการรับรู ้ลอจิก 0 ก็ไม่จาเป็ นต้องมีค่าแรงดันเป็ น 0 โวลต์
โดยสามารถที่ จะรับรู ้ ค่าของแรงดันที่สูงกว่า 0 โวลต์ได้เล็กน้อย และในทานองเดี ยวกันลอจิก 1 ก็ไม่
จาเป็ นต้องเป็ น 5 โวลต์เช่นกัน ดังรู ปที่ 1-1
5
4
ระดับลอจิก 1
3
2
1
ระดับลอจิก 0
ลอจิกเกตของเลขฐาน 2
ระบบเลขฐาน 2 สามารถนาลอจิกผ่านวงจรต่าง ๆ เพื่อให้ได้ลอจิกที่เปลี่ยนไป โดยวงจรดังกล่าว
เรี ยกว่าวงจรลอจิกเกตโดยมีวงจรต่าง ๆ ดังนี้
1. แอนด์เกต (AND gate)
2. ออร์ เกต (OR gate)
3. เอ็กซ์คลูซีฟออร์ เกต (XOR gate)
4. แนนด์เกต (NAND gate)
5. นอร์ เกต (NOR gate)
6. น็อตเกต (NOT gate)
14 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
หน่วยความจา
ส่ วนรับข้อมูลหรื ออินพุต
เป็ นส่ วนหรื อวงจรที่ใช้เชื่ อมต่อคอมพิวเตอร์ กบั อุปกรณ์ ภายนอกโดยทาหน้าที่ แปลงสัญญาณ
จากอุป กรณ์ ภายนอกให้มีระดับ ลอจิ ก ที่เหมาะสมกับ วงจรภายใน เรี ย กทับ ศัพ ท์ว่าวงจรอิ นเตอร์ เฟช
(Interface circuit) เพื่อส่ งต่อให้หน่วยประมวลผลเพื่อใช้เป็ นข้อมูลประกอบการประมวลผลตามชุ ดคาสั่ง
ที่ได้เขียนขึ้น เช่นวงจรแป้ นพิมพ์เป็ นวงจรที่เปลี่ยนพลังงานกลจากการกดแป้ นพิมพ์เป็ นพลังงานไฟฟ้ า
ในระดับแรงดัน 5 โวลต์และ 0 โวลต์เพื่อเป็ นลอจิก 1 และลอจิก 0
ส่ วนประมวลผลกลาง
ส่ วนประมวลผลกลางเป็ นหัวใจของระบบคอมพิวเตอร์ โดยทาหน้าที่คิดประมวลผลซึ่ งมีส่วน
การประมวลผลทางคณิ ตศาสตร์ และลอจิก (Arithmetic and logic unit) หรื อที่ เรี ยกว่าทับศัพท์ว่า ALU
โดยการประมวลผลจะกระทาตามชุดคาสั่งที่เก็บไว้ในหน่วยความจา
โครงสร้างและสถาปัตยกรรมของไมโครคอนโทรลเลอร์เบอร์ AT89S52
กลุ่มขาพอร์ตเชื่อมต่อภายนอก
1. พอร์ ต 0 (Port 0) โดยตาแหน่ งของพอร์ ต 0 เป็ นพอร์ ตที่อยู่ดา้ นขวาเรี ยงลงมาตั้งแต่ขาที่ 39
ลงมาถึงขาที่ 32 ซึ่งขาที่ 39 จะเป็ นด้านความสาคัญต่า (LSB) โดยเป็ นขาพอร์ต 0 บิต 0 (P0.0)
พอร์ต 0 มีหน้าทั้งหมด 3 หน้าที่ (ในหนึ่งเวลาจะทาหน้าที่เดียว) คือ
- พอร์ตปกติคือเป็ นอินพุตหรื อเอาต์พุตพอร์ ต
- แอดเดรสบัส 8 บิตล่าง (A0-A7)
- ดาต้าบัส (D0-D7)
2. พอร์ ต 1 (Port 1) ตาแหน่งของพอร์ ต 1 อยูด่ า้ นบนซ้ายเริ่ มจากขาที่ 1 ลงมาซึ่ งขาที่ 1 เป็ นขา
พอร์ ต 1 บิตที่ 0 (P1.0) โดยปกติพอร์ ต 1 จะมีหน้าที่เดียวคือทาหน้าที่เป็ นพอร์ ตปกติคือเป็ น
อินพุตพอร์ตหรื อเอาต์พุตพอร์ต ยกเว้นบางเบอร์ที่สามารถโปรแกรมตัวเองได้จะนาหน้าด้วย
AT89S เช่น AT89S51, AT89S52 ซึ่ งใช้พอร์ ต 1 เป็ นพอร์ ตสาหรับเชื่ อมต่อกับคอมพิวเตอร์
เพื่อใช้ในการโปรแกรมตัวเอง (ISP: In system programming)
3. พอร์ ต 2 (Port 2) อยู่ดา้ นล่างขวาเริ่ มจากขาที่ 21 ขึ้นไป โดยขาที่ 21 เป็ นขาพอร์ ต 2 บิตที่ 0
(P2.0) พอร์ต 2 มี 2 หน้าที่คือ
- พอร์ตปกติ คือ เป็ นอินพุตหรื อเอาต์พุตพอร์ ต
- แอดเดรสบัส 8 บิตบน (A8-A15)
22 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
4. พอร์ ต 3 (Port 3) ตาแหน่ งของพอร์ ต 3 จะอยู่ดา้ นซ้ายเริ่ มจากขาที่ 10 โดยขาที่ 10 เป็ นขา
พอร์ต 3 บิต 0 (P3.0) หน้าที่ของพอร์ต 3 มี 2 หน้าที่ดว้ ยกันคือ
- พอร์ตปกติ คือ เป็ นอินพุตหรื อเอาต์พุตพอร์ ต
- ขาสัญญาณพิเศษ มีรายละเอียดดังนี้
- ขา P3.0 มีหน้าที่พิเศษคือเป็ นขารับข้อมูลเข้าทางพอร์ตอนุกรม (RxD)
- ขา P3.1 มีหน้าที่พิเศษคือเป็ นขาส่ งข้อมูลออกทางพอร์ ตอนุกรม (TxD)
- ขา P3.2 มีหน้าที่พิเศษคือเป็ นขารับสัญญาณขัดจังหวะ (INT0)
- ขา P3.3 มีหน้าที่พิเศษคือเป็ นขารับสัญญาณขัดจังหวะ (INT1)
- ขา P3.4 มีหน้าที่พิเศษคือเป็ นขารับสัญญาณเพื่อส่ งให้วงจร T0
- ขา P3.5 มีหน้าที่พิเศษคือเป็ นขารับสัญญาณเพื่อส่ งให้วงจร T1
- ขา P3.6 มีหน้าที่พิเศษคือเป็ นขาส่ งสัญญาณกระตุน้ การอ่านข้อมูลจาก
หน่วยความจาเก็บข้อมูลภายนอก (RD)
- ขา P3.7 มีหน้าที่พิเศษคือเป็ นขาส่ งสัญญาณกระตุน้ การเขียนข้อมูลลง
หน่วยความจาเก็บข้อมูลภายนอก (WR)
กลุ่มขาต่อสัญญาณนาฬิกา
5. XTAL1 และ XTAL2 เป็ นขาที่ 18 และ 19 ใช้ต่อกับคริ สตอลเพื่อเป็ นตัวกาหนดสัญญาณ
นาฬิกาเป็ นฐานในการประมวลผล โดยไมโครคอนโทรลเลอร์ จะใช้สัญญาณนาฬิกาจานวน
12 Clock ต่อการทางานใน 1 Machine cycle ของความถี่ของคริ สตอลที่นามาใช้งาน (เฉพาะ
เบอร์ ที่ใช้ในการเรี ยนในวิชานี้ ) โดยปกติมกั ใช้คริ สตอลความถี่ 11.0592 MHz (เหตุที่ใช้ค่า
นี้ ที่ มี ท ศนิ ย มเพื่ อประโยชน์ ใ นการใช้ง านการสื่ อ สารทางพอร์ ตอนุ ก รม เป็ นตัวก าหนด
อัตราเร็ วในการรับส่ งข้อมูล ซึ่ งจะกล่าวในรายละเอียดในบทการสื่ อสารทางพอร์ ตอนุกรม
ต่อไป)
ขารี เซต
6. รี เซต (Reset) เป็ นขาที่ 9 ไมโครคอนโทรลเลอร์ MCS-51 โดยไมโครคอนโทรลเลอร์ จะ
กลับไปเริ่ มทางานใหม่ในคาสั่งแรก (แอดเดรส 0000H) ทันทีเมื่อได้รับลอจิก 1 ที่ขารี เซต
เป็ นเวลาไม่นอ้ ยกว่า 2 Machine cycle หรื อมากกว่า 24 Clock
หน่ วยที่ 1 ความรู ้เบื้องต้นเกี่ยวกับไมโครคอนโทรลเลอร์ 23
กลุ่มขาควบคุม
7. PSEN (Program store enable) เป็ นขาที่ 29 ทาหน้าที่ส่งสัญญาณที่มีลอจิก 0 เพื่อกระตุน้ ให้
หน่ วยความจาที่ เก็บ โปรแกรมที่ ต่ออยู่ภายนอกตัวไมโครคอนโทรลเลอร์ ส่ง ข้อมู ล มายัง
ไมโครคอนโทรลเลอร์ หรื ออาจเรี ยกว่าเป็ นสัญญาณเพื่ออ่านคาสั่งจากหน่ วยความจาเก็บ
คาสั่งภายนอกตัวไมโครคอนโทรลเลอร์
8. ALE (Address latch enable) เป็ นขาที่ 30 ทาหน้าที่ส่งสัญญาณที่มีลอจิก 1 เพื่อกระตุน้ ให้
ดี ฟ ลิ บ ฟลอบ (D-FF) ท าการค้างค่ า แอดเดรสที่ ส่ ง มาจากพอร์ ต 0 เพื่ อให้ พอร์ ต 0 ไปทา
หน้าที่เป็ นดาต้าบัส
9. EA (External access) เป็ นขาที่ 31 ทาหน้าที่บงั คับให้ไมโครคอนโทรลเลอร์ เริ่ มอ่านคาสั่ง
จากหน่วยความจาเก็บโปรแกรมที่อยูภ่ ายในตัวหรื อจากหน่วยความจาเก็บโปรแกรมที่ต่ออยู่
ภายนอกตัวไมโครคอนโทรลเลอร์ โดยสามารถบังคับด้วยการป้อนลอจิกที่ขา EA ดังนี้
- ต่อกราวด์ (ลอจิก 0) จะเริ่ มอ่านคาสั่งจากหน่วยความจาเก็บโปรแกรมที่อยูภ่ ายนอก
- ต่อไฟเลี้ยง (ลอจิก 1) จะเริ่ มอ่านคาสั่งจากหน่วยความจาเก็บโปรแกรมที่อยูภ่ ายใน
กลุ่มขาไฟเลี้ยง
10. VCC ขาที่ 40 เป็ นขารับไฟเลี้ยงที่เป็ นไฟบวกขนาดแรงดัน 5 โวลต์
11. GND ขาที่ 20 เป็ นขารับไฟเลี้ยงที่เป็ นไฟกราวด์ขนาดแรงดัน 0 โวลต์
1.5 ส่ วนประกอบของวงจรไมโครคอนโทรลเลอร์
ส่ วนประกอบที่จะทาให้ไมโครคอนโทรลเลอร์ทางานได้ประกอบด้วย 4 วงจรคือ
- วงจรไฟเลี้ยง
- วงจรรี เซต
- วงจรสัญญาณนาฬิกา
- วงจรบังคับการอ่านคาสั่ง
วงจรไฟเลี้ยง
ไมโครคอนโทรลเลอร์ MCS-51 เป็ นไมโครคอนโทรลเลอร์ ที่ตอ้ งการไฟเลี้ ยงที่มีระดับแรงดัน
ใช้งาน 5 โวลต์ เช่นเดียวกับไอซี ทีทีแอล (TTL) วงจรไฟเลี้ยง 5 โวลต์มีหลากหลายแบบ ในการเรี ยนการ
สอนนี้ ใช้วงจรรักษาระดับแรงดันแบบเชิ งเส้น (Linear regulator) เนื่ องจากวงจรใช้งานไม่ซับซ้อนและ
ง่ายต่อการสร้ าง สาหรับการสร้ างมีสองแนวทางคือแบบใช้หม้อแปลงไฟฟ้ ากระแสสลับและแบบใช้
24 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
แหล่งจ่ายไฟตรงที่เป็ นดีซีอะแด็ปเตอร์ ภายนอก ตัวอย่างแบบแรกเป็ นการใช้หม้อแปลงขนาด 9-12 โวลต์
เอซี ต่อผ่านวงจรเรี ยงกระแสแบบบริ ดจ์แล้วใช้ไอซี รักษาระดับแรงดัน 5 โวลต์เบอร์ 7805 ดังรู ปที่ 1-6
วงจรรี เซต
ไมโครคอนโทรลเลอร์ MCS-51 เป็ นไมโครคอนโทรลเลอร์ ที่ ต้อ งการลอจิ ก 1 ในการรี เซต
เพราะฉะนั้นเมื่อต้องการรี เซตจะต้องป้ อนลอจิก 1 หรื อป้ อนไฟฟ้าแรงดัน 5 โวลต์เข้าที่ขารี เซต (ขาที่ 9)
เป็ นเวลาไม่นอ้ ยกว่า 2 แมชชีนไซเคิล
วงจรสัญญาณนาฬิกา
ไมโครคอนโทรลเลอร์ ตระกูล MCS-51 เป็ นไมโครคอนโทรลเลอร์ ที่มีวงจรสัญญาณนาฬิกาอยู่
ภายในเรี ยบร้ อยแล้ว การใช้งานเพียงแต่ผูใ้ ช้งานนาคริ สตอลความถี่ ที่ตอ้ งการมาต่อที่ขา XTAL1 และ
XTAL2 ก็สามารถใช้งานได้เลย (เหตุที่ตอ้ งให้ผใู ้ ช้งานหาคริ สตอลมาต่อเนื่องจาก ความต้องการความเร็ ว
ในการใช้งานไมโครคอนโทรลเลอร์ ของแต่ละคนจะมีความต่างกันนัน่ เอง) เนื่ องจากการต่อคริ สตอล
ในทางปฏิบตั ิจะสร้ างความถี่ลูกขึ้นมาที่เรี ยกว่าฮาร์ โมนิ ก ซึ่ งจะมีความถี่เป็ น 2, 3, 4, … เท่าของความถี่
พื้ น ฐานที่ ร ะบุ ไ ว้ ที่ ต ั ว ถั ง ของคริ สตอล ความถี่ ฮ าร์ โมนิ ก อาจส่ งผลรบกวนการท างานของ
ไมโครคอนโทรลเลอร์ ไ ด้ เพื่ อ ลดความถี่ ฮ าร์ โ มนิ ก นี้ สามารถท าได้โ ดยการต่ อ ตัว เก็ บ ประจุ ที่ มี ค่ า
30pF ±10pF เข้าที่ขา XTAL1 และ XTAL2 ลงกราวด์
วงจรบังคับการอ่านคาสั่ง
ไมโครคอนโทรลเลอร์ MCS-51 ขนาด 40 ขาสามารถต่ อหน่ ว ยความจาที่ ใ ช้เก็ บ โปรแกรม
เพิ่มเติ มภายนอกได้ สาหรั บการบังคับให้ไมโครคอนโทรลเลอร์ ให้เริ่ มอ่านคาสั่งหน่ วยความจาที่ เก็บ
โปรแกรมจากภายนอกหรื อภายในตัวสามารถทาได้โดยการกาหนดลอจิกที่การกาหนดลอจิ กที่ขา EA
เช่ นเมื่อทาการป้ อนลอจิก 0 ให้กบั ขา EAไมโครคอนโทรลเลอร์ จะเริ่ มอ่านคาสั่งจากหน่ วยความจาเก็บ
โปรแกรมภายนอก แต่ถ้าหากป้ อนลอจิ ก 1 ให้กบั ขา EA ไมโครคอนโทรลเลอร์ จะเริ่ มอ่านคาสั่งจาก
หน่วยความจาเก็บโปรแกรมภายในตัว
26 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
External External
Code Code
Internal
Code
EA=1 EA=0
1.6 สรุปสาระสาคัญ
ระบบตัว เลขหรื อ เลขฐานที่ ส าคัญ และจ าเป็ นที่ ต้องเรี ย นรู ้ เพื่ อ น าไปใช้ป ระกอบการเขี ย น
โปรแกรมไมโครคอนโทรลเลอร์ ห ลัก ๆ มี อ ยู่ด้ว ยกัน 3 เลขฐานคื อ เลขฐานสอง เลขฐานสิ บ และ
เลขฐานสิ บหกโดยเลยฐานสิ บหกจะใช้วิธีการจัดกลุ่มเลขฐานสอง 4 บิตเพื่อให้ได้เลขฐานสิ บหกหนึ่ ง
หลัก
ไมโครคอนโทรลเลอร์ ตระกู ล MCS-51 เป็ นไมโครคอนโทรลเลอร์ ขนาด 8 บิ ต แรกเริ่ ม ถู ก
พัฒนาขึ้นโดยบริ ษทั Intel สาหรับไมโครคอนโทรลเลอร์ที่ใช้ในการศึกษาเป็ นเบอร์ AT89S52 ของบริ ษทั
Atmel เป็ นไมโครคอนโทรลเลอร์ ที่มีหน่วยความจาเก็บโปรแกรมภายในตัวที่เป็ นแบบแฟลชซึ่ งสามารถ
ลบและเขียนทับได้จานวนหลายครั้งอีกทั้งสามารถโปรแกรมตัวเองผ่านทาง ISP ได้
วงจรประกอบเพื่อให้ไมโครคอนโทรลเลอร์ สามารถใช้งานได้มีดว้ ยกัน 4 วงจรคือ วงจรไฟเลี้ยง
ที่มีขนาดแรงดันคงที่ 5 โวลต์ วงจรรี เซตซึ่ ง สามารถรี เซตไมโครคอนโทรลเลอร์ ทุกครั้งที่มีการเริ่ มจ่าย
ไฟเลี้ ย ง วงจรสร้ า งสั ญ ญาณนาฬิ ก าภายนอก และวงจรบัง คับ การอ่ า นค าสั่ ง จากหน่ ว ยความจ าเก็ บ
โปรแกรม
หน่ วยที่ 1 ความรู ้เบื้องต้นเกี่ยวกับไมโครคอนโทรลเลอร์ 27
2. จงเขียนตารางความจริ งของวงจรเกตดังรู ป
I1 I2 Qa Qb Qc
0 0
0 1
1 0
1 1
3. จงเขียนส่ วนประกอบโครงสร้างพื้นฐานของระบบคอมพิวเตอร์
5. จงอธิบายการทางานของวงจรจ่ายไฟโดยใช้แหล่งจ่ายไฟตรงภายนอก
28 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
แบบทดสอบหลังเรียนหน่ วยที่ 1
คาสั่ ง ให้นกั ศึกษาเลือกคาตอบที่ถูกต้องที่สุดเพียงคาตอบเดียว
1. ตัวเลข 101001012 มีค่าเท่ากับเลขฐานสิ บหก 5. ตัวเลข 876543 ตัวเลข 8 มีน้ าหนักตัวเลขใน
ในข้อใด เลขฐานสิ บมีค่าเท่าใด
ก. 95 ก. 8×10
ข. A5 ข. 8×100
ค. B5 ค. 8×1000
ง. C5 ง. 8×10000
จ. D5 จ. 8×100000
2. ตัวเลข 1001012 มีค่าเท่ากับเลขฐานสิ บในข้อ 6. หากวัดแรงดันที่ขาไอซี (TTL) ขาหนึ่งได้
ใด แรงดัน 4.75 โวลต์ค่าที่เป็ นดิจิตอลจะเป็ น
ก. 27 ลอจิกใด
ข. 37 ก. High impedance
ค. 47 ข. Low impedance
ง. 57 ค. Unknown logic
จ. 67 ง. 0
3. ตัวเลข 45 ซึ่งเป็ นเลขฐานสิ บเมื่อเป็ น จ. 1
เลขฐานสองจะมีค่าเท่ากับข้อใด 7. หากอินพุตขาใดขาหนึ่งหรื อทั้งสองมีค่าเป็ น
ก. 101000 ลอจิก 1 เอาต์พุตจะเป็ นลอจิก 1 เกตชนิดนั้น
ข. 101001 คือชนิดใด
ค. 101101 ก. AND gate
ง. 101111 ข. OR gate
จ. 101010 ค. XOR gate
4. ตัวเลข DE16 มีค่าเท่ากับเลขฐานสองในข้อใด ง. NOT gate
ก. 1100 1100 จ. NAND gate
ข. 1101 1011 8. หากอินพุตขาใดขาหนึ่งหรื อทั้งสองมีค่าเป็ น
ค. 1101 1110 ลอจิก 0 เอาต์พุตจะเป็ นลอจิก 0 เกตชนิดนั้น
ง. 1010 1110 คือชนิดใด
จ. 1011 1100 ก. AND gate
ข. OR gate
ค. XOR gate
หน่ วยที่ 1 ความรู ้เบื้องต้นเกี่ยวกับไมโครคอนโทรลเลอร์ 29
ง. NOT gate 13. จานวนพอร์ ตของไมโครคอนโทรลเลอร์ใน
จ. NAND gate ตระกูล MCS-51 (ที่มี 40 ขา) มีกี่พอร์ ต
9. ข้อใดเป็ นหน่วยความจาชนิดที่ตอ้ งใช้แสง ก. 2 พอร์ ต
UV ในการลบข้อมูล ข. 4 พอร์ ต
ก. PROM ค. 8 พอร์ ต
ข. EPROM ง. 16 พอร์ ต
ค. E2PROM จ. 32 พอร์ ต
ง. Solar memory 14. รอบการทางาน 1 Machine cycle ของ
จ. Light memory ไมโครคอนโทรลเลอร์ ตระกูล MCS-51 จะใช้
10. ข้อใดเป็ นส่ วนประกอบของคอมพิวเตอร์ ที่มี สัญญาณนาฬิกาจานวนเท่าใด
หน้าที่แปลงพลังงานอื่น ๆ เป็ นไฟฟ้าที่เป็ น ก. 1 Clock
ระดับลอจิกดิจิตอลเพื่อส่ งให้กบั หน่วย ข. 6 Clock
ประมวลผลกลาง ค. 12 Clock
ก. อินพุต ง. 18 Clock
ข. เอาต์พุต จ. 24 Clock
ค. หน่วยความจา 15. ไมโครคอนโทรลเลอร์ในตระกูล MCS-51
ง. หน่วยควบคุม เบอร์ใดที่สามารถโปรแกรมตัวเองได้
จ. หน่วยประมวลผล ก. 8052
11. ไมโครคอนโทรลเลอร์ เบอร์ ที่นกั ศึกษาใช้ ข. AT89S52
ทดลองซึ่ งขึ้นต้นด้วย AT89 เป็ นของบริ ษทั ใด ค. AT89C52
ก. Intel ง. AT87C52
ข. Microchip จ. AT87S52
ค. Phillips 16. การรี เซตซีพียจู ะต้องรับลอจิกหนึ่งที่ขารี เซต
ง. AMD เป็ นเวลาไม่นอ้ ยกว่าเท่าใด
จ. Atmel ก. 2 แมชชีนไซเคิล
12. บริ ษทั ใดเป็ นผูพ้ ฒั นาไมโครคอนโทรลเลอร์ ข. 4 แมชชีนไซเคิล
ในตระกูล MCS-51 ค. 6 แมชชีนไซเคิล
ก. AMD ง. 8 แมชชีนไซเคิล
ข. Atmel จ. 10 แมชชีนไซเคิล
ค. Intel
ง. Microchip
จ. Phillips
30 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
เฉลยแบบทดสอบก่อนเรี ยน
1. ค 2. ก 3. จ 4. ก 5. ง 6. ข 7. ก 8. ข 9. ก 10. ข
11. ค 12. ข 13. ค 14. จ 15. ค 16. ข 17. ง 18. ค 19. ง 20. ง
เฉลยแบบทดสอบหลังเรี ยน
1. ข 2. ข 3. ค 4. ค 5. จ 6. จ 7. ข 8. ก 9. ข 10. ก
11. จ 12. ค 13. ข 14. ค 15. ข 16. ก 17. ง 18. ก 19. ค 20. ค
หน่ วยที่ 2
รีจิสเตอร์ และหน่ วยความจา
หัวข้อเรื่ อง
2.1 หน่วยความจาภายใน
2.2 รี จิสเตอร์
2.3 การต่อหน่วยความจาภายนอก
สาระสาคัญ
หน่ วยความจาภายในของไมโครคอนโทรลเลอร์ มี ท้ งั ใช้ง านทัว่ ไปและมี หน้า ที่ เฉพาะจึ ง มี
ชื่ อเรี ย กอี ก อย่า งหนึ่ ง ว่า รี จิส เตอร์ (เฉพาะที่ มี หน้าที่ พิ เศษ) ไมโครคอนโทรลเลอร์ ส ามารถติ ดต่ อกับ
หน่วยความจาได้ท้ งั ภายนอกภายในทั้งที่ใช้เก็บโปรแกรมหรื อเก็บข้อมูล
สมรรถนะประจาหน่วยการเรี ยนรู ้
แสดงความรู ้ เกี่ ย วกับ หน่ วยความจาภายในและ รี จิส เตอร์ การการต่ อใช้ง านหน่ ว ยความจ า
เพิ่มเติมภายนอกแบบต่าง ๆ
จุดประสงค์การเรี ยนรู ้
จุดประสงค์ ทวั่ ไป
1. เพื่อให้มีความรู ้เกี่ยวกับหน่วยความจาภายใน
2. เพื่อให้มีความรู ้เกี่ยวกับรี จิสเตอร์
3. เพื่อให้มีความรู ้เกี่ยวกับการต่อหน่วยความจาภายนอก
จุดประสงค์ เชิ งพฤติกรรม
1. บอกรายละเอียดเกี่ยวกับหน่วยความจาภายในได้
2. บอกรายละเอียดเกี่ยวกับรี จิสเตอร์ ได้
3. บอกการต่อหน่วยความจาภายนอกได้
4. ทาแบบฝึ กหัดเสร็ จทันเวลาและทาแบบทดสอบผ่านเกณฑ์ที่กาหนด
32 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
แบบทดสอบก่อนเรียนหน่ วยที่ 2
คาสั่ ง ให้นกั ศึกษาเลือกคาตอบที่ถูกต้องที่สุดเพียงคาตอบเดียว
1. หน่ ว ยความจ าของไมโครคอนโทรลเลอร์ 5. หน่ ว ยความจ าภายในส าหรั บ เก็ บ ข้ อ มู ล
ตระกูล MCS-51 แบ่งตามลักษณะการใช้งาน ส่ วนล่าง (Lower) มีขนาดความจุเท่าใด
ได้กี่ส่วน ก. 8 ไบต์
ก. 1 ส่ วน ข. 64 ไบต์
ข. 2 ส่ วน ค. 128 ไบต์
ค. 3 ส่ วน ง. 256 ไบต์
ง. 4 ส่ วน จ. 512 ไบต์
จ. 5 ส่ วน 6. แอดเดรสใดคือแอดเดรสแรกของ
2. การบั ง คั บ การใช้ ง านหน่ ว ยความจ าเก็ บ หน่วยความจาใช้งานพิเศษ
โปรแกรมกาหนดได้จากขาใด ก. 00H
ก. ขา PSEN ข. 20H
ข. ขา ALE ค. 40H
ค. ขา EA ง. A0H
ง. ขา RD จ. 80H
จ. ขา WR 7. แอดเดรสใดคือแอดเดรสแรกของ
3. ข้อใดคื อขนาดสู งสุ ดของหน่ วยความจาเก็บ หน่วยความจาใช้งานทัว่ ไปส่ วนบน (Upper)
โปรแกรมที่ MCS-51 อ้างถึงได้ ก. 00H
ก. 4 กิโลไบต์ ข. 20H
ข. 8 กิโลไบต์ ค. 40H
ค. 32 กิโลไบต์ ง. 80H
ง. 16 กิโลไบต์ จ. A0H
จ. 64 กิโลไบต์ 8. รี จิสเตอร์ ใช้งานทัว่ ไปมีท้ งั หมดกี่ตวั
4. หน่ วยความจาภายในสาหรั บเก็บข้อมู ลแบ่ง ก. 1 ตัว
ตามหน้าที่ได้กี่ส่วน ข. 2 ตัว
ก. 1 ส่ วน ค. 4 ตัว
ข. 2 ส่ วน ง. 6 ตัว
ค. 3 ส่ วน จ. 8 ตัว
ง. 4 ส่ วน
จ. 5 ส่ วน
หน่ วยที่ 2 รี จิสเตอร์และหน่วยความจา 33
9. รี จิ ส เตอร์ ใ ช้ ง านทั่ว ไปเมื่ อ เริ่ มต้น จะอยู่ ที่ 13. การอ่านค่าจากพอร์ ตจะต้องทาอย่างไร
แอดเดรสใด ก. อ่านค่าผ่านรี จิสเตอร์ A
ก. 00H-02H ข. อ่านค่าจากของพอร์ ตนั้น ๆ โดยตรง
ข. 00H-04H ค. อ่านค่าผ่านรี จิสเตอร์ B
ค. 00H-06H ง. อ่านค่าจากรี จิสเตอร์ ของพอร์ ตนั้น ๆ
ง. 00H-07H จ. อ่านค่าผ่านรี จิสเตอร์ PSW
จ. 00H-08H 14. ข้อ ใดคื อ หน้ า ที่ ห ลัก ของรี จิ ส เตอร์ A ของ
10. ผู ้ใ ช้ ส ามารถเปลี่ ย นช่ ว งที่ อ ยู่ (Bank) ของ ไมโครคอนโทรลเลอร์
รี จิสเตอร์ ใช้งานทัว่ ไปได้กี่ตาแหน่ง ก. เป็ นรี จิสเตอร์ กาหนดการทางานของ
ก. 2 ตาแหน่ง ไมโครคอนโทรลเลอร์
ข. 4 ตาแหน่ง ข. เป็ นรี จิสเตอร์ ส่งค่าออกพอร์ ต
ค. 6 ตาแหน่ง ค. เป็ นรี จิสเตอร์ กาหนดการทางานของ
ง. 8 ตาแหน่ง พอร์ต
จ. 12 ตาแหน่ง ง. เป็ นรี จิสเตอร์ อ่านค่าจากพอร์ ต
11. หน่วยความจาที่สามารถเข้าถึงได้ในระดับบิต จ. เป็ นรี จิ ส เตอร์ เ ก็ บ ผลลัพ ธ์ ข องการ
ที่อยูใ่ นหน่วยความจาใช้งานทัว่ ไปอยู่ในช่วง ประมวลผล
แอดเดรสใด 15. ข้อ ใดคื อ หน้า ที่ ห ลัก ของรี จิ ส เตอร์ B ของ
ก. 20H-2FH ไมโครคอนโทรลเลอร์ MCS-51
ข. 30H-3FH ก. เป็ นรี จิสเตอร์ ส่งค่าออกพอร์ ต
ค. 50H-5FH ข. เป็ นรี จิสเตอร์ ที่ กระทาคาสั่ง คู ณและ
ง. 40H-4FH คาสั่งหาร
จ. 60H-6FH ค. เป็ นรี จิสเตอร์ กาหนดการทางานของ
12. การทาให้พอร์ ตมีค่าลอจิกตามต้องการจะต้อง ไมโครคอนโทรลเลอร์
ทาอย่างไร ง. เป็ นรี จิสเตอร์ อ่านค่าจากพอร์ ต
ก. กาหนดค่าลงในพอร์ ตนั้น ๆ จ. เป็ นรี จิสเตอร์ กาหนดการทางานของ
ข. เซตค่าลงในรี จิสเตอร์ ของพอร์ ตนั้น ๆ พอร์ต
ค. กาหนดค่าลงในรี จิสเตอร์ ของพอร์ ตนั้น ๆ
ง. เซตค่าลงในพอร์ ตนั้น ๆ
จ. เคลียร์ ค่าลงในรี จิสเตอร์ ของพอร์ ตนั้น ๆ
34 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
2.2 รีจิสเตอร์
รี จิสเตอร์ (Register) เป็ นหน่วยความจาภายในแอดเดรสใดแอดเดรสหนึ่ งที่ถูกจองเพื่อให้ทางาน
อย่างใดอย่างหนึ่ ง ดังนั้นรี จิส เตอร์ ก็มีหมายเลขแอดเดรส ในการใช้งานสามารถระบุ เป็ นแอดเดรสก็
สามารถใช้งานได้ โดยรี จิสเตอร์มี 2 ประเภทแบ่งตามการใช้งานคือ
- รี จิสเตอร์ ใช้งานทัว่ ไป
- รี จิสเตอร์ใช้งานพิเศษ
จากรู ปถ้ า ค่ า ภายในรี จิ ส เตอร์ P1 มี ค่ า เท่ า กั บ 55H จะส่ งผลให้ LED ติ ด ดั บ สลั บ กั น
(55H=010101012 ลอจิ ก 1 LED รับ แรงดันไฟบวกที่ออกจากขาพอร์ ตท าให้ติด สว่าง) ค าสั่ง ที่ ทาให้
รี จิสเตอร์ P1 มีค่าเป็ น 55H ได้น้ นั สามารถทาได้โดยใช้คาสั่ง
MOV 90H,#55H (ภาษาแอสเซมบลี)
P1=0x55; (ภาษาซี)
รี จิสเตอร์ B
รี จิส เตอร์ B เป็ นรี จิสเตอร์ ข นาด 8 บิต อยู่ใ นหน่ วยความจาใช้งานพิ เศษแอดเดรส F0H โดย
ทางานหน้าที่หลัก คือเป็ นรี จิสเตอร์ ที่กระทาคาสั่งคูณและคาสั่งหาร โดยใช้งานร่ วมกับรี จิสเตอร์ A แต่ถา้
ต้องการใช้งานอื่นที่ไม่เกี่ยวข้องกับการคูณหรื อหาร ก็สามารถทาได้เหมือนกันกับหน่ วยความจาใช้งาน
ทัว่ ไป แต่การเข้าถึงข้อมูลจะต้องใช้การเข้าถึงแบบโดยตรงเท่านั้น
รี จิส เตอร์ SP เป็ นรี จิสเตอร์ ข นาด 8 บิ ตอยู่ในหน่ วยความจาใช้งานพิ เศษแอดเดรส 81H โดย
ทางานเป็ นรี จิสเตอร์ ช้ ี ตาแหน่ งหน่ วยความจาแบบสแต็ก มีค่าเริ่ มต้นหลังจากการรี เซตหรื อเริ่ มทางาน
เป็ น 07H ซึ่ งหน่ วยความจาสแต็กเป็ นการจองพื้นที่ใช้งานในหน่ วยความจาใช้งานทัว่ ไปส่ วนล่าง โดย
ตาแหน่ งของหน่ วยความจาแบบสแต็กเริ่ มที่แอดเดรส 07H หน่ วยความจาสแต็กจะถูกเรี ยกใช้งานเมื่อมี
ก า ร เ รี ย ก ใ ช้ ค า สั่ ง PUSH, POP, ACALL, LCALL, RET เ ป็ น ต้ น ( ค า สั่ ง ACALL, LCALL
ไมโครคอนโทรลเลอร์ จะนาค่าแอดเดรสของโปรแกรมหลักฝากไว้ที่หน่ วยจาสแต็กเพื่อไปทางานใน
โปรแกรมย่อย และเมื่อจบโปรแกรมย่อยจะใช้คาสั่ง RET เพื่อเรี ยกค่าแอดเดรสโปรแกรมหลักกลับมาใช้
งานต่อ ซึ่ งขบวนการนี้เป็ นไปโดยอัตโนมัติ)
23 4A
1E 8F 6A 4A
4A
1A 35 35 35
รี จิสเตอร์ DPTR เป็ นรี จิสเตอร์ขนาด16 บิต เหตุที่เป็ น 16 บิต เนื่ องจากประกอบขึ้นจากรี จิสเตอร์
8 บิต 2 ตัวคือ DPH และ DPLโดยทั้ง 2 ตัวนี้ อยู่ในหน่วยความจาใช้งานพิเศษ ซึ่ งรี จิสเตอร์ DPH จะอยู่ที่
แอดเดรส 83H และรี จิสเตอร์ DPL จะอยูท่ ี่แอดเดรส 82H หน้าที่ของรี จิสเตอร์ DPTR คือเป็ นตัวชี้ตาแหน่ง
หน่วยความจาเก็บข้อมูลที่ต่ออยูภ่ ายนอกเพื่อนาข้อมูลไปเก็บหรื อนาข้อมูลออกมาใช้งาน และสามารถใช้
ชี้ ตาแหน่ งหน่ วยความจาเก็บโปรแกรมเพื่อนาข้อมูลมาใช้งาน ที่เรี ยกว่าการนาข้อมูลมาแบบเปิ ดตาราง
โดยใช้งานในโหมด Indexed addressing ซึ่ งจะได้กล่าวต่อไป
รี จิสเตอร์ PSW เป็ นรี จิสเตอร์ ขนาด 8 บิ ต ซึ่ งอยู่ในหน่ วยความจาใช้งานพิ เศษแอดเดรส D0H
โดยทางานเป็ นรี จิสเตอร์ ที่สามารถเข้าถึงได้ในระดับบิต ซึ่ งแต่ละบิตของรี จิสเตอร์ มีหน้าที่ในการควบคุม
แตกต่างกันไป ดังนี้
CY AC F0 RS1 RS0 OV - P
การติดต่อกับหน่วยความจาเก็บโปรแกรมภายนอก
ไมโครคอนโทรลเลอร์ MCS-51 สามารถติ ด ต่ อ หน่ ว ยความจ าเก็ บ โปรแกรมที่ ต่ อ เพิ่ ม เติ ม
ภายนอกเพื่ อ ใช้ ง านได้ ในกรณี ที่ ไ ม่ ต้ อ งการใช้ ง านหน่ ว ยความจ าเก็ บ โปรแกรมภายใน หรื อ
หน่วยความจาเก็บโปรแกรมภายในไม่พอใช้งาน โดยไมโครคอนโทรลเลอร์ สามารถติดต่อหน่วยความจา
เก็บโปรแกรมได้สูงสุ ด 64 กิ โลไบต์ เนื่ องจากมีขาแอดเดรส 16 ขา (216=65536=64 กิ โลไบต์) ซึ่ งใช้งาน
พอร์ต 0 และพอร์ต 2 เป็ นพอร์ ตที่ส่งค่าแอดเดรสให้กบั หน่วยความจา และใช้พอร์ ต 0 ทาหน้าที่เป็ นดาต้า
บัส (Data Bus) โดยใช้วธิ ีการทางานคนละเวลา (Multiplex) ระหว่างส่ งค่าแอดเดรสกับการรับข้อมูล
การติดต่อกับหน่วยความจาเก็บข้อมูลภายนอก
ไมโครคอนโทรลเลอร์ MCS-51 สามารถติดต่อหน่วยความจาที่เก็บข้อมูลภายนอกเพื่อใช้งานได้
ในกรณี ที่หน่ วยความจาเก็บข้อมูลภายในไม่เพียงพอต่อการใช้งาน โดยไมโครคอนโทรลเลอร์ สามารถ
ติดต่อหน่ วยความจาเก็บข้อมูลภายนอกได้สูงสุ ด 64 กิ โลไบต์ ซึ่ งเป็ นคนละส่ วนกับหน่ วยความจาเก็บ
โปรแกรมเนื่องจากใช้สัญญาณกระตุน้ การอ่านข้อมูลแยกกัน โดยมีคาสั่งที่ใช้ในการอ่านและเขียนข้อมูล
ลงหน่ ว ยความจาส าหรั บ เก็ บ ข้อ มู ล ภายนอกโดยเฉพาะ ส าหรั บ การติ ดต่ อ หน่ วยความจ าเก็ บ ข้อมู ล
ภายนอกจะใช้ขาและพอร์ตเพื่อเชื่อมต่อดังนี้
- พอร์ต 0 เป็ นแอดเดรสบัสไบต์ต่า (A0-A7) และดาต้าบัส (D0-D7)
- พอร์ต 2 เป็ นแอดเดรสบัสไบต์สูง (A8-A15)
- ขา ALE เพื่อค้างค่าแอดเดรสไบต์ต่าที่มาจากพอร์ ต 0 เพื่อให้พอร์ ต 0 ไปทาหน้าที่ดาต้าบัส
- ขา RD เพื่ออ่านข้อมูลเข้าสู่ ไมโครคอนโทรลเลอร์
- ขา WR เพื่อเขียนข้อมูลจากไมโครคอนโทรลเลอร์ ลงหน่วยความจา
หน่ วยที่ 2 รี จิสเตอร์และหน่วยความจา 45
สาหรับไมโครคอนโทรลเลอร์ เบอร์ P89V51RD2 จะมีหน่วยความจาสาหรับเก็บข้อมูลภายนอก
แต่ถูกบรรจุเข้าไว้ในตัวไมโครคอนโทรลเลอร์ แล้วซึ่งขนาด 1 กิโลไบต์
2.4 สรุปสาระสาคัญ
ไมโครคอนโทรลเลอร์ ตระกู ล MCS-51 มี หน่ วยความจาภายในเพื่ อใช้ส าหรั บ เก็ บ ข้อมู ล ใน
ระหว่างการประมวลผลอยู่ 2 ส่ วนแบ่งตามหน้าที่คือ หน่ วยความจาใช้งานทัว่ ไปและหน่ วยความจาใช้
งานเฉพาะ โดยที่ หน่ วยความจาใช้ง านทัว่ ไปยัง แบ่ง ออกได้อีก 2 ส่ วนคื อส่ วนที่ สามารถเข้า ถึ งได้ท้ งั
ทางตรงและทางอ้อมกับส่ วนที่ เข้าที่ ไ ด้ในทางอ้อมเท่า นั้น สาหรั บหน่ วยความจาที่ ใช้งานเฉพาะเป็ น
บริ เวณที่อยูข่ องรี จิสเตอร์ สาคัญ ๆ ที่มีหน้าที่ต่าง ๆ ที่ใช้ในการทางานของไมโครคอนโทรลเลอร์ โดยใน
ส่ วนนี้การเข้าถึงจะต้องเข้าถึงในแบบทางตรงเท่านั้น
ไมโครคอนโทรลเลอร์ ตระกูล MCS-51 สามารถต่อหน่ วยความจาภายนอกเพิ่มเติมได้ท้ งั ที่เป็ น
ชนิดเก็บโปรแกรมและชนิดเก็บข้อมูล การที่จะต่อหน่วยความจาภายนอกจะทาในกรณี ที่หน่วยความจาที่
มีอยูภ่ ายในไม่เพียงพอที่จะใช้งานหรื อไม่มีให้ใช้งานในบางเบอร์ สาหรับการต่อหน่วยความจาภายนอก
จาเป็ นต้องใช้พอร์ต 0 และพอร์ ต 2 ในการติดต่อสื่ อสารกับหน่วยความจาภายนอกโดยใช้เป็ นทั้ง Address
bus และ Data bus ขนาดของหน่ วยความจาสามารถดู ได้จากขาแอดเดรสคานวณได้จาก 2จานวนขา เช่ น
หน่ วยความจามี ขาแอดเดรส 13 ขาคื อมี ขาตั้งแต่ A0-A12 ขนาดของหน่ วยความจาจะเท่ากับ 213=8192
หรื อ 8 กิโลไบต์
หน่ วยที่ 2 รี จิสเตอร์และหน่วยความจา 47
2. หน่วยความจาเก็บข้อมูลภายในแต่ละส่ วนมีช่วงแอดเดรสตั้งแต่เท่าใดถึงเท่าใด
3. หน่วยความจาเก็บข้อมูลภายในใช้งานทัว่ ไปที่สามารถเข้าถึงได้ในระดับบิตมีช่วงแอดเดรส
เท่าใดและเป็ นบิตแอดเดรสเท่าได
6. รี จิ ส เตอร์ ใ ช้ง านทั่ว ไป (Rn) สามารถก าหนดให้ ใ ช้ง านได้กี่ ช่ ว ง (Bank) ในแต่ ล ะช่ ว งอยู่ที่
แอดเดรสใดบ้าง และค่าเริ่ มต้นรี จิสเตอร์ ใช้งานทัว่ ไป (Rn) จะอยูใ่ นช่วง (Bank) ใด
8. หากต้องการต่อหน่วยความจาภายนอกขนาด 16 กิโลไบต์จะต้องแอดเดรสกี่ขาโดยแต่ละขามา
จากพอร์ ตใดบิตใดบ้าง
48 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
9. จงเขียนผังวงจรการเชื่ อมต่อกับหน่วยความจาภายนอกที่เป็ นชนิ ด RAM เบอร์ W24129A ขนาด
16 กิโลไบต์กบั ไมโครคอนโทรลเลอร์ MCS-51
หน่ วยที่ 2 รี จิสเตอร์และหน่วยความจา 49
แบบทดสอบหลังเรียนหน่ วยที่ 2
คาสั่ ง ให้นกั ศึกษาเลือกคาตอบที่ถูกต้องที่สุดเพียงคาตอบเดียว
1. แอดเดรสใดคือแอดเดรสแรกของ 5. หน่วยความจาภายในสาหรับเก็บข้อมูลแบ่ง
หน่วยความจาใช้งานทัว่ ไปส่ วนบน (Upper) ตามหน้าที่ได้กี่ส่วน
ก. 00H ก. 1 ส่ วน
ข. 20H ข. 2 ส่ วน
ค. 40H ค. 3 ส่ วน
ง. 80H ง. 4 ส่ วน
จ. A0H จ. 5 ส่ วน
2. แอดเดรสใดคือแอดเดรสแรกของ 6. ข้อใดคือขนาดสู งสุ ดของหน่วยความจาเก็บ
หน่วยความจาใช้งานพิเศษ โปรแกรมที่ MCS-51 อ้างถึงได้
ก. 00H ก. 4 กิโลไบต์
ข. 20H ข. 8 กิโลไบต์
ค. 40H ค. 16 กิโลไบต์
ง. A0H ง. 32 กิโลไบต์
จ. 80H จ. 64 กิโลไบต์
3. การบังคับการใช้งานหน่วยความจาเก็บ 7. หน่วยความจาภายในสาหรับเก็บข้อมูล
โปรแกรมกาหนดได้จากขาใด ส่ วนล่าง (Lower) มีขนาดความจุเท่าใด
ก. ขา PSEN ก. 8 ไบต์
ข. ขา ALE ข. 64 ไบต์
ค. ขา EA ค. 128 ไบต์
ง. ขา RD ง. 256 ไบต์
จ. ขา WR จ. 512 ไบต์
4. หน่วยความจาของไมโครคอนโทรลเลอร์ 8. หน่วยความจาที่สามารถเข้าถึงได้ในระดับบิต
ตระกูล MCS-51 แบ่งตามลักษณะการใช้งาน ที่อยูใ่ นหน่วยความจาใช้งานทัว่ ไปอยูใ่ นช่วง
ได้กี่ส่วน แอดเดรสใด
ก. 1 ส่ วน ก. 20H-2FH
ข. 2 ส่ วน ข. 30H-3FH
ค. 3 ส่ วน ค. 50H-5FH
ง. 4 ส่ วน ง. 40H-4FH
จ. 5 ส่ วน จ. 60H-6FH
50 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
เฉลยแบบทดสอบก่อนเรี ยน
1. ข 2. ก 3. จ 4. ข 5. ค 6. จ 7. ง 8. จ 9. จ 10. ข
11. ก 12. ค 13. ง 14. จ 15. ข 16. ค 17. ข 18. ก 19. ง 20. ง
เฉลยแบบทดสอบหลังเรี ยน
1. ง 2. จ 3. ก 4. ข 5. ข 6. จ 7. ค 8. ก 9. จ 10. จ
11. ข 12. ง 13. จ 14. ข 15. ง 16. ก 17. ข 18. ง 19. ก 20. ง
หน่ วยที่ 3
ชุ ดคำสั่ งและวงจรไทเมอร์ เคำน์ เตอร์
หัวข้อเรื่ อง
3.1 ชุดคำสั่ง (Instruction set)
3.2 วงจรไทเมอร์ /เคำน์เตอร์ (Timer/Counter)
สำระสำคัญ
ชุ ดคำสั่งของไมโครคอนโทรลเลอร์ MCS-51 เป็ นภำษำแอสเซมบลี ซ่ ึ งเป็ นภำษำที่ใกล้เคียงกับ
ภำษำเครื่ องมำกที่สุดมีโหมดในกำรเข้ำถึงหน่วยควำมจำ 5 โหมด วงจรไทเมอร์ /เคำน์เตอร์ เป็ นวงจรที่มี
บรรจุ อ ยู่ ภ ำยในไมโครคอนโทรลเลอร์ มี ก ำรท ำงำนอิ ส ระแยกจำกหน่ ว ยประมวลผลกลำงของ
ไมโครคอนโทรลเลอร์ กำรใช้งำนวงจรไทเมอร์ /เคำน์เตอร์ มีโหมดกำรใช้งำนทั้งหมด 4 โหมด จำนวน
วงจรไทเมอร์จะมี 2 วงจรหรื อ 3 วงจรขึ้นอยูก่ บั เบอร์ ที่เลือกใช้งำน
สมรรถนะประจำหน่วยกำรเรี ยนรู ้
แสดงควำมรู ้เกี่ยวกับชุ ดคำสั่งของไมโครคอนโทรลเลอร์ MCS-51 และกำรใช้งำนวงจรไทเมอร์
เคำน์เตอร์ ในโหมดต่ำง ๆ
จุดประสงค์กำรเรี ยนรู ้
จุดประสงค์ ทวั่ ไป
1. เพื่อให้มีควำมรู ้เกี่ยวกับชุดคำสั่ง (Instruction set)
2. เพื่อให้มีควำมรู ้เกี่ยวกับวงจรไทเมอร์ /เคำน์เตอร์ (Timer/Counter)
จุดประสงค์ เชิ งพฤติกรรม
1. บอกเกี่ยวกับ ชุดคำสั่ง (Instruction set)ได้
2. บอกเกี่ยวกับวงจรไทเมอร์ /เคำน์เตอร์ (Timer/Counter)ได้
3. ทำแบบฝึ กหัดเสร็ จทันเวลำและทำแบบทดสอบผ่ำนเกณฑ์ที่กำหนด
54 เอกสำรประกอบกำรสอนวิชำไมโครคอนโทรลเลอร์
แบบทดสอบก่อนเรียนหน่ วยที่ 3
คำสั่ ง ให้นกั ศึกษำเลือกคำตอบที่ถูกต้องที่สุดเพียงคำตอบเดียว
1. ชุ ด ค ำสั่ ง โหมดกำรอ้ำ งข้อ มู ล ของไมโคร- 5. หน่ วยควำมจำส่ ว นใดใช้ก ำรอ้ำ งแอดเดรส
คอนโทรลเลอร์ตระกูล MCS-51 มีกี่โหมด แบบโดยตรงไม่ได้
ก. 1 โหมด ก. หน่วยควำมจำใช้งำนทัว่ ไปช่วงบน (Upper)
ข. 2 โหมด ข. หน่วยควำมจำใช้งำนทัว่ ไปช่วงล่ำง (Lower)
ค. 3 โหมด ค. หน่วยควำมจำใช้งำนทัว่ ไปช่วงซ้ำย (Left)
ง. 4 โหมด ง. หน่วยควำมจำใช้งำนทัว่ ไปช่วงขวำ (Right)
จ. 5 โหมด จ. หน่วยควำมจำใช้งำนทัว่ ไปช่วงกลำง (Mid)
2. ชุดคำสั่งโหมดกำรกำหนดค่ำลงรี จิสเตอร์ 6. กำรเข้ำถึงข้อมูลในหน่วยควำมจำใช้งำน
โดยตรงคือโหมดใด ทัว่ ไปช่วงบน (Upper) ต้องใช้โหมดใด
ก. Register addressing mode ก. Register addressing mode
ข. Immediate addressing mode ข. Immediate addressing mode
ค. Direct addressing mode ค. Direct addressing mode
ง. Register indirect addressing mode ง. Register indirect addressing mode
จ. Indexed addressing mode จ. Indexed addressing mode
3. ชุดคำสั่งโหมดกำรเข้ำถึงแบบกำหนดชื่อ 7. โหมดของคำสั่งที่นำค่ำในหน่วยควำมจำเก็บ
รี จิสเตอร์ คือโหมดใด โปรแกรมมำใช้งำนคือโหมดใด
ก. Register addressing mode ก. Register addressing mode
ข. Immediate addressing mode ข. Immediate addressing mode
ค. Direct addressing mode ค. Direct addressing mode
ง. Register indirect addressing mode ง. Register indirect addressing mode
จ. Indexed addressing mode จ. Indexed addressing mode
4. กำรอ้ำงแอดเดรสแบบใช้ค่ำแอดเดรสโดยตรง 8. รี จิสเตอร์ ใช้งำนชี้ตำแหน่ง (Ri) ใช้ได้ท้ งั หมด
คือโหมดใด กี่ตวั อะไรบ้ำง
ก. Register addressing mode ก. 2 ตัว คือ R0, R1
ข. Immediate addressing mode ข. 4 ตัว คือ R0,… R3
ค. Direct addressing mode ค. 6 ตัว คือ R0,… R5
ง. Register indirect addressing mode ง. 8 ตัว คือ R0,… R7
จ. Indexed addressing mode จ. 10 ตัว คือ R0,… R9
หน่ วยที่ 3 ชุดคำสัง่ และวงจรไทเมอร์เคำน์เตอร์ 55
9. รี จิสเตอร์ ใช้งำนทัว่ ไปใช้ได้ท้ งั หมดกี่ตวั 13. บิตสำหรับสั่งรันวงจรไทเมอร์ (TR) อยู่
อะไรบ้ำง รี จิสเตอร์ใด
ก. 2 ตัว คือ R0, R1 ก. TMOD
ข. 4 ตัว คือ R0,… R3 ข. TRUN
ค. 6 ตัว คือ R0,… R5 ค. SCON
ง. 8 ตัว คือ R0,… R7 ง. TCON
จ. 10 ตัว คือ R0,… R9 จ. SMOD
10. คำสั่งใดเป็ นคำสั่งในชุดคำสั่งทำง 14. กำรกำหนดโหมดกำรทำงำนของวงจรไท
คณิ ตศำสตร์ เมอร์ กำหนดในรี จิสเตอร์ ใด
ก. SUBB A,Rn ก. TMOD
ข. ANL A,Rn ข. SMOD
ค. MOV A,Rn ค. TRUN
ง. OR A,Rn ง. SCON
จ. XOR A,Rn จ. TCON
11. ไมโครคอนโทรลเลอร์ MCS-51 จะมีวงจร 15. กำรเลือกกำรทำงำนให้เป็ นวงจรไทเมอร์ หรื อ
ไทเมอร์ เคำน์เตอร์ ต่ำสุ ดกี่วงจร เป็ นวงจรเคำน์เตอร์ กำหนดที่บิตใด
ก. 1 วงจร ก. C/T
ข. 2 วงจร ข. TR
ค. 3 วงจร ค. TF
ง. 4 วงจร ง. TH
จ. 5 วงจร จ. TL
12. รี จิสเตอร์ สำหรับตั้งค่ำ (เป็ นตัวนับ) ในแต่ละ 16. ไทเมอร์ โหมด 0 รี จิสเตอร์ TL ทำหน้ำที่ใด
วงจรมีกี่ตวั ก. หำร 4
ก. 1 ตัวคือ TR ข. หำร 8
ข. 2 ตัวคือ TH, TL ค. หำร 16
ค. 3 ตัวคือ TR, TH , TL ง. หำร 32
ง. 4 ตัวคือ TR, TH , TL, TF จ. หำร 64
จ. 5 ตัวคือ TR, TH , TL, TF, TMOD
56 เอกสำรประกอบกำรสอนวิชำไมโครคอนโทรลเลอร์
3.1 ชุดคำสั่ ง
ไมโครคอนโทรลเลอร์ ไม่วำ่ จะเป็ นตระกูลใดก็ตำม จะสำมำรถทำงำนได้ก็ต่อเมื่อมีคำสั่งที่สั่งงำน
ให้กระทำกำรอย่ำงใดอย่ำงหนึ่ งตำมที่ผใู ้ ช้งำนต้องกำร ชุ ดคำสั่งหรื อภำษำที่ไมโครคอนโทรลเลอร์ รู้จกั
และเข้ำใจคือภำษำเครื่ อง (Machine code) เพียงแต่ภำษำเครื่ องเป็ นภำษำที่มนุษย์ไม่สำมำรถเข้ำใจได้
:03000000020039C2
:0C003900787FE4F6D8FD75810902000311
:10000300E4F508F5098509807FE87E0312002705DA
:1000130009E50970020508D394FFE508648094801C
:0400230040E380DC5A
:10002700E4FDFCD3ED9FEC9E50070DBD00010C8055
:01003700F2D6
:0100380022A5
:00000001FF
ตัวอย่ำงคำสั่งในโหมดนี้ได้แก่
MOV A,#35H ;ผลคือรี จิสเตอร์ A จะมีค่ำเป็ น 35H
ADD A,#12H ;เป็ นคำสั่งรวมค่ำในรี จิสเตอร์ A กับค่ำ 12H
ตัวอย่ำงคำสั่งในโหมดนี้ได้แก่
MOV A,R3 ;เป็ นคำสั่งคัดลอกข้อมูลใน R3 มำไว้ที่รีจิสเตอร์ A
ADD A,R6 ;เป็ นคำสัง่ รวมข้อมูลระหว่ำงข้อมูลในรี จิสเตอร์ R6 กับ A
ตัวอย่ำงคำสั่งในโหมดนี้ได้แก่
MOV A,@R1
ADD A,@R0
กลุ่มคำสั่ง
ไมโครคอนโทรลเลอร์ MCS-51 มีคำสั่งในกำรทำงำนที่เป็ นภำษำแอสเซมบลีท้ งั หมด 5 กลุ่ม
หลักดังนี้
- กลุ่มคำสั่งทำงคณิ ตศำสตร์ (Arithmetic instructions)
- กลุ่มคำสัง่ ทำงลอจิก (Logic instructions)
- กลุ่มคำสั่งกำรโอนย้ำยข้อมูล (Data transfer instructions)
- กลุ่มคำสั่งบูลีน (Boolean instructions)
- กลุ่มคำสั่งกระโดด (Jump instructions)
ควำมหมำยของส่ วนขยำยในคำสั่ ง
Rn หมำยถึง รี จิสเตอร์ ใช้งำนทัว่ ไปใช้ได้ท้ งั หมด 8 ตัวคือ R0, R1, R2, …, R7
Ri หมำยถึง รี จิสเตอร์ ใช้งำนชี้ ตำแหน่งใช้ได้ท้ งั หมด 2 ตัวคือ R0, R1
#data หมำยถึง ตัวเลขข้อมูลขนำด 8 บิตที่กำหนดลงในคำสัง่
#data16 หมำยถึง ตัวเลขข้อมูลขนำด 16 บิตที่กำหนดลงในคำสั่ง
bit หมำยถึง หมำยเลขบิตแอดเดรสของหน่วยควำมจำที่เข้ำถึงได้ในระดับบิต
addr16 หมำยถึง ตัวเลขแอดเดรสขนำด 16 บิตที่กำหนดในคำสั่ง
addr11 หมำยถึง ตัวเลขแอดเดรสขนำด 11 บิตที่กำหนดในคำสั่ง
rel หมำยถึง ตัวเลขกำหนดระยะสัมพัทธ์กบั ตำแหน่งปั จจุบนั (+127, -128)
หน่ วยที่ 3 ชุดคำสัง่ และวงจรไทเมอร์เคำน์เตอร์ 61
Timer/Counter Interrupt
Timer 1 Timer 0
เป็ นบิตที่ใช้ควบคุมกำรทำงำนโดยผลของกำรกำหนดบิตจะได้
GATE
1. กำหนดเป็ น 0 ผลคือวงจรไทเมอร์ /เคำน์เตอร์ จะทำงำนจำกกำรควบคุมที่บิต TR
เพียงอย่ำงเดียว
2. กำหนดเป็ น 1 ผลคือวงจรไทเมอร์ /เคำน์เตอร์จะทำงำนจำกกำรควบคุมที่ขำ INT
โดยวงจรจะทำงำนเมื่อลอจิกที่ขำ INT มีลอจิกเป็ น 1 และวงจรจะหยุดทำงำน
เมื่อขำ INT มีลอจิกเป็ น 0 หรื อกล่ำวได้วำ่ วงจรไทเมอร์ ถูกควบคุมทำงฮำร์ ดแวร์
เป็ นบิตเลือกกำรทำงำนว่ำจะให้เป็ นวงจรไทเมอร์ หรื อจะเป็ นวงจรเคำน์เตอร์ ซึ่ งเป็ นบิต
C/T
เลือกแหล่งสัญญำณเพิ่มค่ำในรี จิสเตอร์ ต้ งั ค่ำนัน่ เอง กำรกำหนดทำได้ดงั นี้
1. กำหนดให้เป็ นลอจิก 0 วงจรจะทำงำนเป็ นวงจรไทเมอร์ โดยใช้สัญญำณเพิ่มค่ำ
รี จิสเตอร์ THTL จำกภำยในระบบ ( คริ สตอลที่ต่ออยู่ )
2. กำหนดให้เป็ นลอจิก 1 วงจรจะทำงำนเป็ นวงจรเคำน์เตอร์ โดยใช้สัญญำณเพิ่ม
ค่ำรี จิสเตอร์ THTL จำกภำยนอกที่เข้ำมำทำงขำ T0 หรื อ T1 ทั้งนี้ข้ ึนอยูก่ บั วงจร
ที่เลือกใช้งำน
เป็ นบิตใช้กำหนดโหมดกำรทำงำนของวงจรไทเมอร์ /เคำน์เตอร์ โดยผลของ
M1 M0
กำรกำหนดบิตจะได้ดงั นี้
M1 M0 โหมด
0 0 0
0 1 1
1 0 2
1 1 3
โหมดกำรทำงำนของวงจรไทเมอร์/เคำน์เตอร์
วงจรไทเมอร์ /เคำน์เตอร์ ท้ งั 2 วงจรสำมำรถกำหนดโหมดกำรทำงำนได้ท้ งั หมด 4 โหมดโดยกำร
กำหนดที่บิต M1 และ M0 ของรี จิสเตอร์ TMOD ดังที่ได้กล่ำวมำแล้วซึ่ งในกำรทำงำนในแต่ละโหมด มี
กำรทำงำนที่แตกต่ำงกันไปดังนี้
โหมด 0
ในโหมด 0 เป็ นโหมดที่ใช้รีจิสเตอร์ ต้ งั ค่ำ (TH, TL) 13 บิ ตด้วยกันโดยใช้งำน TL เพียง 5 บิต
และใช้ TH ทั้งหมด 8 บิต โดยรี จิสเตอร์ ท้ งั สองจะทำงำนคล้ำยวงจรนับเลขฐำน 2 โดยอำศัยสัญญำณเพิ่ม
ค่ำจำกภำยนอกหรื อภำยในจำกกำรกำหนดบิต C/T ดังที่ได้กล่ำวมำแล้ว เมื่อนับจนครบ (เต็มค่ำ) คือเป็ น
ลอจิ ก 1 ครบทั้ง 13 บิ ต แล้วได้รับ สัญญำณเพิ่ม ค่ำ อี ก 1 ลู กจะท ำให้ค่ ำเกิ นคื อเกิ ดกำรล้น (Over flow)
ส่ งผลให้บิตแสดงกำรล้น TF มีค่ำเป็ น 1
1 1
f0 f f0 f f0
1 1
t 12 12 32
OSC(f0) ÷12 ÷32 ÷(256-TH1) TF1
TL 5 บิต TH 8 บิต
1 1 1
TR1 f f0
12 32 256 TH 1
ดังนั้นคำบเวลำในโหมด 0 จะได้
12 32 1
1
=
1
12 10
6
384
= 384 6
12 10
= 32 106 วินำที
โหมด 1
ในโหมด 1 เป็ นโหมดที่ใช้งำนคล้ำยกับโหมด 0 เพียงแต่ใช้รีจิสเตอร์ ต้ งั ค่ำทั้งสองตัวครบทุกบิต
คือใช้ 16 บิต โดยกำรทำงำนเหมือนกับวงจรนับเลขไบนำรี่ ขนำด 16 บิตนัน่ เอง เมื่อได้รับสัญญำณเพิม่ ค่ำ
จะเพิ่มขึ้นครั้งละ 1 ค่ำ จนกระทั้งเป็ นลอจิก 1 ครบทั้ง 16 บิตคือจะได้ค่ำ FFFFH เมื่อได้รับสัญญำณอีก 1
ลูกจะเกิดกำรล้น (Over flow) บิตแสดงกำรล้น (TF: Over flow flag) จะมีค่ำเป็ นลอจิก 1 โครงสร้ำงของ
โหมด 1 เป็ นดังรู ปที่ 3-8
OSC ÷12
C/T=0
สัญญำณ
TL1 TH1 TF1 อินเตอร์รัพท์
ขำ T1 C/T=1 8 บิต 8 บิต
TR1
GATE
ขำ INT1
รู ปที่ 3-8 โครงสร้ำงในโหมด 1 ของวงจรไทเมอร์เคำน์เตอร์ 1
ดังนั้นคำบเวลำในโหมด 1 จะได้
= 1
1 1
12 10
6
12 65536
= 1
1
110
6
65536
= 655366
110
= 65536 106 วินำที
ดัง นั้น เวลำสู ง สุ ด ที่ ใ ห้ ว งจรไทเมอร์ ท ำงำนได้ต่ อ 1 ครั้ ง ถ้ำ ใช้ค ริ ส ตอล 12 MHz คื อ 65536
ไมโครวินำทีหรื อ 65.536 มิลลิวินำที ในทำงกลับกันหำกต้องกำรให้วงจรไทเมอร์ ต้ งั เวลำตำมที่กำหนด
สำมำรถคำนวณได้ดงั นี้
แทนค่ำ 10mS = 1
1 1
f0
12 65536 THTL
= 1
1 1
12MHz
12 65536 THTL
= 1
1 1
12 10
6
12 65536 THTL
72 เอกสำรประกอบกำรสอนวิชำไมโครคอนโทรลเลอร์
= 1
1
110
6
65536 THTL
1
= 1
65536 THTL 110 10mS
6
โหมด 2
ในโหมด 2 เป็ นโหมดที่ ใ ช้รี จิ ส เตอร์ ต้ งั ค่ ำ (TH, TL) ครบทุ ก บิ ต แต่ จ ะเพิ่ ม ค่ ำ ของข้อมู ล ใน
รี จิสเตอร์ เฉพำะ TL เพียงตัวเดียว เมื่อเกิดโอเวอร์ โฟลวจะมีกำรโหลดค่ำข้อมูลจำกรี จิสเตอร์ TH มำไว้ใน
รี จิสเตอร์ TL โดยอัตโนมัติ (Auto reload) ซึ่ งกำรทำงำนในลักษณะนี้ จะใช้ในกำรกำหนดอัตรำเร็ วในกำร
สื่ อสำรทำงพอร์ ตอนุ กรมที่เรี ยกว่ำอัตรำบอด (Baud rate) สำหรับกำรใช้งำนโดยละเอียดจะกล่ำวอีกครั้ง
ในบทกำรสื่ อสำรทำงพอร์ตอนุกรม
OSC ÷12
C/T=0 8 บิต
สัญญำณ
TL1 TF1 อินเตอร์รัพท์
ขำ T1 C/T=1
TR1
GATE TH1
ขำ INT1 8 บิต
รู ปที่ 3-11 โครงสร้ำงในโหมด 2 ของวงจรไทเมอร์เคำน์เตอร์ 1
หน่ วยที่ 3 ชุดคำสัง่ และวงจรไทเมอร์เคำน์เตอร์ 73
โหมด 3
ในโหมด 3 เป็ นโหมดที่ทำงำนผสมกันโดยใช้รีจิสเตอร์ ต้ งั ค่ำข้อมูลจำกวงจรไทเมอร์เคำน์เตอร์ 1
เท่ำนั้น แต่ใช้บิตควบคุ มกำรเริ่ มทำงำน TR0 และ TR1 โดยบิตที่ใช้แสดงกำรโอเวอร์ โฟลวจะเป็ น TF0
และ TF1 ดังรู ปที่ 3-12
OSC ÷12
C/T=0 8 บิต
สัญญำณ
TL0 TF0 อินเตอร์รัพท์
ขำ T0 C/T=1
TR0
GATE
ขำ INT0 8 บิต
สัญญำณ
OSC ÷12 TH0 TF1 อินเตอร์รัพท์
TR1
3.3 สรุปสำระสำคัญ
ภำษำแอสเซมบลี ของไมโครคอนโทรลเลอร์ เป็ นภำษำที่ ใกล้เคียงกับภำษำเครื่ องมำกที่สุดโดย
เป็ นภำษำที่มนุ ษย์สำมำรถเข้ำใจได้ สำหรับภำษำแอสเซมบลีของไมโครคอนโทรลเลอร์ MCS-51 มีอยู่
ด้วยกัน 5 โหมด ซึ่ งในแต่ละโหมดมีวิธีกำรเข้ำถึงข้อมูลในหน่วยควำมจำแตกต่ำงกันไป เช่น กำรป้ อนค่ำ
เข้ำโดยตรง กำรป้ อนค่ำผ่ำนรี จิสเตอร์ กำรป้ อนค่ำโดยอำศัยรี จิสเตอร์ เป็ นตัวชี้ตำแหน่งหน่วยควำมจำ กำร
อ่ำนค่ำจำกหน่วยควำมจำภำยนอก
วงจรไทเมอร์ /เคำน์เตอร์ เป็ นวงจรที่ถูกบรรจุอยูภ่ ำยในตัวไมโครคอนโทรลเลอร์ มีกำรทำงำนที่
เป็ นอิสระจำกกำรประมวลผลคำสั่งของไมโครคอนโทรลเลอร์ สำหรับไมโครคอนโทรลเลอร์ MCS-51 มี
วงจรไทเมอร์/เคำน์เตอร์ อย่ำงน้อย 2 วงจร ทั้งนี้ ข้ ึนอยูก่ บั เบอร์ ที่เลือกมำใช้งำน มีโหมดกำรทำงำนทั้งหมด
4 โหมด ซึ่ งในแต่ละโหมดมีคุณสมบัติในกำรทำงำนแตกต่ำงกันไป ทั้งนี้ ข้ ึนอยูก่ บั กำรวิธีใช้งำนรี จิสเตอร์
ตั้งค่ำ TH และ TL ในแต่โหมด
74 เอกสำรประกอบกำรสอนวิชำไมโครคอนโทรลเลอร์
แบบทดสอบหลังเรียนหน่ วยที่ 3
คำสั่ ง ให้นกั ศึกษำเลือกคำตอบที่ถูกต้องที่สุดเพียงคำตอบเดียว
1. ชุดคำสั่งโหมดกำรกำหนดค่ำลงรี จิสเตอร์ 5. กำรเข้ำถึงข้อมูลในหน่วยควำมจำใช้งำน
โดยตรงคือโหมดใด ทัว่ ไปช่วงบน (Upper) ต้องใช้โหมดใด
ก. Register addressing mode ก. Register addressing mode
ข. Immediate addressing mode ข. Immediate addressing mode
ค. Direct addressing mode ค. Direct addressing mode
ง. Register indirect addressing mode ง. Register indirect addressing mode
จ. Indexed addressing mode จ. Indexed addressing mode
2. ชุดคำสั่งโหมดกำรเข้ำถึงแบบกำหนดชื่อ 6. โหมดของคำสั่งที่นำค่ำในหน่วยควำมจำเก็บ
รี จิสเตอร์ คือโหมดใด โปรแกรมมำใช้งำนคือโหมดใด
ก. Register addressing mode ก. Register addressing mode
ข. Immediate addressing mode ข. Immediate addressing mode
ค. Direct addressing mode ค. Direct addressing mode
ง. Register indirect addressing mode ง. Register indirect addressing mode
จ. Indexed addressing mode จ. Indexed addressing mode
3. ชุ ด ค ำสั่ ง โหมดกำรอ้ำ งข้อ มู ล ของไมโคร- 7. หน่ วยควำมจำส่ ว นใดใช้ก ำรอ้ำ งแอดเดรส
คอนโทรลเลอร์ตระกูล MCS-51 มีกี่โหมด แบบโดยตรงไม่ได้
ก. 1 โหมด ก. หน่วยควำมจำใช้งำนทัว่ ไปช่วงบน (Upper)
ข. 2 โหมด ข. หน่วยควำมจำใช้งำนทัว่ ไปช่วงล่ำง (Lower)
ค. 3 โหมด ค. หน่วยควำมจำใช้งำนทัว่ ไปช่วงซ้ำย (Left)
ง. 4 โหมด ง. หน่วยควำมจำใช้งำนทัว่ ไปช่วงขวำ (Right)
จ. 5 โหมด จ. หน่วยควำมจำใช้งำนทัว่ ไปช่วงกลำง (Mid)
4. กำรอ้ำงแอดเดรสแบบใช้ค่ำแอดเดรสโดยตรง 8. รี จิสเตอร์ ใช้งำนชี้ตำแหน่ง (Ri) ใช้ได้ท้ งั หมด
คือโหมดใด กี่ตวั อะไรบ้ำง
ก. Register addressing mode ก. 2 ตัว คือ R0, R1
ข. Immediate addressing mode ข. 4 ตัว คือ R0,… R3
ค. Direct addressing mode ค. 6 ตัว คือ R0,… R5
ง. Register indirect addressing mode ง. 8 ตัว คือ R0,… R7
จ. Indexed addressing mode จ. 10 ตัว คือ R0,… R9
76 เอกสำรประกอบกำรสอนวิชำไมโครคอนโทรลเลอร์
เฉลยแบบทดสอบก่อนเรี ยน
1. จ 2. ข 3. ก 4. ค 5. ก 6. ง 7. จ 8. ก 9. ง 10. ก
11. ข 12. ข 13. ง 14. ก 15. ก 16. ง 17. ง 18. ข 19. ค 20. ค
เฉลยแบบทดสอบหลังเรี ยน
1. ข 2. ก 3. จ 4. ค 5. ง 6. จ 7. ก 8. ก 9. ข 10. ข
11. ง 12. ค 13. จ 14. ก 15. ง 16. ข 17. ค 18. ง 19. ค 20. ข
หน่ วยที่ 4
การสื่ อสารทางพอร์ ตอนุกรม การอินเตอร์ รัพต์ และว็อชด็อก
หัวข้อเรื่ อง
4.1 การสื่ อสารทางพอร์ตอนุกรม
4.2 การขัดจังหวะการทางาน
4.3 การใช้งานวงจรว็อชด็อก
สาระสาคัญ
การสื่ อสารทางพอร์ ตอนุ กรมเป็ นการสื่ อสารที่ ใช้สายสัญญาณจานวนน้อยและสามารถส่ งได้
ไกลแต่มีขอ้ ด้อยที่ส่งข้อมูลได้ชา้ ในบทเรี ยนนี้ กล่าวถึงการใช้งานสื่ อสารผ่านทางพอร์ ตอนุ กรมในโหมด
ต่าง ๆ บทนี้ ได้การขัดจังหวะการทางานหรื อเรี ยกทับศัพท์ว่าการอินเตอร์ รัพต์ และวงจรเฝ้าระวังการ
แฮ้งค์ของซี พียทู ี่เรี ยกว่าวงจรว็อชด็อก
สมรรถนะประจาหน่วยการเรี ยนรู ้
แสดงความรู ้ เกี่ ยวกับการสื่ อสารทางพอร์ ตอนุ กรมที่มีใช้งานในไมโครคอนโทรลเลอร์ การ
ขัดจังหวะการทางาน และวงจรว็อชด็อก
จุดประสงค์การเรี ยนรู ้
จุดประสงค์ ทวั่ ไป
1. เพื่อให้มีความรู ้เกี่ยวกับการสื่ อสารทางพอร์ ตอนุกรม
2. เพื่อให้มีความรู ้เกี่ยวกับการขัดจังหวะการทางาน
3. เพื่อให้มีความรู ้เกี่ยวกับการใช้งานวงจรว็อชด็อก
จุดประสงค์ เชิ งพฤติกรรม
1. บอกเกี่ยวกับการสื่ อสารทางพอร์ ตอนุกรมได้
2. บอกเกี่ยวกับการขัดจังหวะการทางานได้
3. บอกเกี่ยวกับการใช้งานวงจรว็อชด็อกได้
4. ทาแบบฝึ กหัดเสร็ จทันเวลาและทาแบบทดสอบผ่านเกณฑ์ที่กาหนด
80 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
แบบทดสอบก่อนเรียนหน่ วยที่ 4
คาสั่ ง ให้นกั ศึกษาเลือกคาตอบที่ถูกต้องที่สุดเพียงคาตอบเดียว
1. วิธีการส่ งข้อมูลอนุกรมที่ตอ้ งส่ งสัญญาณ 5. บิตเริ่ มต้นของส่ งแบบอะซิ งโครนัสมีสถานะใด
นาฬิกาไปพร้อมคือวิธีใด ก. มีสถานะเป็ นลอจิก 0
ก. การส่ งแบบโครนัส ข. มีสถานะเป็ นลอจิก 1
ข. การส่ งแบบโครซิ งนัส ค. มีสถานะเป็ นขาลอย (High Z)
ค. การส่ งแบบอะซิ งโครนัส ง. มีสถานะเช่นเดียวกับด้านรับ
ง. การส่ งแบบซิ งโครนัส จ. มีสถานะเป็ นแบบใดก็ได้ตามการ
จ. การส่ งแบบโครนัสซิ ง กาหนด
2. วิธีการส่ งข้อมูลอนุกรมที่ไม่ตอ้ งส่ งสัญญาณ 6. บิตแรกของข้อมูลที่ส่งออกจากการส่ ง
นาฬิกาไปพร้อมคือวิธีใด แบบอะซิงโครนัสคือบิตใด
ก. การส่ งแบบโครนัส ก. บิต D0
ข. การส่ งแบบโครซิ งนัส ข. บิต D2
ค. การส่ งแบบอะซิ งโครนัส ค. บิต D4
ง. การส่ งแบบซิ งโครนัส ง. บิต D6
จ. การส่ งแบบโครนัสซิ ง จ. บิต D7
3. อัตราเร็ วในการรับส่ งแบบอะซิ งโครนัส 7. การสื่ อสารแบบอนุกรมที่ส่งแบบฟูลดูเพล็กมี
เรี ยกว่าอะไร ลักษณะใด
ก. อัตราบอด (Baud rate) ก. สามารถส่ งได้ที่ละ 1 ไบต์
ข. อัตราเร็ ว (Speed rate) ข. สามารถส่ งได้อย่างเดียว
ค. อัตราส่ ง (Send rate) ค. สามารถรับได้อย่างเดียว
ง. อัตราสื่ อสาร (Communication rate) ง. สามารถรับส่ งต่างเวลากัน
จ. อัตราบิต (Bit rate) จ. สามารถรับส่ งได้ในเวลาเดียวกัน
4. สภาวะปกติของสัญญาณของการส่ งแบบอะ 8. เมื่อต้องการส่ งข้อมูลออกพอร์ ตอนุกรมทาได้
ซิงโครนัสมีสถานะใด โดยนาข้อมูลไปไว้ในรี จิสเตอร์ใด
ก. มีสถานะเป็ นลอจิก 0 ก. STXD
ข. มีสถานะเป็ นลอจิก 1 ข. SCON
ค. มีสถานะเป็ นขาลอย (High Z) ค. SMOD
ง. มีสถานะเป็ นเช่นเดียวกับด้านรับ ง. SBUF
จ. มีสถานะใด ๆ ก็ได้ตามการกาหนด จ. SRXD
หน่ วยที่ 4 การสื่ อสารทางพอร์ตอนุกรม การอินเตอร์ รัพต์ และว็อชด็อก 81
9. เมื่อรับข้อมูลเข้าพอร์ ตอนุกรมครบแล้ว 13. เมื่อทาการรับข้อมูลเข้ามาทางพอร์ตอนุกรม
สามารถไปรับมาใช้งานได้ที่รีจิสเตอร์ใด ครบ 1 ไบต์ จะเกิดสิ่ งใด
ก. STXD ก. บิต RI จะมีค่าเป็ นลอจิก 1
ข. SCON ข. บิต RI จะมีค่าเป็ นลอจิก 0
ค. SMOD ค. บิต TI จะมีค่าเป็ นลอจิก 1
ง. SBUF ง. บิต TI จะมีค่าเป็ นลอจิก 0
จ. SRXD จ. บิต TF จะมีค่าเป็ นลอจิก 1
10. การสื่ อสารแบบอนุกรมแบบอะซิงโครนัส 8 14. การอินเตอร์ รัพต์มีกี่แหล่ง (รวมรี เซต)
บิต (ไม่มีพาริ ต้ ีบิต) คือโหมดใด ก. 4 แหล่ง
ก. โหมด 0 ข. 5 แหล่ง
ข. โหมด 1 ค. 6 แหล่ง
ค. โหมด 2 ง. 7 แหล่ง
ง. โหมด 3 จ. 8 แหล่ง
จ. โหมด 1 และโหมด 3 15. รี จิสเตอร์เปิ ด/ปิ ดการตอบสนองการ
11. โหมดใดที่กาหนดอัตราบอด (Baud rate) จาก อินเตอร์ รัพต์คือรี จิสเตอร์ ใด
วงจร Timer1 หรื อ Timer2 ในการสื่ อสาร ก. IO
แบบอนุกรม ข. IR
ก. โหมด 0 ค. IF
ข. โหมด 1 ง. IE
ค. โหมด 2 จ. IP
ง. โหมด 3 16. รี จิสเตอร์ กาหนดลาดับความสาคัญของการ
จ. โหมด 1 และโหมด 3 อินเตอร์ รัพต์คือรี จิสเตอร์ ใด
12. เมื่อทาการส่ งข้อมูลออกพอร์ ตอนุกรมครบ 1 ก. IO
ไบต์ จะเกิดสิ่ งใด ข. IP
ก. บิต RI จะมีค่าเป็ นลอจิก 1 ค. IR
ข. บิต RI จะมีค่าเป็ นลอจิก 0 ง. IF
ค. บิต TI จะมีค่าเป็ นลอจิก 1 จ. IE
ง. บิต TI จะมีค่าเป็ นลอจิก 0
จ. บิต TF จะมีค่าเป็ นลอจิก 1
82 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
รู ปแบบของการสื่ อสารทางพอร์ตอนุกรม
วิธีการรับส่ งข้อมูลแบบอนุกรมมี 2 วิธีคือ
1. แบบซิ งโครนั ส (Synchronous) เป็ นการรั บ ส่ ง ข้อมู ล อนุ กรมที่ จะต้องส่ งสั ญญาณนาฬิ ก า
(Clock) จากตัวส่ งร่ วมไปด้วย เพื่อใช้ในการเลื่อนข้อมูลแต่ละบิตที่ได้ส่งออกไป ดังนั้นวิธีน้ ี
สายสัญญาณจะต้องใช้ 3 เส้นคือ
- สายสัญญาณข้อมูล (Data)
- สายสัญญาณนาฬิกา (Clock)
- สายกราวด์ (Ground)
2. แบบอะซิ ง โครนั ส (Asynchronous) เป็ นการรั บ ส่ ง ข้อ มู ล แบบอนุ ก รมแบบที่ ไ ม่ ต้อ งส่ ง
สัญญาณนาฬิ กาเพื่อเลื่ อนข้อมูลร่ วมด้วย แต่ใช้การกาหนดอัตราเร็ วในการรั บส่ งข้อมูลที่
เท่ า กันของภาครั บ กับ ภาคส่ ง อัตราเร็ ว นี้ เรี ย กกันว่า อัต ราบอด (Baud rate) ซึ่ งระบุ เป็ น
จานวนบิตต่อวินาที (bps: Bit per second) สาหรับไมโครคอนโทรลเลอร์ MCS-51 มีวงจร
รับส่ งข้อมู ลที่ ทางานแบบนี้ อยู่ภายในตัวเรี ยกว่า UART (Universal asynchronous receiver
transmitter)
รู ปแบบของข้อมูลในการสื่ อสารแบบอะซิงโครนัส
ลักษณะของการสื่ อสารทางพอร์ตอนุกรม
การรับส่ งข้อมูลแบบอนุกรมแบ่งตามลักษณะการส่ งได้ 3 แบบ
1. แบบซิมเพล็ก (Simplex) เป็ นการส่ งข้อมูลแบบทางเดียว หรื อการส่ งแบบทิศทางเดียว
2. แบบฮาล์ ฟดู เพล็ก (Half duplex) เป็ นการรั บส่ งข้อมู ลแบบ 2 ทิ ศทาง ใช้ส ายสัญญาณตัว
เดียวกัน โดยจะต้องสลับเวลากันในการรับและการส่ งข้อมูล
3. แบบฟู ล ดู เพล็ก (Full duplex) เป็ นการรั บ ส่ ง ข้อมู ล แบบ 2 ทิ ศ ทางในเวลาเดี ยวกัน จึ ง ใช้
สายสัญญาณแยกกันในการรับและส่ งข้อมูล
Tx Rx Simplex
Tx Rx
Half duplex
Rx Tx
Tx Rx
Rx Tx Full duplex
โหมด 0
โหมด 0 เป็ นการรับส่ งข้อมูลแบบซิ งโครนัส (Synchronous) ซึ่ งจะรับหรื อส่ งข้อมูลผ่านทางขา
Rx และใช้ขา Tx เป็ นตัวส่ งสัญญาณนาฬิกาเพื่อใช้ในการเลื่อนข้อมูลโดยสัญญาณนาฬิกา เท่ากับค่าของ
แมชชีนไซเคิล (OSC12 )
โหมด 1
โหมด 1 เป็ นการรับส่ งข้อมูลแบบอะซิ งโครนัส (Asynchronous) โดยจานวนบิตข้อมูลทั้งหมดมี
จานวน 10 บิต ประกอบด้วย (เรี ยงตามลาดับ)
1. บิตเริ่ มต้น (Start Bit) ขนาด 1 บิต
2. บิตข้อมูล (Data) ขนาด 8 บิต
3. บิตหยุด (Stop Bit) ขนาด 1 บิต (อาจใช้ 1.5 บิตหรื อ 2 บิตก็ได้ตามต้องการ)
อัตราเร็ วในการส่ งข้อมูลหรื ออัตราบอดได้มาจากวงจรไทเมอร์ 1 หรื อไทเมอร์ 2 โดยผูใ้ ช้งานสามารถ
เลือกได้
โหมด 2
โหมด 2 เป็ นการรับส่ งข้อมูลแบบอะซิ งโครนัส (Asynchronous) จานวนข้อมูลทั้งหมดมีจานวน
11 บิต ประกอบด้วย (เรี ยงตามลาดับ)
1. บิตเริ่ มต้น (Start bit) ขนาด 1 บิต
2. บิตข้อมูล (Data) ขนาด 8 บิต
3. บิตพาริ ต้ ี (Parity) ขนาด 1 บิต ในการส่ งจะถูกนามาจากบิต TB8 และในการรับจะนาไปไว้
ในบิต RB8 โดยทั้ง 2 บิตนี้อยูใ่ นรี จิสเตอร์ SCON
4. บิตหยุด (Stop bit) ขนาด 1 บิต (อาจใช้ 1.5 บิตหรื อ 2 บิตก็ได้ตามต้องการ)
อัตราเร็ วในการส่ งข้อมูลหรื ออัตราบอดได้มาจากความถี่ OSC หาร 64 หรื อ ความถี่ OSC หาร 32
โดยผูใ้ ช้งานสามารถเลือกได้
88 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
โหมด 3
โหมด 3 เป็ นการรับส่ งข้อมูลแบบอะซิ งโครนัส (Asynchronous) มีลกั ษณะเช่นเดียวกับโหมด 2
ต่างกันที่แหล่งกาเนิ ดอัตราบอดในการส่ งข้อมูล ซึ่ งในโหมด 3 ได้มาจากวงจรไทเมอร์
โครงสร้างของโหมด 0
การสื่ อสารทางพอร์ ตอนุกรมในโหมด 0 มีโครงสร้างของพอร์ตดังรู ปที่ 4-4
Write
to
SBUF
DSQ
CL SBUF RxD P3.0
(Send Data)
Shift
Zero Detector
Start Shift
S6 Tx Clk Tx Control
TI Send
Serial Port
Interrupt TxD P3.1
Rx Clk RI Receive (Send Clock)
REN
Start Rx Control Shift
RI Shift Clock
RxD P3.0
Input Shift REG.
Shift (Read Data)
Load SBUF
SBUF
Read SBUF
โครงสร้างโหมด 1 และโหมด 3
อัตราเร็ วในการส่ งข้อมูลทางพอร์ ตอนุ กรม (อัตราบอด) ในโหมด 1 และโหมด 3 มีโครงสร้าง
แบบเดียวกัน แหล่งกาเนิดสัญญาณอัตราบอดได้มาจาก 2 แหล่ง คือจากวงจร Timer 1 หรื อวงจร Timer 2
ทั้งนี้ ข้ ึนอยู่กบั การกาหนดค่าที่บิต TCLK และ RCLK ซึ่ งอยู่ในรี จิสเตอร์ T2CON แหล่งสัญญาณอัตรา
บอดที่มาจากวงจร Timer1 สามารถเลือกว่าให้ผา่ นวงจรหาร 2 หรื อไม่หาร โดยเลือกได้จากการกาหนดที่
บิต SMOD ในรี จิสเตอร์ PCON สิ่ งที่ต่างกันของโหมด 1 กับโหมด 3 คือในโหมด 1 เป็ นการสื่ อสารแบบ
8 บิต ส่ วนในโหมด 3 เป็ นการสื่ อสารแบบ 9 บิตซึ่ งรวมบิตพาริ ต้ ีร่วมเข้าไปด้วย การทางานของโหมด 1
และโหมด 3 เป็ นดังรู ปที่ 4-5
Bit Detector
Input Shift REG.
RxD Load SBUF Shift
SBUF
Read SBUF
8051 Internal BUS
การคานวณอัตราบอดในโหมด 1 และโหมด 3
จากโครงสร้างของโหมด 1 และ 3 สามารถหาค่าที่ตอ้ งกาหนดในรี จิสเตอร์ ต้ งั ค่าจากอัตราบอด
ที่ได้จากวงจรไทเมอร์ 1 และไทเมอร์ 2 ดังนี้
Timer 1 Timer 2
=Baud Rate×16
÷2
SMOD 0 =Baud Rate
1
TCLK 0 1 Start
÷16 Tx Clk
RCLK 0 1 ÷16
=Baud Rate×32 Rx Clk
Start
11.0592 106 1 1
9600 = 12 256 TH 1 16
11.0592 106 1 1
256-TH1 = 12 16 9600
11.0592 106
256
TH1 = 12 16 9600 = 250
วิธีทา กรณี ให้ SMOD = “0”
OSC 1 1 1
จากสมการ Baud rate = 12 256 TH 1 2 16
11.0592 106 1 1
9600 = 12 256 TH 1 32
11.0592 106 1 1
256-TH1 =
12 32 9600
11.0592 106
TH1 = 256 = 253
12 32 9600
บิต TCLK RCLK และ TR2 บิตทั้ง 3 นี้อยูใ่ นรี จิสเตอร์ T2CON
1
Baud rate = Overflowof Timer 2 ( BaudRateGen.Mode)
16
OSC 1 1
=
2 65536 RCAP 2 H , RCAP 2 L 16
92 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
ตัวอย่าง ต้องการ Baud rate 9600 bps จงหาค่าข้อมูลในรี จิสเตอร์ RCAP2H, RCAP2L เมื่อใช้คริ สตอล
11.0592 MHz
OSC 1 1
จากสมการ Baud rate =
2 65536 RCAP 2 H , RCAP 2 L 16
11.0592 106 1
9600 =
1
2 65536 RCAP 2 H , RCAP 2 L 16
11.0592 106 1 1
65536 – (RCAP2H,RCAP2L) =
2 16 9600
11.0592 106
RCAP2H,RCAP2L = 65536 = 6550010
2 16 9600
= FFDCH ; RCAP2H=FFH ,RCAP2L=DCH
โครงสร้างโหมด 2
การสื่ อสารทางพอร์ ตอนุกรมในโหมด 2 จากโครงสร้างของพอร์ตดังรู ปที่ 4-7
1 to 0 Rx Clk RI Receive
detector Start Rx Control Shift
translation
Bit Detector
Input Shift REG.
RxD Load SBUF Shift
SBUF
Read SBUF
8051 Internal BUS
การเขียนโปรแกรมใช้งานพอร์ตอนุกรม
ในการเขียนโปรแกรมเพื่อใช้งานพอร์ ตอนุกรมสามารถใช้งานได้ 2 วิธีคือ
- แบบวนตรวจสอบการรับส่ ง (Polling)
- แบบอินเตอร์ รัพต์ (Interrupt)
4.2 การขัดจังหวะการทางาน
การขัดจังหวะการทางานหรื อเรี ยกทับศัพท์วา่ การอินเตอร์ รัพต์ (Interrupt) เป็ นการขัดจังหวะการ
ทางานปกติของไมโครคอนโทรลเลอร์ ซึ่ งในไมโครคอนโทรลเลอร์ MCS-51 สามารถตอบสนองการ
อินเตอร์ รัพต์ได้ท้ งั หมดจาก 7 แหล่ง (หนังสื อบางเล่มเป็ น 6 แหล่งโดยไม่นบั การรี เซตเป็ นการขัดจังหวะ)
ในแต่ละแหล่ งของสัญญาณอิ นเตอร์ รัพต์จะทาให้ไมโครคอนโทรเลอร์ ตอบสนองการอินเตอร์ รัพต์ที่
แตกต่างกันไป การตอบสนองเป็ นการกระโดดไปทางานในตาแหน่ง (แอดเดรสของหน่วยความจาเก็บ
โปรแกรม) ที่ตอบสนองต่อการอินเตอร์ รัพต์ (Interrupt vector) ซึ่ งตาแหน่งตอบสนองในแต่ละประเภท
เป็ นดังตารางที่ 4-2
EX0
INT0 IE0
ET0
TF0
EX1
INT1 IE1
อินเตอร์รัพต์
ET1
TF1 EA
RI ES
TI
TF2 ET2
EXF2
Timer/Counter Interrupt
INT1 IT1=0
IE1
IT1=1
IE0 (Interrupt 0 edge flag) เป็ นบิ ต ใช้แ สดงการอิ น เตอร์ รั พ ต์ ของวงจร 0 ซึ่ งการ
IE0
ทางานของบิตนี้จะมีการทางานเช่น เดียวกันกับบิต IE1
IT0 (Interrupt 1 type control bit) เป็ นบิตที่ใช้กาหนดลักษณะของสัญญาณที่เข้ามาใน
IT0
วงจรอินเตอร์ รัพต์ 0 การทางานเป็ นเช่นเดียวกับ IT1 คือ
1. กาหนดให้ IT0 = 0 จะรับรู ้สัญญาณอินเตอร์ รัพต์ที่ระดับลอจิก 0 ของสัญญาณ
2. กาหนดให้ IT0 = 1 จะรับรู ้สัญญาณอินเตอร์ รัพต์ที่ขอบขาลงของสัญญาณ
4.4 สรุปสาระสาคัญ
การสื่ อสารผ่านทางพอร์ ตอนุ กรมเป็ นการสื่ อสารที่ใช้วิธีการส่ งแบบทยอยส่ งทีละบิ ต สาหรั บ
ไมโครคอนโทรลเลอร์ MCS-51 มีวงจรสื่ อสารผ่านพอร์ ตอนุ กรมบรรจุอยูภ่ ายในตัว 1 วงจร มีโหมดการ
ทางานทั้งหมด 4 โหมด แต่โหมดที่นิยมใช้งานมากที่สุดคือโหมด 1 เป็ นโหมดสื่ อสารแบบอะซิ งโครนัส
8 บิตและไม่ส่งบิตพาริ ต้ ี การสื่ อสารแบบอะซิ งโครนัสคือการสื่ อสารที่ไม่ตอ้ งส่ งสัญญาณนาฬิกาเพื่อใช้
เลื่ อนข้อมู ลแต่ใช้วิธีการกาหนดอัตราเร็ วในการสื่ อสารแทน การกาหนดอัตราเร็ วนี้ เรี ยกว่าอัตราบอด
(Baud rate) ไมโครคอนโทรลเลอร์ MCS-51 สามารถสร้ างอัตราบอดได้จากวงจรไทเมอร์ 2 วงจรคื อ
วงจรไทเมอร์ 1 และวงจรไทเมอร์ 2
การอินเตอร์ รัพต์คือการขัดจังหวะการทางานปกติของสายคาสั่งโปรแกรมไมโครคอนโทรลเลอร์
สาหรับไมโครคอนโทรลเลอร์ MCS-51สามารถมีอินเตอร์ รัพต์ได้ท้ งั หมด 7 แหล่งในแต่ละแหล่งจะมี
ตาแหน่ งของโปรแกรมตอบสนองการอิ นเตอร์ รัพต์แตกต่า งกันไป ตาแหน่ ง การตอบสนองนี้ เรี ยกว่า
อินเตอร์รัพต์เวกเตอร์
วงจรว็อชด็อกเป็ นวงจรที่ใช้ป้องกันไมโครคอนโทรลเลอร์ หยุดทางานหรื อทางานผิดพลาดไป
จากวงรอบการทางานปกติดโดยไม่ทราบสาเหตุเป็ นผลให้เกิดอาการค้างหรื อเรี ยกว่าเครื่ องแฮ้งค์ ซึ่ งวงจร
จะทาหน้าที่รีเซตไมโครคอนโทรลเลอร์ หากประสบปั ญหาดังกล่าว ทาให้ไมโครคอนโทรลเลอร์ สามารถ
กลับไปเริ่ มต้นทางานได้ตามปกติ
102 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
7. การอินเตอร์ รัพต์คืออะไร
8. หน้าที่ของวงจรว็อชด็อกคืออะไร
หน่ วยที่ 4 การสื่ อสารทางพอร์ตอนุกรม การอินเตอร์ รัพต์ และว็อชด็อก 103
แบบทดสอบหลังเรียนหน่ วยที่ 4
คาสั่ ง ให้นกั ศึกษาเลือกคาตอบที่ถูกต้องที่สุดเพียงคาตอบเดียว
1. วิธีการส่ งข้อมูลอนุกรมที่ตอ้ งส่ งสัญญาณ 5. บิตแรกของข้อมูลที่ส่งออกจากการส่ ง
นาฬิกาไปพร้อมคือวิธีใด แบบอะซิงโครนัสคือบิตใด
ก. การส่ งแบบอะซิ งโครนัส ก. บิต D0
ข. การส่ งแบบซิ งโครนัส ข. บิต D2
ค. การส่ งแบบโครนัสซิ ง ค. บิต D4
ง. การส่ งแบบโครนัส ง. บิต D6
จ. การส่ งแบบโครซิ งนัส จ. บิต D7
2. วิธีการส่ งข้อมูลอนุกรมที่ไม่ตอ้ งส่ งสัญญาณ 6. บิตเริ่ มต้นของส่ งแบบอะซิ งโครนัสมีสถานะใด
นาฬิกาไปพร้อมคือวิธีใด ก. มีสถานะเป็ นลอจิก 1
ก. การส่ งแบบโครซิ งนัส ข. มีสถานะเป็ นลอจิก 0
ข. การส่ งแบบซิ งโครนัส ค. มีสถานะเช่นเดียวกับด้านรับ
ค. การส่ งแบบอะซิ งโครนัส ง. มีสถานะเป็ นขาลอย (High Z)
ง. การส่ งแบบโครนัส จ. มีสถานะเป็ นแบบใดก็ได้ตามการ
จ. การส่ งแบบโครนัสซิ ง กาหนด
3. อัตราเร็ วในการรับส่ งแบบอะซิงโครนัส 7. การสื่ อสารแบบอนุกรมที่ส่งแบบฟูลดูเพล็กมี
เรี ยกว่าอะไร ลักษณะใด
ก. อัตราสื่ อสาร (Communication rate) ก. สามารถส่ งได้ที่ละ 1 ไบต์
ข. อัตราเร็ ว (Speed rate) ข. สามารถส่ งได้อย่างเดียว
ค. อัตราส่ ง (Send rate) ค. สามารถรับได้อย่างเดียว
ง. อัตราบอด (Baud rate) ง. สามารถรับส่ งต่างเวลากัน
จ. อัตราบิต (Bit rate) จ. สามารถรับส่ งได้ในเวลาเดียวกัน
4. สภาวะปกติของสัญญาณของการส่ งแบบอะ 8. เมื่อต้องการส่ งข้อมูลออกพอร์ ตอนุกรมทาได้
ซิงโครนัสมีสถานะใด โดยนาข้อมูลไปไว้ในรี จิสเตอร์ใด
ก. มีสถานะเป็ นลอจิก 1 ก. SMOD
ข. มีสถานะเป็ นลอจิก 0 ข. SRXD
ค. มีสถานะเป็ นขาลอย (High Z) ค. SBUF
ง. มีสถานะเป็ นเช่นเดียวกับด้านรับ ง. STXD
จ. มีสถานะใด ๆ ก็ได้ตามการกาหนด จ. SCON
104 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
เฉลยแบบทดสอบก่อนเรี ยน
1. ง 2. ค 3. ก 4. ข 5. ก 6. ก 7. จ 8. ง 9. ง 10. ข
11. จ 12. ค 13. ก 14. ง 15. ง 16. ข 17. ง 18. ก 19. ก 20. จ
เฉลยแบบทดสอบหลังเรี ยน
1. ข 2. ค 3. ง 4. ก 5. ก 6. ข 7. จ 8. ค 9. จ 10. ข
11. ง 12. จ 13. ก 14. ข 15. ง 16. จ 17. ก 18. ง 19. ข 20. ค
หน่ วยที่ 5
การเขียนโปรแกรมภาษาซีสาหรับไมโครคอนโทรลเลอร์
หัวข้อเรื่ อง
5.1 ขั้นตอนในการพัฒนาโปรแกรม
5.2 ภาษาซีสาหรับไมโครคอนโทรลเลอร์
5.3 การสร้างฟังก์ชนั่ รองขึ้นใช้เอง
สาระสาคัญ
การเขียนโปรแกรมควบคุมการทางานไมโครคอนโทรลเลอร์ดว้ ยภาษาซี เป็ นการเขียนโปรแกรม
ที่มีความยืดหยุน่ มากกว่าและสามารถพัฒนางานได้เร็ วกว่าการเขียนโปรแกรมด้วยภาษาแอสเซมบลี การ
เขี ย นโปรแกรมด้วยภาษาซี ข องไมโครคอนโทรลเลอร์ MCS-51 นี้ เป็ นมาตรฐาน ANSI C ดัง นั้นเมื่ อ
นักศึก ษาสามารถเขี ยนโปรแกรมควบคุ มการทางานไมโครคอนโทรลเลอร์ MCS-51 นี้ ได้นักศึ กษาก็
สามารถนาความรู ้ของการเขียนโปรแกรมภาษาซีไปใช้งานด้านอื่น ๆ ได้
สมรรถนะประจาหน่วยการเรี ยนรู ้
แสดงความรู ้ เกี่ ยวกับการเขี ยนผังงาน (Flow chart) การตรวจสอบความถู กต้องของการเขีย น
โปรแกรมจากผังงาน และสามารถเขียนโปรแกรมจากผังงาน
จุดประสงค์การเรี ยนรู ้
จุดประสงค์ ทวั่ ไป
1. เพื่อให้มีความรู ้เกี่ยวกับขั้นตอนในการพัฒนาโปรแกรม
2. เพื่อให้มีความรู ้เกี่ยวกับภาษาซีสาหรับไมโครคอนโทรลเลอร์
3. เพื่อให้มีความรู ้เกี่ยวกับการสร้างฟังก์ชนั่ รองขึ้นใช้เอง
จุดประสงค์ เชิ งพฤติกรรม
1. บอกเกี่ยวกับขั้นตอนในการพัฒนาโปรแกรมได้
2. บอกเกี่ยวกับภาษาซีสาหรับไมโครคอนโทรลเลอร์ ได้
3. บอกวิธีการสร้างฟังก์ชนั่ รองขึ้นใช้เองได้
4. ทาแบบฝึ กหัดเสร็ จทันเวลาและทาแบบทดสอบผ่านเกณฑ์ที่กาหนด
108 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
แบบทดสอบก่อนเรียนหน่ วยที่ 5
คาสั่ ง ให้นกั ศึกษาเลือกคาตอบที่ถูกต้องที่สุดเพียงคาตอบเดียว
รู ปใช้ตอบคาถามข้อที่ 1-5
1 2 3 4 5
การเขียนโปรแกรมภาษาซีสาหรับไมโครคอนโทรลเลอร์
การใช้งานไมโครคอนโทรลเลอร์ นอกจากจะต้องมีวงจรไมโครคอนโทรลเลอร์ และมีส่วนของ
วงจรเชื่ อ มต่ อ กับ อุ ป กรณ์ ภายนอกเพื่ อ ใช้ใ นการควบคุ ม งานต่ า ง ๆ ตามต้องการที่ เ รี ย กว่า ฮาร์ ด แวร์
(Hardware) แล้วจาเป็ นต้องมีชุดคาสั่งหรื อโปรแกรมไว้สาหรับสั่งงานให้ไมโครคอนโทรลเลอร์ ทางาน
ตามที่ตอ้ งการซึ่ งเรี ยกว่าซอฟท์แวร์ (Software) ในบทนี้ เป็ นการเรี ยนรู ้หลักการเขียนโปรแกรมควบคุม
การทางานของไมโครคอนโทรลเลอร์
5.1 ขั้นตอนในการพัฒนาโปรแกรม
โปรแกรมคอมพิ วเตอร์ ที่ นามาใช้ง านได้น้ ัน ไม่ ส ามารถเริ่ ม ต้นจากจากการเขี ย นค าสั่ ง ด้ว ย
ภาษาคอมพิวเตอร์ ได้ทนั ที จะต้องมีการวิเคราะห์ วางแผน และปฏิบตั ิตามกระบวนการทางาน ซึ่ งแบ่ง
ออกเป็ น 5 ขั้นตอน คือ
1. วิเคราะห์ ปัญหา โดยจะเริ่ มจากการวิเคราะห์ผลลัพธ์ ที่ตอ้ งการ (Output) แล้วย้อนกลับไป
ยังข้อมูลที่นาเข้าสู่ ระบบ (Input) ตลอดจนข้อมูลอื่น ๆ ที่เกี่ยวข้อง ในการที่จะนาไปใช้ใน
การประมวลผล
2. ออกแบบวิธีการแก้ปัญหา เมื่อทราบผลลัพธ์ที่ตอ้ งการและข้อมูลที่นาเข้าสู่ ระบบแล้ว ต้อง
กาหนดการวางแผนในการแก้ปัญหา โดยใช้วิธีเขียนลาดับขั้นตอนการแก้ปัญหาที่เรี ยกว่า
อัลกอริ ทึม (Algorithm ) และใช้เครื่ องมือสาหรับช่วยในการเขียนอัลกอริ ทึมเช่น การเขียน
รหัสจาลอง (Pseudo code) การเขียนผังงาน (Flowchart) เป็ นต้น
3. เขียนโปรแกรม เลือกภาษาคอมพิวเตอร์ ที่เหมาะสม โดยพิจารณาจากความสามารถของ
ผูเ้ ขียนโปรแกรมและประสิ ทธิ ภาพของภาษาคอมพิวเตอร์ น้ นั ๆ ให้เหมาะสมกับระบบงานที่
ต้องการแล้วเขียนชุดคาสัง่ เป็ นภาษาคอมพิวเตอร์ ตามอัลกอริ ทึมที่ได้ออกแบบไว้
4. ทดสอบและแก้ ไขโปแกรม ภายหลังจากเขียนโปรแกรมเสร็ จสิ้ น จะต้องทาการทดสอบ
โปรแกรมเพื่อหาข้อผิดพลาด (Error) ซึ่ งข้อผิดพลาดที่พบในขั้นตอนการทดสอบโปรแกรม
นั้น
5. จัดทาเอกสารประกอบ เมื่อโปแกรมผ่านการทดสอบแล้วก็จะต้องจัดทาเอกสารประกอบซึ่ ง
มีรายละเอียดของวิธีการใช้งานโปรแกรม วิธีการติดตั้งโปรแกรม ตลอดจนขั้นตอนในการ
พัฒนาโปรแกรม รวมถึงอัลกอริ ทึมและโปรแกรมต้นฉบับ (Source code) เพื่อประโยชน์ใน
กรณี ที่ตอ้ งการแก้ไขหรื อปรับปรุ งโปรแกรมภายหลัง1
ผั ง งาน (Flowchart) คื อ รู ป ภาพ (Image) หรื อ สั ญ ลัก ษณ์ ( Symbol) ที่ ใ ช้ เ ขี ย นแทนขั้น ตอน
คาอธิ บาย ข้อความ หรื อคาพูดที่ ใช้ในอัล กอริ ทึม (Algorithm) เพราะการนาเสนอขั้นตอนของงานให้
เข้าใจตรงกัน ระหว่างผูเ้ กี่ยวข้อง ด้วยคาพูด หรื อข้อความทาได้ยากกว่า3
ผังงานในการเขียนโปรแกรมเป็ นรู ปทรงเลขาคณิ ต ที่บรรจุรายละเอียดกระบวนการประมวลผล
โดยมีรูปทรงในการใช้งานหลัก ๆ (เฉพาะงานไมโครคอนโทรลเลอร์ ) ดังนี้
กระบวนการประมวลผล
การตัดสิ นใจ
ชุ ด กระบวนการที่ เตรี ย ม
ไว้แล้ว (โปรแกรมย่อย)
http://www.com5dow.com
2
http://158.108.203.7/student/simple/?t46.html
3
หน่ วยที่ 5 การเขียนโปรแกรมภาษาซีสาหรับไมโครคอนโทรลเลอร์ 113
ตารางที่ 5-1 ผังงานหลักที่ใช้งานไมโครคอนโทรลเลอร์ (ต่อ)
รู ปทรง ชนิดการประมวลผล ตัวอย่างเส้นทาง
จุดเชื่ อมในหน้าเดียวกัน
จุดเชื่อมในหน้าอื่น
ใส่ น้ ามันพืช
ด้าน 1 สุ กหรื อไม่
ไม่ใช่
ตอกไข่ใส่ ถว้ ยใส่ หมูสับ ใช่
กลับด้าน
ตีไข่
ด้าน 2 สุ กหรื อไม่
ไม่ใช่ ไม่ใช่
เข้ากันหรื อไม่ ใช่
ใช่ ตักใส่ จาน
กระทะร้อนหรื อไม่
ไม่ใช่ เสร็ จ
ใช่
B
114 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
ตัวอย่างการเขียนโปรแกรมไมโครคอนโทรลเลอร์
ตัวอย่างจงเขียนโปรแกรมไฟวิง่ ไบนารี่ ออกทางพอร์ ต 1
ขั้นที่ 1 เขียนลาดับขั้น (Algorithm) ขั้นที่ 2 แปลงลาดับขั้นเป็ นผังงาน (Flowchart)
1. กาหนดค่าตัวแปรที่ตอ้ งการใช้ เริ่ ม
2. นาค่าของตัวแปรส่ งเข้าไปยังพอร์ ต 1
กาหนดตัวแปร,ค่าเริ่ มต้น
3. หน่วงเวลา
4. เพิ่มค่าตัวแปร 1 ค่า ส่ งค่าตัวแปรไปยังพอร์ ต 1
5. กระโดดกลับไปทาในขั้นตอนที่ 2
หน่วงเวลา
เพิ่มค่าตัวแปร 1 ค่า
2. เขียนเป็ นภาษาซี
#include<reg52.h>
void delay(int count);
void main(void)
{
unsigned char value=0;
while(1)
{
P1=value;
delay(1000);
value++;
}
} //ต่อหน้าถัดไป
หน่ วยที่ 5 การเขียนโปรแกรมภาษาซีสาหรับไมโครคอนโทรลเลอร์ 115
void delay(int count)
{
int x,y;
for(x=0;x<count;x++)
{
for(y=0;y<500;y++)
{
}
}
}
5.2 ภาษาซีสาหรับไมโครคอนโทรลเลอร์
ไมโครคอนโทรลเลอร์ ไม่วา่ จะเป็ นตระกูลใดก็ตามจะทางานได้ก็ต่อเมื่อมีชุดคาสัง่ ที่สงั่ ให้ทางาน
ตามที่ตอ้ งการที่เรี ยกว่าโปรแกรม โดยคาสั่งหรื อโปรแกรมที่ไมโครคอนโทรลเลอร์ เข้าใจและสามารถ
ทางานได้อยูใ่ นรู ปของรหัสลอจิก 0 และ 1 หากนาลอจิกมาจับกลุ่มก็เป็ นเลขฐาน 16 ที่เรี ยกว่าภาษาเครื่ อง
ซึ่ งภาษาเครื่ องเป็ นภาษาที่มนุ ษย์ไม่สามารถเข้าใจได้เนื่ องจากเป็ นเลขฐาน 16 ทั้งหมด ดังนั้นในการเขียน
โปรแกรมจึงจาเป็ นต้องใช้ภาษาที่มนุ ษย์สามารถเข้าใจได้ โดยภาษาที่มนุ ษย์เข้าใจได้และใกล้เคี ยงกับ
ภาษาเครื่ องมากที่สุดคือภาษาแอสเซมบลี แต่เนื่ องจากการพัฒนางานโดยใช้ภาษาแอสเซมบลีเป็ นไปได้
ยากและซับซ้อน เพื่อให้ง่ายและรวดเร็ วต่อการพัฒนาโปรแกรมใช้งานไมโครคอนโทรลเลอร์ ภาษาที่
เหมาะสมคือภาษาซี สาหรับไมโครคอนโทรลเลอร์ ตระกู ล MCS-51 มีภาษาซี ของหลายบริ ษทั สาหรับ
เอกสารประกอบการเรี ยนเล่มนี้ เลือกใช้โปรแกรมภาษาซี ของบริ ษทั Keil Software ที่ชื่อว่า Keil uVision
โดยสามารถดาวน์โหลดเพื่อใช้งานได้ที่ http://www.keil.com ไม่วา่ จะใช้ภาษาใดในการเขียนโปรแกรม
เป้ าหมายคือต้องการภาษาเครื่ องเพื่ อบรรจุลงในตัวไมโครคอนโทรลเลอร์ ดังนั้นโปรแกรม Keil uVision
เป็ นเครื่ องมือที่ใช้ในการแปลงภาษาซี ให้เป็ นภาษาเครื่ องที่ใช้กบั ไมโครคอนโทรลเลอร์ MCS-51
โครงสร้างของภาษาซี
ภาษาซี เป็ นภาษาที่ ได้รับความนิ ยมสู งเป็ นภาษาโครงสร้างง่ายต่อการทาความเข้าใจง่ายต่อการ
นาไปพัฒนาต่อ สามารถเขียนโปรแกรมแยกเป็ นส่ วน ๆ โดยแต่ละส่ วนสามารถเรี ยกใช้งานได้จากส่ วน
อื่นของโปรแกรมทาให้สามารถแบ่งงานให้หลายคนไปพัฒนาได้ การเขียนโปรแกรมเป็ นส่ วน ๆ เรี ยกว่า
ฟั ง ก์ชั่น โครงสร้ า งของภาษาซี มี ส่ วนประกอบ 2 ส่ วนคื อ ส่ วนหัวโปรแกรมและส่ วนตัวโปรแกรม
ส่ วนตัวโปรแกรมจะมีฟังก์ชนั่ หลักชื่ อว่า main( ) เพื่อเป็ นส่ วนหลักในการทางาน และอาจมีฟังก์ชนั่ อื่นที่
ผูใ้ ช้เขียนขึ้นเพื่อใช้งานเรี ยกว่าฟังก์ชนั่ รอง
116 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
หัวโปรแกรม
ตัวโปรแกรม
ฟังก์ชนั่ หลัก main( )
ตัวแปรในภาษาซี
การประกาศตัวแปรคือการจองพื้นที่ในหน่วยความจาเพื่อนาไปใช้งานในฟั งก์ชนั่ โดยการใช้ชื่อ
ตัวแปรแทนการกาหนดเป็ นค่าแอดเดรสของหน่วยความจา รู ปแบบของการประกาศตัวแปรเป็ นดังนี้
ชนิดของตัวแปร ชื่อตัวแปร;
หลักการตั้งชื่อตัวแปรในภาษาซี
หลักการตั้งชื่อตัวแปรมีขอ้ กาหนดหลัก ๆ อยู่ 4 ประการด้วยกันคือ
1. ชื่อที่ต้ งั ต้องไม่ซ้ ากับคาสงวนของภาษาซี (คาที่ภาษาซี มีใช้งานอยูแ่ ล้ว) เช่น printf, bit, ...
2. การใช้ตวั อักษรใหญ่กบั ตัวอักษรเล็กถือว่าเป็ นคนละตัว
3. ตัวแรกของชื่อตัวแปรต้องเป็ นตัวอักษรเท่านั้นตัวถัดไปเป็ นตัวเลขได้
4. ชื่อตัวแปรห้ามเว้นวรรค
ชนิดของตัวแปรในภาษาซีสาหรับไมโครคอนโทรลเลอร์ Keil
พอยน์เตอร์
พอยน์เตอร์ เป็ นตัวชี้ ตาแหน่งข้อมูลของตัวแปรอื่นที่เก็บในหน่วยความจา โดยตัวพอยน์เตอร์ เป็ น
ตัว เก็ บ ต าแหน่ ง แทนการเก็ บ ข้อ มู ล ในการใช้ ง านพอยน์ เ ตอร์ จ ะใช้เ ครื่ อ งหมาย * น าหน้า และใช้
เครื่ องหมาย & เมื่อต้องการค่าตาแหน่งของตัวแปรอื่นโดยมีรูปแบบดังนี้
รู ปแบบ
ชนิดของตัวแปร * ชื่อตัวแปร;
ตัวอย่าง
int *n;
int i;
i=10;
n=&i;
อาร์เรย์
อาร์ เรย์เป็ นการเพิ่มความสามารถในการเก็บข้อมูลของตัวแปรให้สามารถเก็บเป็ นชุ ดได้ โดยใช้
ชื่ อตัวแปรเดิมได้ การใช้งานตัวแปรอาร์ เรย์จะใช้เครื่ องหมาย [ ] ต่อท้ายตัวแปรโดยภายในวงเล็บเป็ น
ตัวเลข ซึ่ งสามารถใช้งานได้หลายมิติ มีรูปแบบดังนี้
รู ปแบบ
ชนิดของตัวแปร ชื่อตัวแปร[ตัวเลข]; // เป็ นอาร์เรย์ 1 มิติ
ชนิดของตัวแปร ชื่อตัวแปร[ตัวเลข,ตัวเลข]; // เป็ นอาร์เรย์ 2 มิติ
ชนิดของตัวแปร ชื่อตัวแปร[ตัวเลข,ตัวเลข,ตัวเลข]; // เป็ นอาร์เรย์ 3 มิติ
118 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
ตัวดาเนินการในภาษาซี
ตัวดาเนินการในภาษาซี แบ่งตามลักษณะการกระทาได้ 3 กลุ่มด้วยกันคือ
1. ตัวกระทาทางคณิ ตศาสตร์
2. ตัวกระทาทางลอจิก
3. ตัวกระทาเปรี ยบเทียบ
โดยในแต่ละลักษณะมีรายละเอียดดังต่อไปนี้
การดาเนินการแบบทางเลือก
ในการเขียนโปรแกรมเพื่อให้ไมโครคอนโทรลเลอร์ ทางานในสิ่ งที่ตอ้ งการ นอกจากฟั งก์ชนั่ ที่
สั่งให้ทางานเป็ นลาดับแล้ว จาเป็ นต้องใช้ฟังก์ชนั่ ที่มีการทางานแบบให้เลือกเส้นทางการทางาน โดยการ
ท าตามเงื่ อ นไข หรื อ การให้ ท าซ้ า แบบมี เ งื่ อนไขหรื อไม่ มี เ งื่ อ นไข โดยฟั ง ก์ ชั่น ที่ มี ก ารท างานแบบ
ทางเลือกในภาษาซี มีดว้ ยกัน 4 ฟังก์ชนั่ คือ
1. ฟังก์ชนั่ if
2. ฟังก์ชนั่ if-else
3. ฟังก์ชนั่ if-else if-else
4. ฟังก์ชนั่ switch
120 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
ฟังก์ชนั่ if (ทางเลือกเดียว)
ฟังก์ชนั่ if เป็ นฟั งก์ชนั่ ที่มีการตรวจสอบเงื่อนไข โดยถ้าเงื่อนไขเป็ นจริ งจะทางานตามชุดฟังก์ชนั่
ที่กาหนดไว้
รู ปแบบ if (เงื่อนไข)
เท็จ
{ เงื่อนไข
……… จริ ง
ชุดฟังก์ชนั่ เมื่อเงื่อนไขเป็ นจริ ง
……… ชุดฟังก์ชนั่
}
ตัวอย่าง
if (x==10) ตรวจสอบเงื่อนไขว่า x เท่ากับ 10 หรื อไม่
{
P1=0x0F;
} ถ้า x เท่ากับ 10 ให้พอร์ต 1 มีค่าเป็ น 0FH
*หากชุดฟังก์ชนั่ ที่ให้ทางานเมื่อเงื่อนไขเป็ นจริ งมีเพียงฟังก์ชนั่ เดียว ไม่ตอ้ งใส่ วงเล็บปี กกา {…}
รู ปแบบ
if (เงื่อนไข 1)
ชุดฟังก์ชนั่ เมื่อ จริ ง
{ เงื่อนไข 1
เงื่อนไข 1 เป็ นจริ ง
……… ชุดฟังก์ชนั่ เมื่อ เท็จ
} เงื่อนไข 1 เป็ นจริ ง
ชุดฟังก์ชนั่ เมื่อ จริ ง
เงื่อนไข 2
else if (เงื่อนไข 2) เงื่อนไข 2 เป็ นจริ ง
{ เท็จ
……… ชุดฟังก์ชนั่ เมื่อ
} เงื่อนไข 2 เป็ นจริ ง
else if (เงื่อนไข… ชุดฟังก์ชนั่ เมื่อ
… ไม่มีเงื่อนไขใดเป็ นจริ ง
else
{
……… ชุดฟังก์ชนั่ เมื่อ
} ไม่มีเงื่อนไขใดเป็ นจริ ง
122 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
ตัวอย่าง
if (x<10) ตรวจสอบเงื่อนไขว่า x น้อยกว่า 10 หรื อไม่
P1=0x03;
else if (x<20)
P1=0x0F; ตรวจสอบเงื่อนไขว่า x น้อยกว่า 20 หรื อไม่
else if (x<30)
P1=0x30;
else ตรวจสอบเงื่อนไขว่า x น้อยกว่า 30 หรื อไม่
P1=0xF0;
ถ้า x ไม่เท่ากับค่าใดเลย
การดาเนินการแบบวนซ้ า
การเขี ย นโปรแกรมสั่ ง งานไมโครคอนโทรลเลอร์ ต้อ งมี ก ารท างานแบบวนซ้ า หรื อวนรอบ
เพื่อที่ จะทางานในชุ ดคาสั่งเดิ ม ลักษณะการทางานมี ท้ งั แบบมีเงื่ อนไขหรื อไม่มีเงื่ อนไข ในภาษาซี มี
ฟังก์ชนั่ สั่งงานให้ไมโครคอนโทรลเลอร์ ทางานซ้ ามีดงั นี้
1. ฟังก์ชนั่ for
2. ฟังก์ชนั่ while
3. ฟังก์ชนั่ while(1)
4. ฟังก์ชนั่ goto
5. ฟังก์ชนั่ do-while
ฟังก์ชนั่ for
ฟังก์ชนั่ for เป็ นฟังก์ชนั่ ที่ใช้ในกรณี ที่ทราบจานวนรอบที่จะทางานซ้ า โดยมีรูปแบบดังนี้
รู ปแบบ
for (ค่6.าเริ่ มต้น;เงื่อนไข;เพิม่ หรื อลดค่า) ค่าเริ่ มต้นตัวนับรอบ
{ 7. เท็จ ตรวจสอบเงื่อนไข
8.
…… ชุดฟังก์ชนั่ ที่ตอ้ งการทาซ้ า
} 9. จริ ง
10. ชุดฟังก์ชนั่ ที่ตอ้ งการทาซ้ า
เพิ่มหรื อลดค่าตัวนับรอบ
ไม่เท่ากับค่าใดเลย
124 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
ตัวอย่าง
กาหนด x เป็ นตัวนับและให้เริ่ มต้นที่ 0
for (x=0;x<10;x++)
{
P1=x;
ตรวจเงื่อนไขจะทาซ้ าเมื่อ x<10
}
เพิ่มค่า x ขึ้น 1 ค่า
ให้พอร์ ต 1 เท่ากับค่า x
ฟังก์ชนั่ while
ฟังก์ชนั่ while เป็ นฟังก์ชนั่ ที่ให้ทางานวนซ้ าหรื อวนรอบโดยมีการตรวจสอบเงื่อนไขก่อนถ้าหาก
เงื่ อนไขเป็ นจริ งจะทางานตามชุ ดฟั งก์ชั่นที่เตรี ยมไว้ เมื่อทางานในชุ ดฟั งก์ชนั่ ที่ เตรี ยมไว้เสร็ จจะมีการ
ตรวจสอบเงื่ อนไขอีก หากเงื่ อนไขเป็ นจริ งจะทางานในชุ ดฟั งก์ชั่นที่เตรี ยมไว้โดยทาแบบนี้ ไปเรื่ อย ๆ
จนกว่าเงื่อนไขจะเป็ นเท็จจะออกจากวงรอบการทาซ้ า โดยมีรูปแบบดังนี้
รู ปแบบ
while1.(ทดสอบเงื่อนไข)
{ 2.
3.
…… ชุดฟังก์ชนั่ ที่ตอ้ งการทาซ้ า
} 4. เท็จ ทดสอบเงื่อนไข
5.
จริ ง
ตัวอย่าง
ชุดฟังก์ชนั่ ที่ตอ้ งการทาซ้ า
while (x<100) เงื่อนไขคือ x น้อยกว่า 100
{
P1=x;
x=x+2; ให้พอร์ ต 1 เท่ากับ x
}
เพิ่มค่าใน x อีก 2
ฟังก์ชนั่ while(1)
ฟังก์ชนั่ while เป็ นฟังก์ชนั่ ที่ให้ทางานวนซ้ าหรื อวนรอบไม่รู้จบ เนื่องจาก 1 คือเป็ นจริ งตลอดไป
รู ปแบบ
while1.(1)
{ 2.
3.
…… ชุดฟังก์ชนั่ ที่ตอ้ งการทาซ้ า ชุดฟังก์ชนั่ ที่ตอ้ งการทาซ้ า
} 4.
ตัวอย่าง
while (1)
{
P1=x; ให้พอร์ ต 1 เท่ากับ x
x=x+1;
}
เพิ่มค่าใน x อีก 1
ฟังก์ชนั่ goto
ฟั ง ก์ชั่น goto เป็ นฟั ง ก์ ชั่น ที่ ใ ห้ท างานวนซ้ า หรื อวนรอบไม่ รู้จ บ โดยผลการท าเช่ น เดี ย วกับ
ฟังก์ชนั่ while(1) ต่างตรงที่ฟังก์ชนั่ goto ต้องกาหนดตาแหน่งที่กระโดดไปที่เรี ยกว่า ลาเบล (Label)
รู ปแบบ
goto1.label;
กระโดดไปยังลาเบล Loop1
126 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
ฟังก์ชนั่ do-while
ฟั งก์ชั่น do-while เป็ นฟั งก์ชั่นที่ ให้ทางานวนซ้ าหรื อวนรอบ โดยมีการตรวจสอบเงื่ อนไขการ
ทางานคล้ายกับฟั งก์ชนั่ while ต่างตรงที่ฟังก์ชนั่ do-while จะทางานในชุ ดฟั งก์ชนั่ ที่เตรี ยมไว้ทาซ้ าไป
ก่อน 1 รอบแล้วจึงตรวจสอบเงื่อนไข
รู ปแบบ
do 1.
{ 2.
3. ชุดฟังก์ชนั่ ที่ตอ้ งการทาซ้ า ชุดฟังก์ชนั่ ที่ตอ้ งการทาซ้ า
……
4. (ทดสอบเงื่อนไข);
} while
5. จริ ง
ทดสอบเงื่อนไข
ตัวอย่าง เท็จ
do
{
P1=x;
x=x+2; ให้พอร์ ต 1 เท่ากับ x
} while (x<100);
เพิ่มค่าใน x อีก 2
ฟังก์ชนั่ ที่ไม่รับค่าและไม่ส่งคืนค่า
เป็ นฟังก์ชนั่ รองที่เขียนขึ้นโดยการรวมชุ ดฟังก์ชนั่ เพื่อให้ทางานอย่างหนึ่งอย่างใด โดยเป็ นอิสระ
จากฟังก์ชนั่ หลัก (main) ซึ่ งข้อกาหนดในการประกาศใช้ของฟังก์ชนั่ ประเภทนี้มีดงั นี้
1. ข้อกาหนดในการไม่ รับค่ า ทาโดยใส่ (void) หลังชื่อฟังก์ชนั่
2. ข้อกาหนดในการไม่ ส่งคืนค่ า ทาโดยใส่ void หน้าชื่อฟังก์ชนั่
รู ปแบบ
#include <reg52.h> -ประกาศใช้งานฟังก์ชนั่ ต้องใส่ ;
void ชื่อฟังก์ชนั่ (void); -สร้างฟังก์ชนั่ ไม่ตอ้ งใส่
void main(void)
{ ประกาศใช้งานฟังก์ชนั่ ที่เขียนขึ้น
………
ชื่อฟังก์ชนั่ ( ); ฟังก์ชนั่ หลัก
………
} เรี ยกใช้ฟังก์ชนั่ ที่เขียนขึ้น
void ชื่อฟังก์ชนั่ (void)
{
ชุดฟังก์ชนั่ รองที่เขียนขึ้น
ชุดฟังก์ชนั่ ที่ตอ้ งการให้ทางาน
}
ตัวอย่าง
#include <reg52.h>
void delay(void); ประกาศใช้งานฟังก์ชนั่ delay
void main(void)
{
………
delay( ); ฟังก์ชนั่ หลัก
………
}
void delay(void)
{ เรี ยกใช้ฟังก์ชนั่ delay
int x,y;
for (x=0;x<10000;x++)
{
for (y=0;y<1000;y++) ชุดฟังก์ชนั่ ของฟังก์ชนั่ delay
{
}
}
}
128 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
ฟังก์ชนั่ ที่รับค่าแต่ไม่ส่งคืนค่า
เป็ นฟั งก์ชนั่ ที่เขียนขึ้นเพื่อแบ่งย่อยการทางานของฟั งก์ชนั่ หลัก (main) โดยมี การส่ งค่าเพื่อให้
ฟังก์ชนั่ รองที่เขียนขึ้นนาไปประมวลผลอย่างใดอย่างหนึ่ งตามที่ผสู ้ ร้างฟั งก์ชนั่ ต้องการ ซึ่ งข้อกาหนดใน
การประกาศใช้ของฟังก์ชนั่ ประเภทนี้มีดงั นี้
}
}
ชุดฟังก์ชนั่ ของฟังก์ชนั่ delay
หน่ วยที่ 5 การเขียนโปรแกรมภาษาซีสาหรับไมโครคอนโทรลเลอร์ 129
ฟังก์ชนั่ ที่ไม่รับค่าแต่ส่งคืนค่า
เป็ นฟังก์ชนั่ ที่เขียนขึ้นเพื่อแบ่งย่อยการทางานของฟังก์ชนั่ หลัก (main) เพียงแต่ไม่ได้ส่งข้อมูลเข้า
โปรแกรมเพื่อช่วยให้ทาการประมวลผล แต่มีการส่ งข้อมูลกลับมายังฟังก์ชนั่ หลัก ซึ่ งมีขอ้ กาหนดในการ
ประกาศใช้ของฟังก์ชนั่ ประเภทนี้มีดงั นี้
1. ข้อกาหนดในการไม่ รับค่ า ทาโดยใส่ (void) หลังชื่อฟังก์ชนั่
2. ข้อกาหนดในการส่ งคืนค่ า ทาโดยใส่ กาหนดชนิ ดของข้อมูลที่จะส่ งคืนหน้าชื่อฟังก์ชนั่ รอง
ที่สร้างขึ้น
รู ปแบบ
#include <reg52.h>
ชนิดของข้อมูล ชื่อฟังก์ชนั่ (void); ประกาศใช้งานฟังก์ชนั่ รองที่เขียนขึ้น
void main(void)
{
………
ฟังก์ชนั่ หลัก
ชื่อตัวแปรรับค่า=ชื่อฟังก์ชนั่ ( );
}
ชนิดของข้อมูล ชื่อฟังก์ชนั่ (void) เรี ยกใช้ฟังก์ชนั่ ที่เขียนขึ้น
{
ชุดฟังก์ชนั่ ที่สร้างขึ้น ชุดฟังก์ชนั่ รองที่เขียนขึ้น
return(ตัวแปรที่ตอ้ งการส่ งค่าคืน);
}
ตัวอย่าง
#include <reg52.h>
unsigned char ReadSW(void); ประกาศใช้งานฟังก์ชนั่ ReadSW
void main(void)
{
unsigned char x; ฟังก์ชนั่ หลัก
x=ReadSW( );
………
} รับค่าจากฟังก์ชนั่ ReadSW ไว้ใน
unsigned char ReadSW(void);
{ ตัวแปร x
unsigned char a;
a=P1+1;
}
return(a); ชุดฟังก์ชนั่ ของฟังก์ชนั่ ReadSW
5.4 สรุปสาระสาคัญ
ขั้นตอนในการพัฒ นาโปรแกรมคอมพิ ว เตอร์ (รวมทั้ง ไมโครคอนโทรลเลอร์ ) หลัก ๆ มี 5
ขั้นตอนเริ่ มจาก การวิเคราะห์ปัญหา การออกแบบวิธีแก้ปัญหา เขียนโปรแกรมและทดสอบโปรแกรม
และสุ ดท้ายคือการทาเอกสารประกอบเพื่อประโยชน์ในกรณี ที่ตอ้ งการแก้ไขหรื อปรับปรุ งในอนาคต
ภาษาที่ใช้ในการพัฒนาโปรแกรมไมโครคอนโทรลเลอร์ เลื อกใช้ภาษาซี ซ่ ึ งเป็ นภาษาที่ได้รับ
ความนิ ยมสู งเป็ นภาษาโครงสร้างง่ายต่อการทาความเข้าใจง่ายต่อการนาไปพัฒนาต่อ ส่ วนประกอบของ
ภาษาซี มีอยู่ด้วยกัน 2 ส่ วนคื อส่ วนหัวโปรแกรมและส่ วนตัวโปรแกรม ส าหรั บ ส่ วนตัวโปรแกรมจะ
ประกอบด้วยฟั งก์ชนั่ หลักซึ่ งจาเป็ นต้องมีซ่ ึ งเป็ นส่ วนที่ใช้สั่งงานให้ไมโครคอนโทรลเลอร์ โดยตรง และ
ฟั งก์ชั่นรองซึ่ งอาจจะมี หรื อไม่มีก็ได้ข้ ึนอยู่กบั ความซับซ้อนของโปรแกรม ฟั งก์ชั่นรองมีลกั ษณะเป็ น
โปรแกรมย่อยที่เขียนขึ้นเพื่อประมวลผลอย่างใดอย่างหนึ่งที่มีการใช้งานซ้ า ๆ
132 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
2. กฎการตั้งชื่อตัวแปรในภาษาซี มีอะไรบ้าง
3. ตัวแปรแต่ละชนิดมีขอบเขตการใช้งานอย่างไรบ้าง
แบบทดสอบหลังเรียนหน่ วยที่ 5
คาสั่ ง ให้นกั ศึกษาเลือกคาตอบที่ถูกต้องที่สุดเพียงคาตอบเดียว
รู ปใช้ตอบคาถามข้อที่ 1-5
1 2 3 4 5
16. ฟั ง ก์ ชั่น ที่ ไ ม่ มี ก ารคื น ค่ า ต้อ งใส่ ค าน าหน้ า 19. ฟังก์ชนั่ ที่รับค่าไม่เกิน 50000 ไว้ในตัวแปร A
ฟังก์ชนั่ ว่าอะไร ในวงเล็บท้ายชื่อฟังก์ชนั่ ต้องใส่ คาว่าอะไร
ก. main ก. (A)
ข. return ข. (char A)
ค. void ค. (int A)
ง. int ง. (unsigned char A)
จ. while(1) จ. (unsigned int A)
17. ฟั งก์ชนั่ ที่ไม่มีการรับค่าในวงเล็บท้ายชื่ อต้อง 20. ฟังก์ชนั่ ใดที่ไม่มีการรับค่าและไม่ส่งคืนค่า
ใส่ คาว่าอะไร ก. timecon(void)
ก. main ข. void timecon(void)
ข. while(1) ค. void timecon(int a)
ค. return ง. void timecon()
ง. int จ. int timecon(void)
จ. void
18. การส่ งค่าคืนก่อนจบฟังก์ชนั่ ใช้คาสั่งใด
ก. void
ข. return
ค. main
ง. int
จ. while(1)
เฉลยแบบทดสอบก่อนเรี ยน
1. ข 2. ค 3. ก 4. จ 5. ง 6. ข 7. ง 8. จ 9. ก 10. ข
11. ค 12. ก 13. จ 14. ค 15. ค 16. ก 17. ก 18. ค 19. จ 20. ค
เฉลยแบบทดสอบหลังเรี ยน
1. ง 2. ก 3. ค 4. ง 5. จ 6. ง 7. ข 8. จ 9. ก 10. ค
11. ง 12. ข 13. ง 14. ก 15. จ 16. ค 17. จ 18. ข 19. จ 20. ข
หน่ วยที่ 6
เครื่ องมือช่ วยพัฒนางานไมโครคอนโทรลเลอร์
หัวข้อเรื่ อง
6.1 เครื่ องมือแปลงภาษาซีเป็ นภาษาเครื่ อง
6.2 เครื่ องมือจาลองการทางาน
6.3 เครื่ องมือโหลดไฟล์ลงชิพไมโครคอนโทรลเลอร์
สาระสาคัญ
เครื่ องมือช่วยพัฒนางานไมโครคอนโทรลเลอร์ เป็ นเครื่ องมืออานวยความสะดวกทาให้สามารถ
พัฒนางานได้ง่ายและเร็ ว เครื่ องมือที่นามาใช้ 3 อย่างด้วยกัน คือ เครื่ องมือแปลงภาษาซี เป็ นภาษาเครื่ อง
เครื่ องมือจาลองการทางาน และเครื่ องมือโหลดไฟล์ลงชิพ
สมรรถนะประจาหน่วยการเรี ยนรู ้
รู ้และความเข้าใจการใช้งานและสามารถใช้เครื่ องมือช่วยพัฒนางานไมโครคอนโทรลเลอร์
จุดประสงค์การเรี ยนรู ้
จุดประสงค์ ทวั่ ไป
1. เพื่อให้มีความรู ้เกี่ยวกับเครื่ องมือแปลงภาษาซีเป็ นภาษาเครื่ อง
2. เพื่อให้มีความรู ้เกี่ยวกับเครื่ องมือจาลองการทางาน
3. เพื่อให้มีความรู ้เกี่ยวกับเครื่ องมือโหลดไฟล์ลงชิพไมโครคอนโทรลเลอร์
จุดประสงค์ เชิ งพฤติกรรม
1. บอกเกี่ยวกับเครื่ องมือแปลงภาษาซีเป็ นภาษาเครื่ องได้
2. บอกเกี่ยวกับเครื่ องมือจาลองการทางานได้
3. บอกเกี่ยวกับเครื่ องมือโหลดไฟล์ลงชิพไมโครคอนโทรลเลอร์ ได้
4. ทาแบบฝึ กหัดเสร็ จทันเวลาและทาแบบทดสอบผ่านเกณฑ์ที่กาหนด
138 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
แบบทดสอบก่อนเรียนหน่ วยที่ 6
คาสั่ ง ให้นกั ศึกษาเลือกคาตอบที่ถูกต้องที่สุดเพียงคาตอบเดียว
1. เครื่ องมือช่วยในการพัฒนางานหลัก ๆ มีกี่ 5. หากใส่ สกุลไฟล์เอกสารไม่ถูกต้องผลที่จะ
ชนิด เกิดขึ้นคือข้อใด
ก. 1 ชนิด ก. ไม่สามารถพิมพ์โปรแกรมได้
ข. 2 ชนิด ข. ข้อความจะเป็ นสี จางทั้งหมด
ค. 3 ชนิด ค. ข้อความจะเป็ นตัวเอียงทั้งหมด
ง. 4 ชนิด ง. ข้อความจะมีลกั ษณะเดียวกัน
จ. 5 ชนิด จ. ไม่มีผลที่ต่างกัน
2. เครื่ องมือที่ใช้แปลงภาษาซีเป็ นภาษาเครื่ อง 6. การเลือกออปชัน่ ใดเพื่อให้เครื่ องมือแปลง
คือข้อใด ภาษาซีเป็ นภาษาเครื่ องสร้างไฟล์ภาษาเครื่ อง
ก. Keil uVision ก. Create HEX File
ข. MS Word ข. Generate HEX File
ค. Proteus ค. Build HEX File
ง. ISP Programmer 3.0a ง. Open HEX File
จ. Protel99SE จ. Make HEX File
3. การเลื อ กเบอร์ ซี พี ยูเ พื่ อ ใช้เ ขี ย นโปรแกรม 7. เมื่ อ พิ ม พ์ โ ปรแกรมเสร็ จ สิ้ น แล้ ว ต้อ งการ
จะต้องทาในขั้นตอนใด แปลงเป็ นภาษาเครื่ องจะต้องทาอย่างไร
ก. หลังเปิ ดใช้เครื่ องมือแปลงภาษา ก. คลิกที่ปุ่ม Make Target
ข. ถัดจากการสร้างโปรเจคไฟล์ ข. คลิกที่ปุ่ม Open Target
ค. ก่อนทาการแปลงภาษา ค. คลิกที่ปุ่ม Build Target
ง. ก่อนเปิ ดใช้เครื่ องมือแปลงภาษา ง. คลิกที่ปุ่ม Generate Target
จ. ไม่ตอ้ งเลือก จ. คลิกที่ปุ่ม Create Target
4. การสร้างไฟล์เอกสารสาหรับเขียนภาษาซี 8. หากการแปลงไม่ มี ข ้อ ผิ ด พลาดจะปรากฏ
จะต้องตั้งชื่อไฟล์เป็ นสกุลใด ข้อความใด
ก. .DOC ก. “main” - OK.
ข. .XLS ข. “main” - Pass.
ค. .BAS ค. “main” - 0 Error(s), 0 Warning (s).
ง. .HEX ง. “main” - 0 Warning (s), 0 Error(s).
จ. .C จ. “main” - 0 Erase (s), 0 Warming (s).
หน่ วยที่ 6 เครื่ องมือช่วยพัฒนางานไมโครคอนโทรลเลอร์ 139
9. เครื่ องมื อ ที่ ใ ช้ในการจาลองการท างานของ 13. การต่อสายเชื่อมทาได้โดยวิธีใด
ไมโครคอนโทรลเลอร์คือข้อใด ก. คลิกขวาที่ตวั อุปกรณ์ 2 ครั้ง
ก. Keil uVision ข. คลิกที่ปลายขาอุปกรณ์ 2 ครั้ง
ข. MS Word ค. คลิกที่ตวั อุปกรณ์
ค. Proteus ง. คลิกที่โดนขาอุปกรณ์
ง. ISP Programmer 3.0a จ. คลิกที่ปลายขาอุปกรณ์
จ. Protel99SE 14. หากต้องการลบอุปกรณ์ทาได้โดยวิธีใด
10. ก่อนการจัดวางอุปกรณ์ เพื่อจาลองการทางาน ก. คลิกขวาที่ตวั อุปกรณ์ 2 ครั้ง
จะต้องทาสิ่ งใดก่อน ข. คลิกซ้ายที่ตวั อุปกรณ์ 2 ครั้ง
ก. ล้างพื้นที่ใช้งาน ค. คลิกซ้าย-ขวาที่ตวั อุปกรณ์
ข. ลบอุปกรณ์ในช่องรายการ ง. กดปุ่ ม Delete
ค. ลากอุปกรณ์วางได้โดยตรง จ. กดแป้นพิมพ์ Delete
ง. วางสายเชื่อมต่อก่อน 15. การโหลดไฟล์ภาษาเครื่ องลงตัวซีพียเู พื่อ
จ. เลื อกอุปกรณ์ที่ตอ้ งการมาไว้ในช่ อง จาลองการทางานทาได้โดยวิธีใด
รายการ ก. ดับเบิลคลิกที่ตวั ซี พียูแล้วโหลดไฟล์
11. อุปกรณ์ใดที่ไม่สามารถจาลองการทางานได้ ในช่อง Program file
ก. ไม่มีขาไฟเลี้ยง ข. คลิกปุ่ ม Open file
ข. LED ค. เข้าเมนู Option แล้วเลือกไฟล์
ค. ลาโพง ง. เข้าเมนู Source แล้วเลือกไฟล์
ง. อุปกรณ์ที่ไม่มีโมเดล จ. คลิกปุ่ ม Code
จ. ไม่มีตวั ถัง (Foot print) 16. การกาหนดค่าคริ สตอลทาได้โดยวิธีใด
12. เลือกไมโครคอนโทรลเลอร์ ที่ Category ใด ก. ดับเบิลคลิกที่ปุ่ม Clock Frequency
ก. Microcontroller ICs ข. ดับเบิลคลิกที่ตวั ไมโครคอนโทรลเลอร์ ใส่
ข. Microprocessor ICs ค่าในช่อง Clock Frequency
ค. Microfarad ICs ค. คลิกขวาที่ตวั ไมโครคอนโทรลเลอร์ ใส่ ค่า
ง. Microprogrammer ICs ในช่อง Clock Frequency
จ. Microcomputer ICs ง. คลิกซ้ายที่ตวั ไมโครคอนโทรลเลอร์ ใส่ ค่า
ในช่อง Clock Frequency
จ. ดับเบิลคลิกที่ตวั ไมโครคอนโทรลเลอร์ ใส่
ค่าในช่อง Clock Frequency
140 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
ขั้นตอนที่ 1 สร้างโปรเจคไฟล์
เป็ นขั้นตอนแรกที่ตอ้ งทาก่ อนที่จะเริ่ มเขียนโปรแกรม ซึ่ งขั้นตอนการสร้ างโปรเจคไฟล์ทาได้
ตามลาดับดังนี้
1. สร้างโปรเจคไฟล์ โดยคลิกเมนู Project เลือก New ?Vision Project…
1 สร้างโปรเจคไฟล์
3 ตั้งชื่อโปรเจคไฟล์
4 เลือกเบอร์ไมโครคอนโทรลเลอร์
5. กดปุ่ ม Yes
ขั้นตอนที่ 2 สร้างไฟล์ภาษาซี
6. สร้างไฟล์เอกสารเพื่อใช้พิมพ์โปรแกรมโดยทาการคลิกที่เมนู File เลือก New
6 สร้างไฟล์เอกสารใหม่
9 ตั้งชื่อไฟล์ main.c
11. คลิกที่ไฟล์ (main.c ที่ได้บนั ทึกในขั้นตอนที่ 9 ) กดปุ่ ม Add แล้วกดปุ่ ม Close หรื อใช้วธิ ีการ
ดับเบิลคลิกที่ไฟล์
11 คลิกไฟล์เพื่อเพิ่มในกรุ๊ ป
12 ปรากฏไฟล์สกุล .C
รู ปที่ 6-14 รายชื่อไฟล์ที่ถูกเพิ่มเข้าไปใน Source Group1
ขั้นตอนที่ 3 ตั้งค่าออปชัน่
เป็ นขั้นตอนตั้งค่าคุณสมบัติการใช้งานโดยมีข้ นั ตอนดังนี้
15 เลือกสร้างไฟล์ภาษาเครื่ อง
ขั้นตอนที่ 4 เขียนโปรแกรมภาษาซี
เขียนชุ ดฟั งก์ชนั่ ภาษาซี ที่ตอ้ งการให้ไมโครคอนโทรลเลอร์ ทางานตามต้องการลงในหน้าต่าง
ไฟล์ .c ที่สร้างขึ้น
16 คลิกเพื่อแปลงภาษาซีเป็ นภาษาเครื่ อง
17 ข้อความแสดงผลการแปลงที่ไม่มีขอ้ ผิดพลาด
ขั้นตอนที่ 6 ทดสอบโปรแกรม
โปรแกรม Keil µVision4 มี ส่ ว นที่ ใ ช้ ส าหรั บ ทดสอบโปรแกรมที่ ผู ้ใ ช้ เ ขี ย นขึ้ นมา โดยตัว
โปรแกรมก็สามารถทดสอบได้ในเบื้องต้นที่ไม่มีการต่อวงจรภายนอก เพื่อให้ผใู ้ ช้งานสามารถดูผลได้
19. คลิกที่เมนู Debug เลือก Start/Stop debug session (คลิกเพื่อเริ่ ม/หยุด ส่ วนทดสอบ
โปรแกรม)
เครื่ องมือหมุนอุปกรณ์ที่เลือก
พื้นที่ใช้งาน
แถบเลือกโหมด
เครื่ องมือควบคุมการจาลอง
E โหมดเครื่ องมือวัด
การใช้งานโปรแกรม Proteus
การใช้งานโปรแกรม Proteus มีข้ นั ตอนอยู่ 5 ขั้นตอนคือ
1. เลือกอุปกรณ์อิเล็กทรอนิกส์ที่ตอ้ งการ
2. การวางอุปกรณ์
3. เชื่อมต่อสาย
4. โหลดไฟล์ภาษาเครื่ องลงชิพไมโครคอนโทรลเลอร์
5. จาลองพฤติกรรมและสังเกตผล
เลือกอุปกรณ์อิเล็กทรอนิกส์
การเลือกใช้อุปกรณ์ ของโปรแกรม Proteus จะต่างจากโปรแกรมจาลองพฤติ กรรมอื่ นๆตรงที่
จะต้องเลือกอุปกรณ์ที่ตอ้ งการใช้ไว้ในรายการใช้งานก่อน แล้วค่อยนาอุปกรณ์ในรายการมาวางในพื้นที่
ต่อใช้งาน ซึ่ งการเลือกอุปกรณ์มีข้ นั ตอนดังนี้
1. เลือกโหมดอุปกรณ์ (ไอคอนรู ปออปแอมป์ )
2. กดปุ่ ม P
1 คลิกเลือกโหมดอุปกรณ์
2 คลิกปุ่ ม P
รู ปที่ 6-29 การเลือกอุปกรณ์
หน่ วยที่ 6 เครื่ องมือช่วยพัฒนางานไมโครคอนโทรลเลอร์ 153
3. คลิกรายการอุปกรณ์ในหมวด ( Category) จะปรากฏรายการอุปกรณ์ในหมวด
4. ดับเบิลคลิกอุปกรณ์ที่ตอ้ งการใช้งาน
3 คลิกหมวดอุปกรณ์
4 ดับเบิลคลิกอุปกรณ์ที่ตอ้ งการใช้
5 อุปกรณ์ที่ได้จากการเลือก
การวางอุปกรณ์
เมื่อเลือกอุปกรณ์ที่ตอ้ งการใช้เสร็ จแล้วในขั้นตอนที่ผา่ นมา ขั้นตอนนี้ คือการนาอุปกรณ์ที่เลือก
มาวางในพื้นที่ใช้งาน ปฏิบตั ิดงั นี้
1. คลิกอุปกรณ์ที่ตอ้ งการวางจากช่องรายการอุปกรณ์
2. คลิกหมุน (หากต้องการหมุน)
3. วางตัวอุปกรณ์โดยการ
- คลิกครั้งที่ 1 ในพื้นที่ใช้งานเพื่อใช้อุปกรณ์
- คลิกครั้งที่ 2 เพื่อวางในตาแหน่งที่ตอ้ งการ
4. การย่อขยายมุมมอง (Zoom in/Zoom out) ทาได้โดยการกลิ้งลูกกลิ้งเมาส์
5. การลบอุปกรณ์โดยการคลิกขวาที่ตวั อุปกรณ์ 2 ครั้ง
การเชื่อมต่อสาย
ในการเชื่อมต่อสายสัญญาณ ทาได้ดงั นี้
1. เลื่อนเมาส์ ไปยังขาอุปกรณ์ที่ตอ้ งการต่อสายสัญญาณ เมื่อโปรแกรมพร้อมที่จะเชื่ อมต่อสาย
จะปรากฏเป็ นสี่ เหลี่ยมบริ เวณขาอุปกรณ์ ทาการกดคลิกเมาส์เพื่อเริ่ มต่อสาย
2. ลากเมาส์ไปยังขาอุปกรณ์ที่ตอ้ งการต่อขาคลิกเมาส์เมื่อปรากฏเป็ นสี่ เหลี่ยม
3. การเชื่อมต่อระหว่างสายสัญญาณ ทาได้โดยการคลิกที่สายสัญญาณเพื่อเริ่ มการเชื่ อมได้เลย
หน่ วยที่ 6 เครื่ องมือช่วยพัฒนางานไมโครคอนโทรลเลอร์ 155
โหลดไฟล์ภาษาเครื่ องลงชิพ
ขั้นตอนนี้เป็ นขั้นตอนการนาไฟล์ภาษาเครื่ องที่ได้จากการเขียนโปรแกรมภาษาซี แล้วผ่านการ
แปลงมา โดยมีข้ นั ตอนดังนี้
1. ดับเบิลคลิกที่ตวั ไมโครคอนโทรลเลอร์ (ในพื้นที่ต่อวงจร) จะปรากฏหน้าต่างกาหนดค่า
2. โหลดไฟล์ภาษาเครื่ อง (ไฟล์สกุล HEX)
3. แก้ค่าความถี่คริ สตอลตามที่ออกแบบไว้ (การทดลองในเล่มนี้ใช้ 11.0592MHz)
คลิกเพื่อโหลดไฟล์ภาษาเครื่ อง 2
3 แก้ความถี่เป็ น 11.0592MHz
จาลองพฤติกรรม
เมื่อทาทุกขั้นตอนจนครบแล้ว พร้อมที่จะจาลองพฤติกรรมของวงจรไมโครคอนโทรลเลอร์ ที่มี
โปรแกรมที่ได้จากการโหลดจากขั้นตอนที่ผา่ นมา ขั้นตอนการจาลองพฤติกรรมมีปุ่มใช้งานหลัก ๆ 2 ปุ่ ม
คือ
1. ปุ่ ม Play เพื่อเริ่ มจาลองพฤติกรรม
2. ปุ่ ม Stop เพื่อหยุดการจาลอง
2 ปุ่ มหยุดการจาลอง
จากรู ป ที่ 6-37 เป็ นวงจรที่ ไ ม่ มี ส่ ว นที่ เ ป็ นวงจรบัฟ เฟอร์ ที่ ใ ช้ใ นการจัด รู ป สั ญ ญาณที่ ม าจากพอร์ ต
เครื่ องพิมพ์ของเครื่ องคอมพิวเตอร์ เพื่อป้ องกันการเสี ยหายอาจเกิดขึ้นกับพอร์ ตเครื่ องพิมพ์ จึงต้องใส่ ตวั
ต้านทานอนุ กรมไปกับสายสัญญาณเชื่ อมต่อซึ่ งใช้ค่าระหว่าง 47 โอห์มจนถึง 240 โอห์ม (ในรู ปวงจรใช้
ค่า 100 โอห์ม) ความยาวของสายสัญญาณระหว่างพอร์ ตเครื่ องพิมพ์ถึงวงจรไมโครคอนโทรลเลอร์ ไม่
ควรเกิ น 50 เซนติ เ มตรเนื่ อ งจากอาจท าให้ เ กิ ด ปั ญ หาในการใช้ ง านได้ สามารถดาวน์ โ หลดได้ที่
http://www.kmitl.ac.th/~kswichit/IspPgm30a/ISP-Pgm30a.html โปรแกรม ISP Flash Programmer 3.0a
สามารถใช้กบั ไมโครคอนโทรลเลอร์ ในตระกูล MCS-51 ได้ท้ งั หมด 5 เบอร์ คือ AT89S51, AT89S52,
AT89S53, AT89S8252 ซึ่งหน้าตาโปรแกรมเป็ นดังรู ปที่ 6-38
1 เลือกเบอร์ MCU
3 ปุ่ มอัดข้อมูลในบัฟเฟอร์ลงชิพ
2 เลือกไฟล์ที่ตอ้ งการอัดลงชิพ
6.4 สรุปสาระสาคัญ
เครื่ องมือที่นามาใช้ในการพัฒนางานด้านไมโครคอนโทรลเลอร์มี 3 ชนิดคือ
1. เครื่ องมื อที่ ใ ช้แปลงภาษาซี เป็ นภาษาเครื่ อง เลื อกใช้โปรแกรม Keil µVision4 เนื่ องจากเป็ น
โปรแกรมที่มีประสิ ทธิ ภาพในการแปลงภาษาสู งสุ ด นัน่ ก็คือได้ภาษาเครื่ องที่ มีขนาดเล็กที่สุด
เมื่อเทียบกับโปรแกรมอื่น ๆ ที่มีใช้ในปั จจุบนั
2. เครื่ องมือที่ใช้จาลองการทางาน ในการนาวงจรไมโครคอนโทรเลอร์ ที่ใช้งานจริ ง จะต้องนาไฟล์
ภาษาเครื่ องที่ได้ไปอัดลงชิ พไมโครคอนโทรลเลอร์ เพื่อตรวจสอบการทางาน ซึ่ งหากใช้วิธีการ
จาลองการทางานจะทาให้ทราบผลที่เร็ วกว่า เครื่ องมื อที่ใช้ในการจาลองนี้ เลื อกใช้โปรแกรม
Proteus เนื่องจากสามารถจาลองการทางานของไมโครคอนโทรลเลอร์ได้ดีที่สุด
3. ไมโครคอนโทรลเลอร์ เบอร์ ที่ ข้ ึ นต้นด้วย AT89S มี หน่ วยความจาเก็ บโปรแกรมภายในแบบ
แฟลชที่ ส ามารถโปรแกรมตัว เองได้ใ นขณะที่ ย งั อยู่ใ นวงจรใช้ง านที่ เรี ย กว่า ISP (In system
programming) เครื่ องมือที่ใช้งานในการโปรแกรมข้อมูลลงชิพไอซี ไมโครคอนโทรเลอร์ น้ ีชื่อว่า
ISP Flash Programmer 3.0a
160 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
4. จงบอกขั้นตอนการใช้เครื่ องมือจาลองการทางานของไมโครคอนโทรลเลอร์
แบบทดสอบหลังเรียนหน่ วยที่ 6
คาสั่ ง ให้นกั ศึกษาเลือกคาตอบที่ถูกต้องที่สุดเพียงคาตอบเดียว
1. เครื่ องมือที่ใ ช้แปลงภาษาซี เป็ นภาษาเครื่ อง 5. หากใส่ ส กุ ล ไฟล์เ อกสารไม่ ถู ก ต้องผลที่ จ ะ
คือข้อใด เกิดขึ้นคือข้อใด
ก. Keil uVision ก. ไม่สามารถพิมพ์โปรแกรมได้
ข. MS Word ข. ข้อความจะมีลกั ษณะเดียวกัน
ค. Proteus ค. ข้อความจะเป็ นสี จางทั้งหมด
ง. ISP Programmer 3.0a ง. ข้อความจะเป็ นตัวเอียงทั้งหมด
จ. Protel99SE จ. ไม่มีผลที่ต่างกัน
2. เครื่ องมือช่วยในการพัฒนางานหลัก ๆ มีกี่ 6. การเลื อ กออปชั่นใดเพื่ อให้ เครื่ องมื อแปลง
ชนิด ภาษาซีเป็ นภาษาเครื่ องสร้างไฟล์ภาษาเครื่ อง
ก. 1 ชนิด ก. Create HEX File
ข. 2 ชนิด ข. Generate HEX File
ค. 3 ชนิด ค. Build HEX File
ง. 4 ชนิด ง. Open HEX File
จ. 5 ชนิด จ. Make HEX File
3. การเลื อ กเบอร์ ซี พี ยูเ พื่ อ ใช้เ ขี ย นโปรแกรม 7. เมื่ อ พิ ม พ์ โ ปรแกรมเสร็ จ สิ้ น แล้ ว ต้อ งการ
จะต้องทาในขั้นตอนใด แปลงเป็ นภาษาเครื่ องจะต้องทาอย่างไร
ก. หลังเปิ ดใช้เครื่ องมือแปลงภาษา ก. คลิกที่ปุ่ม Make Target
ข. ก่อนทาการแปลงภาษา ข. คลิกที่ปุ่ม Build Target
ค. ก่อนเปิ ดใช้เครื่ องมือแปลงภาษา ค. คลิกที่ปุ่ม Open Target
ง. ถัดจากการสร้างโปรเจคไฟล์ ง. คลิกที่ปุ่ม Generate Target
จ. ไม่ตอ้ งเลือก จ. คลิกที่ปุ่ม Create Target
4. การสร้ า งไฟล์เ อกสารส าหรั บ เขี ย นภาษาซี 8. หากการแปลงไม่ มี ข ้อ ผิ ด พลาดจะปรากฏ
จะต้องตั้งชื่อไฟล์เป็ นสกุลใด ข้อความใด
ก. .DOC ก. “main” - OK.
ข. .C ข. “main” - Pass.
ค. .BAS ค. “main” - 0 Warning (s), 0 Error(s).
ง. .HEX ง. “main” - 0 Error(s), 0 Warning (s).
จ. .XLS จ. “main” - 0 Erase (s), 0 Warming (s).
162 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
เฉลยแบบทดสอบก่อนเรี ยน
1. ค 2. ก 3. ข 4. จ 5. ง 6. ก 7. ค 8. ค 9. ค 10. จ
11. ง 12. ข 13. จ 14. ก 15. ก 16. ข 17. ง 18. ค 19. จ 20. จ
เฉลยแบบทดสอบหลังเรี ยน
1. ก 2. ค 3. ง 4. ข 5. ข 6. ก 7. ข 8. ง 9. ง 10. จ
11. ข 12. ค 13. ข 14. ค 15. จ 16. ก 17. ข 18. ข 19. ค 20. จ
หน่ วยที่ 7
ใบงานการทดลอง
หัวข้อเรื่ อง
ใบงานที่ 7.1 การสร้างวงจรภาคจ่ายไฟในแผงวงจรไมโครคอนโทรลเลอร์
ใบงานที่ 7.2 การสร้างวงจรประมวลผลหลัก (วงจรไมโครคอนโทรลเลอร์ )
ใบงานที่ 7.3 การสร้างวงจรโปรแกรมข้อมูลลงไมโครคอนโทรลเลอร์
ใบงานที่ 7.4 การสร้างวงจรเอาท์พุทพอร์ ต
ใบงานที่ 7.5 การใช้งานพอร์ ตทาหน้าที่เป็ นเอาท์พุทพอร์ ตเบื้องต้น
ใบงานที่ 7.6 การสร้างวงจรสวิตช์
ใบงานที่ 7.7 การใช้งานพอร์ ตทาหน้าที่เป็ นอินพุทพอร์ ตเบื้องต้น
ใบงานที่ 7.8 การเขียนโปรแกรมหน่วงเวลา
ใบงานที่ 7.9 การสร้างวงจรขับลาโพง
ใบงานที่ 7.10 การเขียนโปรแกรมสร้างความถี่เสี ยง
ใบงานที่ 7.11 การสร้างวงจรแสดงผลตัวเลข 7 ส่ วน
ใบงานที่ 7.12 การเขียนโปรแกรมแสดงผลตัวเลข 7 ส่ วน
ใบงานที่ 7.13 การเขียนโปรแกรมรับสวิตช์เพื่อแสดงผลตัวเลข 7 ส่ วน
ใบงานที่ 7.14 การเขียนโปรแกรมนับพัลส์ดว้ ยวงจรเคาน์เตอร์
ใบงานที่ 7.15 การสร้างวงจรขับมอเตอร์ ไฟฟ้ากระแสตรง
ใบงานที่ 7.16 การเขียนโปรแกรมควบคุมมอเตอร์ ไฟฟ้ากระแสตรง
ใบงานที่ 7.17 การสร้างวงจรขับสเต็ปเปอร์มอเตอร์
ใบงานที่ 7.18 การเขียนโปรแกรมควบคุมสเต็ปเปอร์มอเตอร์
ใบงานที่ 7.19 การเขียนโปรแกรมควบคุมเซอร์ โวมอเตอร์
ใบงานที่ 7.20 การสร้างวงจรแสดงผลจอผลึกเหลว (LCD)
ใบงานที่ 7.21 การเขียนโปรแกรมแสดงผลจอผลึกเหลว (LCD)
สาระสาคัญ
ใบงานในหน่ วยการเรี ยนนี้ เป็ นใบงานที่ รวบรวมขึ้ นเพื่อให้ผูเ้ รี ยนสามารถเรี ยนรู ้ การใช้งาน
ไมโครคอนโทรลเลอร์ ข้ นั พื้นฐาน ตลอดจนมีทกั ษะในการสร้างวงจรเพื่อประยุกต์ใช้งานได้ดว้ ยตนเอง
166 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
โดยใบงานมี ท้ งั หมด 21 ใบงานซึ่ ง เป็ นใบงานขั้นพื้นฐานเพื่ อให้นัก ศึ กษาที่ ย งั ไม่มี พ้ื นฐานการเขี ย น
โปรแกรมควบคุมงานด้วยไมโครคอนโทรลเลอร์ มาก่อนสามารถเรี ยนรู ้ได้ โดยในแต่ละใบงานมีตวั อย่าง
การเขี ย นโปรแกรมขั้น พื้ นฐานเพื่ อให้นัก ศึ ก ษาสามารถเข้า ใจได้ง่ า ยและเป็ นแนวทางที่ จะฝึ กเขี ย น
โปรแกรมควบคุมงานในโจทย์แบบฝึ กหัดได้
สมรรถนะประจาหน่วยการเรี ยนรู ้
ปฏิ บตั ิ การสร้ างวงจรไมโครคอนโทรลเลอร์ และวงจรเชื่ อมต่อได้ดว้ ยตนเอง เขี ยนโปรแกรม
สั่งงานด้วยภาษาซี โดยใช้โปรแกรม Keil uVision จาลองการทางานด้วยโปรแกรม Proteus และทดลอง
ด้วยวงจรไมโครคอนโทรลเลอร์ ที่สร้างขึ้น
จุดประสงค์การเรี ยนรู ้
จุดประสงค์ ทวั่ ไป
1. เพื่อให้มีทกั ษะในการสร้าง (ประกอบ) วงจรไมโครคอนโทรลเลอร์ และวงจรต่อพ่วง
2. เพื่อให้มีทกั ษะในการตรวจสอบวงจรในกรณี ที่วงจรไม่ทางาน
3. เพื่อให้มีทกั ษะในการแก้ไขปั ญหาในกรณี ที่วงจรไม่ทางาน
4. เพื่อให้มีความรู ้เกี่ยวกับการเขียนโปรแกรมภาษาซี สาหรับไมโครคอนโทรลเลอร์
5. เพื่อให้เข้าใจการทางานของวงจรด้วยการจาลองการทางานด้วยโปรแกรม Proteus
6. เพื่อให้สามารถทดลองด้วยวงจรจริ งที่สร้างขึ้นเอง
7. เพื่อให้มีความรับผิดชอบในการจัดทาใบงานให้เสร็ จทันเวลา
จุดประสงค์ เชิ งพฤติกรรม
1. สร้าง (ประกอบ) วงจรไมโครคอนโทรลเลอร์ และวงจรต่อพ่วงได้
2. ตรวจสอบวงจรในกรณี ที่วงจรไม่ทางานได้
3. แก้ไขปั ญหาในกรณี ที่วงจรไม่ทางานได้
4. เขียนโปรแกรมภาษาซี ควบคุมไมโครคอนโทรลเลอร์ ตามตัวอย่างได้
5. เขียนโปรแกรมภาษาซี ควบคุมไมโครคอนโทรลเลอร์ ในงานที่มอบหมายได้
6. ทดลองวงจรด้วยการจาลองการทางานด้วยโปรแกรม Proteus ได้
7. ทดลองด้วยวงจรจริ งที่สร้างขึ้นเองได้
8. ทาใบงานเสร็ จทันเวลา
ใบงานที่ 7.1
การสร้ างวงจรภาคจ่ ายไฟในแผงวงจรไมโครคอนโทรลเลอร์
1. จุดประสงค์ ทวั่ ไป
เพื่อให้นกั ศึกษาสามารถสร้ างวงจรภาคจ่ายไฟเพื่อนาไปใช้งานในวงจรไมโครคอนโทรลเลอร์
กับวงจรต่อพ่วงได้
2. จุดประสงค์ เชิงพฤติกรรม
1. บอกส่ วนประกอบของวงจรภาคจ่ายไฟได้
2. บอกการทางานของอุปกรณ์ต่าง ๆ ของวงจรภาคจ่ายไฟได้
3. บอกขั้นตอนการประกอบวงจรลงแผ่นวงจรพิมพ์เอนกประสงค์ได้
4. สร้าง (ประกอบ) วงจรภาคจ่ายไฟได้
5. ทดสอบการทางานวงจรภาคจ่ายไฟได้
6. ปฏิบตั ิงานตามใบงานเสร็ จทันเวลาที่กาหนด
3. เครื่ องมือและอุปกรณ์
1. แผ่นวงจรพิมพ์เอนกประสงค์แบบจุดไข่ปลาขนาด 8 ซ.ม.× 12 ซ.ม. 1 แผ่น
2. อุปกรณ์อิเล็กทรอนิกส์ตามวงจรรู ปที่ 7.1-2 ประกอบด้วย
2.1 DC Jack 1 ตัว 2.5 ตัวต้านทาน 820 Ω ¼ W 1 ตัว
2.2 ไดโอดบริ ดจ์ 1.5 A 1 ตัว 2.6 LED 1 ตัว
2.3 ตัวเก็บประจุ 1000 uF/25 V 1 ตัว 2.7 ไอซี 7805 1 ตัว
2.4 ตัวเก็บประจุ 0.1 uF 1 ตัว 2.8 คอนเน็คเตอร์ 2×2 2 ตัว
3. หัวแร้ง 1 ตัว
4. ตะกัว่ บัดกรี 1 ม้วน
5. มัลติมิเตอร์ 1 เครื่ อง
4. ลาดับขั้นการปฏิบัติงาน
1. ศึกษาจุดประสงค์ทวั่ ไปจุดประสงค์เชิงพฤติกรรมและทฤษฎีพ้นื ฐานที่เกี่ยวข้อง
2. ดาเนินการสร้างวงจรภาคจ่ายไฟ
3. วัดและทดสอบการทางานของวงจร
4. สรุ ปผลการปฏิบตั ิงาน
168 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
5. ทฤษฎีพืน้ ฐาน
การเรี ยนรู ้การทางานตลอดจนการเขียนโปรแกรมควบคุมการทางานของไมโครคอนโทรลเลอร์
MCS-51 หากเรี ยนรู ้และทดลองด้วยการจาลองการทางานเพียงอย่างเดี ยวนักศึกษาจะได้เพียงความรู ้ ใน
การเขียนโปรแกรมควบคุมงาน แต่ไม่ได้ทกั ษะในการปฏิบตั ิงาน ซึ่ งการทดลองจากวงจรจริ งที่นกั ศึกษา
ได้ลงมือสร้ างวงจรด้วยตนเองจะส่ งผลให้นกั ศึกษาเกิ ดทักษะในทางปฏิ บตั ิในหลาย ๆ ด้านทั้งการอ่าน
วงจร การบัดกรี วงจร การแก้ปัญหาอันอาจเกิดขึ้นได้ในหลากหลายกรณี วงจรหลักจะเป็ นแผ่นวงจรที่ใช้
ในการทดลองเพื่อทดสอบผลการทางานจากโปรแกรมที่เขียนขึ้น ซึ่งแผงวงจรหลักประกอบด้วย
1. วงจรภาคจ่ายไฟ
2. วงจรไมโครคอนโทรลเลอร์
3. วงจรเชื่อมต่อคอมพิวเตอร์ สาหรับการโปรแกรมตัวเอง
ใบงานที่ 7.1 นี้เป็ นใบงานสร้างวงจรภาคจ่ายไฟ ซึ่งเป็ นวงจรที่มีหน้าที่ในการจ่ายกระแสไฟฟ้าที่
มีแรงดันประมาณ 5 โวลต์ให้กบั วงจรไมโครคอนโทรลเลอร์ และวงจรต่อพ่วงต่าง ๆ ที่ นกั ศึกษาจะได้
เรี ยนรู ้ในใบงานถัดไป สาหรับการสร้ างวงจรภาคจ่ายไฟเลื อกใช้แบบใช้แหล่งจ่ายไฟตรงภายนอกเพื่อ
สะดวกในการใช้งาน ดังรู ปที่ 7.1-1
6. การดาเนินการสร้ างวงจร
1. จัดวางอุปกรณ์ตาแหน่งที่เหมาะสมโดยเว้นพื้นที่ไว้สาหรับวางวงจรไมโครคอนโทรลเลอร์
2. วางคอนเน็คเตอร์ J1 โดยหันด้านช่ องเสี ยบออกด้านนอกแผ่นวงจรพิมพ์เอนกประสงค์เพื่อ
สะดวกในการใช้งานเมื่อเสี ยบแหล่งจ่ายภายนอกเข้ากับวงจร
3. บัดกรี เชื่อมต่ออุปกรณ์ต่าง ๆ ให้ได้ตามวงจรในรู ปที่ 7.1-2
7805
103
7. การทดสอบการทางานของวงจร
1. ตรวจสอบการเชื่อมต่อโดยใช้มลั ติมิเตอร์ วดั ความต่อเนื่องตรวจสอบกับวงจรรู ปที่ 7.1-1
2. เสี ยบแหล่งจ่ายภายนอก (DC adaptor) เข้าคอนเน็คเตอร์ J1
3. LED1 ต้องติดสว่าง หาก LED1 ไม่ติดให้ปลดแหล่งจ่ายออกแล้วตรวจสอบการเชื่ อมต่อใหม่
4. วัดแรงดันจุดต่าง ๆ ตามตารางที่ 7.1-1
8. สรุปผลการปฏิบัติงาน
ใบงานที่ 7.1 การสร้างวงจรภาคจ่ายไฟในแผงวงจรไมโครคอนโทรลเลอร์ 173
เฉลยแบบทดสอบก่อนเรี ยน
1. ค 2. ข 3. ง 4. ก 5. จ 6. ค 7. ก 8. ข 9. ง 10. ข
เฉลยแบบทดสอบหลังเรี ยน
1. ข 2. ง 3. ข 4. ข 5. ค 6. จ 7. ค 8. ง 9. ก 10. ง
ใบงานที่ 7.2
การสร้ างวงจรประมวลผลหลัก (วงจรไมโครคอนโทรลเลอร์ )
1. จุดประสงค์ ทวั่ ไป
เพื่อให้นกั ศึกษาสามารถสร้างวงจรประมวลผลหลักได้
2. จุดประสงค์ เชิงพฤติกรรม
1. บอกส่ วนประกอบของวงจรประมวลผลหลักได้
2. บอกการทางานของอุปกรณ์ต่าง ๆ ของวงจรประมวลผลหลักได้
3. บอกขั้นตอนการประกอบวงจรลงแผ่นวงจรพิมพ์เอนกประสงค์ได้
4. สร้าง (ประกอบ) วงจรประมวลผลหลักได้
5. ทดสอบการทางานของวงจรประมวลผลหลักได้
6. ปฏิบตั ิงานตามใบงานเสร็ จทันเวลาที่กาหนด
3. เครื่ องมือและอุปกรณ์
1. แผ่นวงจรพิมพ์ใบงานที่ 7.1 1 แผ่น
2. อุปกรณ์อิเล็กทรอนิกส์ตามวงจรรู ปที่ 7.2-2 ประกอบด้วย
2.1 สวิตช์กดติดปล่อยดับ 1 ตัว 2.6 ตัวต้านทาน 9 ขา 10 kΩ 1 ตัว
2.2 ตัวต้านทาน 10 kΩ ¼ W 1 ตัว 2.7 ไอซี AT89S52 1 ตัว
2.3 ตัวเก็บประจุ 10 uF/25 V 1 ตัว 2.8 คอนเน็คเตอร์ 8×2 4 ตัว
2.4 ตัวเก็บประจุ 22 pF 2 ตัว 2.9 คอนเน็คเตอร์ 6 ขา 1 ตัว
2.5 คริ สตอล 11.0592 MHz 1 ตัว 2.10 ซอกเก็ตไอซี 40 ขา 1 ตัว
3. หัวแร้ง 1 ตัว
4. ตะกัว่ บัดกรี 1 ม้วน
5. มัลติมิเตอร์ 1 เครื่ อง
4. ลาดับขั้นการปฏิบัติงาน
1. ศึกษาจุดประสงค์ทวั่ ไปจุดประสงค์เชิงพฤติกรรมและทฤษฎีพ้นื ฐานที่เกี่ยวข้อง
2. ดาเนินการสร้างวงจรประมวลผลหลัก
3. วัดและทดสอบการทางานของวงจร
4. สรุ ปผลการปฏิบตั ิงาน
176 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
5. ทฤษฎีพืน้ ฐาน
ไมโครคอนโทรลเลอร์ ที่ใช้ศึกษาในวิชานี้เป็ นไมโครคอนโทรลเลอร์ ตระกูล MCS-51 ที่สามารถ
โปรแกรมตนเองได้ใ นขณะที่ อยู่ในระบบที่ เรี ยกว่า ISP (In system programming) เป็ นผลิ ตภัณฑ์ของ
บริ ษ ัท แอตเมล (ATMEL) เบอร์ AT89S52 โดยวงจรหลัก เป็ นหัว ใจหลัก ของการศึ ก ษาการท างาน
ตลอดจนการศึกษาการเขียนโปรแกรมควบคุมการทางานของไมโครคอนโทรลเลอร์ วงจรประมวลผล
หลัก (ซึ่ งต่อไปนี้จะเรี ยกว่าวงจรไมโครคอนโทรลเลอร์ ) เป็ นดังรู ปที่ 7.2-1
6. การดาเนินการสร้ างวงจร
1. จัดวางอุปกรณ์ตาแหน่งที่เหมาะสมในพื้นที่ส่วนที่เหลือจากวงจรภาคจ่ายไฟ
2. จัดวางคอนเน็คเตอร์ J5, J6 ชิดขอบแผ่นวงจรพิมพ์เอนกประสงค์เพื่อสะดวกในการเชื่อมต่อ
กับวงจรต่อพ่วงในใบงานถัด ๆ ไป
3. บัดกรี เชื่อมต่ออุปกรณ์ต่าง ๆ ให้ได้ตามวงจรในรู ปที่ 7.2-2
ใบงานที่ 7.2 การสร้างวงจรประมวลผลหลัก (วงจรไมโครคอนโทรลเลอร์) 179
7. การทดสอบการทางานของวงจร
1. ทดสอบวงจรขณะที่ยงั ไม่ใส่ ไอซี AT89S52 ลงในแผงวงจร
2. ตรวจสอบการเชื่อมต่อโดยใช้มลั ติมิเตอร์ วดั ความต่อเนื่องตรวจสอบกับวงจรรู ปที่ 7.2-1
3. ดาเนินการตรวจสอบจุดต่าง ๆ ตามตารางที่ 7.2-1
4. ตรวจสอบแรงดันโดยวัดแรงดันขณะที่ป้อนแหล่งจ่ายเข้าวงจรตามตารางที่ 7.2-2
5. หากผลการตรวจสอบไม่ถูกต้องให้ทาการแก้ไขจนได้ผลที่ถูกต้อง
6. ตรวจสอบการต่อคริ สตอลด้วยสายตา โดยการต่อให้ต่อใกล้ขาไอซี ให้มากที่สุด
ใบงานที่ 7.2 การสร้างวงจรประมวลผลหลัก (วงจรไมโครคอนโทรลเลอร์) 181
8. สรุปผลการปฏิบัติงาน
182 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
เฉลยแบบทดสอบก่อนเรี ยน
1. ค 2. จ 3. ค 4. ก 5. ข 6. ก 7. จ 8. ค 9. ง 10. ก
เฉลยแบบทดสอบหลังเรี ยน
1. จ 2. ข 3. ค 4. ง 5. ข 6. ง 7. จ 8. ข 9. ง 10. ค
ใบงานที่ 7.3
การสร้ างวงจรโปรแกรมข้ อมูลลงไมโครคอนโทรลเลอร์
1. จุดประสงค์ ทวั่ ไป
เพื่อให้นกั ศึกษาสามารถสร้างวงจรโปรแกรมข้อมูลลงไมโครคอนโทรลเลอร์ ได้
2. จุดประสงค์ เชิงพฤติกรรม
1. บอกส่ วนประกอบของวงจรโปรแกรมข้อมูลลงไมโครคอนโทรลเลอร์ ได้
2. บอกการทางานของอุปกรณ์ต่าง ๆ ของวงจรโปรแกรมข้อมูลลงไมโครคอนโทรลเลอร์ ได้
3. บอกขั้นตอนการประกอบวงจรได้
4. สร้าง (ประกอบ) วงจรโปรแกรมข้อมูลลงไมโครคอนโทรลเลอร์ ได้
5. ทดสอบการทางานของวงจรโปรแกรมข้อมูลลงไมโครคอนโทรลเลอร์ ได้
6. ปฏิบตั ิงานตามใบงานเสร็ จทันเวลาที่กาหนด
3. เครื่ องมือและอุปกรณ์
1. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.2 1 แผ่น
2. อุปกรณ์อิเล็กทรอนิกส์ตามรู ปที่ 7.3-2 ประกอบด้วย
2.1 สายแลนยาว 50 ซ.ม. 1 เส้น 2.4 คอนเน็คเตอร์ 6 ขา 1 ตัว
2.2 คอนเน็คเตอร์ DB25 ตัวผู ้ 1 ตัว 2.5 ไส้คอนเน็คเตอร์ 6 ตัว
2.3 ฝาคอนเน็คเตอร์ DB25 1 ชุด 2.6 ตัวต้านทาน 100 Ω ¼ W 4 ตัว
3. หัวแร้ง 1 ตัว
4. ตะกัว่ บัดกรี 1 ม้วน
5. มัลติมิเตอร์ 1 เครื่ อง
4. ลาดับขั้นการปฏิบัติงาน
1. ศึกษาจุดประสงค์ทวั่ ไปจุดประสงค์เชิงพฤติกรรมและทฤษฎีพ้นื ฐานที่เกี่ยวข้อง
2. ดาเนินการสร้างวงจรโปรแกรมข้อมูลลงไมโครคอนโทรลเลอร์
3. วัดและทดสอบการทางานของวงจร
4. สรุ ปผลการปฏิบตั ิงาน
186 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
5. ทฤษฎีพืน้ ฐาน
ไมโครคอนโทรลเลอร์ เบอร์ AT89S52 เป็ นไมโครคอนโทรลเลอร์ที่สามารถโปรแกรมตนเองได้
ขณะที่อยู่ในระบบที่เรี ยกว่าเรี ยกว่า ISP (In system programming) สาหรับการโปรแกรมตนเองจะต้อง
ผ่า นวงจรโปรแกรมที่ เรี ยกว่า STK200 เป็ นวงจรที่ ใ ช้โปรแกรมข้อมู ล ลงไมโครคอนโทรลเลอร์ โดย
เชื่ อมต่อผ่านทางพอร์ ตขนานของคอมพิวเตอร์ หรื อที่เรี ยกว่าพอร์ ตเครื่ องพิมพ์ขนาด 25 ขา (LPT1) ดังรู ป
ที่ 7.3-1
6. การดาเนินการสร้ างวงจร
เชื่ อมต่อสายจากคอนเน็คเตอร์ DB25 (คอนเน็คเตอร์ ที่ใช้ต่อกับพอร์ ตเครื่ องพิมพ์) ในส่ วนของ
สายสัญญาณใช้ตวั ต้านทาน R4-R7 ต่ออนุกรมเข้าวงจรหลักผ่านทางคอนเน็คเตอร์ J2 ดังรู ปที่ 7.3-2
7. การทดสอบการทางานของวงจร
การสร้างวงจรโปรแกรมข้อมูลลงชิพไอซี จะต้องดาเนิ นการทดสอบการใช้งานของวงจรด้วยกันสอง
ขั้นตอนคือ
หากค่าที่วดั ได้ไม่ใกล้เคียงกับค่าที่ควรจะได้ให้ทาการตรวจสอบและแก้ไขวงจรใหม่จนกว่าจะ
ใกล้เคียงกับค่าที่ควรจะวัดได้
(a) (b)
รู ปที่ 7.3-3 (a) ผลเมื่อติดต่อได้ (b) ผลเมื่อติดต่อไม่ได้
6. ทดสอบการเขียนข้อมูลจากหน่วยความจาเก็บโปรแกรม (ทดสอบเมื่อสามารถอ่านข้อมูลจาก
หน่วยความจาเก็บโปรแกรมในขั้นตอนที่ 5 ได้แล้ว)
a. กดปุ่ ม Disp Buffer จะปรากฏหน้าต่างดังรู ปที่ 7.3-4
(a) (b)
รู ปที่ 7.3-7 (a) สามารถโปรแกรมได้ (b) เขียนโปรแกรมสาเร็ จ
(a) (b)
รู ปที่ 7.3-8 (a) สามารถโปรแกรมได้ (b) เขียนโปรแกรมไม่สาเร็ จ
192 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
iii. ติ ด ต่ อ เพื่ อ ท าการโปรแกรมไม่ ไ ด้ จ ะปรากฏหน้ า ต่ า งดั ง รู ปที่ 7.3-9
ดาเนินการตรวจสอบการทาสายโปรแกรมตัวเอง STK200 และตรวจสอบ
วงจรไมโครคอนโทรลเลอร์ ใหม่อีกครั้ง
8. สรุปผลการปฏิบัติงาน
ใบงานที่ 7.3 การสร้างวงจรโปรแกรมข้อมูลลงไมโครคอนโทรลเลอร์ 193
เฉลยแบบทดสอบก่อนเรี ยน
1. ง 2. ก 3. ค 4. ค 5. ข 6. ค 7. ข 8. จ 9. ก 10. ง
เฉลยแบบทดสอบหลังเรี ยน
1. ก 2. ง 3. จ 4. ข 5. ง 6. ค 7. ข 8. ค 9. ง 10. จ
ใบงานที่ 7.4
การสร้ างวงจรเอาต์ พตุ พอร์ ต
1. จุดประสงค์ ทวั่ ไป
เพื่อให้นกั ศึกษาสามารถสร้างวงจรต่อพ่วงที่ทาหน้าที่เป็ นวงจรเอาต์พุตพอร์ต
2. จุดประสงค์ เชิงพฤติกรรม
1. บอกส่ วนประกอบของวงจรเอาต์พุตพอร์ตได้
2. บอกการทางานของอุปกรณ์ต่าง ๆ ของวงจรเอาต์พุตพอร์ตได้
3. บอกขั้นตอนการประกอบวงจรเอาต์พุตพอร์ตได้
4. สร้าง (ประกอบ) วงจรเอาต์พุตพอร์ตได้
5. ทดสอบการทางานของวงจรเอาต์พุตพอร์ตได้
6. ปฏิบตั ิงานตามใบงานเสร็ จทันเวลาที่กาหนด
3. เครื่ องมือและอุปกรณ์
1. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.2 (วงจรไมโครคอนโทรลเลอร์ ) 1 แผ่น
2. แผ่นวงจรพิมพ์เอนกประสงค์ขนาด 8 ซ.ม. × 12 ซ.ม. 1 แผ่น
3. อุปกรณ์อิเล็กทรอนิกส์ตามวงจรรู ปที่ 7.4-7(a) ประกอบด้วย
3.1 ไอซี 74HC573 1 ตัว 3.4 ซอกเก็ตไอซี 20 ขา 1 ตัว
3.2 LED 8 ตัว 3.5 คอนเน็คเตอร์ 2×2 2 ตัว
3.3 ตัวต้านทาน 180 Ω ¼ W 8 ตัว 3.6 คอนเน็คเตอร์ 8×2 1 ตัว
4. หัวแร้ง 1 ตัว
5. ตะกัว่ บัดกรี 1 ม้วน
6. มัลติมิเตอร์ 1 เครื่ อง
4. ลาดับขั้นการปฏิบัติงาน
1. ศึกษาจุดประสงค์ทวั่ ไปจุดประสงค์เชิงพฤติกรรมและทฤษฎีพ้นื ฐานที่เกี่ยวข้อง
2. ดาเนินการสร้างวงจรเอาต์พุตพอร์ต
3. วัดและทดสอบการทางานของวงจร
4. สรุ ปผลการปฏิบตั ิงาน
196 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
5. ทฤษฎีพืน้ ฐาน
ส่ วนที่สาคัญมากของระบบไมโครคอนโทรลเลอร์ ทุกชนิ ดส่ วนหนึ่ งคือพอร์ ต ที่สามารถส่ งค่า
ลอจิกออกไปยังอุปกรณ์ เชื่ อมต่อภายนอกได้ เพื่อใช้ในการควบคุมอุปกรณ์ ที่เชื่ อมต่อภายนอกตามที่ได้
ออกแบบไว้ สาหรับไมโครคอนโทรลเลอร์ ตระกูล MCS-51 ชนิ ดที่มีขา 40 ขาจะมีพอร์ ตให้ใช้งาน 4
พอร์ตและชนิด 20 ขามีพอร์ตให้ใช้งาน 2 พอร์ต โดยโครงสร้างของพอร์ตเป็ นดังรู ป 7.4-1
Write to CL Q Write to CL Q
Latch Latch
Read Read
Pin Pin
Read Read
Pin Pin Alternate
I/P Function
(c) แสดงโครงสร้างพอร์ต 2 (d) แสดงโครงสร้างพอร์ต 3
รู ปที่ 7.4-1 แสดงโครงสร้างพอร์ตของไมโครคอนโทรลเลอร์ MCS-51
วงจรขับ LED
จากที่ได้กล่าวมาแล้วในข้างต้นว่า พอร์ ตของไมโครคอนโทรลเลอร์ MCS-51 ขนาด 40 ขาจะไม่
สามารถจ่ายกระแสให้กบั โหลดโดยตรงได้ ดังนั้นเมื่อนาพอร์ ตมาใช้งานเป็ นเอาต์พุตพอร์ต คือเป็ นพอร์ ต
สาหรับจ่ายกระแสให้กบั โหลด จาเป็ นต้องใช้อุปกรณ์ช่วยขับหรื อที่เรี ยกว่า บัฟเฟอร์ (Buffer) ซึ่ งการใช้
บัฟเฟอร์ ที่ง่ายต่อการใช้งานคื อใช้ไอซี บฟั เฟอร์ เบอร์ 74HC541 หรื อเบอร์ 74HC573 โดยไอซี บฟั เฟอร์
เบอร์ 74HC541 เป็ นไอซี Tri-stage และเบอร์ 74HC573 เป็ นไอซี D-Flip flop ซึ่ งทั้ง 2 เบอร์ สามารถใช้
งานได้เช่นกัน แต่ในโปรแกรมจาลองการทางาน Proteus ไอซี บฟั เฟอร์ 74HC573 มีโมเดลในการจาลอง
การพฤติกรรม แต่ 74HC541 ไม่มี เนื่องจากภายในของไอซี บฟั เฟอร์ มีวงจรมากมาย เมื่อจ่ายกระแสให้แก่
โหลดแรงดันที่ออกจึงลดลง ดังนั้นต้องลดค่าความต้านทานลงเล็กน้อยเพื่อให้ความสว่างยังคงเดิม โดย
วงจรขับเป็ นดังรู ปที่ 7.4-3 และรู ปที่7.4-4
6. การดาเนินการสร้ างวงจร
เพื่อให้นกั ศึกษาสามารถประยุกต์ใช้งานได้ จาเป็ นต้องมีการทดลองจากวงจรใช้งานจริ งอุปกรณ์
จริ งและต่อวงจรจริ ง ใบงานนี้เป็ นการสร้างวงจรต่อพ่วงที่เป็ นวงจรขับ LED ซึ่ งเป็ นวงจรเชื่อมต่อสาหรับ
ใช้งานพอร์ต 0 เป็ นเอาต์พุตพอร์ตโดยใช้ขบั LED วงจรสมบูรณ์เป็ นดังรู ปที่ 7.4-5
การทางานของวงจร
วงจรรู ปที่ 7.4-7 เป็ นวงจรต่อพ่วงสาหรับขับ LED ซึ่ งวงจรนี้ใช้ไอซี U3 เบอร์ 74HC573 เป็ นตัว
ขับกระแสให้กบั LED ทั้ง 8 ตัว รี ซิสเตอร์ R8-R15 เป็ นตัวจากัดกระแสให้กบั LED สาหรับ Jumper ใส่
ไว้ปลดวงจรเฉพาะส่ วน LED ออก (ตัดการจ่ายกระแสให้กบั LED ) เพื่อนาไอซีบฟั เฟอร์ไปขับวงจรอื่น
ซึ่งจะได้ศึกษาในบทถัด ๆ ไป
1. จัดวางอุปกรณ์ตาแหน่งที่เหมาะสมโดยเว้นพื้นที่ไว้สาหรับวงจรในการทดลองในบทต่อ ๆ ไป
2. วางคอนเน็ ค เตอร์ J7 โดยหัน ด้า นช่ อ งเสี ย บออกด้า นนอกโดยให้ต าแหน่ ง ตรงกับ J5 ของ
แผ่นวงจรหลัก (เมื่อวางแผ่นวงจรเทียบชิดกัน)
3. บัดกรี เชื่อมต่ออุปกรณ์ต่าง ๆ ให้ได้ตามวงจรในรู ปที่ 7.4-7
ใบงานที่ 7.4 การสร้างวงจรเอาต์พตุ พอร์ต 203
7. การทดสอบการทางานของวงจร
การทดสอบวงจรขับ LED ซึ่งเป็ นวงจรเอาต์พุตพอร์ตให้นกั ศึกษาทาการทดสอบการทางานของ
วงจรใน 2 ขั้นตอน
ขั้นตอนที่หนึ่ง ทดสอบการทางานของวงจรทางฮาร์ ตแวร์ ดาเนินการดังนี้
1. ต่อเชื่ อมกับวงจรหลักเฉพาะส่ วนของไฟเลี้ยง 5 โวลต์และ 0 โวลต์ดงั รู ปที่ 7.4-8
2. ป้ อนลอจิก 1, 0 (จัม๊ สายไฟจากไฟเลี้ ยง 5 โวลต์และ 0 โวลต์) เข้าที่อินพุทของไอซี บฟั เฟอร์
แต่ละบิตแล้วตรวจสอบการทางานตามตาราง หากผลการทดลองที่ได้ไม่ตรงกับผลที่ควรได้
ให้นกั ศึกษาทาการแก้ไขจนได้ผลเช่นเดียวกันกับผลที่ควรได้
74HC573
AT89S52
74HC573
AT89S52
8. สรุปผลการปฏิบัติงาน
206 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
เฉลยแบบทดสอบก่อนเรี ยน
1. ข 2. ง 3. จ 4. ข 5. จ 6. ก 7. ก 8. ง 9. ข 10. ก
เฉลยแบบทดสอบหลังเรี ยน
1. ค 2. ก 3. จ 4. ง 5. จ 6. ค 7. ง 8. ค 9. ค 10. ข
ใบงานที่ 7.5
การใช้ งานพอร์ ตทาหน้ าทีเ่ ป็ นเอาต์ พตุ พอร์ ตเบื้องต้ น
1. จุดประสงค์ ทวั่ ไป
เพื่อศึกษาการเขียนโปรแกรมให้ไมโครคอนโทรลเลอร์ ส่งค่าออกทางพอร์ ตโดยใช้งานพอร์ ตทา
หน้าที่เป็ นเอาต์พุตพอร์ต
2. จุดประสงค์ เชิงพฤติกรรม
1. พิมพ์คาสั่งได้อย่างถูกต้อง
2. เขียนแผนผังงานของโปรแกรมในแบบฝึ กหัดที่มอบหมายได้
3. เขียนโปรแกรมจากผังงานของโปรแกรมในแบบฝึ กหัดที่มอบหมายได้
4. ทดลองโดยวิธีการจาลองการทางานด้วยโปรแกรม Proteus ได้
5. ทดลองจากวงจรจริ งที่สร้างขึ้นใช้งานได้
6. ปฏิบตั ิงานตามใบงานเสร็ จทันเวลาที่กาหนด
3. เครื่ องมือและอุปกรณ์
1. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.2 (วงจรไมโครคอนโทรลเลอร์ )
2. วงจรโปรแกรมตัวเองใบงานที่ 7.3
3. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.4 (วงจรต่อพ่วง)
4. แหล่งจ่ายไฟกระแสตรงภายนอก
4. ลาดับขั้นการปฏิบัติงาน
1. ศึกษาจุดประสงค์ทวั่ ไปจุดประสงค์เชิงพฤติกรรมและทฤษฎีพ้นื ฐานที่เกี่ยวข้อง
2. ดาเนินการทดลอง
3. สรุ ปผลการปฏิบตั ิงาน
4. ดาเนินการในงานที่มอบหมาย
210 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
5. ทฤษฎีพืน้ ฐาน
ไมโครคอนโทรลเลอร์ MSC-51 ในแต่ละพอร์ ตมีรีจิสเตอร์ ที่มีแอดเดรสประจาพอร์ ตเมื่อเขียน
โปรแกรมควบคุมด้วย Keil uVision สามารถกาหนดได้โดยตรงดังตารางที่ 7.5-1
RY1
31 40
12V 5A
Vcc
EA
D1
Vcc
1N4002
C3 R3
10uF 3.9K
9 28 Q1
RST P2.7
SW1 BC337
R2 R2
10K 220
X1
11.0592MHz 18
XTAL2
19
XTAL1
GND
22pFx2 20 AT89S52
6. การดาเนินการทดลอง
การทดลองใบงานที่ 7.5 นี้ เป็ นการทดลองการใช้งานพอร์ ต โดยใช้วงจรต่อพ่วงสาหรับใช้งาน
พอร์ต 0 เป็ นเอาต์พุตพอร์ตโดยใช้ขบั LED เป็ นวงจรที่ได้สร้างขึ้นในใบงานที่ 7.4 ดังรู ปที่ 7.5-2
การจ าลองการท างานใช้โ ปรแกรม Proteus ดัง ที่ ไ ด้ก ล่ า วมาแล้ว ส าหรั บ การทดลองวงจร
ไมโครคอนโทรลเลอร์ ที่ขบั โหลดโดยผ่านพอร์ ต 0 ใช้อุปกรณ์อิเล็กทรอนิกส์ดงั นี้
214 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
1. ไมโครคอนโทรลเลอร์ AT89C52
2. ไอซีบฟั เฟอร์ 74HC573
3. รี ซิสเตอร์ 180 Ω MINRES180R
4. รี ซิสเตอร์เน็ตเวิร์ก RESPACK-8
5. LED LED-YELLOW
74HC573
AT89S52
เริ่ ม หน่วงเวลา
ทดลองการทางาน
1. จาลองการทางานด้วยโปรแกรม Proteus
2. ทดลองด้วยวงจรจริ ง
3. ทดลองแก้โปรแกรมจาก delay(100); เป็ นตัวเลขอื่น แล้วสังเกตผล
4. ทดลองแก้โปรแกรมจาก value++; เป็ น value--; แล้วสังเกตผล
หน่วงเวลา (n)
ทดลองการทางาน
1. จาลองการทางานด้วยโปรแกรม Proteus
2. ทดลองด้วยวงจรจริ ง
3. ทดลองแก้โปรแกรมจาก P0=0x…; เป็ นตัวเลขอื่น แล้วสังเกตผล
เริ่ ม
กาหนดตัวแปรเก็บจานวนรู ปแบบ
ทดลองการทางาน
1. จาลองการทางานด้วยโปรแกรม Proteus
2. ทดลองด้วยวงจรจริ ง
3. ทดลองแก้ค่าที่กาหนดในตัวแปรอาร์เรย์ (unsigned char value[ ]={…) เป็ นค่าอื่น แล้ว
สังเกตผล
7. สรุปผลการปฏิบัติงาน
8. งานทีม่ อบหมาย
จงเขียนโปรแกรมควบคุมการติดดับของ LED (ไฟวิง่ ) ที่ต่ออยูท่ ี่พอร์ ต 0 ดังรู ปที่ 7.5-5 โดยให้มี
รู ปแบบไฟวิ่งอย่างน้อย 4 รู ปแบบ (กาหนดขึ้นเอง) และมีความเร็ วในแต่ละรู ปแบบให้มีความแตกต่างกัน
โดยทดลองผลทั้งการจาลองการทางานด้วยโปรแกรม Proteus และทดลองด้วยวงจรจริ ง
เฉลยแบบทดสอบก่อนเรี ยน
1. ค 2. ง 3. ข 4. ก 5. ค 6. ง 7. ก 8. จ 9. ค 10. ข
เฉลยแบบทดสอบหลังเรี ยน
1. ก 2. ข 3. ค 4. ง 5. ก 6. ข 7. ง 8. ค 9. ง 10. ก
ใบงานที่ 7.6
การสร้ างวงจรสวิตช์
1. จุดประสงค์ ทวั่ ไป
เพื่อให้นกั ศึกษาสามารถสร้างวงจรต่อพ่วงที่ทาหน้าที่เป็ นวงจรอินพุต
2. จุดประสงค์ เชิงพฤติกรรม
1. บอกส่ วนประกอบของวงจรสวิตช์ได้
2. บอกการทางานของอุปกรณ์ต่าง ๆ ของวงจรสวิตช์ได้
3. บอกขั้นตอนการประกอบวงจรสวิตช์ได้
4. สร้าง (ประกอบ) วงจรสวิตช์ได้
5. ทดสอบการทางานของวงจรสวิตช์ได้
6. ปฏิบตั ิงานตามใบงานเสร็ จทันเวลาที่กาหนด
3. เครื่ องมือและอุปกรณ์
1. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.2 (วงจรไมโครคอนโทรลเลอร์ ) 1 แผ่น
2. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.4 (วงจรต่อพ่วง) 1 แผ่น
3. อุปกรณ์อิเล็กทรอนิกส์ตามวงจรรู ปที่ 7.6-4 (a) ประกอบด้วย
3.1 สวิตช์กดติดปล่อยดับ 4 ตัว 3.3 คอนเน็คเตอร์ 8×2 1 ตัว
3.2 ตัวต้านทาน 10 kΩ ¼ W 4 ตัว
4. หัวแร้ง 1 ตัว
5. ตะกัว่ บัดกรี 1 ม้วน
6. มัลติมิเตอร์ 1 เครื่ อง
4. ลาดับขั้นการปฏิบัติงาน
1. ศึกษาจุดประสงค์ทวั่ ไปจุดประสงค์เชิงพฤติกรรมและทฤษฎีพ้นื ฐานที่เกี่ยวข้อง
2. ดาเนินการสร้างวงจรสวิตช์
3. วัดและทดสอบการทางานของวงจร
4. สรุ ปผลการปฏิบตั ิงาน
224 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
5. ทฤษฎีพืน้ ฐาน
ไมโครคอนโทรลเลอร์ MCS-51 ในขนาดตัวถัง DIP ขนาด 40 ขา ทุกพอร์ ตยกเว้นพอร์ ต 0 จะมี
ตัวต้านทานพูลอัพ (ตัวต้านทานต่อที่ขาพอร์ ตเข้ากับไฟเลี้ยง) อยูภ่ ายในตัวไมโครคอนโทรลเลอร์ โดยมี
ค่าประมาณ 50 กิโลโอห์ม ดังนั้นเมื่อเวลาลอยขาพอร์ ตแล้วมีการส่ งลอจิก 1 ออกมาทางขาพอร์ต แรงดัน
ที่ขาพอร์ ตจะมีค่า 5 โวลต์ (โดยประมาณ) เมื่อต้องการใช้งานพอร์ ตให้ทาหน้าที่เป็ นอิน พุตพอร์ ต ก็เพียง
ส่ งสัญญาณลอจิกจากอุปกรณ์อินพุตเข้าที่ขาพอร์ ตได้โดยตรงสาหรับอุปกรณ์อิน พุตนั้นมีระดับสัญญาณ
ลอจิ ก 1 และ 0 ที่ 5 โวลต์และ 0 โวลต์ตามล าดับ แต่ ถ้า หากอุ ป กรณ์ อินพุ ตมี แรงดันลอจิ ก ที่ แตกต่ า ง
จาเป็ นต้องใช้อุปกรณ์ปรับระดับหรื อจัดรู ปสัญญาณ เพื่อให้ได้ระดับลอจิกที่ไมโครคอนโทรลเลอร์ นาไป
ใช้งานได้
สาหรับบทนี้เสนอการนาพอร์ ตมาทางานเป็ นอินพุตพอร์ ต โดยใช้สวิตช์ชนิ ดกดติดปล่อยดับเป็ น
อุปกรณ์อินพุต ซึ่ งการใช้สวิตช์เป็ นอุปกรณ์อิน พุตจะต้องใช้การต่อสวิตช์กบั ขาพอร์ ตกับกราวด์ โดยใช้
ตัวต้านทานต่อพูลอัพขนาด 10 กิโลโอห์ม เป็ นตัวช่ วยให้เป็ นระดับลอจิก 1 ในขณะที่ไม่มีการกดสวิตช์
ซึ่งวงจรสวิตช์ที่ใช้งานเป็ นดังรู ปที่ 7.6-1
Vcc
R12
10k ไม่กดสวิตช์ กดสวิตช์
Port S1 VCC
สัญญาณกระเด้งกระดอน
(a) (b)
รู ปที่ 7.6-1 วงจรสวิตช์ที่ใช้เชื่ อมต่อกับไมโครคอนโทรลเลอร์ และสัญญาณที่เกิดขึ้น
6. การดาเนินการสร้ างวงจร
ใบงานนี้ เป็ นการสร้ างวงจรต่อพ่วงเพิ่มเติมจากใบงานที่ 7.4 เฉพาะวงจรสวิตช์ซ่ ึ งประกอบด้วย
ตัวต้านทาน 10 กิโลโอห์มจานวน 4 ตัว และสวิตช์กดติดปล่อยดับจานวน 4 ตัววงจรสมบรู ณ์สาหรับการ
ทดลองเขียนโปรแกรมรับสวิตช์เป็ นดังรู ปที่ 7.6-2
การทางานของวงจร
วงจรรู ปที่ 7.6-4 เป็ นวงจรต่อพ่วงสาหรั บส่ งค่าลอจิ กให้กบั ไมโครคอนโทรลเลอร์ ซึ่ งจัดเป็ น
วงจรในภาคอินพุตในระดับที่ง่ายที่สุด วงจรนี้ใช้สวิตช์กดติดปล่อยดับเป็ นตัวควบคุมระดับลอจิกที่ส่งเข้า
สู่ ไมโครคอนโทรลเลอร์ และใช้ตวั ต้านทานพูลอัพเพื่อให้ได้ระดับลอจิก 1 ในสภาวะที่ไม่ได้กดสวิตช์
และเมื่อทาการกดสวิตช์จะทาให้ระดับลอจิกเป็ น 0
การดาเนินการสร้ างวงจร
1. จัดวางอุปกรณ์ตาแหน่งที่เหมาะสมโดยใช้พ้นื ที่ที่ได้เว้นไว้จากการทดลองในใบงานที่ 7.4
2. วางคอนเน็ ค เตอร์ J8 โดยหัน ด้า นช่ อ งเสี ย บออกด้า นนอกโดยให้ต าแหน่ ง ตรงกับ J6 ของ
แผ่นวงจรหลัก (เมื่อวางแผ่นวงจรเทียบชิดกัน)
3. บัดกรี เชื่อมต่ออุปกรณ์ต่าง ๆ ให้ได้ตามวงจรในรู ปที่ 7.6-4 (a)
ใบงานที่ 7.6 การสร้างวงจรสวิตช์ 229
แนวทางการสร้ างวงจร
ประกอบวงจรสวิตช์ลงแผ่นปริ้ นอเนกประสงค์แผ่นเดี ยวกับวงจรขับ LED ในใบงานที่ 7.4 จัด
วางให้ตาแหน่งคอนเน็คเตอร์ ตรงกันกับคอนเน็คเตอร์ ของพอร์ ต 2 ของวงจรไมโครคอนโทรลเลอร์ แนว
ทางการวางตาแหน่งอุปกรณ์ตลอดจนแนวการบัดกรี เป็ นดังรู ปที่ 7.6-2(b)
7. การทดสอบการทางานของวงจร
ทดสอบการทางานของวงจรมีดว้ ยกัน 2 ขั้นตอนคือ ทดสอบทางฮาร์ ดแวร์ และทางซอฟต์แวร์
103
7805
74HC573
AT89S52
8. สรุปผลการปฏิบัติงาน
ใบงานที่ 7.6 การสร้างวงจรสวิตช์ 231
เฉลยแบบทดสอบก่อนเรี ยน
1. ข 2. ค 3. ก 4. ง 5. ข 6. ข 7. ก 8. จ 9. ข 10. ก
เฉลยแบบทดสอบหลังเรี ยน
1. ก 2. ค 3. ค 4. ข 5. ง 6. ค 7. จ 8. ง 9. ก 10. ค
ใบงานที่ 7.7
การใช้ งานพอร์ ตทาหน้ าทีเ่ ป็ นอินพุตพอร์ ตเบื้องต้ น
1. จุดประสงค์ ทวั่ ไป
เพื่อศึกษาการเขียนโปรแกรมให้ไมโครคอนโทรลเลอร์ รับค่าจากพอร์ ตโดยให้พอร์ ตทาหน้าที่
เป็ นอินพุตพอร์ต
2. จุดประสงค์ เชิงพฤติกรรม
1. พิมพ์คาสั่งได้ถูกต้อง
2. เขียนแผนผังงานของโปรแกรมในแบบฝึ กหัดที่มอบหมายได้
3. เขียนโปรแกรมจากผังงานของโปรแกรมในแบบฝึ กหัดที่มอบหมายได้
4. เขียนวงจรเพื่อทดลองโดยวิธีการจาลองการทางานด้วยโปรแกรม Proteus ได้
5. ทดลองจากวงจรจริ งที่สร้างขึ้นใช้งานได้
6. ปฏิบตั ิงานตามใบงานเสร็ จทันเวลาที่กาหนด
3. เครื่ องมือและอุปกรณ์
1. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.2 (วงจรไมโครคอนโทรลเลอร์ )
2. วงจรโปรแกรมตัวเองใบงานที่ 7.3
3. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.6 (วงจรต่อพ่วง)
4. แหล่งจ่ายไฟกระแสตรงภายนอก
4. ลาดับขั้นการปฏิบัติงาน
1. ศึกษาจุดประสงค์ทวั่ ไปจุดประสงค์เชิงพฤติกรรมและทฤษฎีพ้นื ฐานที่เกี่ยวข้อง
2. ดาเนินการทดลอง
3. สรุ ปผลการปฏิบตั ิงาน
4. ดาเนินการในงานที่มอบหมาย
234 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
5. ทฤษฎีพืน้ ฐาน
And ด้วยข้อมูล 0 0 0 0 1 0 0 0
ผลการ and 0 0 0 0 0 0 0 0
And ด้วยข้อมูล 0 0 0 0 1 0 0 0
ผลการ and 0 0 0 0 1 0 0 0
6. การดาเนินการทดลอง
การทดลองใบงานที่ 7.7 เป็ นการทดลองการใช้งานพอร์ ตให้ทางานเป็ นอินพุตพอร์ ตโดยวงจรใช้
ทดลองเป็ นดังรู ปที่ 7.7-2
7805
103
74HC573
AT89S52
กาหนดตัวแปรให้กบั สวิตช์แต่ละตัว
อ่านค่าการกดสวิตช์จากพอร์ ต
เริ่ ม
กาหนดตัวแปรให้กบั สวิตช์แต่ละตัว
อ่านค่าการกดสวิตช์จากพอร์ ต
void main(void)
{
P0=0x00;
244 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
while(1)
{
switch(P2) //read sw value from P2
{
case sw1: //if sw1 is pressed
Pro1(); //run pattern 1 program
break;
case sw2: //if sw2 is pressed
Pro2(); //run pattern 2 program
break;
case sw3: //if sw3 is pressed
Pro3(); //run pattern 3 program
break;
case sw4: //if sw4 is pressed
Pro4(); //run pattern 4 program
break;
default:
P0=0x00;
break;
}
}
}
//----------------pattern 1 Program-----------------------
void Pro1(void)
{
do
{
for(n=0;n<8;n++)
{
P0=value1[n];
delay(200);
}
}while(P2==0xff);
}
//----------------pattern 2 Program-----------------------
void Pro2(void)
{
do
{
for(n=0;n<8;n++)
{
P0=value2[n];
delay(200);
}
}while(P2==0xff);
}
//----------------pattern 3 Program-----------------------
void Pro3(void)
{
do
{
for(n=0;n<10;n++)
{
P0=value3[n];
delay(200);
}
}while(P2==0xff);
}
ใบงานที่ 7.7 การใช้งานพอร์ตทาหน้าที่เป็ นอินพุตพอร์ตเบื้องต้น 245
//----------------pattern 4 Program-----------------------
void Pro4(void)
{
do
{
for(n=0;n<10;n++)
{
P0=value4[n];
delay(200);
}
}while(P2==0xff);
}
//----------------delay Program-----------------------
void delay(int count)
{
int x,y;
for(x=0;x<count;x++)
{
for(y=0;y<500;y++)
{}
if(P2<0xff) // Check the switch
{ n=12;
x=count;
}
}
}
7. สรุปผลการปฏิบัติงาน
246 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
8. งานทีม่ อบหมาย
จงเขียนโปรแกรมควบคุมการติดดับของ LED (ไฟวิ่ง) ที่ต่ออยู่ที่พอร์ ต 0 โดยให้รับค่ารู ปแบบ
จากสวิตช์ กาหนดให้ใช้ฟังก์ชนั่ if ในการตรวจสอบเงื่อนไข ทดลองผลทั้งการจาลองการทางานด้วย
โปรแกรม Proteus และทดลองด้วยวงจรจริ ง
เฉลยแบบทดสอบก่อนเรี ยน
1. ก 2. ค 3. ข 4. ง 5. ก 6. จ 7. จ 8. ข 9. ก 10. ง
เฉลยแบบทดสอบหลังเรี ยน
1. ข 2. ง 3. ค 4. ก 5. ค 6. ง 7. ข 8. ง 9. ค 10. ข
ใบงานที่ 7.8
การเขียนโปรแกรมหน่ วงเวลา
1. จุดประสงค์ ทวั่ ไป
เพื่อศึกษาวิธีการเขียนโปรแกรมหน่วงเวลา
2. จุดประสงค์ เชิงพฤติกรรม
1. พิมพ์คาสัง่ ได้ถูกต้อง
2. เขียนแผนผังงานของโปรแกรมในแบบฝึ กหัดที่มอบหมายได้
3. เขียนโปรแกรมจากผังงานของโปรแกรมในแบบฝึ กหัดที่มอบหมายได้
4. ทดลองโดยวิธีการจาลองการทางานด้วยโปรแกรม Proteus ได้
5. ทดลองจากวงจรจริ งที่สร้างขึ้นใช้งานได้
6. ปฏิบตั ิงานตามใบงานเสร็ จทันเวลาที่กาหนด
3. เครื่ องมือและอุปกรณ์
1. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.2 (วงจรไมโครคอนโทรลเลอร์ )
2. วงจรโปรแกรมตัวเองใบงานที่ 7.3
3. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.6 (วงจรต่อพ่วง)
4. แหล่งจ่ายไฟกระแสตรงภายนอก
4. ลาดับขั้นการปฏิบัติงาน
1. ศึกษาจุดประสงค์ทวั่ ไปจุดประสงค์เชิงพฤติกรรมและทฤษฎีพ้นื ฐานที่เกี่ยวข้อง
2. ดาเนินการทดลอง
3. สรุ ปผลการปฏิบตั ิงาน
4. ดาเนินการในงานที่มอบหมาย
250 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
5. ทฤษฎีพืน้ ฐาน
การหน่วงเวลาของไมโครคอนโทรลเลอร์ ไม่วา่ จะเป็ นไมโครคอนโทรลเลอร์ ในตระกูลใดก็ตาม
คือการเขียนโปรแกรมให้ตวั ซี พียไู ปทางานอื่นชัว่ ขณะเพื่อรอการทางานใด ๆ ตามต้องการ เช่นการติดดับ
ของหลอดไฟ การหน่วงเวลาสามารถเขียนโปรแกรมได้ 2 ลักษณะคือ
1. แบบใช้โปรแกรมคานวณคณิ ตศาสตร์
2. แบบใช้วงจรไทเมอร์
แบบใช้ โปรแกรมคานวณคณิตศาสตร์
เป็ นการเขียนโปรแกรมให้ไมโครคอนโทรลเลอร์ ไปคานวณคณิ ตศาสตร์ ซึ่ งมีลกั ษณะเหมือน
การนับเลขให้ได้ตามจานวนที่ต้ งั ค่าไว้ การนับแต่ละค่าซี พียูจะต้องใช้เวลาในการทางาน ดังนั้นหาก
ตัวเลขมีค่ามากซี พียูก็จะใช้เวลามาก ซึ่ งการใช้งานในลักษณะนี้ ได้นามาใช้งานมาแล้วในใบงานที่ 7.5
และใบงานที่ 7.7 ที่ผา่ นมา โดยสร้างเป็ นฟังก์ชนั่ ย่อย
หน่วงเวลา
แบบใช้ วงจรไทเมอร์
วงจรไทเมอร์ เป็ นวงจรที่มีอยูภ่ ายในตัวไมโครคอนโทรลเลอร์ ซึ่ งทางานได้ 2 ลักษณะคือทางาน
เป็ นวงจรไทเมอร์ เมื่อใช้ความถี่ภายใน และทางานเป็ นวงจรเคาน์เตอร์ เมื่อรับความถี่จากภายนอก สาหรับ
การใช้งานเป็ นวงจรไทเมอร์ ในบทเรี ยนนี้จะใช้งานในด้านการหน่วงเวลาซึ่ งใช้งานในโหมด 1 เป็ นโหมด
ที่ ใ ช้ง านคล้า ยกับ โหมด 0 เพี ย งแต่ ใ ช้รีจิ ส เตอร์ ต้ งั ค่ า ทั้ง สองตัวครบทุ ก บิ ต คื อใช้ง านครั้ งละ 16 บิ ต
เนื่ องจากสามารถตั้งค่าในการหน่วงได้มากกว่าในโหมดอื่น การทางานจะเหมือนกับวงจรนับเลขไบนารี่
ขนาด 16 บิตที่สามารถตั้งค่าเริ่ มต้นได้นนั่ เอง การทางานของวงจรเริ่ มจากเมื่อได้รับสัญญาณนาฬิกาจาก
OSC ผ่านวงจรหาร 12 ความถี่จะลดลง 12 เท่าผ่านสวิตช์สองตัวแล้วเข้าสู่ รีจิสเตอร์ ทาให้ค่าในรี จิสเตอร์
ตั้งค่าจะเพิ่มขึ้นครั้งละ 1 ค่าทุก ๆ 1 ลู กคลื่น โดยจะเพิ่มขึ้นเรื่ อย ๆ จนกระทั้งรี จิสเตอร์ ต้ งั ค่ามีค่าลอจิก
ใบงานที่ 7.8 การเขียนโปรแกรมหน่วงเวลา 253
เป็ นลอจิก 1 ครบทั้ง 16 บิตคือมีค่าเป็ น FFFFH และเมื่อได้รับสัญญาณอีก 1 ลู กจะเกิ ดการล้นของข้อมูล
(Over flow) บิตแสดงการล้น (TF: Over flow flag) จะมีค่าเป็ นลอจิก 1 โดยโครงสร้างของโหมด 1 เป็ น
ดังรู ปที่ 7.8-1
OSC ÷12
C/T=0
สัญญาณ
TL1 TH1 TF1 อินเตอร์รัพต์
ขา T1 C/T=1 8 บิต 8 บิต
TR1
GATE
ขา INT1
รู ปที่ 7.8-1 โครงสร้างในโหมด 1 ของวงจรไทเมอร์ /เคาน์เตอร์ 1
1 1
𝑓0 = 𝑓 = 𝑓0 ×
𝑡 12
ดังนั้นคาบเวลาในโหมด 1 จะได้
254 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
การใช้งานไทเมอร์แบบใช้การขัดจังหวะการทางาน (Interrupt)
การขัดจังหวะการทางานที่ได้กล่าวมาแล้วในบทที่ 4 มีท้ งั หมดจาก 7 แหล่ง ซึ่ งการขัดจังหวะแต่
ละแหล่งมีตาแหน่งที่ตอบสนองต่อการอินเตอร์ รัพต์ (Interrupt vector) ต่างกันไป ดังตารางที่ 7.8-2
รู ปแบบการใช้งานอินเตอร์รัพต์ในภาษาซี
ในการเขียนโปรแกรมภาษาซี เพื่อใช้งานการอินเตอร์ รัพต์ สามารถทาได้โดยการระบุหมายเลข
การอินเตอร์ รัพต์ทา้ ยฟังก์ชนั่ ตอบสนองการอินเตอร์ รัพต์ โดยมีรูปแบบดังนี้
#include<REGX52.H>
void ชือ่ ฟังก์ชน่ ั (void); //โปรแกรมทีจ่ ะสร้างขึน้ เพือ่ ตอบสนองการอินเตอร์ร ัพต์
void main (void)
{
ET1=1; //เปิ ดการอินเตอร์ร ัพต์จากวงจรไทเมอร์
EA=1; //เปิ ดการอินเตอร์ร ัพต์ทงหมด
ั้ (Enable All)
…
…
}
void ชือ่ ฟังก์ชน่ ั (void) interrupt 3 //โปรแกรมตอบสนองการอินเตอร์ร ัพต์จากวงจรไทเมอร์
{
ใบงานที่ 7.8 การเขียนโปรแกรมหน่วงเวลา 257
6. การดาเนินการทดลอง
การทดลองใบงานที่ 7.8 เป็ นการทดลองการเขียนโปรแกรมหน่วงเวลาให้ได้เวลาตามต้องการ
วงจรใช้ทดลองเป็ นวงจรเดิมที่ใช้ทดลองในใบงานที่ 7.7 แต่ไม่ได้ใช้งานสวิตช์ ซึ่งวงจรเป็ นดังรู ปที่ 7.8-3
การทดลองด้วยวิธีการจาลองการทางานของวงจรไมโครคอนโทรลเลอร์ ต่อโปรแกรมหน่วงเวลา
ที่เขียนขึ้นด้วยโปรแกรม Proteus ใช้วงจรในการจาลองการทางานเช่นเดียวกับวงจรที่ใช้จาลองการทางาน
ในใบงานที่ 7.5 ซึ่งใช้อุปกรณ์อิเล็กทรอนิกส์ ต่อวงจรดังนี้
1. ไมโครคอนโทรลเลอร์ AT89C52
2. ไอซีบฟั เฟอร์ 74HC573
3. รี ซิสเตอร์ 180 MINRES180R
4. รี ซิสเตอร์เน็ตเวิร์ก RESPACK-8
5. LED LED-YELLOW
74HC573
AT89S52
โปรแกรมตอบสนองการอินเตอร์รัพต์
เริ่ ม
กาหนดค่าเริ่ มต้นใน TH,TL
กาหนดตัวแปร,ค่าเริ่ มต้น
เคลียร์แฟล็ก
วงจรไทเมอร์ เริ่ มทางาน
7. สรุปผลการปฏิบัติงาน
8. งานทีม่ อบหมาย
จงเขียนโปรแกรมไฟจราจรสี่ แยกโดยให้ LED แต่ละตัวแทนไฟสี ต่าง ๆ ดังนี้
B
D3
D7
D6
D5
D2
D1
A
D3
D2
D1
D7
D6
D5
เฉลยแบบทดสอบก่อนเรี ยน
1. ค 2. ข 3. ก 4. ง 5. จ 6. ก 7. ข 8. จ 9. ค 10. จ
เฉลยแบบทดสอบหลังเรี ยน
1. ก 2. ง 3. ค 4. ข 5. ง 6. จ 7. ก 8. ข 9. ง 10. ค
ใบงานที่ 7.9
การสร้ างวงจรขับลาโพง
1. จุดประสงค์ ทวั่ ไป
เพื่อให้นกั ศึกษาสามารถสร้างวงจรต่อพ่วงที่ทาหน้าที่เป็ นวงจรขับลาโพง
2. จุดประสงค์ เชิงพฤติกรรม
1. บอกส่ วนประกอบของวงจรขับลาโพงได้
2. บอกการทางานของอุปกรณ์ต่าง ๆ ของวงจรขับลาโพงได้
3. บอกขั้นตอนการประกอบวงจรขับลาโพงได้
4. สร้าง (ประกอบ) วงจรขับลาโพงได้
5. ทดสอบการทางานของวงจรขับลาโพงได้
6. ปฏิบตั ิงานตามใบงานเสร็ จทันเวลาที่กาหนด
3. เครื่ องมือและอุปกรณ์
1. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.2 (วงจรไมโครคอนโทรลเลอร์ ) 1 แผ่น
2. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.4 (วงจรต่อพ่วง) 1 แผ่น
3. อุปกรณ์อิเล็กทรอนิกส์ตามวงจรรู ปที่ 7.9-5(a) ประกอบด้วย
3.1 ลาโพง 2 นิ้ว 0.25 W 8Ω 1 ตัว 3.3 ตัวเก็บประจุ 1 uF/25V 1 ตัว
3.2 ตัวเก็บประจุ 220 uF/25V 1 ตัว
4. หัวแร้ง 1 ตัว
5. ตะกัว่ บัดกรี 1 ม้วน
6. มัลติมิเตอร์ 1 เครื่ อง
4. ลาดับขั้นการปฏิบัติงาน
1. ศึกษาจุดประสงค์ทวั่ ไปและจุดประสงค์เชิงพฤติกรรม
2. ศึกษาทฤษฎีพ้นื ฐานที่เกี่ยวข้อง
3. ดาเนินการสร้างวงจรสวิตช์
4. วัดและทดสอบการทางานของวงจร
5. สรุ ปผลการปฏิบตั ิงาน
268 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
5. ทฤษฎีพืน้ ฐาน
ไมโครคอนโทรลเลอร์ สามารถสร้างลอจิกที่เปลี่ยนไปเปลี่ยนมาระหว่างลอจิก 1 กับลอจิก 0 จาก
โปรแกรมที่เขียนขึ้น และเมื่อให้ลอจิกมีการเปลี่ยนแปลงที่คงที่ก็จะได้ความถี่ข้ ึนมา ซึ่ งความถี่ที่สร้างขึ้น
สามารถสร้างความถี่ในช่วงความถี่ที่มนุ ษย์สามารถได้ยินได้ที่เรี ยกว่าความถี่เสี ยง (ช่วงความถี่ 20 Hz ถึง
20 kHz) โดยมีรูปร่ างของคลื่นที่สร้างขึ้นที่เป็ นคลื่นสี่ เหลี่ ยมซึ่ งมีองค์ประกอบไฟฟ้ ากระแสตรงอยูด่ ว้ ย
เมื่อนามาใช้งานโดยตรงอาจทาให้เกิดอันตรายต่อลาโพงได้
คลื่ นรู ปสี่ เหลี่ ยมเป็ นคลื่ นที่ เกิ ดจากการรวมกันของความถี่ ต้ งั ต้น (Fundamental) กับคลื่ นลู กที่
เรี ยกว่า ฮาร์โมนิก (Harmonic) ลาดับคี่ หมายถึงเป็ นการรวมกันของความถี่ 1, 3, 5, 7, 9, …เท่าของความถี่
ตั้งต้น โดยแสดงดังรู ปที่ 7.9-1
6. การดาเนินการสร้ างวงจร
วงจรสมบูรณ์ที่จะในไปใช้ในการทดลองการเขียนโปรแกรมสร้างเสี ยงในใบงานที่ 7.10
วงจรขับลาโพงที่สร้างต่อขยายเพิ่มเติมจากวงจรเดิมที่สร้างไว้ในใบงานที่ 7.6
การทางานของวงจร
วงจรรู ปที่ 7.9-5 (a) เป็ นวงจรขับลาโพงโดยรับสัญญาณความถี่ ที่สร้างขึ้นจากโปรแกรม วงจรนี้
ใช้ไอซี ขบั ตัวเดี ยวกันกับวงจรขับ LED เพียงแต่ใช้งานเพียงบิตเดี ยวเฉพาะบิ ตที่ ขบั ลาโพงคือบิต P0.0
และใช้ตวั เก็บประจุจานวน 2 ตัวสาหรับตัดองค์ประกอบไฟตรงและลดองค์ประกอบของความถี่สูงก่อน
ต่อลาโพงเพื่อลดอันตรายที่อาจเกิดขึ้นกับลาโพง
การดาเนินการสร้ างวงจร
1. จัดวางอุปกรณ์ตาแหน่งที่เหมาะสมโดยใช้พ้นื ที่ที่ได้เว้นไว้จากการทดลองในใบงานที่ 7.6
2. บัดกรี เชื่อมต่ออุปกรณ์ต่าง ๆ ให้ได้ตามวงจรในรู ปที่ 7.9-5 (a)
แนวทางการสร้ างวงจร
ประกอบวงจรสวิตช์ลงแผ่นปริ้ นอเนกประสงค์แผ่นเดี ยวกับวงจรขับ LED ในใบงานที่ 7.6 จัด
วางให้ตาแหน่ งตัวเก็บประจุให้อยู่ในตาแหน่ งบัดกรี ง่ายที่สุด สาหรับแนวทางการวางตาแหน่ งอุปกรณ์
ตลอดจนแนวการบัดกรี เป็ นดังรู ปที่ 7.9-5(b)
ใบงานที่ 7.9 การสร้างวงจรขับลาโพง 273
7. การทดสอบการทางานของวงจร
การทดสอบการทางานเชื่ อมต่อแผงวงจรต่อพ่วงเข้ากับวงจรไมโครคอนโทรลเลอร์ เป็ นดังรู ป
7805
103
74HC573
AT89S52
8. สรุปผลการปฏิบัติงาน
ใบงานที่ 7.9 การสร้างวงจรขับลาโพง 275
เฉลยแบบทดสอบก่อนเรี ยน
1. ค 2. ก 3. ง 4. ข 5. ง 6. จ 7. ค 8. ข 9. จ 10. ง
เฉลยแบบทดสอบหลังเรี ยน
1. ก 2. ค 3. ข 4. ง 5. ก 6. ค 7. ก 8. ง 9. ข 10. ค
ใบงานที่ 7.10
การเขียนโปรแกรมสร้ างความถีเ่ สี ยง
1. จุดประสงค์ ทวั่ ไป
เพื่อศึกษาการเขียนโปรแกรมสร้างความถี่เสี ยง
2. จุดประสงค์ เชิงพฤติกรรม
1. พิมพ์คาสัง่ ได้อย่างถูกต้อง
2. เขียนแผนผังงานของโปรแกรมในแบบฝึ กหัดที่มอบหมายได้
3. เขียนโปรแกรมจากผังงานของโปรแกรมในแบบฝึ กหัดที่มอบหมายได้
4. ทดลองโดยวิธีการจาลองการทางานด้วยโปรแกรม Proteus ได้
5. ทดลองจากวงจรจริ งที่สร้างขึ้นใช้งานได้
6. ปฏิบตั ิงานตามใบงานเสร็ จทันเวลาที่กาหนด
3. เครื่ องมือและอุปกรณ์
1. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.2 (วงจรไมโครคอนโทรลเลอร์ )
2. วงจรโปรแกรมตัวเองใบงานที่ 7.3
3. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.9 (วงจรต่อพ่วง)
4. แหล่งจ่ายไฟกระแสตรงภายนอก
4. ลาดับขั้นการปฏิบัติงาน
1. ศึกษาจุดประสงค์ทวั่ ไปจุดประสงค์เชิงพฤติกรรมและทฤษฎีพ้นื ฐานที่เกี่ยวข้อง
2. ดาเนินการทดลอง
3. สรุ ปผลการปฏิบตั ิงาน
4. ดาเนินการในงานที่มอบหมาย
278 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
5. ทฤษฎีพืน้ ฐาน
การสร้างเสี ยงสาหรับไมโครคอนโทรลเลอร์ น้ นั เป็ นการสร้างความถี่ค่า ๆ หนึ่ งออกพอร์ ตนัน่ เอง
และการสร้างความถี่ เป็ นการส่ งค่าลอจิก “0” และ “1” ออกพอร์ ตโดยมีการหน่ วงเวลาตามที่กาหนดใน
การส่ งลอจิกแต่ละค่า ตัวอย่างเช่นต้องการสร้างความถี่ 1 kHz ดังรู ปที่ 7.10-1
0.5mS
1mS
รู ปที่ 7.10-1 คาบเวลาของรู ปคลื่นของสัญญาณที่ความถี่ 1 kHz
11.0592 MHz
THTL = 65536 0.5ms
12
THTL = 65075
= FE 33H
ต้องตั้งค่าใน TH = FEH
และต้องตั้งค่าใน TL = 33H
ใบงานที่ 7.10 การเขียนโปรแกรมสร้างความถี่เสี ยง 281
ลักษณะของตัวโน้ ตและตัวหยุด
การเปรียบเทียบค่ าของตัวโน้ ต
โน้ ตโยงเสี ยง
โน้ ตประจุด
ชื่อระดับเสี ยง โด เร มี ฟา ซอล ลา ที
ชื่อตัวอักษร C D E F G A B
ชื่อตัวเลข 1 2 3 4 5 6 7
จากความถี่ที่ได้สามารถคานวณหาค่าการหน่วงเวลาในการสร้างพัลส์เพื่อที่จะต้องกาหนดค่าเริ่ มต้นของ
วงจรไทเมอร์ โดยการกาหนดค่าในรี จิสเตอร์ TH,TL ดังตารางที่ 7.10-1
6. การดาเนินการทดลอง
วงจรสมบูรณ์ที่ใช้ทดลองใบงานการเขียนโปรแกรมสร้างความถี่เสี ยงเป็ นดังรู ปที่ 7.10-4
74HC573
AT89S52
เริ่ ม
สร้างเสี ยง
กาหนดตัวแปร,ค่าเริ่ มต้น
เซต TH,TL ตามค่าความถี่ที่รับมา
สร้างเสี ยงความถี่ที่ 1
สร้างความถี่
ครบเวลา?
ไม่
สร้างเสี ยงความถี่ที่ n ใช่
จบ
ทดลองการทางาน
1. จาลองการทางานด้วยโปรแกรม Proteus
2. ทดลองด้วยวงจรจริ ง
3. ทดลองแก้ขอ้ มูลในตัวแปร sfh[ ], sfl[ ]; เป็ นค่าจากความถี่อื่น (ดูจากตาราง) แล้วสังเกตผล
เริ่ ม
สร้างเสี ยง
กาหนดตัวแปร,ค่าเริ่ มต้น
เซต TH,TL ตามค่าความถี่ที่รับมา
สร้างเสี ยงความถี่ที่ 1
สร้างความถี่
ครบเวลา?
ไม่
สร้างเสี ยงความถี่ที่ n ใช่
จบ
ทดลองการทางาน
1. จาลองการทางานด้วยโปรแกรม Proteus
2. ทดลองด้วยวงจรจริ ง
7. สรุปผลการปฏิบัติงาน
292 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
8. งานทีม่ อบหมาย
จงเขียนโปรแกรมสร้างเสี ยงเพลง (นักศึกษาเป็ นผูเ้ ลือกเพลงตามต้องการ) โดยใช้ค่าความถี่ของ
ตัวโน้ตที่ ใ ช้ง านจากตารางที่ 7.10-1 ทดลองผลทั้ง การจาลองการท างานด้วยโปรแกรม Proteus และ
ทดลองด้วยวงจรจริ ง
เฉลยแบบทดสอบก่อนเรี ยน
1. ก 2. ค 3. ง 4. ง 5. ข 6. ค 7. จ 8. ค 9. ก 10. จ
เฉลยแบบทดสอบหลังเรี ยน
1. ข 2. ง 3. ค 4. ก 5. ค 6. จ 7. ข 8. ง 9. ข 10. ค
ใบงานที่ 7.11
การสร้ างวงจรแสดงผลตัวเลข 7 ส่ วน
1. จุดประสงค์ ทวั่ ไป
เพื่อให้นกั ศึกษาสามารถสร้างวงจรแสดงผลเป็ นตัวเลข 7 ส่ วนชนิดที่เป็ น LED
2. จุดประสงค์ เชิงพฤติกรรม
1. บอกส่ วนประกอบของวงจรแสดงผลเป็ นตัวเลข 7 ส่ วนได้
2. บอกการทางานของอุปกรณ์ต่าง ๆ ของวงจรแสดงผลเป็ นตัวเลข 7 ส่ วนได้
3. บอกขั้นตอนการประกอบวงจรแสดงผลเป็ นตัวเลข 7 ส่ วนได้
4. สร้าง (ประกอบ) วงจรแสดงผลเป็ นตัวเลข 7 ส่ วนได้
5. ทดสอบการทางานของวงจรแสดงผลเป็ นตัวเลข 7 ส่ วนได้
6. ปฏิบตั ิงานตามใบงานเสร็ จทันเวลาที่กาหนด
3. เครื่ องมือและอุปกรณ์
1. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.2 (วงจรไมโครคอนโทรลเลอร์ ) 1 แผ่น
2. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.9 (วงจรต่อพ่วง) 1 แผ่น
3. อุปกรณ์อิเล็กทรอนิกส์ตามวงจรรู ปที่ 7.11-6(a) ประกอบด้วย
3.1 ตัวเลข 7 ส่ วน 2 หลัก CC 1 ตัว 3.3 ตัวต้านทาน 4.7 kΩ ¼ W 2 ตัว
3.2 ทรานซิสเตอร์ BC547 2 ตัว 3.4 ตัวต้านทาน 220 Ω ¼ W 2 ตัว
4. หัวแร้ง 1 ตัว
5. ตะกัว่ บัดกรี 1 ม้วน
6. มัลติมิเตอร์ 1 เครื่ อง
4. ลาดับขั้นการปฏิบัติงาน
1. ศึกษาจุดประสงค์ทวั่ ไปจุดประสงค์เชิงพฤติกรรมและทฤษฎีพ้นื ฐานที่เกี่ยวข้อง
2. ดาเนินการสร้างวงจรสวิตช์
3. วัดและทดสอบการทางานของวงจร
4. สรุ ปผลการปฏิบตั ิงาน
296 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
5. ทฤษฎีพืน้ ฐาน
LED ตัวเลข 7 ส่ วนที่เราเรี ยกกันว่า 7-Segment ประกอบขึ้นด้วย LED จานวน 8 ตัวโดยที่ LED
จานวน 7 ตัวถู กจัดวางให้สามารถแสดงเป็ นตัวเลขต่าง ๆ อีกหนึ่ งตัวถูกจัดวางให้แสดงเป็ นจุดทศนิ ยม
LED ที่ต่ออยูภ่ ายในตัวถังทุกตัวจะมีขาต่อร่ วมกันเรี ยกว่าขาคอมมอน (Common) โดยมี 2 แบบคือ
1. ต่อขาแคโทดร่ วมกัน เรี ยกว่า คอมมอนแคโทด (Common cathode)
2. ต่อขาแอโนดร่ วมกัน เรี ยกว่า คอมมอนแอโนด (Common anode)
ตัวแสดงผลตัวเลข 7 ส่ วนมีลกั ษณะการต่อภายในดังรู ปที่ 7.11-1
รู ปที่ 7.11-3 (a) โครงสร้างภายในของ 7 Segment เบอร์ TOD-3261AG-B1 (b) ตาแหน่งหลัก (digit)
1
ตาแหน่งการจัดขาของ 7-Segment เป็ นของเบอร์ TOD-3261AG-B หากใช้งานเบอร์อื่นต้องดูตาแหน่งขาจากดาต้าชีต
ใบงานที่ 7.11 การสร้างวงจรแสดงผลตัวเลข 7 ส่วน 299
6. การดาเนินการสร้ างวงจร
การสร้างวงจรแสดงผลตัวเลข 7 ส่ วนเป็ นวงจรที่สร้ างเพิ่มเติมจากใบงานที่ 7.9 โดยเพิ่มเฉพาะ
ส่ วนการแสดงผลตัวเลข 7 ส่ วนซึ่ งใช้อุปกรณ์เพิ่มเติมคือ LED ตัวเลข 7 ส่ วนแบบมัลติเพล็กชนิ ดแคโทด
ร่ วม ตัวต้านทาน 4.7 กิโลโอห์ม 2 ตัวและ 220 โอห์ม 2 ตัว วงจรสมบรู ณ์เป็ นดังรู ปที่ 7.11-4
การทางานของวงจร
วงจรรู ปที่ 7.11-6(a) เป็ นวงจรต่อพ่วงสาหรับแสดงผลตัวเลข 7 ส่ วน วงจรนี้ ใช้ไอซี U3 เบอร์
74HC573 ตัวเดิมที่เป็ นตัวขับกระแสให้กบั LED ทั้ง 8 ตัวในใบงานที่ 7.4 เพียงแต่ใบงานนี้ เปลี่ยนมาขับ
ตัวเลข 7 ส่ วนแทน และเพื่อให้สามารถขับโหลดได้เต็มความสามารถขณะทาการทดลองให้นกั ศึกษาปลด
ตัวลัด (Jumper) J11 เพื่อปลด LED ให้ลอยออกจากวงจรจะส่ งผลให้ไอซี ทาการขับตัวเลข 7 ส่ วนเพียง
อย่างเดียว
การดาเนินการสร้ างวงจร
1. จัดวางอุปกรณ์ตาแหน่งที่เหมาะสมโดยใช้พ้นื ที่ส่วนที่ได้เว้นไว้จากใบงานก่อนหน้านี้
2. บัดกรี เชื่อมต่ออุปกรณ์ต่าง ๆ ให้ได้ตามวงจรในรู ปที่ 7.11-6
หมายเหตุ ข้อควรระวังตรวจสอบขาทรานซิ สเตอร์ ให้ถูกต้องก่อนการประกอบวงจร เพื่อป้ องกัน
ข้อผิดพลาดจากการที่ทรานซิ สเตอร์ ไม่ทางานจากการต่อขาผิดพลาด
ใบงานที่ 7.11 การสร้างวงจรแสดงผลตัวเลข 7 ส่วน 301
7. การทดสอบการทางานของวงจร
การทดสอบวงจรแสดงผลด้วยตัวเลข 7 ส่ วน ซึ่ งเป็ นวงจรเอาต์พุ ต พอร์ ตให้นัก ศึก ษาท าการ
ทดสอบการทางานของวงจรใน 2 ขั้นตอน
ขั้นตอนที่หนึ่ง ทดสอบการทางานของวงจรทางฮาร์ดแวร์ ดาเนินการดังนี้
1. ต่อเชื่ อมกับวงจรไมโครคอนโทรลเลอร์ เฉพาะส่ วนของไฟเลี้ยง 5 โวลต์และ 0 โวลต์ดงั รู ปที่
7.11-7 103
7805
74HC573
AT89S52
2. ทาการทดสอบการติดดับในแต่ละเซกเมนต์ในแต่ละหลักดังนี้
2.1 ไบอัส ให้ท รานซิ ส เตอร์ Q1 ท างานและให้ Q2 ไม่ ท างาน โดยการต่ อไฟเลี้ ย ง 5
โวลต์เข้าที่คอนเน็คเตอร์ J8 เฉพาะที่ต่อไปยังขาเบสของ Q1 และต่อไฟเลี้ยง 0 โวลต์
เข้าที่คอนเน็คเตอร์ J8 เฉพาะที่ต่อไปยังขาเบสของ Q2
2.2 ป้ อนลอจิก 1, 0 (จัม๊ สายไฟจากไฟเลี้ ยง 5 โวลต์และ 0 โวลต์) เข้าที่อินพุตของไอซี
บัฟเฟอร์ แต่ละบิตแล้วตรวจสอบการทางานตามตาราง 7.11-1 หากผลการทดลองที่
ได้ไม่ตรงกับผลที่ควรได้ให้นกั ศึกษาทาการแก้ไขจนได้ผลเช่นเดียวกันกับผลที่ควร
ได้ (เมื่อทาการป้อนลอจิก 1 เข้าที่บิตใดเซกเมนต์ที่ต่อกับบิตนั้นจะต้องสว่าง)
302 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
2.3 เปลี่ยนการไบอัสให้ทรานซิ สเตอร์ Q1 หยุดทางานและให้ Q2 ทางาน โดยการต่อ
ไฟเลี้ ย ง 0 โวลต์เข้า ที่ คอนเน็ ค เตอร์ J8 เฉพาะที่ ต่อไปยัง ขาเบสของ Q1 และต่ อ
ไฟเลี้ยง 5 โวลต์เข้าที่คอนเน็คเตอร์ J8 เฉพาะที่ต่อไปยังขาเบสของ Q2
2.4 ทาการทดลองซ้ าเช่ นเดี ยวกับข้อ 2.2 แล้วตรวจสอบการทางานตามตาราง 7.11-1
หากผลการทดลองที่ ได้ไม่ตรงกับผลที่ ควรได้ให้นักศึ กษาทาการแก้ไขจนได้ผล
เช่นเดียวกันกับผลที่ควรได้
74HC573
AT89S52
0x6d,0x7d,0x07,0x7f,0x6f};
int i;
while(1)
{
for(i=0;i<10;i++) // #
{ // |
com1=1; // |
com2=0; // > test 7 segment digit 1
P0=value[i]; // |
delay(100); // |
} // #
for(i=0;i<10;i++) // #
{ // |
com1=0; // |
com2=1; // > test 7 segment digit 2
P0=value[i]; // |
delay(100); // |
} // #
}
}
void delay(int n) //delay function
{
int x,y;
for(x=0;x<n;x++)
{
for(y=0;y<500;y++)
{
}
}
}
3. คอมไพล์เพื่อให้ได้ไฟล์ภาษาเครื่ อง (HEX file)
4. นาไฟล์ภาษาเครื่ องที่ได้อดั ลงชิพซีพียู
5. สังเกตผลที่ได้หากวงจรทางานตามปกติ ตัวแสดงผลตัวเลข 7 ส่ วนจะติดเป็ นตัวเลข 0-9 ครั้ง
ละ 1 หลักโดยหลักหน้าจะติดก่อนเมื่อแสดงครบแล้วหลักหลังจะแสดงตัวเลข 0-9 ต่อไป
โดยจะติดสลับหลักไปตลอด หากแสดงผลไม่ถูกต้องให้ดาเนินการแก้ไข
8. สรุปผลการปฏิบัติงาน
304 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
เฉลยแบบทดสอบก่อนเรี ยน
1. ข 2. ข 3. ก 4. ง 5. ค 6. ข 7. ค 8. ก 9. ง 10. จ
เฉลยแบบทดสอบหลังเรี ยน
1. ง 2. ค 3. ข 4. จ 5. ก 6. ค 7. ก 8. ง 9. ข 10. ค
ใบงานที่ 7.12
การเขียนโปรแกรมแสดงผลตัวเลข 7 ส่ วน
1. จุดประสงค์ ทวั่ ไป
เพื่อศึกษาการเขียนโปรแกรมแสดงผลตัวเลข 7 ส่ วน
2. จุดประสงค์ เชิงพฤติกรรม
1. พิมพ์คาสัง่ ได้อย่างถูกต้อง
2. เขียนแผนผังงานของโปรแกรมในแบบฝึ กหัดที่มอบหมายได้
3. เขียนโปรแกรมจากผังงานของโปรแกรมในแบบฝึ กหัดที่มอบหมายได้
4. ทดลองโดยวิธีการจาลองการทางานด้วยโปรแกรม Proteus ได้
5. ทดลองด้วยวงจรจริ งที่สร้างขึ้นได้
6. ปฏิบตั ิงานตามใบงานเสร็ จทันเวลาที่กาหนด
3. เครื่ องมือและอุปกรณ์
1. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.2 (วงจรไมโครคอนโทรลเลอร์ )
2. วงจรโปรแกรมตัวเองใบงานที่ 7.3
3. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.11 (วงจรต่อพ่วง)
4. แหล่งจ่ายไฟกระแสตรงภายนอก
4. ลาดับขั้นการปฏิบัติงาน
1. ศึกษาจุดประสงค์ทวั่ ไปจุดประสงค์เชิงพฤติกรรมและทฤษฎีพ้นื ฐานที่เกี่ยวข้อง
2. ดาเนินการทดลอง
3. สรุ ปผลการปฏิบตั ิงาน
4. ดาเนินการในงานที่มอบหมาย
308 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
5. ทฤษฎีพืน้ ฐาน
ตัวแสดงผลตัวเลข 7 ส่ วนที่เราเรี ยกกันว่า 7-Segment ประกอบขึ้นด้วย LED จานวน 8 ตัวโดยที่
ใช้ LED จานวน 7 ตัวถูกจัดวางให้สามารถแสดงเป็ นตัวเลขต่าง ๆ อีก 1 ตัวไว้แสดงเป็ นจุดทศนิยมสาหรับ
ใบงานที่ 7.12 เป็ นใบงานเพื่อศึกษาวิธีการเขียนโปรแกรมเพื่อแสดงผลเป็ นตัวเลข โดยศึกษาการเขียน
โปรแกรมเพื่อแสดงผลตัวเลข 2 แบบคือ
1. แสดงผลด้วยตัวเลข 7 ส่ วน 1 หลักแบบขับตรง
2. แสดงผลด้วยตัวเลข 7 ส่ วน 2 หลักแบบมัลติเพล็ก
a b c d e f g dp a b c d e f g dp
3 9 8 6 7 4 1 2 (a) (b)
0 0 0 1 1 1 1 1 1 0x3F
1 0 0 0 0 0 1 1 0 0x06
2 0 1 0 1 1 0 1 1 0x5B
ผลการแสดง 3 0 1 0 0 1 1 1 1 0x4F
4 0 1 1 0 0 1 1 0 0x66
บนตัวเลข 7
5 0 1 1 0 1 1 0 1 0x6D
ส่ วน 6 0 1 1 1 1 1 0 1 0x7D
7 0 0 0 0 0 1 1 1 0x07
8 0 1 1 1 1 1 1 1 0x7F
9 0 1 1 0 1 1 1 1 0x6F
ใบงานที่ 7.12 การเขียนโปรแกรมแสดงผลตัวเลข 7 ส่วน 315
6. การดาเนินการทดลอง
วงจรสมบูรณ์ที่ใช้ทดลองใบงานการเขียนโปรแกรมแสดงผลตัวเลข 7 ส่ วนเป็ นดังรู ปที่ 7.12-7
74HC573
AT89S52
กาหนดตัวแปร,ค่าเริ่ มต้น
ส่ งค่าตัวแปรไปยังพอร์ ต 0
หน่วงเวลา
เพิ่มค่าตัวแปร 1 ค่า
318 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
0x6d,0x7d,0x07,0x7f,0x6f};
int i;
P2=0x80; //Q1->0n , Q2->Off
while(1)
{
for(i=0;i<10;i++) // #
{ // |
P0=value[i]; // send number to 7 segment
delay(100); // |
} // #
}
}
void delay(int n) //delay function
{
int x,y;
for(x=0;x<n;x++)
{
for(y=0;y<500;y++)
{
}
}
}
ทดลองการทางาน
1. จาลองการทางานด้วยโปรแกรม Proteus
2. ทดลองด้วยวงจรจริ ง
3. ทดลองแก้ไขโปรแกรมจาก P2=0x80; เป็ น P2=0x40; แล้วสังเกตผล
กาหนดตัวแปรนับค่า เพิ่มค่าตัวแปรนับค่า
แสดงผล จบ
แสดงผล
กาหนดตัวแปร,ค่าเริ่ มต้น
แสดงผลหลักสิ บ
แสดงผลหลักหน่วย
จบการแสดงผล
7. สรุปผลการปฏิบัติงาน
8. งานทีม่ อบหมาย
จงเขี ย นโปรแกรมจับ เวลา 59 วิ น าที โดยเริ่ ม จาก 59, 58, 57, …, 00 และเมื่ อ ถึ ง เวลา 00 ให้
โปรแกรมหยุดนับ โดยแสดงค่ า 00 ค้า งไว้ ท าการทดลองผลทั้ง การจาลองการทางานด้วยโปรแกรม
Proteus และทดลองด้วยวงจรจริ ง วงจรที่ใช้ทดลองเป็ นดังรู ปที่ 7.12-10
เฉลยแบบทดสอบก่อนเรี ยน
1. ข 2. ง 3. ค 4. จ 5. ก 6. ข 7. ค 8. ก 9. ข 10. จ
เฉลยแบบทดสอบหลังเรี ยน
1. ค 2. ข 3. ก 4. ง 5. ข 6. ง 7. ก 8. จ 9. ค 10. ข
ใบงานที่ 7.13
การเขียนโปรแกรมรับสวิตช์ เพื่อแสดงผลตัวเลข 7 ส่ วน
1. จุดประสงค์ ทวั่ ไป
เพื่อศึกษาการเขียนโปรแกรมรับสวิตช์เพื่อแสดงผลตัวเลข 7 ส่ วน
2. จุดประสงค์ เชิงพฤติกรรม
1. พิมพ์คาสัง่ ได้อย่างถูกต้อง
2. เขียนแผนผังงานของโปรแกรมในแบบฝึ กหัดที่มอบหมายได้
3. เขียนโปรแกรมจากผังงานของโปรแกรมในแบบฝึ กหัดที่มอบหมายได้
4. ทดลองโดยวิธีการจาลองการทางานด้วยโปรแกรม Proteus ได้
5. ทดลองจากวงจรจริ งที่สร้างขึ้นได้
6. ปฏิบตั ิงานตามใบงานเสร็ จทันเวลาที่กาหนด
3. เครื่ องมือและอุปกรณ์
1. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.2 (วงจรไมโครคอนโทรลเลอร์ )
2. วงจรโปรแกรมตัวเองใบงานที่ 7.3
3. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.11 (วงจรต่อพ่วง)
4. แหล่งจ่ายไฟกระแสตรงภายนอก
4. ลาดับขั้นการปฏิบัติงาน
1. ศึกษาจุดประสงค์ทวั่ ไปจุดประสงค์เชิงพฤติกรรมและทฤษฎีพ้นื ฐานที่เกี่ยวข้อง
2. ดาเนินการทดลอง
3. สรุ ปผลการปฏิบตั ิงาน
4. ดาเนินการในงานที่มอบหมาย
326 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
5. ทฤษฎีพืน้ ฐาน
ใบงานที่ 7.12 ที่ผา่ นมาเป็ นใบงานที่ศึกษาการแสดงผลด้วยตัวแสดงผล ตัวเลข 7 สาหรับใบงาน
นี้ เป็ นการต่อยอดโดยเพิ่มการรับค่าจากสวิตช์ (ที่ต่อไว้แล้วในในงานที่ 7.6 ) เพื่อนามาใช้ประโยชน์ใน
การแสดงผล ใบงานที่ 7.12 การทดลองที่ 2 ใช้ตวั แปร count เป็ นตัวนับตัวเลข ดังนั้นเมื่อค่าในตัวแปรนี้ มี
ค่าเป็ นเช่นไรการแสดงผลจะเป็ นเช่นนั้น
ใบงานที่ 7.13 เป็ นใบงานที่ศึกษาวิธีการเขียนโปรแกรมเพื่อรับสวิตช์มาควบคุมการแสดงผลด้วย
ตัวเลข 7 ส่ วน เนื่องจากตัวแสดงผลตัวเลข 7 ส่ วนมีจานวน 2 หลักตัวแปรที่นามาใช้งานเพื่อเก็บค่าตัวเลข
เพื่อแสดงผลจึงใช้เป็ น char เพราะสามารถเก็บตัวเลขที่เป็ นบวกได้สูงสุ ด 127 แต่ใช้เพื่อแสดงผลสู งสุ ด
เพียง 99 เท่านั้น
6. การดาเนินการทดลอง
วงจรสมบูรณ์ที่ใช้ทดลองใบงานการเขียนโปรแกรมรับค่าจากสวิตช์เพื่อแสดงผลที่ตวั เลข 7 ส่ วน
เป็ นดังรู ปที่ 7.13-1
7805
103
74HC573
AT89S52
เริ่ ม
กาหนดตัวแปร,ค่าเริ่ มต้น
กาหนดตัวแปรนับค่า
ตรวจสอบการกดสวิตช์
แสดงผล
ตรวจสอบการกดสวิตช์
yes
SW1 ถูกกด ? ถ้าตัวนับน้อยกว่า 90 ให้เพิ่ม 10 ถ้าไม่ ให้หลักสิ บเป็ น 0
no
yes
SW2 ถูกกด ? ถ้าตัวนับหลักหน่วยน้อยกว่า 9 ให้เพิ่ม 1
no ถ้าไม่ใช่ให้หลักหน่วยเป็ น 0
จบ
332 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
เริ่ ม
กาหนดตัวแปร,ค่าเริ่ มต้น
กาหนดตัวแปรนับค่า
ตรวจสอบการกดสวิตช์
yes
มีการสั่งเริ่ มนับหรื อไม่
no
แสดงผลตัวเลขตั้งค่า
ครบเวลาหรื อไม่
no yes
แสดงผลตัวเลขนับ
ตัวนับ = เลขตั้งค่าหรื อไม่
no yes
เพิ่มค่าตัวนับ หยุดนับ
ตรวจสอบการกดสวิตช์
yes
SW1 ถูกกด ? ถ้าตัวนับน้อยกว่า 90 ให้เพิ่ม 10 ถ้าไม่ ให้หลักสิ บเป็ น 0
no
yes
SW2 ถูกกด ? ถ้าตัวนับหลักหน่วยน้อยกว่า 9 ให้เพิม่ 1
no ถ้าไม่ใช่ให้หลักหน่วยเป็ น 0
จบ
ใบงานที่ 7.13 การเขียนโปรแกรมรับสวิตช์เพื่อแสดงผลตัวเลข 7 ส่วน 335
แปลงผังงานเป็ นโปรแกรม จากผังงานสามารถเขียนเป็ นโปรแกรมภาษาซี โดยพิมพ์ลงในโปรแกรม
Keil µVision แล้วทาการแปลงภาษาซีเป็ นภาษาเครื่ อง
#include<REGX52.H>
void delay(void); //delay time for count
void delay_display(void); //delay time for display
void display(char num); //display program
void read_sw(void); //read switch program
sbit com1=P2^7; //common off digit 1
sbit com2=P2^6; //common off digit 2
sbit S1=P2^3; //switch 1
sbit S2=P2^2; //switch 2
sbit S3=P2^1; //switch 3
sbit S4=P2^0; //switch 4
char setnum=0; //variable for number setting
unsigned int t=0; //variable for count time interrupt
void main(void)
{
char count; //variable for number display
com1=0; //Off Q1
com2=0; //Off Q2
TMOD=0x10; //timer1 mode 1
TH1=0xDC; //set TH1 for 10mS timer
TL1=0x00; //set TL1 for 10mS timer
TF1=0; //clear flag timer1
ET1=1; //Enable interrupt timer1
EA=1; //Enable interrupt all
TR1=1; //Run (Start) timer1
while(1)
{
read_sw(); //read switch
if(TR1==0)
{
count=0;
display(setnum); //display setting number
}
else
{
if(t<50)
{
display(count); //display count number
}
else
{
t=0;
if(count<setnum)
count++;
else
TR1=0;
}
}
}
}
void display(char num)
{
code unsigned char value[]={ 0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
P0=value[num/10]; //send Ten digits
com1=1; //On Q1
336 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
delay_display(); //slight delay for display
com1=0; //Off Q1
P0=value[num%10]; //send digit number
com2=1; //On Q2
delay_display(); //slight delay for display
com2=0; //Off Q2
}
void delay_display(void)
{
int i;
for(i=0;i<1000;i++);
}
void delay(void) interrupt 3
{
t++; //increment count time interrupt
TH1=0xDC; //set TH1 for 10mS timer
TL1=0x00; //set TL1 for 10mS timer
TF1=0; //clear flag timer1
}
void read_sw(void)
{
if(S1==0) //if s1 is pressed
{ if(setnum<90) //if <90 then +10
setnum=setnum+10;
else //if more than 89 then ten unit=0
setnum=setnum%10;
}
else if (S2==0) //if s2 is pressed
{ if(setnum%10<9) //if digit number <9 then +1
setnum++;
else //if digit number=9 then -9
setnum=setnum-9;
}
else if (S3==0) //if s2 is pressed
TR1=1;
else if (S4==0) //if s2 is pressed
TR1=0;
while(S1==0 || S2==0) //wait S1 and S2 Not pressed
{
display(setnum); //display setting number
}
ทดลองการทางาน
1. จาลองการทางานด้วยโปรแกรม Proteus
2. ทดลองด้วยวงจรจริ ง
3. ทดลองแก้ไขตัวเลขโปรแกรมจาก if(t<50); เป็ น 100, 200 แล้วสังเกตผล
ใบงานที่ 7.13 การเขียนโปรแกรมรับสวิตช์เพื่อแสดงผลตัวเลข 7 ส่วน 337
7. สรุปผลการปฏิบัติงาน
8. งานทีม่ อบหมาย
จงเขียนโปรแกรมตั้งเวลา (ลดลง 1 ค่าใช้เวลา 1 วินาที) โดยนับเวลาถอยหลังจนถึง 00 แล้วจึง
หยุด ใช้สวิตช์รับค่าเวลาจากการตั้งค่า (เช่นเดียวกับการทดลองที่ 2) ทาการทดลองผลทั้งการจาลองการ
ทางานด้วยโปรแกรม Proteus และทดลองด้วยวงจรจริ ง วงจรที่ใช้ทดลองเป็ นดังรู ปที่ 7.13-4
เฉลยแบบทดสอบก่อนเรี ยน
1. ก 2. ข 3. ง 4. ค 5. ง 6. ข 7. ก 8. ข 9. จ 10. ข
เฉลยแบบทดสอบหลังเรี ยน
1. ข 2. ง 3. ก 4. ง 5. จ 6. ก 7. ค 8. ง 9. ง 10. จ
ใบงานที่ 7.14
การเขียนโปรแกรมนับพัลส์ ด้วยวงจรเคาน์ เตอร์
1. จุดประสงค์ ทวั่ ไป
เพื่อศึกษาการเขียนโปรแกรมนับพัลส์ดว้ ยวงจรเคาน์เตอร์ เพื่อแสดงผลตัวเลข 7 ส่ วน
2. จุดประสงค์ เชิงพฤติกรรม
1. พิมพ์คาสัง่ ได้อย่างถูกต้อง
2. เขียนแผนผังงานของโปรแกรมในแบบฝึ กหัดที่มอบหมายได้
3. เขียนโปรแกรมจากผังงานของโปรแกรมในแบบฝึ กหัดที่มอบหมายได้
4. ทดลองโดยวิธีการจาลองการทางานด้วยโปรแกรม Proteus ได้
5. ทดลองจากวงจรจริ งที่สร้างขึ้นได้
6. ปฏิบตั ิงานตามใบงานเสร็ จทันเวลาที่กาหนด
3. เครื่ องมือและอุปกรณ์
1. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.2 (วงจรไมโครคอนโทรลเลอร์ )
2. วงจรโปรแกรมตัวเองใบงานที่ 7.3
3. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.11 (วงจรต่อพ่วง)
4. แหล่งจ่ายไฟกระแสตรงภายนอก
4. ลาดับขั้นการปฏิบัติงาน
1. ศึกษาจุดประสงค์ทวั่ ไปจุดประสงค์เชิงพฤติกรรมและทฤษฎีพ้นื ฐานที่เกี่ยวข้อง
2. ดาเนินการทดลอง
3. สรุ ปผลการปฏิบตั ิงาน
4. ดาเนินการในงานที่มอบหมาย
342 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
5. ทฤษฎีพืน้ ฐาน
ใบงานที่ 7.12 ที่ผา่ นมาเป็ นใบงานที่ศึกษาการแสดงผลด้วยตัวแสดงผล ตัวเลข 7 สาหรับใบงาน
นี้เป็ นการต่อยอดโดยเพิ่มการรับค่าสัญญาณพัลส์จากภายนอกเข้าวงจรเคาน์เตอร์ ค่าในรี จิสเตอร์ ต้ งั ค่าที่ใช้
ในวงจรไทเมอร์ จะกลายเป็ นรี จิสเตอร์นบั จานวนพัลส์แทน ซึ่งการเปลี่ยนหน้าที่จากวงจรไทเมอร์ ให้เป็ น
วงจรเคาน์เตอร์ (วงจรนับพัลส์ จากสัญญาณภายนอก) ทาได้โดยการกาหนดที่บิต C/T ให้มีค่าเป็ นลอจิก 1
ทาให้แหล่งสัญญาณเพิ่มค่าในรี จิสเตอร์ ต้ งั ค่า (TH,TL) ได้จากสัญญาณภายนอกแทนดังรู ปที่ 7.14-1 เป็ น
การใช้งานวงจรเคาน์เตอร์โหมด 1
OSC ÷12
C/T=0
สัญญาณ
TL1 TH1 TF1 อินเตอร์รัพท์
ขา T1 C/T=1 8 บิต 8 บิต
TR1
GATE
ขา INT1
รู ปที่ 7.14-1 โครงสร้างในโหมด 1 ของวงจรเคาน์เตอร์ 1
การปรั บ เปลี่ ย นโหมดให้ว งจรท างานในโหมดวงจรเคาน์ เ ตอร์ จะต้อ งแก้ไ ขค่ า ก าหนดใน
รี จิสเตอร์ TMOD ดังนี้
Timer 1 Timer 0
GATE = 0 เพื่อใช้บิต TR ในการสัง่ การให้เริ่ มทางานหรื อหยุดทางานได้
C/T = 1 เพื่อให้วงจรทางานในโหมดวงจรเคาน์เตอร์
M1-M0 = 01 เพื่อทางานในโหมด 1
ดัง นั้นหากใช้งานวงจรเคาน์ เตอร์ วงจรที่ 1 จะต้องก าหนดค่ า เป็ น 0101 xxxx ลงในรี จิส เตอร์
TMOD ซึ่งวงจรไทเมอร์ 0 ไม่ได้ใช้งานดังนั้นกาหนดเป็ นอะไรก็ได้ (เพื่อสะดวกกาหนดเป็ น 0000 แทน)
จานวนพัลส์ ที่รับเข้ามาได้ดูจากค่าที่ ปรากฏอยู่ในรี จิสเตอร์ THTL สาหรับคาสั่งการกาหนดโหมดใน
ภาษาซีเป็ นดังนี้
TMOD=0x50; //0x50 is 01010000
ใบงานที่ 7.14 การเขียนโปรแกรมนับพัลส์ดว้ ยวงจรเคาน์เตอร์ 345
6. การดาเนินการทดลอง
วงจรสมบูรณ์ที่ใช้ทดลองใบงานการเขียนโปรแกรมนับพัลส์ดว้ ยวงจรเคาน์เตอร์ เพื่อแสดงผลที่
ตัวแสดงผลตัวเลข 7 ส่ วนโดยเพิ่มสวิตช์ต่อเข้าที่ขา T1 เป็ นตัวป้อนสัญญาณ ดังรู ปที่ 7.14-2
7805
103
74HC573
AT89S52
เริ่ ม
กาหนดตัวแปร,ค่าเริ่ มต้น
กาหนดโหมดที่ TMOD
แสดงผลจาก TL
เริ่ ม
กาหนดตัวแปรตั้งค่า
กาหนดโหมดที่ TMOD
TL=ตัวแปรตั้งค่า ?
หยุดรับสัญญาณจาก T1
void main(void)
{
com1=0; //Off Q1
com2=0; //Off Q2
TMOD=0x50; //Counter Mode
TR1=1; //Start counter
while(1)
{
if(TL1!=setnum)
{
display(setnum-TL1); //display count number
}
else
{
TR1=0; //Stop counter
display(setnum-TL1); //display count number
}
}
}
void display(char num)
{
code unsigned char value[]={ 0x3f,0x06,0x5b,0x4f,0x66,
0x6d,0x7d,0x07,0x7f,0x6f};
P0=value[num/10]; //send Ten digits
com1=1; //On Q1
delay_display(); //slight delay for display
com1=0; //Off Q1
P0=value[num%10]; //send digit number
com2=1; //On Q2
delay_display(); //slight delay for display
com2=0; //Off Q2
}
void delay_display(void)
{
int i;
for(i=0;i<1000;i++);
}
ทดลองการทางาน
1. จาลองการทางานด้วยโปรแกรม Proteus
2. ทดลองด้วยวงจรจริ ง
3. ทดลองแก้ไขตัวเลขโปรแกรมจาก char setnum=99;; เป็ นค่าอื่น (ไม่เกิน 99) แล้วสังเกตผล
7. สรุปผลการปฏิบัติงาน
ใบงานที่ 7.14 การเขียนโปรแกรมนับพัลส์ดว้ ยวงจรเคาน์เตอร์ 351
8. งานทีม่ อบหมาย
จงเขียนโปรแกรมลดค่าตัวเลขที่กาหนด โดยสามารถตั้งค่าตัวเลขจากสวิตช์ S2,S3 ได้ (การเขียน
โปรแกรมตั้งค่าตัวเลขทาเช่ นเดี ยวกับใบงานที่ 7.13) รั บสัญญาณกระตุ น้ การลดค่าจากวงจรเคาน์เตอร์
(วงจรไทเมอร์ 1) ทาการทดลองผลทั้งการจาลองการทางานด้วยโปรแกรม Proteus และทดลองด้วยวงจร
จริ ง วงจรที่ใช้ทดลองเป็ นดังรู ปที่ 7.14-6
เฉลยแบบทดสอบก่อนเรี ยน
1. ข 2. ง 3. ข 4. จ 5. ก 6. ค 7. ข 8. ค 9. ก 10. จ
เฉลยแบบทดสอบหลังเรี ยน
1. ค 2. ก 3. ง 4. ข 5. ค 6. จ 7. ง 8. ข 9. ค 10. ก
ใบงานที่ 7.15
การสร้ างวงจรขับมอเตอร์ ไฟฟ้ากระแสตรง
1. จุดประสงค์ ทวั่ ไป
เพื่อให้นกั ศึกษาสามารถสร้างวงจรขับมอเตอร์ไฟฟ้ากระแสตรง
2. จุดประสงค์ เชิงพฤติกรรม
1. บอกส่ วนประกอบของวงจรขับมอเตอร์ไฟฟ้ากระแสตรงได้
2. บอกการทางานของอุปกรณ์ต่าง ๆ ของวงจรขับมอเตอร์ไฟฟ้ากระแสตรงได้
3. บอกขั้นตอนการประกอบวงจรขับมอเตอร์ไฟฟ้ากระแสตรงได้
4. สร้าง (ประกอบ) วงจรขับมอเตอร์ไฟฟ้ากระแสตรงได้
5. ทดสอบการทางานของวงจรขับมอเตอร์ไฟฟ้ากระแสตรงได้
6. ปฏิบตั ิงานตามใบงานเสร็ จทันเวลาที่กาหนด
3. เครื่ องมือและอุปกรณ์
1. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.2 (วงจรไมโครคอนโทรลเลอร์ ) 1 แผ่น
2. แผ่นวงจรพิมพ์เอนกประสงค์ขนาด 8 ซ.ม. × 12 ซ.ม. 1 แผ่น
3. อุปกรณ์อิเล็กทรอนิกส์ตามวงจรรู ปที่ 7.15-10 (a) ประกอบด้วย
3.1 ไอซี L298D 1 ตัว 3.4 มอเตอร์ ไฟตรง 6V 1 ตัว
3.2 ไดโอด 1N4001 1 ตัว 3.5 สวิตช์กดติดปล่อยดับ 2 ตัว
3.3 ตัวเก็บประจุ 100 uF 1 ตัว
4. หัวแร้ง 1 ตัว
5. ตะกัว่ บัดกรี 1 ม้วน
6. มัลติมิเตอร์ 1 เครื่ อง
4. ลาดับขั้นการปฏิบัติงาน
1. ศึกษาจุดประสงค์ทวั่ ไปจุดประสงค์เชิงพฤติกรรมและทฤษฎีพ้นื ฐานที่เกี่ยวข้อง
2. ดาเนินการสร้างวงจรขับมอเตอร์ไฟฟ้ากระแสตรง
3. วัดและทดสอบการทางานของวงจร
4. สรุ ปผลการปฏิบตั ิงาน
356 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
5. ทฤษฎีพืน้ ฐาน
มอเตอร์ ไฟฟ้ ากระแสตรง (DC motor) เป็ นเครื่ องกลไฟฟ้ าชนิ ดหนึ่ งที่มีหน้าที่เปลี่ ยนพลังงาน
งานไฟฟ้าไปเป็ นพลังงานกล โดยเมื่อได้รับการป้ อนพลังงานไฟฟ้าที่เป็ นไฟฟ้ากระแสตรงจะทาให้แกน
ของมอเตอร์ หมุน แต่เนื่ องจากการทางานของมอเตอร์ ไฟฟ้ากระแสตรงต้องการกระแสไฟฟ้าในปริ มาณ
สู งกว่าความสามารถที่ไมโครคอนโทรลเลอร์ จะจ่ายให้ได้ จึงจาเป็ นที่จะต้องมีวงจรขับมอเตอร์โดยเฉพาะ
เพื่อทาหน้าที่ขบั มอเตอร์ให้ทางานตามต้องการได้
6. การดาเนินการสร้ างวงจร
การสร้ า งวงจรขับ มอเตอร์ ไ ฟฟ้ ากระแสตรงในใบงานนี้ เป็ นการสร้ างวงจรต่ อพ่วงที่ ต้องใช้
แผ่นวงจรพิมพ์เอนกประสงค์แผ่นใหม่ ซึ่ งวงจรนี้ ประกอบด้วยอุปกรณ์หลัก 4 รายการประกอบด้วยไอซี
L293D ไดโอด 1N4001 ตัวเก็บประจุ 100 uF และสวิตช์ วงจรสมบูรณ์เป็ นดังรู ปที่ 7.15-8
การทางานของวงจร
วงจรรู ปที่ 7.15-10 (a) เป็ นวงจรต่อพ่วงสาหรับวงจรขับมอเตอร์ ไฟฟ้ ากระแสตรง ซึ่ งวงจรนี้ ใช้
ไอซี ขบั สาเร็ จรู ปเบอร์ L293D สามารถขับมอเตอร์ ขนาดเล็กได้ไม่เกิน 1 แอมป์ และใช้ไดโอด 1N4001
ต่อผ่านเข้าขา VS เพื่อเป็ นไฟเลี้ยงมอเตอร์ ไฟฟ้ ากระแสตรงและป้ องกันสัญญาณรบกวนที่เกิดขึ้นจากการ
ทางานของมอเตอร์ โดยการใช้ตวั เก็บประจุ 100 uF ต่อเข้าที่ขา VS
การดาเนินการสร้ างวงจร
1. จัดวางอุปกรณ์ตาแหน่งที่เหมาะสมโดยเว้นพื้นที่ไว้สาหรับต่อใบงานถัดไป
2. วางคอนเน็คเตอร์ ขอแผ่นใหม่ โดยให้ตรงกับตาแหน่งคอนเน็คเตอร์ พอร์ตของวงจรหลัก
3. บัดกรี เชื่อมต่ออุปกรณ์ต่าง ๆ ให้ได้ตามวงจรในรู ปที่ 7.15-10
ใบงานที่ 7.15 การสร้างวงจรขับมอเตอร์ไฟฟ้ากระแสตรง 363
7. การทดสอบการทางานของวงจร
การทดสอบวงจรขับ มอเตอร์ ไฟฟ้ ากระแสตรงซึ่ งเป็ นวงจรเอาต์พุตพอร์ ตให้นักศึกษาทาการ
ทดสอบการทางานของวงจรใน 2 ขั้นตอน
ขั้นตอนที่หนึ่ง ทดสอบการทางานของวงจรทางฮาร์ดแวร์ ดาเนินการดังนี้
1. ต่อเชื่ อมกับวงจรไมโครคอนโทรลเลอร์ เฉพาะส่ วนของไฟเลี้ยง 5 โวลต์และ 0 โวลต์ดงั รู ปที่
7.15-11
7805
103
L298D
AT89S52
7805
103
L298D
AT89S52
8. สรุปผลการปฏิบัติงาน
366 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
เฉลยแบบทดสอบก่อนเรี ยน
1. ค 2. ก 3. ข 4. ข 5. จ 6. ค 7. ง 8. ข 9. ค 10. ข
เฉลยแบบทดสอบหลังเรี ยน
1. ก 2. ง 3. ค 4. จ 5. ข 6. ง 7. ข 8. ง 9. ก 10. จ
ใบงานที่ 7.16
การเขียนโปรแกรมควบคุมมอเตอร์ ไฟฟ้ ากระแสตรง
1. จุดประสงค์ ทวั่ ไป
เพื่อศึกษาการเขียนโปรแกรมควบคุมมอเตอร์ไฟฟ้ากระแสตรง
2. จุดประสงค์ เชิงพฤติกรรม
1. พิมพ์คาสัง่ ได้อย่างถูกต้อง
2. เขียนแผนผังงานของโปรแกรมในแบบฝึ กหัดที่มอบหมายได้
3. เขียนโปรแกรมจากผังงานของโปรแกรมในแบบฝึ กหัดที่มอบหมายได้
4. ทดลองโดยวิธีการจาลองการทางานด้วยโปรแกรม Proteus ได้
5. ทดลองจากวงจรจริ งที่สร้างขึ้นได้
6. ปฏิบตั ิงานตามใบงานเสร็ จทันเวลาที่กาหนด
3. เครื่ องมือและอุปกรณ์
1. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.2 (วงจรไมโครคอนโทรลเลอร์ )
2. วงจรโปรแกรมตัวเองใบงานที่ 7.3
3. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.15 (วงจรต่อพ่วง)
4. แหล่งจ่ายไฟกระแสตรงภายนอก
4. ลาดับขั้นการปฏิบัติงาน
1. ศึกษาจุดประสงค์ทวั่ ไปจุดประสงค์เชิงพฤติกรรมและทฤษฎีพ้นื ฐานที่เกี่ยวข้อง
2. ดาเนินการทดลอง
3. สรุ ปผลการปฏิบตั ิงาน
4. ดาเนินการในงานที่มอบหมาย
370 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
5. ทฤษฎีพืน้ ฐาน
ใบงานที่ 7.15 ที่ผ่านมาเป็ นใบงานที่สร้ างวงจรต่อพ่วงที่ใช้ขบั มอเตอร์ ไฟฟ้ ากระแสตรงโดยใช้
ไอซี เบอร์ L293D ซึ่ งไอซี เบอร์ น้ ี สามารถขับมอเตอร์ ที่ใช้กระแสต่อเนื่ องได้ไม่เกิ น 600 มิลลิแอมป์ และ
กระแสสู งสุ ดชัว่ ขณะ (Peak) ไม่เกิน 1.2 แอมป์ แต่ในวงจรที่ใช้ในใบงานได้ถูกออกแบบให้ขนานชุ ดขับ
เข้าด้วยกันทาให้วงจรสามารถขับมอเตอร์ ที่กินกระแสต่อเนื่ องได้สูงขึ้นไม่เกิน 1.2 แอมป์ การควบคุมการ
ทางานมีขาที่ใช้ในการควบคุม 3 ขาได้แก่ขา EN, A, B ดังรู ปที่ 7.16-1
6. การดาเนินการทดลอง
วงจรสมบู รณ์ ที่ ใ ช้ท ดลองใบงานการเขี ย นโปรแกรมควบคุ ม การท างานของมอเตอร์ ไ ฟฟ้ า
กระแสตรง ดังรู ปที่ 7.14-2
7805
103
L298D
AT89S52
กาหนดตัวแปร,ค่าเริ่ มต้น
หมุนมอเตอร์ ตามเข็ม
หน่วงเวลา 5 วินาที
หมุนมอเตอร์ทวนเข็ม
หน่วงเวลา 5 วินาที
เริ่ ม
กาหนดตัวแปรตั้งค่า
ส่ งลอจิกมอเตอร์ หยุดหมุน
ส่ งลอจิกมอเตอร์ หยุดหมุน
378 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
ทดลองการทางาน
1. จาลองการทางานด้วยโปรแกรม Proteus
2. ทดลองด้วยวงจรจริ ง
3. ทดลองการส่ งสัญญาณพัลซ์เพื่อลดความเร็ วโดดส่ งให้กบั ขา EN ของวงจรขับมอเตอร์ แล้ว
สังเกตผล
7. สรุปผลการปฏิบัติงาน
ใบงานที่ 7.16 การเขียนโปรแกรมควบคุมมอเตอร์ไฟฟ้ากระแสตรง 379
8. งานทีม่ อบหมาย
จงเขียนโปรแกรมปรับความเร็ วมอเตอร์ โดยสวิตช์ต้ งั สองตัวเป็ นตัวควบคุมความเร็ วดังนี้
- สวิตช์ S1 เมื่อถูกกดความเร็ วมอเตอร์ จะเพิ่มขึ้น
- สวิตช์ S2 เมื่อถูกกดความเร็ วมอเตอร์ จะลดขึ้น
ทาการทดลองผลทั้งการจาลองการทางานด้วยโปรแกรม Proteus และทดลองด้วยวงจรจริ ง วงจร
ที่ใช้ทดลองเป็ นดังรู ปที่ 7.16-6
เฉลยแบบทดสอบก่อนเรี ยน
1. ค 2. ก 3. ง 4. ข 5. จ 6. ค 7. ข 8. ก 9. ก 10. ข
เฉลยแบบทดสอบหลังเรี ยน
1. ข 2. ก 3. ข 4. ง 5. ค 6. ก 7. ง 8. ข 9. ง 10. ก
ใบงานที่ 7.17
การสร้ างวงจรขับสเต็ปเปอร์ มอเตอร์
1. จุดประสงค์ ทวั่ ไป
เพื่อให้นกั ศึกษาสามารถสร้างวงจรขับสเต็ปเปอร์มอเตอร์
2. จุดประสงค์ เชิงพฤติกรรม
1. บอกส่ วนประกอบของวงจรขับสเต็ปเปอร์มอเตอร์ ได้
2. บอกการทางานของอุปกรณ์ต่าง ๆ ของวงจรขับสเต็ปเปอร์มอเตอร์ ได้
3. บอกขั้นตอนการประกอบวงจรขับสเต็ปเปอร์มอเตอร์ ได้
4. สร้าง (ประกอบ) วงจรขับสเต็ปเปอร์มอเตอร์ ได้
5. ทดสอบการทางานของวงจรขับสเต็ปเปอร์มอเตอร์ ได้
6. ปฏิบตั ิงานตามใบงานเสร็ จทันเวลาที่กาหนด
3. เครื่ องมือและอุปกรณ์
1. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.2 (วงจรไมโครคอนโทรลเลอร์ ) 1 แผ่น
2. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.15 (วงจรต่อพ่วง) 1 แผ่น
3. อุปกรณ์อิเล็กทรอนิกส์ตามวงจรรู ปที่ 7.17-10 (a) ประกอบด้วย
3.1 ไอซี ULN2803 1 ตัว
3.2 สเต็ปเปอร์มอเตอร์ 1 ตัว
4. หัวแร้ง 1 ตัว
5. ตะกัว่ บัดกรี 1 ม้วน
6. มัลติมิเตอร์ 1 เครื่ อง
4. ลาดับขั้นการปฏิบัติงาน
1. ศึกษาจุดประสงค์ทวั่ ไปจุดประสงค์เชิงพฤติกรรมและทฤษฎีพ้นื ฐานที่เกี่ยวข้อง
2. ดาเนินการสร้างวงจรขับสเต็ปเปอร์มอเตอร์
3. วัดและทดสอบการทางานของวงจร
4. สรุ ปผลการปฏิบตั ิงาน
384 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
5. ทฤษฎีพืน้ ฐาน
สเต็ปเปอร์ มอเตอร์ หรื อที่บางคนเรี ยกว่าสเต็ปปิ้ งมอเตอร์ เป็ นมอเตอร์ ที่ทางานโดยอาศัยพลังงาน
จากไฟฟ้ ากระแสตรงเช่นเดียวกับมอเตอร์ กระแสตรง แต่มีความความแตกต่างจากมอเตอร์ กระแสตรงที่
เมื่ อ ป้ อ นไฟให้ ก ับ สเต็ ป เปอร์ ม อเตอร์ จ ะขยับ เพี ย งเล็ ก น้อ ยเพื่ อ เข้า สเต็ ป ในขณะที่ ม อเตอร์ ไ ฟฟ้ า
กระแสตรงทัว่ ไปจะหมุนตราบที่ยงั มีพลังงานจ่ายให้แก่ตวั มัน ทั้งนี้ เป็ นเพราะโครงสร้างของสเต็ปเปอร์
มอเตอร์ นนั่ เอง โดย สเต็ปเปอร์ มอเตอร์ มีดว้ ยกัน 2 แบบคือ
1. Bipolar เป็ นสเต็ปเปอร์มอเตอร์ที่มีขดลวด 2 ขดมีสายไฟให้ต่อใช้งาน 4 เส้นดังรู ปที่ 7.17-1 (a)
2. Unipolar เป็ นสเต็ปเปอร์มอเตอร์ที่มีขดลวด 4 ขด (2 ขดแบบมีแท็ปกลาง) โดยมี 2 แบบ
2.1 แบบมีสายไฟให้ต่อใช้งาน 5 เส้น ดังรู ปที่ 7.17-1 (b)
2.2 แบบมีสายไฟให้ต่อใช้งาน 6 เส้น ดังรู ปที่ 7.17-1 (c)
ใบงานนี้ เลือกใช้สเต็ปเปอร์ มอเตอร์ แบบ Unipolar ซึ่ งมี ขดลวดอยู่ภายในจานวน 4 ขด (ที่ จริ ง
เป็ น 2 ขดที่มีจุดแท็ปกลาง) โดยจานวนรอบของขดลวดทั้ง 4 ขดจะมีค่าความต้านทานเท่ากัน ดังนั้นก่อน
ใช้งานต้องท าการหาตาแหน่ ง สายที่ ใ ช้งานว่า เป็ นสายตาแหน่ ง ใดของขดลวด ค่ าความต้า นทานของ
ขดลวดของสเต็ปเปอร์ มอเตอร์ ที่มีสายต่อแบบ 5 เส้นเมื่อวัดค่าความต้านทานของสายทุกเส้นจะสามารถ
อ่านค่าได้ทุกเส้น นั้นหมายความว่าทุกเส้นเชื่อมต่อถึงกัน และมีสายไฟเพียงเส้นเดียวเท่านั้นที่วดั ค่าความ
ต้านทานเทียบกับเส้นอื่น ๆ แล้วมีค่าความต้านทานที่วดั ได้ในแต่ละเส้นเท่ากันทั้งหมด สายไฟเส้นนั้น
เป็ นสายร่ วม นาสายร่ วมต่อกับไฟบวก 5 โวลต์ นาสายไฟเส้นที่เหลือต่อลงกราวด์ครั้งละเส้นเรี ยงกัน โดย
สลับกันไปมา จนกว่าสเต็ปเปอร์ มอเตอร์ หมุนไปทางด้านเดียวกัน สาหรับสเต็ปเปอร์ มอเตอร์ ที่มีสายต่อ
แบบ 6 เส้น เมื่อทาการวัดค่าความต้านทานจะมีเพียง 3 เส้น 2 ชุ ดที่วดั แล้วอ่านค่าความต้านทาน ได้และ
ในแต่ละชุ ดจะมีเส้นเดี ยวที่มีสายร่ วม โดยเมื่อวัดค่าความต้านทานของสายร่ วมกับสายเส้ นอื่น จะมีค่า
ความต้านทานเท่ากัน เมื่อนามาใช้งานจะต้องนาสายร่ วมทั้ง 2 เส้นของทั้ง 2 ชุ ดมาต่อร่ วมกัน (แบบ 5
เส้ นต่อไว้แล้วภายในตัวมอเตอร์ ) สาหรั บวงจรขับจะต้องใช้วงจรขับที่ ออกแบบมาสาหรั บขับขดลวด
เช่ นเดี ยวกับวงจรขับรี เลย์ โดยวงจรจะต้องมีไดโอดต่อคร่ อมขดลวด เพื่อใช้ขจัดแรงดันจะที่เกิ ดขึ้นเมื่อ
ทรานซิสเตอร์หยุดนากระแส วงจรเป็ นดังรู ปที่ 7.17-2
ใบงานที่ 7.17 การสร้างวงจรขับสเต็ปเปอร์มอเตอร์ 387
6. การดาเนินการสร้ างวงจร
การสร้างวงจรขับสเต็ปเปอร์ มอเตอร์ ในใบงานนี้ เป็ นการสร้างเพิ่มเติมจากใบงาน 7.15 โดยเพิ่ม
เฉพาะส่ วนของวงจรขับสเต็ปเปอร์ ซึ่ งใช้อุป กรณ์ เพิ่มเติ มเพียงตัวเดี ยวคื อไอซี เบอร์ ULN2803 วงจร
สมบูรณ์เป็ นดังรู ปที่ 7.17-4
การทางานของวงจร
วงจรรู ปที่ 7.17-6 (a) เป็ นวงจรต่อพ่วงสาหรับวงจรขับสเต็ปเปอร์ มอเตอร์ ซึ่ งวงจรนี้ใช้ไอซี ขบั ที่
เป็ นทรานซิ สเตอร์ อาร์ เรย์เบอร์ ULN2803 โดยวงจรสามารถขับสเต็ปเปอร์ มอเตอร์ ขนาดเล็ก ที่มีแรงดัน
ขดลวดขนาด 5 โวลต์โดยไอซี จะทาหน้าที่คล้ายสวิตช์ต่อลงกราวด์เมื่อมีสัญญาณควบคุ มที่เป็ นลอจิก 1
เข้ามาทางอินพุท
การดาเนินการสร้ างวงจร
1. จัดวางอุปกรณ์ตาแหน่งที่เหมาะสมโดยใช้พ้นื ที่วา่ งที่มีอยู่
2. บัดกรี เชื่อมต่ออุปกรณ์ต่าง ๆ ให้ได้ตามวงจรในรู ปที่ 7.17-6
390 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
7. การทดสอบการทางานของวงจร
การทดสอบวงจรขับสเต็ปเปอร์ มอเตอร์ ซ่ ึ งเป็ นวงจรเอาต์พุตพอร์ ตให้นกั ศึกษาทาการทดสอบ
การทางานของวงจรใน 2 ขั้นตอน
ขั้นตอนที่หนึ่ง ทดสอบการทางานของวงจรทางฮาร์ดแวร์ ดาเนินการดังนี้
1. ต่อเชื่ อมกับวงจรไมโครคอนโทรลเลอร์ เฉพาะส่ วนของไฟเลี้ยง 5 โวลต์และ 0 โวลต์ดงั รู ปที่
7.17-7 103
7805
L298D
AT89S52
ULN2803
7805
103
L298D
AT89S52
ULN2803
void main(void)
{
while(1)
{
coil_A=0;delay(100);coil_A=1;
coil_B=0;delay(100);coil_B=1;
coil_C=0;delay(100);coil_C=1;
coil_D=0;delay(100);coil_D=1;
}
}
void delay(int n) //delay function
{
int x,y;
for(x=0;x<n;x++)
{
for(y=0;y<100;y++)
{
}
}
}
392 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
3. คอมไพล์เพื่อให้ได้ไฟล์ภาษาเครื่ อง (HEX file)
4. นาไฟล์ภาษาเครื่ องที่ได้อดั ลงชิพซีพียู
5. สังเกตผลที่ได้หากวงจรทางานตามปกติ มอเตอร์ จะนิ่งก่อนหลังจากนั้นจะเริ่ มหมุนและหมุน
กลับทางหลังจากนั้นจะหยุดหมุน หากการหมุนผิดไปจากที่กล่าวให้ดาเนินการแก้ไข
8. สรุปผลการปฏิบัติงาน
ใบงานที่ 7.17 การสร้างวงจรขับสเต็ปเปอร์มอเตอร์ 393
เฉลยแบบทดสอบก่อนเรี ยน
1. ข 2. ก 3. ค 4. ง 5. จ 6. จ 7. ข 8. ข 9. จ 10. ค
เฉลยแบบทดสอบหลังเรี ยน
1. จ 2. ข 3. จ 4. ก 5. ง 6. ค 7. ง 8. ง 9. ข 10. ก
ใบงานที่ 7.18
การเขียนโปรแกรมควบคุมสเต็ปเปอร์ มอเตอร์
1. จุดประสงค์ ทวั่ ไป
เพื่อศึกษาการเขียนโปรแกรมควบคุมสเต็ปเปอร์มอเตอร์
2. จุดประสงค์ เชิงพฤติกรรม
1. พิมพ์คาสัง่ ได้อย่างถูกต้อง
2. เขียนแผนผังงานของโปรแกรมในแบบฝึ กหัดที่มอบหมายได้
3. เขียนโปรแกรมจากผังงานของโปรแกรมในแบบฝึ กหัดที่มอบหมายได้
4. ทดลองโดยวิธีการจาลองการทางานด้วยโปรแกรม Proteus ได้
5. ทดลองจากวงจรจริ งที่สร้างขึ้นได้
6. ปฏิบตั ิงานตามใบงานเสร็ จทันเวลาที่กาหนด
3. เครื่ องมือและอุปกรณ์
1. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.2 (วงจรไมโครคอนโทรลเลอร์ )
2. วงจรโปรแกรมตัวเองใบงานที่ 7.3
3. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.17 (วงจรต่อพ่วง)
4. แหล่งจ่ายไฟกระแสตรงภายนอก
4. ลาดับขั้นการปฏิบัติงาน
1. ศึกษาจุดประสงค์ทวั่ ไปจุดประสงค์เชิงพฤติกรรมและทฤษฎีพ้นื ฐานที่เกี่ยวข้อง
2. ดาเนินการทดลอง
3. สรุ ปผลการปฏิบตั ิงาน
4. ดาเนินการในงานที่มอบหมาย
396 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
5. ทฤษฎีพืน้ ฐาน
จากใบงาน 7.17 ที่ผ่านมาเป็ นใบงานที่สร้างวงจรต่อพ่วงที่ใช้ขบั สเต็ปเปอร์ มอเตอร์ โดยใช้ไอซี
เบอร์ ULN2803 ใบงานเลือกใช้สเต็ปเปอร์ มอเตอร์ แบบ Unipolar ซึ่ งเป็ นสเต็ปเปอร์ ที่สามารถควบคุ ม
การทางานได้ง่าย คุ ณสมบัติในการขยับในแต่ละสเต็ปของมอเตอร์ ที่พบโดยทัว่ ไปมี 1.8 องศาต่อสเต็ป
และ 7.5 องศาต่อสเต็ป การควบคุมการหมุนของมอเตอร์สามารถควบคุมการทางานได้ 3 แบบ คือ
1. แบบเต็มสเต็ป 1 เฟส (Full step 1 phase) ซึ่ งเป็ นการขับครั้งละ 1 เฟสเรี ยงกันไป ทาให้
มอเตอร์ หมุนไปครั้งละ 1 สเต็ป ถ้ามอเตอร์ มีคุณสมบัติ 1.8 องศาต่อสเต็ปก็จะหมุนไปครั้งละ 1.8 องศา
โดยมีข้ นั ตอนขับเฟสดังรู ปที่ 7.18-1
3. แบบครึ่ งสเต็ป (Haft step) เป็ นการควบคุ ม ให้มอเตอร์ หมุ นไปครั้ งละครึ่ งของสเต็ป
ดังนั้นหากมอเตอร์ มอเตอร์ มีคุณสมบัติ 1.8 องศาต่อสเต็ปก็จะหมุนไปครั้งละ 0.9 องศา ทาได้ตาแหน่งที่
เที่ยงตรงมากขึ้นเมื่อนาไปประยุกต์ใช้งาน วิธีการขับจะใช้การผสมกันระหว่างแบบเต็มสเต็ป 1 เฟสกับ
แบบเต็มสเต็ป 2 เฟส ซึ่ งมีข้ นั ตอนขับเฟสดังรู ปที่ 7.18-3
6. การดาเนินการทดลอง
วงจรสมบูรณ์ที่ใช้ทดลองใบงานการเขียนโปรแกรมควบคุมสเต็ปเปอร์มอเตอร์ ดังรู ปที่ 7.18-4
7805
103
L298D
AT89S52
ULN2803
หน่วงเวลา B
ทดลองการทางาน
1. จาลองการทางานด้วยโปรแกรม Proteus
2. ทดลองด้วยวงจรจริ ง
3. ทดลองแก้ไขค่าในตัวแปร step[ ] โดยให้เรี ยงกลับด้านเป็ น{0x8f,0x4f,0x2f,0x1f} แล้ว
สังเกตผล
เริ่ ม
B
กาหนดตัวแปร, ค่าเริ่ มต้น
ส่ งค่าสเต็ปให้หมุนตามเข็ม
หน่วงเวลา
ใช่
ครบ 1 รอบ ? มอเตอร์หมุนตามเข็มสเต็ปถัดไป
ไม่ใช่
A
404 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
ส่ งค่าสเต็ปให้หมุนทวนเข็ม
หน่วงเวลา
ใช่
ครบ 1 รอบ ? มอเตอร์หมุนทวนเข็มสเต็ปถัดไป
ไม่ใช่
B
ทดลองการทางาน
1. จาลองการทางานด้วยโปรแกรม Proteus
2. ทดลองด้วยวงจรจริ ง
3. ทดลองแก้ไขโปรแกรมให้สามารถหมุนในทิศทางเดียวมากกว่า 1 รอบแล้วสังเกตผล
7. สรุปผลการปฏิบัติงาน
8. งานทีม่ อบหมาย
จงเขียนโปรแกรมควบคุมสเต็ปเปอร์ มอเตอร์ แบบเต็มคลื่น 2 เฟส โดยให้มอเตอร์ หมุนทวนเข็ม
นาฬิกา 5 รอบแล้วหมุนตามเข็มนาฬิกา 5 รอบแล้วหยุด วงจรที่ใช้ในการทดลองเป็ นดังรู ป วงจรที่ใช้
ทดลองเป็ นดังรู ปที่ 7.18-7
เฉลยแบบทดสอบก่อนเรี ยน
1. ข 2. ข 3. ค 4. ง 5. ก 6. ข 7. ค 8. ง 9. ข 10. จ
เฉลยแบบทดสอบหลังเรี ยน
1. ค 2. ค 3. ก 4. ข 5. จ 6. ก 7. ง 8. จ 9. ก 10. ง
ใบงานที่ 7.19
การเขียนโปรแกรมควบคุมเซอร์ โวมอเตอร์
1. จุดประสงค์ ทวั่ ไป
เพื่อศึกษาการเขียนโปรแกรมควบคุมเซอร์โวมอเตอร์
2. จุดประสงค์ เชิงพฤติกรรม
1. พิมพ์คาสัง่ ได้อย่างถูกต้อง
2. เขียนแผนผังงานของโปรแกรมในแบบฝึ กหัดที่มอบหมายได้
3. เขียนโปรแกรมจากผังงานของโปรแกรมในแบบฝึ กหัดที่มอบหมายได้
4. ทดลองโดยวิธีการจาลองการทางานด้วยโปรแกรม Proteus ได้
5. ทดลองจากวงจรจริ งที่สร้างขึ้นได้
6. ปฏิบตั ิงานตามใบงานเสร็ จทันเวลาที่กาหนด
3. เครื่ องมือและอุปกรณ์
1. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.2 (วงจรไมโครคอนโทรลเลอร์ )
2. วงจรโปรแกรมตัวเองใบงานที่ 7.3
3. แหล่งจ่ายไฟกระแสตรงภายนอก
4. ลาดับขั้นการปฏิบัติงาน
1. ศึกษาจุดประสงค์ทวั่ ไปจุดประสงค์เชิงพฤติกรรมและทฤษฎีพ้นื ฐานที่เกี่ยวข้อง
2. ดาเนินการทดลอง
3. สรุ ปผลการปฏิบตั ิงาน
4. ดาเนินการในงานที่มอบหมาย
410 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
5. ทฤษฎีพืน้ ฐาน
เซอร์ โวมอเตอร์ เป็ นมอเตอร์ ที่ส ามารถควบคุ มการเคลื่ อนที่ ไปยังมุ มที่ ต้องการได้ด้วยวงจร
ควบคุมแบบป้ อนกลับภายใน เซอร์ โวมอเตอร์ ขนาดเล็กนิ ยมใช้กนั มากในเครื่ องเล่นบังคับวิทยุเช่ น รถ
เรื อ เครื่ องบิน เซอร์โวมอเตอร์ ประกอบขึ้นจากส่ วนประกอบหลัก ๆ 3 ส่ วนคือ
1. มอเตอร์ไฟฟ้ากระแสตรงขนาดเล็ก
2. ชุดเกียร์ ทดรอบ
3. วงจรควบคุม
#include <intrins.h>
414 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
6. การดาเนินการทดลอง
วงจรสมบูรณ์ที่ใช้ทดลองใบงานการเขียนโปรแกรมควบคุมเซอร์ โวมอเตอร์ ดังรู ปที่ 7.19-4
7805
103
AT89S52
กาหนดตัวแปร,ค่าเริ่ มต้น
สร้างพัลส์สาหรับ 0 องศา
สร้างพัลส์สาหรับ 90 องศา
sbit servo1=P2^7;
void main(void)
{
int pulse,i;
while(1)
{
ใบงานที่ 7.19 การเขียนโปรแกรมควบคุมเซอร์โวมอเตอร์ 417
//------------------ 0 degree------------------------
pulse=122;
for(i=0;i<100;i++)
{
servo1=1;
delay(pulse-47);
servo1=0;
delay(1575-pulse); //1 period of cycle
}
//------------------ 180 degree------------------------
pulse=200;
for(i=0;i<100;i++)
{
servo1=1;
delay(pulse-47);
servo1=0;
delay(1575-pulse); //1 period of cycle
}
//------------------ 90 degree------------------------
pulse=160;
for(i=0;i<100;i++)
{
servo1=1;
delay(pulse-47);
servo1=0;
delay(1575-pulse); //1 period of cycle
}
}
}
void delay(int n)
{
while(n--){
_nop_();
}
}
ทดลองการทางาน
1. จาลองการทางานด้วยโปรแกรม Proteus
2. ทดลองด้วยวงจรจริ ง
3. ทดลองแก้ไขค่าตัวแปร pulse เพื่อให้เซอร์ โวมอเตอร์ เคลื่อนไปยังมุม 45 องศาและ 135 องศา
แล้วสังเกตผล
การทดลองที่ 2 การทดลองการบัง คับ ให้เซอร์ โวมอเตอร์ 2 ตัวให้เคลื่ อนที่ ในมุ มที่ ต่างกันระหว่า ง 0
องศากับ 180 สลับกัน วงจรที่ใช้ในการทดลองใช้วงจรรู ปที่ 7-19-3
เริ่ ม
กาหนดตัวแปร,ค่าเริ่ มต้น
หน่วงเวลา
หน่วงเวลา
ทดลองการทางาน
1. จาลองการทางานด้วยโปรแกรม Proteus
2. ทดลองด้วยวงจรจริ ง
3. ทดลองแก้ไขโปรแกรมให้สามารถเคลื่อนที่ไปยังมุมอื่น ๆ แล้วสังเกตผล
420 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
7. สรุปผลการปฏิบัติงาน
8. งานทีม่ อบหมาย
จงเขียนโปรแกรมควบคุมเซอร์ โวมอเตอร์ จานวน 2 ตัวให้เคลื่อนที่ไปยังมุมที่แตกต่างกันโดยให้
ทางานในแต่ละจังหวะดังนี้
เฉลยแบบทดสอบก่อนเรี ยน
1. ก 2. ข 3. จ 4. จ 5. ค 6. ข 7. ค 8. ก 9. ง 10. ข
เฉลยแบบทดสอบหลังเรี ยน
1. ข 2. ค 3. จ 4. จ 5. ข 6. ค 7. ก 8. ค 9. ข 10. ก
ใบงานที่ 7.20
การสร้ างวงจรแสดงผลจอผลึกเหลว (LCD)
1. จุดประสงค์ ทวั่ ไป
เพื่อให้นกั ศึกษาสามารถสร้างวงจรแสดงผลจอผลึกเหลว (LCD)
2. จุดประสงค์ เชิงพฤติกรรม
1. บอกส่ วนประกอบของวงจรแสดงผลจอผลึกเหลว (LCD)ได้
2. บอกการทางานของอุปกรณ์ต่าง ๆ ของวงจรแสดงผลจอผลึกเหลว (LCD)ได้
3. บอกขั้นตอนการประกอบวงจรแสดงผลจอผลึกเหลว (LCD)ได้
4. สร้าง (ประกอบ) วงจรแสดงผลจอผลึกเหลว (LCD)ได้
5. ทดสอบการทางานของวงจรแสดงผลจอผลึกเหลว (LCD)ได้
6. ปฏิบตั ิงานตามใบงานเสร็ จทันเวลาที่กาหนด
3. เครื่ องมือและอุปกรณ์
1. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.2 (วงจรไมโครคอนโทรลเลอร์ ) 1 แผ่น
2. แผ่นวงจรพิมพ์เอนกประสงค์ขนาด 8 ซ.ม. × 12 ซ.ม. 1 แผ่น
3. อุปกรณ์อิเล็กทรอนิกส์ตามวงจรรู ปที่ 7.20-3 (a) ประกอบด้วย
3.1 จอผลึกเหลว LCD 16x2 character 1 ตัว
3.2 โพเทนทิโอมิเตอร์ 10 k 1 ตัว
4. หัวแร้ง 1 ตัว
5. ตะกัว่ บัดกรี 1 ม้วน
6. มัลติมิเตอร์ 1 เครื่ อง
4. ลาดับขั้นการปฏิบัติงาน
1. ศึกษาจุดประสงค์ทวั่ ไปจุดประสงค์เชิงพฤติกรรมและทฤษฎีพ้นื ฐานที่เกี่ยวข้อง
2. ดาเนินการสร้างวงจรแสดงผลจอผลึกเหลว (LCD)
3. วัดและทดสอบการทางานของวงจร
4. สรุ ปผลการปฏิบตั ิงาน
424 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
5. ทฤษฎีพืน้ ฐาน
อุปกรณ์ แสดงผลของเครื่ องใช้ไฟฟ้ าหรื อเครื่ องใช้ที่เป็ นอิเล็กทรอนิ กส์ ในปั จจุบนั จะเลื อกใช้
LCD ในการแสดงผลเป็ นส่ วนใหญ่ เช่ น เครื่ องคิดเลข นาฬิ กา เครื่ องมือวัดแบบตัวเลข และอื่นๆอี ก
มากมาย ซึ่ง LCD สามารถแบ่งได้ 3 แบบคือ
1. Segment display ชนิด LCD module
2. Character LCD module
3. Graphic LCD module
6. การดาเนินการสร้ างวงจร
การสร้ า งวงจรแสดงผลจอผลึ ก เหลว (ต่อไปนี้ ใช้คาว่า LCD แทนจอแสดงผลผลึ ก เหลว) ใน
ใบงานนี้เป็ นการสร้างวงจรต่อพ่วงที่ตอ้ งใช้แผ่นวงจรพิมพ์เอนกประสงค์แผ่นใหม่ วงจรใช้อุปกรณ์หลัก
2 รายการประกอบด้วยจอ LCD ขนาด 16 ตัวอักษร 2 บรรทัดและโพเทนทิโอมิเตอร์ ขนาด 10 k สาหรับ
ปรับความคมชัดหน้าจอ วงจรสมบูรณ์เป็ นดังรู ปที่ 7.20-1
การทางานของวงจร
วงจรรู ปที่ 7.20-3 (a) เป็ นวงจรต่อพ่วงสาหรับวงจรแสดงผลจอ LCD ซึ่ งวงจรนี้ ใช้ LCD ขนาด
16 ตัวอักษร 2 บรรทัด และมีตวั ต้านทานปรับค่าได้เป็ นตัวปรับความคมชัด วงจรต่อใช้งานสาหรับการ
ทดลองการเชื่อมต่อแบบ 8 บิต และสามารถใช้งานสาหรับการทดลองการเชื่อมต่อแบบ 4 บิตได้เช่นกัน
การดาเนินการสร้ างวงจร
1. จัดวางอุปกรณ์ตาแหน่งที่เหมาะสมโดยใช้พ้นื ที่วา่ งที่มีอยู่
2. บัดกรี เชื่อมต่ออุปกรณ์ต่าง ๆ ให้ได้ตามวงจรในรู ปที่ 7.20-3
7. การทดสอบการทางานของวงจร
การทดสอบวงจรแสดงผลจอ LCD ซึ่ งเป็ นวงจรเอาต์พุตพอร์ ตให้นกั ศึกษาทาการทดสอบการ
ทางานของวงจรใน 2 ขั้นตอน
ใบงานที่ 7.20 การสร้างวงจรแสดงผลจอผลึกเหลว (LCD) 429
ขั้นตอนที่หนึ่ง ทดสอบการทางานของวงจรทางฮาร์ ดแวร์ โดยต่อเชื่ อมกับวงจรไมโครคอนโทรลเลอร์
เฉพาะส่ วนของไฟเลี้ยง 5 โวลต์และ 0 โวลต์ดงั รู ปที่ 7.20-4 ทาการปรับโพเทนทิโอมิเตอร์ (ตัวต้านทาน
ปรั บ ค่ า ได้) ทวนเข็ ม สุ ด และตามเข็ ม สุ ด ผลที่ ไ ด้จะสั ง เกตเห็ นส่ วนแสดงผลในแต่ ล ะต าแหน่ ง ของ
ตัวอักษรเรื องขึ้นและจางหายไป หากปรับแล้วไม่มีการเปลี่ยนแปลงใดให้ทาการตรวจสอบแก้ใข
7805
103
16
16
AT89S52
16
16
AT89S52
1
8. สรุปผลการปฏิบัติงาน
432 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
เฉลยแบบทดสอบก่อนเรี ยน
1. ข 2. ก 3. ข 4. ค 5. ข 6. ง 7. ข 8. ข 9. จ 10. ข
เฉลยแบบทดสอบหลังเรี ยน
1. ค 2. ข 3. ค 4. ง 5. ง 6. ข 7. ข 8. ค 9. ข 10. ค
ใบงานที่ 7.21
การเขียนโปรแกรมแสดงผลจอผลึกเหลว (LCD)
1. จุดประสงค์ ทวั่ ไป
เพื่อศึกษาการเขียนโปรแกรมแสดงผลจอผลึกเหลว (LCD)
2. จุดประสงค์ เชิงพฤติกรรม
1. พิมพ์คาสัง่ ได้อย่างถูกต้อง
2. เขียนแผนผังงานของโปรแกรมในแบบฝึ กหัดที่มอบหมายได้
3. เขียนโปรแกรมจากผังงานของโปรแกรมในแบบฝึ กหัดที่มอบหมายได้
4. ทดลองโดยวิธีการจาลองการทางานด้วยโปรแกรม Proteus ได้
5. ทดลองจากวงจรจริ งที่สร้างขึ้นได้
6. ปฏิบตั ิงานตามใบงานเสร็ จทันเวลาที่กาหนด
3. เครื่ องมือและอุปกรณ์
1. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.2 (วงจรไมโครคอนโทรลเลอร์ )
2. วงจรโปรแกรมตัวเองใบงานที่ 7.3
3. แผ่นวงจรพิมพ์เอนกประสงค์ใบงานที่ 7.20 (วงจรต่อพ่วง)
4. แหล่งจ่ายไฟกระแสตรงภายนอก
4. ลาดับขั้นการปฏิบัติงาน
1. ศึกษาจุดประสงค์ทวั่ ไปจุดประสงค์เชิงพฤติกรรมและทฤษฎีพ้นื ฐานที่เกี่ยวข้อง
2. ดาเนินการทดลอง
3. สรุ ปผลการปฏิบตั ิงาน
4. ดาเนินการในงานที่มอบหมาย
436 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
5. ทฤษฎีพืน้ ฐาน
จอแสดงผลผลึกเหลว (ต่อไปนี้ใช้คาว่า LCD แทนจอแสดงผลผลึกเหลว) ที่ใช้ในการทดลองเป็ น
แบบ Character LCD มีตวั ควบคุมเบอร์ HD4478 ซึ่งการแสดงผลหน้าจอทั้งตัวอักษรและสัญลักษณ์ใด ๆ
นั้นจะมีรูปแบบตัวอักษรและสัญลักษณ์ บรรจุไว้ภายในแล้ว เพียงแต่ผูใ้ ช้งานเขียนโปรแกรมดึ งขึ้นมา
แสดงผลที่หน้าจอตามตาแหน่งที่ตอ้ งการ ในการใช้งานสามารถต่อใช้งานได้ 2 แบบคือ 4 บิต (D7-D4)
และ 8 บิต (D7-D0) การต่อใช้งานแบบ 4 บิตข้อมูลที่ส่งให้ LCD ในครั้งแรกเป็ นข้อมูลใน 4 บิตบนและ
ข้อมูลที่ส่งครั้งถัดมาเป็ น 4 บิตล่าง โครงสร้างภายในของไอซี HD4478 เป็ นดังรู ปที่ 7.21-1
CL
Address Timing generation
7 CL
Register (IR)
counter(AC) circuit
Instruction
Instruction
decoder
M
7 7
8
4 8 8
DATA
DB0~DB3 7
8 8
Segment signal driver
40 bit latch circuit
จากรู ป 7.21-2 เป็ นแอดแดรสของตัวอัก ษรที่แสดงบนจอ LCD ซึ่ ง LCD ในแต่ ละขนาดจะมี
แอดเดรสของจานวนตัวอักษรต่อบรรทัดแตกต่างกันไป ซึ่ งในบางขนาดมีจานวนอักษรต่อบรรทัดน้อย
กว่าตาแหน่งที่มีอยูจ่ ริ ง ดังนั้นการแสดงผลจะแสดงให้มองเห็นไม่ครบในทุกแอดเดรส โดยแอดเดรสของ
DDRAM ของจอ LCD ในแต่ละขนาดเป็ นดังนี้
แอดเดรส DDRAM ของ LCD ขนาด 16 ตัวอักษร 1 แถว เมื่อเซตเป็ น 1 แถว (N=0) จะเป็ นดังรู ปที่ 7.21-3
0C
0D
0A
0B
0E
0F
00
01
02
03
04
05
06
07
08
09
รู ปที่ 7.21-3 แอดเดรส DDRAM ของ LCD ขนาด 16x1 เมื่อเซตให้แสดงแดงแบบ 1 แถว
แอดเดรส DDRAM ของ LCD ขนาด 16 ตัวอักษร 1 แถว เมื่อเซตเป็ น 2 แถว (N=1) จะได้เสมือน 8 ตัวอักษร
2 แถวที่วางเรี ยงกันดังรู ปที่ 7.21-4
00
01
02
03
04
05
06
07
40
41
42
43
44
45
46
47
รู ปที่ 7.21-4 แอดเดรส DDRAM ของ LCD ขนาด 16x1 เมื่อเซตให้แสดงแดงแบบ 2 แถว
แอดเดรส DDRAM ของ LCD ขนาด 16 ตัวอักษร 2 แถว จะเป็ นดังรู ปที่ 7.21-5
0C
0D
0A
0B
0E
0F
00
01
02
03
04
05
06
07
08
09
4C
4D
4A
4B
4E
4F
40
41
42
43
44
45
46
47
48
49
แอดเดรส DDRAM ของ LCD ขนาด 20 ตัวอักษร 2 แถว จะเป็ นดังรู ปที่ 7.21-6
0C
0D
0A
0B
0E
0F
00
01
02
03
04
05
06
07
08
09
10
11
12
13
4C
4D
4A
4B
4E
4F
40
41
42
43
44
45
46
47
48
49
50
51
52
53
รู ปที่ 7.21-6 แอดเดรส DDRAM ของ LCD ขนาด 20x2
แอดเดรส DDRAM ของ LCD ขนาด 16 ตัวอักษร 4 แถว แอดเดรสของแถวที่ 3 จะเป็ นการนาแอดเดรส
ในตาแหน่งที่ 17 ของแถวที่ 1 มาเป็ นแอดเดรสแรกของแถวที่ 3 และแอดเดรสของแถวที่ 4 จะเป็ นการนา
แอดเดรสในตาแหน่งที่ 17 ของแถวที่ 2 มาเป็ นแอดเดรสแรกของแถวที่ 4 จะเป็ นดังรู ปที่ 7.21-7
0C
0D
0A
0B
0E
0F
00
01
02
03
04
05
06
07
08
09
4C
4D
4A
4B
4E
4F
40
41
42
43
44
45
46
47
48
49
1C
1D
1A
1B
1E
1F
10
11
12
13
14
15
16
17
18
19
5C
5D
5A
5B
5E
5F
50
51
52
53
54
55
56
57
58
59
0C
0D
0A
0B
0E
0F
00
01
02
03
04
05
06
07
08
09
10
11
12
13
4C
4D
4A
4B
4E
4F
40
41
42
43
44
45
46
47
48
49
50
51
52
53
1C
1D
1A
1B
1E
1F
14
15
16
17
18
19
20
21
22
23
24
25
26
27
5C
5D
5A
5B
5E
5F
54
55
56
57
58
59
60
61
62
63
64
65
66
67
รู ปที่ 7.21-9 แอดเดรส DDRAM ของ LCD ขนาด 20x4
ซึ่ งแอดเดรสแรกของแถวที่ 3 และแถวที่ 4 เป็ นเช่ นเดียวกับ LCD 16x4 คือเป็ นแอดเดรสต่อจาก
2 แถวแรก ดังนั้นในการใช้งาน ถ้าให้แสดงข้อความเกิ น 20 ตัวอักษรในแถวแรก ตัวอักษรที่เกิ นมาจะ
ปรากฏในบรรทัดที่ 3 ซึ่ งถ้าให้แสดงข้อความเช่นเดียวกับ LCD 16x4 คือข้อความ “Hello Microcontroller
MCS-51” ผลที่ได้จะเป็ นดังรู ปที่ 7.21-10
10. คาสั่ งเขียนข้ อมูลลง CGRAM หรื อ DDRAM (Write Data to CGRAM or DDRAM)
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
1 0 Write data
11. คาสั่ งอ่ านข้ อมูลจาก CGRAM หรื อ DDRAM (Read Data from CGRAM or DDRAM)
RS R/W DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0
1 1 data
6. การดาเนินการทดลอง
ใบงานนี้ เ ป็ นการทดลองการเขี ย นโปรแกรมแสดงผลที่ จอ LCD ประเภทตัว อัก ษร โดยการ
ทดลองจะทดลองทั้งการเชื่ อมต่อแบบ 8 บิตและ 4 บิต ในช่ วงแรกจะเป็ นการทดลองโดยการเชื่ อมต่อ
แบบ 8 บิต ซึ่งวงจรสมบูรณ์ที่ใช้ทดลองเป็ นดังรู ปที่ 7.21-13
448 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
7805
103
16
16
AT89S52
การดาเนินการทดลองมีข้ นั ตอนดังนี้
1. เขียนลาดับงาน
2. แปลงลาดับงานเป็ นผังงาน
3. แปลงผังงานเป็ นโปรแกรม
4. แปลงโปรแกรมภาษาซีเป็ นภาษาเครื่ องด้วย Keil uVision
5. จาลองการทางานด้วยโปรแกรม Proteus
6. ทดลองด้วยวงจรจริ ง
ส่ งข้อความออกจอ LCD
จบ
2. เขียนโปรแกรมหลัก ดังนี้
#include<reg52.h>
#include<lcd8.h>
void main(void)
{
LCD_init();
LCD_row1();
LCD_puts("Hello MCS-51");
LCD_row2();
LCD_puts("Microcontroller");
while(1)
{}
}
ทดลองการทางาน
1. จาลองการทางานด้วยโปรแกรม Proteus
2. ทดลองด้วยวงจรจริ ง
3. ทดลองแก้ไขค่า Address DDRAM ในฟังก์ชนั่ LCD_row1(); และ LCD_row2(); โดยดูจาก
ค่าแอดเดรสของ LCD ดังที่ได้กล่าวมาแล้วข้างต้น แล้วสังเกตผล
ส่ งข้อความออกจอ LCD
ส่ งตัวเลขออกจอ LCD
จบ
while(1)
{}
}
void LCD_putv(unsigned long v)
{
char buf[10],*n;
n=&buf;
sprintf (buf,"%lu",v);
LCD_puts(n);
}
ทดลองการทางาน
1. จาลองการทางานด้วยโปรแกรม Proteus
2. ทดลองด้วยวงจรจริ ง
3. ทดลองแก้ไขโปรแกรมให้สามารถใส่ ค่าตัวเลขที่มีจุดทศนิ ยมได้ดว้ ย แล้วสังเกตผล
ส่ งข้อความออกจอ LCD
จบ
2. เขียนโปรแกรมหลัก ดังนี้
#include<reg52.h>
#include<lcd4.h>
void main(void)
{
LCD_init();
LCD_row1();
LCD_puts("Hello MCS-51");
LCD_row2();
LCD_puts("Microcontroller");
while(1)
{}
}
ทดลองการทางาน
1. จาลองการทางานด้วยโปรแกรม Proteus
2. ทดลองด้วยวงจรจริ ง
3. ทดลองแก้ไขข้อความในการแสดงผล แล้วสังเกตผล
456 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
7. สรุปผลการปฏิบัติงาน
8. งานทีม่ อบหมาย
จงเขียนโปรแกรมแสดงผลจอ LCD โดยใช้วงจรที่มีการเชื่ อมต่อแบบ 4 บิต ให้แสดงผลสถานะ
ของสวิตช์จานวน 2 ตัว (การทดลองจริ งใช้สายจั้มลงกราวด์แทนการกดสวิตช์) วงจรที่ใช้ดงั รู ปที่ 7.17-17
เฉลยแบบทดสอบก่อนเรี ยน
1. ข 2. จ 3. ข 4. ง 5. ข 6. ค 7. จ 8. ก 9. ก 10. จ
เฉลยแบบทดสอบหลังเรี ยน
1. ก 2. ข 3. จ 4. ข 5. ง 6. ค 7. ก 8. จ 9. ข 10. ง
โครงงาน งานวิจัย
1. จุดประสงค์ ทวั่ ไป
1. ส่ งเสริ มให้นกั ศึกษานาความรู ้ ทักษะไปบูรณาการสร้างงานและปฏิบตั ิได้จริ ง
2. ให้นกั ศึกษาฝึ กกระบวนการทางานอย่างเป็ นระบบ เป็ นผูร้ ู ้จกั คิดอย่างมีเหตุผล
3. ส่ งเสริ มให้นกั ศึกษามีความคิดริ เริ่ มสร้างสรรค์
4. ให้นกั ศึกษาได้เรี ยนรู ้การทางานเป็ นกลุ่ม
5. ส่ งเสริ มให้นกั ศึกษามีเจตคติที่ดีต่อวิชาไมโครคอนโทรลเลอร์
2. จุดประสงค์ เชิงพฤติกรรม
1. เพื่อให้เข้าใจโครงสร้ างและหลักการทางานของไมโครคอนโทรลเลอร์ การใช้ชุ ดค าสั่ ง
การประยุกต์ใช้งานไมโครคอนโทรลเลอร์ กบั งานอื่น ๆ
2. เพื่อให้สามารถเขียนโปรแกรมควบคุ ม วิเคราะห์และทดสอบระบบการทางาน ประยุกต์
ไมโครคอนโทรลเลอร์ กบั งานอื่น ๆ
3. เพื่อให้มีกิจนิ สัยในการทางานด้วยความประณี ตรอบคอบและปลอดภัย ตระหนักถึงคุณภาพ
ของงาน และมีจริ ยธรรมในงานอาชีพ
3. กิจกรรม
1. นักศึกษาแบ่งกลุ่ม ๆ ละ 2 คน โดยแบ่งกลุ่มแบบคละความสามารถ
2. แต่ละกลุ่มช่วยกันระดมความคิดเห็นนาความรู ้ที่ได้จากการศึกษาวิชาไมโครคอนโทรลเลอร์
มาประยุกต์เป็ นโครงงาน
3. นักศึกษาส่ งโครงร่ างโครงงานตามกาหนดเวลา
4. นักศึกษาดาเนินงานตามกาหนดเวลาในแผนการปฏิบตั ิงาน
5. ครู ติดตามให้คาปรึ กษาแนะนา ประเมินผลโครงงาน
6. นักศึกษาส่ งโครงงาน
460 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
4. การจัดทาโครงงาน
การท าโครงงานเป็ นกิ จ กรรมส่ งเสริ มให้ นั ก ศึ ก ษาได้ น าความรู ้ ที่ ไ ด้ ศึ ก ษาในรายวิ ช า
ไมโครคอนโทรลเลอร์ ไปประยุกต์ใช้งานจริ ง ทาให้มีประสบการณ์ตรงในการคิด วิเคราะห์และศึกษา
ค้นคว้าค้นหาวิธีการแก้ปัญหาด้วยการลงมือทาด้วยตนเอง ฝึ กให้เรี ยนรู ้การทางานอย่างเป็ นระบบ รู ้จกั
คิดอย่างมีเหตุผล เกิดความคิดสร้างสรรค์ และเป็ นการส่ งเสริ มให้มีเจตคติต่อวิชาไมโครคอนโทรลเลอร์
สอดคล้องกับพระราชบัญญัติการศึกษาแห่งชาติ พ.ศ. ๒๕๔๒ ดังนี้
มาตรา ๒๒ การจัดการศึกษาต้องยึดหลักว่าผูเ้ รี ยนทุกคนมีความสามารถ เรี ยนรู ้และพัฒนาตนเอง
ได้ และถื อว่าผูเ้ รี ยนมีความสาคัญที่สุด กระบวนการจัดการศึกษาต้องส่ งเสริ มให้ผูเ้ รี ยนสามารถพัฒนา
ตามธรรมชาติและเต็มตามศักยภาพ
มาตรา ๒๔ การจัดกระบวนการเรี ย นรู ้ ให้สถานศึ กษาและหน่ วยงาน ที่ เกี่ ยวข้องดาเนิ นการ
ดังต่อไปนี้
(๑) จัด เนื้ อ หาสาระและกิ จ กรรมให้ ส อดคล้อ งกับ ความสนใจและความถนัด ของผู ้เ รี ย น
โดยคานึงถึงความแตกต่างระหว่างบุคคล
(๒) ฝึ กทักษะ กระบวนการคิด การจัดการ การเผชิญสถานการณ์ และการประยุกต์ความรู ้มาใช้
เพื่อป้ องกันและแก้ไขปั ญหา
(๓) จัดกิจกรรมให้ผูเ้ รี ยนได้เรี ยนรู ้จากประสบการณ์จริ ง ฝึ กการปฏิบตั ิให้ทาได้ คิดเป็ น ทาเป็ น
รักการอ่านและเกิดการใฝ่ รู ้อย่างต่อเนื่อง
ขั้นตอนการทาโครงงาน
ขั้นตอนที่ 1 การคิดเลือกหัวเรื่ องและการศึกษาเอกสารที่เกี่ยวข้อง
ขั้นตอนที่ 2 การเขียนเค้าโครงของโครงงาน ซึ่งมีหวั ข้อดังนี้
หัวข้อรายการ รายละเอียดที่ตอ้ งระบุ
1.ชื่อโครงงาน 1. ทาอะไร
2.ชื่อผูท้ าโครงงาน 2. ผูร้ ับผิดชอบโครงงานนี้
3.ชื่อที่ปรึ กษาโครงงาน 3. ผูท้ รงคุณวุฒิต่าง ๆ
4. หลักการและเหตุผล 4. เหตุผลและความคาดหวัง
5.จุดหมาย / วัตถุประสงค์ 5. สิ่ งที่ตอ้ งการให้เกิดเมื่อสิ้ นสุ ดการทาโครงงาน
6.สมมุติฐานของการศึกษาโครงงาน 6. สิ่ งที่คาดว่าจะเกิดเมื่อสิ้ นสุ ดการทาโครงงาน
7.ขั้นตอนการดาเนิ นงาน 7. ขั้นตอนการทางาน เครื่ องมือ วัสดุอุปกรณ์ สถานที่
8. ปฏิบตั ิโครงงาน 8. วัน เวลา และกิจกรรมดาเนินงานต่าง ๆ ตั้งแต่ตน้ จนเสร็ จ
โครงงาน งานวิจยั 461
หัวข้อรายการ รายละเอียดที่ตอ้ งระบุ
9.ผลที่คาดว่าจะได้รับ 9. สภาพของผลที่ตอ้ งการให้เกิดทั้งที่เป็ นผลผลิต
กระบวนการ และผลกระทบ
10. บรรณานุกรม 10. ชื่อเอกสารข้อมูล ที่ได้จากแหล่งต่าง ๆ
5. การเขียนรายงานการวิจัย
การเขียนรายงานเป็ นวิธีการสื่ อความหมายเพื่อให้ผอู ้ ื่นเข้าใจแนวคิด วิธีดาเนินการศึกษาค้นคว้า
หาข้อมูลที่ได้ ตลอดจนข้อสรุ ปและข้อเสนอแนะต่าง ๆ เกี่ ยวกับโครงงาน ในการเขียนรายงานนักศึกษา
ควรใช้ภาษาที่อ่านง่าย ชัดเจน กระชับ และตรงไปตรงมา
องค์ ประกอบของรายงานวิจัย
1. ภาคความนา จะกล่ า วถึ ง ความส าคัญ ของเรื่ อ งที่ ศึ ก ษา จุ ด ประสงค์ ปั ญหา หรื อ สมมุ ติฐ าน
ขอบเขตของการศึ กษา นิ ยามศัพท์ที่ใช้เฉพาะ และอธิ บายถึ งวิธีการที่ใช้ในการศึกษาวิจยั อย่างละเอียด
และรวมทั้งการศึกษาค้นคว้าของผูอ้ ื่นที่เกี่ยวข้องโดยละเอียด
2. ภาคเนื้อเรื่ อง เป็ นส่ วนที่กล่าวถึงข้อเท็จจริ งต่าง ๆ ที่เกี่ยวข้องกับเนื้อเรื่ องโดยตรง เป็ นการเสนอ
ผลการศึ ก ษาค้นคว้า ทั้ง หมด เพื่ อพิ สู จน์ใ นภาคนี้ อาจจะแบ่ งออกเป็ นตอน หรื อบทเพื่ อให้ผูอ้ ่ านเห็ น
จุดสาคัญของเนื้ อความตามลาดับ และต่อเนื่ อง มี การแบ่งออกเป็ นหัวข้อใหญ่ และข้อย่อย และข้อคิ ด
สนับสนุน
3. ภาคสรุ ป เป็ นการสรุ ปที่นกั วิจยั ได้วิเคราะห์ ข้อคิดเห็นที่ได้จากการวิจยั ผูว้ จิ ยั จะต้องเน้นให้เห็น
ถึงผลที่ได้จากการวิจยั ทั้งหมด แต่ตอ้ งทาให้รัดกุม เพื่อเป็ นการทบทวนความจาของผูอ้ ่าน ในการสรุ ปนั้น
ควรจะประกอบไปด้วย
3.1 บทสรุ ปที่เป็ นการย่อเนื้อความ
3.2 บทสรุ ปที่เป็ นการวิเคราะห์ในลักษณะรวบยอด หรื อเป็ นประเด็นสาคัญ
3.3 อภิปรายความเห็นของผูว้ จิ ยั
462 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
3.4 ข้ อ เสนอแนะ ซึ่ งแบ่ ง ออกเป็ นข้ อ เสนอแนะในการแก้ ไ ขปั ญ หาในเรื่ องของวิ จ ั ย
และข้อเสนอแนะของผูท้ ี่สนใจในการดาเนินการคนต่อไป
4. บรรณานุกรม คือ รายชื่อหนังสื อที่ใช้ในการอ้างอิงในงานวิจยั ทั้งหมด
5. ภาคผนวก เป็ นส่ วนที่รวมลักษณะของกลุ่มตัวอย่าง แบบสอบถาม วิธีการสัมภาษณ์ เป็ นต้น
ส่ วนเนื้ อความในส่ วนเนื้ อความนี้ เป็ นส่ วนสาคัญของการวิจยั เนื่ องจากเนื้ อความใหญ่ ๆ ของงานวิจยั จะ
อยูใ่ นส่ วนนี้ซ่ ึ งประกอบไปด้วย
1. บทนา ซึ่งประกอบไปด้วย
1.1 ความเป็ นมาของปัญหา หรื อประเด็นปั ญหา ได้แก่ปัญหาที่ผวู ้ จิ ยั จะต้องตอบ หรื อ
สมมุติฐานที่จะต้องทดสอบ
1.2 ความสาคัญของปั ญหา
1.3 วัตถุประสงค์ของการวิจยั
1.4 วิธีการการดาเนินงานวิจยั
1.5 ข้อตกลงเบื้องต้น และข้อจากัด
1.6 คาจากัดความ หรื อนิยามศัพท์
2. หลักการและทฤษฎี เป็ นส่ วนสรุ ปข้อมูลที่ได้จากการศึกษาหาข้อมูล หลักการ ทฤษฎี หรื อวิธีการ
ที่ จ ะน ามาใช้ใ นการพัฒ นาโครงงาน ซึ่ งรวมถึ ง การระบุ ผ ลงานของผู ้ อื่ น ที่ ผูจ้ ัด ท าโครงงานน ามา
เปรี ยบเทียบหรื อพัฒนาเพิ่มเติมด้วย
โครงงาน งานวิจยั 463
3. วิธีดาเนินการ อธิ บายขั้นตอนการดาเนิ นงานโดยละเอียด ระบุปัญหาหรื ออุปสรรคที่พบ วิธีการที่
ใช้แก้ไข พร้อมทั้งวัสดุอุปกรณ์ที่ตอ้ งใช้ในการทาโครงงาน
4. ผลการศึ ก ษา นาเสนอข้อมู ล หรื อระบบที่ พ ฒ ั นาได้ โดยอาจแสดงเป็ นรู ปภาพ ตาราง กราฟ
ข้อความ ทั้งนี้ตอ้ งการสื่ อความหมายให้ผอู ้ ื่นเข้าใจได้ง่าย
5. สรุ ปผลและข้อเสนอแนะ การสรุ ปผลการดาเนิ นงาน เป็ นการอธิ บายผลสรุ ปที่ได้จากการทา
โครงงาน ถ้ามีการตั้งสมมุติฐานควรระบุถึงข้อมูลที่ได้สนับสนุ นหรื อคัดค้านสมมุตติฐานที่ต้ งั ไว้หรื อยัง
สรุ ปไม่ได้ การนาผลการทดลองหรื อพัฒนาไปใช้ประโยชน์ อุปสรรคของการทาโครงงานหรื อข้อสังเกต
ที่ ส าคัญหรื อข้อผิดพลาดบางประการที่ เกิ ดขึ้ นจากการท าโครงงานนี้ และควรมี ข ้อเสนอแนะในการ
ปรั บ ปรุ ง โครงงานเพื่ อ เป็ นแนวทางให้ ผู อ้ ื่ น ศึ ก ษาค้น คว้า ต่ อ ไปในอนาคต นอกจากนี้ ควรกล่ า วถึ ง
ประโยชน์ที่ผจู ้ ดั ทาและผูใ้ ช้จะได้ประโยชน์จากการทาโครงงานด้วย
แบบขออนุมัติโครงงาน
ชื่อโครงงาน.................................................................................................................................................
ระยะเวลาดาเนินการ....................................................................................................................................
สถานที่ดาเนินการ........................................................................................................................................
งบประมาณค่าใช้จ่าย....................................................................................................................................
ผูจ้ ดั ทาโครงงาน
1. ......................................................................................
2. ......................................................................................
ลงชื่อ.........................................................หัวหน้าโครงงาน
(...............................................................)
…........./................./.................
ความเห็นของอาจารย์ประจาวิชา
.....................................................................................................................................................................
.....................................................................................................................................................................
ลงชื่อ...........................................ครู ประจาวิชา
(...................................................)
............/................./................
ความเห็นของหัวหน้าแผนกวิชา
.....................................................................................................................................................................
.....................................................................................................................................................................
ลงชื่อ.......................................................หัวหน้าแผนกวิชา
(...................................................)
............/................./................
โครงงาน งานวิจยั 465
แบบเสนอโครงงาน
ชื่อโครงงาน.................................................................................................................................................
ระยะเวลาดาเนินการ....................................................................................................................................
สถานที่ดาเนินการ........................................................................................................................................
ผูจ้ ดั ทาโครงงาน
1. ......................................................................................
2. ......................................................................................
ชื่อที่ปรึ กษาโครงงาน ..................................................................................................................................
ชื่อที่ปรึ กษาโครงงานร่ วม............................................................................................................................
ระยะเวลาดาเนินงาน ...................................................................................................................................
รายละเอียดเกี่ยวกับโครงงาน
1. ที่มา และความสาคัญของโครงงาน (อธิบายถึงแนวคิดและเหตุผลของการทาโครงงาน)
.....................................................................................................................................................................
.........................................................................................................................................................
2. วัตถุประสงค์ (สิ่ งที่ตอ้ งการในการทาโครงงาน ระบุเป็ นข้อ ๆ )
.....................................................................................................................................................................
.........................................................................................................................................................
3. ขอบเขตโครงงาน (คุณลักษณะ ขอบเขต เงื่อนไขและข้อจากัดของโครงงาน)
.....................................................................................................................................................................
.........................................................................................................................................................
4. หลักการและทฤษฎีที่เกี่ยวข้อง (ความรู ้ หลักการ หรื อทฤษฎีที่สนับสนุนการทาโครงงาน)
.....................................................................................................................................................................
.........................................................................................................................................................
5. วิธีการดาเนินงาน (กาหนดแนวทางการดาเนินงาน เครื่ องมือและอุปกรณ์ งบประมาณ และขั้นตอน
การปฏิบตั ิงาน)
แนวทางการดาเนินงาน .........................................................................................................................
เครื่ องมือและอุปกรณ์.............................................................................................................................
งบประมาณ.............................................................................................................................................
466 เอกสารประกอบการสอนวิชาไมโครคอนโทรลเลอร์
ขั้นตอนการปฏิบตั ิงาน
ภาคเรี ยนที่ ................ปี การศึกษา ..................
ที่ กิจกรรม / รายการที่ปฏิบตั ิ ระยะเวลาดาเนินการ (เดือน) หมายเหตุ
บรรณานุกรม