Huisgemaakte 7 segment display klok (3 / 5 stap)

Stap 3: Een kijkje op de PIC16F727 taken


Zal ik de spullen die ik uit de PIC, gebruikte om dit project gebeuren beschrijven.  Het enige belangrijkste wat dat je nodig hebt voor dit soort taken is een timer. Een timer telt de instructie cycli, die hebben strikte relatie naar kristal of oscillator kunt u de klok van uw processor. Ik gebruikte de interne oscillator de PCB om eenvoudig te houden. Een foto moet voor klokken een enkele instructie uit te voeren:

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

Een instructie neemt 250 nanoseconden, dit is de timer met telt hetzelfde tarief. Als we een timing van 1 milliseconden nodig, we laten de timer uitvoeren voor 4000 instructies, dan signaal, dat 1 ms is verstreken.

Om dit te maken zeer nauwkeurige, zullen wij gebruiken interrupts. Een interrupt een microcontroller is als een tik op de schouder voor u. U bent enkel motto: uw eigen bedrijf, dan iemand langs komt, op je schouder om te zeggen iets te tikken. U sluit uw zakendoen, en aandacht besteden aan de 'onderbreken' die net is opgetreden. Nadat je klaar bent luisteren, je reageren op een bepaalde manier, ga dan terug naar de spullen die je hebt gedaan voordat iemand u onderbroken. Daarmee de PIC manier onderhouden u net een interrupt.

De PIC niet doen wat je wilt, het doet, wat je vertellen om te doen. Dit is een zeer belangrijk ding om te onthouden: een silicium-bug is zelden de reden waarom uw project zal niet opstarten. Het is 99,9% van de defecte tijden programmeren.
Wat hebben we nodig om te vertellen van de PIC te doen om te bereiken wat wij willen:

De configuratie van de oscillator:
We moeten de interne oscillator om de belangrijkste klokbron voor dit project te configureren, we doen dit door de invoering van 0x30 in het OSCCON-register.

Inschakelen interrupts:
Eerst moeten we om de interrupt-systeem. Dit wordt gedaan door het manipuleren van de bits in het register van de INTCON.
We moeten om globale interrupts en Timer0 onderbreken. Het gegevensblad kijkend, zien we bit 7 worden de global interrupt inschakelen bits en bit 5 als de Timer0 interrupt inschakelen bits. De rest van de bits zijn nullen, we hoeven niet te wijzigen. Dit geeft een binaire waarde van b10100000, die in de hexadecimale notatie is 0xA0. We hebben dat in het INTCON-register.

Prescalers:
Een prescaler is een teller zelf, welke stappen op elke instructie cyclus. Deze - standaard - zijn ingesteld op 1:1 zodat ze niet met de normale werking van de timer interfereren. De prescaler uitgang is aangesloten op de timer input, zoals we op het diagram zien kunnen. Als we een prescaler ingesteld op 1:2, gaat de uitvoer naar '1' pas na 2 instructie cycli hebben voltooid. Dit betekent dat de timer op elke instructiecyclus, maar op elke 2-nd zal niet verhogen. Gelijkend op dit, door het instellen van de prescaler te delen door 4, de TMR0 wordt steeds verhoogd elke 4-th instructiecyclus, enzovoort.

Configureren van de Timer0 te geven elke milliseconde onderbreken:
Timer0 telt de instructies door het verhogen van de waarde in het register van de TMR0. dat waarde 8 bits breed is, wat betekent dat, rekenen we niet verder, dan 255. Als de teller op 255 is, en een toename optreedt, zal het register overloop en start het opnieuw tellen van 0.
Dit is het punt, wanneer een timer op een interrupt wijzen kan. Maar als dit elke 256-th-cyclus gebeurt, hoe kunnen we gebruiken het te tellen tot 4000? Door hulp van de prescalers.

4000 / 256 = 15.625

Dus we een afdeling door 16 moeten (de dichtstbijzijnde en grotere prescaler waarde) om dit gebeuren.

4000 / 16 = 250;

Aangezien de timer onderbreken geeft bij rollover van 255 -> 0, zetten we gewoon een offset van 256-250 = 6 in het TMR0-register. Deze waarde moet worden vernieuwd telkens wanneer de interrupt wordt onderhouden. We moeten ook duidelijk de vlag, die is ingesteld op '1', toen de Timer0 rollover plaatsvond.
Hebben gezegdd dat, we nu een precieze interrupt hebben, optreedt die elke milliseconde. Ik meestal voeren een teller in de interrupt service routine, ik reken 1000 interrupts, opbouw van een een tweede signaal. De seconden tellen moet gebeuren in de hoofdlus, er zijn gewoon simpel items die 60 seconden tellen, dan overloop te verhogen de variabele "minuut". Vervolgens wordt dezelfde manier, de "uren", "dagen", "maanden" variabele verhoogd.

De cijfers
Als het project eenvoudig genoeg is, en sommige 7 segment displays in het schema heeft, verzorgen nooit ik de segment controller pinnen een naast elkaar vinden. Dit project was een uitzondering, de fuzzy definieert u kunt zien aan het begin van het programma om te vereenvoudigen van de manieren waarop ik de cijfers weergeven. Als je genoeg tijd om te proberen om ze te begrijpen, ziet u hoe eenvoudig dit weer te geven deel eigenlijk is.

Gerelateerde Artikelen

Arduino Nano en Visuino: 7 Segment Display klok met MAX7219 en DS1307 Real Time Clock(RTC)

