ข่าว
ข่าว
บทสรุปวิทยาศาสตร์ยอดนิยมที่ทรงพลังที่สุดของ MCU
2022-03-16 529

MCU ย่อมาจาก Microcontroller Unit (หน่วยควบคุมไมโครคอนโทรลเลอร์) ในภาษาจีน ซึ่งโดยทั่วไปรู้จักกันในชื่อไมโครคอมพิวเตอร์แบบชิปเดี่ยว คือการลดความถี่และคุณสมบัติของ CPU อย่างเหมาะสม และรวมอินเทอร์เฟซอุปกรณ์ต่อพ่วงต่างๆ เช่น หน่วยความจำ ตัวนับ USB การแปลง A/D UART PLC DMA และแม้กระทั่งวงจรขับ LCD ไว้บนชิปเดียวเพื่อสร้างคอมพิวเตอร์ระดับชิป สามารถควบคุมการทำงานในรูปแบบต่างๆ สำหรับการใช้งานที่หลากหลาย เช่น โทรศัพท์มือถือ อุปกรณ์ต่อพ่วงพีซี รีโมทคอนโทรล อุปกรณ์อิเล็กทรอนิกส์ยานยนต์ มอเตอร์สเต็ปเปอร์อุตสาหกรรม และการควบคุมแขนหุ่นยนต์ สามารถดู MCU ได้ในรูปภาพ



หนึ่ง
ประวัติโดยย่อของการพัฒนาไมโครคอนโทรลเลอร์



ประวัติของไมโครคอนโทรลเลอร์นั้นไม่ยาวนานนัก แต่มีการพัฒนาอย่างรวดเร็วมาก การผลิตและการพัฒนาโดยทั่วไปจะสอดคล้องกับการผลิตและการพัฒนาไมโครโปรเซสเซอร์ (CPU) นับตั้งแต่บริษัท Intel Corporation ของสหรัฐอเมริกาเปิดตัวไมโครโปรเซสเซอร์ 4 บิตเป็นครั้งแรกในปี 1971 การพัฒนาของไมโครคอนโทรลเลอร์จนถึงปัจจุบันสามารถแบ่งออกได้เป็น 5 ขั้นตอนคร่าวๆ ต่อไปนี้เป็นการแนะนำเกี่ยวกับการพัฒนาของไมโครคอนโทรลเลอร์จากบริษัท Intel Corporation


1971 ~ 1976


ขั้นตอนแรกของการพัฒนาไมโครคอนโทรลเลอร์ ในเดือนพฤศจิกายนปี 1971 อินเทลได้ออกแบบ Intel 4004 เป็นครั้งแรก ซึ่งเป็นไมโครโปรเซสเซอร์ 4 บิตที่มีการรวมทรานซิสเตอร์ 2,000 ตัวต่อชิป พร้อมด้วย RAM, ROM และรีจิสเตอร์เลื่อน ทำให้เกิดไมโครโปรเซสเซอร์ MCS-4 ตัวแรก จากนั้นจึงเปิดตัวไมโครโปรเซสเซอร์ 8 บิต Intel 8008 และไมโครโปรเซสเซอร์ 8 บิตอื่นๆ ที่บริษัทอื่นๆ เปิดตัวตามมา


1976 ~ 1980


ไมโครคอนโทรลเลอร์ระดับประสิทธิภาพต่ำ ตัวอย่างเช่น ซีรี่ส์ MCS-48 ที่ Intel เปิดตัวในปี 1976 ใช้โครงสร้างแบบโมโนลิธิกที่รวมซีพียู 8 บิต อินเทอร์เฟซ I/O แบบขนาน 8 บิต ตัวจับเวลา/ตัวนับ 8 บิต RAM และ ROM ไว้ในชิปเซมิคอนดักเตอร์เดียวกัน ถึงแม้ว่าช่วงการกำหนดแอดเดรสจะจำกัด (ไม่เกิน 4 KB) ไม่มี I/O แบบอนุกรม ความจุของ RAM และ ROM น้อย และระบบขัดจังหวะค่อนข้างเรียบง่าย แต่ฟังก์ชันการทำงานของมันก็สามารถตอบสนองความต้องการของการควบคุมอุตสาหกรรมทั่วไปและเครื่องมือวัดอัจฉริยะได้


1980 ~ 1983


ไมโครคอนโทรลเลอร์ประสิทธิภาพสูง ไมโครคอนโทรลเลอร์ 8 บิตประสิทธิภาพสูงที่เปิดตัวในขั้นตอนนี้โดยทั่วไปจะมีพอร์ตอนุกรม ระบบประมวลผลการขัดจังหวะหลายระดับ และตัวจับเวลา/ตัวนับ 16 บิตหลายตัว ความจุของ RAM และ ROM บนชิปเพิ่มขึ้น และช่วงการกำหนดแอดเดรสสามารถเข้าถึง 64 KB ชิปบางตัวยังมีอินเทอร์เฟซการแปลง A/D อีกด้วย


ปี 1983 ถึงปลายทศวรรษ 1980


ขั้นตอนไมโครคอนโทรลเลอร์ 16 บิต ในปี 1983 อินเทลได้เปิดตัวไมโครคอนโทรลเลอร์ 16 บิตประสิทธิภาพสูงซีรีส์ MCS-96 ด้วยการนำเทคโนโลยีการผลิตล่าสุดมาใช้ ทำให้ระดับการรวมชิปสูงถึง 120,000 ทรานซิสเตอร์ต่อชิป


1990s


ไมโครคอนโทรลเลอร์กำลังพัฒนาไปสู่ระดับที่สูงขึ้นในทุกด้าน ไม่ว่าจะเป็นการบูรณาการ ฟังก์ชันการทำงาน ความเร็ว ความน่าเชื่อถือ และสาขาการใช้งาน



สอง
การจำแนกประเภทและการประยุกต์ใช้ไมโครคอมพิวเตอร์แบบชิปเดี่ยว



ไมโครคอนโทรลเลอร์ (MCU) สามารถแบ่งออกเป็นสองประเภทตามชนิดของหน่วยความจำ ได้แก่ ประเภทที่ไม่มี ROM ในตัว และประเภทที่มี ROM ในตัว สำหรับชิปที่ไม่มี ROM ในตัว จะต้องเชื่อมต่อ EPROM ภายนอกก่อนจึงจะสามารถใช้งานได้ (โดยทั่วไปคือ 8031) ส่วนชิปที่มี ROM ในตัวนั้น แบ่งออกเป็นประเภท EPROM ในตัว (ชิปทั่วไปคือ 87C51), ประเภท MASK mask ROM ในตัว (ชิปทั่วไปคือ 8051), ประเภท Flash ในตัว (ชิปทั่วไปคือ 89C51) และประเภทอื่นๆ


ตามวัตถุประสงค์ สามารถแบ่งออกเป็นประเภทใช้งานทั่วไปและประเภทใช้งานเฉพาะทาง และตามความกว้างของบัสข้อมูลและความยาวของไบต์ข้อมูลที่สามารถประมวลผลได้ในครั้งเดียว สามารถแบ่งออกเป็น MCU 8 บิต 16 บิต และ 32 บิต


ปัจจุบัน ตลาดการใช้งานไมโครคอนโทรลเลอร์ (MCU) ในประเทศที่กว้างขวางที่สุดคือในด้านเครื่องใช้ไฟฟ้าสำหรับผู้บริโภค รองลงมาคือด้านอุตสาหกรรม และด้านอิเล็กทรอนิกส์ยานยนต์ เครื่องใช้ไฟฟ้าสำหรับผู้บริโภค ได้แก่ เครื่องใช้ในครัวเรือน โทรทัศน์ เครื่องเล่นเกม ระบบเสียงและวิดีโอ เป็นต้น ด้านอุตสาหกรรม ได้แก่ บ้านอัจฉริยะ ระบบอัตโนมัติ การใช้งานทางการแพทย์ และการผลิตและการจำหน่ายพลังงานรูปแบบใหม่ ด้านยานยนต์ ได้แก่ ระบบส่งกำลังและระบบควบคุมความปลอดภัยของยานยนต์



สาม
หน้าที่พื้นฐานของไมโครคอนโทรลเลอร์



สำหรับไมโครคอนโทรลเลอร์ส่วนใหญ่ ฟังก์ชันต่อไปนี้เป็นฟังก์ชันพื้นฐานและพบได้บ่อยที่สุด สำหรับไมโครคอนโทรลเลอร์แต่ละรุ่น วิธีการอธิบายอาจแตกต่างกันไป แต่โดยพื้นฐานแล้วจะเหมือนกัน:


1. ตัวจับเวลา (Timer): แม้ว่าจะมีตัวจับเวลาหลายประเภท แต่สามารถสรุปได้เป็นสองประเภทหลัก: ประเภทแรกคือตัวจับเวลาที่มีช่วงเวลาคงที่ กล่าวคือ เวลาจับเวลาถูกตั้งค่าโดยระบบและไม่สามารถควบคุมได้โดยโปรแกรมของผู้ใช้ ระบบจะให้ช่วงเวลาคงที่หลายช่วงแก่โปรแกรมของผู้ใช้ให้เลือก เช่น 32Hz, 16Hz, 8Hz เป็นต้น ตัวจับเวลาประเภทนี้พบได้บ่อยในไมโครคอนโทรลเลอร์ 4 บิต ดังนั้นจึงสามารถใช้เพื่อกำหนดฟังก์ชันนาฬิกา การกำหนดเวลา และฟังก์ชันอื่นๆ ที่เกี่ยวข้องได้


ตัวจับเวลาอีกประเภทหนึ่งคือ ตัวจับเวลาแบบตั้งโปรแกรมได้ (Programmable Timer) ดังชื่อที่บ่งบอก ตัวจับเวลาประเภทนี้สามารถควบคุมเวลาได้ด้วยโปรแกรมของผู้ใช้ วิธีการควบคุมได้แก่ การเลือกแหล่งสัญญาณนาฬิกา การเลือกช่วงความถี่ (Prescale) และการตั้งค่าตัวเลขที่ตั้งไว้ล่วงหน้า ไมโครคอนโทรลเลอร์บางตัวมีฟังก์ชันทั้งสามนี้พร้อมกัน ในขณะที่บางตัวอาจมีเพียงหนึ่งหรือสองฟังก์ชันเท่านั้น การใช้งานตัวจับเวลาประเภทนี้มีความยืดหยุ่นสูง และการใช้งานจริงก็เปลี่ยนแปลงอยู่เสมอ หนึ่งในแอปพลิเคชันที่พบบ่อยที่สุดคือการใช้เพื่อสร้างเอาต์พุต PWM


เนื่องจากสามารถเลือกแหล่งสัญญาณนาฬิกาได้อย่างอิสระ ตัวจับเวลาประเภทนี้จึงมักใช้ร่วมกับตัวนับเหตุการณ์


2. พอร์ต IO: ไมโครคอนโทรลเลอร์ (MCU) ทุกตัวจะมีพอร์ต IO จำนวนหนึ่ง หากไม่มีพอร์ต IO ไมโครคอนโทรลเลอร์จะสูญเสียช่องทางในการสื่อสารกับโลกภายนอก โดยสามารถแบ่งพอร์ต IO ตามการกำหนดค่าได้เป็นประเภทต่างๆ ดังนี้:


พอร์ตอินพุตหรือเอาต์พุตอย่างเดียว: พอร์ต IO ประเภทนี้ถูกกำหนดโดยการออกแบบฮาร์ดแวร์ของ MCU โดยสามารถเป็นได้เพียงอินพุตหรือเอาต์พุตเท่านั้น และไม่สามารถใช้ซอฟต์แวร์ในการตั้งค่าแบบเรียลไทม์ได้


พอร์ต IO ที่อ่านและเขียนโดยตรง: ตัวอย่างเช่น พอร์ต IO ของ MCS-51 จัดเป็นพอร์ต IO ประเภทนี้ เมื่อมีการเรียกใช้คำสั่งอ่านพอร์ต IO พอร์ตนั้นจะทำหน้าที่เป็นพอร์ตอินพุต และเมื่อมีการเรียกใช้คำสั่งเขียนพอร์ต IO พอร์ตนั้นจะทำหน้าที่เป็นพอร์ตเอาต์พุตโดยอัตโนมัติ


การเขียนโปรแกรมเพื่อกำหนดทิศทางการรับและส่งข้อมูล: การรับหรือส่งข้อมูลของพอร์ต IO ประเภทนี้ถูกกำหนดโดยโปรแกรมตามความต้องการใช้งานจริง การใช้งานค่อนข้างยืดหยุ่นและสามารถนำไปใช้กับงานระดับบัสได้หลายอย่าง เช่น บัส I2C, จอ LCD ต่างๆ, บัสควบคุมไดร์เวอร์ LED เป็นต้น


สำหรับการใช้งานพอร์ต IO นั้น สิ่งสำคัญที่ต้องคำนึงถึงคือ: สำหรับพอร์ตอินพุต ต้องมีสัญญาณระดับที่ชัดเจนเพื่อให้แน่ใจว่าจะไม่เกิดการลอยตัว (สามารถทำได้โดยการเพิ่มตัวต้านทานแบบดึงขึ้นหรือดึงลง); สำหรับพอร์ตเอาต์พุต ระดับสถานะเอาต์พุตต้องพิจารณาสภาพการเชื่อมต่อภายนอก และต้องมั่นใจว่าไม่มีการดึงหรือดูดกระแสในสถานะสแตนด์บายหรือสถานะคงที่


