Lag en feilsøkingsskjerm for mikrokontroller: 6 trinn

Lag en feilsøkingsskjerm for mikrokontroller: 6 trinn

Innholdsfortegnelse:

Anonim

Denne skjermen kommer svært nyttig hvis du arbeider med ADC-funksjonen til mikrokontroller.

Det trenger bare to pinner for å styre skjermen (tre hvis du også vil kontrollere låsingen). Med to syv segmenter kan det vise opp til 0xFF som hex. Det er hele 8bit-serien, hva er den mest brukte variabelen for små uCer.

Jeg bygget det fordi den endelige søknaden ikke har en skjerm, og jeg ønsket å vite hva som skjer før jeg ferdig med det.

Du trenger to 74HC959 skiftregister, to syv-segmenter og 14 (16) motstander Du trenger 16 hvis du vil bruke punktene, som ikke er implementert i programvaren. Men ved å bruke prikkene vil du utvide de visbare verdiene til 10bit eller 0-1027. Jeg la det opp til deg å finne ut dette.

forsyninger:

Trinn 1: Den skjematiske

Vi bruker to 74HC595 shift-registers til å grensesnittet de syv segmentdisplayene. Enten du bruker vanlige anode eller felles katode 7-segmenter, må du justere kretsen. Jeg brukte vanlige katoder. Hva betyr at hvert segment er en grønn LED og katodene til alle lysdioder er koblet sammen. (Pins 3 og 8 i 7-seg-skjermen)

Skiftregisterene fungerer på denne måten:

Hver gang du bruker en puls på skiftinngangen, blir den nåværende tilstanden til den serielle inngangspinnen skiftet i minnet til 74HC595. Hver gang en puls ved låseinngangen kommer, blir tilstanden til internminnet brukt til å drive utgangene.

Etter 8 skiftsykluser, blir den første inngangen skiftet ut på pin9 igjen og kan brukes som en inngang til en annen 74HC595. Dette kalles også daisy kjede.

74HC595 kan kjøre opptil 70mA totalt, så vi må justere motstandene på en måte at strømmen gjennom hvert LED-segment forblir under 9mA, som er ca 470 Ohm for 5V og de brukte displayene.

Trinn 2: Skiftregisteret 75HC595

En titt på bildet forteller deg hvilke pins du må koble til.

Pinnene er talt anti klokke kloke, starter fra merket på IC hvis du ser på det fra toppen.

Koble pin 1 - 7 og pin 15 til tappene i 7-segmentet.

Pin 8 og 13 må kobles til bakken (GND eller negativ terminal på batteriet)

Pin 9 er koblet til pin 14 på neste IC.

Pin 10 og pin 16 må kobles til forsyningsspenningen (VCC eller positiv terminal på batteriet)

Pin 11, 12 og 14 er grensesnittet som skal drives av mikrokontrolleren, koble disse til trepunkts pinheader for ekstern grensesnitt.

Trinn 3: Bygg skjermen

Selv om det hadde vært mulig å etse et tilpasset kretskort, valgte jeg å bygge alt på brødbrett med tynn kobbertråd.

Denne kobbertråd er belagt, men belegget kan brennes ned med litt smeltet tinn. Det er veldig enkelt å lage forbindelser med den. Bare tinn den ene enden, loddet den til pinnen og strekk den deretter til den andre pinnen og brenn isolasjonen der du vil lodde den. Løs det deretter på tappen og kutt resten. Et 30W loddejern som dette fra håndverkeren er mer enn nok for jobben.

Jeg brukte små 1206 SMD motstander, fordi disse passer pent under de syv segmentene.

Men tross alt må du gjøre opp styret selv og du kan selvsagt også ta en motstand du liker.

Trinn 4: Finn rekkefølgen av segmenter

Til slutt må vi skrive funksjonene for å vise noe meningsfylt.

Hovedproblemet er nå å finne riktig segment - kontrollsekvens. Prøv først å skyve en enkelt 1 gjennom hele skiftregisteret.

Bruk en høy til seriell inngang og puls skiftet en gang. Nå puls lås en gang og se hvilke segmenter som lyser.

Hvis du deretter trykker på skift- og låseknappen igjen, lyser neste segment og så videre.

Til slutt har du rekkefølgen på alle segmentene, og du kan overføre dem til binære tall.

Trinn 5: Skriv koden

Jeg ønsket å bruke skjermen med min AVR mikrokontroller. Så jeg skrev en *.h-fil som kunne inkluderes i et hvilket som helst prosjekt.

Hvis du koblet opp styret annerledes, kan det hende du må justere segmentkontroll -armen.

For å bruke den må du justere pindefinisjonene i filen debug.h (første 12 linjer).

I hovedapplikasjonen må du legge til følgende linjer:

#include "debug.h"

initdebug (); // Dette initialiserer Output-porter som er angitt i debug.h

Deretter kan du vise hvilken som helst 8bit-variabel ved å bare ringe feilsøkingsfunksjonen med den. si at variabelen kalles teller, så vises nåverdien av telleren av:

debug (teller);

hint:

  • Legg til litt forsinkelsestid etter at feilsøkingen () har fått tid til å lese verdien.
  • Når du koblet til skift og lås sammen, bare definer de to porter for samme pinne. Hver gang skiftet utløses, låses det også ut den nåværende tilstanden, det vil si displayet flimmer mens skiftregisterene er lastet. Hvis du gjør dette raskt i forhold til det tidspunktet du lar displayet forbli, er det o.k.
  • For å vise en 16bit-verdi, divisjoner du den med 256 og viser resultatet eller skiller høy byte og lav byte og viser dem en etter en med en liten bremse i mellom.

Trinn 6: Test det

For å teste skjermen synes det å være ideelt å bruke tiliny2313-brettkortadapteren jeg publiserte i denne instruerbare:

www.instructables.com/id/Make-a-breadboard-adapter-for-your-AVR-microcontroller

Programmet for den innebygde videoen teller bare fra 0 til 0xFF og tilbake igjen.

Videoen: