MCU to jednostka mikrokontrolera. Skrót „mikrokontroler” w języku chińskim, powszechnie znany jako mikrokomputer jednoprocesorowy, oznacza odpowiednio zredukowaną częstotliwość i parametry procesora oraz zintegrowanie interfejsów peryferyjnych, takich jak pamięć, licznik, USB, przetwornik analogowo-cyfrowy, UART, PLC, DMA, a nawet obwody sterownika LCD, na jednym chipie, tworząc komputer na poziomie chipa. Może on realizować różne kombinacje sterowania dla różnych zastosowań, takich jak telefony komórkowe, urządzenia peryferyjne komputerów, piloty zdalnego sterowania, elektronika samochodowa, przemysłowe silniki krokowe i sterowanie ramieniem robota. MCU przedstawiono na rysunku.
pierwszej
Krótka historia rozwoju mikrokontrolerów
Historia mikrokontrolerów nie jest długa, ale rozwijała się bardzo dynamicznie. Ich produkcja i rozwój są zazwyczaj zsynchronizowane z produkcją i rozwojem mikroprocesorów (CPU). Od czasu, gdy amerykańska firma Intel Corporation wprowadziła na rynek pierwszy 4-bitowy mikroprocesor w 1971 roku, jego dotychczasowy rozwój można podzielić na pięć etapów. Poniżej znajduje się wprowadzenie do rozwoju mikrokontrolerów firmy Intel Corporation.
1971 ~ 1976
Początkowy etap rozwoju mikrokontrolerów. W listopadzie 1971 roku Intel po raz pierwszy zaprojektował Intel 4004, 4-bitowy mikroprocesor z integracją 2,000 tranzystorów w układzie scalonym, wyposażony w pamięć RAM, ROM i rejestr przesuwny, tworząc pierwszy mikroprocesor MCS-4. Następnie firma wprowadziła na rynek 8-bitowy mikroprocesor Intel 8008 oraz inne 8-bitowe mikroprocesory innych firm.
1976 ~ 1980
Mikrokontroler o niskiej wydajności. Reprezentowany przez serię MCS-48, wprowadzoną przez firmę Intel w 1976 roku, wykorzystuje monolityczną strukturę, która integruje 8-bitowy procesor, 8-bitowy równoległy interfejs wejścia/wyjścia, 8-bitowy timer/licznik, pamięć RAM i ROM na układzie półprzewodnikowym. Chociaż zakres adresowania jest ograniczony (nie więcej niż 4 KB), nie ma szeregowego wejścia/wyjścia, pojemność pamięci RAM i ROM jest niewielka, a system przerwań jest stosunkowo prosty, jego funkcje mogą sprostać potrzebom ogólnego sterowania przemysłowego oraz inteligentnych instrumentów i mierników.
1980 ~ 1983
Etap mikrokontrolerów o wysokiej wydajności. Wysokowydajne 8-bitowe mikrokontrolery wprowadzone na ten etap zazwyczaj posiadają porty szeregowe, wielopoziomowe systemy przetwarzania przerwań oraz wiele 16-bitowych timerów/liczników. Pojemność wbudowanej pamięci RAM i ROM została zwiększona, a zakres adresowania może osiągnąć 64 KB. Niektóre układy posiadają również interfejs konwersji analogowo-cyfrowej.
1983 ~ koniec lat 1980.
Etap 16-bitowego mikrokontrolera. W 1983 roku Intel wprowadził na rynek wysokowydajny 16-bitowy mikrokontroler serii MCS-96. Dzięki zastosowaniu najnowszej technologii produkcji, poziom integracji układów sięga aż 120 000 tranzystorów na układ.
1990s
Mikrokontrolery rozwijają się na coraz wyższym poziomie pod względem integracji, funkcjonalności, szybkości, niezawodności i obszarów zastosowań.
drugiej
Klasyfikacja i zastosowanie mikrokomputerów jednoprocesorowych
Mikrokontrolery można podzielić na dwa typy ze względu na rodzaj pamięci: bez pamięci ROM na chipie i z pamięcią ROM na chipie. W przypadku mikrokontrolerów bez pamięci ROM na chipie, przed ich użyciem należy podłączyć zewnętrzną pamięć EPROM (zazwyczaj 8031). Mikrokontrolery z pamięcią ROM na chipie dzielą się na: z pamięcią EPROM na chipie (typowy układ to 87C51), z pamięcią ROM z maską na chipie (typowy układ to 8051), z pamięcią Flash na chipie (typowy układ to 89C51) i inne.
Zależnie od przeznaczenia można je podzielić na typy ogólnego przeznaczenia i specjalistycznego przeznaczenia; ze względu na szerokość magistrali danych i długość bajtów danych, które można przetwarzać jednocześnie, można je podzielić na mikrokontrolery 8-, 16- i 32-bitowe.
Obecnie najbardziej rozbudowanym rynkiem zastosowań mikrokontrolerów (MCU) w kraju jest elektronika użytkowa, a następnie przemysł i elektronika samochodowa. Elektronika użytkowa obejmuje urządzenia gospodarstwa domowego, telewizory, konsole do gier, systemy audio i wideo itp. Dziedziny przemysłowe obejmują inteligentne domy, automatykę, zastosowania medyczne oraz wytwarzanie i dystrybucję energii. Sektor motoryzacyjny obejmuje układy napędowe i systemy sterowania bezpieczeństwem.
trzy
Podstawowe funkcje mikrokontrolera
W przypadku większości mikrokontrolerów poniższe funkcje są najpowszechniejsze i najbardziej podstawowe. W zależności od mikrokontrolera sposób ich opisu może się różnić, ale zasadniczo są one takie same:
1. TImer (timer): Chociaż istnieje wiele typów timerów, można je podzielić na dwie kategorie: Pierwszy typ to timer ze stałymi interwałami czasowymi, czyli czas taktowania jest ustawiany przez system i nie może być kontrolowany przez program użytkownika. System udostępnia jedynie kilka stałych interwałów czasowych do wyboru przez program użytkownika, takich jak 32 Hz, 16 Hz, 8 Hz itd. Ten typ timera jest bardziej powszechny w 4-bitowych mikrokontrolerach, dlatego może być używany do implementacji zegara, pomiaru czasu i innych powiązanych funkcji.
Drugim typem timera jest programowalny timer. Jak sama nazwa wskazuje, czas odliczania tego typu timera może być kontrolowany przez program użytkownika. Metody sterowania obejmują: wybór źródła sygnału zegarowego, wybór podziału częstotliwości (preskalera) oraz ustawienie numeru presetu. Niektóre mikrokontrolery oferują wszystkie trzy funkcje jednocześnie, podczas gdy inne mogą mieć jedną lub dwie. Ten typ timera jest bardzo elastyczny, a jego rzeczywiste zastosowanie również ulega ciągłym zmianom. Jednym z najczęstszych zastosowań jest implementacja sygnału PWM.
Ponieważ źródło sygnału zegara można swobodnie wybierać, ten typ licznika czasu łączy się zazwyczaj z licznikiem zdarzeń.
2. Porty IO: Każdy mikrokontroler (MCU) posiada określoną liczbę portów IO. Bez portów IO mikrokontroler traci kanał komunikacji ze światem zewnętrznym. Ze względu na konfigurowalność portu IO, można go podzielić na następujące typy:
Czysty port wejściowy lub wyjściowy: Ten typ portu IO jest determinowany przez konstrukcję sprzętową mikrokontrolera (MCU). Może on pełnić wyłącznie funkcję wejścia lub wyjścia, a oprogramowanie nie może być używane do ustawień w czasie rzeczywistym.
Bezpośredni odczyt i zapis portów IO: Na przykład port IO komputera MCS-51 należy do tego typu portu IO. Po wykonaniu instrukcji odczytu portu IO staje się on portem wejściowym; po wykonaniu instrukcji zapisu portu IO staje się on automatycznie portem wyjściowym.
Programowanie w celu ustawienia kierunku wejścia i wyjścia: Wejście lub wyjście tego typu portu IO jest ustawiane przez program zgodnie z rzeczywistymi potrzebami. Aplikacja jest stosunkowo elastyczna i może realizować niektóre aplikacje na poziomie magistrali, takie jak magistrala I2C, różne magistrale sterujące wyświetlaczami LCD, sterownikami LED itp.
W przypadku korzystania z portów IO należy pamiętać o następujących ważnych kwestiach: w przypadku portu wejściowego musi być dostępny sygnał o odpowiednim poziomie, aby mieć pewność, że nie będzie on się zmieniał (można to uzyskać, dodając rezystor podciągający lub obniżający); w przypadku portu wyjściowego poziom stanu wyjściowego musi uwzględniać warunki jego zewnętrznego połączenia, a także należy upewnić się, że w stanie czuwania lub statycznym nie występuje pobieranie ani pobieranie prądu.
3. Przerwanie zewnętrzne: Przerwanie zewnętrzne jest również podstawową funkcją większości mikrokontrolerów (MCU). Jest ono zazwyczaj wykorzystywane do wyzwalania sygnałów w czasie rzeczywistym, próbkowania danych i wykrywania stanu. Metody obsługi przerwań obejmują wyzwalanie zboczem narastającym, wyzwalanie zboczem opadającym i wyzwalanie poziomem. Przerwania zewnętrzne są zazwyczaj realizowane za pośrednictwem portów wejściowych. Jeśli jest to port IO, jego funkcja przerwania zostanie włączona tylko wtedy, gdy jest ustawiony na wejście; jeśli jest to port wyjściowy, funkcja przerwania zewnętrznego zostanie automatycznie wyłączona (istnieją pewne wyjątki w serii ATiny firmy ATMEL, które również mogą wyzwalać funkcję przerwania, gdy jest to port wyjściowy). Zastosowania przerwań zewnętrznych są następujące:
Wykrywanie zewnętrznych sygnałów wyzwalających: Jeden z nich opiera się na wymaganiach czasu rzeczywistego, takich jak sterowanie tyrystorami, wykrywanie nagłych sygnałów itp., drugi zaś wynika z konieczności oszczędzania energii.
Pomiar częstotliwości sygnału: Aby mieć pewność, że sygnał nie zostanie pominięty, idealnym wyborem jest przerwanie zewnętrzne.
Decoding of data: In the field of remote control applications, in order to reduce the cost of design, it is often necessary to use software to decode various encoded data, such as the decoding of Manchester and PWM encoding.
Wykrywanie klawiszy i wybudzanie systemu: Mikrokontrolery, które przechodzą w stan uśpienia, zazwyczaj wymagają wybudzenia za pomocą przerwań zewnętrznych. Najprostszą formą jest naciśnięcie klawisza, które powoduje zmianę poziomu poprzez jego naciśnięcie.
4. Interfejs komunikacyjny: Interfejs komunikacyjny zapewniany przez mikrokontroler obejmuje zazwyczaj interfejs SPI, UART, interfejs I2C itp., które są opisane w następujący sposób:
Interfejs SPI: Ten typ interfejsu to najprostsza metoda komunikacji oferowana przez większość mikrokontrolerów (MCU). Transmisja danych jest kontrolowana przez zegar synchroniczny. Sygnały obejmują: SDI (szeregowe wejście danych), SDO (szeregowe wyjście danych), SCLK (szeregowy zegar) oraz sygnał gotowości; w niektórych przypadkach sygnał gotowości może nie występować; ten typ interfejsu może pracować w trybie master lub slave. W uproszczeniu, zależy to od tego, kto dostarcza sygnał zegarowy. Stroną dostarczającą zegar jest master, a stroną przeciwną – slave.
UART (Universal Asynchronous Receive Transmit): To najprostszy asynchroniczny interfejs transmisyjny. Posiada tylko dwie linie sygnałowe: Rx i Tx. Podstawowy format danych to: bit startu + bit danych (7/8 bitów) + bit parzystości (parzysty, nieparzysty lub brak) + bit stopu (1-2 bity). Czas potrzebny na przesłanie jednego bitu danych nazywa się szybkością transmisji (Baud Rate).
W przypadku większości mikrokontrolerów (MCU) długość bitów danych, tryb kontroli danych (kontrola nieparzysta, kontrola parzysta lub brak kontroli), długość bitu stopu i prędkość transmisji można elastycznie ustawić za pomocą programowania. Najczęściej stosowaną metodą tego typu interfejsu jest komunikacja z portem szeregowym komputera PC.
Interfejs I2C: I2C to protokół transmisji danych opracowany przez firmę Philips. Jest on również implementowany za pomocą dwóch sygnałów: SDAT (szeregowe wejście i wyjście danych) oraz SCLK (szeregowy zegar). Jego największą zaletą jest możliwość podłączenia wielu urządzeń do tej magistrali oraz ich identyfikacji i dostępu do nich za pomocą adresów; jedną z największych zalet magistrali I2C jest bardzo wygodna implementacja oprogramowania za pomocą portu IO. Prędkość transmisji danych jest w pełni kontrolowana przez SCLK, który może być szybki lub wolny, w przeciwieństwie do interfejsu UART, który ma rygorystyczne wymagania dotyczące prędkości.
5. Watchdog (zegarek): Watchdog to również podstawowa konfiguracja większości mikrokontrolerów (niektóre 4-bitowe mikrokontrolery mogą nie posiadać tej funkcji). Watchdog większości mikrokontrolerów pozwala programowi jedynie na zresetowanie go, ale nie na jego wyłączenie (niektóre są ustawiane podczas uruchamiania programu, jak w przypadku mikrokontrolerów Microchip z serii PIC), a niektóre mikrokontrolery wykorzystują specjalną metodę decydowania o jego włączeniu, jak w przypadku serii KS57 firmy Samsung. Dopóki program uzyskuje dostęp do rejestru Watchdog, jest on automatycznie włączany i nie można go ponownie wyłączyć. Ogólnie rzecz biorąc, czas resetowania Watchdoga można ustawić programowo. Najprostszym zastosowaniem Watchdoga jest zapewnienie możliwości samoczynnego odzyskiwania mikrokontrolerów, które uległy awarii z powodu nieoczekiwanych awarii.
Cztery
Globalny producent popularnych mikrokontrolerów
(Posortowane według dowolnej kolejności, podzielone według głównych producentów. Jeśli czegoś brakuje, prosimy o dodanie tego w polu komentarza)
Europa i Ameryka
1. Freescale+NXP (Freescale+NXP): Holandia, dostarcza głównie mikrokontrolery 16-bitowe i 32-bitowe. Zastosowania: elektronika samochodowa, diody LED i oświetlenie ogólne, opieka zdrowotna, konwergencja multimediów, urządzenia gospodarstwa domowego i elektronarzędzia, systemy automatyki budynkowej, sterowanie silnikami, zasilacze i przetwornice napięcia, sieci energetyczne i inteligentne, automatyka, infrastruktura komputerowa i komunikacyjna.
2. Microchip+Atmel (Microchip Technology + Atmel): Stany Zjednoczone, głównie dostawcy mikrokontrolerów 16-bitowych i 32-bitowych. Zastosowania: elektronika samochodowa, zastosowania przemysłowe, sterowanie silnikami, motoryzacja, automatyka budynkowa, sprzęt AGD, rozrywka domowa, automatyka przemysłowa, oświetlenie, Internet Rzeczy, inteligentna energia, mobilny sprzęt elektroniczny, urządzenia peryferyjne.
3. Cypress+Spansion (Cypress + Spansion Semiconductor): Stany Zjednoczone, głównie dostawca mikrokontrolerów 8-bitowych, 16-bitowych i 32-bitowych. Zastosowania: elektronika samochodowa, sprzęt AGD, medycyna, elektronika użytkowa, komunikacja i telekomunikacja, przemysł, systemy bezprzewodowe.
4. ADI (Analog Devices): Stany Zjednoczone, dostarcza głównie mikrokontrolery 8-bitowe, 16-bitowe i 32-bitowe. Zastosowania: przemysł lotniczy i obronny, motoryzacja, budownictwo, komunikacja, elektronika użytkowa, energetyka, opieka zdrowotna, aparatura pomiarowa i pomiarowa, silniki, automatyka przemysłowa, bezpieczeństwo.
5. Infineon: Niemcy, dostarcza głównie mikrokontrolery 16-bitowe i 32-bitowe. Zastosowania: elektronika samochodowa, elektronika użytkowa, inżynieria, pojazdy użytkowe i rolnicze, przetwarzanie danych, transport elektryczny, zastosowania przemysłowe, sprzęt medyczny, urządzenia mobilne, sterowanie i napędy silników, zasilanie motocykli, rowerów elektrycznych i małych pojazdów elektrycznych, inteligentne sieci energetyczne, oświetlenie, rozwiązania dla systemów solarnych i energetyki wiatrowej.
6. ST Microelectronics: Włochy/Francja, dostarcza głównie 32-bitowe mikrokontrolery. Zastosowania: diody LED i oświetlenie ogólne, transport, opieka zdrowotna, konwergencja multimediów, urządzenia gospodarstwa domowego i elektronarzędzia, automatyka budynkowa, sterowanie silnikami, zasilacze i przetwornice napięcia, sieci energetyczne i inteligentne, automatyka, infrastruktura komputerowa i komunikacyjna.
7. Qualcomm: Stany Zjednoczone, dostarcza głównie mikrokontrolery 16-bitowe i 32-bitowe. Zastosowania: smartfony, tablety, modemy bezprzewodowe.
8. Texas Instruments: Stany Zjednoczone, dostarcza głównie mikrokontrolery 16-bitowe i 32-bitowe. Zakres zastosowań: elektronika samochodowa, elektronika użytkowa, sprzęt medyczny, urządzenia mobilne, komunikacja.
9. Maxim (Maxim): Stany Zjednoczone, głównie dostawca 32-bitowych mikrokontrolerów. Zakres zastosowań: elektronika samochodowa, elektronika użytkowa, zastosowania przemysłowe, bezpieczeństwo.
Japonia i Korea Południowa
1. Renesas: Japonia, dostarcza głównie mikrokontrolery 16-bitowe i 32-bitowe. Zakres zastosowań: komputery i urządzenia peryferyjne, elektronika użytkowa, elektronika medyczna i medyczna, elektronika samochodowa, przemysł i komunikacja.
2. Toshiba: Japonia, dostarcza głównie mikrokontrolery 16-bitowe i 32-bitowe. Zakres zastosowań: elektronika samochodowa, zastosowania przemysłowe, sterowanie silnikami, komunikacja bezprzewodowa, telefony komórkowe, komputery i urządzenia peryferyjne, obrazowanie oraz audio i wideo, urządzenia konsumenckie (sprzęt AGD), oświetlenie LED, systemy bezpieczeństwa, zarządzanie energią, sprzęt rozrywkowy.
3. Fujitsu: Japan, mainly provides 32-bit MCU. Application scope: automobile, medical, machinery, home appliances.
4. Samsung Electronics: Korea Południowa, dostarcza głównie mikrokontrolery 16-bitowe i 32-bitowe. Zastosowania: elektronika samochodowa, zastosowania przemysłowe, sterowanie silnikami, motoryzacja, automatyka budynkowa, sprzęt AGD, rozrywka domowa, automatyka przemysłowa, oświetlenie, Internet Rzeczy, inteligentna energia, mobilny sprzęt elektroniczny, urządzenia peryferyjne.
Region Chin
Chiny kontynentalne
1. Sigma Microelectronics: Dostarcza głównie 32-bitowe mikrokontrolery o szerokim zakresie zastosowań: telekomunikacja, produkcja, energetyka, transport, elektryczność itp.
2. Zhuhai Orbit: Dostarcza głównie 32-bitowe mikrokontrolery, zakres zastosowań: przemysł lotniczy i kosmiczny: stacje satelitarne, statki, samoloty; zaawansowana kontrola przemysłowa: komputery wbudowane; kontrola statków, kontrola przemysłowa, urządzenia energetyczne, monitorowanie środowiska.
3. Innowacja GigaDevice: Dostarcza głównie 32-bitowe mikrokontrolery, zakres zastosowań: automatyka przemysłowa, interfejs człowiek-maszyna, sterowanie silnikami, monitorowanie bezpieczeństwa, inteligentny dom, Internet rzeczy.
4. Shengsi Microelectronics: Dostarcza głównie mikrokontrolery 8-bitowe i 32-bitowe. Zakres zastosowań: małe urządzenia gospodarstwa domowego, elektronika użytkowa, piloty, myszy, baterie litowe, produkty cyfrowe, elektronika samochodowa, instrumenty medyczne i pomiarowe, zabawki, sterowanie przemysłowe, inteligentny dom i systemy bezpieczeństwa oraz inne dziedziny.
5. Chipsea Technology: Dostarcza głównie mikrokontrolery 16- i 32-bitowe. Zakres zastosowań: instrumenty pomiarowe, Internet Rzeczy, elektronika użytkowa, sprzęt AGD i elektronika samochodowa.
6. Lianhua Integrated Circuit: Dostarcza głównie mikrokontrolery 8-bitowe i 16-bitowe. Zakres zastosowań: elektronika użytkowa, białe urządzenia gospodarstwa domowego, sterowanie przemysłowe, sprzęt komunikacyjny, elektronika samochodowa i komputery.
7. Zhuhai Jianrong: Głównie zajmuje się produkcją 8-bitowych mikrokontrolerów, zakres zastosowań: urządzenia gospodarstwa domowego, mobilne zasilacze.
8. Technologia działań: Dostarcza głównie mikrokontrolery 8-bitowe do 32-bitowych, zakres zastosowań: tablety, inteligentny dom, multimedia, Bluetooth, dźwięk Wi-Fi.
9. Aisco Microelectronics: Dostarcza głównie mikrokontrolery 8-bitowe i 16-bitowe. Zakres zastosowań: układy scalone konsumenckie, komunikacyjne, informatyczne i urządzenia gospodarstwa domowego.
10. Huaxin Microelectronics: Dostarcza głównie mikrokontrolery 8-bitowe i 4-bitowe. Zastosowania: odbiorniki satelitarne, ładowarki do telefonów komórkowych, kalendarze wieczne i piloty wielofunkcyjne.
11. Shanghai Belling (Huada Semiconductor Holdings): Dostarcza głównie mikrokontrolery 8-bitowe, 16-bitowe i 32-bitowe. Zastosowania: urządzenia peryferyjne, telewizory HDTV, zarządzanie energią, małe urządzenia AGD i urządzenia cyfrowe.
12. Haier Integrated Circuits: Dostarcza głównie mikrokontrolery 14-bitowe, 15-bitowe i 16-bitowe. Zakres zastosowań: elektronika użytkowa, elektronika samochodowa, przemysł i inteligentne urządzenia.
13. Beijing Ingenic: Firma dostarcza głównie 32-bitowe mikrokontrolery, zakres zastosowań: urządzenia przenośne, Internet rzeczy, inteligentne urządzenia gospodarstwa domowego, samochody, elektronika użytkowa, tablety.
14. China Microelektronics: Dostarcza głównie 8-bitowe mikrokontrolery. Zastosowania: inteligentne urządzenia gospodarstwa domowego, elektronika samochodowa, monitoring bezpieczeństwa, oświetlenie LED i architektura krajobrazu, inteligentne zabawki, inteligentne domy oraz elektronika użytkowa.
15. Układ scalony Shenzhou Loongson: Dostarcza głównie 32-bitowe mikrokontrolery, zakres zastosowań: monitorowanie zużycia energii, inteligentne sieci, cyfrowe sterowanie przemysłowe, Internet rzeczy, inteligentny dom, monitorowanie danych.
16. Ziguang Microelectronics: Dostarcza głównie mikrokontrolery 8-bitowe i 16-bitowe. Zakres zastosowań: inteligentne urządzenia domowe.
17. Times Minxin: Dostarcza głównie 32-bitowe mikrokontrolery, zakres zastosowań: nawigacja samochodowa, monitorowanie ruchu drogowego, nadzór nad kutrami rybackimi, sieci telekomunikacyjne.
18. China Resources Silicon Microelectronics (spółka zależna China Resources Microelectronics): dostarcza głównie mikrokontrolery 8-bitowe i 16-bitowe. Zakres zastosowań: elektronika użytkowa, sterowanie przemysłowe i sprzęt AGD.
19. National Core Technology: Dostarcza głównie 32-bitowe mikrokontrolery, zakres zastosowań: bezpieczeństwo informacji, automatyzacja biurowa, sieci komunikacyjne, bezpieczeństwo informacji.
20. Zhongtian Micro: Dostarcza głównie 32-bitowe mikrokontrolery. Zastosowania: smartfony, telewizory cyfrowe, dekodery, elektronika samochodowa, GPS, czytniki e-booków i drukarki.
21. China Resources Microelectronics: Dostarcza głównie mikrokontrolery 8-bitowe i 16-bitowe. Zakres zastosowań: ogólne układy sterowania dla urządzeń gospodarstwa domowego, elektroniki użytkowej i automatyki przemysłowej.
22. Zhongying Electronics: Dostarcza głównie mikrokontrolery 4-bitowe, 8-bitowe, 16-bitowe i 32-bitowe. Zakres zastosowań: urządzenia gospodarstwa domowego i silniki.
23. Lingdong Microelectronics: Mainly provides 32-bit, application scope: motor control, Bluetooth control, high-definition display, wireless charging, drones, micro printers, smart labels, electronic cigarettes, LED dot matrix screens, etc.
24. Nuvoton Technology: Dostarcza głównie 8-bitowe mikrokontrolery, zakres zastosowań: oświetlenie, Internet rzeczy itp.
25. Neusoft Carrier: Mainly provides 8-bit and 32-bit MCUs. Applications: home appliances, smart homes, instrumentation, LCD panel controllers, industrial control, etc.
26. Betley: Mainly provides 32-bit MCU, application scope: smart home, industrial control and consumer products.
27. Shengquan Technology: Dostarcza głównie 8-bitowe mikrokontrolery, zakres zastosowań: małe i średnie panele wyświetlaczy do zastosowań w motoryzacji, edukacji, sterowaniu przemysłowym, medycynie itp.
28. Układ Hangshun: Dostarcza głównie mikrokontrolery 8-bitowe i 32-bitowe. Zakres zastosowań: motoryzacja, Internet Rzeczy itp.
29. Fudan Microelectronics: Dostarcza głównie mikrokontrolery 16-bitowe i 32-bitowe. Zastosowania: inteligentne liczniki, inteligentne zamki do drzwi itp.
30. Huada Semiconductor: Dostarcza głównie mikrokontrolery 8-bitowe, 16-bitowe i 32-bitowe. Zastosowania: sterowanie przemysłowe, inteligentna produkcja, inteligentne życie i Internet Rzeczy.
Tajwan, Chiny
1. Technologia Hongjing: dostarcza głównie 32-bitowe mikrokontrolery. Zakres zastosowań: komunikacja, sterowanie przemysłowe, urządzenia informatyczne i komunikacja głosowa.
2. Holtek Semiconductor: mainly provides 8-bit and 32-bit MCUs. Application scope: consumer electronics, LED lighting, etc.
3. Technologia Lingyang: dostarcza głównie mikrokontrolery 8-bitowe i 16-bitowe. Zakres zastosowań: domowe systemy audio i wideo.
4. Zhongying Electronics: dostarcza głównie mikrokontrolery 4-bitowe i 8-bitowe. Zakres zastosowań: ładowarki, zasilacze mobilne, urządzenia gospodarstwa domowego, sterowanie przemysłowe.
5. Songhan Technology: dostarcza głównie mikrokontrolery 8-bitowe i 32-bitowe. Zakres zastosowań: piloty zdalnego sterowania, inteligentne ładowarki, systemy duże i małe, wagi elektroniczne, termometry douszne, ciśnieniomierze, manometry do opon, różnorodny sprzęt pomiarowy i medyczny.
6. Winbond Electronics: dostarcza głównie mikrokontrolery 8-bitowe i 16-bitowe. Zakres zastosowań: elektronika samochodowa, elektronika przemysłowa, sieci komputerowe, elektronika użytkowa, Internet Rzeczy.
7. Technologia Ten Speed: obsługuje głównie mikrokontrolery 4-bitowe, 8-bitowe i 51-bitowe. Zakres zastosowania: piloty, małe urządzenia gospodarstwa domowego.
8. Youhua Microelectronics: mainly provides 4-bit and 8-bit MCUs. Application scope: recording integrated circuit products, consumer electronics, household products.
9. Mikrokontroler Yingguang Technology: oferuje głównie mikrokontrolery 4-bitowe i 8-bitowe. Zakres zastosowań: maszyny, automatyka, sprzęt AGD, roboty.
10. Elan Electronics: dostarcza głównie mikrokontrolery 8-bitowe i 16-bitowe. Zakres zastosowań: elektronika użytkowa, komputery, smartfony.
pięć
Wskazówki dotyczące nauki obsługi mikrokontrolerów
Podstawowe zasady i funkcje każdego mikrokontrolera (MCU) są podobne. Jedyną różnicą jest konfiguracja i liczba modułów funkcji peryferyjnych, systemów instrukcji itp.
W przypadku systemów instrukcji, choć wydają się one bardzo różne pod względem formy, w rzeczywistości są to po prostu różne symbole. Reprezentowane przez nie znaczenia, funkcje do wykonania i metody adresowania są zasadniczo podobne.
To understand an MCU, you first need to know its ROM space, RAM space, number of IO ports, number of timers and timing methods, provided peripheral function modules (Peripheral Circuit), interrupt sources, operating voltage and power consumption, etc.
Po zapoznaniu się z funkcjami MCU następnym krokiem jest porównanie funkcji wybranego MCU z funkcjami wymaganymi do faktycznego rozwoju projektu i wyjaśnienie, które zasoby są obecnie potrzebne, a które nie są wykorzystywane w tym projekcie.
W przypadku funkcji, które muszą być wykorzystane w projekcie, ale nie są udostępniane przez wybrany mikrokontroler, należy dokładnie zrozumieć odpowiednie informacje o mikrokontrolerze, aby zaimplementować je metodami pośrednimi. Na przykład, jeśli projekt, który opracowujesz, wymaga komunikacji z portem COM komputera, a wybrany mikrokontroler nie udostępnia portu UART, możesz rozważyć wykorzystanie przerwań zewnętrznych w celu jej zaimplementowania.
Aby pozyskać zasoby potrzebne do rozwoju projektu, należy dokładnie zrozumieć i przeczytać Manuę*, a niepotrzebne moduły funkcjonalne można zignorować lub przejrzeć. W nauce MCU kluczem i głównym celem jest zastosowanie.
Po wyjaśnieniu odpowiednich funkcji MCU można rozpocząć programowanie.
For beginners or designers who are using this MCU for the first time, they may encounter many unclear descriptions of the functions of the MCU. For such problems, there are two methods to solve them. One is to write a special verification program to understand the functions described in the data; the other is to temporarily ignore it and write the MCU program according to your current understanding, leaving it to be modified and improved during debugging. The former method is suitable for projects with loose time and beginners, while the latter method is suitable for people with certain experience in microcontroller development or when the project schedule is tight.
Nie poświęcaj specjalnego czasu na zrozumienie systemu poleceń. System instrukcji to jedynie symbol opisu logicznego. Możesz przeglądać odpowiednie instrukcje tylko zgodnie z własną logiką i logicznymi wymaganiami programu podczas programowania. W miarę postępów w programowaniu będziesz coraz lepiej opanowywać system instrukcji, a nawet możesz go nieświadomie zapamiętać.
sześć
Programowanie mikrokontrolerów
Istnieje duża różnica między pisaniem programów na mikrokontrolery (MCU) a programami na komputery PC. Chociaż narzędzia programistyczne MCU oparte na języku C zyskują na popularności, dla projektantów, którzy mają wydajny kod programu i lubią używać języka asemblera, asembler jest nadal najbardziej zwięzłym i efektywnym językiem programowania.
W przypadku programowania mikrokontrolerów (MCU) podstawowy schemat jest mniej więcej taki sam. Zasadniczo dzieli się on na trzy części: inicjalizację (to największa różnica między programowaniem mikrokontrolerów a programowaniem komputerów PC), główną pętlę programu oraz obsługę przerwań. Ich opisy przedstawiają się następująco:
1. Inicjalizacja: W przypadku projektowania wszystkich programów MCU inicjalizacja jest najbardziej podstawowym i najważniejszym krokiem, który zazwyczaj obejmuje następujące czynności:
Zamaskuj wszystkie przerwania i zainicjuj wskaźnik stosu: Część inicjująca zazwyczaj nie chce, aby wystąpiły jakiekolwiek przerwania.
Clear the system's RAM area and display Memory: Although sometimes it may not be completely necessary, from the perspective of reliability and consistency, especially to prevent unexpected errors, it is recommended to develop good programming habits.
Inicjalizacja portu IO: Zgodnie z wymaganiami aplikacji projektu, ustaw tryb wejścia i wyjścia odpowiedniego portu IO. Dla portu wejściowego należy ustawić rezystor podciągający lub obniżający napięcie; dla portu wyjściowego należy ustawić początkowy poziom wyjściowy, aby zapobiec niepotrzebnym błędom.
Ustawienia przerwań: Wszystkie źródła przerwań, które mają być używane w projekcie, powinny być włączone i ustawione warunki wyzwalania dla przerwań. W przypadku nieużywanych przerwań nadmiarowych należy je wyłączyć.
Inicjalizacja innych modułów funkcyjnych: Dla wszystkich modułów peryferyjnych mikrokontrolera, które mają być używane, należy wprowadzić odpowiednie ustawienia zgodnie z wymaganiami aplikacji projektowej. Na przykład, w przypadku komunikacji UART należy ustawić prędkość transmisji, długość danych, metodę weryfikacji i długość bitu stopu. W przypadku programatora timera należy ustawić źródło zegara, liczbę działek częstotliwości i dane przeładowania.
Inicjalizacja parametrów: Po zakończeniu inicjalizacji sprzętu i zasobów mikrokontrolera (MCU), kolejnym krokiem jest inicjalizacja zmiennych i danych używanych w programie. Inicjalizacja tego etapu musi być dostosowana do specyfiki projektu i ogólnej struktury programu. W przypadku niektórych aplikacji wykorzystujących pamięć EEPROM do zapisywania prefabrykowanych danych projektu, zaleca się skopiowanie odpowiednich danych do pamięci RAM mikrokontrolera (MCU) podczas inicjalizacji, aby poprawić szybkość dostępu programu do danych i zmniejszyć zużycie energii przez system (zasadniczo dostęp do zewnętrznej pamięci EEPROM zwiększa zużycie energii przez zasilacz).
2. Treść pętli programu głównego: Większość mikrokontrolerów działa nieprzerwanie przez długi czas, dlatego ich treści programu głównego są zasadniczo zaprojektowane w pętli. W aplikacjach z wieloma trybami pracy może występować wiele treści pętli, które są konwertowane za pomocą flag stanu. Treść programu głównego składa się zazwyczaj z następujących modułów:
Programy obliczeniowe: Programy obliczeniowe są z reguły czasochłonne, dlatego stanowczo sprzeciwiamy się ich przetwarzaniu w jakimkolwiek przerwaniu, zwłaszcza w przypadku operacji mnożenia i dzielenia.
Programy przetwarzania z niskimi lub żadnymi wymaganiami czasu rzeczywistego;
Display transmission program: mainly for applications with external LED and LCD drivers.
3. Obsługa przerwań: Program obsługi przerwań służy głównie do obsługi zadań i zdarzeń wymagających dużej szybkości transmisji, takich jak wykrywanie zewnętrznych sygnałów nagłych, wykrywanie i przetwarzanie przycisków, zliczanie czasu, skanowanie wyświetlacza LED itp.
Zasadniczo program obsługi przerwań powinien być jak najbardziej zwięzły i krótki. W przypadku funkcji, które nie wymagają przetwarzania w czasie rzeczywistym, flagę wyzwalacza można ustawić w przerwaniu, a następnie program główny wykona określone transakcje. Jest to bardzo ważne, szczególnie w przypadku mikrokontrolerów o niskim poborze mocy i niskiej prędkości, które muszą zapewniać szybką reakcję na wszystkie przerwania.
4. W celu uporządkowania różnych treści zadań, różne mikrokontrolery mają różne metody przetwarzania:
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. W programowaniu MCU należy zwrócić szczególną uwagę na:
Konieczne jest zapobieganie jednoczesnemu dostępowi do tej samej zmiennej lub danych lub ustawianiu ich w przerwaniu i treści programu głównego. Skuteczną metodą zapobiegania jest zorganizowanie przetwarzania takich danych w module i określenie, czy należy wykonać powiązane operacje na danych, poprzez ocenę flagi wyzwalacza. W innych treściach programu (głównie przerwaniach) flagi wyzwalacza należy ustawiać tylko w miejscach, w których dane wymagają przetworzenia. Zapewnia to przewidywalność i jednoznaczność wykonania danych.
siedem Podsumowanie programowania mikrokontrolerów dla inżyniera
1. Wyrób w sobie dobry nawyk podsumowywania. Podsumowywanie to nie tylko podsumowanie własnej nauki, ale także przegląd i pogłębienie procesu uczenia się. Pozwala to również uniknąć popełniania błędów za drugim razem.
2. Przed napisaniem programu należy najpierw dobrze zrozumieć projekt, być go świadomym i nakreślić ogólne ramy. Bardzo ważne jest, aby dokładnie przemyśleć sposób jego rozplanowania i wybrać najbardziej odpowiedni układ. Należy przeanalizować, który moduł wykonać jako pierwszy, jakie są konkretne kroki tego modułu, jak nazwać każdą funkcję, jak połączyć go z innymi modułami itp. Warto wziąć kartkę papieru i zanotować ważne procesy.
3. W przypadku programowania modułowego w języku C należy najpierw podzielić każdy moduł, zaprogramować moduł po module, określić sekwencję, przestrzegać jej, a następnie napisać kolejny moduł po pomyślnym jego zapisaniu. W przypadku plików nagłówkowych należy zapisać plik nagłówkowy modułu po jego zapisaniu.
4. Nie ignoruj ostrzeżeń, gdy się pojawią. Oznacza to, że w programie musi być coś nielogicznego. Musisz znaleźć źródło i znaleźć rozwiązanie. Bądź precyzyjny, szukając źródeł. Możesz poszukać informacji w internecie lub poprosić innych o radę. Na przykład, funkcja główna z innego projektu została faktycznie dodana do tego projektu. W rzeczywistości występują duplikaty nazw funkcji. Istnieją również powody, dla których warto analizować zjawiska eksperymentalne i postępować krok po kroku. Wybrano również niewłaściwy interfejs podczas definiowania portu. Czasami, jeśli naprawdę nie możesz rozwiązać problemu, warto zrobić sobie przerwę i zastanowić się nad nim. Niezależnie od tego, jak prosty jest problem, powinieneś zwrócić na niego uwagę, ponieważ mogą występować błędy.
W rozwoju aplikacji mikrokontrolerów, problemy takie jak efektywność wykorzystania kodu, odporność na zakłócenia i niezawodność mikrokontrolerów wciąż stanowią problem. Podsumowujemy kilka podstawowych umiejętności, które należy opanować, aby móc rozwijać mikrokontrolery.
osiem
Umiejętności w zakresie rozwoju mikrokontrolerów
1 Jak zmniejszyć liczbę błędów w programach
Regarding how to reduce program bugs, you should first consider the following out-of-range management parameters that should be considered during system operation.
- Parametry fizyczne: Parametry te stanowią głównie parametry wejściowe systemu, do których zaliczają się parametry wzbudzenia, parametry operacyjne podczas przetwarzania akwizycji i parametry wyników na końcu przetwarzania.
- Parametry zasobów: Parametry te to przede wszystkim zasoby obwodów, urządzeń i jednostek funkcjonalnych w systemie, takie jak pojemność pamięci, długość jednostki pamięci masowej i głębokość stosu.
- Parametry aplikacji: Te parametry aplikacji często pojawiają się jako warunki aplikacji niektórych mikrokontrolerów i jednostek funkcjonalnych. Parametry procesu: odnoszą się do parametrów, które zmieniają się w sposób uporządkowany podczas działania systemu.
2 Jak poprawić wydajność kodu programowania w języku C
Używanie języka C do programowania mikrokontrolerów jest nieuniknionym trendem w rozwoju i stosowaniu mikrokontrolerów. Aby osiągnąć maksymalną wydajność programowania w C, najlepiej jest znać używany kompilator C. Najpierw sprawdź liczbę wierszy instrukcji języka asemblera odpowiadających każdej kompilacji języka C, aby dokładnie określić wydajność. Programując w przyszłości, używaj instrukcji o najwyższej wydajności kompilacji. Każdy kompilator C różni się od siebie, więc wydajność kompilacji również będzie inna. Długość kodu i czas wykonania dobrego kompilatora C dla systemów wbudowanych są tylko o 5–20% dłuższe niż tej samej funkcji napisanej w języku asemblera.
W przypadku złożonych projektów z krótkim czasem realizacji można użyć języka C, ale warunkiem wstępnym jest bardzo dobra znajomość języka C i kompilatora C systemu mikrokontrolera. Należy zwrócić szczególną uwagę na typy danych i algorytmy obsługiwane przez system kompilacji C. Chociaż język C jest najpopularniejszym językiem wysokiego poziomu, różni producenci mikrokontrolerów stosują różne systemy kompilacji języka C, szczególnie w przypadku obsługi niektórych modułów funkcji specjalnych. Dlatego też, jeśli nie rozumiesz tych funkcji, podczas debugowania wystąpi wiele problemów, które doprowadzą do niższej wydajności wykonania niż w języku asemblera.
3 How to solve the anti-interference problem of microcontroller
Najskuteczniejszym sposobem zapobiegania zakłóceniom jest usunięcie źródła zakłóceń i zablokowanie ścieżki, która je przewodzi. Często jest to jednak trudne, dlatego możemy jedynie sprawdzić, czy zdolność mikrokontrolera do przeciwdziałania zakłóceniom jest wystarczająco silna. Wraz z rozwojem zdolności przeciwzakłóceniowych systemów sprzętowych, coraz większą uwagę poświęca się programowym zabezpieczeniom przeciwzakłóceniowym ze względu na ich elastyczność, oszczędność zasobów sprzętowych i wysoką niezawodność.
Najczęstszym zjawiskiem interferencji mikrokontrolera jest reset. W przypadku ucieczki programu, pułapki programowe i mechanizmy nadzorujące mogą zostać wykorzystane do przywrócenia programu do stanu resetu. Dlatego najważniejszą rzeczą, aby oprogramowanie mikrokontrolera było odporne na interferencję, jest obsługa stanu resetu.
Zazwyczaj mikrokontrolery posiadają rejestry flag, które można wykorzystać do określenia przyczyny resetu; dodatkowo można również samodzielnie zakopać kilka flag w pamięci RAM. Za każdym razem, gdy program jest resetowany, na podstawie tych flag można określić różne przyczyny resetu; można również przejść bezpośrednio do odpowiedniego programu na podstawie różnych flag. Pozwala to na ciągłe działanie programu, a użytkownik nie zauważy, że został on zresetowany podczas korzystania z niego.
4 Jak sprawdzić niezawodność systemu mikrokontrolera
Po zakończeniu projektowania systemu mikrokontrolerów, dla różnych produktów systemu mikrokontrolerów zostaną zastosowane różne elementy i metody testowania, ale niektóre z nich muszą zostać przetestowane:
- Przetestuj kompletność funkcji oprogramowania mikrokontrolera
- Test włączania i wyłączania zasilania
- Test na wiek
- Testy takie jak ESD i EFT
Czasami możemy również symulować uszkodzenia, które mogą wystąpić podczas użytkowania przez człowieka. Na przykład, celowo pocieraj port stykowy mikrokontrolera o ludzkie ciało lub tkaninę ubrania, aby sprawdzić jego właściwości antystatyczne. Użyj wiertarki elektrycznej o dużej mocy, aby pracować blisko mikrokontrolera, aby sprawdzić jego odporność na zakłócenia elektromagnetyczne.
Podsumowując, mikrokomputery jednoprocesorowe stały się ważnym aspektem rozwoju i zastosowań komputerów. Ich istotne znaczenie polega na tym, że radykalnie zmieniają tradycyjne koncepcje i metody projektowania systemów sterowania.
Większość funkcji, które w przeszłości musiały być realizowane przez układy analogowe lub cyfrowe, można obecnie realizować programowo, wykorzystując mikrokontrolery. Ten rodzaj technologii sterowania, w którym oprogramowanie zastępuje sprzęt, nazywa się również technologią mikrokontroli i stanowi rewolucję w tradycyjnej technologii sterowania.
Ponadto w trakcie procesu rozwoju i stosowania musimy doskonalić umiejętności i zwiększać wydajność, aby móc wykorzystywać oprogramowanie w szerszym zakresie celów.
Dziewięć
Chip operation summary Operacje na chipie to głównie operacje na rejestrach w chipie. Rejestry w chipie mają swoje unikalne adresy mapowane w pamięci, co oznacza operację na odpowiadających im adresach. Przyglądając się chipowi, najpierw należy przyjrzeć się diagramowi synchronizacji, następnie zrozumieć działanie odpowiednich rejestrów, zrozumieć sposób ich działania, zdefiniować wymagane porty (które mogą być zidentyfikowane przez program) oraz napisać procedury operacji zapisu i odczytu.
How to write data into the chip, how to read data, and which port to input or read through (the most important thing).
Podłączając układy scalone przez magistralę, należy najpierw zrozumieć protokół magistrali. Układ scalony podłączony do magistrali I2C steruje nim głównie za jej pośrednictwem.
1. Jeden 74hc595 w matrycy punktowej służy do wyboru kolumn, a pozostałe dwa do wyboru kolorów. Matryca punktowa jest odpowiednikiem zbioru diod.
Dioda może się zaświecić tylko wtedy, gdy jeden koniec ma ustawiony wysoki poziom, a drugi niski. Tyle że gdy jeden koniec zostanie wybrany inaczej, zaświecą się inne kolory.
Wybór trybu pracy timera: Cztery najwyższe bity ustawiają timer T1, a cztery najniższe bity ustawiają T0. Następnie dwie ostatnie cyfry każdego trybu ustawiają tryb pracy. Podczas ustawiania dwóch timerów należy pamiętać o użyciu symbolu lub (|). Podczas korzystania z przerwań należy pamiętać o wyczyszczeniu tych, które powinny zostać wyczyszczone po wejściu do przerwania.
2. Transceiver portu szeregowego: Tryb 2 (automatyczne przeładowanie wartości początkowej) jest zazwyczaj używany do ustawiania szybkości transmisji. Ponieważ różne urządzenia mają różne możliwości przetwarzania danych, ustawienie szybkości transmisji ma na celu przede wszystkim zapewnienie łączności między urządzeniami o niskiej prędkości. Bit flagi przerwania musi zostać skasowany programowo. Podczas ustawiania przerwania portu szeregowego, niezależnie od tego, które z nich jest generowane podczas wysyłania lub odbierania, może ono wejść do funkcji przerwania, dlatego należy zwrócić uwagę na ustawienie funkcji przerwania. (Automatyczne ustawienie funkcji zazwyczaj ustawia się jako komputer hosta lub komputer podrzędny).
Jeśli używasz przerwania do wysyłania, musisz najpierw ustalić, jak wprowadzić przerwanie, więc najpierw musisz je wysłać, a potem możesz wprowadzić przerwanie. Jednorazowo można wysłać tylko jeden bajt, a kolejny bit można wysłać dopiero po ustawieniu TI.
3. Konwersja PCF8591AD ma cztery kanały wejściowe. Podczas odczytu PCF8591, niezależnie od wybranego kanału, odczytywane jest napięcie wejściowe tego kanału. Przekonwertowane dane są zapisywane w układzie scalonym, a następnie odczytywane. Podczas odczytu najpierw zapisywany jest adres układu scalonego, następnie podadres urządzenia (0x40|numer kanału), a na końcu odczytywane są dane.
4. Konwersja D-A polega na zapisaniu adresu urządzenia w układzie scalonym, następnie zapisaniu podadresu (0x40), a na końcu wartości cyfrowej do konwersji. Wprowadzane są informacje o adresie urządzenia w układzie scalonym.
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. Najpierw określ rejestr w Ds1302, a następnie zapisz do niego dane. Rejestr w danych układu scalonego wskazuje adres. (Nadal nie do końca rozumiem program ochrony przed zapisem. Czy zapis nie odbywa się zawsze? Dlaczego ochrona przed zapisem jest nadal włączona?)
(Według poprzedniego bohatera, można ustawić flagę po czasie inicjalizacji. Jeśli ta flaga jest obecna, nie ma potrzeby inicjalizacji czasu. Jednak jeśli zasilanie zostanie wyłączone, pamięć RAM mikrokontrolera nie będzie mogła zapisać tej flagi, więc można użyć pamięci RAM układu DS1302 do zapisania flagi i odczytania jej po włączeniu zasilania. Jestem również początkujący i planuję niedawno użyć DS1302. Nie wiem, czy to prawda i jeszcze tego nie zaimplementowałem. Proszę o więcej informacji)
8. Najlepiej zapisać inicjalizację na wypadek, gdybyś jej później zapomniał. Czasami warto zwrócić uwagę na to, czy podczas odczytu lub zapisu najpierw operowany jest bit najniższy, czy najwyższy – można to ocenić na podstawie diagramu czasowego.
9. W przypadku nadajnika-odbiornika podczerwieni, podczas odbioru, na podstawie czasu między dwoma opadającymi zboczami sygnału, określa się, czy sygnał jest wysoki, czy niski. Pisząc program, należy najpierw użyć timera do określenia czasu, zapisać go, a następnie przekonwertować na postać binarną (przeczytaj więcej o tym, jak napisać ten program – jest bardzo dobry).
10. Stepper motor: It is mainly used for switching. The torque of the stepper motor decreases as the speed increases. It is mainly used for automatic feeding of parts processed on machine tools. It can also be used in control places with higher precision.
Silnik krokowy to urządzenie z otwartym elementem sterującym, które przetwarza impulsy elektryczne na przemieszczenie kątowe lub liniowe. W warunkach bez przeciążenia prędkość i położenie zatrzymania silnika zależą jedynie od częstotliwości i liczby impulsów sygnału impulsowego i nie są zależne od zmian obciążenia. Gdy sterownik silnika krokowego odbiera sygnał impulsowy, napędza silnik krokowy, aby obracał się w ustalonym kierunku pod stałym kątem, zwanym „kątem kroku”. Obrót odbywa się krok po kroku pod stałym kątem. Przemieszczenie kątowe można kontrolować poprzez kontrolowanie liczby impulsów, aby uzyskać dokładne pozycjonowanie; jednocześnie, prędkość i przyspieszenie obrotowe silnika można regulować poprzez kontrolowanie częstotliwości impulsów, aby uzyskać regulację prędkości.
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. Przegląd znaków chińskich:
In order to output Chinese characters on a monitor or printer, the Chinese characters are designed into a dot matrix according to graphic symbols, and the corresponding dot matrix code (glyph code) is obtained.
Zunifikowana metoda kodowania używana do reprezentowania znaków chińskich w komputerze tworzy kodowanie znaków chińskich zwane kodem wewnętrznym (takim jak standardowy kod narodowy), a kod wewnętrzny jest unikalny (równoważny numerowi identyfikacyjnemu znaku). Kodowanie znaków chińskich, utworzone w celu ułatwienia wprowadzania znaków chińskich, to kod wejściowy, który jest zewnętrznym kodem znaków chińskich. Kod wejściowy różni się ze względu na różne metody kodowania i jest zróżnicowany. Kod znaków chińskich, utworzony do wyświetlania i drukowania znaków chińskich, to kod glifowy. Komputer odnajduje kod glifowy znaku chińskiego w bibliotece modeli czcionek za pomocą wewnętrznego kodu znaków chińskich i dokonuje jego konwersji.
Kod w aparacie
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.
Jeśli zamienimy znak „.” w grafice „口” na „0”, możemy uzyskać bardzo wyraźny kod glifu „口”: 0000H 0004H 3FFAH 2004H 2004H 2004H 2004H 2004H 2004H 2004H 2004H 2004H2004H 3FFAH 2004H 0000H 0000H. Gdy komputer chce wyprowadzić „口”, najpierw znajduje pierwszy adres biblioteki czcionek wyświetlanych, oblicza na podstawie wewnętrznego kodu „口”, a następnie znajduje kod glifu „口”, a następnie sekwencyjnie skanuje ekran zgodnie z kodem glifu (w systemie binarnym) poprzez sterowanie generatorem znaków. Jeśli kod binarny to „0”, skanowane jest miejsce, w którym znajduje się „0”, a następnie skanowane jest miejsce, w którym znajduje się „1”, aby je podświetlić. W ten sposób można uzyskać wzór znaku „口”.
Czcionki znaków chińskich są uporządkowane zgodnie z kodem standardu narodowego i przechowywane w pamięci w postaci plików binarnych, tworząc bibliotekę czcionek znaków chińskich, zwaną także biblioteką glifów znaków chińskich lub biblioteką znaków chińskich.
Dwie metody kodowania, patrz plik nagłówkowy
GB1616.h//------------------ Definicja struktury danych czcionki znaków chińskich ------------------------//structtypFNT_GB16 //Struktura danych czcionki znaków chińskich {unsignedcharIndex[3]; //Indeks wewnętrznego kodu znaków chińskich unsignedchar Msk[32];//Dane kodu matrycy punktowej }; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////conststructtypFNT_GB16 codeGB_16[]= //data tabela {/*---------------------------------------------------------------------------------; plik źródłowy/tekst :Xu; szerokość × wysokość (piksele):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, Ta struktura jest bardzo prosta: jeden to kod wewnętrzny, a drugi to sekwencja macierzy punktowej. Poprzednia biblioteka macierzy punktowej była umieszczona w kolejności kodu wewnętrznego i nie był potrzebny indeks kodu wewnętrznego. Jeśli umieszczano tylko niektóre znaki chińskie, potrzebny był indeks kodu wewnętrznego. (Chiński znak „Xu” na początku służy do znalezienia sekwencji macierzy punktowej słowa podczas wyprowadzania „Xu”. Ta sekwencja macierzy punktowej jest napisana przeze mnie. Po wyświetleniu za pomocą 1602, ponieważ układ ma w pamięci angielską sekwencję macierzy punktowej, nie ma potrzeby jej zapisywania). Zazwyczaj dwa bajty wystarczają na kod wewnętrzny. Jeśli użyjesz jednego bajtu więcej, po prostu dodasz końcowe 0. W ten sposób chiński ciąg znaków może zostać bezpośrednio umieszczony w wewnętrznym kodzie znaków chińskich;
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. Wyświetlacz LCD 12864: Each display point corresponds to a binary number, 1 means on, 0 means off. The RAM that stores these dot matrix information is called display data memory. To display a certain graphic or Chinese character is to write the corresponding dot matrix information into the corresponding storage unit.
Licznik adresów (AC) pamięci graficznej automatycznie zwiększa adres poziomy (oś X) tylko o jeden. Gdy adres poziomy = 0FH, zostanie zresetowany do 00H. Nie zwiększy on jednak automatycznie adresu pionowego z przeniesieniem. Dlatego, gdy wiele danych jest zapisywanych w sposób ciągły, program musi ustalić, czy adres pionowy wymaga zresetowania.
14. Rysowanie pamięci RAM (GDRAM) The drawing display RAM provides 128×8 bytes of memory space. When changing the drawing RAM, first write the horizontal and vertical coordinate values continuously, and then write two bytes of data to the drawing RAM. The address counter (AC) will automatically increase the horizontal address (X address) by one. When the horizontal address is 0XFH, it will be reset to 00H; the vertical address will not be automatically incremented by 1. The drawing display must be turned off during writing to drawing RAM,
[cpp] wyświetl zwykłą kopię//Wyświetl znaki chińskie voiddispString (uchar X, Y,uchar *msg)//Który wiersz to X, a która kolumna to Y. msg to znaki chińskie {if(X==0) write_data(*msg++); //Wyświetl znaki chińskie }}////////////////////////////////// //////////////// /////////////////// Wyświetl obraz voiddisppicture(uchar code *adder){ uint i,j;//*******Wyświetl ustawienia zawartości górnej połowy ekranu for(i=0;i<32;i++)//32 adresy kolumn w górnej połowie ekranu { write_com(0x80 + i);//USTAW adres pionowy VERTICALADD write_com(0x80);//USTAW adres poziomy HORIZONTAL ADDfor(j=0;j<16;j++) { write_data(*adder); adder++; }}//************Wyświetl ustawienia zawartości w dolnej połowie ekranu for(i=0;i<32;i++) //{ write_com(0x80 + i); //USTAW adres pionowy VERTICALADD write_com(0x88); //USTAW adres poziomy HORIZONTAL ADDfor(j=0;j<16;j++){write_data(*adder);adder++;} }} W języku C przestrzeń jest automatycznie przydzielana dla zdefiniowanej zmiennej, a jej adres stanowi nazwę zmiennej. Za pomocą tej nazwy dane mogą być pobierane z pamięci, a nowe dane mogą być uzyskiwane poprzez obliczenia. Jednak w języku asemblera programista musi zdefiniować przestrzeń pamięci i przesłać dane do akumulatora w celu wykonania obliczeń. Każdy krok wymaga działania programisty. W języku C procesy te są wykonywane przez kompilator.
15. Kilka przydatnych pytań i odpowiedzi ①. Jak przebiega alokacja pamięci zmiennych w języku C mikrokontrolera? Czy możliwe jest, że kompilator inteligentnie dodaje kod alokacji i recyklingu podczas kompilacji? Kluczową kwestią jest to, jak mogę upewnić się, że program, który stworzyłem, nie zawiera błędów przepełnienia pamięci? Jeśli wykonuję operację rekurencyjną, wymagania dotyczące pamięci są trudne do samodzielnego obliczenia.
②. Czy język C mikrokontrolera będzie ograniczony w definiowaniu zmiennych? Na przykład, operacje mnożenia i dzielenia danych zmiennoprzecinkowych są zapisywane w asemblerze, a kod jest dość skomplikowany. Czy napisanie go bezpośrednio w języku C nie byłoby zbyt proste?
③. Czy w pliku heksadecymalnym generowanym przez język C mikrokontrolera, rozkład adresów instrukcji i danych w pamięci ROM jest automatycznie przypisywany przez kompilator? Czy użytkownicy mogą go przypisać?
Odpowiedź 1: Program mikrokontrolera napisany w języku C jest najpierw kompilowany przez program (wydaje się, że to c51.exe). Po zakończeniu kompilacji rozmiar przestrzeni dyskowej zmiennych zostaje ustalony, ale adres nie został jeszcze przydzielony (adres jest zmiennoprzecinkowy). Następnie podłączany jest inny program (wydaje się, że to a51.exe). Po nawiązaniu połączenia adres zostaje określony.
Jeśli zmiennych jest zbyt wiele, kompilator wyświetli komunikat o zbyt dużym segmencie danych. Aby uniknąć błędu przepełnienia pamięci, należy przede wszystkim sprawdzić, czy nie doszło do przepełnienia stosu, a to zależy od doświadczenia.
Język C w mikrokontrolerach generalnie zabrania rekurencji, a operacje rekurencyjne są zazwyczaj unikane. W końcu mikrokontrolery to nie komputery PC, co wpłynie na szybkość. Jeśli chcesz rekurencji, bardziej odpowiednie będzie użycie układu DSP. Krótko mówiąc, musisz umieć wybrać odpowiedni układ.
Odpowiedź 2: Rozmiar zmiennej (liczba cyfr) jest zazwyczaj taki sam, jak liczba cyfr w akumulatorze chipów. Na przykład, 51 zazwyczaj używa 8 bitów, ponieważ jest 8-bitowym mikrokontrolerem.
Mikrokontroler może definiować zmienne bitowe, ale nie może definiować tablic bitowych. Pisanie w języku C wydaje się proste, ale w rzeczywistości generuje najwięcej kodu. Mikrokontroler używany do sterowania rzadko korzysta z operacji zmiennoprzecinkowych, co jest nie tylko powolne, ale i kłopotliwe oraz zajmuje dużo miejsca. Jeśli jest to układ DSP, znacznie lepiej sprawdzi się odpowiednia struktura sprzętowa.
Answer 3: Generally, it is automatically allocated. It can be programmed in a mixture of C language and assembly language, or it can be assembled online using Keil C. The data exchange between the chip and the outside is done through the port.
Numer telefonu firmy: +86-0755-83044319
Faks/FAKS: +86-0755-83975897
E-mail: 1615456225@qq.com
QQ: 3518641314 Menedżer Li
QQ: 332496225 Menedżer Qiu
Adres: Pokój 809, Budynek C, Budynek Technologii Zhantao, nr 1079 Minzhi Avenue, Nowa Dzielnica Longhua, Shenzhen