Temporizatoare și contoare în microcontroler 8051 și aplicațiile sale

Încercați Instrumentul Nostru Pentru Eliminarea Problemelor





Multi dintre aplicații de microcontroler necesită numărarea evenimentelor externe, cum ar fi frecvența trenurilor de impulsuri și generarea întârzierilor interne precise între acțiunile computerului. Ambele sarcini pot fi implementate prin tehnici software, dar buclele software pentru numărare și sincronizarea nu vor da rezultatul exact, ci funcții mai importante nu sunt realizate. Pentru a evita aceste probleme, temporizatoarele și contoarele din microcontrolere sunt opțiuni mai bune pentru aplicații simple și cu costuri reduse. Aceste temporizatoare și contoare sunt utilizate ca întrerupe în microcontroler 8051 .

Există două temporizatoare și contoare pe 16 biți 8051 microcontroler : timer 0 și temporizator 1. Ambele temporizatoare constau dintr-un registru pe 16 biți în care octetul inferior este stocat în TL și octetul superior este stocat în TH. Temporizatorul poate fi folosit ca un contor, precum și pentru o operație de sincronizare care depinde de sursa impulsurilor de ceas la contoare.




Cronometre și contoare

Cronometre și contoare

Contoarele și cronometrele din microcontrolerul 8051 conțin două registre de funcții speciale: TMOD (Timer Mode Register) și TCON (Timer Control Register), care sunt utilizate pentru activarea și configurarea cronometre și contoare .



Controlul modului temporizator (TMOD): TMOD este un registru pe 8 biți utilizat pentru selectarea temporizatorului sau a contorului și a modului de temporizare. 4 biți inferiori sunt utilizați pentru controlul funcționării temporizatorului 0 sau contorului 0, iar restul de 4 biți sunt utilizați pentru controlul operării temporizatorului 1 sau contorului 1. Acest registru este prezent în registrul SFR, adresa pentru registrul SFR este a 89-a.

Controlul modului temporizator (TMOD)

Controlul modului temporizator (TMOD)

Poartă: Dacă bitul de poartă este setat la ‘0’, atunci putem începe și opri cronometrul „software” în același mod. Dacă poarta este setată la „1”, atunci putem efectua cronometrul hardware.

CT: Dacă bitul C / T este „1”, atunci acționează ca un mod de contor și în mod similar atunci când este setat C +
= / Bitul T este „0”, acționează ca un mod de temporizare.


Biți selectați modul: M1 și M0 sunt biți de selectare a modului, care sunt folosiți pentru a selecta operațiile cu temporizator. Există patru moduri de acționare a cronometrelor.

Modul 0: Acesta este un mod de 13 biți, ceea ce înseamnă că operația temporizatorului se finalizează cu impulsuri „8192”.

Modul 1: Acesta este un mod pe 16 biți, ceea ce înseamnă că operația temporizatorului se finalizează cu impulsuri maxime de ceas care sunt „65535”.

Modul 2: Acest mod este un mod de reîncărcare automată pe 8 biți, ceea ce înseamnă că operația temporizatorului se finalizează doar cu impulsuri de ceas „256”.

Modul 3: Acest mod este un mod cu timer divizat, ceea ce înseamnă valorile de încărcare în T0 și pornește automat T1.

Biti de selectie a modului

Biti de selectie a modului

Selecția modului Valorile temporizatoarelor și contorului în 8051

Valorile de selectare a modului pentru temporizatoare și contoare

Valorile de selectare a modului pentru temporizatoare și contoare

Registrul de control al temporizatorului (TCON): TCON este un alt registru utilizat pentru a controla operațiunile contorului și temporizatoarelor din microcontrolere. Este un registru pe 8 biți în care patru biți superiori sunt responsabili pentru temporizatoare și contoare, iar biții inferiori sunt responsabili pentru întreruperi.

Registrul de control al temporizatorului (TCON)

Registrul de control al temporizatorului (TCON)

TF1: TF1 înseamnă bitul de semnalizare „timer1”. Ori de câte ori se calculează întârzierea în timer1, TH1 și TL1 ating automat valoarea maximă care este „FFFF”.

EX: while (TF1 == 1)

Ori de câte ori TF1 = 1, apoi ștergeți bitul de semnalizare și opriți cronometrul.

TR1: TR1 reprezintă bitul de pornire sau oprire timer1. Acest pornire cu temporizator poate fi prin instrucțiuni software sau prin metode hardware.

EX: poarta = 0 (cronometru de pornire 1 prin instrucțiuni software)
TR1 = 1 (Timer de pornire)