3. อินเตอร์รัปต์ภายนอก: อินเตอร์รัปต์ภายนอกเป็นฟังก์ชันพื้นฐานของไมโครคอนโทรลเลอร์ส่วนใหญ่ โดยทั่วไปใช้สำหรับการเรียกใช้สัญญาณแบบเรียลไทม์ การสุ่มตัวอย่างข้อมูล และการตรวจจับสถานะ วิธีการอินเตอร์รัปต์ประกอบด้วย การเรียกใช้เมื่อขอบขาขึ้น การเรียกใช้เมื่อขอบขาลง และการเรียกใช้เมื่อระดับสัญญาณคงที่ โดยทั่วไปอินเตอร์รัปต์ภายนอกจะถูกใช้งานผ่านพอร์ตอินพุต หากเป็นพอร์ต IO ฟังก์ชันอินเตอร์รัปต์จะเปิดใช้งานก็ต่อเมื่อตั้งค่าเป็นอินพุตเท่านั้น หากเป็นพอร์ตเอาต์พุต ฟังก์ชันอินเตอร์รัปต์ภายนอกจะปิดโดยอัตโนมัติ (มีข้อยกเว้นบางประการในซีรี่ส์ ATiny ของ ATMEL ซึ่งสามารถเรียกใช้ฟังก์ชันอินเตอร์รัปต์ได้แม้ว่าจะเป็นพอร์ตเอาต์พุตก็ตาม) การใช้งานของอินเตอร์รัปต์ภายนอกมีดังต่อไปนี้:


การตรวจจับสัญญาณทริกเกอร์ภายนอก: อย่างหนึ่งขึ้นอยู่กับความต้องการแบบเรียลไทม์ เช่น การควบคุมไทริสเตอร์ การตรวจจับสัญญาณฉับพลัน เป็นต้น ในขณะที่อีกอย่างหนึ่งคือความจำเป็นในการประหยัดพลังงาน


การวัดความถี่สัญญาณ: เพื่อให้แน่ใจว่าสัญญาณจะไม่พลาด การใช้ตัวขัดจังหวะภายนอกจึงเป็นทางเลือกที่เหมาะสมที่สุด


การถอดรหัสข้อมูล: ในด้านการใช้งานรีโมทคอนโทรล เพื่อลดต้นทุนการออกแบบ มักจำเป็นต้องใช้ซอฟต์แวร์ในการถอดรหัสข้อมูลที่เข้ารหัสต่างๆ เช่น การถอดรหัสการเข้ารหัสแบบ Manchester และ PWM


การตรวจจับการกดปุ่มและการปลุกระบบ: สำหรับไมโครคอนโทรลเลอร์ (MCU) ที่เข้าสู่สถานะพักเครื่อง โดยทั่วไปแล้วจะต้องปลุกให้ตื่นผ่านการขัดจังหวะภายนอก รูปแบบพื้นฐานที่สุดคือการกดปุ่ม ซึ่งจะทำให้ระดับเปลี่ยนแปลงไปตามการกระทำของปุ่มนั้น


4. อินเทอร์เฟซการสื่อสาร: อินเทอร์เฟซการสื่อสารที่ MCU จัดให้โดยทั่วไป ได้แก่ อินเทอร์เฟซ SPI, UART, I2C เป็นต้น ซึ่งมีรายละเอียดดังต่อไปนี้:


อินเทอร์เฟซ SPI: อินเทอร์เฟซประเภทนี้เป็นวิธีการสื่อสารพื้นฐานที่สุดที่ไมโครคอนโทรลเลอร์ส่วนใหญ่มีให้ การส่งข้อมูลถูกควบคุมโดยสัญญาณนาฬิกาแบบซิงโครนัส สัญญาณประกอบด้วย: SDI (ข้อมูลเข้าแบบอนุกรม), SDO (ข้อมูลออกแบบอนุกรม), SCLK (สัญญาณนาฬิกาแบบอนุกรม) และสัญญาณ Ready; ในบางกรณีอาจไม่มีสัญญาณ Ready; อินเทอร์เฟซประเภทนี้สามารถทำงานได้ในโหมดมาสเตอร์หรือโหมดสเลฟ ในแง่ที่นิยมใช้กันคือขึ้นอยู่กับว่าใครเป็นผู้ให้สัญญาณนาฬิกา ฝ่ายที่ให้สัญญาณนาฬิกาจะเป็นมาสเตอร์ และฝ่ายตรงข้ามจะเป็นสเลฟ


UART (Universal Asynchronous Receive Transmit): เป็นอินเทอร์เฟซการส่งข้อมูลแบบอะซิงโครนัสพื้นฐานที่สุด มีเพียงสองสายสัญญาณ คือ Rx และ Tx รูปแบบข้อมูลพื้นฐานคือ: บิตเริ่มต้น + บิตข้อมูล (7 บิต/8 บิต) + บิตพาริตี (คู่ คี่ หรือไม่มี) + บิตหยุด (1~2 บิต) เวลาที่ใช้ในการส่งข้อมูลหนึ่งบิตเรียกว่า อัตรา Baud


สำหรับไมโครคอนโทรลเลอร์ส่วนใหญ่ ความยาวของบิตข้อมูล โหมดตรวจสอบข้อมูล (ตรวจสอบเลขคี่ ตรวจสอบเลขคู่ หรือไม่ตรวจสอบ) ความยาวของบิตหยุด และอัตราการส่งข้อมูล (Baud Rate) สามารถตั้งค่าได้อย่างยืดหยุ่นผ่านการเขียนโปรแกรม วิธีการใช้งานอินเทอร์เฟซประเภทนี้ที่ใช้กันมากที่สุดคือการสื่อสารกับพอร์ตอนุกรมของพีซี


อินเทอร์เฟซ I2C: I2C เป็นโปรโตคอลการส่งข้อมูลที่สร้างโดย Philips โดยใช้สัญญาณ 2 สัญญาณ ได้แก่ SDAT (serial data input and output) และ SCLK (serial clock) ข้อดีที่สำคัญที่สุดคือสามารถเชื่อมต่ออุปกรณ์หลายตัวเข้ากับบัสนี้และระบุและเข้าถึงได้ผ่านทางแอดเดรส ข้อดีอีกอย่างหนึ่งของบัส I2C คือสะดวกมากในการใช้ซอฟต์แวร์เพื่อใช้งานผ่านพอร์ต IO อัตราการส่งข้อมูลถูกควบคุมโดย SCLK อย่างสมบูรณ์ ซึ่งสามารถเร็วหรือช้าได้ ต่างจากอินเทอร์เฟซ UART ที่มีข้อกำหนดอัตราที่เข้มงวด


5. วอทช์ด็อก (ตัวจับเวลาวอทช์ด็อก): วอทช์ด็อกเป็นฟังก์ชันพื้นฐานของไมโครคอนโทรลเลอร์ส่วนใหญ่ (ไมโครคอนโทรลเลอร์ 4 บิตบางตัวอาจไม่มีฟังก์ชันนี้) วอทช์ด็อกของไมโครคอนโทรลเลอร์ส่วนใหญ่จะอนุญาตให้โปรแกรมรีเซ็ตได้เท่านั้น แต่ไม่สามารถปิดได้ (บางตัวถูกตั้งค่าไว้ตั้งแต่ตอนเขียนโปรแกรม เช่น ไมโครคอนโทรลเลอร์ซีรี่ส์ PIC ของ Microchip) และบางไมโครคอนโทรลเลอร์ใช้วิธีเฉพาะในการตัดสินใจว่าจะเปิดหรือปิด เช่น ซีรี่ส์ KS57 ของ Samsung ตราบใดที่โปรแกรมเข้าถึงรีจิสเตอร์วอทช์ด็อก วอทช์ด็อกจะเปิดโดยอัตโนมัติและไม่สามารถปิดได้อีก โดยทั่วไปแล้ว เวลาในการรีเซ็ตของวอทช์ด็อกสามารถตั้งค่าได้ด้วยโปรแกรม การใช้งานพื้นฐานที่สุดของวอทช์ด็อกคือการให้ความสามารถในการกู้คืนตัวเองสำหรับไมโครคอนโทรลเลอร์ที่ล่มเนื่องจากความล้มเหลวที่ไม่คาดคิด



สี่
ผู้ผลิตไมโครคอนโทรลเลอร์หลักระดับโลก

(จัดอันดับโดยไม่เรียงลำดับความสำคัญ จัดเรียงตามผู้ผลิตหลัก หากมีสิ่งใดขาดหายไป โปรดเพิ่มในช่องแสดงความคิดเห็น)




ยุโรปและอเมริกา




1. Freescale+NXP (Freescale+NXP): ประเทศเนเธอร์แลนด์ เป็นผู้ผลิตไมโครคอนโทรลเลอร์ (MCU) แบบ 16 บิตและ 32 บิตเป็นหลัก การใช้งาน: อุปกรณ์อิเล็กทรอนิกส์ยานยนต์, ไฟ LED และไฟส่องสว่างทั่วไป, การดูแลสุขภาพ, การรวมมัลติมีเดีย, เครื่องใช้ในบ้านและเครื่องมือไฟฟ้า, การควบคุมมอเตอร์ในเทคโนโลยีระบบอัตโนมัติอาคาร, แหล่งจ่ายไฟและตัวแปลงพลังงาน, พลังงานและโครงข่ายไฟฟ้าอัจฉริยะ, ระบบอัตโนมัติ, โครงสร้างพื้นฐานคอมพิวเตอร์และการสื่อสาร




2. Microchip+Atmel (Microchip Technology + Atmel): บริษัทจากสหรัฐอเมริกา เป็นผู้ผลิตไมโครคอนโทรลเลอร์ (MCU) แบบ 16 บิตและ 32 บิตเป็นหลัก การใช้งาน: อุปกรณ์อิเล็กทรอนิกส์ยานยนต์, การใช้งานในอุตสาหกรรม, การควบคุมมอเตอร์, รถยนต์, ระบบอัตโนมัติในอาคาร, เครื่องใช้ไฟฟ้าภายในบ้าน, ความบันเทิงภายในบ้าน, ระบบอัตโนมัติทางอุตสาหกรรม, ระบบแสงสว่าง, อินเทอร์เน็ตของสรรพสิ่ง (IoT), พลังงานอัจฉริยะ, อุปกรณ์อิเล็กทรอนิกส์พกพา, อุปกรณ์ต่อพ่วงคอมพิวเตอร์




3. Cypress+Spansion (เซมิคอนดักเตอร์ไซเพรส + สแปนชัน): บริษัทสัญชาติสหรัฐอเมริกาแห่งนี้ผลิตไมโครคอนโทรลเลอร์ (MCU) ขนาด 8 บิต 16 บิต และ 32 บิต เป็นหลัก การใช้งาน: อุปกรณ์อิเล็กทรอนิกส์ยานยนต์ เครื่องใช้ไฟฟ้าภายในบ้าน อุปกรณ์ทางการแพทย์ เครื่องใช้ไฟฟ้าสำหรับผู้บริโภค การสื่อสารและโทรคมนาคม อุตสาหกรรม และระบบไร้สาย




4. ADI (Analog Devices): สหรัฐอเมริกา ส่วนใหญ่ผลิตไมโครคอนโทรลเลอร์ (MCU) ขนาด 8 บิต 16 บิต และ 32 บิต การใช้งาน: อวกาศและการป้องกันประเทศ ยานยนต์ เทคโนโลยีอาคาร การสื่อสาร เครื่องใช้ไฟฟ้าสำหรับผู้บริโภค พลังงาน การดูแลสุขภาพ เครื่องมือวัดและการวัด มอเตอร์ ระบบอัตโนมัติทางอุตสาหกรรม และระบบรักษาความปลอดภัย




5. Infineon: ประเทศเยอรมนี ผู้ผลิตไมโครคอนโทรลเลอร์ (MCU) หลักๆ คือ 16 บิตและ 32 บิต การใช้งาน: อุปกรณ์อิเล็กทรอนิกส์ยานยนต์, อุปกรณ์อิเล็กทรอนิกส์สำหรับผู้บริโภค, วิศวกรรม, ยานพาหนะเพื่อการพาณิชย์และเกษตรกรรม, การประมวลผลข้อมูล, การขนส่งทางไฟฟ้า, การใช้งานในอุตสาหกรรม, อุปกรณ์ทางการแพทย์, อุปกรณ์เคลื่อนที่, การควบคุมและขับเคลื่อนมอเตอร์, แหล่งจ่ายไฟ, สำหรับรถจักรยานยนต์, จักรยานไฟฟ้า และยานพาหนะไฟฟ้าขนาดเล็ก, โครงข่ายไฟฟ้าอัจฉริยะ, ระบบแสงสว่าง, โซลูชันระบบพลังงานแสงอาทิตย์, โซลูชันระบบพลังงานลม




6. ST Microelectronics: อิตาลี/ฝรั่งเศส ส่วนใหญ่ผลิตไมโครคอนโทรลเลอร์ (MCU) แบบ 32 บิต การใช้งาน: ไฟ LED และไฟส่องสว่างทั่วไป การขนส่ง การดูแลสุขภาพ การรวมมัลติมีเดีย เครื่องใช้ในบ้านและเครื่องมือไฟฟ้า เทคโนโลยีการควบคุมมอเตอร์ในเทคโนโลยีอาคารอัตโนมัติ แหล่งจ่ายไฟและตัวแปลงพลังงาน พลังงานและโครงข่ายไฟฟ้าอัจฉริยะ ระบบอัตโนมัติ โครงสร้างพื้นฐานคอมพิวเตอร์และการสื่อสาร




