MCU steht für Microcontroller Unit. Die chinesische Abkürzung für Mikrocontroller, auch bekannt als Ein-Chip-Mikrocomputer, bezeichnet die Reduzierung der Taktfrequenz und der Spezifikationen der CPU. Peripherieschnittstellen wie Speicher, Zähler, USB, A/D-Wandler, UART, SPS, DMA und sogar LCD-Treiberschaltungen werden auf einem einzigen Chip integriert, um einen Chip-Computer zu bilden. Er ermöglicht die Steuerung verschiedener Anwendungen, beispielsweise in Mobiltelefonen, PC-Peripheriegeräten, Fernbedienungen, Automobilelektronik, industriellen Schrittmotoren und Roboterarmsteuerungen. Ein MCU ist in der Abbildung dargestellt.
dank One
Eine kurze Geschichte der Entwicklung von Mikrocontrollern
Die Geschichte der Mikrocontroller ist noch jung, hat sich aber rasant entwickelt. Ihre Produktion und Entwicklung verlaufen im Allgemeinen parallel zur Produktion und Entwicklung von Mikroprozessoren (CPUs). Seit die Intel Corporation aus den USA 1971 den ersten 4-Bit-Mikroprozessor auf den Markt brachte, lässt sich die Entwicklung grob in fünf Phasen unterteilen. Im Folgenden wird die Entwicklung der Mikrocontroller von Intel vorgestellt.
1971 ~ 1976
Die Anfänge der Mikrocontroller-Entwicklung. Im November 1971 entwickelte Intel den Intel 4004, einen 4-Bit-Mikroprozessor mit 2,000 Transistoren pro Chip, ausgestattet mit RAM, ROM und Schieberegister. Er bildete den ersten MCS-4-Mikroprozessor. Anschließend brachte Intel den 8-Bit-Mikroprozessor Intel 8008 auf den Markt, und auch andere Unternehmen präsentierten 8-Bit-Mikroprozessoren.
1976 ~ 1980
Die Stufe der leistungsschwachen Mikrocontroller, repräsentiert durch die 1976 von Intel eingeführte MCS-48-Serie, nutzt eine monolithische Struktur, die eine 8-Bit-CPU, eine 8-Bit-Parallel-I/O-Schnittstelle, einen 8-Bit-Timer/Zähler, RAM und ROM auf einem Halbleiterchip integriert. Obwohl der Adressraum begrenzt ist (maximal 4 KB), keine serielle I/O-Schnittstelle vorhanden ist, die RAM- und ROM-Kapazität gering und das Interruptsystem relativ einfach ist, reichen die Funktionen für die allgemeine industrielle Steuerung sowie für intelligente Instrumente und Messgeräte aus.
1980 ~ 1983
Hochleistungsmikrocontroller-Stufe. Die in dieser Stufe eingeführten 8-Bit-Hochleistungsmikrocontroller verfügen in der Regel über serielle Schnittstellen, mehrstufige Interrupt-Verarbeitungssysteme und mehrere 16-Bit-Timer/Zähler. Die Kapazität des On-Chip-RAM und -ROM wurde erhöht, und der Adressbereich kann bis zu 64 KB betragen. Einige Chips besitzen zudem eine A/D-Wandlerschnittstelle.
1983~late 1980s
16-Bit-Mikrocontroller-Phase. 1983 brachte Intel die leistungsstarke 16-Bit-Mikrocontroller-Serie MCS-96 auf den Markt. Dank modernster Fertigungstechnologie erreichte der Chip einen Integrationsgrad von bis zu 120,000 Transistoren.
1990er-Jahre
Microcontrollers are developing to a higher level in all aspects of integration, functionality, speed, reliability, and application fields.
XNUMX
Klassifizierung und Anwendung von Ein-Chip-Mikrocomputern
Mikrocontroller (MCUs) lassen sich anhand ihres Speichertyps in zwei Kategorien einteilen: solche ohne On-Chip-ROM und solche mit On-Chip-ROM. Bei Chips ohne On-Chip-ROM muss vor der Inbetriebnahme ein externer EPROM angeschlossen werden (typischerweise 8031). Chips mit On-Chip-ROM werden in On-Chip-EPROM-Typen (typischerweise 87C51), MASK-On-Chip-Masken-ROM-Typen (typischerweise 8051), On-Chip-Flash-Typen (typischerweise 89C51) und weitere Typen unterteilt.
Nach Verwendungszweck lassen sie sich in Allzweck- und Spezialtypen unterteilen; nach der Breite des Datenbusses und der Länge der Datenbytes, die gleichzeitig verarbeitet werden können, lassen sie sich in 8-, 16- und 32-Bit-Mikrocontroller unterteilen.
At present, the most extensive domestic MCU application market is in the consumer electronics field, followed by the industrial field and the automotive electronics market. Consumer electronics includes household appliances, televisions, game consoles, audio and video systems, etc. Industrial fields include smart homes, automation, medical applications, and new energy generation and distribution. The automotive field includes automotive powertrain and safety control systems.
nach drei
Basic functions of microcontroller
For most MCUs, the following functions are the most common and basic. For different MCUs, the way they are described may be different, but they are essentially the same:
1. TImer (timer): Although there are many types of TImer, they can be summarized into two categories: One type is TImer with fixed time intervals, that is, the timing time is set by the system and cannot be controlled by the user program. The system only provides several fixed time intervals for the user program to choose, such as 32Hz, 16Hz, 8Hz, etc. This type of TImer is more common in 4-bit MCUs, so it can be used to implement clock, timing and other related functions.
Der andere Typ ist der programmierbare Timer. Wie der Name schon sagt, lässt sich die Taktzeit dieses Timers durch ein Benutzerprogramm steuern. Zu den Steuerungsmöglichkeiten gehören die Auswahl der Taktquelle, die Auswahl der Frequenzteilung (Voreinstellung) und die Festlegung der Voreinstellungsnummer. Einige Mikrocontroller bieten alle drei Funktionen gleichzeitig, andere nur eine oder zwei davon. Dieser Timertyp ist sehr flexibel einsetzbar und sein Anwendungsbereich ist vielfältig. Eine der häufigsten Anwendungen ist die Implementierung von PWM-Ausgangssignalen.
Since the clock source can be freely selected, this type of Timer is generally combined with the Event Counter.
2. E/A-Ports: Jeder Mikrocontroller (MCU) verfügt über eine bestimmte Anzahl von E/A-Ports. Ohne E/A-Ports verliert der Mikrocontroller die Möglichkeit zur Kommunikation mit der Außenwelt. Je nach Konfigurierbarkeit der E/A-Ports lassen sie sich in folgende Typen unterteilen:
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.
Direktes Lesen und Schreiben von E/A-Ports: Beispielsweise gehört der E/A-Port des MCS-51 zu diesem Porttyp. Wird der Lesebefehl für den E/A-Port ausgeführt, fungiert er als Eingangsport; wird der Schreibbefehl für den E/A-Port ausgeführt, fungiert er automatisch als Ausgangsport.
Programmierung zur Festlegung der Ein- und Ausgaberichtung: Die Ein- oder Ausgabe dieses E/A-Port-Typs wird vom Programm entsprechend den tatsächlichen Anforderungen festgelegt. Die Anwendung ist relativ flexibel und kann verschiedene Bus-basierte Anwendungen realisieren, wie z. B. I2C-Bus, verschiedene LCD- und LED-Treiber-Ansteuerungsbusse usw.
Bei der Verwendung von E/A-Ports ist Folgendes zu beachten: Für den Eingangsport muss ein klares Pegelsignal vorhanden sein, um sicherzustellen, dass er nicht undefiniert ist (dies kann durch Hinzufügen eines Pull-up- oder Pull-down-Widerstands erreicht werden); für den Ausgangsport muss der Ausgangsstatuspegel die externen Anschlussbedingungen berücksichtigen, und es sollte sichergestellt werden, dass im Standby- oder statischen Zustand kein Strom gezogen oder aufgenommen wird.
3. Externe Interrupts: Externe Interrupts gehören zu den Basisfunktionen der meisten Mikrocontroller. Sie werden üblicherweise zur Echtzeit-Auslösung von Signalen, zur Datenabtastung und zur Statuserkennung verwendet. Zu den Interrupt-Methoden zählen die Auslösung durch steigende Flanke, fallende Flanke und Pegel. Externe Interrupts werden in der Regel über Eingangsports implementiert. Handelt es sich um einen E/A-Port, ist die Interrupt-Funktion nur aktiviert, wenn der Port als Eingang konfiguriert ist; bei einem Ausgangsport ist sie automatisch deaktiviert (Ausnahmen bilden die ATiny-Serien von ATMEL, bei denen die Interrupt-Funktion auch bei Verwendung eines Ausgangsports ausgelöst werden kann). Anwendungsbeispiele für externe Interrupts sind:
Erkennung externer Triggersignale: Die eine basiert auf Echtzeitanforderungen, wie der Steuerung von Thyristoren, der Erkennung plötzlicher Signale usw., die andere auf dem Bedürfnis, Energie zu sparen.
Messung der Signalfrequenz: Um sicherzustellen, dass kein Signal verloren geht, ist ein externer Interrupt die ideale Wahl.
Datendekodierung: Im Bereich der Fernsteuerungsanwendungen ist es zur Reduzierung der Entwicklungskosten oft notwendig, Software zur Dekodierung verschiedener kodierter Daten einzusetzen, wie beispielsweise die Dekodierung der Manchester- und PWM-Kodierung.
Tastenerkennung und Systemaufweckung: Mikrocontroller, die in den Schlafmodus wechseln, müssen in der Regel durch externe Interrupts aufgeweckt werden. Die einfachste Methode ist ein Tastendruck, der durch die Betätigung der Taste Pegeländerungen bewirkt.
4. Communication interface: The communication interface provided by MCU generally includes SPI interface, UART, I2C interface, etc., which are described as follows:
SPI interface: This type of interface is the most basic communication method provided by most MCUs. Its data transmission is controlled by a synchronous clock. The signals include: SDI (serial data input), SDO (serial data output), SCLK (serial clock) and Ready signal; in some cases, there may be no Ready signal; this type of interface can work in master mode or Slave mode. In popular terms, it depends on who provides the clock signal. The party providing the clock is the master, and the opposite party is the Slaver.
UART (Universal Asynchronous Receive Transmit): It is the most basic asynchronous transmission interface. It has only two signal lines, Rx and Tx. The basic data format is: Start Bit + Data Bit (7-bits/8-bits) + Parity Bit (Even, Odd or None) + Stop Bit (1~2Bit). The time occupied by one bit of data is called Baud Rate.
Bei den meisten Mikrocontrollern lassen sich die Länge der Datenbits, der Datenprüfmodus (ungerade, gerade oder keine Prüfung), die Stoppbitlänge und die Baudrate flexibel per Programmierung einstellen. Die gängigste Methode für diese Art von Schnittstelle ist die Kommunikation mit der seriellen Schnittstelle eines PCs.
I2C-Schnittstelle: I2C ist ein von Philips entwickeltes Datenübertragungsprotokoll. Es wird mit zwei Signalen implementiert: SDAT (serielle Dateneingabe und -ausgabe) und SCLK (serieller Takt). Der größte Vorteil besteht darin, dass mehrere Geräte an diesen Bus angeschlossen und über Adressen identifiziert und angesprochen werden können. Ein weiterer großer Vorteil des I2C-Busses ist die einfache Implementierung per Software über den I/O-Port. Die Datenübertragungsrate wird vollständig über SCLK gesteuert und kann im Gegensatz zur UART-Schnittstelle, die strenge Anforderungen an die Übertragungsrate stellt, schnell oder langsam sein.
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.
Vier
Globaler Hersteller von Mainstream-Mikrocontrollern
(Die Reihenfolge ist zufällig, die Liste umfasst die wichtigsten Hersteller. Falls etwas fehlt, ergänzen Sie es bitte im Kommentarbereich.)
Europa und Amerika
1. Freescale+NXP (Freescale+NXP): Netherlands, mainly provides 16-bit and 32-bit MCUs. Applications: Automotive electronics, LED and general lighting, healthcare, multimedia convergence, home appliances and power tools, building automation technology motor control, power supplies and power converters, energy and smart grids, automation, computer and communication infrastructure.
2. Microchip+Atmel (Microchip Technology + Atmel): The United States, mainly provides 16-bit and 32-bit MCUs. Applications: automotive electronics, industrial use, motor control, automobiles, building automation, home appliances, home entertainment, industrial automation, lighting, Internet of Things, smart energy, mobile electronic equipment, computer peripherals.
3. Cypress+Spansion (Cypress + Spansion Semiconductor): Das US-amerikanische Unternehmen bietet hauptsächlich 8-Bit-, 16-Bit- und 32-Bit-Mikrocontroller an. Anwendungsbereiche: Automobilelektronik, Haushaltsgeräte, Medizintechnik, Unterhaltungselektronik, Kommunikation und Telekommunikation, Industrie, drahtlose Kommunikation.
4. ADI (Analog Devices): USA, bietet hauptsächlich 8-Bit-, 16-Bit- und 32-Bit-Mikrocontroller an. Anwendungsbereiche: Luft- und Raumfahrt, Automobilindustrie, Gebäudetechnik, Kommunikation, Unterhaltungselektronik, Energiewirtschaft, Gesundheitswesen, Messtechnik, Motoren, Industrieautomation, Sicherheitstechnik.
5. Infineon: Deutschland, bietet hauptsächlich 16-Bit- und 32-Bit-Mikrocontroller an. Anwendungsbereiche: Automobilelektronik, Unterhaltungselektronik, Maschinenbau, Nutz- und Landwirtschaftsfahrzeuge, Datenverarbeitung, Elektromobilität, Industrieanwendungen, Medizintechnik, mobile Geräte, Motorsteuerung und -antriebe, Stromversorgung für Motorräder, E-Bikes und kleine Elektrofahrzeuge, Smart Grids, Beleuchtung, Solaranlagenlösungen, Windenergieanlagenlösungen.
6. STMicroelectronics: Italien/Frankreich, bietet hauptsächlich 32-Bit-Mikrocontroller an. Anwendungsbereiche: LED- und Allgemeinbeleuchtung, Transportwesen, Gesundheitswesen, Multimedia-Konvergenz, Haushaltsgeräte und Elektrowerkzeuge, Gebäudeautomation, Motorsteuerung, Stromversorgungen und Stromrichter, Energie- und Smart Grids, Automatisierung, Computer- und Kommunikationsinfrastruktur.
7. Qualcomm: Das US-amerikanische Unternehmen bietet hauptsächlich 16-Bit- und 32-Bit-Mikrocontroller an. Anwendungsbereiche: Smartphones, Tablets, drahtlose Modems.
8. Texas Instruments: USA, bietet hauptsächlich 16-Bit- und 32-Bit-Mikrocontroller an. Anwendungsbereiche: Automobilelektronik, Unterhaltungselektronik, Medizintechnik, Mobilgeräte, Kommunikationstechnik.
9. Maxim (Maxim): United States, mainly provides 32-bit MCU. Application scope: automotive electronics, consumer electronics, industrial applications, security.
Japan und Südkorea
1. Renesas: Japan, mainly provides 16-bit and 32-bit MCUs. Application scope: computers and peripherals, consumer electronics, health and medical electronics, automotive electronics, industry, and communications.
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. Fujitsu: Japan, bietet hauptsächlich 32-Bit-Mikrocontroller an. Anwendungsbereiche: Automobilindustrie, Medizintechnik, Maschinenbau, Haushaltsgeräte.
4. Samsung Electronics: Südkorea, hauptsächlich Anbieter von 16-Bit- und 32-Bit-Mikrocontrollern. Anwendungsbereiche: Automobilelektronik, Industrieanwendungen, Motorsteuerung, Gebäudeautomation, Haushaltsgeräte, Unterhaltungselektronik, Beleuchtung, Internet der Dinge (IoT), intelligente Energieversorgung, mobile Elektronikgeräte, Computerperipheriegeräte.
Region China
Festland China
1. Sigma Microelectronics: Bietet hauptsächlich 32-Bit-Mikrocontroller an; Anwendungsbereiche: Telekommunikation, Fertigung, Energie, Transport, Elektrizität usw.
2. Zhuhai Orbit: Mainly provides 32-bit MCU, application scope: aerospace: satellite station ships, aircraft; high-end industrial control: embedded computers; ship control, industrial control, power equipment, environmental monitoring.
3. GigaDevice Innovation: Bietet hauptsächlich 32-Bit-Mikrocontroller an, Anwendungsbereich: Industrieautomation, Mensch-Maschine-Schnittstelle, Motorsteuerung, Sicherheitsüberwachung, Smart Home, Internet der Dinge.
4. Shengsi Microelectronics: Bietet hauptsächlich 8-Bit- und 32-Bit-Mikrocontroller an. Anwendungsbereiche: Haushaltsgeräte, Unterhaltungselektronik, Fernbedienungen, Mäuse, Lithiumbatterien, digitale Produkte, Automobilelektronik, medizinische Instrumente und Messgeräte, Spielzeug, industrielle Steuerungstechnik, Smart Home und Sicherheitstechnik sowie weitere Bereiche.
5. Chipsea Technology: Bietet hauptsächlich 16- und 32-Bit-Mikrocontroller an. Anwendungsbereiche: Messtechnik, Internet der Dinge, Unterhaltungselektronik, Haushaltsgeräte und Automobilelektronik.
6. Lianhua Integrated Circuit: Hauptsächlich Anbieter von 8-Bit- und 16-Bit-Mikrocontrollern. Anwendungsbereiche: Unterhaltungselektronik, Haushaltsgeräte, Industriesteuerungen, Kommunikationsgeräte, Automobilelektronik und Computer.
7. Zhuhai Jianrong: Bietet hauptsächlich 8-Bit-Mikrocontroller an; Anwendungsbereich: Haushaltsgeräte, mobile Stromversorgung.
8. Actions Technology: Bietet hauptsächlich 8-Bit- bis 32-Bit-Mikrocontroller an; Anwendungsbereich: Tablet-Computer, Smart Home, Multimedia, Bluetooth, WLAN-Audio.
9. Aisco Microelectronics: Bietet hauptsächlich 8-Bit- und 16-Bit-Mikrocontroller an. Anwendungsbereiche: Konsumchips, Kommunikationschips, Informationschips und Haushaltsgeräte.
10. Huaxin Microelectronics: Hauptsächlich Anbieter von 8-Bit- und 4-Bit-Mikrocontrollern. Anwendungsbereiche: Satellitenempfänger, Handy-Ladegeräte, ewige Kalender und All-in-One-Fernbedienungen.
11. Shanghai Belling (Huada Semiconductor Holdings): Hauptsächlich Anbieter von 8-Bit-, 16-Bit- und 32-Bit-Mikrocontrollern. Anwendungsbereiche: Computerperipheriegeräte, HDTV, Energiemanagement, Kleingeräte und digitale Geräte.
12. Haier Integrated Circuits: Bietet hauptsächlich 14-Bit-, 15-Bit- und 16-Bit-Mikrocontroller an. Anwendungsbereiche: Unterhaltungselektronik, Automobilelektronik, Industrie und intelligente Geräte.
13. Beijing Ingenic: Bietet hauptsächlich 32-Bit-Mikrocontroller an; Anwendungsbereich: Wearables, Internet der Dinge, Smart-Home-Geräte, Automobile, Unterhaltungselektronik, Tablet-Computer.
14. China Microelectronics: Hauptsächlich Anbieter von 8-Bit-Mikrocontrollern. Anwendungsbereiche: Smart-Home-Geräte, Automobilelektronik, Sicherheitsüberwachung, LED-Beleuchtung und Landschaftsgestaltung, intelligentes Spielzeug, Smart Homes und Unterhaltungselektronik.
15. Shenzhou Loongson Integrated Circuit: Hauptsächlich Anbieter von 32-Bit-Mikrocontrollern; Anwendungsbereiche: Energieüberwachung, Smart Grid, industrielle digitale Steuerung, Internet der Dinge, Smart Home, Datenüberwachung.
16. Ziguang Microelectronics: Mainly provides 8-bit and 16-bit MCUs. Application scope: smart home appliances.
17. Times Minxin: Bietet hauptsächlich 32-Bit-Mikrocontroller an, Anwendungsbereich: Fahrzeugnavigation, Verkehrsüberwachung, Überwachung von Fischereifahrzeugen, Stromversorgungsnetze.
18. China Resources Silicon Microelectronics (eine Tochtergesellschaft von China Resources Microelectronics): bietet hauptsächlich 8-Bit- und 16-Bit-Mikrocontroller an. Anwendungsbereiche: Unterhaltungselektronik, industrielle Steuerungstechnik und Haushaltsgeräte.
19. Nationale Kerntechnologie: Bietet hauptsächlich 32-Bit-Mikrocontroller an; Anwendungsbereiche: Informationssicherheit, Büroautomation, Kommunikationsnetzwerke, Informationssicherheit.
20. Zhongtian Micro: Mainly provides 32-bit MCUs. Applications: smartphones, digital TVs, set-top boxes, automotive electronics, GPS, e-readers, and printers.
21. China Resources Microelectronics: Hauptsächlich Anbieter von 8-Bit- und 16-Bit-Mikrocontrollern. Anwendungsbereich: Allgemeine Steuerschaltungen für Haushaltsgeräte, Unterhaltungselektronik und industrielle Automatisierungstechnik.
22. Zhongying Electronics: Bietet hauptsächlich 4-Bit-, 8-Bit-, 16-Bit- und 32-Bit-Mikrocontroller an. Anwendungsbereich: Haushaltsgeräte und Motoren.
23. Lingdong Microelectronics: Bietet hauptsächlich 32-Bit-Lösungen an; Anwendungsbereiche: Motorsteuerung, Bluetooth-Steuerung, hochauflösende Displays, drahtloses Laden, Drohnen, Mikrodrucker, intelligente Etiketten, elektronische Zigaretten, LED-Punktmatrix-Bildschirme usw.
24. Nuvoton Technology: Bietet hauptsächlich 8-Bit-Mikrocontroller an, Anwendungsbereich: Beleuchtung, Internet der Dinge usw.
25. Neusoft Carrier: Bietet hauptsächlich 8-Bit- und 32-Bit-Mikrocontroller an. Anwendungsbereiche: Haushaltsgeräte, Smart Homes, Messtechnik, LCD-Panel-Controller, Industriesteuerungen usw.
26. Betley: Mainly provides 32-bit MCU, application scope: smart home, industrial control and consumer products.
27. Shengquan Technology: Bietet hauptsächlich 8-Bit-Mikrocontroller an; Anwendungsbereich: kleine und mittelgroße Anzeigetafeln für die Automobilindustrie, Bildungseinrichtungen, industrielle Steuerungssysteme, Medizintechnik usw.
28. Hangshun Chip: Bietet hauptsächlich 8-Bit- und 32-Bit-Mikrocontroller an. Anwendungsbereiche: Automobile, Internet der Dinge usw.
29. Fudan Microelectronics: Mainly provides 16-bit and 32-bit MCUs. Applications: smart meters, smart door locks, etc.
30. Huada Semiconductor: Hauptsächlich Anbieter von 8-Bit-, 16-Bit- und 32-Bit-Mikrocontrollern. Anwendungsbereiche: Industriesteuerung, intelligente Fertigung, Smart Life und Internet der Dinge.
Taiwan, China
1. Hongjing Technology: mainly provides 32-bit MCU. Application scope: communications, industrial control, information appliances, and voice.
2. Holtek Semiconductor: Bietet hauptsächlich 8-Bit- und 32-Bit-Mikrocontroller an. Anwendungsbereiche: Unterhaltungselektronik, LED-Beleuchtung usw.
3. Lingyang Technology: Bietet hauptsächlich 8-Bit- und 16-Bit-Mikrocontroller an. Anwendungsbereich: Heim-Audio und -Video.
4. Zhongying Electronics: Bietet hauptsächlich 4-Bit- und 8-Bit-Mikrocontroller an. Anwendungsbereiche: Ladegeräte, mobile Stromversorgungen, Haushaltsgeräte, industrielle Steuerungen.
5. Songhan Technology: Bietet hauptsächlich 8-Bit- und 32-Bit-Mikrocontroller an. Anwendungsbereiche: Fernbedienungen, intelligente Ladegeräte, große und kleine Systeme, elektronische Waagen, Ohrthermometer, Blutdruckmessgeräte, Reifendruckmesser, diverse Mess- und Gesundheitsgeräte.
6. Winbond Electronics: mainly provides 8-bit and 16-bit MCUs. Application scope: automotive electronics, industrial electronics, network, computer, consumer electronics, Internet of Things.
7. Zehn-Bit-Technologie: Bietet hauptsächlich 4-Bit-, 8-Bit- und 51-Bit-Mikrocontroller an. Anwendungsbereich: Fernbedienungen, kleine Haushaltsgeräte.
8. Youhua Microelectronics: mainly provides 4-bit and 8-bit MCUs. Application scope: recording integrated circuit products, consumer electronics, household products.
9. Yingguang Technology Microcontroller: mainly provides 4-bit and 8-bit MCUs. Application scope: machinery, automation, home appliances, robots.
10. Elan Electronics: mainly provides 8-bit and 16-bit MCUs. Application scope: consumer electronics, computers, smartphones.
fünf
Tipps zum Erlernen von Mikrocontrollern
Die grundlegenden Prinzipien und Funktionen aller Mikrocontroller sind ähnlich. Der einzige Unterschied liegt in der Konfiguration und Anzahl der Peripheriefunktionsmodule, Befehlssysteme usw.
For instruction systems, although they appear to be very different in form, they are actually just different symbols. The meanings they represent, the functions to be completed, and the addressing methods are basically similar.
Um einen Mikrocontroller zu verstehen, muss man zunächst dessen ROM-Speicher, RAM-Speicher, Anzahl der E/A-Ports, Anzahl der Timer und Timing-Methoden, bereitgestellte Peripheriefunktionsmodule (Peripherieschaltungen), Interruptquellen, Betriebsspannung und Leistungsaufnahme usw. kennen.
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.
Für Funktionen, die im Projekt benötigt werden, aber vom gewählten Mikrocontroller nicht bereitgestellt werden, ist ein genaues Verständnis der relevanten Mikrocontroller-Informationen erforderlich, um diese indirekt zu implementieren. Benötigt Ihr Projekt beispielsweise die Kommunikation mit dem COM-Port des PCs und der gewählte Mikrocontroller verfügt über keinen UART-Port, können Sie externe Interrupts verwenden.
Für die benötigten Ressourcen zur Projektentwicklung ist es wichtig, das Handbuch* sorgfältig zu lesen und zu verstehen. Nicht benötigte Funktionsmodule können Sie ignorieren oder nur überfliegen. Beim Erlernen von Mikrocontrollern steht die Anwendung im Vordergrund.
After clarifying the relevant functions of the MCU, you can start programming.
Anfänger oder Entwickler, die diesen Mikrocontroller zum ersten Mal verwenden, stoßen möglicherweise auf unklare Funktionsbeschreibungen. Für solche Probleme gibt es zwei Lösungsansätze: Entweder man schreibt ein spezielles Verifizierungsprogramm, um die beschriebenen Funktionen zu verstehen, oder man ignoriert diese Beschreibungen zunächst und programmiert den Mikrocontroller basierend auf dem aktuellen Verständnis, um ihn dann beim Debuggen anzupassen und zu verbessern. Die erste Methode eignet sich für Projekte mit ausreichend Zeit und für Anfänger, die zweite hingegen für Entwickler mit Erfahrung in der Mikrocontroller-Entwicklung oder bei einem engen Zeitplan.
Nehmen Sie sich nicht extra Zeit, um das Befehlssystem zu verstehen. Es ist lediglich eine logische Beschreibung. Sie können die relevanten Anweisungen nur dann betrachten, wenn Sie während der Programmierung Ihre eigene Logik und die logischen Anforderungen des Programms berücksichtigen. Mit zunehmender Programmiererfahrung werden Sie das Befehlssystem immer besser beherrschen und es sich schließlich unbewusst einprägen.
sechs
Microcontroller programming
Es besteht ein großer Unterschied zwischen der Programmierung von Mikrocontrollern und PCs. Obwohl C-basierte Entwicklungswerkzeuge für Mikrocontroller immer beliebter werden, ist Assembler für Entwickler, die effizienten Programmcode schreiben und Assembler bevorzugen, nach wie vor die prägnanteste und effektivste Programmiersprache.
For MCU programming, the basic framework can be said to be roughly the same. It is generally divided into three parts: the initialization part (this is the biggest difference between MCU programming and PC), the main program loop body and the interrupt handler. Their respective descriptions are as follows:
1. Initialisierung: Bei der Entwicklung aller MCU-Programme ist die Initialisierung der grundlegendste und wichtigste Schritt, der im Allgemeinen Folgendes umfasst:
Alle Interrupts maskieren und den Stackpointer initialisieren: Im Initialisierungsteil sollen im Allgemeinen keine Interrupts auftreten.
Löschen Sie den RAM-Bereich des Systems und den Anzeigespeicher: Auch wenn dies manchmal nicht unbedingt notwendig ist, empfiehlt es sich im Hinblick auf Zuverlässigkeit und Konsistenz, insbesondere um unerwartete Fehler zu vermeiden, gute Programmiergewohnheiten zu entwickeln.
Initialisierung des E/A-Ports: Legen Sie gemäß den Projektanforderungen den Eingangs- und Ausgangsmodus des jeweiligen E/A-Ports fest. Für den Eingangsport muss der Pull-up- oder Pull-down-Widerstand konfiguriert werden; für den Ausgangsport muss der Anfangspegel eingestellt werden, um unnötige Fehler zu vermeiden.
Interrupt-Einstellungen: Alle im Projekt benötigten Interruptquellen müssen aktiviert und die Auslösebedingungen festgelegt werden. Nicht verwendete redundante Interrupts müssen deaktiviert werden.
Initialisierung weiterer Funktionsmodule: Für alle zu verwendenden Peripheriefunktionsmodule des Mikrocontrollers müssen die entsprechenden Einstellungen gemäß den Anforderungen der Projektanwendung vorgenommen werden. Beispielsweise müssen für die UART-Kommunikation Baudrate, Datenlänge, Verifizierungsmethode und Stoppbitlänge festgelegt werden. Für den Programmierer-Timer müssen Taktquelle, Frequenzteilung und Reload-Daten konfiguriert werden.
Initialisierung der Parameter: Nach der Initialisierung der MCU-Hardware und -Ressourcen werden im nächsten Schritt einige im Programm verwendete Variablen und Daten initialisiert. Die Initialisierung dieses Teils muss projektspezifisch und unter Berücksichtigung der Gesamtstruktur des Programms erfolgen. Bei Anwendungen, die vordefinierte Projektdaten im EEPROM speichern, empfiehlt es sich, die relevanten Daten während der Initialisierung in den RAM der MCU zu kopieren. Dies verbessert die Zugriffsgeschwindigkeit des Programms und reduziert den Stromverbrauch des Systems (prinzipiell erhöht der Zugriff auf externes EEPROM den Stromverbrauch des Netzteils).
2. Main program loop body: Most MCUs run continuously for a long time, so their main program bodies are basically designed in a loop. For applications with multiple working modes, there may be multiple loop bodies, which are converted through status flags. For the main program body, the following modules are generally arranged:
Berechnungsprogramme: Da Berechnungsprogramme im Allgemeinen zeitaufwändig sind, lehnen wir deren Verarbeitung in Interrupts entschieden ab, insbesondere Multiplikations- und Divisionsoperationen.
Verarbeitungsprogramme mit geringen oder keinen Echtzeitanforderungen;
Anzeigeübertragungsprogramm: hauptsächlich für Anwendungen mit externen LED- und LCD-Treibern.
3. Interrupt-Handler: Das Interrupt-Programm wird hauptsächlich zur Bearbeitung von Aufgaben und Ereignissen mit hohen Echtzeitanforderungen verwendet, wie z. B. die Erkennung externer plötzlicher Signale, die Erkennung und Verarbeitung von Tastendrücken, das Zählen von Zeitabläufen, das Scannen von LED-Anzeigen usw.
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. Für die Anordnung der verschiedenen Aufgabenkörper verwenden unterschiedliche Mikrocontroller unterschiedliche Verarbeitungsmethoden:
For example, for low-speed, low-power MCU (Fosc=32768Hz) applications, considering that such projects are handheld devices and use ordinary LCD displays, the response to key presses and display response requires high real-time performance, so timed interrupts are generally used to process key presses. Actions and data display; for high-speed MCUs, such as Fosc>1MHz applications, since the MCU has enough time to execute the main program loop body at this time, it can only set various trigger flags in the corresponding interrupts and put all tasks in the main program body for execution.
5. Bei der MCU-Programmierung muss man einem Punkt besondere Aufmerksamkeit widmen:
Es ist notwendig zu verhindern, dass dieselbe Variable oder dieselben Daten gleichzeitig im Interrupt- und Hauptprogramm verwendet oder gesetzt werden. Eine effektive Methode hierfür ist, die Verarbeitung solcher Daten in einem Modul zu organisieren und anhand des Trigger-Flags zu entscheiden, ob zugehörige Operationen an den Daten durchgeführt werden sollen. In anderen Programmteilen (hauptsächlich Interrupts) werden die Trigger-Flags nur dort gesetzt, wo die Daten verarbeitet werden müssen. – Dadurch wird eine vorhersehbare und eindeutige Datenausführung gewährleistet.
sieben Engineer's summary of microcontroller programming
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. For modular programming in C language, you must first divide each module, program module by module, determine a sequence, follow the sequence, and then write the next module after the module is successful. For header files, write the module's header file after the module is written.
4. Ignorieren Sie Warnungen nicht. Sie deuten auf einen Fehler im Programm hin. Suchen Sie nach der Ursache und beheben Sie ihn. Gehen Sie dabei gezielt vor. Sie können im Internet recherchieren oder andere um Rat fragen. Beispielsweise könnte die Hauptfunktion eines anderen Projekts in dieses Projekt übernommen worden sein. Es könnten auch doppelte Funktionsnamen vorhanden sein. Analysieren Sie die experimentellen Ergebnisse und gehen Sie Schritt für Schritt vor. Möglicherweise wurde auch die falsche Schnittstelle für die Portdefinition ausgewählt. Wenn Sie ein Problem nicht lösen können, ist es ratsam, eine Pause einzulegen und darüber nachzudenken. Achten Sie auf jedes noch so einfache Problem, da sich Fehler eingeschlichen haben können.
Bei der Entwicklung von Mikrocontroller-Anwendungen stellen Probleme wie die Effizienz der Codenutzung, die Störfestigkeit und die Zuverlässigkeit von Mikrocontrollern weiterhin eine Herausforderung dar. Im Folgenden fassen wir einige grundlegende Fähigkeiten zusammen, die für die Mikrocontroller-Entwicklung unerlässlich sind.
acht
Microcontroller development skills
1. Wie man Fehler in Programmen reduziert
Was die Reduzierung von Programmfehlern betrifft, sollten Sie zunächst die folgenden Parameter für die Verwaltung von Werten außerhalb des zulässigen Bereichs berücksichtigen, die während des Systembetriebs beachtet werden sollten.
- Physikalische Parameter: Bei diesen Parametern handelt es sich hauptsächlich um Eingangsparameter des Systems. Dazu gehören Anregungsparameter, Betriebsparameter während der Datenerfassung und Ergebnisparameter am Ende der Datenverarbeitung.
- Ressourcenparameter: Bei diesen Parametern handelt es sich hauptsächlich um die Ressourcen von Schaltkreisen, Geräten und Funktionseinheiten im System, wie z. B. Speicherkapazität, Speichereinheitenlänge und Stapeltiefe.
- Anwendungsparameter: Diese Anwendungsparameter treten häufig als Anwendungsbedingungen bestimmter Mikrocontroller und Funktionseinheiten auf. Prozessparameter: Bezeichnet Parameter, die sich während des Systembetriebs systematisch ändern.
2 How to improve the efficiency of C language programming code
Die Verwendung der Programmiersprache C für Mikrocontroller ist ein unaufhaltsamer Trend in der Entwicklung und Anwendung von Mikrocontrollern. Um maximale Effizienz beim Programmieren in C zu erzielen, ist es ratsam, sich mit dem verwendeten C-Compiler vertraut zu machen. Testen Sie zunächst die Anzahl der Zeilen der Assembler-Anweisungen, die den verschiedenen C-Kompilierungen entsprechen, um die Effizienz zu ermitteln. Verwenden Sie beim Programmieren anschließend die Anweisung mit der höchsten Kompilierungseffizienz. Da sich die einzelnen C-Compiler unterscheiden, variiert auch die Kompilierungseffizienz. Die Codelänge und Ausführungszeit eines leistungsstarken C-Compilers für eingebettete Systeme sind nur 5–20 % länger als die derselben Funktion in Assemblersprache.
Für komplexe Projekte mit knappen Entwicklungszeiten kann C verwendet werden. Voraussetzung dafür ist jedoch, dass Sie mit der Programmiersprache C und dem C-Compiler des jeweiligen Mikrocontrollersystems sehr vertraut sind. Achten Sie besonders auf die vom C-Compiler unterstützten Datentypen und Algorithmen. Obwohl C die am weitesten verbreitete höhere Programmiersprache ist, verwenden verschiedene Mikrocontrollerhersteller unterschiedliche C-Compiler, insbesondere für die Ausführung bestimmter Funktionsbausteine. Wenn Sie diese Besonderheiten nicht verstehen, kann dies beim Debuggen zu zahlreichen Problemen führen und die Ausführungseffizienz im Vergleich zu Assembler deutlich verringern.
3. Wie lässt sich das Störungsproblem des Mikrocontrollers lösen?
Die effektivste Methode zur Vermeidung von Störungen besteht darin, die Störquelle zu entfernen und den Störpfad zu blockieren. Da dies jedoch oft schwierig ist, bleibt uns nur die Frage, ob die Störfestigkeit des Mikrocontrollers ausreichend ist. Neben der Verbesserung der Störfestigkeit von Hardwaresystemen gewinnt die softwarebasierte Störfestigkeit aufgrund ihrer flexiblen Gestaltung, der Einsparung von Hardwareressourcen und der hohen Zuverlässigkeit zunehmend an Bedeutung.
The most common phenomenon of microcontroller interference is reset. As for the program running away, software traps and watchdogs can actually be used to bring the program back to the reset state. Therefore, the most important thing for microcontroller software to resist interference is to handle the reset state.
Mikrocontroller verfügen üblicherweise über Flag-Register, mit denen sich die Ursache eines Resets ermitteln lässt. Zusätzlich können Sie auch eigene Flags im RAM speichern. Bei jedem Programmreset lassen sich durch die Auswertung dieser Flags verschiedene Reset-Ursachen bestimmen. Basierend auf den jeweiligen Flags können Sie direkt zum entsprechenden Programmabschnitt springen. Dadurch kann das Programm kontinuierlich ausgeführt werden, ohne dass der Benutzer den Reset während der Nutzung bemerkt.
4 How to test the reliability of the microcontroller system
Wenn ein Mikrocontroller-Systemdesign abgeschlossen ist, gibt es unterschiedliche Testpunkte und -methoden für verschiedene Mikrocontroller-Systemprodukte, aber einige müssen getestet werden:
- Überprüfen Sie die Vollständigkeit der Mikrocontroller-Softwarefunktion
- Power on and power off test
- Alterungstest
- Tests wie ESD und EFT
Manchmal können wir auch Schäden simulieren, die bei der Benutzung durch den Menschen auftreten können. Beispielsweise können wir die Kontaktanschlüsse des Mikrocontrollersystems absichtlich mit dem menschlichen Körper oder einem Kleidungsstück reiben, um die antistatische Wirkung zu testen. Oder wir verwenden eine leistungsstarke Bohrmaschine in der Nähe des Mikrocontrollersystems, um dessen Unempfindlichkeit gegenüber elektromagnetischen Störungen zu prüfen.
To sum up, the single-chip microcomputer has become an important aspect of computer development and application. The important significance of the application of single-chip microcomputer is that it fundamentally changes the traditional control system design ideas and design methods.
Die meisten Funktionen, die früher mit analogen oder digitalen Schaltungen realisiert werden mussten, lassen sich heute mithilfe von Mikrocontrollern softwareseitig umsetzen. Diese Steuerungstechnik, bei der Software Hardware ersetzt, wird auch als Mikrosteuerungstechnik bezeichnet und stellt eine Revolution in der traditionellen Steuerungstechnik dar.
In addition, during the development and application process, we must master skills and improve efficiency so that it can be used for a wider range of purposes.
Neun
Zusammenfassung der Chip-Funktion Die Operationen auf dem Chip sind hauptsächlich Operationen auf den Registern des Chips. Die Register haben jeweils eindeutige Adressen im Speicher, die der entsprechenden Adresse zugeordnet sind. Bei der Betrachtung des Chips sollte man zunächst das Timing-Diagramm analysieren, dann die zugehörigen Register und ihre Funktionsweise verstehen, die benötigten Ports definieren (die vom Programm identifiziert werden können) und schließlich Schreib- und Leseprozeduren schreiben.
Wie man Daten in den Chip schreibt, wie man Daten liest und über welchen Port man Daten eingibt oder ausliest (das Wichtigste).
Beim Verbinden von Chips über einen Bus muss man zunächst das Busprotokoll verstehen. Der an den I2C-Bus angeschlossene Chip steuert hauptsächlich andere Chips über diesen Bus.
1. Eine 74HC595-LED in der Punktmatrix dient der Spaltenauswahl, die beiden anderen der Farbauswahl. Die Punktmatrix entspricht einer Anordnung von Dioden.
Only when one end is given a high level and the other end is given a low level can the diode light up. It's just that when one end is selected differently, different colors will light up.
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. Serielle Schnittstelle: Im Modus 2 (automatisches Neuladen des Anfangswerts) wird üblicherweise die Baudrate eingestellt. Da verschiedene Geräte unterschiedliche Datenverarbeitungskapazitäten besitzen, dient die Baudrateneinstellung hauptsächlich der Kommunikation zwischen Geräten mit niedriger Geschwindigkeit. Das Interrupt-Flag muss per Software gelöscht werden. Beim Einrichten eines seriellen Interrupts kann dieser unabhängig vom Sende- oder Empfangsmodus ausgelöst werden. Achten Sie daher auf die korrekte Konfiguration der Interruptfunktion. (Die Konfiguration erfolgt in der Regel intuitiv, je nachdem, ob es sich um einen Host- oder einen Slave-Computer handelt.)
Wenn Sie einen Interrupt zum Senden verwenden, müssen Sie zunächst herausfinden, wie Sie den Interrupt beim ersten Mal auslösen. Dazu müssen Sie das Byte einmal senden, bevor Sie den Interrupt auslösen können. Es kann jeweils nur ein Byte gesendet werden, und das nächste Bit kann erst gesendet werden, nachdem TI gesetzt wurde.
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. Bei der Da-Konvertierung wird zuerst die Geräteadresse in den Chip geschrieben, dann die Subadresse (0x40) und schließlich der zu konvertierende digitale Wert. Informationen zum Geräteadressen-Chip werden erläutert.
5. For the LCD display, after the data is written and displayed, it will always be displayed without continuous refresh. If you want to change it, you can only re-enter it.
6. For the ds1302 clock chip, when reading data, the first data is read at the falling edge of the eighth clock when writing data, and then prepares for the next output. Pay attention to the writing method of the program and the location of the return value.
7. Zuerst das Register im DS1302 festlegen und dann Daten hineinschreiben. Das Register im Chipdatenspeicher gibt die Adresse an. (Ich verstehe das Schreibschutzprogramm immer noch nicht ganz. Findet nicht ständig ein Schreibvorgang statt? Warum ist der Schreibschutz trotzdem aktiviert?)
(Laut dem vorherigen Beitrag kann man nach der Initialisierungszeit ein Flag setzen. Existiert dieses Flag, ist keine weitere Initialisierung nötig. Wird das Gerät jedoch ausgeschaltet, kann der RAM des Mikrocontrollers dieses Flag nicht speichern. Daher kann man den RAM des DS1302 nutzen, um das Flag zu speichern und es nach dem Einschalten wieder auszulesen. Ich bin selbst noch Anfänger und plane, den DS1302 demnächst einzusetzen. Ich bin mir nicht sicher, ob das so korrekt ist und habe es noch nicht implementiert. Könnten Sie mir bitte weitere Informationen geben?)
8. It is best to write down the initialization in case you forget it later. Sometimes pay attention to whether the lowest bit or the highest bit is operated first when reading or writing, which can be judged according to the timing diagram.
9. For infrared transceiver, when receiving, it determines whether it is high level or low level based on the time between two falling edges. When writing a program, first use a timer to determine the time, save it, and then convert it into binary (read more about how to write this program, it is very good).
10. Schrittmotor: Er wird hauptsächlich zum Schalten eingesetzt. Das Drehmoment des Schrittmotors nimmt mit steigender Drehzahl ab. Er dient vorwiegend der automatischen Zuführung von Werkstücken an Werkzeugmaschinen. Darüber hinaus kann er in Bereichen mit hohen Präzisionsanforderungen eingesetzt werden.
Der Schrittmotor ist ein Schrittmotor mit offener Regelung, der elektrische Impulssignale in Winkel- oder Linearbewegungen umwandelt. Im Normalbetrieb hängen Drehzahl und Stoppposition des Motors ausschließlich von Frequenz und Anzahl der Impulse ab und werden nicht durch Laständerungen beeinflusst. Empfängt der Schrittmotortreiber ein Impulssignal, steuert er den Motor in die vorgegebene Richtung um einen festen Winkel, den sogenannten Schrittwinkel. Die Drehung erfolgt schrittweise um diesen Winkel. Die Winkelbewegung lässt sich durch die Anzahl der Impulse präzise steuern, um eine genaue Positionierung zu erreichen. Gleichzeitig können Drehzahl und Beschleunigung durch die Impulsfrequenz geregelt werden.
11. Servo motor: (servo motor) refers to the engine that controls the operation of mechanical components in the servo system. It is an indirect transmission device that assists the motor. Servo motors can control speed and position accuracy very accurately, and can convert voltage signals into torque and rotational speed to drive control objects. The rotor speed of the servo motor is controlled by the input signal and can respond quickly. In the automatic control system, it is used as an actuator and has the characteristics of small electromechanical time constant, high linearity, starting voltage, etc. It can convert the received electrical signal into the angular displacement or angular velocity output on the motor shaft. They are divided into two categories: DC and AC servo motors. Their main feature is that there is no rotation when the signal voltage is zero, and the rotational speed decreases at a constant speed as the torque increases. DC motor: Large range, all on small cars.
12. Überblick über chinesische Schriftzeichen:
Um chinesische Schriftzeichen auf einem Monitor oder Drucker auszugeben, werden die chinesischen Schriftzeichen anhand grafischer Symbole in eine Punktmatrix umgewandelt, und der entsprechende Punktmatrixcode (Glyphencode) wird ermittelt.
Die einheitliche Kodierungsmethode zur Darstellung chinesischer Schriftzeichen im Computer erzeugt eine Zeichenkodierung, den sogenannten internen Code (z. B. einen nationalen Standardcode). Dieser interne Code ist eindeutig (entspricht der ID-Nummer des Zeichens). Die für die Eingabe chinesischer Schriftzeichen verwendete Kodierung ist ein Eingabecode, der die Zeichen kodiert. Dieser Eingabecode variiert je nach Kodierungsmethode. Der Code für die Anzeige und den Druck chinesischer Schriftzeichen ist ein Glyphencode. Der Computer findet den Glyphencode des Zeichens in der Schriftmodellbibliothek anhand des internen Codes und führt die Konvertierung durch.
In-Camera-Code
According to the provisions of the national standard code, each Chinese character has a certain binary code, but this code will conflict with the ASCII code when processed internally by the computer. To solve this problem, add 1 to the first digit of each byte of the national standard code. Since the ASCII code only uses 7 bits, the "1" in the first place can be used as a mark to identify Chinese character codes. When the computer processes the code with "1" in the first place, it understands it as Chinese character information, and when it processes the code with "0" in the first place, it understands it as an ASCII code. The national standard code (internal code) processed in this way is the internal code.
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.
Zwei Kodierungsmethoden, siehe Headerdatei
GB1616.h//------------------ Definition der Datenstruktur für chinesische Zeichensätze ------------------------//structtypFNT_GB16 //Datenstruktur für chinesische Zeichensätze {unsignedcharIndex[3]; //Index des internen Codes chinesischer Zeichen unsignedchar Msk[32];//Punktmatrix-Codedaten }; //////////////////////////////////////////////////////////////////////////////////// Chinesische Zeichentabelle//// Chinesische Zeichenbibliothek: Song-Dynastie 16.dot, horizontal modulo linkes höchstes Bit, Datenanordnung: von links nach rechts, von oben nach unten//////////////////////////////////////////////////////////////////////////////////////////conststructtypFNT_GB16 codeGB_16[]= //Datentabelle{/*---------------------------------------------------------------------------------;Quelldatei/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, 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] 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 LCD: Jeder Anzeigepunkt entspricht einer Binärzahl: 1 bedeutet an, 0 bedeutet aus. Der RAM, der diese Punktmatrixinformationen speichert, wird als Anzeigedatenspeicher bezeichnet. Um eine bestimmte Grafik oder ein chinesisches Schriftzeichen anzuzeigen, müssen die entsprechenden Punktmatrixinformationen in die entsprechende Speichereinheit geschrieben werden.
Der Adresszähler (AC) des Grafikspeichers erhöht automatisch nur die horizontale Adresse (X-Achse) um eins. Sobald die horizontale Adresse 0FH erreicht, wird sie auf 00H zurückgesetzt. Die vertikale Adresse wird jedoch nicht automatisch um einen Übertrag erhöht. Daher muss das Programm bei aufeinanderfolgenden Schreibvorgängen prüfen, ob die vertikale Adresse zurückgesetzt werden muss.
14. Drawing RAM (GDRAM) Der Grafikspeicher (RAM) bietet 128×8 Byte Speicherplatz. Beim Ändern des Grafikspeichers werden zunächst die horizontalen und vertikalen Koordinatenwerte fortlaufend geschrieben, anschließend zwei Datenbytes. Der Adresszähler (AC) erhöht die horizontale Adresse (X-Adresse) automatisch um eins. Sobald die horizontale Adresse 0XFH erreicht, wird sie auf 00H zurückgesetzt; die vertikale Adresse wird nicht automatisch um 1 erhöht. Der Grafikspeicher muss während des Schreibvorgangs in den Grafikspeicher ausgeschaltet sein.
[cpp] view plain copy//Chinesische Zeichen anzeigen voiddispString (uchar X, Y,uchar *msg)//Welche Zeile ist X und welche Spalte ist Y. msg sind chinesische Zeichen {if(X==0) write_data(*msg++); //Chinesische Zeichen anzeigen }}///////////////////////////////// //////////////// ////////////////// Bild anzeigen voiddisppicture(uchar code *adder){ uint i,j;//*******Einstellungen für den Inhalt der oberen Bildschirmhälfte anzeigen for(i=0;i<32;i++)//32 Spaltenadressen in der oberen Bildschirmhälfte { write_com(0x80 + i);//Vertikale Adresse setzen VERTICALADD write_com(0x80);//Horizontale Adresse setzen HORIZONTALADDfor(j=0;j<16;j++) { write_data(*adder); adder++; }}//************Einstellungen für den Inhalt der unteren Bildschirmhälfte anzeigen for(i=0;i<32;i++) //{ write_com(0x80 + i); //Setze vertikale Adresse VERTICALADD write_com(0x88); //Setze horizontale Adresse HORIZONTAL ADDfor(j=0;j<16;j++){write_data(*adder);adder++;} }} For C language, space is automatically allocated for a defined variable, and its address is the name of the variable. Through this name, the data can be retrieved in the memory and new data can be obtained through calculation. However, in assembly, the programmer needs to define the storage space and send the data to the accumulator for calculation. Every step requires the programmer's operation. In C language, these processes are completed by the compiler.
15. Einige nützliche Fragen und Antworten ①. How is the memory allocation of variables carried out in microcontroller C language? Could it be that the compiler intelligently adds allocation and recycling code during the compilation process? The key point is that the program I made, how can I ensure that it does not have memory overflow errors? If I'm doing a recursive operation, then the memory requirements are difficult to calculate by myself.
②. Will the microcontroller C language be restricted in variable definition? For example, the multiplication and division operations of floating-point data are written through assembly, and the code is quite complicated. If written directly in C language, wouldn't it be too simple?
③. In the hex file generated by the C language of the microcontroller, is the address distribution of the instruction and data ROM automatically assigned by the compiler? Can users assign it?
Answer 1: A microcontroller program written in C language is first compiled by a program (it seems to be c51.exe). After the compilation is completed, the storage space size of the variables has been arranged, but the specific address has not yet been allocated (the address is floating). Next, another program (it seems to be a51.exe) is connected. After the connection, the specific address is determined.
Sind zu viele Variablen vorhanden, meldet der Compiler, dass das Datensegment zu groß ist. Um einen Speicherüberlauf zu vermeiden, ist vor allem zu prüfen, ob ein Stacküberlauf auftritt; dies hängt von der Erfahrung ab.
Die Programmiersprache C von Mikrocontrollern verbietet im Allgemeinen Rekursion, und rekursive Operationen werden generell vermieden. Schließlich sind Mikrocontroller keine PCs, was die Geschwindigkeit beeinträchtigen würde. Wenn Sie Rekursion benötigen, ist der Einsatz eines DSP-Chips sinnvoller. Kurz gesagt: Sie müssen den passenden Chip auswählen können.
Antwort 2: Die Größe der Variablen (Anzahl der Stellen) entspricht im Allgemeinen der Anzahl der Stellen im Chip-Akkumulator. Beispielsweise verwendet 51 üblicherweise 8 Bit, da es sich um einen 8-Bit-Mikrocontroller handelt.
Der Mikrocontroller kann Bitvariablen, aber keine Bitarrays definieren. Die Programmierung in C erscheint zwar einfach, erzeugt aber tatsächlich den größten Codeumfang. Der zur Steuerung verwendete Mikrocontroller nutzt kaum Gleitkommaoperationen, was nicht nur langsam, sondern auch umständlich ist und Speicherplatz benötigt. Bei einem DSP-Chip wäre eine geeignete Hardwarestruktur deutlich vorteilhafter.
Antwort 3: Im Allgemeinen wird der Speicherplatz automatisch zugewiesen. Die Programmierung kann in einer Mischung aus C und Assemblersprache erfolgen oder online mit Keil C assembliert werden. Der Datenaustausch zwischen dem Chip und der Außenwelt erfolgt über den Port.
Firmentelefonnummer: +86-0755-83044319
Fax: +86-0755-83975897
E-Mail: 1615456225@qq.com
QQ: 3518641314 Manager Li
QQ: 332496225 Manager Qiu
Adresse: Raum 809, Gebäude C, Zhantao Technology Building, Minzhi Avenue 1079, Longhua New District, Shenzhen