Buscar

Display 7s e LCD valmir da silva 201512576883

Prévia do material em texto

Faculdade Estácio de Curitiba 
Disciplina: Microprocessadores 
Professor: Henrique Marin van der Broocke Campos 
Aluno: valmir da silva 
Matrícula: 201512576883 
Esta atividade é para ser entregue individualmente até a data de 22/11/21. Postar 
no TEAMS. Anexar numa mesma pasta os arquivos gerados pelo compilador, 
juntamente com os prints da execução da simulação e o código. 
 
 Atividade 3 – Utilização do display de 7s e display de LCD 
1) Crie um contador crescente ou decrescente, utilizando os 4 displays de 7s do 
PICSIMLAB. Dica: escolher um delay de 25 ms para a ativação de cada 
display. Para exibir o dígito no display inserir uma contagem de 10 
tempos. Dessa forma a troca dos dígitos entre os displays ficará estável 
Utilize a mesma frequência de clock no compilador e no simulador. Apresente 
os prints do código no compilador e o funcionamento no simulador. Valor: 1,0. 
 
#include <18F4550.h> 
#fuses XT, NOMCLR, NOWDT 
#use delay(clock=20MHz) 
 
int8 segmentos[] = { 
 0b00111111, 0b00000110, 0b01011011, 0b01001111, 
 0b01100110, 0b01101101, 0b01111100, 0b00000111, 
 0b01111111, 0b01100111 
}; //Vetor contendo os bits correspondentes aos dígitos de 0 a 9 
 
void ativarDisplay(int pino, int numero) {//função para ativação dos displays 
output_bit (PIN_A1, 0); 
output_bit (PIN_A2, 0); 
output_bit (PIN_A3, 0); 
output_bit (PIN_A4, 0); 
output_bit (PIN_A5, 0); 
 
output_bit (pino, 1); 
 
output_d( segmentos[numero] ); 
delay_ms(1000);// Tempo de delay de 1 segundo. 
} 
 
void main () {//Retorna vazio. 
 
 while(true) { 
ativarDisplay(PIN_A2, 0); 
ativarDisplay(PIN_A3, 1); 
ativarDisplay(PIN_A4, 2); 
ativarDisplay(PIN_A5, 3); 
ativarDisplay(PIN_A2, 4); 
ativarDisplay(PIN_A3, 5); 
ativarDisplay(PIN_A4, 6); 
ativarDisplay(PIN_A5, 7); 
ativarDisplay(PIN_A2, 8); 
ativarDisplay(PIN_A3, 9); 
 } 
 
} 
 
 
 
 
 
2) Desenvolver um programa que reproduza um contador manual, 
incrementado e decrementado pelo usuário, através do PICSIMLAB. Um 
contador manual será incrementado mediante um botão a ser pressionado e 
decrementado mediante a outro botão ser pressionado. Um terceiro botão faz 
com que o contador decremente até o zero, a partir da contagem que parou 
(caso seja maior que zero) 
O contador deve exibir a contagem no display de LCD da placa 4 do 
PICSIMLAB. Deve exibir também o equivalente binário nos LEDs conectados 
a porta D do PIC 18F4550. (Ex.: contador = 2; binário = 00000010). Valor: 1,0 
 
#include <18F4550.h> 
#fuses HS, MCLR, NOWDT //high speed, master clear e no watchdog timer 
#use delay(clock=20MHz) 
 
#define LCD_DB0 PIN_D0 
#define LCD_DB1 PIN_D1 
#define LCD_DB2 PIN_D2 
#define LCD_DB3 PIN_D3 
#define LCD_DB4 PIN_D4 
#define LCD_DB5 PIN_D5 
#define LCD_DB6 PIN_D6 
#define LCD_DB7 PIN_D7 
 
#define LCD_E PIN_E1 
#define LCD_RS PIN_E2 
 
#include <flex_lcd.c> 
 
int opcao;//1:botão B0; 2:botão B1; 3:botão B2 int i; 
 
void executarModo(int op) { 
 
 switch(op) { 
 
 case 1: for(i=0;i<=6;i++){// 
Incrementa até seis. 
printf(LCD_PUTC, "%u",i); 
 output_d(i); 
delay_ms(500); 
 } 
break; 
 
 case 2: for(i=6;i>=3;i--){// Decrementa de 
seis até três. printf(LCD_PUTC, "%u",i); 
 output_d(i); 
 delay_ms(500); 
 } 
break; 
 
 case 3: 
for(i=3;i>=0;i--){// Decrementa de três até zero. 
 if(i==255) {////Verifica depois da leitura do for se o número é maior 
//que zero sendo que 255 é o número máximo que o pic lê. Então a 
função 
 //deste if é parar a leitura quando chegar em 255. 
break; 
 } 
 printf(LCD_PUTC, "%u",i); 
 output_d(i); 
 delay_ms(500); 
 } 
 
break; 
 
 
 } 
 
} 
 
void main () { 
 
 lcd_init(); 
 
 executarModo(opcao); 
 
 while (true) { 
 
 if ( input(PIN_B0) == 0 ) { 
 opcao = 1; 
 
 executarModo(opcao); 
 while ( input(PIN_B0) == 0 ); 
 } 
 if ( input(PIN_B1) == 0 ) { 
opcao = 2; 
executarModo(opcao); 
 while ( input(PIN_B1) == 0 ); 
 } 
 if ( input(PIN_B2) == 0 ) { 
opcao = 3; 
executarModo(opcao); 
 while ( input(PIN_B2) == 0 ); 
 } 
 
 
 } 
 
} 
.

Continue navegando