7. Qualcomm: ประเทศสหรัฐอเมริกา ส่วนใหญ่ผลิตไมโครคอนโทรลเลอร์ (MCU) แบบ 16 บิตและ 32 บิต การใช้งาน: สมาร์ทโฟน แท็บเล็ต โมเด็มไร้สาย




8. Texas Instruments: ประเทศสหรัฐอเมริกา ส่วนใหญ่ผลิตไมโครคอนโทรลเลอร์ (MCU) แบบ 16 บิตและ 32 บิต ขอบเขตการใช้งาน: อุปกรณ์อิเล็กทรอนิกส์ยานยนต์ อุปกรณ์อิเล็กทรอนิกส์สำหรับผู้บริโภค อุปกรณ์ทางการแพทย์ อุปกรณ์เคลื่อนที่ และระบบสื่อสาร




9. Maxim (แม็กซิม): สหรัฐอเมริกา ส่วนใหญ่ผลิตไมโครคอนโทรลเลอร์ 32 บิต ขอบเขตการใช้งาน: อุปกรณ์อิเล็กทรอนิกส์ยานยนต์ อุปกรณ์อิเล็กทรอนิกส์สำหรับผู้บริโภค การใช้งานในอุตสาหกรรม และระบบรักษาความปลอดภัย




ญี่ปุ่นและเกาหลีใต้  




1. เรเนซัส: ประเทศญี่ปุ่น ผู้ผลิตไมโครคอนโทรลเลอร์ (MCU) หลักๆ คือ 16 บิตและ 32 บิต ขอบเขตการใช้งาน: คอมพิวเตอร์และอุปกรณ์ต่อพ่วง เครื่องใช้ไฟฟ้าสำหรับผู้บริโภค อุปกรณ์อิเล็กทรอนิกส์เพื่อสุขภาพและการแพทย์ อุปกรณ์อิเล็กทรอนิกส์ยานยนต์ อุตสาหกรรม และการสื่อสาร




2. โตชิบา: ประเทศญี่ปุ่น ส่วนใหญ่ผลิตไมโครคอนโทรลเลอร์ (MCU) แบบ 16 บิตและ 32 บิต ขอบเขตการใช้งาน: อุปกรณ์อิเล็กทรอนิกส์ยานยนต์, การใช้งานในอุตสาหกรรม, การควบคุมมอเตอร์, การสื่อสารไร้สาย, โทรศัพท์มือถือ, คอมพิวเตอร์และอุปกรณ์ต่อพ่วง, การถ่ายภาพและเสียงและวิดีโอ, สินค้าอุปโภคบริโภค (เครื่องใช้ในบ้าน), ไฟ LED, ระบบรักษาความปลอดภัย, การจัดการพลังงาน, อุปกรณ์บันเทิง




3. Fujitsu: ประเทศญี่ปุ่น ผู้ผลิตไมโครคอนโทรลเลอร์ 32 บิตเป็นหลัก ขอบเขตการใช้งาน: ยานยนต์ อุปกรณ์ทางการแพทย์ เครื่องจักร เครื่องใช้ไฟฟ้าภายในบ้าน




4. Samsung Electronics: ประเทศเกาหลีใต้ เป็นผู้ผลิตไมโครคอนโทรลเลอร์ (MCU) แบบ 16 บิตและ 32 บิตเป็นหลัก การใช้งาน: อุปกรณ์อิเล็กทรอนิกส์ยานยนต์, การใช้งานในอุตสาหกรรม, การควบคุมมอเตอร์, รถยนต์, ระบบอัตโนมัติในอาคาร, เครื่องใช้ไฟฟ้าภายในบ้าน, ความบันเทิงภายในบ้าน, ระบบอัตโนมัติทางอุตสาหกรรม, ระบบแสงสว่าง, อินเทอร์เน็ตของสรรพสิ่ง (IoT), พลังงานอัจฉริยะ, อุปกรณ์อิเล็กทรอนิกส์พกพา, อุปกรณ์ต่อพ่วงคอมพิวเตอร์




ภูมิภาคจีน  




จีนแผ่นดินใหญ่  




1. Sigma Microelectronics: ส่วนใหญ่จำหน่ายไมโครคอนโทรลเลอร์ 32 บิต ขอบเขตการใช้งาน: โทรคมนาคม การผลิต พลังงาน การขนส่ง ไฟฟ้า ฯลฯ




2. Zhuhai Orbit: ส่วนใหญ่จำหน่าย MCU 32 บิต ขอบเขตการใช้งาน: อวกาศ: สถานีรับส่งสัญญาณดาวเทียม เรือ เครื่องบิน; การควบคุมอุตสาหกรรมระดับสูง: คอมพิวเตอร์ฝังตัว; การควบคุมเรือ การควบคุมอุตสาหกรรม อุปกรณ์ไฟฟ้า การตรวจสอบสิ่งแวดล้อม




3. GigaDevice Innovation: ส่วนใหญ่จำหน่าย MCU 32 บิต ขอบเขตการใช้งาน: ระบบอัตโนมัติทางอุตสาหกรรม, อินเทอร์เฟซระหว่างมนุษย์กับเครื่องจักร, การควบคุมมอเตอร์, การตรวจสอบความปลอดภัย, บ้านอัจฉริยะ, อินเทอร์เน็ตของสรรพสิ่ง (IoT)




4. Shengsi Microelectronics: ส่วนใหญ่จำหน่ายไมโครคอนโทรลเลอร์ (MCU) แบบ 8 บิตและ 32 บิต ขอบเขตการใช้งาน: เครื่องใช้ไฟฟ้าขนาดเล็กในครัวเรือน, เครื่องใช้ไฟฟ้าสำหรับผู้บริโภค, รีโมทคอนโทรล, เมาส์, แบตเตอรี่ลิเธียม, ผลิตภัณฑ์ดิจิทัล, อุปกรณ์อิเล็กทรอนิกส์ยานยนต์, เครื่องมือและอุปกรณ์ทางการแพทย์, ของเล่น, การควบคุมอุตสาหกรรม, บ้านอัจฉริยะและระบบรักษาความปลอดภัย และอื่นๆ




5. Chipsea Technology: ส่วนใหญ่จำหน่ายไมโครคอนโทรลเลอร์ (MCU) ขนาด 16 บิตและ 32 บิต ขอบเขตการใช้งาน: เครื่องมือวัด, อินเทอร์เน็ตของสรรพสิ่ง (IoT), อุปกรณ์อิเล็กทรอนิกส์สำหรับผู้บริโภค, เครื่องใช้ในบ้าน และอุปกรณ์อิเล็กทรอนิกส์สำหรับยานยนต์




6. Lianhua Integrated Circuit: Mainly provides 8-bit and 16-bit MCUs. Application scope: consumer electronics, white home appliances, industrial control, communication equipment, automotive electronics, and computers.




7. Zhuhai Jianrong: ส่วนใหญ่จำหน่ายไมโครคอนโทรลเลอร์ 8 บิต ขอบเขตการใช้งาน: เครื่องใช้ในครัวเรือน, แหล่งจ่ายไฟแบบพกพา




8. เทคโนโลยี Actions: ส่วนใหญ่จำหน่ายไมโครคอนโทรลเลอร์ (MCU) ขนาด 8 บิตถึง 32 บิต ใช้งานได้หลากหลาย เช่น แท็บเล็ต คอมพิวเตอร์อัจฉริยะ มัลติมีเดีย บลูทูธ และระบบเสียง Wi-Fi




9. Aisco Microelectronics: ส่วนใหญ่ผลิตไมโครคอนโทรลเลอร์ (MCU) แบบ 8 บิตและ 16 บิต ขอบเขตการใช้งาน: ชิปสำหรับผู้บริโภค ชิปสื่อสาร ชิปข้อมูล และเครื่องใช้ไฟฟ้าภายในบ้าน




10. Huaxin Microelectronics: ส่วนใหญ่ผลิตไมโครคอนโทรลเลอร์ (MCU) แบบ 8 บิตและ 4 บิต การใช้งาน: เครื่องรับสัญญาณดาวเทียม, ที่ชาร์จโทรศัพท์มือถือ, ปฏิทินถาวร และรีโมทคอนโทรลแบบออลอินวัน




11. เซี่ยงไฮ้ เบลลิง (บริษัท ฮวาต้า เซมิคอนดักเตอร์ โฮลดิ้งส์): ส่วนใหญ่ผลิตไมโครคอนโทรลเลอร์ (MCU) ขนาด 8 บิต 16 บิต และ 32 บิต การใช้งาน: อุปกรณ์ต่อพ่วงคอมพิวเตอร์, HDTV, การจัดการพลังงาน, เครื่องใช้ไฟฟ้าขนาดเล็ก และเครื่องใช้ไฟฟ้าดิจิทัล




12. บริษัท Haier Integrated Circuits: ส่วนใหญ่ผลิตไมโครคอนโทรลเลอร์ (MCU) ขนาด 14 บิต 15 บิต และ 16 บิต ขอบเขตการใช้งาน: อุปกรณ์อิเล็กทรอนิกส์สำหรับผู้บริโภค อุปกรณ์อิเล็กทรอนิกส์สำหรับยานยนต์ อุตสาหกรรม และเครื่องมืออัจฉริยะ




13. Beijing Ingenic: ส่วนใหญ่จำหน่ายไมโครคอนโทรลเลอร์ 32 บิต ขอบเขตการใช้งาน: อุปกรณ์สวมใส่, อินเทอร์เน็ตของสรรพสิ่ง (IoT), เครื่องใช้ไฟฟ้าในบ้านอัจฉริยะ, รถยนต์, เครื่องใช้ไฟฟ้าสำหรับผู้บริโภค, แท็บเล็ตคอมพิวเตอร์




14. China Microelectronics: ส่วนใหญ่ผลิตไมโครคอนโทรลเลอร์ 8 บิต การใช้งาน: เครื่องใช้ไฟฟ้าอัจฉริยะในบ้าน, อุปกรณ์อิเล็กทรอนิกส์ในรถยนต์, ระบบรักษาความปลอดภัย, ไฟ LED และไฟประดับสวน, ของเล่นอัจฉริยะ, บ้านอัจฉริยะ และอุปกรณ์อิเล็กทรอนิกส์สำหรับผู้บริโภค




15. Shenzhou Loongson Integrated Circuit: ส่วนใหญ่จำหน่าย MCU 32 บิต ขอบเขตการใช้งาน: การตรวจสอบพลังงาน, โครงข่ายไฟฟ้าอัจฉริยะ, การควบคุมดิจิทัลในอุตสาหกรรม, อินเทอร์เน็ตของสรรพสิ่ง, บ้านอัจฉริยะ, การตรวจสอบข้อมูล




16. Ziguang Microelectronics: ส่วนใหญ่จำหน่ายไมโครคอนโทรลเลอร์ (MCU) แบบ 8 บิตและ 16 บิต ขอบเขตการใช้งาน: เครื่องใช้ไฟฟ้าอัจฉริยะในบ้าน




17. Times Minxin: ส่วนใหญ่จำหน่ายไมโครคอนโทรลเลอร์ 32 บิต ขอบเขตการใช้งาน: ระบบนำทางในรถยนต์ การตรวจสอบการจราจร การควบคุมเรือประมง เครือข่ายโทรคมนาคมด้านพลังงาน




18. China Resources Silicon Microelectronics (บริษัทในเครือของ China Resources Microelectronics): ส่วนใหญ่จำหน่ายไมโครคอนโทรลเลอร์ (MCU) แบบ 8 บิตและ 16 บิต ขอบเขตการใช้งาน: อุปกรณ์อิเล็กทรอนิกส์สำหรับผู้บริโภค การควบคุมทางอุตสาหกรรม และเครื่องใช้ไฟฟ้าภายในบ้าน




19. เทคโนโลยีหลักของประเทศ: ส่วนใหญ่จัดหาไมโครคอนโทรลเลอร์ 32 บิต ขอบเขตการใช้งาน: ด้านความปลอดภัยของข้อมูล ด้านระบบสำนักงานอัตโนมัติ ด้านเครือข่ายการสื่อสาร และด้านความปลอดภัยของข้อมูล




20. Zhongtian Micro: ส่วนใหญ่ผลิตไมโครคอนโทรลเลอร์ (MCU) แบบ 32 บิต การใช้งาน: สมาร์ทโฟน, โทรทัศน์ดิจิทัล, กล่องรับสัญญาณ, อุปกรณ์อิเล็กทรอนิกส์ในรถยนต์, GPS, เครื่องอ่านอีบุ๊ก และเครื่องพิมพ์




21. บริษัท ไชน่า รีซอร์ส ไมโครอิเล็กทรอนิกส์: ส่วนใหญ่จำหน่ายไมโครคอนโทรลเลอร์ (MCU) แบบ 8 บิตและ 16 บิต ขอบเขตการใช้งาน: วงจรควบคุมทั่วไปสำหรับเครื่องใช้ไฟฟ้าภายในบ้าน เครื่องใช้ไฟฟ้าสำหรับผู้บริโภค และระบบควบคุมอัตโนมัติทางอุตสาหกรรม




22. Zhongying Electronics: ส่วนใหญ่จำหน่ายไมโครคอนโทรลเลอร์ (MCU) แบบ 4 บิต, 8 บิต, 16 บิต และ 32 บิต ขอบเขตการใช้งาน: เครื่องใช้ไฟฟ้าภายในบ้านและมอเตอร์




23. Lingdong Microelectronics: ส่วนใหญ่ให้บริการชิปประมวลผล 32 บิต ขอบเขตการใช้งาน: การควบคุมมอเตอร์, การควบคุมบลูทูธ, จอแสดงผลความละเอียดสูง, การชาร์จไร้สาย, โดรน, เครื่องพิมพ์ขนาดเล็ก, ฉลากอัจฉริยะ, บุหรี่อิเล็กทรอนิกส์, จอแสดงผล LED ดอทเมทริกซ์ เป็นต้น




24. Nuvoton Technology: ส่วนใหญ่จำหน่าย MCU 8 บิต ขอบเขตการใช้งาน: ระบบแสงสว่าง, อินเทอร์เน็ตของสรรพสิ่ง (IoT) เป็นต้น




25. Neusoft Carrier: ส่วนใหญ่จำหน่ายไมโครคอนโทรลเลอร์ (MCU) แบบ 8 บิตและ 32 บิต การใช้งาน: เครื่องใช้ไฟฟ้าภายในบ้าน, บ้านอัจฉริยะ, เครื่องมือวัด, ตัวควบคุมแผง LCD, ระบบควบคุมอุตสาหกรรม ฯลฯ




26. Betley: ส่วนใหญ่จำหน่ายไมโครคอนโทรลเลอร์ 32 บิต ขอบเขตการใช้งาน: บ้านอัจฉริยะ การควบคุมทางอุตสาหกรรม และผลิตภัณฑ์สำหรับผู้บริโภค




27. บริษัท Shengquan Technology: ดำเนินธุรกิจหลักในการผลิตไมโครคอนโทรลเลอร์ 8 บิต ขอบเขตการใช้งาน: แผงจอแสดงผลขนาดเล็กและขนาดกลางสำหรับยานยนต์ การศึกษา การควบคุมอุตสาหกรรม การแพทย์ และอื่นๆ




28. บริษัท Hangshun Chip: ส่วนใหญ่ผลิตไมโครคอนโทรลเลอร์ (MCU) แบบ 8 บิตและ 32 บิต ขอบเขตการใช้งาน: รถยนต์, อินเทอร์เน็ตของสรรพสิ่ง (IoT) เป็นต้น




29. Fudan Microelectronics: ส่วนใหญ่จำหน่ายไมโครคอนโทรลเลอร์ (MCU) แบบ 16 บิตและ 32 บิต การใช้งาน: มิเตอร์อัจฉริยะ, ล็อกประตูอัจฉริยะ เป็นต้น




30. Huada Semiconductor: ส่วนใหญ่ผลิตไมโครคอนโทรลเลอร์ (MCU) ขนาด 8 บิต 16 บิต และ 32 บิต การใช้งาน: การควบคุมอุตสาหกรรม การผลิตอัจฉริยะ ชีวิตอัจฉริยะ และอินเทอร์เน็ตของสรรพสิ่ง (IoT)




ไต้หวันจีน  




1. บริษัท Hongjing Technology: ส่วนใหญ่จำหน่าย MCU แบบ 32 บิต ขอบเขตการใช้งาน: การสื่อสาร การควบคุมอุตสาหกรรม อุปกรณ์ข้อมูล และระบบเสียง




2. Holtek Semiconductor: ส่วนใหญ่ผลิตไมโครคอนโทรลเลอร์ (MCU) แบบ 8 บิตและ 32 บิต ขอบเขตการใช้งาน: อุปกรณ์อิเล็กทรอนิกส์สำหรับผู้บริโภค, ไฟ LED เป็นต้น




3. บริษัท หลิงหยาง เทคโนโลยี: ส่วนใหญ่จำหน่ายไมโครคอนโทรลเลอร์ (MCU) แบบ 8 บิตและ 16 บิต ขอบเขตการใช้งาน: อุปกรณ์เสียงและวิดีโอภายในบ้าน




4. Zhongying Electronics: ส่วนใหญ่จำหน่ายไมโครคอนโทรลเลอร์ (MCU) แบบ 4 บิตและ 8 บิต ขอบเขตการใช้งาน: ที่ชาร์จแบตเตอรี่, แหล่งจ่ายไฟแบบพกพา, เครื่องใช้ไฟฟ้าภายในบ้าน, ระบบควบคุมอุตสาหกรรม




5. บริษัท ซงฮัน เทคโนโลยี: ส่วนใหญ่จำหน่ายไมโครคอนโทรลเลอร์ (MCU) แบบ 8 บิตและ 32 บิต ขอบเขตการใช้งาน: รีโมทคอนโทรล, เครื่องชาร์จอัจฉริยะ, ระบบขนาดใหญ่และขนาดเล็ก, เครื่องชั่งอิเล็กทรอนิกส์, เครื่องวัดอุณหภูมิหู, เครื่องวัดความดันโลหิต, เครื่องวัดความดันลมยาง, อุปกรณ์วัดและอุปกรณ์สุขภาพต่างๆ




6. Winbond Electronics: ส่วนใหญ่จำหน่ายไมโครคอนโทรลเลอร์ (MCU) แบบ 8 บิตและ 16 บิต ขอบเขตการใช้งาน: อุปกรณ์อิเล็กทรอนิกส์ยานยนต์, อุปกรณ์อิเล็กทรอนิกส์อุตสาหกรรม, เครือข่าย, คอมพิวเตอร์, อุปกรณ์อิเล็กทรอนิกส์สำหรับผู้บริโภค, อินเทอร์เน็ตของสรรพสิ่ง (IoT)




7. เทคโนโลยี Ten Speed: ส่วนใหญ่ให้บริการไมโครคอนโทรลเลอร์ (MCU) แบบ 4 บิต, 8 บิต และ 51 บิต ขอบเขตการใช้งาน: รีโมทคอนโทรล, เครื่องใช้ไฟฟ้าขนาดเล็กในครัวเรือน




8. Youhua Microelectronics: ส่วนใหญ่จำหน่ายไมโครคอนโทรลเลอร์ (MCU) แบบ 4 บิตและ 8 บิต ขอบเขตการใช้งาน: ผลิตภัณฑ์วงจรรวมสำหรับการบันทึกข้อมูล เครื่องใช้ไฟฟ้าสำหรับผู้บริโภค และผลิตภัณฑ์ใช้ในครัวเรือน




9. ไมโครคอนโทรลเลอร์ Yingguang Technology: ส่วนใหญ่จำหน่าย MCU แบบ 4 บิตและ 8 บิต ขอบเขตการใช้งาน: เครื่องจักรกล, ระบบอัตโนมัติ, เครื่องใช้ไฟฟ้าภายในบ้าน, หุ่นยนต์




10. Elan Electronics: ส่วนใหญ่จำหน่ายไมโครคอนโทรลเลอร์ (MCU) แบบ 8 บิตและ 16 บิต ขอบเขตการใช้งาน: อุปกรณ์อิเล็กทรอนิกส์สำหรับผู้บริโภค คอมพิวเตอร์ และสมาร์ทโฟน
 




ห้า
เคล็ดลับสำหรับการเรียนรู้ไมโครคอนโทรลเลอร์
   




หลักการพื้นฐานและฟังก์ชันการทำงานของไมโครคอนโทรลเลอร์ (MCU) นั้นคล้ายคลึงกัน ความแตกต่างเพียงอย่างเดียวคือการกำหนดค่าและจำนวนของโมดูลฟังก์ชันอุปกรณ์ต่อพ่วง ระบบคำสั่ง ฯลฯ




สำหรับระบบคำสั่ง แม้ว่ารูปแบบจะดูแตกต่างกันมาก แต่จริงๆ แล้วมันเป็นเพียงสัญลักษณ์ที่แตกต่างกันเท่านั้น ความหมายที่พวกมันแทน หน้าที่ที่ต้องทำให้สำเร็จ และวิธีการระบุที่อยู่โดยพื้นฐานแล้วคล้ายคลึงกัน




เพื่อให้เข้าใจไมโครคอนโทรลเลอร์ (MCU) คุณต้องรู้ข้อมูลเกี่ยวกับพื้นที่ ROM, พื้นที่ RAM, จำนวนพอร์ต I/O, จำนวนตัวจับเวลาและวิธีการจับเวลา, โมดูลฟังก์ชันอุปกรณ์ต่อพ่วง (วงจรอุปกรณ์ต่อพ่วง) ที่ให้มา, แหล่งที่มาของการขัดจังหวะ, แรงดันไฟฟ้าในการทำงานและการใช้พลังงาน เป็นต้น




หลังจากทำความเข้าใจคุณสมบัติของ MCU เหล่านี้แล้ว ขั้นตอนต่อไปคือการเปรียบเทียบฟังก์ชันของ MCU ที่เลือกกับฟังก์ชันที่จำเป็นสำหรับการพัฒนาโครงการจริง และชี้แจงว่าทรัพยากรใดที่จำเป็นในปัจจุบันและทรัพยากรใดที่ไม่ได้ใช้ในโครงการนี้




สำหรับฟังก์ชันที่จำเป็นต้องใช้ในโปรเจ็กต์ แต่ไมโครคอนโทรลเลอร์ (MCU) ที่เลือกใช้ไม่มีฟังก์ชันนั้น คุณจำเป็นต้องทำความเข้าใจข้อมูลที่เกี่ยวข้องของ MCU อย่างละเอียดถี่ถ้วน เพื่อที่จะสามารถใช้งานฟังก์ชันเหล่านั้นโดยใช้วิธีการทางอ้อม ตัวอย่างเช่น หากโปรเจ็กต์ที่คุณกำลังพัฒนาจำเป็นต้องสื่อสารกับพอร์ต COM ของพีซี และ MCU ที่เลือกใช้ไม่มีพอร์ต UART คุณอาจพิจารณาใช้การขัดจังหวะภายนอกเพื่อใช้งานฟังก์ชันนั้นแทน




สำหรับทรัพยากรที่จำเป็นสำหรับการพัฒนาโครงการ คุณต้องทำความเข้าใจและอ่านคู่มือ* อย่างละเอียด ในขณะที่คุณสามารถละเว้นหรือดูโมดูลการทำงานที่ไม่จำเป็นได้ สำหรับการเรียนรู้ MCU การประยุกต์ใช้งานเป็นกุญแจสำคัญและเป็นเป้าหมายหลัก




หลังจากทำความเข้าใจหน้าที่การทำงานที่เกี่ยวข้องของ MCU แล้ว คุณก็สามารถเริ่มเขียนโปรแกรมได้




สำหรับผู้เริ่มต้นหรือนักออกแบบที่ใช้ MCU นี้เป็นครั้งแรก อาจพบคำอธิบายฟังก์ชันของ MCU ที่ไม่ชัดเจนมากมาย สำหรับปัญหาดังกล่าว มีสองวิธีในการแก้ไข วิธีแรกคือการเขียนโปรแกรมตรวจสอบพิเศษเพื่อทำความเข้าใจฟังก์ชันที่อธิบายไว้ในข้อมูล วิธีที่สองคือการละเลยข้อมูลเหล่านั้นไปก่อน และเขียนโปรแกรม MCU ตามความเข้าใจในปัจจุบันของคุณ โดยปล่อยให้มีการแก้ไขและปรับปรุงในระหว่างการดีบัก วิธีแรกเหมาะสำหรับโครงการที่มีเวลาเหลือเฟือและผู้เริ่มต้น ในขณะที่วิธีหลังเหมาะสำหรับผู้ที่มีประสบการณ์ในการพัฒนาไมโครคอนโทรลเลอร์หรือเมื่อกำหนดการของโครงการแน่นหนา




อย่าเสียเวลามากไปกับการทำความเข้าใจระบบคำสั่ง ระบบคำสั่งเป็นเพียงสัญลักษณ์ของการอธิบายเชิงตรรกะ คุณสามารถเลือกดูเฉพาะคำสั่งที่เกี่ยวข้องตามตรรกะของคุณเองและข้อกำหนดเชิงตรรกะของโปรแกรมในระหว่างการเขียนโปรแกรมเท่านั้น เมื่อการเขียนโปรแกรมดำเนินไป คุณจะมีความเชี่ยวชาญในระบบคำสั่งมากขึ้นเรื่อยๆ และคุณอาจจดจำมันได้โดยไม่รู้ตัวด้วยซ้ำ




หก
การเขียนโปรแกรมไมโครคอนโทรลเลอร์




การเขียนโปรแกรมสำหรับไมโครคอนโทรลเลอร์ (MCU) กับการเขียนโปรแกรมสำหรับพีซี (PC) นั้นแตกต่างกันมาก แม้ว่าเครื่องมือพัฒนา MCU ที่ใช้ภาษา C จะได้รับความนิยมมากขึ้นเรื่อยๆ แต่สำหรับนักออกแบบที่ต้องการเขียนโค้ดโปรแกรมที่มีประสิทธิภาพและชอบใช้ภาษาแอสเซมบลี ภาษาแอสเซมบลียังคงเป็นภาษาโปรแกรมที่กระชับและมีประสิทธิภาพมากที่สุด




สำหรับการเขียนโปรแกรม MCU นั้น โครงสร้างพื้นฐานสามารถกล่าวได้ว่าคล้ายคลึงกัน โดยทั่วไปแล้วจะแบ่งออกเป็นสามส่วน ได้แก่ ส่วนการเริ่มต้น (นี่คือความแตกต่างที่สำคัญที่สุดระหว่างการเขียนโปรแกรม MCU และ PC) ส่วนเนื้อหาของลูปโปรแกรมหลัก และส่วนจัดการการขัดจังหวะ คำอธิบายของแต่ละส่วนมีดังต่อไปนี้:




