Hvordan MCU driver LCD-skærm og designovervejelser

2023-07-17

Klassificering og anvendelse af enkelt chip mikrocomputer
I henhold til dens hukommelsestype kan MCU opdeles i to typer uden on-chip ROM og med on-chip ROM. For chips uden on-chip ROM skal de forbindes med en ekstern EPROM (typisk 8031); chips med on-chip ROM er yderligere opdelt i on-chip EPROM (typisk 87C51), MASK on-chip maske ROM (typisk 87C51) Chip er 8051), on-chip Flash type (typisk chip er 89C51) og andre typer.
Den kan efter formålet opdeles i almen- og specialformål; i henhold til bredden af ​​databussen og længden af ​​databytes, der kan behandles på én gang, kan den opdeles i 8, 16 og 32-bit MCU'er.
På nuværende tidspunkt er det indenlandske MCU-applikationsmarked det mest udbredte inden for forbrugerelektronik, efterfulgt af industriområdet og bilelektronikmarkedet. Forbrugerelektronik omfatter blandt andet husholdningsapparater, fjernsyn, spillekonsoller og lyd- og videosystemer. Industrielle områder omfatter smart home, automation, medicinske applikationer og ny energiproduktion og distribution. Automotive-området omfatter motordrevne og sikkerhedskontrolsystemer mv.
Shenzhen Hongjia Technology Co., Ltd. har specialiseret sig i R&D, produktion og salg af 1,14-tommer-10,1-tommer LCD-skærme og berøringsskærme, som kan tilpasses og giver understøttende MCU-skærme, herunder SPI-interface, MCU-interface, RGB-interface, MIPI interface osv. Der er mange størrelser og modeller, matchende resistiv berøringsskærm og kapacitiv berøringsskærm kan også leveres.
Den grundlæggende funktion af en enkelt chip mikrocomputer

For de fleste MCU'er er følgende funktioner de mest almindelige og grundlæggende. For forskellige MCU'er kan beskrivelsen være anderledes, men de er grundlæggende ens i det væsentlige:

1. TIMER (timer): Selvom der er mange typer TIMER, kan de klassificeres i to kategorier: den ene er TIMER med fast tidsinterval, det vil sige, at timingen indstilles af systemet, og brugerprogrammet kan ikke styres. Der er kun flere faste tidsintervaller, som brugerprogrammer kan vælge, såsom 32Hz, 16Hz, 8Hz osv. Denne form for TIMER er mere almindelig i 4-bit MCU'er, så den kan bruges til at implementere relaterede funktioner såsom ur og timing .
Den anden type er programmerbar timer (programmerbar timer). Som navnet antyder, kan tidspunktet for denne type timer styres af brugerens program. Styringsmetoderne omfatter: valg af urkilde, valg af frekvensdeling (Prescale) og præfabrikeret talindstilling osv. Nogle MCU'er har alle tre på samme tid, mens andre kan have en eller to af dem. Denne form for Timer-applikation er meget fleksibel, og den faktiske brug er også under konstant forandring. En af de mest almindelige applikationer er at bruge den til at realisere PWM-output.
Da urkilden frit kan vælges, kombineres sådanne timere generelt med hændelsestællere.
2. IO-porte: Enhver MCU har et vist antal IO-porte. Uden IO-porte vil MCU'en miste kommunikationskanalen med omverdenen. I henhold til konfigurationen af ​​IO-porten kan den opdeles i følgende typer:
Ren input eller ren output port: Denne type IO port bestemmes af MCU hardware design. Det kan kun input eller output, og kan ikke indstilles af software i realtid.
Direkte læse og skrive IO-porte: For eksempel hører IO-portene på MCS-51 til denne type IO-porte. Når du udfører læse IO-portinstruktionen, er det en inputport; når du udfører en skrive-IO-portinstruktion, er det automatisk en outputport.
Programprogrammering til at indstille input- og outputretningen: input eller output af denne type IO-port indstilles af programmet i henhold til de faktiske behov, applikationen er relativt fleksibel, og nogle bus-niveau applikationer kan realiseres, såsom I2C bus, forskellige LCD'er, LED Drivers kontrolbus mv.
For brugen af ​​IO-porten skal det vigtige punkt huskes: for input-porten skal der være et klart niveausignal for at sikre, at den ikke kan flyde (det kan opnås ved at tilføje en pull-up eller pull- ned modstand); for udgangsporten, dens output. Tilstandsniveauet skal tage hensyn til dens eksterne forbindelse, og det skal sikres, at der ikke er nogen strømkilde eller synke i Standby eller statisk tilstand.
3. Ekstern afbrydelse: Ekstern afbrydelse er også en grundlæggende funktion for de fleste MCU'er. Det bruges generelt til udløsning af signaler i realtid, datasampling og statusdetektion. Der er flere typer interrupts: stigende kant, faldende kant trigger og niveau trigger. Eksterne afbrydelser implementeres generelt gennem inputporte. Hvis det er en IO-port, vil afbrydelsesfunktionen kun være aktiveret, når den er sat til input; hvis det er en udgangsport, vil den eksterne afbrydelsesfunktion automatisk blive slået fra (der er nogle undtagelser i ATiny-serien af ​​ATMEL, udgangsporten kan også udløse afbrydelsesfunktionen). Anvendelsen af ​​ekstern afbrydelse er som følger:
Detektering af eksterne triggersignaler: den ene er baseret på realtidskrav, såsom kontrol af siliciumstyrede ensrettere, detektering af burstsignaler osv., og den anden er behovet for strømbesparelse.
Måling af signalfrekvens: For at sikre, at signalet ikke går glip af, er en ekstern afbrydelse det ideelle valg.
Dataafkodning: Inden for fjernbetjeningsapplikationer er det for at reducere designomkostningerne ofte nødvendigt at bruge software til at afkode forskellige kodede data, såsom afkodning af Manchester og PWM-kodning.
Nøgleregistrering og systemopvågning: For en MCU, der går i dvaletilstand, skal den generelt vækkes gennem en ekstern afbrydelse. Den mest basale form er en nøgle, og niveauændringen genereres af nøglens handling.
4. Kommunikationsgrænseflade: Kommunikationsgrænsefladen leveret af MCU omfatter generelt SPI-grænseflade, UART, I2C-grænseflade osv., som er beskrevet som følger:
SPI-grænseflade: Denne type interface er den mest grundlæggende kommunikationsmetode, der leveres af de fleste MCU'er. Dens dataoverførsel styres af et synkront ur. Signalerne inkluderer: SDI (serielt datainput), SDO (serielt dataoutput), SCLK (serielt ur) og klarsignal; i nogle tilfælde kan der ikke være noget klar-signal; denne type interface kan fungere i Master mode eller Slave mode, det populære ordsprog er at se hvem der leverer ursignalet, den part der leverer uret er Masteren og den modsatte part Så er det Slaver.
UART (Universal Asynchronous Receive Transmit): Det er den mest grundlæggende asynkrone transmissionsgrænseflade. Dens signallinjer er kun Rx og Tx. Det grundlæggende dataformat er: Startbit + databit(7-bit/8-bit) + paritetsbit(lige, ulige eller ingen) + stopbit(1~2bit). Den tid, som en bit data tager, kaldes Baud Rate (baudrate).
For de fleste MCU'er kan længden af ​​databit, datakontrolmetode (ulige kontrol, lige kontrol eller ingen kontrol), længden af ​​stopbit (Stop Bit) og Baud Rate indstilles fleksibelt gennem programmering. Sikkert. Den mest almindeligt anvendte måde af denne type interface er at kommunikere med den serielle port på pc'en.
I2C interface: I2C er en datatransmissionsprotokol udviklet af Philips, som også er implementeret af to signaler: SDAT (serielt data input og output) og SCLK (serielt ur). Dens største fordel er, at der kan tilsluttes flere enheder til denne bus, som kan identificeres og tilgås via adresser; en af ​​de største fordele ved I2C-bussen er, at det er meget praktisk at bruge software til at realisere det gennem IO-porten, og dens transmissionsdatahastighed styres fuldstændigt af SCLK. For at kontrollere kan den være hurtig eller langsom, i modsætning til UART-grænsefladen , som har strenge hastighedskrav.
5. Watchdog (watchdog timer): Watchdog er også en grundlæggende konfiguration af de fleste MCU'er (nogle 4-bit MCU'er har muligvis ikke denne funktion), og de fleste MCU Watchdogs kan kun tillade programmer at nulstille dem og kan ikke nulstille dem. Den er lukket (nogle indstilles, når programmet er brændt ind, f.eks. Microchip PIC series MCU), og nogle MCU'er bestemmer, om de skal åbnes på en bestemt måde, f.eks. Samsungs KS57-serie, så længe programmet får adgang til Watchdog-registret , tændes automatisk og kan ikke slukkes igen. Generelt kan vagthundens nulstillingstid indstilles efter program. Den mest basale anvendelse af Watchdog er at give en selvgendannelsesfunktion, så MCU'en kan gå ned på grund af uventede fejl.

Mikrocontroller programmering
Der er stor forskel på programmering af MCU-programmer og programmering af pc-programmer. Selvom C-baserede MCU-udviklingsværktøjer bliver mere og mere populære, for en effektiv programkode og en designer, der kan lide at bruge assembly, er assemblersprog Stadig det mest kortfattede og effektive programmeringssprog.

For MCU-programmering kan dens grundlæggende ramme siges at være nogenlunde den samme, generelt opdelt i tre dele: initialiseringsdel (dette er den største forskel mellem MCU-programmering og pc-programmering), hovedprogramsløjfelegeme og interruptbehandlingsprogram, som er hhv. forklaret som følger:
1. Initialisering: Til udformningen af ​​alle MCU-programmer er initialisering det mest grundlæggende og vigtige trin, som generelt omfatter følgende:
Masker alle interrupts og initialiser stakmarkøren: Initialiseringsdelen ønsker generelt ikke, at der skal ske nogen interrupts.
Clear the RAM area of the system and display Memory: Although sometimes it may not be completely necessary, from the perspective of reliability and consistency, especially to prevent accidental errors, it is recommended to develop good programming habits.
Initialisering af IO-port: Indstil input- og outputtilstanden for den relevante IO-port i henhold til projektets applikationskrav. For inputporten skal du indstille dens pull-up eller pull-down modstand; for output-porten skal du indstille dens initiale output-niveau for at forhindre unødvendige fejl.
Interrupt-indstillinger: For alle interrupt-kilder, der skal bruges i projektet, skal de være aktiveret og triggerbetingelserne for interrupts skal indstilles, mens de for redundante interrupts, der ikke bruges, skal være slået fra.
Initialisering af andre funktionelle moduler: For alle de perifere funktionelle moduler i MCU'en, der skal bruges, skal tilsvarende indstillinger foretages i henhold til projektets applikationskrav, såsom UART-kommunikation, Baud Rate, datalængde, verifikationsmetode og Stop Bit skal indstilles. Længden osv., og for programmeringstimeren skal du indstille dens urkilde, frekvensdeling og genindlæs data osv.
Parameterinitialisering: Efter at have afsluttet initialiseringen af ​​MCU hardware og ressourcer, er næste trin at initialisere nogle variabler og data, der bruges i programmet. Initialiseringen af ​​denne del skal designes i overensstemmelse med det specifikke projekt og programmets overordnede arrangement. For nogle applikationer, der bruger EEPROM til at gemme projektpræfabrikerede data, anbefales det at kopiere de relevante data til RAM'en på MCU'en under initialisering for at forbedre programmets adgangshastighed til dataene og reducere systemets strømforbrug (i princippet , vil adgang til den eksterne EEPROM øge strømforsyningens strømforbrug).
2. Hovedprogrammets sløjfelegeme: De fleste MCU'er kører kontinuerligt i lang tid, så hovedprogramlegemet er grundlæggende designet på en cyklisk måde. For applikationer med flere arbejdstilstande kan der være flere. En loop body konverteres mellem hinanden gennem tilstandsflaget. For hovedprogramlegemet er følgende moduler generelt arrangeret:
Beregningsprogram: Beregningsprogrammet er generelt tidskrævende, så det er skarpt imod enhver afbrydelsesbehandling, især multiplikations- og divisionsoperationer.
Behandling af programmer med lave realtidskrav eller ingen realtidskrav;

Displaytransmissionsprogram: hovedsageligt til applikationer med ekstern LED og LCD-driver.
3. Interrupt-behandlingsprogram: Interrupt-programmet bruges hovedsageligt til at behandle opgaver og hændelser med høje realtidskrav, såsom detektering af eksterne pludselige signaler, detektering og behandling af nøgler, timing-tælling, LED-displayscanning mv.
Generelt bør afbrydelsesprogrammet holde koden så kortfattet og kort som muligt. For funktioner, der ikke skal behandles i realtid, kan du indstille triggerflaget i interruptet, og så vil hovedprogrammet udføre den specifikke transaktion - dette er meget vigtigt. Især for laveffekt, lavhastigheds MCU'er er det nødvendigt at sikre rettidig respons på alle afbrydelser.
4. Til arrangementet af forskellige opgaveorganer har forskellige MCU'er forskellige behandlingsmetoder:
For eksempel, for lavhastigheds- og laveffekt MCU (Fosc=32768Hz) applikationer, i betragtning af at sådanne projekter alle er håndholdte enheder og bruger almindelige LCD-skærme, kræver responsen på knapper og skærme høj realtidsydelse, så generelt Timed interrupts bruges til at behandle knaphandlinger og datavisning; og for højhastigheds-MCU'er, såsom Fosc>1MHz-applikationer, da MCU'en har nok tid til at udføre hovedprogramsløjfekroppen på dette tidspunkt, kan den kun afbrydes i den tilsvarende Indstil forskellige triggerflag i , og sæt alle opgaverne i hovedprogramlegemet til at udføre.
5. I programmeringsdesignet af MCU er endnu et punkt, der kræver særlig opmærksomhed:

For at forhindre samtidig adgang eller indstilling af den samme variabel eller data i interruptet og hovedprogramteksten. En effektiv forebyggende metode er at arrangere behandlingen af ​​sådanne data i et modul og bestemme, om den relevante operation af dataene skal udføres ved at bedømme triggerflaget; mens i andre programorganer (hovedsagelig afbryder), de data, der skal behandles. Behandlingsstedet sætter kun det udløste flag. - Dette sikrer, at eksekveringen af ​​dataene er forudsigelig og unik.

Mikrocontroller udviklingsfærdigheder

1. Hvordan man reducerer fejl i programmet
For at reducere programfejl bør du først overveje følgende over-range-styringsparametre, som bør overvejes under systemdrift.
Fysiske parametre: Disse parametre er hovedsageligt systemets inputparametre, herunder excitationsparametre, driftsparametre under optagelse og behandling og resultatparametre ved afslutningen af ​​behandlingen.

Ressourceparametre: Disse parametre er hovedsageligt ressourcerne for kredsløb, enheder og funktionelle enheder i systemet, såsom hukommelseskapacitet, lagerenhedslængde og stablingsdybde.
Applikationsparametre: Disse applikationsparametre repræsenterer ofte applikationsbetingelserne for nogle enkelt-chip mikrocomputere og funktionelle enheder. Procesparametre: Refererer til de parametre, der ændres på en ordnet måde under driften af ​​systemet.


2. Hvordan man kan forbedre effektiviteten af ​​C-sprog programmeringskode
Det er en uundgåelig tendens i udviklingen og anvendelsen af ​​single-chip mikrocomputer at bruge C-sprog til at designe single-chip mikrocomputerprogrammet. Hvis du vil opnå den højeste effektivitet ved programmering i C, er det bedst at være bekendt med den C-compiler, du bruger. Test først antallet af udsagnslinjer i assemblersprog svarende til hvert kompileret C-sprog, så du tydeligt kan kende effektiviteten. Når du programmerer i fremtiden, skal du bruge erklæringen med den højeste kompileringseffektivitet. Hver C-kompiler vil have visse forskelle, så kompileringseffektiviteten vil også være anderledes. Kodelængden og udførelsestiden for en fremragende indlejret system C-compiler er kun 5-20 % længere end det samme funktionsniveau skrevet i assemblersprog.

Til komplekse projekter med snæver udviklingstid kan C-sprog anvendes, men forudsætningen er, at du er meget fortrolig med C-sproget og C-kompileren af ​​MCU-systemet, og er særligt opmærksom på de datatyper og algoritmer, som C-compilersystemet. kan støtte. Selvom C-sprog er det mest almindelige sprog på højt niveau, er C-sprog-kompileringssystemerne fra forskellige MCU-producenter forskellige, især i betjeningen af ​​nogle specielle funktionsmoduler. Så hvis du ikke forstår disse funktioner, vil der være en masse problemer i debugging, hvilket vil føre til lavere eksekveringseffektivitet end assemblersprog.

3. Sådan løses anti-interferensproblemet med single-chip mikrocomputeren Den mest effektive måde at forhindre interferens på er at fjerne interferenskilden og afskære interferensvejen, men det er ofte svært at gøre det, så det afhænger kun af om mikrocomputerens anti-interferensevne er stærk nok. Samtidig med at hardwaresystemets anti-jamming-evne forbedres, er software-anti-jamming kendetegnet ved dets fleksible design,
We use cookies to offer you a better browsing experience, analyze site traffic and personalize content. By using this site, you agree to our use of cookies. Privacy Policy