Arduino Nano en Visuino: 7 Segment Display klok met MAX7219 en DS1307 Real Time Clock(RTC)

DS1307 Real timerklok zijn wijd-beschikbaar low-cost I2C RTC modules. Ze komen met een klok en een kleine batterij, en wanneer aangesloten op de Arduino, annuleerteken vieren voetspoor van real-time zelfs wanneer de Arduino board is niet aangedreven.
7 segment Display klok

7 segment Display klok

In dit ondoorgrondelijke ik zal u tonen hoe te maken van een digitale klok!U moet:Een zon oprichter kitDie omvat een brood bord, jumper draden, knoppen, LED's en een 7 segment display.U zult ook een arduinode zon oprichter vaktapeUSB-kabelPak van de
Arduino Binary 7 Segment Display klok & kalender

Arduino Binary 7 Segment Display klok & kalender

In tegenstelling tot de meeste andere binaire klokken toont deze klok de binaire tijd en datum op 3 rijen van 8 zeven segment weergeeft als onderdeel en nullen in plaats van alleen rijen van LEDs.Volledige details hierover mijn website hier.Een Ardui
Digitale klok met behulp van 7 Segment Display gecontroleerd met behulp van TV Remote

Digitale klok met behulp van 7 Segment Display gecontroleerd met behulp van TV Remote

er zijn rassen van digitale klok beschikbaar in ons dagelijks leven. Eenvoudige digitale klok zal meestal hebben sommige gebouwd in functies zoals alarm klok, kalender en thermometer naast de display de klok-informatie. Sommige van de vooraf digitale
Arduino digitale klok (met Charlieplexing LED's, 7 segment Displays)

Arduino digitale klok (met Charlieplexing LED's, 7 segment Displays)

dit is mijn tweede instructable. Ik had net een stemming van het maken van een digitaal horloge. Maar wilde het een leerproces. Had ik al een sanguino ik kon gemakkelijk gebruikt hebben die Atmega644 chip. het zou zijn geweest meer dan genoeg.  Maar
Arduino VFD Display klok Tutorial - een gids VFD-schermen

Arduino VFD Display klok Tutorial - een gids VFD-schermen

... + Een klein beetje over VFDsHerinner je je (nog) de weergave van uw oude CD-speler, HiFi-systeem of auto radio? Heb je ooit gemerkt de displays gebruikt op uw lokale supermarkt ziet u het gescande object en de prijs van het?Deze schermen hebben e
Zeven Segment Display Thermometer - Arduino gebaseerd

Zeven Segment Display Thermometer - Arduino gebaseerd

Vandaag zal ik u tonen hoe te maken van uw eigen 7 segment - 2 digit - thermometer met Arduino uno en DS18B20 temperatuursensor.Ik verkies om te bouwen van mijn eigen arduino gebaseerd circuit met behulp van de ATmega328p uno bezitter, maar dit is op
Arduino 7 Segment Display Clock (+ geluid activering)

Arduino 7 Segment Display Clock (+ geluid activering)

In dit instructable ik zal u tonen hoe te maken van uw eigen Arduino gebaseerd 7 segment display (4 cijfers) klok met geluid activering functie!Het circuit wordt gebruikt voor de ATmega328p micro-controller (hetzelfde als de Arduino uno bestuur) en d
Naam op 7-segment Display Atmel Avr

Naam op 7-segment Display Atmel Avr

In dit instructable (mijn eerste one!) Ik wil je laten zien iets wat die ik voor een schoolproject gemaakt. De oorspronkelijke opdracht was als volgt: "In MSVS (of Microsoft visual studio) code in assembler: invoeren van uw naam als een ASCII-hexadec
Arduino 7-Seg Display klok

Arduino 7-Seg Display klok

Dit is een Auduino klok gemaakt met de Sunfounder kit. Dit is een echt cool project en gemakkelijk te maken!Stap 1: materialen Slechts 9 materialen zijn vereist voor het samenstellen van de arduino aangedreven klokBreadboardDradenUSB-kabelDraad aansl
Grote 7-segment digitale klok

Grote 7-segment digitale klok

met behulp van slechts 2 condensatoren, 3 weerstanden, 4 grote 7-segment Display, 1 xtal, 2 schakelaars en 1 Microcontroller PIC, u kunt bouwen aan dit digitale Led klok belangrijkste circuit.u kunt gebruiken gemeenschappelijke anode of gemeenschappe
TimeDuino - 7 Segment Arduino Klok (geen verschuiving registers nodig!)

TimeDuino - 7 Segment Arduino Klok (geen verschuiving registers nodig!)

Hey alle instructable goers! Dit is mijn eerste project. Ja, ik weet dat die woorden meestal krijgen het stereotype "This isn't going to worden van een goed project" houding, maar ik heb gewacht voor een lange tijd voor een project waarmee waard
4" zeven Segment Display

4" zeven Segment Display

Een 7 segment display is een algemene informatie die is opgebouwd uit LED's gerangschikt in een bepaalde volgorde om numerieke waarden weer te geven. Ze zijn ook in staat om veel van het alfabet, maar niet met zeer goede duidelijkheid weer te geven.
Zeven Segment Display

Zeven Segment Display

Het algemene doel-scherm met de zeven LED's binnen, meestal gebruikt om aan te geven van de gehele getallen b.v. In liften om aan te geven van het veld Nr. van vloer, in mulitimeters, staat etc. bekend als de zeven segment display.Stap 1: onderdelenU