1. การเริ่มต้นระบบ: สำหรับการออกแบบโปรแกรม MCU ทั้งหมด การเริ่มต้นระบบเป็นขั้นตอนพื้นฐานและสำคัญที่สุด ซึ่งโดยทั่วไปประกอบด้วยสิ่งต่อไปนี้:




ปิดกั้นการขัดจังหวะทั้งหมดและเริ่มต้นตัวชี้สแต็ก: โดยทั่วไปแล้วส่วนการเริ่มต้นจะไม่ต้องการให้เกิดการขัดจังหวะใดๆ




ล้างพื้นที่ RAM ของระบบและหน่วยความจำที่แสดง: แม้ว่าบางครั้งอาจไม่จำเป็นอย่างยิ่ง แต่จากมุมมองของความน่าเชื่อถือและความสม่ำเสมอ โดยเฉพาะอย่างยิ่งเพื่อป้องกันข้อผิดพลาดที่ไม่คาดคิด ขอแนะนำให้สร้างนิสัยการเขียนโปรแกรมที่ดี




การเริ่มต้นใช้งานพอร์ต IO: ตามข้อกำหนดการใช้งานของโครงการ ให้ตั้งค่าโหมดอินพุตและเอาต์พุตของพอร์ต IO ที่เกี่ยวข้อง สำหรับพอร์ตอินพุต คุณต้องตั้งค่าตัวต้านทานแบบ pull-up หรือ pull-down สำหรับพอร์ตเอาต์พุต คุณต้องตั้งค่าระดับเอาต์พุตเริ่มต้นเพื่อป้องกันข้อผิดพลาดที่ไม่จำเป็น




การตั้งค่าการขัดจังหวะ: สำหรับแหล่งสัญญาณขัดจังหวะทั้งหมดที่จำเป็นต้องใช้ในโครงการ ควรเปิดใช้งานและตั้งค่าเงื่อนไขการกระตุ้นสำหรับการขัดจังหวะเหล่านั้น สำหรับการขัดจังหวะที่ซ้ำซ้อนซึ่งไม่ได้ใช้งาน จะต้องปิดใช้งาน




การเริ่มต้นใช้งานโมดูลฟังก์ชันอื่นๆ: สำหรับโมดูลฟังก์ชันอุปกรณ์ต่อพ่วงทั้งหมดของ MCU ที่จำเป็นต้องใช้งาน จะต้องตั้งค่าที่เกี่ยวข้องตามข้อกำหนดของแอปพลิเคชันโครงการ ตัวอย่างเช่น สำหรับการสื่อสาร UART จะต้องตั้งค่าอัตรา Baud Rate ความยาวข้อมูล วิธีการตรวจสอบ และความยาว Stop Bit สำหรับ Programmer Timer จะต้องตั้งค่าแหล่งสัญญาณนาฬิกา จำนวนการแบ่งความถี่ และข้อมูล Reload Data




การกำหนดค่าเริ่มต้นของพารามิเตอร์: หลังจากเสร็จสิ้นการกำหนดค่าเริ่มต้นของฮาร์ดแวร์และทรัพยากรของ MCU แล้ว ขั้นตอนต่อไปคือการกำหนดค่าเริ่มต้นของตัวแปรและข้อมูลบางส่วนที่ใช้ในโปรแกรม การกำหนดค่าเริ่มต้นในส่วนนี้จำเป็นต้องออกแบบให้เหมาะสมกับโครงการเฉพาะและโครงสร้างโดยรวมของโปรแกรม สำหรับบางแอปพลิเคชันที่ใช้ EEPROM เพื่อบันทึกข้อมูลที่สร้างไว้ล่วงหน้าของโครงการ ขอแนะนำให้คัดลอกข้อมูลที่เกี่ยวข้องไปยัง RAM ของ MCU ในระหว่างการกำหนดค่าเริ่มต้น เพื่อปรับปรุงความเร็วในการเข้าถึงข้อมูลของโปรแกรมและลดการใช้พลังงานของระบบ (โดยหลักการแล้ว การเข้าถึง EEPROM ภายนอกจะเพิ่มการใช้พลังงานของแหล่งจ่ายไฟ)




2. ส่วนหลักของโปรแกรมแบบวนซ้ำ: ไมโครคอนโทรลเลอร์ส่วนใหญ่ทำงานต่อเนื่องเป็นเวลานาน ดังนั้นส่วนหลักของโปรแกรมจึงถูกออกแบบมาในรูปแบบวนซ้ำ สำหรับแอปพลิเคชันที่มีโหมดการทำงานหลายโหมด อาจมีส่วนหลักของโปรแกรมแบบวนซ้ำหลายส่วน ซึ่งจะถูกแปลงผ่านสถานะแฟล็ก โดยทั่วไปแล้วส่วนหลักของโปรแกรมจะจัดเรียงเป็นโมดูลดังต่อไปนี้:




โปรแกรมคำนวณ: โดยทั่วไปแล้วโปรแกรมคำนวณใช้เวลานาน ดังนั้นเราจึงคัดค้านอย่างยิ่งต่อการประมวลผลโปรแกรมเหล่านี้โดยใช้การขัดจังหวะ โดยเฉพาะอย่างยิ่งการคูณและการหาร




ประมวลผลโปรแกรมที่มีความต้องการเวลาจริงต่ำหรือไม่มีเลย
 




โปรแกรมส่งสัญญาณแสดงผล: ส่วนใหญ่ใช้สำหรับแอปพลิเคชันที่มีไดรเวอร์ LED และ LCD ภายนอก




3. ตัวจัดการการขัดจังหวะ: โปรแกรมการขัดจังหวะส่วนใหญ่ใช้สำหรับจัดการงานและเหตุการณ์ที่มีความต้องการความรวดเร็วสูง เช่น การตรวจจับสัญญาณภายนอกที่เกิดขึ้นอย่างกะทันหัน การตรวจจับและประมวลผลปุ่ม การนับเวลา การสแกนจอแสดงผล LED เป็นต้น




โดยทั่วไป โปรแกรมขัดจังหวะควรเขียนโค้ดให้กระชับและสั้นที่สุดเท่าที่จะเป็นไปได้ สำหรับฟังก์ชันที่ไม่จำเป็นต้องประมวลผลแบบเรียลไทม์ สามารถตั้งค่าแฟล็กทริกเกอร์ในโปรแกรมขัดจังหวะได้ จากนั้นโปรแกรมหลักจะดำเนินการเฉพาะส่วนนั้นๆ สิ่งนี้มีความสำคัญมาก โดยเฉพาะอย่างยิ่งสำหรับไมโครคอนโทรลเลอร์ (MCU) ที่ใช้พลังงานต่ำและมีความเร็วต่ำ ซึ่งต้องมั่นใจได้ว่ามีการตอบสนองต่อการขัดจังหวะทั้งหมดอย่างทันท่วงที




4. สำหรับการจัดเรียงหน่วยงานต่างๆ นั้น ไมโครคอนโทรลเลอร์แต่ละตัวจะมีวิธีการประมวลผลที่แตกต่างกัน:




ตัวอย่างเช่น สำหรับแอปพลิเคชัน MCU ความเร็วต่ำและใช้พลังงานต่ำ (Fosc=32768Hz) เนื่องจากโครงการดังกล่าวเป็นอุปกรณ์พกพาและใช้จอ LCD ทั่วไป การตอบสนองต่อการกดปุ่มและการตอบสนองการแสดงผลจึงต้องการประสิทธิภาพแบบเรียลไทม์สูง ดังนั้นโดยทั่วไปจึงใช้การขัดจังหวะแบบกำหนดเวลาเพื่อประมวลผลการกดปุ่มและการแสดงข้อมูล สำหรับ MCU ความเร็วสูง เช่น แอปพลิเคชัน Fosc>1MHz เนื่องจาก MCU มีเวลาเพียงพอที่จะดำเนินการส่วนของลูปโปรแกรมหลักในขณะนี้ จึงสามารถตั้งค่าแฟล็กทริกเกอร์ต่างๆ ในการขัดจังหวะที่เกี่ยวข้องและนำงานทั้งหมดในส่วนของโปรแกรมหลักไปดำเนินการได้




5. ในการเขียนโปรแกรม MCU สิ่งหนึ่งที่ต้องให้ความสนใจเป็นพิเศษคือ:

จำเป็นต้องป้องกันไม่ให้มีการเข้าถึงหรือตั้งค่าตัวแปรหรือข้อมูลเดียวกันในส่วนของโปรแกรมขัดจังหวะและส่วนของโปรแกรมหลักพร้อมกัน วิธีการป้องกันที่มีประสิทธิภาพคือ การจัดเรียงการประมวลผลข้อมูลดังกล่าวไว้ในโมดูล และพิจารณาว่าจะดำเนินการใด ๆ ที่เกี่ยวข้องกับข้อมูลนั้นโดยการตรวจสอบแฟล็กทริกเกอร์ ในส่วนของโปรแกรมอื่น ๆ (โดยเฉพาะโปรแกรมขัดจังหวะ) ให้ตั้งค่าแฟล็กทริกเกอร์เฉพาะในส่วนที่จำเป็นต้องประมวลผลข้อมูลเท่านั้น -- วิธีนี้จะช่วยให้การดำเนินการข้อมูลสามารถคาดการณ์ได้และเป็นเอกลักษณ์




เจ็ด   บทสรุปเชิงวิศวกรเกี่ยวกับการเขียนโปรแกรมไมโครคอนโทรลเลอร์  




1. ฝึกฝนนิสัยการสรุปที่ดี การสรุปไม่ใช่แค่การสรุปสิ่งที่คุณเรียนรู้เท่านั้น แต่ยังเป็นการทบทวนและเจาะลึกกระบวนการเรียนรู้ และยังช่วยหลีกเลี่ยงการทำผิดพลาดซ้ำในครั้งที่สองด้วย


2. ก่อนที่จะเขียนโปรแกรม คุณต้องมีความเข้าใจในโครงการอย่างดีเสียก่อน ต้องตระหนักถึงรายละเอียดของโครงการ และวางโครงร่างทั่วไปไว้ก่อน การพิจารณาอย่างรอบคอบเกี่ยวกับการจัดวางและโครงสร้างที่เหมาะสมที่สุดนั้นสำคัญมาก จำเป็นต้องวิเคราะห์ว่าควรทำโมดูลใดก่อน ขั้นตอนเฉพาะของโมดูลนั้นคืออะไร ควรตั้งชื่อฟังก์ชันแต่ละฟังก์ชันอย่างไร การเชื่อมต่อกับโมดูลอื่น ๆ เป็นต้น การเตรียมกระดาษและจดบันทึกขั้นตอนสำคัญ ๆ ไว้ก็เป็นความคิดที่ดี


3. สำหรับการเขียนโปรแกรมแบบโมดูลาร์ในภาษาซี คุณต้องแบ่งแต่ละโมดูลออกเป็นส่วนๆ ก่อน จากนั้นเขียนโปรแกรมทีละโมดูล กำหนดลำดับการทำงาน ทำตามลำดับนั้น แล้วจึงเขียนโมดูลถัดไปหลังจากที่โมดูลแรกเสร็จสมบูรณ์ สำหรับไฟล์เฮดเดอร์ ให้เขียนไฟล์เฮดเดอร์ของโมดูลนั้นหลังจากที่เขียนโมดูลเสร็จแล้ว


4. อย่าเพิกเฉยต่อคำเตือนเมื่อปรากฏขึ้น นั่นหมายความว่าอาจมีบางอย่างผิดปกติในโปรแกรม คุณต้องค้นหาต้นตอและหาวิธีแก้ไข จงระบุให้ชัดเจนเมื่อค้นหาต้นตอ คุณสามารถค้นหาข้อมูลในอินเทอร์เน็ตหรือขอคำแนะนำจากผู้อื่นได้ ตัวอย่างเช่น ฟังก์ชันหลักในโปรเจกต์อื่นถูกเพิ่มเข้ามาในโปรเจกต์นี้ อาจมีชื่อฟังก์ชันซ้ำกัน นอกจากนี้ยังมีเหตุผลที่ต้องวิเคราะห์ปรากฏการณ์จากการทดลองและดำเนินการทีละขั้นตอน หรืออาจมีการเลือกอินเทอร์เฟซผิดเมื่อกำหนดพอร์ต บางครั้ง การหยุดพักและคิดทบทวนก็เป็นสิ่งที่ดี หากคุณไม่สามารถแก้ไขได้จริงๆ ไม่ว่าปัญหาจะง่ายแค่ไหน คุณก็ควรใส่ใจ เพราะอาจมีข้อผิดพลาดซ่อนอยู่   
ในการพัฒนาแอปพลิเคชันไมโครคอนโทรลเลอร์ ปัญหาต่างๆ เช่น ประสิทธิภาพการใช้งานโค้ด ประสิทธิภาพในการต้านทานการรบกวน และความน่าเชื่อถือของไมโครคอนโทรลเลอร์ ยังคงเป็นปัญหาที่ต้องแก้ไข ต่อไปนี้คือบทสรุปทักษะพื้นฐานหลายประการที่ควรเชี่ยวชาญในการพัฒนาไมโครคอนโทรลเลอร์        
 
  XNUMX
  ทักษะการพัฒนาไมโครคอนโทรลเลอร์  
1. วิธีลดข้อผิดพลาดในโปรแกรม
สำหรับการลดข้อผิดพลาดของโปรแกรม คุณควรพิจารณาพารามิเตอร์การจัดการที่อยู่นอกช่วงต่อไปนี้ ซึ่งควรนำมาพิจารณาในระหว่างการทำงานของระบบ  
 
  • พารามิเตอร์ทางกายภาพ: พารามิเตอร์เหล่านี้ส่วนใหญ่เป็นพารามิเตอร์ป้อนเข้าของระบบ ซึ่งรวมถึงพารามิเตอร์การกระตุ้น พารามิเตอร์การทำงานระหว่างกระบวนการเก็บข้อมูล และพารามิเตอร์ผลลัพธ์เมื่อสิ้นสุดกระบวนการ
  • พารามิเตอร์ทรัพยากร: พารามิเตอร์เหล่านี้ส่วนใหญ่เป็นทรัพยากรของวงจร อุปกรณ์ และหน่วยการทำงานในระบบ เช่น ความจุหน่วยความจำ ความยาวของหน่วยจัดเก็บข้อมูล และความลึกของการเรียงซ้อน
  • พารามิเตอร์การใช้งาน: พารามิเตอร์การใช้งานเหล่านี้มักปรากฏเป็นเงื่อนไขการใช้งานของไมโครคอนโทรลเลอร์และหน่วยการทำงานบางอย่าง พารามิเตอร์กระบวนการ: หมายถึงพารามิเตอร์ที่เปลี่ยนแปลงอย่างเป็นระเบียบในระหว่างการทำงานของระบบ

2. วิธีเพิ่มประสิทธิภาพของโค้ดโปรแกรมภาษาซี
การใช้ภาษา C ในการเขียนโปรแกรมไมโครคอนโทรลเลอร์เป็นแนวโน้มที่หลีกเลี่ยงไม่ได้ในการพัฒนาและการประยุกต์ใช้ไมโครคอนโทรลเลอร์ หากคุณต้องการให้ได้ประสิทธิภาพสูงสุดเมื่อเขียนโปรแกรมด้วยภาษา C ควรทำความคุ้นเคยกับคอมไพเลอร์ C ที่คุณใช้เสียก่อน ทดสอบจำนวนบรรทัดของคำสั่งภาษาแอสเซมบลีที่สอดคล้องกับการคอมไพล์แต่ละภาษา C เพื่อให้คุณทราบถึงประสิทธิภาพได้อย่างชัดเจน เมื่อเขียนโปรแกรมในอนาคต ให้ใช้คำสั่งที่มีประสิทธิภาพการคอมไพล์สูงสุด คอมไพเลอร์ C แต่ละตัวจะมีความแตกต่างกัน ดังนั้นประสิทธิภาพการคอมไพล์จึงแตกต่างกันด้วย ความยาวของโค้ดและเวลาในการประมวลผลของคอมไพเลอร์ C ที่ยอดเยี่ยมสำหรับระบบฝังตัวจะยาวกว่าฟังก์ชันเดียวกันที่เขียนด้วยภาษาแอสเซมบลีเพียง 5-20% เท่านั้น  
สำหรับโครงการที่ซับซ้อนและมีเวลาพัฒนาจำกัด สามารถใช้ภาษา C ได้ แต่เงื่อนไขคือคุณต้องคุ้นเคยกับภาษา C และคอมไพเลอร์ C ของระบบ MCU เป็นอย่างดี ควรให้ความสำคัญเป็นพิเศษกับชนิดข้อมูลและอัลกอริธึมที่ระบบคอมไพล์ C รองรับ แม้ว่าภาษา C จะเป็นภาษาโปรแกรมระดับสูงที่ใช้กันทั่วไปมากที่สุด แต่ผู้ผลิต MCU แต่ละรายก็มีระบบคอมไพล์ภาษา C ที่แตกต่างกัน โดยเฉพาะอย่างยิ่งในการทำงานของโมดูลฟังก์ชันพิเศษบางอย่าง ดังนั้น หากคุณไม่เข้าใจคุณสมบัติเหล่านี้ จะเกิดปัญหามากมายระหว่างการดีบัก ซึ่งจะทำให้ประสิทธิภาพการทำงานต่ำกว่าภาษาแอสเซมบลี


3. วิธีแก้ปัญหาการป้องกันการรบกวนของไมโครคอนโทรลเลอร์
วิธีที่มีประสิทธิภาพที่สุดในการป้องกันการรบกวนคือการกำจัดแหล่งกำเนิดการรบกวนและปิดกั้นเส้นทางการรบกวน แต่การทำเช่นนั้นมักเป็นเรื่องยาก ดังนั้นเราจึงทำได้เพียงตรวจสอบว่าความสามารถในการป้องกันการรบกวนของไมโครคอนโทรลเลอร์นั้นแข็งแกร่งเพียงพอหรือไม่ ในขณะที่การพัฒนาความสามารถในการป้องกันการรบกวนของระบบฮาร์ดแวร์กำลังได้รับความสนใจมากขึ้นเรื่อยๆ การป้องกันการรบกวนด้วยซอฟต์แวร์ก็ได้รับความสนใจมากขึ้นเช่นกัน เนื่องจากมีความยืดหยุ่นในการออกแบบ ประหยัดทรัพยากรฮาร์ดแวร์ และมีความน่าเชื่อถือสูง  
ปรากฏการณ์การรบกวนที่พบบ่อยที่สุดในไมโครคอนโทรลเลอร์คือการรีเซ็ต ส่วนกรณีที่โปรแกรมทำงานผิดปกติ สามารถใช้ซอฟต์แวร์ดักจับและวอชด็อกเพื่อนำโปรแกรมกลับสู่สถานะรีเซ็ตได้ ดังนั้น สิ่งที่สำคัญที่สุดสำหรับซอฟต์แวร์ไมโครคอนโทรลเลอร์ในการต้านทานการรบกวนคือการจัดการกับสถานะรีเซ็ต  
โดยทั่วไป ไมโครคอนโทรลเลอร์จะมีรีจิสเตอร์แฟล็กบางตัวที่สามารถใช้เพื่อตรวจสอบสาเหตุของการรีเซ็ตได้ นอกจากนี้ คุณยังสามารถซ่อนแฟล็กบางตัวไว้ใน RAM ได้ด้วยตนเอง ทุกครั้งที่โปรแกรมถูกรีเซ็ต สาเหตุการรีเซ็ตที่แตกต่างกันจะถูกระบุโดยการตรวจสอบแฟล็กเหล่านี้ คุณยังสามารถกระโดดไปยังโปรแกรมที่เกี่ยวข้องโดยตรงตามแฟล็กที่แตกต่างกันได้ วิธีนี้ช่วยให้โปรแกรมทำงานได้อย่างต่อเนื่อง และผู้ใช้จะไม่สังเกตเห็นว่าโปรแกรมถูกรีเซ็ตขณะใช้งาน  
4. วิธีทดสอบความน่าเชื่อถือของระบบไมโครคอนโทรลเลอร์
เมื่อการออกแบบระบบไมโครคอนโทรลเลอร์เสร็จสมบูรณ์แล้ว จะมีรายการทดสอบและวิธีการทดสอบที่แตกต่างกันสำหรับผลิตภัณฑ์ระบบไมโครคอนโทรลเลอร์แต่ละชนิด แต่บางรายการจะต้องได้รับการทดสอบ:
 
  • ทดสอบความสมบูรณ์ของฟังก์ชันซอฟต์แวร์ของไมโครคอนโทรลเลอร์
  • การทดสอบการเปิดและปิดเครื่อง
  • การทดสอบอายุ
  • การทดสอบต่างๆ เช่น ESD และ EFT

บางครั้ง เราสามารถจำลองความเสียหายที่อาจเกิดขึ้นระหว่างการใช้งานของมนุษย์ได้เช่นกัน ตัวอย่างเช่น จงใจถูพอร์ตสัมผัสของระบบไมโครคอนโทรลเลอร์ด้วยร่างกายมนุษย์หรือเนื้อผ้าเพื่อทดสอบความสามารถในการป้องกันไฟฟ้าสถิต หรือใช้สว่านไฟฟ้ากำลังสูงเจาะใกล้กับระบบไมโครคอนโทรลเลอร์เพื่อทดสอบความสามารถในการต้านทานการรบกวนทางแม่เหล็กไฟฟ้า


โดยสรุปแล้ว ไมโครคอมพิวเตอร์แบบชิปเดี่ยวได้กลายเป็นส่วนสำคัญของการพัฒนาและการประยุกต์ใช้คอมพิวเตอร์ ความสำคัญอย่างยิ่งของการประยุกต์ใช้ไมโครคอมพิวเตอร์แบบชิปเดี่ยวคือการเปลี่ยนแปลงแนวคิดและวิธีการออกแบบระบบควบคุมแบบดั้งเดิมอย่างพื้นฐาน


ฟังก์ชันส่วนใหญ่ที่เคยต้องใช้วงจรอนาล็อกหรือวงจรดิจิทัลในการทำงาน ปัจจุบันสามารถทำได้ด้วยวิธีการทางซอฟต์แวร์โดยใช้ไมโครคอนโทรลเลอร์ เทคโนโลยีการควบคุมแบบนี้ ซึ่งซอฟต์แวร์เข้ามาแทนที่ฮาร์ดแวร์ เรียกอีกอย่างว่า เทคโนโลยีไมโครคอนโทรล ซึ่งนับเป็นการปฏิวัติเทคโนโลยีการควบคุมแบบดั้งเดิม  
นอกจากนี้ ในระหว่างกระบวนการพัฒนาและการประยุกต์ใช้ เราต้องเชี่ยวชาญทักษะและเพิ่มประสิทธิภาพเพื่อให้สามารถนำไปใช้ได้ในหลากหลายวัตถุประสงค์มากขึ้น        
        เก้า
สรุปการทำงานของชิป
       
การทำงานบนชิปส่วนใหญ่เป็นการทำงานกับรีจิสเตอร์ภายในชิป รีจิสเตอร์ในชิปมีแอดเดรสเฉพาะของตัวเองที่แมปอยู่บนหน่วยความจำ ซึ่งการทำงานจะเกิดขึ้นกับแอดเดรสที่ตรงกัน เมื่อพิจารณาชิป ขั้นแรกให้ดูที่ไดอะแกรมเวลา จากนั้นทำความเข้าใจรีจิสเตอร์ที่เกี่ยวข้อง เข้าใจวิธีการทำงานของรีจิสเตอร์เหล่านั้น กำหนดพอร์ตที่ต้องการ (ซึ่งสามารถระบุได้จากโปรแกรม) และเขียนขั้นตอนการทำงานสำหรับการเขียนและการอ่านข้อมูล


วิธีการเขียนข้อมูลลงในชิป วิธีการอ่านข้อมูล และพอร์ตใดที่จะใช้ในการป้อนข้อมูลหรืออ่านข้อมูล (ซึ่งเป็นสิ่งสำคัญที่สุด)


เมื่อเชื่อมต่อชิปผ่านบัส คุณต้องเข้าใจโปรโตคอลของบัสก่อน ชิปที่เชื่อมต่อกับบัส I2C ส่วนใหญ่จะควบคุมชิปอื่นผ่านบัสนี้


1. ในเมทริกซ์ดอท มีไดโอด 74hc595 หนึ่งตัวใช้สำหรับการเลือกคอลัมน์ และอีกสองตัวใช้สำหรับการเลือกสี เมทริกซ์ดอทจึงเทียบเท่ากับชุดของไดโอด


ไดโอดจะสว่างขึ้นก็ต่อเมื่อปลายด้านหนึ่งได้รับระดับสูงและปลายอีกด้านหนึ่งได้รับระดับต่ำเท่านั้น เพียงแต่ว่าหากเลือกปลายด้านใดด้านหนึ่งแตกต่างกัน สีที่สว่างขึ้นก็จะแตกต่างกันไปด้วย


การเลือกโหมดการทำงานของตัวจับเวลา: สี่บิตบนสุดตั้งค่าตัวจับเวลา T1 และสี่บิตล่างสุดตั้งค่า T0 จากนั้นตัวเลขสองหลักสุดท้ายของแต่ละโหมดจะตั้งค่าโหมดการทำงาน เมื่อตั้งค่าตัวจับเวลาสองตัว โปรดระมัดระวังในการใช้ หรือ (|) เมื่อใช้การขัดจังหวะ โปรดใส่ใจกับการล้างค่าที่ควรล้างหลังจากเข้าสู่การขัดจังหวะ


2. ตัวรับส่งสัญญาณพอร์ตอนุกรม: โหมด 2 (การโหลดค่าเริ่มต้นอัตโนมัติ) โดยทั่วไปใช้สำหรับตั้งค่าอัตราการส่งข้อมูล (baud rate) เนื่องจากอุปกรณ์แต่ละชนิดมีขีดความสามารถในการประมวลผลข้อมูลที่แตกต่างกัน การตั้งค่าอัตราการส่งข้อมูลจึงเป็นการดูแลอุปกรณ์ความเร็วต่ำและช่วยให้การสื่อสารระหว่างกันเป็นไปอย่างราบรื่น บิตแฟล็กการขัดจังหวะจะต้องถูกล้างด้วยซอฟต์แวร์ เมื่อตั้งค่าการขัดจังหวะพอร์ตอนุกรม ไม่ว่าจะเป็นการส่งหรือรับข้อมูล ก็สามารถเข้าสู่ฟังก์ชันการขัดจังหวะได้ ดังนั้นควรให้ความสำคัญกับการตั้งค่าฟังก์ชันการขัดจังหวะ (โดยทั่วไปแล้ว การตั้งค่าฟังก์ชันจะขึ้นอยู่กับดุลพินิจของคอมพิวเตอร์แต่ละเครื่อง ไม่ว่าจะเป็นคอมพิวเตอร์โฮสต์หรือคอมพิวเตอร์สเลฟ)


