Hem gjorde 7 segment display klocka (3 / 5 steg)

Steg 3: En inblick om PIC16F727 uppgifter



jag kommer att beskriva de grejer jag använde från PIC, för att göra detta projekt hända. En huvudsakliga sak du behöver för denna typ av uppgifter är en timer. En timer räknar de instruktion cykler som har strikt kopplade till crystal eller oscillator du använder att klocka processorn. Jag använde en intern oscillator för att hålla PCB enkelt. En bild behöver för tar tid på en enda instruktion:

Fosc = 16000000 Hz
Finst = 4000000 Hz
Tinst = 1 / Finst = 250 ns

En instruktion tar 250 nanosekunder, detta är samma takt timern räknar med. Om vi behöver en timing 1 millisekunder, vi låter timern springa för 4000 instruktioner, då signalen, det 1 ms har förflutit.

För att göra detta mycket exakt, kommer att vi använda avbrott. Ett avbrott till en mikrokontroller är som en klapp på axeln för dig. Du bry dig bara om ditt eget företag, då någon kommer, knacka på axeln för att säga något. Du avslutar gör ditt företag, och var uppmärksam på "avbrottet" som bara skedde. När du är klar lyssnar, du reagerar på ett visst sätt och sedan gå tillbaka till de saker du gjort innan någon avbröt du. Säger detta PIC vägen, service du bara ett avbrott.

BILDEN gör inte vad du vill, det gör det, vad du säger åt den att göra. Detta är en mycket viktig sak att memorera: en silicon bugg är sällan orsaken varför ditt projekt brukar starta upp. Det är 99,9% av gånger felaktig programmering.
Vad ska vi säga PIC att göra för att uppnå det vi vill:

Oscillator konfiguration:
Behöver vi konfigurera intern oscillator för att vara den huvudsakliga klocka källan för detta projekt, vi gör detta genom att sätta 0x30 i OSCCON register.

Aktivera avbrott:
Det första vi kan avbryta systemet. Detta görs genom att manipulera bitarna i INTCON register.
Vi måste aktivera global avbrott och Timer0 avbrott. Databladet ser, vi bit 7 vara globala avbrottet aktivera bit och bit 5 vara Timer0 avbrottet aktivera bit. Resten av bitarna är nollor, vi behöver inte ändra dem. Detta ger ett binärt värde för b10100000, som i hexadecimal är 0xA0. Vi satt som i registret INTCON.

Prescalers:
En prescaler är en räknare sig, vilka steg på varje anvisning cykel. Dessa - standard - anges till 1:1 så de inte stör timer normal drift. Prescaler utdata är ansluten till ingången på timer, som vi kan se i diagrammet. om vi anger en prescaler 1:2, kommer att sin produktion gå till '1' förrän 2 instruktion cykler har avslutats. Detta innebär att timern inte kommer att öka på varje instruktion cykel, men på varje 2-nd. Liknar detta, genom att ange prescaler dela med 4, TMR0 att få ökas varje 4-th instruktion cykel, och så vidare.

Konfigurera Timer0 att ge avbryta varje millisekund:
Timer0 räknar instruktionerna genom att öka värdet i registret TMR0. att värdet är 8 bitar bred, mening, inte kan vi räkna mer ytterligare, än 255. Om räknaren är i 255, och en ökning sker, kommer att registret svämma över och börja räkna igen från 0.
Detta är punkten när en timer kan signalera ett avbrott. Men om detta händer varje 256-th cykel, hur kan vi använda den räkna till 4000? Genom hjälp från prescalers.

4000 / 256 = 15.625

Så vi behöver en uppdelning av 16 (den närmaste och större prescaler värde) att göra detta möjligt.

4000 / 16 = 250;

Eftersom timern ger avbrott på överrullning från 255 -> 0, vi kommer bara att sätta en förskjutning av 256-250 = 6 i TMR0 register. Detta värde behöver uppdateras varje gång avbrottet är servad. Vi har också avmarkera flaggan, som var inställd på '1', när Timer0 ändringen inträffade.
Efter att ha sagt att vi nu har en exakt avbryta, inträffar som varje millisekund. Jag genomföra brukar en räknare i avbrottstjänstens rutin, jag räknar 1000 avbrott, bygga upp en en andra signal. Räkna sekunderna som skall göras i de viktigaste loopen, det finns bara enkel räknare som räknar 60 sekunder, sedan svämma över för att öka variabeln "minut". Sedan, på samma sätt, "timmar", "dagar", "månader" variabel ökas.

Siffrorna
Om projektet är enkel nog, och har några 7 segmenterar skärmar i schematiskt, hand jag aldrig ta för att hitta segment controller stiften en bredvid den andra. Detta projekt var inte ett undantag, den luddiga definierar du kan se i början av programmet finns för att förenkla de sätt jag Visa siffrorna. Om du tar tillräckligt med tid att försöka förstå dem, ser du hur lätt denna visning del faktiskt är.

Se Steg
Relaterade Ämnen

7 segment display klocka!

I detta instructable, jag kommer att lära dig haw för att göra en 7 segment siffrig display klocka!Du behöver:En sunfounder kit som innehåller en skärbräda, hoppare ledningar, knappar, lysdioder, en 7 segment display och resistersEn arduinoTejpArduin...

Arduino Nano och Visuino: 7 Segment Display klocka med MAX7219 och DS1307 realtid Clock(RTC)

