7 segmentų indikatoriaus valdymas PIC mikrovaldikliu  (0)

7 segmentų indikatoriai plačiai naudojami įterptinėse sistemose, kuomet reikia atvaizduoti tik kelis skaitmenis (pavyzdžiui, įtampą, dažnį ir pan.). Jų populiarumą lemia nedidelė kaina, nesudėtingas valdymas, platus matymo kampas ir kt. savybės.


Prisijunk prie technologijos.lt komandos!

Laisvas grafikas, uždarbis, daug įdomių veiklų. Patirtis nebūtina, reikia tik entuziazmo.

Sudomino? Užpildyk šią anketą!

7 segmentų indikatorius sudarytas iš atskirtų segmentų – šviesos diodų, kurie žymimi raidėmis a, b, c, … g bei dešimtainio taško – dp. 7 segmentų indikatoriuje esantys šviesos diodai tarpusavyje gali būti sujungti pagal bendro katodo arba bendro anodo schemas (2 pav.). Esant bendro katodo schemai, indikatoriaus bendras išvadas jungiamas prie neigiamos įtampos (žemės), o atitinkamas segmentas uždegamas prie jo prijungus teigiamą įtampą. Kaip ir paprasto šviesos diodo atveju, srovė, tekanti vienu segmentu, yra apie 10mA, todėl prie kiekvieno segmento turi būti prijungtas atitinkamai parinktas ribojantis rezistorius. PIC18 mikrovaldiklio prievadu tekanti srovė leidžia 7 segmentų indikatorių tiesiogiai prijungti prie mikrovaldiklio. Tačiau jei prie mikrovaldiklio prijungta daug įvairių valdomų įtaisų, reiktų naudoti specialų buferinį grandyną, pavyzdžiui 74HC244. 3 pav. pateikta 7 segmentų indikatoriaus prijungimo prie PIC mikrovaldiklio schema. Jei indikatoriaus segmentai a, b, c, … dp prijungti prie mikrovaldiklio išvadų RC0, RC1, … RC7, dešimtainiai skaičiai indikatoriuje bus atvaizduoti PORTC prievade išvedamų signalų, pateiktų 1 lentelėje, pagalba. 1 lentelė. Kodas dešimtainiams skaičiams atvaizduoti indikatoriuje

1 pavyzdys. Programa dešimtainiams skaičiams atvaizduoti 7 segmentų indikatoriuje

/************************************************* 

* Programa C kalba “Skaiciu atvaizdavimas 7 segmentu indikatoriuje”

* Mikrovaldiklis: PIC18F14K22

* Daznis: 16MHz

************************************************/

/** I N C L U D E S *********************************/

#include <p18cxxx.h>

/** C O N F I G U R A T I O N ***********************/

#pragma config FOSC = IRC //vidinis RC rezonatorius

#pragma config WDTEN = OFF //Watchdog Off

#pragma config LVP = OFF //Low voltage program

/** Duomenys programu atmintyje *********************/

const rom unsigned char table_7_segm[] = //kodu lentele

{

0×3F, //0

0×06, //1

0×5B, //2

0×4F, //3

0×66, //4

0×6D, //5

0×7D, //6

0×07, //7

0×7F, //8

0×6F //9

};

#pragma code

/** F U N C T I O N S *******************************/

void delay (unsigned int ms)

{

unsigned int i;

while (ms–) {

for (i = 0; i < 332; i++)

;

}

}

/** M A I N *****************************************/

void main(void)

{

unsigned char skaicius = 0;

OSCCONbits.IRCF2 = 1; //Vidinis RC rezonatorius

OSCCONbits.IRCF1 = 1; //nustatomas 16MHz

OSCCONbits.IRCF0 = 1;

ANSEL = 0b00000000; //Visi MV isvadai nustatomi

ANSELH = 0b0000; //kaip skaitmeniniai

PORTC = 0;

TRISC = 0; //visi PORTC isvadai – isejimai

while (1)

{

if (skaicius == 10) skaicius = 0;

PORTC = table_7_segm[skaicius];

skaicius++;

delay (500);

} //end while()

}

1 pavyzdyje pateikta programa, atvaizduojanti 7 segmentų indikatoriuje dešimtainius skaičius nuo 0 iki 9. Kiekvieną skaičių atitinkantis kodas saugomas lentelėje table_7_segm[], esančioje programų atmintyje. Norimas skaičius iš lentelės iškviečiamas nurodant jo eilės numerį – pavyzdžiui, nurodžius table_7_segm[5], bus iškviestas 6 – asis masyvo elementas, t.y. skaičius 5.

Kaip matyti iš pateikto pavyzdžio, programų atmintis gali būti naudojama ne tik programos kodui, bet ir įvairių konstantų saugojimui. Tam naudojami kvalifikatoriai, nurodantys kompiliatoriui atminties tipą bei adresą:

  • rom – kvalifikatorius, nurodantis, kad objektas bus saugomas programų atmintyje;
  • ram – kvalifikatorius, nurodantis, kad objektas bus saugomas duomenų atmintyje;
  • #pragma code – direktyva, nurodant progamos instrukcijų bloko pradžią.

Parengė:
Kauno technikos kolegija
Energetikos ir elektronikos katedra
doc.dr. Šarūnas Kilius

Pasidalinkite su draugais
Aut. teisės: www.technologijos.lt
Autoriai: Šarūnas Kilius
(4)
(0)
(3)

Komentarai (0)