18
ELETRÔNICA DIGITAL E ESTRUTURA DE DADOS EXEMPLO 1: Para o circuito da figura 1, criar o fluxograma e programa fonte que faça com que o LED, conectado a saída D0, seja acionado. Figura 1 – Circuito para acionamento de LED Fluxograma: Programa Fonte: #include <16F877.h> #use delay(clock=4000000) main() { output_high(pin_d0); }

Exemplos_Fluxogramas_C

Embed Size (px)

DESCRIPTION

pic,programacao,lcd,microcontrolador

Citation preview

Page 1: Exemplos_Fluxogramas_C

ELETRÔNICA DIGITAL E ESTRUTURA DE DADOS

EXEMPLO 1:

Para o circuito da figura 1, criar o fluxograma e programa fonte que faça com que o LED, conectado a saída D0, seja acionado.

Figura 1 – Circuito para acionamento de LED

Fluxograma:

Programa Fonte:

#include <16F877.h> #use delay(clock=4000000) main() { output_high(pin_d0); }

Page 2: Exemplos_Fluxogramas_C

EXEMPLO 2:

Para o circuito da figura 1, criar o fluxograma e programa fonte que faça com que o LED, conectado a saída D0, pisque a cada 500ms.

Fluxograma:

Programa Fonte:

#include <16F877.h> #use delay(clock=4000000) int tempo=250; main() { output_high(pin_d0); delay_ms(tempo); delay_ms(tempo); output_low(pin_d0); delay_ms(tempo); delay_ms(tempo); }

Page 3: Exemplos_Fluxogramas_C

EXEMPLO 3:

Para o circuito da figura 2, criar o fluxograma e programa fonte que faça com que o LED, conectado a saída D0, pisque a cada 500ms, quando uma chave, conectada ao porte A1, seja acionada.

Fluxograma:

Page 4: Exemplos_Fluxogramas_C

Programa Fonte:

#include <16F877.h> #use delay(clock=4000000) int tempo=250; main() {

while(true) { while(!input(pin_a1)) { output_high(pin_d0); delay_ms(tempo); delay_ms(tempo); output_low(pin_d0); delay_ms(tempo); delay_ms(tempo); } }

output_low(pin_d0); }

Page 5: Exemplos_Fluxogramas_C

EXEMPLO 4:

Para o circuito da figura 3, criar o fluxograma e programa fonte com a seguinte função:

- Quando acionada uma chave conectada ao porte B0, faça gerar o sinal especificado na saída D0;

- Quando acionada uma chave conectada ao porte B1, faça gerar o sinal especificado na saída D1;

- Quando acionadas ou desacionadas ambas as chaves, nenhum sinal deve ser gerado.

Page 6: Exemplos_Fluxogramas_C

Fluxograma:

Page 7: Exemplos_Fluxogramas_C

Programa Fonte:

#include <16F877.h> #use delay(clock=4000000) int atraso1=250; int atraso2=200; main() { salto:

while(true) { while(!input(pin_b0)&&!input(pin_b1)) { goto salto; } while(!input(pin_b0)&&input(pin_b1)) { output_high(pin_d0); delay_ms(tempo); delay_ms(tempo); delay_ms(tempo); delay_ms(tempo); output_low(pin_d0); delay_ms(tempo); delay_ms(tempo); delay_ms(tempo); delay_ms(tempo); } while(input(pin_b0)&&!input(pin_b1)) { output_high(pin_d1); delay_ms(tempo); output_low(pin_d1); delay_ms(tempo); } while(input(pin_b0)&&input(pin_b1)) { goto salto; } }

}

Page 8: Exemplos_Fluxogramas_C

EXEMPLO 5:

Para o circuito da figura 4, criar o fluxograma e programa fonte com a seguinte função:

- Quando acionada uma chave conectada ao porte A1, faça gerar os sinais especificados no porte D;

- Quando desacionada, os sinais devem ser invertidos no porte D.

- Freqüência de Pulso: 1000Hz

Page 9: Exemplos_Fluxogramas_C

Fluxograma:

GERA_SINAIS.c

INICIALIZAÇÃO DE

PARÂMETROS

DQ = 182

DQ = 73

GERA 500us

GERA 500us

PIN_A1==0?

SIM

NÃO

INT ATRASO = 250

DQ = 73

DQ = 182

GERA 500us

GERA 500us

Page 10: Exemplos_Fluxogramas_C

ProgramaFonte:

#include <16F877.h> #use delay(clock=4000000) int atraso=250; main() {

while(true) { while(!input(pin_a1)) { output_d(182); delay_us(atraso); delay_us(atraso); output_d(73); delay_us(atraso); delay_us(atraso); } output_d(73); delay_us(atraso); delay_us(atraso); output_d(182); delay_us(atraso); delay_us(atraso); }

}

Page 11: Exemplos_Fluxogramas_C

EXEMPLO 6:

Para o circuito da figura 5, criar o fluxograma e programa fonte com a seguinte função:

- Um Microcontrolador PIC16F877 deve controlar um display de cristal líquido (16x2), através do Porte “D” e enviar a seguinte mensagem (Centralizada):

1a Linha: MECATRONICA 2008

2a Linha: TIMAO EH OH!

Page 12: Exemplos_Fluxogramas_C

Fluxograma do Programa Principal “main()”:

LCD2008.c

INICIALIZAÇÃO DE PARÂMETROS

EN como pin_e0 RS como pin_e1

ms1[i]≠0? NÃO

INT i =0 CHAR msg1[17] CHAR msg2 [15]

CHAMA INIC_DISPLAY

RS = 0

CHAMA WRCAR (0X80)

RS = 1

CHAMA WRCAR (ms1[i])

i = i + 1

SIM

ms2[i]≠0? NÃO

RS = 0

CHAMA WRCAR (0XC0)

RS = 1

CHAMA WRCAR (ms2[i])

i = i + 1

SIM

i = 0

A

A

FIM

Page 13: Exemplos_Fluxogramas_C

Fluxograma da Função “void wrcar(int dado)”:

WRCAR(INT DADO)

EN = 1

GERA 1ms

DQ = DADO

EN = 0

GERA 1ms

RETORNA

INIC_DISPLAY( )

RS = 0

CHAMA WRCAR(0X38)

CHAMA WRCAR(0X06)

CHAMA WRCAR(0X01)

CHAMA WRCAR(0X0D)

RETORNA

RS = 1

GERA 3ms

Page 14: Exemplos_Fluxogramas_C

ProgramaFonte:

#include<16f877.h> #use delay(clock=4000000) #define EN pin_e0 #define RS pin_e1 char msg1[17]={"MECATRONICA 2008"}; char msg2[15]={" TIMAO EH OH!"}; int i=0; void wrcar(int dado) { output_high(EN); delay_ms(1); output_d(dado); delay_ms(1); output_low(EN); } void inic_display() { output_low(RS); wrcar(0x38); wrcar(0x06); wrcar(0x0d); wrcar(0x01); output_high(RS); delay_ms(3); } void main() { inic_display(); output_low(RS); wrcar(0x80); output_high(RS); while(msg1[i]!=0) { wrcar(msg1[i]); i++; } output_low(RS); wrcar(0xc0); output_high(RS); i=0; while(msg2[i]!=0) { wrcar(msg2[i]); i++; } }

Page 15: Exemplos_Fluxogramas_C

EXEMPLO 7:

Para o circuito da figura 6, criar o fluxograma e programa fonte com a seguinte função:

- Um Microcontrolador PIC16F877 deve controlar um display de cristal líquido (16x2), através do Porte “B” e enviar a seguinte mensagem:

1a Linha: ANALOGICO 2008 (Centralizado) 2a Linha: CONVERSAO: (Fixado á esquerda)

Alguns parâmetros:

a. Modo de Fixação: 2 linha 5x7 (8 bits); b. Display aceso sem cursor; c. Escreve deslocando o cursor para a direita; d. Limpa display e retorna o cursor para o inicio.

Page 16: Exemplos_Fluxogramas_C

Fluxograma do Programa Principal “main()”:

LCD2008.c

INICIALIZAÇÃO DE PARÂMETROS

EN como pin_e0 RS como pin_e1

ms1[i]≠0? NÃO

INT i =0 CHAR msg1[17] CHAR msg2 [15]

CHAMA INIC_DISPLAY

RS = 0

CHAMA WRCAR (0X80)

RS = 1

CHAMA WRCAR (ms1[i])

i = i + 1

SIM

ms2[i]≠0? NÃO

RS = 0

CHAMA WRCAR (0XC0)

RS = 1

CHAMA WRCAR (ms2[i])

i = i + 1

SIM

i = 0

A

A

FIM

Page 17: Exemplos_Fluxogramas_C

Fluxograma da Função “void wrcar(int dado)”:

WRCAR(INT DADO)

EN = 1

GERA 1ms

BQ = DADO

EN = 0

GERA 1ms

RETORNA

INIC_DISPLAY( )

RS = 0

CHAMA WRCAR(0X38)

CHAMA WRCAR(0X06)

CHAMA WRCAR(0X01)

CHAMA WRCAR(0X0D)

RETORNA

RS = 1

GERA 3ms

Page 18: Exemplos_Fluxogramas_C

ProgramaFonte:

#include<16f877.h> #use delay(clock=4000000) #define EN pin_e0 #define RS pin_e1 char msg1[16]={" ANALOGICO 2008"}; char msg2[11]={"CONVERSAO:"}; int i=0; void wrcar(int dado) { output_high(EN); delay_ms(1); output_b(dado); delay_ms(1); output_low(EN); } void inic_display() { output_low(RS); wrcar(0x38); wrcar(0x06); wrcar(0x0c); wrcar(0x01); output_high(RS); delay_ms(3); } void main()

{ inic_display(); output_low(RS); wrcar(0x80); output_high(RS); while(msg1[i]!=0) { wrcar(msg1[i]); i++; } output_low(RS); wrcar(0xc0); output_high(RS); i=0; while(msg2[i]!=0) { wrcar(msg2[i]); i++; }

}