Пишем программный код для подключения семи сегментного индикатора к микроконтроллеру PIC16F873A в среде программирования MPLAB X IDE.

В данном уроке мы с Вами подключим семисегментный индикатор к нашему микроконтроллеру. Использовать будем индикатор с обратным включением:

Подключать индикаторы будем к ножкамPB0 — PB7, переключение сегментов подключим к выводам PC4 и PC5:

Если у Вас семисегментный индикатор с прямым включением, Вам нужно будет заменить в программе сигналы управления на обратные ( 1 на 0 и наоборот), так же заменить ключ управления индикаторами.

Программный код:

#include "main.h"

#include <xc.h>
unsigned int k[2]={0};
int count=0;

void indikator(int t){
switch (t){
case 0:
PORTB = 0b11000000;
break;
case 1:
PORTB = 0b11111001;
break;
case 2:
PORTB = 0b10100100;
break;
case 3:
PORTB = 0b10110000;
break;
case 4:
PORTB = 0b10011001;
break;
case 5:
PORTB = 0b10010010;
break;
case 6:
PORTB = 0b10000010;
break;
case 7:
PORTB = 0b11111000;
break;
case 8:
PORTB = 0b10000000;
break;
case 9:
PORTB = 0b10010000;
break;
default:
PORTB = 0b11111111;
break;
}

}


void __interrupt() timer_0(){
if(TMR0IE&&TMR0IF){
PORTCbits.RC4 =1;
PORTCbits.RC5 =1;
if(count==1){
indikator(k[1]);
PORTCbits.RC4 = 0;
}
if(count==2){
indikator(k[0]);
PORTCbits.RC5 = 0;
}
count++;
if (count>2)
{count=0;}

T0IF=0;
}
}

void init (){

TRISB = 0x00;//otput
PORTB = 0xFF;//output all 1

TRISC = 0x00;
PORTC = 0x00;

OPTION_REG=0b00000011; //Prescaler 16
INTCON=0xA0;
TMR0 = 0;
}


void main(void) {
init ();
int g=0;
while(1){
g++;
if (g==99) {
g=0;
}
__delay_ms(500);
k[1]=((g/10)%10);
k[0]=(g%10);
}
return;
}