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ą!
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