TF0: TF0 înseamnă „timer0” flag-bit. Ori de câte ori se calculează întârzierea în timer1, TH0 și TL0 ating automat o valoare maximă care este „FFFF”.

EX: while (TF0 == 1)
Ori de câte ori TF0 = 1, apoi ștergeți bitul de semnalizare și opriți cronometrul.

TR0: TR0 înseamnă bitul de pornire sau oprire „timer0”, acest timer pornind poate fi prin instrucțiuni software sau prin metode hardware.

EX: poarta = 0 (cronometru de pornire 1 prin instrucțiuni software)
TR0 = 1 (Timer de pornire)

Calcule de întârziere pentru microcontrolerul 8051

Microcontrolerul 8051 funcționează cu o frecvență de 11,0592 MHz.

Frecvență 11,0592MHz = 12 pule

1 impuls de ceas = 11,0592MHz / 12

F = 0,921 MHz

Timp de întârziere = 1 / F.

T = 1 / 0,92 MHz

T = 1,080506 noi (pentru ciclul „1”)

1000us = 1MS

1000ms = 1sec

Procedură pentru calcularea programului de întârziere

1. Mai întâi trebuie să încărcăm valoarea registrului TMOD pentru „Timer0” și „Timer1” în moduri diferite. De exemplu, dacă dorim să acționăm timer1 în modul 1, acesta trebuie configurat ca „TMOD = 0x10”.

2. Ori de câte ori acționăm temporizatorul în modul 1, temporizatorul ia impulsurile maxime de 65535. Apoi, impulsurile de întârziere calculate trebuie să fie scăzute din impulsurile maxime și apoi convertite în valoare hexazecimală. Această valoare trebuie încărcată în timer1 biți superiori și biți inferiori. Această operație cu temporizator este programată folosind încorporat C într-un microcontroler .

Exemplu: întârziere de 500us

500us / 1.080806us

461 impulsuri

P = 65535-461

P = 65074

65074 convetit prin hexa zecimal = FE32

TH1 = 0xFE

TL1 = 0x32

3. Porniți cronometrul1 „TR1 = 1”

4. Monitorizați bitul de semnalizare „while (TF1 == 1)”

5. Ștergeți bitul de semnalizare „TF1 = 0”

6. Închideți cronometrul „TR1 = 0”

Exemple de programe:

Program- 1

Program- 1

Program- 2

Program- 2

Program- 3

Program- 3

Contoare în 8051

Putem folosi un contor păstrând bitul C / T ridicat, adică logica ‘1’ în registrul TMOD. Pentru o mai bună înțelegere, am oferit un program care utilizează temporizatorul 1 ca contor. Aici LED-urile sunt conectate la portul 8051 2, iar comutatorul la pinul T3 1 P3.5 și, prin urmare, dacă comutatorul este apăsat, valoarea va fi numărată. În caz contrar, un senzor conectat extern la acest pin contor ca intrare face această operațiune de numărare.

Program de contra

Program de contra

Aplicații de cronometre și contoare în 8051

Contor digital cu 8051

Contorul digital cu 8051 se realizează prin programarea microcontrolerului așa cum sa discutat mai sus și prin atașarea unui sistem de senzori la acesta. Acest contor de obiecte folosește senzor IR care detectează obstacolul din apropierea acestuia și, de asemenea, activează pinul microcontrolerului 06. Când un obiect trece prin senzori, atunci microcontrolerul primește un semnal de întrerupere de la senzorii IR și crește numărul care este afișat în afișajul cu 7 segmente.

Contor digital cu 8051

Contor digital cu 8051

Circuit de întârziere cu microcontrolerul 8051

Figura de mai jos arată cum poate fi implementată operația temporizatorului pentru comutarea LED-urilor într-un mod eficient. Operația de întârziere pentru setul de LED-uri este programată într-un microcontroler în modul discutat mai sus. Aici, un set de LED-uri sunt conectate la portul 2 cu un sistem de alimentare comun. Când acest circuit este pornit pe baza întârzierii program în microcontroler în mod corespunzător, aceste LED-uri sunt pornite.

Circuit de întârziere

Circuit de întârziere

Este vorba despre cronometrul și contatoarele de microcontroler 8051 cu circuite de bază de programare și aplicație. Sperăm că informațiile din acest articol ar fi putut să vă ofere suficiente date pentru a înțelege mai bine conceptul. În plus, orice îndoieli tehnice cu privire la programarea 8051 și circuitele sale, ne puteți contacta comentând mai jos.

Credite foto: