Baixe o app para aproveitar ainda mais
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 ); } } } .
Compartilhar