หากคุณใช้การขัดจังหวะในการส่ง คุณต้องหาวิธีเข้าสู่การขัดจังหวะเป็นครั้งแรกเสียก่อน ดังนั้นคุณต้องส่งข้อมูลไปก่อนหนึ่งครั้ง จากนั้นจึงจะสามารถเข้าสู่การขัดจังหวะได้ สามารถส่งได้ครั้งละหนึ่งไบต์เท่านั้น และบิตถัดไปจะส่งได้ก็ต่อเมื่อตั้งค่า TI แล้วเท่านั้น


3. ตัวแปลงสัญญาณ PCF8591AD มีช่องสัญญาณอินพุตสี่ช่อง เมื่ออ่านค่าจาก PCF8591 จะเลือกช่องสัญญาณที่ต้องการ จากนั้นจะอ่านค่าแรงดันไฟฟ้าที่ป้อนเข้ามาจากช่องสัญญาณนั้น ข้อมูลที่แปลงแล้วจะถูกเก็บไว้ในชิปแล้วจึงอ่านออกมา เมื่ออ่านค่า จะเขียนที่อยู่ของชิปก่อน จากนั้นเขียนที่อยู่ย่อยของอุปกรณ์ (0x40 | หมายเลขช่องสัญญาณ) แล้วจึงอ่านข้อมูลที่ได้


4. การแปลงค่า Da นั้น เริ่มจากการเขียนที่อยู่ของอุปกรณ์ลงในชิปก่อน จากนั้นเขียนที่อยู่ย่อย (0x40) และสุดท้ายเขียนค่าดิจิทัลที่จะแปลง นี่คือข้อมูลชิปที่อยู่ของอุปกรณ์


5. สำหรับจอแสดงผล LCD หลังจากที่เขียนและแสดงผลข้อมูลแล้ว ข้อมูลจะแสดงผลอยู่อย่างนั้นโดยไม่รีเฟรชอย่างต่อเนื่อง หากต้องการเปลี่ยนแปลงข้อมูล จะต้องป้อนข้อมูลใหม่เท่านั้น


6. สำหรับชิปนาฬิกา DS1302 เมื่ออ่านข้อมูล ข้อมูลแรกจะถูกอ่านที่ขอบขาลงของนาฬิกาตัวที่แปดเมื่อเขียนข้อมูล จากนั้นจึงเตรียมการส่งออกครั้งต่อไป โปรดใส่ใจกับวิธีการเขียนโปรแกรมและตำแหน่งของค่าส่งคืน


7. ขั้นแรกให้ระบุรีจิสเตอร์ใน Ds1302 จากนั้นเขียนข้อมูลลงไป รีจิสเตอร์บนชิปจะระบุที่อยู่ (ฉันยังไม่ค่อยเข้าใจโปรแกรมป้องกันการเขียนเท่าไหร่ การเขียนข้อมูลเกิดขึ้นตลอดเวลาไม่ใช่เหรอ ทำไมการป้องกันการเขียนถึงยังเปิดอยู่?)


(จากที่ผู้เชี่ยวชาญคนก่อนได้กล่าวไว้ คุณสามารถตั้งค่าแฟล็กหลังจากเวลาเริ่มต้นได้ หากมีแฟล็กนี้แล้ว ก็ไม่จำเป็นต้องตั้งค่าเวลาเริ่มต้นอีก อย่างไรก็ตาม หากปิดเครื่อง หน่วยความจำ RAM ของ MCU จะไม่สามารถบันทึกแฟล็กนี้ได้ ดังนั้นคุณสามารถใช้ RAM ของ DS1302 เพื่อบันทึกแฟล็กและอ่านค่าหลังจากเปิดเครื่องได้ ผมเองก็เป็นมือใหม่และวางแผนจะใช้ DS1302 ในเร็วๆ นี้ ผมไม่แน่ใจว่าถูกต้องหรือไม่ และยังไม่ได้นำไปใช้งานจริง โปรดแบ่งปันข้อมูลเพิ่มเติมด้วยครับ)


8. ควรจดบันทึกค่าเริ่มต้นไว้เผื่อลืมในภายหลัง บางครั้งควรสังเกตว่าบิตต่ำสุดหรือบิตสูงสุดถูกประมวลผลก่อนเมื่ออ่านหรือเขียน ซึ่งสามารถพิจารณาได้จากแผนภาพเวลา


9. สำหรับทรานซีฟเวอร์อินฟราเรด เมื่อรับสัญญาณ ระบบจะพิจารณาว่าสัญญาณนั้นอยู่ในระดับสูงหรือต่ำโดยอาศัยช่วงเวลาที่อยู่ระหว่างขอบขาลงสองครั้ง ในการเขียนโปรแกรม ให้ใช้ตัวจับเวลาเพื่อกำหนดเวลา บันทึกค่า แล้วแปลงเป็นเลขฐานสอง (อ่านเพิ่มเติมเกี่ยวกับวิธีการเขียนโปรแกรมนี้ ซึ่งมีประโยชน์มาก)


10. มอเตอร์สเต็ปเปอร์: ส่วนใหญ่ใช้สำหรับการสวิตช์ แรงบิดของมอเตอร์สเต็ปเปอร์จะลดลงเมื่อความเร็วเพิ่มขึ้น ส่วนใหญ่ใช้สำหรับการป้อนชิ้นส่วนอัตโนมัติในเครื่องจักร และยังสามารถใช้ในงานควบคุมที่มีความแม่นยำสูงได้อีกด้วย


มอเตอร์สเต็ปเปอร์เป็นอุปกรณ์มอเตอร์สเต็ปเปอร์แบบวงจรเปิดที่แปลงสัญญาณพัลส์ไฟฟ้าเป็นการเคลื่อนที่เชิงมุมหรือการเคลื่อนที่เชิงเส้น ภายใต้สภาวะที่ไม่มีการโอเวอร์โหลด ความเร็วและตำแหน่งหยุดของมอเตอร์จะขึ้นอยู่กับความถี่และจำนวนพัลส์ของสัญญาณพัลส์เท่านั้น และจะไม่ได้รับผลกระทบจากการเปลี่ยนแปลงของโหลด เมื่อตัวขับสเต็ปเปอร์ได้รับสัญญาณพัลส์ มันจะขับมอเตอร์สเต็ปเปอร์ให้หมุนไปในทิศทางที่กำหนดด้วยมุมคงที่ เรียกว่า "มุมสเต็ป" การหมุนจะเกิดขึ้นทีละขั้นด้วยมุมคงที่ การเคลื่อนที่เชิงมุมสามารถควบคุมได้โดยการควบคุมจำนวนพัลส์เพื่อให้ได้ตำแหน่งที่แม่นยำ ในขณะเดียวกัน ความเร็วและความเร่งของการหมุนของมอเตอร์สามารถควบคุมได้โดยการควบคุมความถี่ของพัลส์เพื่อให้ได้การควบคุมความเร็ว


11. มอเตอร์เซอร์โว: (servo motor) หมายถึงมอเตอร์ที่ควบคุมการทำงานของชิ้นส่วนเชิงกลในระบบเซอร์โว เป็นอุปกรณ์ส่งกำลังทางอ้อมที่ช่วยเสริมการทำงานของมอเตอร์ มอเตอร์เซอร์โวสามารถควบคุมความเร็วและความแม่นยำของตำแหน่งได้อย่างแม่นยำมาก และสามารถแปลงสัญญาณแรงดันไฟฟ้าเป็นแรงบิดและความเร็วในการหมุนเพื่อขับเคลื่อนวัตถุควบคุม ความเร็วรอบของมอเตอร์เซอร์โวถูกควบคุมโดยสัญญาณอินพุตและสามารถตอบสนองได้อย่างรวดเร็ว ในระบบควบคุมอัตโนมัติ มอเตอร์เซอร์โวถูกใช้เป็นแอคชูเอเตอร์และมีคุณสมบัติเด่น เช่น ค่าคงที่เวลาทางกลไฟฟ้าต่ำ ความเป็นเส้นตรงสูง แรงดันเริ่มต้นต่ำ เป็นต้น สามารถแปลงสัญญาณไฟฟ้าที่ได้รับเป็นค่าการกระจัดเชิงมุมหรือความเร็วเชิงมุมที่ส่งออกไปยังเพลามอเตอร์ แบ่งออกเป็นสองประเภท คือ มอเตอร์เซอร์โว DC และ AC คุณสมบัติหลักคือ จะไม่มีการหมุนเมื่อแรงดันสัญญาณเป็นศูนย์ และความเร็วในการหมุนจะลดลงอย่างคงที่เมื่อแรงบิดเพิ่มขึ้น มอเตอร์ DC: มีช่วงการใช้งานกว้าง ใช้ในรถยนต์ขนาดเล็กเป็นส่วนใหญ่


12. ภาพรวมของอักษรจีน:
ในการแสดงผลอักษรจีนบนจอภาพหรือเครื่องพิมพ์ จะต้องออกแบบอักษรจีนลงในเมทริกซ์จุดตามสัญลักษณ์กราฟิก และจะได้รหัสเมทริกซ์จุด (รหัสสัญลักษณ์) ที่สอดคล้องกัน


วิธีการเข้ารหัสแบบรวมที่ใช้ในการแสดงอักษรจีนในคอมพิวเตอร์นั้น ก่อให้เกิดการเข้ารหัสอักษรจีนที่เรียกว่า รหัสภายใน (เช่น รหัสมาตรฐานแห่งชาติ) และรหัสภายในนี้มีเอกลักษณ์เฉพาะตัว (เทียบเท่ากับหมายเลขประจำตัวของอักษร) การเข้ารหัสอักษรจีนที่สร้างขึ้นเพื่ออำนวยความสะดวกในการป้อนอักษรจีนเรียกว่า รหัสป้อนข้อมูล ซึ่งเป็นรหัสภายนอกของอักษรจีน รหัสป้อนข้อมูลจะแตกต่างกันเนื่องจากวิธีการเข้ารหัสที่แตกต่างกัน และมีความหลากหลาย รหัสอักษรจีนที่สร้างขึ้นสำหรับการแสดงผลและการพิมพ์อักษรจีนเรียกว่า รหัสสัญลักษณ์ คอมพิวเตอร์จะค้นหารหัสสัญลักษณ์ของอักษรจีนในคลังแบบจำลองฟอนต์ผ่านรหัสภายในของอักษรจีน และทำการแปลง


รหัสภายในกล้อง


ตามข้อกำหนดของรหัสมาตรฐานแห่งชาติ อักษรจีนแต่ละตัวมีรหัสไบนารีเฉพาะ แต่รหัสนี้จะขัดแย้งกับรหัส ASCII เมื่อประมวลผลภายในโดยคอมพิวเตอร์ เพื่อแก้ปัญหานี้ จึงเพิ่ม 1 เข้าไปในหลักแรกของแต่ละไบต์ของรหัสมาตรฐานแห่งชาติ เนื่องจากรหัส ASCII ใช้เพียง 7 บิต ดังนั้น "1" ในตำแหน่งแรกจึงสามารถใช้เป็นเครื่องหมายระบุรหัสอักษรจีนได้ เมื่อคอมพิวเตอร์ประมวลผลรหัสที่มี "1" ในตำแหน่งแรก มันจะเข้าใจว่าเป็นข้อมูลอักษรจีน และเมื่อมันประมวลผลรหัสที่มี "0" ในตำแหน่งแรก มันจะเข้าใจว่าเป็นรหัส ASCII รหัสมาตรฐานแห่งชาติ (รหัสภายใน) ที่ประมวลผลด้วยวิธีนี้จึงเป็นรหัสภายใน


ถ้าเราแทนที่ "." ของสัญลักษณ์ "口" ด้วย "0" เราจะได้รหัสสัญลักษณ์ของ "口" อย่างชัดเจน: 0000H 0004H 3FFAH 2004H 2004H 2004H 2004H 2004H 2004H 2004H 2004H 3FFAH 2004H 0000H 0000H เมื่อคอมพิวเตอร์ต้องการแสดงผล "口" มันจะค้นหาที่อยู่แรกของไลบรารีแบบอักษรที่แสดงผลก่อน คำนวณโดยอิงจากรหัสภายในของ "口" จากนั้นจึงค้นหารหัสสัญลักษณ์ของ "口" แล้วสแกนหน้าจอตามลำดับตามรหัสสัญลักษณ์ (ในรูปแบบไบนารี) ผ่านการควบคุมของตัวสร้างอักขระ เมื่อรหัสไบนารีเป็น "0" จะทำการสแกนตำแหน่งที่เป็น "0" และเมื่อรหัสไบนารีเป็น "1" จะทำการสแกนเพื่อไฮไลต์ เพื่อให้ได้รูปแบบตัวอักษรของคำว่า "口"


แบบอักษรจีนจะถูกจัดเรียงตามลำดับของรหัสมาตรฐานแห่งชาติและจัดเก็บไว้ในหน่วยความจำในรูปแบบไฟล์ไบนารี ก่อให้เกิดเป็นคลังแบบอักษรจีน หรือเรียกอีกอย่างว่าคลังสัญลักษณ์อักษรจีน หรือคลังอักษรจีน


วิธีการเข้ารหัสสองวิธี โปรดดูไฟล์ส่วนหัว


GB1616.h//------------------ คำจำกัดความโครงสร้างข้อมูลแบบอักษรอักษรจีน ------------------------//structtypFNT_GB16 //โครงสร้างข้อมูลแบบอักษรอักษรจีน {unsignedcharIndex[3]; //ดัชนีรหัสภายในอักษรจีน unsignedchar Msk[32];//ข้อมูลรหัสเมทริกซ์จุด }; //////////////////////////////////////////////////////////////////////////////// ตารางแบบอักษรภาษาจีน//// คลังแบบอักษรภาษาจีน: ราชวงศ์ซ่ง 16 จุด, จัดเรียงข้อมูลแบบโมดูลัสแนวนอนโดยตัดบิตสูงสุดด้านซ้ายออก, การจัดเรียงข้อมูล: จากซ้ายไปขวา, จากบนลงล่าง///////////////////////////////////////////////////////////////////////////////////conststructtypFNT_GB16 codeGB_16[]= //ตารางข้อมูล{/*---------------------------------------------------------------------------------;ไฟล์ต้นฉบับ/ข้อความ :Xu;ความกว้าง×ความสูง (พิกเซล):16×16--------------------------------------------------------------------------------*/"Xu",0x10,0x80,0x10,0x80,0x21 0x40,0x42,0x20,0x94,0x10,0x1B,0xEC,0x20,0x80,0x60,0x80,0xAF,0xF8,0x20,0x80,0x22,0xA0,0x24,0x90,0x2A,0x88,0x21,0x00,0x00,0x00,0x00,0x00,
 
This structure is very simple: one is the internal code, and one is the dot matrix sequence. The previous dot matrix library was placed in the order of the internal code, and no internal code index was needed. If only some Chinese characters were placed, the internal code index was needed. (The Chinese character "Xu" in the front is to find the dot matrix sequence of the word when outputting "Xu". This dot matrix sequence is written by myself. When displayed with 1602, because the chip has an English dot matrix sequence in the memory, there is no need to write it.) Generally, two bytes are enough for the internal code. If you use one more byte, you just add a trailing 0. In this way, the Chinese character string can be directly placed in the Chinese character internal code;


codeGB_16[k].Index[0] codeGB_16[k] บ่งชี้ว่ามีอาร์เรย์ของโครงสร้าง typFNT_GB16 ที่ชื่อ codeGB_16 codeGB_16[k] เป็นสมาชิก k+1 ของอาร์เรย์ index เป็นสมาชิกของโครงสร้าง typFNT_GB16 ดังนั้นจึงสามารถอ้างอิงได้ด้วย codeGB_16[k].Index ในขณะเดียวกัน index ก็เป็นอาร์เรย์ ดังนั้นจึงสามารถ indexed ได้[0] ถ้า((codeGB_16[k].Index[0]==c[0])&&(codeGB_16[k].Index[1]==c[1])) && เป็นตัวดำเนินการ AND ทางตรรกะ ซึ่งหมายความว่าค่าทั้งสองด้านของสัญลักษณ์ && เป็นจริง เฉพาะค่าของ && เท่านั้นที่เป็นจริง นั่นคือ true && true = true ประโยคนี้หมายความว่า: codeGB_16[k].Index[0]==c[0] และ codeGB_16[k].Index[1]==c[1] ถูกสร้างขึ้นพร้อมกัน หากคำสั่งต่อไปนี้ถูกดำเนินการ codeGB_16[] คืออาร์เรย์โครงสร้าง และ codeGB_16[k].Index[0] หมายถึงค่าองค์ประกอบที่ 0 ของสมาชิกดัชนีของโครงสร้างที่ K ของอาร์เรย์โครงสร้าง  
      13. จอ LCD ขนาด 12864:

จุดแสดงผลแต่ละจุดจะสอดคล้องกับเลขฐานสอง โดย 1 หมายถึงเปิด และ 0 หมายถึงปิด หน่วยความจำ RAM ที่เก็บข้อมูลเมทริกซ์จุดเหล่านี้เรียกว่าหน่วยความจำข้อมูลแสดงผล การแสดงผลกราฟิกหรือตัวอักษรจีนใดๆ ก็คือการเขียนข้อมูลเมทริกซ์จุดที่เกี่ยวข้องลงในหน่วยความจำที่เกี่ยวข้องนั่นเอง  
ตัวนับแอดเดรส (AC) ของหน่วยความจำกราฟิก (RAM) จะเพิ่มแอดเดรสแนวนอน (แกน X) ขึ้นทีละหนึ่งโดยอัตโนมัติเท่านั้น เมื่อแอดเดรสแนวนอนเท่ากับ 0FH มันจะถูกรีเซ็ตเป็น 00H อย่างไรก็ตาม มันจะไม่เพิ่มแอดเดรสแนวตั้งโดยอัตโนมัติพร้อมกับตัวทด ดังนั้น เมื่อมีการเขียนข้อมูลหลายชุดอย่างต่อเนื่อง โปรแกรมจำเป็นต้องพิจารณาว่าจำเป็นต้องรีเซ็ตแอดเดรสแนวตั้งหรือไม่


14. หน่วยความจำกราฟิก (GDRAM)

หน่วยความจำ RAM สำหรับแสดงผลภาพวาดมีพื้นที่ 128×8 ไบต์ เมื่อทำการเปลี่ยนแปลงข้อมูลใน RAM สำหรับวาดภาพ ให้เขียนค่าพิกัดแนวนอนและแนวตั้งอย่างต่อเนื่องก่อน จากนั้นจึงเขียนข้อมูลสองไบต์ลงใน RAM สำหรับวาดภาพ ตัวนับแอดเดรส (AC) จะเพิ่มแอดเดรสแนวนอน (แอดเดรส X) ขึ้นหนึ่งโดยอัตโนมัติ เมื่อแอดเดรสแนวนอนเป็น 0XFH จะถูกรีเซ็ตเป็น 00H ส่วนแอดเดรสแนวตั้งจะไม่เพิ่มขึ้นหนึ่งโดยอัตโนมัติ ต้องปิดจอแสดงผลภาพวาดในระหว่างการเขียนข้อมูลลงใน RAM สำหรับวาดภาพ

 
[cpp] ดูสำเนาธรรมดา//แสดงอักขระภาษาจีน voiddispString (uchar X, Y,uchar *msg)//แถวใดคือ X และคอลัมน์ใดคือ Y msg คืออักขระภาษาจีน {if(X==0) write_data(*msg++); //แสดงอักขระภาษาจีน }}////////////////////////////////// //////////////// ////////////////// แสดงรูปภาพ voiddisppicture(uchar code *adder){ uint i,j;//*******แสดงการตั้งค่าเนื้อหาครึ่งบนของหน้าจอ for(i=0;i<32;i++)//ที่อยู่คอลัมน์ 32 ในครึ่งบนของหน้าจอ { write_com(0x80 + i);//ตั้งค่าที่อยู่แนวตั้ง VERTICALADD write_com(0x80);//ตั้งค่าที่อยู่แนวนอน HORIZONTAL ADD for(j=0;j<16;j++) { write_data(*adder); adder++; }}//************แสดงการตั้งค่าเนื้อหาในครึ่งล่างของหน้าจอ for(i=0;i<32;i++) //{ write_com(0x80 + i); //ตั้งค่าที่อยู่แนวตั้ง VERTICALADD write_com(0x88); //ตั้งค่าที่อยู่แนวนอน HORIZONTAL ADDfor(j=0;j<16;j++){write_data(*adder);adder++;} }}
 
ในภาษาซี พื้นที่จัดเก็บจะถูกจัดสรรโดยอัตโนมัติสำหรับตัวแปรที่กำหนดไว้ และที่อยู่ของตัวแปรนั้นก็คือชื่อของตัวแปรนั้นเอง โดยใช้ชื่อนี้ เราสามารถดึงข้อมูลจากหน่วยความจำและรับข้อมูลใหม่ผ่านการคำนวณได้ อย่างไรก็ตาม ในภาษาแอสเซมบลี โปรแกรมเมอร์ต้องกำหนดพื้นที่จัดเก็บและส่งข้อมูลไปยังตัวสะสมเพื่อทำการคำนวณ ทุกขั้นตอนต้องอาศัยการดำเนินการของโปรแกรมเมอร์ แต่ในภาษาซี กระบวนการเหล่านี้จะดำเนินการโดยคอมไพเลอร์




15. คำถามและคำตอบที่เป็นประโยชน์บางส่วน

①. การจัดสรรหน่วยความจำของตัวแปรในภาษา C สำหรับไมโครคอนโทรลเลอร์นั้นดำเนินการอย่างไร? เป็นไปได้หรือไม่ที่คอมไพเลอร์จะเพิ่มโค้ดการจัดสรรและการรีไซเคิลอย่างชาญฉลาดในระหว่างกระบวนการคอมไพล์? ประเด็นสำคัญคือ โปรแกรมที่ฉันสร้างขึ้น ฉันจะมั่นใจได้อย่างไรว่าไม่มีข้อผิดพลาดหน่วยความจำล้น? หากฉันกำลังดำเนินการแบบเรียกซ้ำ การคำนวณความต้องการหน่วยความจำด้วยตนเองจะทำได้ยาก




②. ภาษา C สำหรับไมโครคอนโทรลเลอร์จะมีข้อจำกัดในการกำหนดตัวแปรหรือไม่? ตัวอย่างเช่น การดำเนินการคูณและหารข้อมูลทศนิยมเขียนด้วยภาษาแอสเซมบลี ซึ่งโค้ดค่อนข้างซับซ้อน หากเขียนโดยตรงด้วยภาษา C จะง่ายเกินไปหรือไม่?




③. ในไฟล์ hex ที่สร้างขึ้นโดยภาษา C ของไมโครคอนโทรลเลอร์ การจัดสรรแอดเดรสของ ROM คำสั่งและข้อมูลถูกกำหนดโดยอัตโนมัติโดยคอมไพเลอร์หรือไม่ ผู้ใช้สามารถกำหนดเองได้หรือไม่




คำตอบที่ 1: โปรแกรมไมโครคอนโทรลเลอร์ที่เขียนด้วยภาษา C จะถูกคอมไพล์โดยโปรแกรมหนึ่งก่อน (ดูเหมือนจะเป็น c51.exe) หลังจากคอมไพล์เสร็จแล้ว ขนาดพื้นที่จัดเก็บของตัวแปรจะถูกจัดสรร แต่ที่อยู่เฉพาะยังไม่ได้ถูกจัดสรร (ที่อยู่ยังไม่แน่นอน) จากนั้น โปรแกรมอีกโปรแกรมหนึ่ง (ดูเหมือนจะเป็น a51.exe) จะเชื่อมต่อ หลังจากเชื่อมต่อแล้ว ที่อยู่เฉพาะก็จะถูกกำหนดขึ้น  
หากมีตัวแปรมากเกินไป คอมไพเลอร์จะแจ้งเตือนว่าส่วนข้อมูลมีขนาดใหญ่เกินไป เพื่อให้แน่ใจว่าไม่มีข้อผิดพลาดหน่วยความจำล้น สิ่งสำคัญคือต้องพิจารณาว่าสแต็กเกิดการล้นหรือไม่ ซึ่งขึ้นอยู่กับประสบการณ์




โดยทั่วไปแล้ว ภาษา C ของไมโครคอนโทรลเลอร์จะห้ามการเรียกซ้ำ และมักหลีกเลี่ยงการดำเนินการแบบเรียกซ้ำ เนื่องจากไมโครคอนโทรลเลอร์ไม่ใช่พีซี การดำเนินการแบบเรียกซ้ำจะส่งผลต่อความเร็ว หากต้องการใช้การเรียกซ้ำ ควรใช้ชิป DSP จะเหมาะสมกว่า กล่าวโดยสรุป คุณต้องสามารถเลือกชิปที่เหมาะสมได้




คำตอบที่ 2: ขนาดของตัวแปร (จำนวนหลัก) โดยทั่วไปจะเท่ากับจำนวนหลักในตัวสะสมของชิป ตัวอย่างเช่น 51 มักใช้ 8 บิต เพราะเป็นไมโครคอนโทรลเลอร์ 8 บิต

ไมโครคอนโทรลเลอร์สามารถกำหนดตัวแปรบิตได้ แต่ไม่สามารถกำหนดอาร์เรย์บิตได้ การเขียนด้วยภาษาซีดูเหมือนจะง่าย แต่ในความเป็นจริงแล้วกลับสร้างโค้ดจำนวนมากที่สุด ไมโครคอนโทรลเลอร์ที่ใช้ควบคุมแทบจะไม่ใช้การคำนวณเลขทศนิยม ซึ่งไม่เพียงแต่ช้า แต่ยังยุ่งยากและเปลืองพื้นที่อีกด้วย หากเป็นชิป DSP จะดีกว่ามากหากมีโครงสร้างฮาร์ดแวร์ที่เหมาะสม




คำตอบที่ 3: โดยทั่วไปแล้ว จะมีการจัดสรรโดยอัตโนมัติ สามารถเขียนโปรแกรมได้โดยใช้ภาษา C และภาษาแอสเซมบลีผสมกัน หรือสามารถประกอบแบบออนไลน์โดยใช้ Keil C การแลกเปลี่ยนข้อมูลระหว่างชิปกับภายนอกจะทำผ่านพอร์ต



หมายเลขโทรศัพท์ของบริษัท: +86-0755-83044319
โทรสาร: +86-0755-83975897
อีเมล์: 1615456225@qq.com
QQ: 3518641314 ผู้จัดการหลี่

QQ: 332496225 ผู้จัดการชิว

ที่อยู่: ห้อง 809 อาคาร C อาคารเทคโนโลยีจ้านเทา เลขที่ 1079 ถนนหมินจือ เขตหลงหัวใหม่ เมืองเซินเจิ้น

whatsapp

สายด่วนบริการ

tel: +86 755 83044319

WhatsApp

Whatsapp:+8618073002950