Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
I. I NTRODUO
PIC 16F877 um microcontrolador da famlia de 8 bits e ncleo de 14 bits fabricado pela Microchip Technology. O nmero 16 signica que ele faz parte da famlia "MID-RANGE", sendo um microcontrolador da famlia de 8 bits. Isto signica que a ALU(Arithmetic and Logique Unit ou Unidade Aritmtica e Lgica em portugus) lida com palavras de no mximo 8 bits. A letra F indica que a memria de programa deste PIC do tipo "Flash". Cada linha da memria uma palavra de 14 bits. Os trs ltimos nmeros permitem identicar precisamente o PIC, que neste caso um PIC do tipo 877. A referncia 16F877 pode ter um suxo do tipo -XX", onde XX representa a freqncia mxima do relgio que o PIC pode receber. O ?Processador utiliza a memria FLASH no armazenamento dos programas. Possui 8k linhas tendo cada linha 14 bits. Usado em sistemas de automao com grande nmero de aplicaes devido ao seu nmero de pinos ele muito verstil para projetos que envolve um grande poder de processamento. Controle em comunicao visual como: Placares eletrnicos, painel de mensagem, controle de display de LCD ou LED, painel de senha, relgios de hora e temperatura em vias pblicas . II. O BJETIVO O objetivo deste trabalho realizar uma simulao no software PROTEUS de um monitor de tenso com um PIC 16F877A, onde ser mostrado o valor mensurado em um LCD e em um Virtual Terminal. Ainda, ser possvel visualizar interrupes no PIC se a tenso mensurada ultrapassar certo valor denido, e/ou se o pino de interrupo do PIC for ativado. III. M ATERIAIS E M TODO
Figura 1.
Na programao do PIC, o sinal analgico convertido em digital, e enviado para ser exibido no LCD, e tambm para o Virtual Terminal atravs das portas Rx e Tx (serial).
Figura 2.
Para a implementao do circuito monitor de tenso, foi utilizado um PIC16F877A. As tenses de 12Vcc e 24Vcc so ativadas por botes e entram na porta A0 do PIC. Como as entradas analgicas do microcontrolador s suportam uma tenso de 0 a 5V, h um circuito divisor de tenso entre a fonte e a porta A0.
Ao passo que o valor de tenso mensurado ultrapasse o valor j denido na programao de 18Vcc, ocorre uma interrupo no microcontrolador, sendo exibida a mensagem INTERRUPTION no LCD e no Virtual Terminal. Outro modo de ocorrer uma interrupo no microcontrolador pela porta de interrupo RB0, onde ao ser ativado o boto de interrupo, envia um pulso para a porta, causando a interrupo no PIC. Da mesma forma, exibida a mensagem INTERRUPTION no LCD e no Virtual Terminal.
Figura 3.
Figura 4.
Figura 5.
#int_EXT void EXT_isr(void) { a++; if (a==2) a=0; lcd_escreve ("\fINTERRUPTION"); // Escreve no LCD "INTERRUPTION" lcd_pos_xy (1, 2); // Posiciona o LCD na primeira coluna e segunda linha printf (lcd_escreve, "%5.2f V ", t); // Escreve no LCD o valor de tenso lido
void main() {
set_adc_channel(0);
if (c==0){ // Se c==0 lcd_escreve ("\fINTERRUPTION"); // Escreve no LCD "INTERRUPTION" printf("INTERRUPTION \r"); // Escreve no virtual terminal "INTERRUPTION" } c=1; } output_high(pin_c0); // Sada alta no pino C0
t=read_adc(); // Atribui t ao valor lido no adc t=t*512/1024; // Converso do valor analgico t para digital delay_ms(1000); // Espera 1000 milisegundos
if ((a==0)&(b==0)) // Se a==0 e b==0 (ao mesmo tempo) { lcd_escreve ("\fTENSAO MENSURADA"); // Escreve no LCD "TENSAO MENSURADA" lcd_pos_xy (1, 2); // Posiciona o LCD na primeira coluna e segunda linha printf (lcd_escreve, "%5.2f V ", t); // Escreve no LCD o valor de tenso lido
} } }