DS1307 Realtidsklocka finns allmänt tillgänglig låg kostnad I2C RTC moduler. De kommer med en klocka och ett litet batteri, och när ansluten till Arduino, kan hålla reda på realtid även när Arduino styrelsen inte drivs. Jag har redan gjort Instructab...

Sju Segment Display breakout ombord

Ett hem gjorde sju segment breakout styrelse... lätt att använda med någon mikrokontroller baserade projektarbete prototyp... Löda trace lödda så noga att ingen sökväg överlappning och banan ser ut som en utlovat specialdesignad PCB.A är här LSB (min...

Digital klocka med 7 Segment Display kontrolleras med hjälp av fjärrkontrollen

det finns sorter av digital klocka finns i vårt dagliga liv. Grundläggande digital klocka kommer att oftast ha några inbyggda funktioner som väckarklocka, kalender och termometer förutom display klockan information. Några av de förskott digital klock...

Arduino VFD Display klocka handledning - en Guide till VFD displayer

... + Lite om VFDsMinns du (fortfarande) visning av din gamla CD-spelare, HiFi system eller bil radio? Har du någonsin märkt displayerna används på din lokala mataffär som visar du skannade objektet och priset för det?Dessa skärmar har en karakterist...

Arduino Binary 7 Segment Display Clock & kalender

Till skillnad från de flesta andra binära klockor här klockan visar binära tid och datum på 3 rader av 8 sju segment visar som en och nollor istället för bara rader av lysdioder.Fullständiga uppgifter om detta min hemsida här.En Arduino 328 mikroproc...

Arduino 7 Segment Display Clock (+ ljud aktiveringen)

I detta instructable jag kommer att visa dig hur man gör ditt eget Arduino baserade 7 segment display (4 siffror) klocka med ljud aktiveringen funktion!Kretsen som använder den ATmega328p micro controller (samma som Arduino uno styrelsen) och den DS1...

Namn på 7-segment Display Atmel Avr

I detta instructable (min första en!) Jag vill visa dig något jag gjorde för ett skolprojekt. Ursprungliga uppdraget var följande: "i MSVS (eller Microsoft visual studio) koden i assembler: Ange ditt namn som en ASCII hex-sträng i den. Datasektionen...

7 segment Display Clock

I detta outgrundlig jag kommer att visa dig hur man gör en digital klocka!Du behöver:En sun grundare kitSom omfattar en bröd styrelse, hoppare ledningar, knappar, lysdioder och en 7 segment display.Du behöver också en arduinorutan solen grundaretejpU...

7 segment Display

7 segmenterar skärmar kommer för att användas överallt där du behöver en visuell visning av siffror. En Timer, nedräkning, klocka, etc är alla exempel på där någon kanske använt 7 Segment Display. De är mycket användbara, och när du förstår hur de fu...

Hur man utformar sju segment display driver chip på VLSI consept för första gången!?

Idag, ska jag visa dig hur du utformar en sju segment display elektronisk komponent föraren som är liknande med 7447 chip. Detta projekt var jag gjorde då i mitt universitet är förra året, tack vare min föreläsare, lärde jag mig att desing ett chip T...

Sju Segment Display handledning

hur många TV-program och filmer har några mystiska enhet räknar ner till noll dessa skärmar är 7 segmenterar skärmar. Med 7 segment visar kan du Visa alla nummer eller vissa alfabet som ditt hjärta önskar.Första kontrollera en 7 segment display verka...

Hur man gör din födelsedag på en skärbräda med en sju segment display.

Detta är en steg för steg guide att lära dig hur du skapar din födelsedag med en skärbräda, en sju segment display och en skärbräda följeslagare.Steg 1: Vet din begränsningar Det första steget till att göra din födelsedagen krets skulle vara att räkn...

Sju Segment Display

Generella displayen med sju lysdioder inuti, allmänt används för att ange heltal t.ex i hissar att ange no. av golvet, i mulitimeters, är etc. känd som sju segment display.Steg 1: delarDu behöver följande delar som anges nedan:-1) IC 4026 (Ic med cou...

7 segment Display gemensam anod Counter Arduino

i detta instructable, jag ska visa dig hur man styr en 7 segment display (gemensam ANOD) som skulle räknas från 0 till 9.Steg 1: 1. KablarnaOkej, kan den förgrening vara ganska knepigt när du arbetar med en gemensam anod 7 segment display. I mitt fal...

Arduino gemensam anod 7 segment display

så du gick till järnhandeln för att få en 7 segment display att använda med din arduino, och när du kommer hem hittar sin gemensamma anod, inte mycket enklare gemensamma katoden... du är på rätt plats!I denna tutorial kommer jag visa dig hur tråd och...

Hur man gör en LED 7-segment display med Arduino

Jag ska visa dig hur man gör ett 7 segment visas med lysdioder. Kombinera med Arduino att skapa nedräkningen timers, enkel text och mycket mer. Jag gillar att göra ursprungliga projekt. Jag sökte hela instructables och hitta inte en så här. I själva...

TOD: Diod Matrix ROM intro (7-segment display)

tonFörDioderEn ny serie av instructables som kommer att använda ton och massor av dioder. Ingen IC är högt, den enda semi ledare är dioder och transistorer. De bara passiva komponenterna är högt kondensatorer, motstånd, växlar, induktorer och potenti...

Sju Segment Display termometer - Arduino baserat

Idag kommer jag visa dig hur man gör egna 7 segment - 2 siffrigt - termometer med Arduino uno och DS18B20 temperaturgivare.Jag föredrar att bygga mitt eget arduino baserade krets med ATmega328p uno innehavaren, men detta är frivilligt för dig. Du kan...