AVR Assembler Övningsexempel 9 (1 / 7 steg)
Steg 1: Ledningar 7-seg displayen
Vi kommer att använda samma kod som vi använde i handledning 7 för knappsatsen till kontroll 7-segment display. Så måste du göra en kopia av det och vi kommer att ändra den.
Vi kommer att mappas segmenten till stiften av våra mikrokontroller som följer:
(dp, g, f, e, d, c, b, en) = (PD7, PD6, PB5, PB4, PB3, PB2, PB1, PB0)
där bokstäverna i segment som visas i bilden tillsammans med ordningen på pinout motsvarande gemensam 5V och varje LED segment inklusive decimalkommat (dp) längst ned till höger i displayen. Anledningen till detta är så att vi kan mata in hela numret i en enda register och utgång som registrerar till portarna B och D att lysa upp segmenten. Som ni kan se bitarna numreras sekventiellt från 0 till 7 och så de kommer att mappas till rätt stift utan att behöva ange och avmarkera enskilda bitar.
Som ni kan se av den kod vi har fäst i nästa steg, vi har flyttat vår displayen rutin till ett makro och vi har frigjort SDA och SCL stiften för framtida användning i nästa handledning.
Jag bör tillägga att du måste sätta ett motstånd mellan gemensamma anoden på displayen och 5V järnväg. Jag valde en 330 ohm resistor som vanligt men om du gillar du kan beräkna minsta motståndet behövs för att få den högsta intensiteten av displayen utan stekning det. Här är hur man gör det:
Först titta på databladet och märker att det ger olika egenskaper i displayen på första sidan. Kvantiteterna som viktig är den "fram aktuell" (I_f = 20mA) och "Framåt spänningen" (V_f = 2.2V). De talar om du vill att spänningsfallet över displayen kommer att om nuvarande är lika med den framåt nuvarande. Detta är den maximala ström som visningen tar utan stekning. Det är följdriktigt också maximal ljusstyrka du kan få av segmenten.
Så låt oss använda Ohms lag och Kirchoff's loop regeln för att räkna ut vilken minsta motstånd skulle vi behöva placeras i serie med displayen för att få max ljusstyrka. Kirchoffs regel säger att summan av spänningsändringar runt en sluten slinga i en krets är lika med noll och Ohms lag säger att spänningsfallet över en resistor motstånd R är: V = jag R där jag är den ström som passerar genom resistorn.
Så ges en Matningsspänning av V och går runt vår krets har vi:
V - V_f - I R = 0
vilket innebär (V - V_f) /I = R. Så motståndet för att få skulle den högsta intensiteten (och förmodligen stekning segmenten) vara:
R = (V - V_f) / I_f = (5.0V - 2.2V)/0.02A = 140 ohm
Så om du vill kan du gärna använda 150 ohm utan bekymmer. Men tror jag 140 ohm gör det för starkt för min smak och så jag använder 330 ohm (vilket är typ av min personliga Guldlock motstånd för lysdioder)