MCU का मतलब माइक्रोकंट्रोलर यूनिट है। चीनी भाषा में माइक्रोकंट्रोलर का संक्षिप्त रूप, जिसे आमतौर पर सिंगल-चिप माइक्रो कंप्यूटर के रूप में जाना जाता है, CPU की आवृत्ति और विशिष्टताओं को कम करके बनाया जाता है। इसमें मेमोरी, काउंटर, USB, A/D रूपांतरण, UART, PLC, DMA और यहां तक कि LCD ड्राइवर सर्किट जैसे परिधीय इंटरफेस को एक ही चिप पर एकीकृत करके चिप-स्तरीय कंप्यूटर बनाया जाता है। यह मोबाइल फोन, पीसी परिधीय उपकरण, रिमोट कंट्रोल, ऑटोमोटिव इलेक्ट्रॉनिक्स, औद्योगिक स्टेपर मोटर और रोबोट आर्म नियंत्रण जैसे विभिन्न अनुप्रयोगों के लिए नियंत्रण के विभिन्न संयोजनों को निष्पादित कर सकता है। MCU को चित्र में देखा जा सकता है।
एक
माइक्रोकंट्रोलर के विकास का संक्षिप्त इतिहास
The history of microcontrollers is not long, but it has developed very rapidly. Its production and development are generally synchronized with the production and development of microprocessors (CPUs). Since Intel Corporation of the United States first launched a 4-bit microprocessor in 1971, its development so far can be roughly divided into five stages. The following is an introduction to the development of microcontrollers from Intel Corporation.
1971 ~ 1976
The initial stage of the development of microcontrollers. In November 1971, Intel first designed the Intel 4004, a 4-bit microprocessor with an integration of 2,000 transistors/chip, equipped with RAM, ROM and shift register, forming the first MCS-4 microprocessor. Then it launched the 8-bit microprocessor Intel 8008, and other 8-bit microprocessors launched by other companies.
1976 ~ 1980
कम प्रदर्शन वाला माइक्रोकंट्रोलर चरण। इंटेल द्वारा 1976 में लॉन्च की गई MCS-48 श्रृंखला इसका प्रतिनिधित्व करती है। इसमें एक मोनोलिथिक संरचना का उपयोग किया गया है जो एक सेमीकंडक्टर चिप पर 8-बिट CPU, 8-बिट समानांतर I/O इंटरफ़ेस, 8-बिट टाइमर/काउंटर, RAM और ROM को एकीकृत करती है। हालांकि इसकी एड्रेसिंग रेंज सीमित है (4 KB से अधिक नहीं), इसमें सीरियल I/O नहीं है, RAM और ROM की क्षमता कम है, और इंटरप्ट सिस्टम अपेक्षाकृत सरल है, फिर भी इसके कार्य सामान्य औद्योगिक नियंत्रण और बुद्धिमान उपकरणों और मीटरों की आवश्यकताओं को पूरा कर सकते हैं।
1980 ~ 1983
उच्च-प्रदर्शन माइक्रोकंट्रोलर चरण। इस चरण में लॉन्च किए गए उच्च-प्रदर्शन 8-बिट माइक्रोकंट्रोलर में आमतौर पर सीरियल पोर्ट, बहु-स्तरीय इंटरप्ट प्रोसेसिंग सिस्टम और कई 16-बिट टाइमर/काउंटर होते हैं। ऑन-चिप रैम और रोम की क्षमता बढ़ाई जाती है, और एड्रेसिंग रेंज 64 केबी तक पहुंच सकती है। कुछ चिप्स में ए/डी रूपांतरण इंटरफ़ेस भी होता है।
1983~1980 के दशक के उत्तरार्ध
16-बिट माइक्रोकंट्रोलर चरण। 1983 में, इंटेल ने उच्च-प्रदर्शन वाले 16-बिट माइक्रोकंट्रोलर MCS-96 श्रृंखला को लॉन्च किया। नवीनतम विनिर्माण तकनीक को अपनाने के कारण, चिप एकीकरण स्तर 120,000 ट्रांजिस्टर/चिप तक है।
1990s
एकीकरण, कार्यक्षमता, गति, विश्वसनीयता और अनुप्रयोग क्षेत्रों के सभी पहलुओं में माइक्रोकंट्रोलर उच्च स्तर पर विकसित हो रहे हैं।
दो
सिंगल चिप माइक्रो कंप्यूटर का वर्गीकरण और अनुप्रयोग
MCUs can be divided into two types according to their memory types: those without on-chip ROM and those with on-chip ROM. For chips without on-chip ROM, an external EPROM must be connected before they can be used (typically 8031); chips with on-chip ROM are divided into on-chip EPROM type (typical chip is 87C51), MASK on-chip mask ROM type (typical chip is 8051), on-chip Flash type (typical chip is 89C51) and other types.
उद्देश्य के अनुसार, इसे सामान्य-उद्देश्य और विशेष-उद्देश्य प्रकारों में विभाजित किया जा सकता है; डेटा बस की चौड़ाई और एक बार में संसाधित किए जा सकने वाले डेटा बाइट्स की लंबाई के अनुसार, इसे 8, 16 और 32-बिट एमसीयू में विभाजित किया जा सकता है।
वर्तमान में, घरेलू एमसीयू अनुप्रयोग का सबसे व्यापक बाजार उपभोक्ता इलेक्ट्रॉनिक्स क्षेत्र में है, इसके बाद औद्योगिक क्षेत्र और ऑटोमोटिव इलेक्ट्रॉनिक्स बाजार का स्थान आता है। उपभोक्ता इलेक्ट्रॉनिक्स में घरेलू उपकरण, टेलीविजन, गेम कंसोल, ऑडियो और वीडियो सिस्टम आदि शामिल हैं। औद्योगिक क्षेत्रों में स्मार्ट होम, स्वचालन, चिकित्सा अनुप्रयोग और नई ऊर्जा उत्पादन एवं वितरण शामिल हैं। ऑटोमोटिव क्षेत्र में ऑटोमोटिव पावरट्रेन और सुरक्षा नियंत्रण प्रणाली शामिल हैं।
तीन
माइक्रोकंट्रोलर के बुनियादी कार्य
अधिकांश एमसीयू के लिए, निम्नलिखित कार्य सबसे सामान्य और बुनियादी हैं। विभिन्न एमसीयू के लिए, इन्हें वर्णित करने का तरीका अलग हो सकता है, लेकिन मूल रूप से ये समान ही होते हैं:
1. टाइमर: हालांकि टाइमर कई प्रकार के होते हैं, इन्हें दो श्रेणियों में बांटा जा सकता है: एक प्रकार का टाइमर निश्चित समय अंतराल वाला होता है, यानी इसका समय सिस्टम द्वारा निर्धारित किया जाता है और उपयोगकर्ता प्रोग्राम द्वारा नियंत्रित नहीं किया जा सकता है। सिस्टम उपयोगकर्ता प्रोग्राम को चुनने के लिए कुछ निश्चित समय अंतराल प्रदान करता है, जैसे 32Hz, 16Hz, 8Hz आदि। इस प्रकार का टाइमर 4-बिट MCU में अधिक सामान्य है, इसलिए इसका उपयोग क्लॉक, टाइमिंग और अन्य संबंधित कार्यों को लागू करने के लिए किया जा सकता है।
दूसरा प्रकार प्रोग्रामेबल टाइमर है। जैसा कि नाम से पता चलता है, इस प्रकार के टाइमर का समय उपयोगकर्ता के प्रोग्राम द्वारा नियंत्रित किया जा सकता है। नियंत्रण विधियों में शामिल हैं: क्लॉक स्रोत का चयन, आवृत्ति विभाजन (प्रीस्केल) का चयन और पूर्व निर्धारित संख्या का निर्धारण। कुछ MCU में ये तीनों सुविधाएँ एक साथ होती हैं, जबकि अन्य में इनमें से एक या दो ही होती हैं। इस प्रकार के टाइमर का अनुप्रयोग बहुत लचीला है, और इसका वास्तविक उपयोग भी लगातार बदलता रहता है। सबसे आम अनुप्रयोगों में से एक है PWM आउटपुट को लागू करने के लिए इसका उपयोग करना।
क्योंकि क्लॉक सोर्स को स्वतंत्र रूप से चुना जा सकता है, इसलिए इस प्रकार के टाइमर को आमतौर पर इवेंट काउंटर के साथ जोड़ा जाता है।
2. IO ports: Any MCU has a certain number of IO ports. Without IO ports, the MCU loses the channel to communicate with the outside world. According to the configurability of the IO port, it can be divided into the following types:
Pure input or pure output port: This type of IO port is determined by the MCU hardware design. It can only be input or output, and software cannot be used for real-time settings.
Directly read and write IO ports: For example, the IO port of MCS-51 belongs to this type of IO port. When the read IO port instruction is executed, it is an input port; when the write IO port instruction is executed, it is automatically an output port.
इनपुट और आउटपुट दिशा निर्धारित करने के लिए प्रोग्रामिंग: इस प्रकार के IO पोर्ट का इनपुट या आउटपुट वास्तविक आवश्यकताओं के अनुसार प्रोग्राम द्वारा निर्धारित किया जाता है। इसका अनुप्रयोग अपेक्षाकृत लचीला है और इससे कुछ बस-स्तरीय अनुप्रयोग किए जा सकते हैं, जैसे कि I2C बस, विभिन्न LCD, LED ड्राइवर नियंत्रण बसें आदि।
IO पोर्ट के उपयोग के लिए, एक महत्वपूर्ण बात जिसे ध्यान में रखना आवश्यक है वह यह है: इनपुट पोर्ट के लिए, एक स्पष्ट लेवल सिग्नल होना चाहिए ताकि यह सुनिश्चित हो सके कि यह फ्लोट न करे (यह पुल-अप या पुल-डाउन रेसिस्टर लगाकर प्राप्त किया जा सकता है); आउटपुट पोर्ट के लिए, आउटपुट स्टेटस लेवल को इसके बाहरी कनेक्शन की स्थितियों को ध्यान में रखते हुए निर्धारित किया जाना चाहिए, और यह सुनिश्चित किया जाना चाहिए कि स्टैंडबाय या स्थिर अवस्था में कोई करंट पुलिंग या सिंकिंग न हो।
3. बाह्य अवरोध: बाह्य अवरोध भी अधिकांश MCU का एक मूलभूत कार्य है। इसका उपयोग आमतौर पर सिग्नलों को वास्तविक समय में ट्रिगर करने, डेटा सैंपलिंग और स्थिति का पता लगाने के लिए किया जाता है। अवरोध विधियों में राइजिंग एज ट्रिगर, फॉलिंग एज ट्रिगर और लेवल ट्रिगर शामिल हैं। बाह्य अवरोध आमतौर पर इनपुट पोर्ट के माध्यम से कार्यान्वित किए जाते हैं। यदि यह एक IO पोर्ट है, तो इसका अवरोध फ़ंक्शन केवल तभी चालू होगा जब इसे इनपुट पर सेट किया जाएगा; यदि यह एक आउटपुट पोर्ट है, तो बाह्य अवरोध फ़ंक्शन स्वचालित रूप से बंद हो जाएगा (ATMEL की ATiny श्रृंखला में कुछ अपवाद हैं, जो आउटपुट पोर्ट होने पर भी अवरोध फ़ंक्शन को ट्रिगर कर सकते हैं)। बाह्य अवरोधों के अनुप्रयोग निम्नलिखित हैं:
बाह्य ट्रिगर संकेतों का पता लगाना: एक तो वास्तविक समय की आवश्यकताओं पर आधारित है, जैसे कि थायरिस्टर्स का नियंत्रण, अचानक संकेतों का पता लगाना आदि, जबकि दूसरा बिजली बचाने की आवश्यकता है।
सिग्नल आवृत्ति का मापन: यह सुनिश्चित करने के लिए कि सिग्नल छूट न जाए, बाहरी अवरोध सबसे अच्छा विकल्प है।
डेटा का डिकोडिंग: रिमोट कंट्रोल अनुप्रयोगों के क्षेत्र में, डिजाइन की लागत को कम करने के लिए, विभिन्न एन्कोडेड डेटा को डिकोड करने के लिए सॉफ्टवेयर का उपयोग करना अक्सर आवश्यक होता है, जैसे कि मैनचेस्टर और पीडब्ल्यूएम एन्कोडिंग का डिकोडिंग।
Key detection and system wake-up: For MCUs that enter the sleep state, they generally need to be awakened through external interrupts. The most basic form is a key press, which produces level changes through the action of the key.
4. Communication interface: The communication interface provided by MCU generally includes SPI interface, UART, I2C interface, etc., which are described as follows:
SPI इंटरफ़ेस: यह इंटरफ़ेस अधिकांश MCU द्वारा प्रदान किया जाने वाला सबसे बुनियादी संचार माध्यम है। इसका डेटा ट्रांसमिशन सिंक्रोनस क्लॉक द्वारा नियंत्रित होता है। इसमें शामिल सिग्नल हैं: SDI (सीरियल डेटा इनपुट), SDO (सीरियल डेटा आउटपुट), SCLK (सीरियल क्लॉक) और रेडी सिग्नल; कुछ मामलों में, रेडी सिग्नल मौजूद नहीं होता है; यह इंटरफ़ेस मास्टर मोड या स्लेव मोड में काम कर सकता है। सरल शब्दों में, यह इस बात पर निर्भर करता है कि क्लॉक सिग्नल कौन प्रदान करता है। क्लॉक सिग्नल प्रदान करने वाला पक्ष मास्टर होता है, और दूसरा पक्ष स्लेव होता है।
UART (यूनिवर्सल एसिंक्रोनस रिसीव ट्रांसमिट): यह सबसे बुनियादी एसिंक्रोनस ट्रांसमिशन इंटरफ़ेस है। इसमें केवल दो सिग्नल लाइनें होती हैं, Rx और Tx। इसका मूल डेटा प्रारूप है: स्टार्ट बिट + डेटा बिट (7-बिट/8-बिट) + पैरिटी बिट (सम, विषम या शून्य) + स्टॉप बिट (1~2 बिट)। डेटा के एक बिट द्वारा ग्रहण किए गए समय को बॉड रेट कहा जाता है।
अधिकांश एमसीयू के लिए, डेटा बिट्स की लंबाई, डेटा चेक मोड (विषम चेक, सम चेक या कोई चेक नहीं), स्टॉप बिट की लंबाई और बॉड दर को प्रोग्रामिंग के माध्यम से लचीले ढंग से सेट किया जा सकता है। इस प्रकार के इंटरफ़ेस का सबसे अधिक उपयोग किया जाने वाला तरीका पीसी के सीरियल पोर्ट के साथ संचार करना है।
I2C इंटरफ़ेस: I2C फिलिप्स द्वारा विकसित एक डेटा ट्रांसमिशन प्रोटोकॉल है। इसे SDAT (सीरियल डेटा इनपुट और आउटपुट) और SCLK (सीरियल क्लॉक) नामक दो संकेतों का उपयोग करके कार्यान्वित किया जाता है। इसका सबसे बड़ा लाभ यह है कि इस बस से कई डिवाइस जोड़े जा सकते हैं और उन्हें पतों के माध्यम से पहचाना और एक्सेस किया जा सकता है। I2C बस का एक और बड़ा लाभ यह है कि IO पोर्ट के माध्यम से सॉफ़्टवेयर का उपयोग करके इसे कार्यान्वित करना बहुत सुविधाजनक है। इसकी डेटा ट्रांसमिशन दर पूरी तरह से SCLK द्वारा नियंत्रित होती है, जो तेज़ या धीमी हो सकती है, जबकि UART इंटरफ़ेस में दर संबंधी सख्त आवश्यकताएं होती हैं।
5. Watchdog (watchdog timer): Watchdog is also a basic configuration of most MCUs (some 4-bit MCUs may not have this function). The Watchdog of most MCUs can only allow the program to reset it but not turn it off (some are set when the program is burned in, such as Microchip PIC series MCU), and some MCUs use a specific method to decide whether to turn it on, such as Samsung's KS57 series. As long as the program accesses the Watchdog register, it is automatically turned on and cannot be turned off again. Generally speaking, the reset time of watchdog can be set programmably. The most basic application of Watchdog is to provide a self-recovery capability for MCUs that crash due to unexpected failures.
चार
वैश्विक स्तर पर मुख्यधारा के माइक्रोकंट्रोलर निर्माता
(किसी विशेष क्रम में सूचीबद्ध नहीं, मुख्य निर्माताओं के अनुसार व्यवस्थित। यदि कुछ छूट गया हो, तो कृपया टिप्पणी अनुभाग में जोड़ें।)
यूरोप और अमेरिका
1. फ्रीस्केल+एनएक्सपी (Freescale+NXP): नीदरलैंड्स की यह कंपनी मुख्य रूप से 16-बिट और 32-बिट एमसीयू प्रदान करती है। इसके अनुप्रयोग हैं: ऑटोमोटिव इलेक्ट्रॉनिक्स, एलईडी और सामान्य प्रकाश व्यवस्था, स्वास्थ्य सेवा, मल्टीमीडिया कन्वर्जेंस, घरेलू उपकरण और बिजली उपकरण, भवन स्वचालन प्रौद्योगिकी, मोटर नियंत्रण, बिजली आपूर्ति और बिजली कनवर्टर, ऊर्जा और स्मार्ट ग्रिड, स्वचालन, कंप्यूटर और संचार अवसंरचना।
2. माइक्रोचिप+एटमेल (माइक्रोचिप टेक्नोलॉजी + एटमेल): संयुक्त राज्य अमेरिका की यह कंपनी मुख्य रूप से 16-बिट और 32-बिट एमसीयू प्रदान करती है। इसके अनुप्रयोग हैं: ऑटोमोटिव इलेक्ट्रॉनिक्स, औद्योगिक उपयोग, मोटर नियंत्रण, ऑटोमोबाइल, बिल्डिंग ऑटोमेशन, घरेलू उपकरण, होम एंटरटेनमेंट, औद्योगिक ऑटोमेशन, प्रकाश व्यवस्था, इंटरनेट ऑफ थिंग्स, स्मार्ट ऊर्जा, मोबाइल इलेक्ट्रॉनिक उपकरण, कंप्यूटर पेरिफेरल्स।
3. साइप्रस+स्पैन्शन (साइप्रस + स्पैन्शन सेमीकंडक्टर): संयुक्त राज्य अमेरिका की यह कंपनी मुख्य रूप से 8-बिट, 16-बिट और 32-बिट एमसीयू प्रदान करती है। इसके अनुप्रयोग हैं: ऑटोमोटिव इलेक्ट्रॉनिक्स, घरेलू उपकरण, चिकित्सा, उपभोक्ता इलेक्ट्रॉनिक्स, संचार और दूरसंचार, उद्योग, वायरलेस।
4. एडीआई (एनालॉग डिवाइसेस): संयुक्त राज्य अमेरिका, मुख्य रूप से 8-बिट, 16-बिट और 32-बिट एमसीयू प्रदान करता है। अनुप्रयोग: एयरोस्पेस और रक्षा, ऑटोमोटिव अनुप्रयोग, भवन प्रौद्योगिकी, संचार, उपभोक्ता इलेक्ट्रॉनिक्स, ऊर्जा, स्वास्थ्य सेवा, उपकरण और माप, मोटर, औद्योगिक स्वचालन, सुरक्षा।
5. इन्फिनियन: जर्मनी, मुख्य रूप से 16-बिट और 32-बिट एमसीयू प्रदान करता है। अनुप्रयोग: ऑटोमोटिव इलेक्ट्रॉनिक्स, उपभोक्ता इलेक्ट्रॉनिक्स, इंजीनियरिंग, वाणिज्यिक और कृषि वाहन, डेटा प्रोसेसिंग, इलेक्ट्रिक परिवहन, औद्योगिक अनुप्रयोग, चिकित्सा उपकरण, मोबाइल उपकरण, मोटर नियंत्रण और ड्राइव, बिजली आपूर्ति, मोटरसाइकिल, इलेक्ट्रिक साइकिल और छोटे इलेक्ट्रिक वाहन, स्मार्ट ग्रिड, प्रकाश व्यवस्था, सौर प्रणाली समाधान, पवन ऊर्जा प्रणाली समाधान।
6. एसटी माइक्रोइलेक्ट्रॉनिक्स: इटली/फ्रांस, मुख्य रूप से 32-बिट एमसीयू प्रदान करता है। अनुप्रयोग: एलईडी और सामान्य प्रकाश व्यवस्था, परिवहन, स्वास्थ्य सेवा, मल्टीमीडिया अभिसरण, घरेलू उपकरण और बिजली उपकरण, भवन स्वचालन प्रौद्योगिकी मोटर नियंत्रण, बिजली आपूर्ति और बिजली कनवर्टर, ऊर्जा और स्मार्ट ग्रिड, स्वचालन, कंप्यूटर और संचार अवसंरचना।
7. Qualcomm: The United States, mainly provides 16-bit and 32-bit MCUs. Applications: Smartphones, tablets, wireless modems.
8. Texas Instruments: United States, mainly provides 16-bit and 32-bit MCUs. Application scope: automotive electronics, consumer electronics, medical equipment, mobile devices, communications.
9. Maxim (Maxim): United States, mainly provides 32-bit MCU. Application scope: automotive electronics, consumer electronics, industrial applications, security.
जापान और दक्षिण कोरिया
1. रेनेसास: जापान, मुख्य रूप से 16-बिट और 32-बिट एमसीयू प्रदान करता है। अनुप्रयोग क्षेत्र: कंप्यूटर और परिधीय उपकरण, उपभोक्ता इलेक्ट्रॉनिक्स, स्वास्थ्य और चिकित्सा इलेक्ट्रॉनिक्स, ऑटोमोटिव इलेक्ट्रॉनिक्स, उद्योग और संचार।
2. Toshiba: Japan, mainly provides 16-bit and 32-bit MCUs. Application scope: automotive electronics, industrial use, motor control, wireless communications, mobile phones, computers and peripheral equipment, imaging and audio and video, consumer (home appliances), LED lighting, security, power management, entertainment equipment.
3. फुजित्सु: जापान, मुख्य रूप से 32-बिट एमसीयू प्रदान करता है। अनुप्रयोग क्षेत्र: ऑटोमोबाइल, चिकित्सा, मशीनरी, घरेलू उपकरण।
4. सैमसंग इलेक्ट्रॉनिक्स: दक्षिण कोरिया की यह कंपनी मुख्य रूप से 16-बिट और 32-बिट एमसीयू प्रदान करती है। इसके अनुप्रयोग हैं: ऑटोमोटिव इलेक्ट्रॉनिक्स, औद्योगिक उपयोग, मोटर नियंत्रण, ऑटोमोबाइल, बिल्डिंग ऑटोमेशन, घरेलू उपकरण, होम एंटरटेनमेंट, औद्योगिक ऑटोमेशन, प्रकाश व्यवस्था, इंटरनेट ऑफ थिंग्स, स्मार्ट ऊर्जा, मोबाइल इलेक्ट्रॉनिक उपकरण, कंप्यूटर पेरिफेरल्स।
चीन क्षेत्र
मुख्य भूमि चीन
1. सिग्मा माइक्रोइलेक्ट्रॉनिक्स: मुख्य रूप से 32-बिट एमसीयू प्रदान करता है, अनुप्रयोग क्षेत्र: दूरसंचार, विनिर्माण, ऊर्जा, परिवहन, बिजली, आदि।
2. झूहाई ऑर्बिट: मुख्य रूप से 32-बिट एमसीयू प्रदान करता है, अनुप्रयोग क्षेत्र: एयरोस्पेस: उपग्रह स्टेशन जहाज, विमान; उच्च स्तरीय औद्योगिक नियंत्रण: एम्बेडेड कंप्यूटर; जहाज नियंत्रण, औद्योगिक नियंत्रण, विद्युत उपकरण, पर्यावरण निगरानी।
3. गीगाडिवाइस इनोवेशन: मुख्य रूप से 32-बिट एमसीयू प्रदान करता है, अनुप्रयोग क्षेत्र: औद्योगिक स्वचालन, मानव-मशीन इंटरफ़ेस, मोटर नियंत्रण, सुरक्षा निगरानी, स्मार्ट होम, इंटरनेट ऑफ थिंग्स।
4. Shengsi Microelectronics: Mainly provides 8-bit and 32-bit MCUs. Application scope: small household appliances, consumer electronics, remote controls, mice, lithium batteries, digital products, automotive electronics, medical instruments and measurement, toys, industrial control, smart home and security and other fields.
5. चिपसी टेक्नोलॉजी: मुख्य रूप से 16- और 32-बिट एमसीयू प्रदान करती है। अनुप्रयोग क्षेत्र: उपकरण, इंटरनेट ऑफ थिंग्स, उपभोक्ता इलेक्ट्रॉनिक्स, घरेलू उपकरण और ऑटोमोटिव इलेक्ट्रॉनिक्स।
6. लियानहुआ इंटीग्रेटेड सर्किट: मुख्य रूप से 8-बिट और 16-बिट एमसीयू प्रदान करता है। अनुप्रयोग क्षेत्र: उपभोक्ता इलेक्ट्रॉनिक्स, घरेलू उपकरण, औद्योगिक नियंत्रण, संचार उपकरण, ऑटोमोटिव इलेक्ट्रॉनिक्स और कंप्यूटर।
7. झूहाई जियानरॉन्ग: मुख्य रूप से 8-बिट एमसीयू प्रदान करता है, अनुप्रयोग क्षेत्र: घरेलू उपकरण, मोबाइल बिजली आपूर्ति।
8. Actions Technology: Mainly provides 8-bit to 32-bit MCUs, application range: tablet computers, smart home, multimedia, Bluetooth, wifi audio.
9. ऐस्को माइक्रोइलेक्ट्रॉनिक्स: मुख्य रूप से 8-बिट और 16-बिट एमसीयू प्रदान करता है। अनुप्रयोग क्षेत्र: उपभोक्ता चिप्स, संचार चिप्स, सूचना चिप्स और घरेलू उपकरण।
10. हुआक्सिन माइक्रोइलेक्ट्रॉनिक्स: मुख्य रूप से 8-बिट और 4-बिट एमसीयू प्रदान करता है। अनुप्रयोग: सैटेलाइट रिसीवर, मोबाइल फोन चार्जर, परपेचुअल कैलेंडर और ऑल-इन-वन रिमोट कंट्रोल।
11. शंघाई बेलिंग (हुआडा सेमीकंडक्टर होल्डिंग्स): मुख्य रूप से 8-बिट, 16-बिट और 32-बिट एमसीयू प्रदान करता है। अनुप्रयोग: कंप्यूटर पेरिफेरल्स, एचडीटीवी, पावर मैनेजमेंट, छोटे उपकरण और डिजिटल उपकरण।
12. हायर इंटीग्रेटेड सर्किट्स: मुख्य रूप से 14-बिट, 15-बिट और 16-बिट एमसीयू प्रदान करता है। अनुप्रयोग क्षेत्र: उपभोक्ता इलेक्ट्रॉनिक्स, ऑटोमोटिव इलेक्ट्रॉनिक्स, उद्योग और स्मार्ट उपकरण।
13. बीजिंग इंजीनिक: मुख्य रूप से 32-बिट एमसीयू प्रदान करता है, अनुप्रयोग क्षेत्र: पहनने योग्य उपकरण, इंटरनेट ऑफ थिंग्स, स्मार्ट घरेलू उपकरण, ऑटोमोबाइल, उपभोक्ता इलेक्ट्रॉनिक्स, टैबलेट कंप्यूटर।
14. चाइना माइक्रोइलेक्ट्रॉनिक्स: मुख्य रूप से 8-बिट एमसीयू प्रदान करता है। अनुप्रयोग: स्मार्ट घरेलू उपकरण, ऑटोमोटिव इलेक्ट्रॉनिक्स, सुरक्षा निगरानी, एलईडी प्रकाश व्यवस्था और लैंडस्केप, स्मार्ट खिलौने, स्मार्ट घर और उपभोक्ता इलेक्ट्रॉनिक्स।
15. शेनझोउ लूंगसन इंटीग्रेटेड सर्किट: मुख्य रूप से 32-बिट एमसीयू प्रदान करता है, अनुप्रयोग क्षेत्र: बिजली निगरानी, स्मार्ट ग्रिड, औद्योगिक डिजिटल नियंत्रण, इंटरनेट ऑफ थिंग्स, स्मार्ट होम, डेटा निगरानी।
16. ज़िगुआंग माइक्रोइलेक्ट्रॉनिक्स: मुख्य रूप से 8-बिट और 16-बिट एमसीयू प्रदान करता है। अनुप्रयोग क्षेत्र: स्मार्ट घरेलू उपकरण।
17. टाइम्स मिनक्सिन: मुख्य रूप से 32-बिट एमसीयू प्रदान करता है, अनुप्रयोग क्षेत्र: कार नेविगेशन, यातायात निगरानी, मछली पकड़ने वाले जहाजों की निगरानी, बिजली दूरसंचार नेटवर्क।
18. चाइना रिसोर्सेज सिलिकॉन माइक्रोइलेक्ट्रॉनिक्स (चाइना रिसोर्सेज माइक्रोइलेक्ट्रॉनिक्स की एक सहायक कंपनी): मुख्य रूप से 8-बिट और 16-बिट एमसीयू प्रदान करती है। अनुप्रयोग क्षेत्र: उपभोक्ता इलेक्ट्रॉनिक्स, औद्योगिक नियंत्रण और घरेलू उपकरण।
19. राष्ट्रीय कोर प्रौद्योगिकी: मुख्य रूप से 32-बिट एमसीयू प्रदान करता है, अनुप्रयोग क्षेत्र: सूचना सुरक्षा क्षेत्र, कार्यालय स्वचालन क्षेत्र, संचार नेटवर्क क्षेत्र, सूचना सुरक्षा क्षेत्र।
20. झोंगटियन माइक्रो: मुख्य रूप से 32-बिट एमसीयू प्रदान करता है। अनुप्रयोग: स्मार्टफोन, डिजिटल टीवी, सेट-टॉप बॉक्स, ऑटोमोटिव इलेक्ट्रॉनिक्स, जीपीएस, ई-रीडर और प्रिंटर।
21. चाइना रिसोर्सेज माइक्रोइलेक्ट्रॉनिक्स: मुख्य रूप से 8-बिट और 16-बिट एमसीयू प्रदान करता है। अनुप्रयोग क्षेत्र: घरेलू उपकरणों, उपभोक्ता इलेक्ट्रॉनिक्स और औद्योगिक स्वचालन नियंत्रण के लिए सामान्य नियंत्रण सर्किट।
22. Zhongying Electronics: Mainly provides 4-bit, 8-bit, 16-bit, and 32-bit MCUs. Application scope: home appliances and motors.
23. लिंगडोंग माइक्रोइलेक्ट्रॉनिक्स: मुख्य रूप से 32-बिट उत्पाद प्रदान करता है, अनुप्रयोग क्षेत्र: मोटर नियंत्रण, ब्लूटूथ नियंत्रण, उच्च-परिभाषा डिस्प्ले, वायरलेस चार्जिंग, ड्रोन, माइक्रो प्रिंटर, स्मार्ट लेबल, इलेक्ट्रॉनिक सिगरेट, एलईडी डॉट मैट्रिक्स स्क्रीन, आदि।
24. नुवोटन टेक्नोलॉजी: मुख्य रूप से 8-बिट एमसीयू प्रदान करती है, अनुप्रयोग क्षेत्र: प्रकाश व्यवस्था, इंटरनेट ऑफ थिंग्स, आदि।
25. न्यूसॉफ्ट कैरियर: मुख्य रूप से 8-बिट और 32-बिट एमसीयू प्रदान करता है। अनुप्रयोग: घरेलू उपकरण, स्मार्ट होम, इंस्ट्रूमेंटेशन, एलसीडी पैनल नियंत्रक, औद्योगिक नियंत्रण, आदि।
26. बेटली: मुख्य रूप से 32-बिट एमसीयू प्रदान करता है, अनुप्रयोग क्षेत्र: स्मार्ट होम, औद्योगिक नियंत्रण और उपभोक्ता उत्पाद।
27. शेंगक्वान टेक्नोलॉजी: मुख्य रूप से 8-बिट एमसीयू प्रदान करती है, अनुप्रयोग क्षेत्र: ऑटोमोटिव, शिक्षा, औद्योगिक नियंत्रण, चिकित्सा आदि के लिए छोटे और मध्यम आकार के डिस्प्ले पैनल।
28. हैंगशुन चिप: मुख्य रूप से 8-बिट और 32-बिट एमसीयू प्रदान करती है। अनुप्रयोग क्षेत्र: ऑटोमोबाइल, इंटरनेट ऑफ थिंग्स, आदि।
29. फुदान माइक्रोइलेक्ट्रॉनिक्स: मुख्य रूप से 16-बिट और 32-बिट एमसीयू प्रदान करता है। अनुप्रयोग: स्मार्ट मीटर, स्मार्ट डोर लॉक आदि।
30. हुआडा सेमीकंडक्टर: मुख्य रूप से 8-बिट, 16-बिट और 32-बिट एमसीयू प्रदान करता है। अनुप्रयोग: औद्योगिक नियंत्रण, बुद्धिमान विनिर्माण, स्मार्ट जीवन और इंटरनेट ऑफ थिंग्स।
ताइवान, चीन
1. होंगजिंग टेक्नोलॉजी: मुख्य रूप से 32-बिट एमसीयू प्रदान करती है। अनुप्रयोग क्षेत्र: संचार, औद्योगिक नियंत्रण, सूचना उपकरण और आवाज।
2. होल्टेक सेमीकंडक्टर: मुख्य रूप से 8-बिट और 32-बिट एमसीयू प्रदान करता है। अनुप्रयोग क्षेत्र: उपभोक्ता इलेक्ट्रॉनिक्स, एलईडी लाइटिंग आदि।
3. Lingyang Technology: mainly provides 8-bit and 16-bit MCUs. Application scope: home audio and video.
4. झोंगयिंग इलेक्ट्रॉनिक्स: मुख्य रूप से 4-बिट और 8-बिट एमसीयू प्रदान करता है। अनुप्रयोग क्षेत्र: चार्जर, मोबाइल पावर सप्लाई, घरेलू उपकरण, औद्योगिक नियंत्रण।
5. सोंघान टेक्नोलॉजी: मुख्य रूप से 8-बिट और 32-बिट एमसीयू प्रदान करती है। अनुप्रयोग क्षेत्र: रिमोट कंट्रोल, स्मार्ट चार्जर, बड़े और छोटे सिस्टम, इलेक्ट्रॉनिक तराजू, कान थर्मामीटर, रक्तचाप मॉनिटर, टायर प्रेशर गेज, विभिन्न माप और स्वास्थ्य उपकरण।
6. विनबॉन्ड इलेक्ट्रॉनिक्स: मुख्य रूप से 8-बिट और 16-बिट एमसीयू प्रदान करता है। अनुप्रयोग क्षेत्र: ऑटोमोटिव इलेक्ट्रॉनिक्स, औद्योगिक इलेक्ट्रॉनिक्स, नेटवर्क, कंप्यूटर, उपभोक्ता इलेक्ट्रॉनिक्स, इंटरनेट ऑफ थिंग्स।
7. दस गति प्रौद्योगिकी: मुख्य रूप से 4-बिट, 8-बिट और 51-बिट एमसीयू प्रदान करती है। अनुप्रयोग क्षेत्र: रिमोट कंट्रोल, छोटे घरेलू उपकरण।
8. यूहुआ माइक्रोइलेक्ट्रॉनिक्स: मुख्य रूप से 4-बिट और 8-बिट एमसीयू प्रदान करता है। अनुप्रयोग क्षेत्र: रिकॉर्डिंग एकीकृत सर्किट उत्पाद, उपभोक्ता इलेक्ट्रॉनिक्स, घरेलू उत्पाद।
9. यिंगगुआंग टेक्नोलॉजी माइक्रोकंट्रोलर: मुख्य रूप से 4-बिट और 8-बिट एमसीयू प्रदान करता है। अनुप्रयोग क्षेत्र: मशीनरी, स्वचालन, घरेलू उपकरण, रोबोट।
10. एलन इलेक्ट्रॉनिक्स: मुख्य रूप से 8-बिट और 16-बिट एमसीयू प्रदान करता है। अनुप्रयोग क्षेत्र: उपभोक्ता इलेक्ट्रॉनिक्स, कंप्यूटर, स्मार्टफोन।
पांच
माइक्रोकंट्रोलर सीखने के लिए टिप्स
किसी भी एमसीयू के मूल सिद्धांत और कार्य समान होते हैं। अंतर केवल परिधीय फ़ंक्शन मॉड्यूल, निर्देश प्रणाली आदि के विन्यास और संख्या में होता है।
निर्देश प्रणालियों के मामले में, भले ही वे रूप में बहुत भिन्न प्रतीत हों, वास्तव में वे केवल विभिन्न प्रतीक हैं। उनके द्वारा दर्शाए गए अर्थ, पूर्ण किए जाने वाले कार्य और संबोधन विधियाँ मूलतः समान हैं।
किसी MCU को समझने के लिए, सबसे पहले आपको उसकी ROM स्पेस, RAM स्पेस, IO पोर्ट्स की संख्या, टाइमर की संख्या और टाइमिंग विधियाँ, प्रदान किए गए पेरिफेरल फंक्शन मॉड्यूल (पेरिफेरल सर्किट), इंटरप्ट स्रोत, ऑपरेटिंग वोल्टेज और बिजली की खपत आदि के बारे में जानना आवश्यक है।
After understanding these MCU Features, the next step is to compare the functions of the selected MCU with the functions required for actual project development, and clarify which resources are currently needed and which are not used in this project.
प्रोजेक्ट में उपयोग किए जाने वाले उन कार्यों के लिए जो चयनित MCU द्वारा प्रदान नहीं किए जाते हैं, आपको अप्रत्यक्ष विधियों का उपयोग करके उन्हें लागू करने के लिए MCU की प्रासंगिक जानकारी को ध्यानपूर्वक समझना होगा। उदाहरण के लिए, यदि आपके द्वारा विकसित किए जा रहे प्रोजेक्ट को PC के COM पोर्ट से संचार करने की आवश्यकता है, और चयनित MCU UART पोर्ट प्रदान नहीं करता है, तो आप इसे लागू करने के लिए बाहरी इंटरप्ट का उपयोग करने पर विचार कर सकते हैं।
For the resources needed for project development, you need to carefully understand and read the Manua*, while you can ignore or browse the unnecessary functional modules. For MCU learning, application is the key and the main purpose.
एमसीयू के प्रासंगिक कार्यों को स्पष्ट करने के बाद, आप प्रोग्रामिंग शुरू कर सकते हैं।
शुरुआती लोगों या ऐसे डिज़ाइनरों के लिए जो पहली बार इस MCU का उपयोग कर रहे हैं, उन्हें MCU के कार्यों के कई अस्पष्ट विवरण मिल सकते हैं। ऐसी समस्याओं को हल करने के दो तरीके हैं। एक तरीका है डेटा में वर्णित कार्यों को समझने के लिए एक विशेष सत्यापन प्रोग्राम लिखना; दूसरा तरीका है इसे अस्थायी रूप से अनदेखा करना और अपनी वर्तमान समझ के अनुसार MCU प्रोग्राम लिखना, जिसे डिबगिंग के दौरान संशोधित और बेहतर बनाया जा सकता है। पहला तरीका उन परियोजनाओं के लिए उपयुक्त है जिनमें समय की कमी नहीं है और जो शुरुआती हैं, जबकि दूसरा तरीका उन लोगों के लिए उपयुक्त है जिन्हें माइक्रोकंट्रोलर विकास में कुछ अनुभव है या जब परियोजना का समय सीमित हो।
कमांड सिस्टम को समझने में कोई विशेष समय न लगाएं। निर्देश प्रणाली केवल तार्किक विवरण का प्रतीक है। प्रोग्रामिंग के दौरान आप केवल अपने तर्क और प्रोग्राम की तार्किक आवश्यकताओं के अनुसार प्रासंगिक निर्देशों को ही देख सकते हैं। प्रोग्रामिंग में प्रगति के साथ-साथ आप निर्देश प्रणाली में अधिकाधिक निपुण होते जाएंगे और यहां तक कि इसे अचेतन रूप से याद भी कर सकते हैं।
छह
माइक्रोकंट्रोलर प्रोग्रामिंग
MCU प्रोग्राम लेखन और PC प्रोग्राम लेखन में बहुत बड़ा अंतर है। हालांकि C-आधारित MCU विकास उपकरण अधिकाधिक लोकप्रिय हो रहे हैं, फिर भी कुशल प्रोग्राम कोड लिखने और असेंबली भाषा का उपयोग करने वाले डिजाइनरों के लिए असेंबली भाषा अभी भी सबसे संक्षिप्त और प्रभावी प्रोग्रामिंग भाषा है।
MCU प्रोग्रामिंग के लिए, मूल ढांचा लगभग समान ही होता है। इसे आमतौर पर तीन भागों में बांटा जाता है: आरंभीकरण भाग (यह MCU प्रोग्रामिंग और PC प्रोग्रामिंग के बीच सबसे बड़ा अंतर है), मुख्य प्रोग्राम लूप बॉडी और इंटरप्ट हैंडलर। इनका विवरण इस प्रकार है:
1. Initialization: For the design of all MCU programs, initialization is the most basic and important step, which generally includes the following:
सभी इंटरप्ट को मास्क करें और स्टैक पॉइंटर को इनिशियलाइज़ करें: इनिशियलाइज़ेशन भाग में आमतौर पर कोई भी इंटरप्ट नहीं होना चाहिए।
सिस्टम के रैम क्षेत्र को साफ़ करें और मेमोरी प्रदर्शित करें: हालाँकि कभी-कभी यह पूरी तरह से आवश्यक नहीं हो सकता है, विश्वसनीयता और निरंतरता के दृष्टिकोण से, विशेष रूप से अप्रत्याशित त्रुटियों को रोकने के लिए, अच्छी प्रोग्रामिंग आदतें विकसित करने की सलाह दी जाती है।
IO पोर्ट का आरंभीकरण: प्रोजेक्ट की अनुप्रयोग आवश्यकताओं के अनुसार, संबंधित IO पोर्ट के इनपुट और आउटपुट मोड को सेट करें। इनपुट पोर्ट के लिए, आपको इसके पुल-अप या पुल-डाउन रेसिस्टर को सेट करना होगा; आउटपुट पोर्ट के लिए, अनावश्यक त्रुटियों से बचने के लिए आपको इसका प्रारंभिक आउटपुट स्तर सेट करना होगा।
Interrupt settings: For all interrupt sources that need to be used in the project, they should be turned on and the trigger conditions for the interrupts should be set. For redundant interrupts that are not used, they must be turned off.
अन्य कार्यात्मक मॉड्यूल का आरंभीकरण: उपयोग किए जाने वाले MCU के सभी परिधीय कार्यात्मक मॉड्यूल के लिए, परियोजना अनुप्रयोग की आवश्यकताओं के अनुसार संबंधित सेटिंग्स की जानी चाहिए। उदाहरण के लिए, UART संचार के लिए, बॉड दर, डेटा लंबाई, सत्यापन विधि और स्टॉप बिट लंबाई निर्धारित करनी होगी। प्रोग्रामर टाइमर के लिए, इसका क्लॉक स्रोत, आवृत्ति विभाजन संख्या और रीलोड डेटा निर्धारित करना होगा।
पैरामीटरों का आरंभीकरण: MCU हार्डवेयर और संसाधनों के आरंभीकरण के बाद, अगला चरण प्रोग्राम में उपयोग किए जाने वाले कुछ चरों और डेटा को आरंभ करना है। इस भाग का आरंभीकरण विशिष्ट परियोजना और प्रोग्राम की समग्र व्यवस्था के अनुसार डिज़ाइन किया जाना चाहिए। कुछ अनुप्रयोगों के लिए जो परियोजना के पूर्वनिर्मित डेटा को सहेजने के लिए EEPROM का उपयोग करते हैं, आरंभीकरण के दौरान संबंधित डेटा को MCU की RAM में कॉपी करने की अनुशंसा की जाती है ताकि प्रोग्राम की डेटा तक पहुँच की गति में सुधार हो और सिस्टम की बिजली खपत कम हो (सिद्धांत रूप में, बाहरी EEPROM से डेटा प्राप्त करने से बिजली आपूर्ति की बिजली खपत बढ़ जाएगी)।
2. मुख्य प्रोग्राम लूप बॉडी: अधिकांश एमसीयू लंबे समय तक लगातार चलते हैं, इसलिए उनकी मुख्य प्रोग्राम बॉडी मूल रूप से एक लूप में डिज़ाइन की जाती है। कई कार्य मोड वाले अनुप्रयोगों के लिए, कई लूप बॉडी हो सकती हैं, जिन्हें स्टेटस फ्लैग के माध्यम से परिवर्तित किया जाता है। मुख्य प्रोग्राम बॉडी के लिए, आमतौर पर निम्नलिखित मॉड्यूल व्यवस्थित किए जाते हैं:
गणना कार्यक्रम: गणना कार्यक्रम आम तौर पर समय लेने वाले होते हैं, इसलिए हम किसी भी रुकावट में उन्हें संसाधित करने के सख्त खिलाफ हैं, खासकर गुणा और भाग की प्रक्रियाओं के।
Processing programs with low or no real-time requirements;
डिस्प्ले ट्रांसमिशन प्रोग्राम: मुख्य रूप से बाहरी एलईडी और एलसीडी ड्राइवरों वाले अनुप्रयोगों के लिए।
3. इंटरप्ट हैंडलर: इंटरप्ट प्रोग्राम का उपयोग मुख्य रूप से उच्च वास्तविक समय आवश्यकताओं वाले कार्यों और घटनाओं को संभालने के लिए किया जाता है, जैसे कि बाहरी अचानक संकेतों का पता लगाना, बटनों का पता लगाना और प्रसंस्करण करना, समय गणना, एलईडी डिस्प्ले स्कैनिंग आदि।
In general, the interrupt program should keep the code as concise and short as possible. For functions that do not need to be processed in real time, the trigger flag can be set in the interrupt, and then the main program will perform specific transactions. This is very important, especially for low-power, low-speed MCUs, which must ensure timely response to all interrupts.
4. विभिन्न कार्य निकायों की व्यवस्था के लिए, विभिन्न एमसीयू में अलग-अलग प्रसंस्करण विधियाँ होती हैं:
उदाहरण के लिए, कम गति और कम बिजली खपत वाले MCU (Fosc=32768Hz) अनुप्रयोगों के लिए, यह देखते हुए कि ऐसे प्रोजेक्ट हैंडहेल्ड डिवाइस हैं और साधारण LCD डिस्प्ले का उपयोग करते हैं, कुंजी दबाने की प्रतिक्रिया और डिस्प्ले प्रतिक्रिया के लिए उच्च वास्तविक समय प्रदर्शन की आवश्यकता होती है, इसलिए कुंजी दबाने की क्रियाओं और डेटा डिस्प्ले को संसाधित करने के लिए आमतौर पर समयबद्ध इंटरप्ट का उपयोग किया जाता है; उच्च गति वाले MCU, जैसे कि Fosc>1MHz अनुप्रयोगों के लिए, चूंकि MCU के पास इस समय मुख्य प्रोग्राम लूप बॉडी को निष्पादित करने के लिए पर्याप्त समय होता है, इसलिए यह केवल संबंधित इंटरप्ट में विभिन्न ट्रिगर फ्लैग सेट कर सकता है और निष्पादन के लिए मुख्य प्रोग्राम बॉडी में सभी कार्यों को डाल सकता है।
5. एमसीयू प्रोग्रामिंग में, एक चीज़ जिस पर विशेष ध्यान देने की आवश्यकता है वह है:
इंटरप्ट और मुख्य प्रोग्राम निकायों में एक ही समय में एक ही वेरिएबल या डेटा को एक्सेस या सेट होने से रोकना आवश्यक है। एक प्रभावी रोकथाम विधि यह है कि ऐसे डेटा के प्रसंस्करण को एक मॉड्यूल में व्यवस्थित किया जाए, और ट्रिगर फ्लैग के आधार पर यह निर्धारित किया जाए कि डेटा पर संबंधित ऑपरेशन किए जाने हैं या नहीं; अन्य प्रोग्राम निकायों (मुख्य रूप से इंटरप्ट) में, केवल वहीं ट्रिगर फ्लैग सेट करें जहां डेटा को संसाधित करने की आवश्यकता है। इससे डेटा निष्पादन पूर्वानुमानित और अद्वितीय बना रहता है।
सात इंजीनियर द्वारा माइक्रोकंट्रोलर प्रोग्रामिंग का सारांश
1. Develop a good habit of summarizing. Summarizing is not only a summary of your own learning, but also a review and deepening of the learning process. It can also avoid making mistakes the second time.
2. Before writing a program, you must first have a familiar understanding of the project, be aware of it, and outline a general framework. It is very important to carefully consider how to lay out and what is the most reasonable layout. It is necessary to analyze which module to do first, the specific steps of this module, how to name each function, the connection with other modules, etc. It’s a good idea to get a piece of paper and jot down important processes.
3. C भाषा में मॉड्यूलर प्रोग्रामिंग के लिए, आपको पहले प्रत्येक मॉड्यूल को विभाजित करना होगा, मॉड्यूल दर मॉड्यूल प्रोग्रामिंग करनी होगी, एक क्रम निर्धारित करना होगा, क्रम का पालन करना होगा और फिर मॉड्यूल के सफलतापूर्वक पूरा होने के बाद अगला मॉड्यूल लिखना होगा। हेडर फ़ाइलों के लिए, मॉड्यूल लिखने के बाद ही उसकी हेडर फ़ाइल लिखें।
4. चेतावनी मिलने पर उसे नज़रअंदाज़ न करें। इसका मतलब है कि प्रोग्राम में कुछ गड़बड़ी ज़रूर है। आपको गड़बड़ी का स्रोत पता लगाना होगा और उसका समाधान खोजना होगा। स्रोत खोजते समय सटीक रहें। आप इस विषय पर जानकारी के लिए इंटरनेट पर खोज कर सकते हैं या दूसरों से सलाह ले सकते हैं। उदाहरण के लिए, किसी अन्य प्रोजेक्ट का मुख्य फ़ंक्शन गलती से इस प्रोजेक्ट में जोड़ दिया गया हो। हो सकता है कि फ़ंक्शन के नाम दोहराए गए हों। प्रायोगिक परिणामों का विश्लेषण करने और चरण-दर-चरण आगे बढ़ने के भी कारण हो सकते हैं। पोर्ट परिभाषित करते समय गलत इंटरफ़ेस का चयन भी हो सकता है। कभी-कभी, अगर आप समस्या का समाधान नहीं कर पा रहे हैं, तो थोड़ा रुककर इस पर विचार करना अच्छा होता है। चाहे समस्या कितनी भी सरल क्यों न हो, आपको उस पर ध्यान देना चाहिए, क्योंकि गलतियाँ हो सकती हैं।
माइक्रोकंट्रोलर अनुप्रयोगों के विकास में, कोड उपयोग दक्षता, हस्तक्षेप-रोधी प्रदर्शन और माइक्रोकंट्रोलर की विश्वसनीयता जैसी समस्याएं अभी भी बनी हुई हैं। अब हम माइक्रोकंट्रोलर के विकास में महारत हासिल करने योग्य कुछ बुनियादी कौशलों का सारांश प्रस्तुत करते हैं।
आठ
माइक्रोकंट्रोलर विकास कौशल
1. प्रोग्राम में बग्स को कैसे कम करें
प्रोग्राम बग्स को कम करने के संबंध में, आपको सबसे पहले निम्नलिखित आउट-ऑफ-रेंज प्रबंधन मापदंडों पर विचार करना चाहिए, जिन पर सिस्टम संचालन के दौरान विचार किया जाना चाहिए।
- भौतिक पैरामीटर: ये पैरामीटर मुख्य रूप से सिस्टम के इनपुट पैरामीटर होते हैं, जिनमें उत्तेजना पैरामीटर, अधिग्रहण प्रक्रिया के दौरान परिचालन पैरामीटर और प्रसंस्करण के अंत में परिणाम पैरामीटर शामिल होते हैं।
- संसाधन पैरामीटर: ये पैरामीटर मुख्य रूप से सिस्टम में सर्किट, डिवाइस और कार्यात्मक इकाइयों के संसाधन होते हैं, जैसे मेमोरी क्षमता, स्टोरेज यूनिट की लंबाई और स्टैकिंग गहराई।
- अनुप्रयोग पैरामीटर: ये अनुप्रयोग पैरामीटर अक्सर कुछ माइक्रोकंट्रोलर और कार्यात्मक इकाइयों की अनुप्रयोग स्थितियों के रूप में दिखाई देते हैं। प्रक्रिया पैरामीटर: सिस्टम संचालन के दौरान व्यवस्थित रूप से बदलने वाले पैरामीटर को संदर्भित करता है।
2 How to improve the efficiency of C language programming code
माइक्रोकंट्रोलर प्रोग्रामिंग के लिए C भाषा का उपयोग माइक्रोकंट्रोलर के विकास और अनुप्रयोग में एक अपरिहार्य प्रवृत्ति है। यदि आप C में प्रोग्रामिंग करते समय अधिकतम दक्षता प्राप्त करना चाहते हैं, तो आपके द्वारा उपयोग किए जा रहे C कंपाइलर से परिचित होना सबसे अच्छा है। सबसे पहले, प्रत्येक C भाषा संकलन के अनुरूप असेंबली भाषा स्टेटमेंट की पंक्तियों की संख्या का परीक्षण करें, ताकि आप दक्षता को स्पष्ट रूप से जान सकें। भविष्य में प्रोग्रामिंग करते समय, उच्चतम संकलन दक्षता वाले स्टेटमेंट का उपयोग करें। प्रत्येक C कंपाइलर में कुछ अंतर होते हैं, इसलिए संकलन दक्षता भी भिन्न होगी। एम्बेडेड सिस्टम के लिए एक उत्कृष्ट C कंपाइलर द्वारा लिखे गए कोड की लंबाई और निष्पादन समय, असेंबली भाषा में लिखे गए समान फ़ंक्शन की तुलना में केवल 5-20% अधिक होता है।
कम समय सीमा वाले जटिल प्रोजेक्ट्स के लिए C भाषा का उपयोग किया जा सकता है, लेकिन इसके लिए आवश्यक है कि आप C भाषा और MCU सिस्टम के C कंपाइलर से अच्छी तरह परिचित हों। C कंपाइलेशन सिस्टम द्वारा समर्थित डेटा प्रकारों और एल्गोरिदम पर विशेष ध्यान दें। हालांकि C भाषा सबसे आम उच्च-स्तरीय भाषा है, विभिन्न MCU निर्माताओं के C भाषा कंपाइलेशन सिस्टम अलग-अलग होते हैं, खासकर कुछ विशेष फंक्शन मॉड्यूल के संचालन में। इसलिए, यदि आप इन विशेषताओं को नहीं समझते हैं, तो डिबगिंग के दौरान कई समस्याएं आएंगी, जिससे असेंबली भाषा की तुलना में निष्पादन दक्षता कम हो जाएगी।
3 How to solve the anti-interference problem of microcontroller
हस्तक्षेप को रोकने का सबसे प्रभावी तरीका हस्तक्षेप के स्रोत को हटाना और हस्तक्षेप पथ को अवरुद्ध करना है, लेकिन ऐसा करना अक्सर मुश्किल होता है, इसलिए हम केवल यह देख सकते हैं कि माइक्रोकंट्रोलर की हस्तक्षेप-रोधी क्षमता कितनी मजबूत है। हार्डवेयर सिस्टम की हस्तक्षेप-रोधी क्षमता में सुधार करते समय, सॉफ्टवेयर हस्तक्षेप-रोधी तकनीक अपने लचीले डिजाइन, हार्डवेयर संसाधनों की बचत और अच्छी विश्वसनीयता के कारण अधिकाधिक ध्यान आकर्षित कर रही है।
माइक्रोकंट्रोलर इंटरफेरेंस की सबसे आम घटना रीसेट है। प्रोग्राम के अनियंत्रित हो जाने की स्थिति में, सॉफ्टवेयर ट्रैप और वॉचडॉग का उपयोग करके प्रोग्राम को रीसेट स्थिति में वापस लाया जा सकता है। इसलिए, माइक्रोकंट्रोलर सॉफ्टवेयर के लिए इंटरफेरेंस से बचाव करने के लिए रीसेट स्थिति को संभालना सबसे महत्वपूर्ण है।
आम तौर पर, माइक्रोकंट्रोलर में कुछ फ्लैग रजिस्टर होते हैं जिनका उपयोग रीसेट का कारण निर्धारित करने के लिए किया जा सकता है; इसके अलावा, आप स्वयं भी कुछ फ्लैग रैम में डाल सकते हैं। हर बार प्रोग्राम रीसेट होने पर, इन फ्लैगों के आधार पर रीसेट के विभिन्न कारणों का पता लगाया जा सकता है; आप अलग-अलग फ्लैगों के आधार पर सीधे संबंधित प्रोग्राम पर भी जा सकते हैं। इससे प्रोग्राम लगातार चलता रहता है और उपयोगकर्ता को उपयोग करते समय पता भी नहीं चलता कि प्रोग्राम रीसेट हो गया है।
4. माइक्रोकंट्रोलर सिस्टम की विश्वसनीयता का परीक्षण कैसे करें
जब किसी माइक्रोकंट्रोलर सिस्टम का डिज़ाइन पूरा हो जाता है, तो विभिन्न माइक्रोकंट्रोलर सिस्टम उत्पादों के लिए अलग-अलग परीक्षण आइटम और विधियाँ होंगी, लेकिन कुछ का परीक्षण करना आवश्यक है:
- माइक्रोकंट्रोलर सॉफ्टवेयर के कार्य की पूर्णता का परीक्षण करें
- पावर ऑन और पावर ऑफ टेस्ट
- उम्र बढ़ने का परीक्षण
- ईएसडी और ईएफटी जैसे परीक्षण
Sometimes, we can also simulate the damage that may occur during human use. For example, deliberately rub the contact port of the microcontroller system with the human body or clothing fabric to test the anti-static ability. Use a high-power electric drill to work close to the microcontroller system to test the ability to resist electromagnetic interference.
संक्षेप में कहें तो, सिंगल-चिप माइक्रो कंप्यूटर कंप्यूटर विकास और अनुप्रयोग का एक महत्वपूर्ण पहलू बन गया है। सिंगल-चिप माइक्रो कंप्यूटर के अनुप्रयोग का सबसे महत्वपूर्ण पहलू यह है कि यह पारंपरिक नियंत्रण प्रणाली डिजाइन विचारों और डिजाइन विधियों को मौलिक रूप से बदल देता है।
Most of the functions that must be implemented by analog circuits or digital circuits in the past can now be implemented through software methods using microcontrollers. This kind of control technology in which software replaces hardware is also called micro-control technology, which is a revolution in traditional control technology.
इसके अलावा, विकास और अनुप्रयोग प्रक्रिया के दौरान, हमें कौशल में महारत हासिल करनी चाहिए और दक्षता में सुधार करना चाहिए ताकि इसका उपयोग व्यापक उद्देश्यों के लिए किया जा सके।
नौ
चिप संचालन सारांश चिप पर होने वाली क्रियाएँ मुख्य रूप से चिप में मौजूद रजिस्टरों पर की जाती हैं। चिप में मौजूद रजिस्टरों के अपने विशिष्ट पते होते हैं जो मेमोरी पर मैप किए जाते हैं, और यही क्रिया संबंधित पते पर होती है। चिप को देखते समय, सबसे पहले टाइमिंग डायग्राम देखें, फिर संबंधित रजिस्टरों को समझें, उनकी कार्यप्रणाली को समझें, आवश्यक पोर्ट्स (जिन्हें प्रोग्राम द्वारा पहचाना जा सकता है) को परिभाषित करें, और राइट ऑपरेशन प्रक्रियाएँ और रीड ऑपरेशन प्रक्रियाएँ लिखें।
चिप में डेटा कैसे लिखें, डेटा कैसे पढ़ें और किस पोर्ट के माध्यम से इनपुट या रीड करें (यह सबसे महत्वपूर्ण बात है)।
चिप्स को बस के माध्यम से कनेक्ट करते समय, आपको सबसे पहले बस के प्रोटोकॉल को समझना होगा। I2C बस से कनेक्टेड चिप मुख्य रूप से इसी बस के माध्यम से चिप को नियंत्रित करती है।
1. One 74hc595 in the dot matrix is used for column selection, and the other two are used for color selection. The dot matrix is equivalent to a collection of diodes.
डायोड तभी जलता है जब उसके एक सिरे को उच्च स्तर और दूसरे सिरे को निम्न स्तर दिया जाता है। अंतर केवल इतना है कि जब एक सिरे को अलग-अलग स्तर पर चुना जाता है, तो अलग-अलग रंगों की रोशनी जलती है।
Selection of timer working mode: The high four bits set the timer T1, and the low four bits set T0. Then the last two digits of each mode set the working mode. When setting two timers, be careful to use or (|). When using interrupts, pay attention to clearing the ones that should be cleared after entering the interrupt.
2. सीरियल पोर्ट ट्रांससीवर: मोड 2 (स्वचालित रूप से प्रारंभिक मान पुनः लोड करना) का उपयोग आमतौर पर बॉड दर निर्धारित करने के लिए किया जाता है। विभिन्न उपकरणों की डेटा प्रोसेसिंग क्षमताएँ भिन्न होने के कारण, बॉड दर निर्धारित करना मुख्य रूप से कम गति वाले उपकरणों के बीच संचार सुनिश्चित करने के लिए होता है। सॉफ़्टवेयर द्वारा इंटरप्ट फ़्लैग बिट को साफ़ करना आवश्यक है। सीरियल पोर्ट इंटरप्ट सेट करते समय, चाहे वह भेजने या प्राप्त करने से उत्पन्न हो, इंटरप्ट फ़ंक्शन सक्रिय हो सकता है, इसलिए इंटरप्ट फ़ंक्शन को सेट करते समय ध्यान दें। (सामान्यतः होस्ट कंप्यूटर या स्लेव कंप्यूटर के रूप में स्वयं द्वारा फ़ंक्शन सेट किया जाता है)।
If you use an interrupt to send, you have to figure out how to enter the interrupt for the first time, so you have to send it once first, and then you can enter the interrupt. Only one byte can be sent at a time, and the next bit can only be sent after TI is set.
3. Pcf8591ad conversion has four channels of input. When reading pcf8591, which channel is selected, the voltage input by that channel is read. The converted data is stored in the chip and then read out. When reading, first write the address of the chip, then write the sub-address of the device (0x40|channel number), and then the read data.
4. रूपांतरण प्रक्रिया में सबसे पहले डिवाइस का पता चिप में लिखा जाता है, फिर उप-पता (0x40) लिखा जाता है, और फिर परिवर्तित की जाने वाली डिजिटल मात्रा लिखी जाती है। डिवाइस पते की चिप संबंधी जानकारी प्रस्तुत की जाती है।
5. एलसीडी डिस्प्ले पर डेटा लिखे और प्रदर्शित होने के बाद, यह लगातार रिफ्रेश हुए बिना हमेशा प्रदर्शित होता रहेगा। यदि आप इसे बदलना चाहते हैं, तो आप इसे केवल पुनः दर्ज कर सकते हैं।
6. DS1302 क्लॉक चिप के लिए, डेटा पढ़ते समय, आठवीं क्लॉक के फॉलिंग एज पर पहला डेटा पढ़ा जाता है, और फिर अगले आउटपुट के लिए तैयारी की जाती है। प्रोग्राम की लेखन विधि और रिटर्न वैल्यू के स्थान पर ध्यान दें।
7. First specify the register in Ds1302, and then write data to it. The register on the chip data indicates the address. (I still don’t quite understand the write protection program. Isn’t there always writing? Why is the write protection still turned on?)
(According to the previous hero, you can set a flag after the initialization time. If there is this flag, there is no need to initialize the time. However, if the power is turned off, the MCU's RAM cannot save this flag, so you can use the DS1302's RAM to save the flag and read it after powering on. I am also a beginner, and I plan to use DS1302 recently. I don't know if this is correct, and I haven't implemented it yet. Please share more)
8. आरंभिक प्रक्रिया को लिख लेना सबसे अच्छा है, ताकि बाद में भूल जाने पर काम आ सके। कभी-कभी पढ़ते या लिखते समय इस बात पर ध्यान दें कि सबसे निचला बिट पहले सक्रिय होता है या सबसे ऊपरी बिट, जिसका अनुमान टाइमिंग डायग्राम के अनुसार लगाया जा सकता है।
9. इन्फ्रारेड ट्रांससीवर के लिए, सिग्नल प्राप्त करते समय, यह दो फॉलिंग एज के बीच के समय के आधार पर निर्धारित करता है कि सिग्नल हाई लेवल का है या लो लेवल का। प्रोग्राम लिखते समय, पहले टाइमर का उपयोग करके समय निर्धारित करें, उसे सेव करें और फिर उसे बाइनरी में परिवर्तित करें (इस प्रोग्राम को लिखने के तरीके के बारे में और अधिक पढ़ें, यह बहुत उपयोगी है)।
10. स्टेपर मोटर: इसका मुख्य उपयोग स्विचिंग के लिए किया जाता है। गति बढ़ने पर स्टेपर मोटर का टॉर्क कम हो जाता है। इसका उपयोग मुख्य रूप से मशीन टूल्स पर संसाधित पुर्जों की स्वचालित फीडिंग के लिए किया जाता है। इसका उपयोग उच्च परिशुद्धता वाले नियंत्रण स्थानों में भी किया जा सकता है।
स्टेपर मोटर एक ओपन-लूप कंट्रोल उपकरण है जो विद्युत पल्स संकेतों को कोणीय विस्थापन या रेखीय विस्थापन में परिवर्तित करता है। बिना ओवरलोड की स्थिति में, मोटर की गति और रुकने की स्थिति केवल पल्स सिग्नल की आवृत्ति और पल्स की संख्या पर निर्भर करती है, और लोड में परिवर्तन से प्रभावित नहीं होती है। जब स्टेपर ड्राइवर को पल्स सिग्नल प्राप्त होता है, तो यह स्टेपर मोटर को निर्धारित दिशा में एक निश्चित कोण पर घुमाता है, जिसे "स्टेप कोण" कहा जाता है। इसका घूर्णन एक निश्चित कोण पर चरण-दर-चरण होता है। पल्स की संख्या को नियंत्रित करके कोणीय विस्थापन को नियंत्रित किया जा सकता है, जिससे सटीक स्थिति निर्धारण प्राप्त होता है; साथ ही, पल्स आवृत्ति को नियंत्रित करके मोटर के घूर्णन की गति और त्वरण को नियंत्रित किया जा सकता है, जिससे गति का नियमन होता है।
11. सर्वो मोटर: (सर्वो मोटर) उस इंजन को संदर्भित करता है जो सर्वो प्रणाली में यांत्रिक घटकों के संचालन को नियंत्रित करता है। यह एक अप्रत्यक्ष संचरण उपकरण है जो मोटर की सहायता करता है। सर्वो मोटर गति और स्थिति को बहुत सटीक रूप से नियंत्रित कर सकता है, और वोल्टेज संकेतों को टॉर्क और घूर्णी गति में परिवर्तित करके नियंत्रण वस्तुओं को चला सकता है। सर्वो मोटर की रोटर गति इनपुट सिग्नल द्वारा नियंत्रित होती है और तेजी से प्रतिक्रिया कर सकती है। स्वचालित नियंत्रण प्रणाली में, इसका उपयोग एक्चुएटर के रूप में किया जाता है और इसमें कम विद्युत-यांत्रिक समय स्थिरांक, उच्च रैखिकता, उच्च आरंभिक वोल्टेज आदि की विशेषताएं होती हैं। यह प्राप्त विद्युत सिग्नल को मोटर शाफ्ट पर कोणीय विस्थापन या कोणीय वेग आउटपुट में परिवर्तित कर सकता है। इन्हें दो श्रेणियों में विभाजित किया गया है: डीसी और एसी सर्वो मोटर। इनकी मुख्य विशेषता यह है कि सिग्नल वोल्टेज शून्य होने पर कोई घूर्णन नहीं होता है, और टॉर्क बढ़ने पर घूर्णी गति स्थिर गति से घटती है। डीसी मोटर: व्यापक रेंज, सभी छोटी कारों में उपयोग किया जाता है।
12. Overview of Chinese characters:
मॉनिटर या प्रिंटर पर चीनी अक्षरों को प्रदर्शित करने के लिए, ग्राफिक प्रतीकों के अनुसार चीनी अक्षरों को डॉट मैट्रिक्स में डिजाइन किया जाता है, और संबंधित डॉट मैट्रिक्स कोड (ग्लाइफ कोड) प्राप्त किया जाता है।
The unified encoding method used to represent Chinese characters in the computer forms a Chinese character encoding called an internal code (such as a national standard code), and the internal code is unique (equivalent to the ID number of the character). The Chinese character encoding formed to facilitate the input of Chinese characters is an input code, which is an external code of Chinese characters. The input code is different due to different encoding methods and is diverse. The Chinese character code formed for displaying and printing out Chinese characters is a glyph code. The computer finds the glyph code of the Chinese character in the font model library through the Chinese character internal code and realizes its conversion.
इन-कैमरा कोड
राष्ट्रीय मानक कोड के प्रावधानों के अनुसार, प्रत्येक चीनी अक्षर का एक निश्चित बाइनरी कोड होता है, लेकिन कंप्यूटर द्वारा आंतरिक रूप से संसाधित किए जाने पर यह कोड ASCII कोड से मेल नहीं खाता। इस समस्या को हल करने के लिए, राष्ट्रीय मानक कोड के प्रत्येक बाइट के पहले अंक में 1 जोड़ दिया जाता है। चूंकि ASCII कोड केवल 7 बिट्स का उपयोग करता है, इसलिए पहले स्थान पर मौजूद "1" का उपयोग चीनी अक्षर कोड की पहचान के लिए किया जा सकता है। जब कंप्यूटर पहले स्थान पर "1" वाले कोड को संसाधित करता है, तो वह इसे चीनी अक्षर की जानकारी के रूप में समझता है, और जब वह पहले स्थान पर "0" वाले कोड को संसाधित करता है, तो वह इसे ASCII कोड के रूप में समझता है। इस प्रकार संसाधित राष्ट्रीय मानक कोड (आंतरिक कोड) ही आंतरिक कोड कहलाता है।
If we replace the "." of this "口" graphic with "0", we can get the glyph code of "口" very vividly: 0000H 0004H 3FFAH 2004H 2004H 2004H 2004H 2004H 2004H 2004H 2004H2004H 3FFAH 2004H 0000H 0000H. When the computer wants to output "口", it first finds the first address of the display font library, calculates based on the internal code of "口", and then finds the glyph code of "口", and then scans the screen sequentially according to the glyph code (in binary) through the control of the character generator. Where the binary code is "0", the place where it is "0" is scanned, and the place where it is "1" is scanned to highlight, so the character pattern of "口" can be obtained.
Chinese character fonts are arranged in the order of the national standard code and stored in the memory in the form of binary files, forming a Chinese character font library, also called a Chinese character glyph library, or a Chinese character library.
Two encoding methods, see header file
GB1616.h//------------------ Chinese character font data structure definition ------------------------//structtypFNT_GB16 //Chinese character font data structure {unsignedcharIndex[3]; //Chinese character internal code index unsignedchar Msk[32];//dot matrix code data };
//////////////////////////////////////////////////////////////////////////////// Chinese character font table//// Chinese character library: Song Dynasty 16.dot, horizontally modulo left high bit, data arrangement: from left to right, from top to bottom///////////////////////////////////////////////////////////////////////////////////conststructtypFNT_GB16 codeGB_16[]= //data table{/*---------------------------------------------------------------------------------;source file/text :Xu;width×height (pixels):16×16--------------------------------------------------------------------------------*/"Xu",0x10,0x80,0x10,0x80,0x21 ,0x40,0x42,0x20,0x94,0x10,0x1B,0xEC,0x20,0x80,0x60,0x80,0xAF,0xF8,0x 20,0x80,0x22,0xA0,0x24,0x90,0x2A,0x88,0x21,0x00,0x00,0x00,0x00,0x00, यह संरचना बहुत सरल है: एक आंतरिक कोड है, और दूसरा डॉट मैट्रिक्स अनुक्रम है। पिछली डॉट मैट्रिक्स लाइब्रेरी को आंतरिक कोड के क्रम में रखा गया था, और किसी आंतरिक कोड इंडेक्स की आवश्यकता नहीं थी। यदि केवल कुछ चीनी अक्षर रखे जाते थे, तो आंतरिक कोड इंडेक्स की आवश्यकता होती थी। (सामने वाला चीनी अक्षर "Xu" शब्द "Xu" को आउटपुट करते समय उसके डॉट मैट्रिक्स अनुक्रम को खोजने के लिए है। यह डॉट मैट्रिक्स अनुक्रम मैंने स्वयं लिखा है। जब इसे 1602 के साथ प्रदर्शित किया जाता है, क्योंकि चिप की मेमोरी में अंग्रेजी डॉट मैट्रिक्स अनुक्रम होता है, इसलिए इसे लिखने की आवश्यकता नहीं होती है।) आम तौर पर, आंतरिक कोड के लिए दो बाइट पर्याप्त होते हैं। यदि आप एक और बाइट का उपयोग करते हैं, तो आप बस अंत में एक 0 जोड़ देते हैं। इस तरह, चीनी अक्षर स्ट्रिंग को सीधे चीनी अक्षर आंतरिक कोड में रखा जा सकता है।
codeGB_16[k].Index[0] codeGB_16[k] indicates that there is an array of structure typFNT_GB16 called codeGB_16 codeGB_16[k] is the k+1 member of the array index is a member of structure typFNT_GB16, so it can be referenced with codeGB_16[k].Index. At the same time, index is an array, so it can be indexed[0] If((codeGB_16[k].Index[0]==c[0])&&(codeGB_16[k].Index[1]==c[1])) && is a logical AND operator, which means that the values on both sides of the && symbol are true. Only the value of && is true, that is, true && true =true. This sentence means: codeGB_16[k].Index[0]==c[0] and codeGB_16[k].Index[1]==c[1] are established at the same time. If the following statement is executed, codeGB_16[] is a structure array, codeGB_16[k].Index[0] means the 0th element value of the index member of the Kth structure of the structure array.
13. 12864 एलसीडी: प्रत्येक डिस्प्ले पॉइंट एक बाइनरी संख्या को दर्शाता है, 1 का अर्थ है चालू, 0 का अर्थ है बंद। इन डॉट मैट्रिक्स सूचनाओं को संग्रहित करने वाली रैम को डिस्प्ले डेटा मेमोरी कहा जाता है। किसी विशिष्ट ग्राफ़िक या चीनी अक्षर को प्रदर्शित करने के लिए, संबंधित डॉट मैट्रिक्स सूचना को संबंधित स्टोरेज यूनिट में लिखना होता है।
ग्राफ़िक्स रैम का एड्रेस काउंटर (AC) केवल क्षैतिज एड्रेस (X अक्ष) को एक से स्वचालित रूप से बढ़ाता है। जब क्षैतिज एड्रेस = 0FH होता है, तो इसे 00H पर रीसेट कर दिया जाता है। हालांकि, यह ऊर्ध्वाधर एड्रेस को कैरी के साथ स्वचालित रूप से नहीं बढ़ाता है। इसलिए, जब लगातार कई डेटा लिखे जाते हैं, तो प्रोग्राम को यह निर्धारित करने की आवश्यकता होती है कि ऊर्ध्वाधर एड्रेस को रीसेट करने की आवश्यकता है या नहीं।
14. Drawing RAM (GDRAM) ड्राइंग डिस्प्ले रैम 128×8 बाइट्स की मेमोरी स्पेस प्रदान करता है। ड्राइंग रैम में बदलाव करते समय, पहले क्षैतिज और ऊर्ध्वाधर निर्देशांक मानों को लगातार लिखें, और फिर ड्राइंग रैम में दो बाइट्स डेटा लिखें। एड्रेस काउंटर (AC) स्वचालित रूप से क्षैतिज पते (X एड्रेस) को एक से बढ़ा देगा। जब क्षैतिज पता 0XFH होता है, तो इसे 00H पर रीसेट कर दिया जाएगा; ऊर्ध्वाधर पता स्वचालित रूप से 1 से नहीं बढ़ेगा। ड्राइंग रैम में लिखते समय ड्राइंग डिस्प्ले को बंद रखना आवश्यक है।
[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 ADDfor(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++;} }} C भाषा में, परिभाषित वेरिएबल के लिए स्थान स्वतः आवंटित हो जाता है, और उसका पता वेरिएबल का नाम होता है। इस नाम के माध्यम से मेमोरी में डेटा प्राप्त किया जा सकता है और गणना द्वारा नया डेटा प्राप्त किया जा सकता है। हालांकि, असेंबली में, प्रोग्रामर को स्टोरेज स्पेस परिभाषित करना होता है और गणना के लिए डेटा को एक्यूमुलेटर में भेजना होता है। प्रत्येक चरण में प्रोग्रामर की भागीदारी आवश्यक होती है। C भाषा में, ये सभी प्रक्रियाएं कंपाइलर द्वारा पूर्ण की जाती हैं।
15. कुछ उपयोगी प्रश्न और उत्तर ①. माइक्रोकंट्रोलर C भाषा में वेरिएबल्स का मेमोरी एलोकेशन कैसे होता है? क्या कंपाइलर कंपाइलेशन प्रक्रिया के दौरान एलोकेशन और रीसाइक्लिंग कोड को समझदारी से जोड़ता है? मुख्य बात यह है कि मैंने जो प्रोग्राम बनाया है, उसमें मेमोरी ओवरफ्लो की त्रुटि न हो, यह मैं कैसे सुनिश्चित करूँ? यदि मैं रिकर्सिव ऑपरेशन कर रहा हूँ, तो मेमोरी की आवश्यकता का अनुमान स्वयं लगाना कठिन है।
2. क्या माइक्रोकंट्रोलर में C भाषा का उपयोग चर परिभाषा के मामले में सीमित रहेगा? उदाहरण के लिए, फ्लोटिंग-पॉइंट डेटा के गुणन और भाग के ऑपरेशन असेंबली भाषा में लिखे जाते हैं, और कोड काफी जटिल होता है। यदि इसे सीधे C भाषा में लिखा जाए, तो क्या यह बहुत सरल नहीं हो जाएगा?
③. माइक्रोकंट्रोलर की C भाषा द्वारा जनरेट की गई हेक्स फ़ाइल में, क्या इंस्ट्रक्शन और डेटा ROM का एड्रेस वितरण कंपाइलर द्वारा स्वचालित रूप से निर्धारित किया जाता है? क्या उपयोगकर्ता इसे निर्धारित कर सकते हैं?
उत्तर 1: C भाषा में लिखा एक माइक्रोकंट्रोलर प्रोग्राम पहले एक प्रोग्राम (संभवतः c51.exe) द्वारा कंपाइल किया जाता है। कंपाइलेशन पूरा होने के बाद, वेरिएबल्स के स्टोरेज स्पेस का आकार निर्धारित कर दिया जाता है, लेकिन विशिष्ट एड्रेस अभी तक आवंटित नहीं किया जाता है (एड्रेस फ्लोटिंग होता है)। इसके बाद, एक अन्य प्रोग्राम (संभवतः a51.exe) को कनेक्ट किया जाता है। कनेक्शन के बाद, विशिष्ट एड्रेस निर्धारित किया जाता है।
यदि बहुत अधिक वेरिएबल हों, तो कंपाइलर यह संकेत देगा कि डेटा सेगमेंट बहुत बड़ा है। मेमोरी ओवरफ्लो त्रुटि से बचने के लिए, मुख्य बात यह देखना है कि स्टैक ओवरफ्लो तो नहीं हो रहा है, और यह अनुभव पर निर्भर करता है।
माइक्रोकंट्रोलर की C भाषा में आमतौर पर रिकर्सन की अनुमति नहीं होती है, और रिकर्सिव ऑपरेशन से आमतौर पर बचा जाता है। आखिर माइक्रोकंट्रोलर पीसी नहीं होते, जिससे उनकी गति प्रभावित होती है। यदि आप रिकर्सन करना चाहते हैं, तो डीएसपी चिप का उपयोग करना अधिक उपयुक्त है। संक्षेप में, आपको उपयुक्त चिप का चयन करना आना चाहिए।
Answer 2: The size of the variable (number of digits) is generally the same as the number of digits in the chip accumulator. For example, 51 commonly uses 8 bits because it is an 8-bit microcontroller.
The microcontroller can define bit variables, but it cannot define bit arrays. Writing in C language seems simple, but actually generates the largest amount of code. The microcontroller used for control hardly uses floating point operations, which is not only slow but troublesome and takes up space. If it is a DSP chip, it will be much better if it has a suitable hardware structure.
उत्तर 3: सामान्यतः, यह स्वचालित रूप से आवंटित होता है। इसे C भाषा और असेंबली भाषा के मिश्रण में प्रोग्राम किया जा सकता है, या इसे Keil C का उपयोग करके ऑनलाइन असेंबल किया जा सकता है। चिप और बाहरी वातावरण के बीच डेटा का आदान-प्रदान पोर्ट के माध्यम से होता है।
कंपनी का फ़ोन नंबर: +86-0755-83044319
फैक्स: +86-0755-83975897
ईमेल: 1615456225@qq.com
QQ: 3518641314 मैनेजर ली
QQ: 332496225 प्रबंधक किउ
पता: कमरा नंबर 809, बिल्डिंग सी, झांताओ टेक्नोलॉजी बिल्डिंग, 1079 मिंझी एवेन्यू, लोंगहुआ न्यू डिस्ट्रिक्ट, शेन्ज़ेन