Pesquisar neste blog

28/03/2020

Eletricidade aplicada EA08

Elementos armazenadores de energia - circuitos de primeira ordem

1.Um capacitor de 0,2uF tem uma carga de 10uC. Calcule a tensão e a energia. Reposta 50V,  250uJ
Resolução:

q = C.V
V = q / C = 10 / 0,2 = 50V

P = dw /dt
V .i = dw /dt
V .C . dV /dt = dw /dt
W = (C . V2 ) / 2 = W = ( 0,2 x 10-6 . 502 ) / 2
W = 250 uJ

2. Se a energia armazenada em um capacitor de 0,5F e 25J, calcule a tensão e a carga. Resposta 10V, 5C












Resolução:
C = 0,5F             W = 25J
V = ?                    q = ?

W = (C . V2 ) / 2              25 = (0,25 . V2 ) / 2             V = 10V
q = c . V = 0,5 . 10 = 5C


3. Dado o circuito ao lado, com C=1/4F, R1=R2=8Ω e V=40V. Se a corrente em R2 em t= 0- é 2A no sentido para baixo, calcule em t= 0- e em t= 0+:
(a) a carga no capacitor,
(b) a corrente em R1 que flui para a direita, (c) a corrente no capacitor que flui para baixo e (d) dvc / dt em [V/s]. Resposta:  (a) 4C, 4C  (b) 3A, 0A (c) 1A, -2A, (d) 4V/s, -8V/s

Resolução:

a)
Vc(t0)= Vc(t0) ____ Capacitor não permite uma variação brusca de tensão

Vc = VR2 = 8.2 = 16V
q= C.Vc = 0,25.16 = 4C

q(t0) = (t0) = 4C

b)


LKT:  - 40 + 8i + 8.2 = 0
i = 3A
t(t0) _______ i1 = 3A

t0+
Simulador usando www.systemvision.com

t0+____ i1 = 0A

t (0+)  i = 0 A





c)
i1 = ic + iR2

ic = 3 - 2 = 1A

t (0+)



ic = -2A  a corrente entra no polo negativo

t (0+)  => ic = - 2A







4.Calcule os valores máximo e mínimo da capacitância que pode ser obtida de 10 capacitores de 1uF.  Resposta: 10uF, 0,1uF

Resolução:

Cmax = C1 + C2 + ... + C10 = 10 uF
10 capacitores de 1 uF  associadas em paralelo

1/Cmin = 1/C1 + 1/C2 + ... + 1/C10

Cmin = 0,1 uF # 10 capacitores de 1 uF associados em série


5.Calcule a capacitância equivalente do circuito abaixo. Resposta: 10uF









Resolução:


C1= [(110.11) / (110+11)] = 10uF






C2= 14 + 10 = 24 uF






C3= (8 . 24) / 8+24 = 6uF




C4= 6 + 6= 12 uF






Ceq = [(60 . 12) / 60+12] = 10 uF












6. Deduza uma equação para a divisão da corrente entre dois capacitores em paralelo, calculando os valores de i1 e i2.









Resolução:


C1 // C2   q1 = C1 . V      i = C1. dv/dt

dv/dt = i / Cp   ( 1 )

LKC     i = i1 + i2  ( 2 )

i1 = C1/ dv/dt  ( 3 )
q2 = C2 . V

i2 = C2 . dv/dt  ( 4 )

(1) em ( 3)   i1 = C1 . i / Cp

i1 = C1 . i / (C1 + C2)

(1) em (4)
i2 = C2 . i / Cp              i2 = C2 . i / (C1 + C2)


7. Deduza uma equação para a divisão da tensão entre dois capacitores em serie, calculando os valores de v1 e v2.











Resolução:
Cs = C1 . C2 / (C1+C2)

V = V1 + V2   ( 1 )

q1 = C1 . V1       i = C1 . dV1 / dt

dV1 = 1 . i.dt / C1

V1 = 1/C1   t0t  i . dt    ( 1 )



de forma análoga para v2 e v1 temos :













8. Um indutor de 40[mH] tem uma corrente i(t) = 100 cos 10πt(t) [mA]. Calcule o enlace de fluxo e a energia em t=1/30s. Resposta: 2mWb, 50uJ.

Resolução:

L = 40 x 10-3 [ H ]
t = 1/30 [s]
i(H) = 100 . cos(10π.t) 10-3 [A]
λ = L . i = 40 x 10-3 . 100 . cos(10π.t) 10-3
λ = 40 x 10-3 . cos( 10π . 1/30) --> radiano
λ = 2 mWb

P= dw / dt
V . i = dw / dt => L . di / dt . i = dw / dt  => W= L   i . di

W= L . i . i / 2  = > V= L . di / dt    => W= L . i . i / 2

W= 40 . 10-3[ 100. cos(10π . 1/ 30 ) 10-3] 2
W = 20 . 10-3 . 0,12 . 0,25
W = 50 uW


9. Um indutor de 2[mH] tem uma tensão v(t) = 2 cos 1000t(t) [V] com i(0) = 1,5A. Calcule a energia armazenada no indutor em t = π/6 ms. Resposta: 4mJ.

Resolução:

L = 2 x 10-3 H
V(t) = 2.cos(1000t)          i(0) = 1,5A         W = ?           t = π /6

V = L. di/ dt   =>         di = V.dt / L     =>     i(t) - i(to) = 1/L . (to, t) V .dt

i(t) = 1,5 + 1/ 10-3  (0, π /6) 2.cos(1000.t) dt   => radiano












i(t) = 2A
P = dw/dt  => V.i = dw/dt      => L .di . i /dt  = dw/dt

W = L. i /2
W = 2.10-3 . 22 / 2
W = 4 mS


10. Dado o circuito ao lado, com I=10A, R1=12Ω, R2=8 Ω, L=1H e i1 em t =0- = 4A. Se a chave está aberta em t=0- , calcule:
(a) IL em t=0- e em t=0+,
(b) i1 em t=0+ e (c) diL / dt em [A/s].
Resposta: (a) 6A, 6A, (b) 0A, (c) -48A/s.











Resolução:

a) t(0)
Simulador EveryCircuit











LKC em X: 4 + iL = 10
iL = 6A

Para (t0+) . O indutor não permite variação brusca de corrente
iL(0+) = iL(0+) = 6A

b)
Em  t0+, a corrente que passava por R1 agora passa pelo curto -circuito
iR1 = 0A


c)
i1 = 0     V2 = 6 . 8 = 48V
LKT em I     VL + V2 + V1 = 0
VL = - 48V

V = L . di/dt           di/dt = v/L = - 48/1
di/dt = - 48 A/s












11.Calcule os valores máximo e mínimo da indutância que pode ser obtida de 10 indutores de 10mH.  Resposta: 100mH, 1mH

Resolução:

Lmax = l1 + l2 + ...+l10          Lmax = 10 . 10 mw
Lmáx = 100 mH      10 indutores associados em série

1/Lmin = 1/L1 + 1/L2+ ... +1/L10      1/Lmin = 10 . 1/10
Lmin = 1mH     com 10 indutores associados em paralelo


12.Calcule a indutância equivalente do circuito abaixo (considerar os valores dos indutores em mH).
Resposta: 10mH










Resolução:


L1 = (3 . 6)/ (3+6 )= 2






L2 = (7+2).72 / (7+2+72)
L2 = 8








L3 = (4+8).24 / (4+8+24)
L3 = 8







Leq = 10mH








13.Deduza uma equação para a divisão da tensão entre dois indutores em serie, calculando os valores de v1 e v2. 











Resposta:








Resolução:







V= L .di/dt         V= Ls . di/dt               di/dt = V/Ls      (1)

V1 = L1 . di/dt   (2)
                                       São percorridos pelo mesmo valor da corrente
V2 = L2 . di/dt   (3)

(1) em (2)   V1 = L1 . V/Ls           V1= L1 . V / (L1+L2)
(1) em (3)   V2= L2 . V/Ls            V2= L2 . V / (L1+L2)


14.Deduza uma equação para a divisão da corrente entre dois indutores em paralelo, calculando os valores de i1 e i2.

Resposta:











Resolução:
Lp= L1 . L2 / (L1+L2)

V1 // V2  =>   V1= V2= V

V= L1 . di1/dt   => i1= 1/L2  V.dt  (1)

V= L2. di2/dt   => i2= 1/L2  V.dt  (2)

V= L2. di/dt   => i= 1/Lp  V.dt         V.dt = i . Lp   (3)

(3) em (1)   i1= 1/L1 . i . Lp
i1 = i . L1 . L2 / [L1 . (L1+L2)]

i1 = L2 . i / L1+L2

(3) em (2)  i2= i . Lp / L2= i . (L1 . L2) / [L2 . (L1+L2)]

i2 = L1 . i / (L1 + L2)


15.O circuito abaixo esta em regime permanente em t = 0-. Calcule v, i1, i2, di1 / dt e di2 / dt em  t=0+. Resposta: 12V, 6A, 2A, -6A/s, 0A/s   











Resolução:












t(0)
Req = 3 . 6 / (3+ 6)= 2 [Ω].

ia = 24 / (2 + 4)= 6 [A]

Divisor de corrente:
i2 = 3 . 6 / (3 + 6) = 2 [A]

*O indutor não permite a variação brusca de corrente, logo;

iL(0)= iL(0+)

i1 = ia = 6 [A]
i2 = 2 [A]

Simulador: EveryCircuit















Para:   t(0+)

LKC :    6 = 2 + i   ,    i = 4 [A]

V = 3 . 4 = 12 [V]

LKT em i1
V1 + V = 0  ,       V1 = -12 [V]

V1 = L1 . di1/dt
di1/dt = -12 / 12 = - 6 [A/s]

LKT em 2

V2 + 6 . 2 - 12 = 0
V2 = 0 [V]

V2 = L2 . di2/dt = di2/dt = 0 [A/s]


16. O circuito abaixo esta em regime permanente em t = 0-. Calcule  v1 e v2 em t = 0-  e em t=0+.
Resposta: 5V, -20V; 25V, 20V















Resolução:






Req = ( 24 + 6).6 / ( 24 + 6 + 6) = 5

(24 + 6) // = 6



ia = 50 / (3 + 5 +2) = 5A

V2 = 5 . 5 = 25V

i2 = 25/6 A

LCD em x

ia = i1 + i2
i1 = 5 - 25/6 = 5/6A

V1 = 6 . 5/6 = 5V

Para t(0)
* O indutor não permite variação brusca de corrente. Logo, iL(0)= iL(0)

Req = 24(6+6) / (24 + 6 + 6) = 8

V = 8 . 5 = 40V

ia = 40/24 = 5/3A
LKC em x
ia + ib = 5
ib = 5 - 5/3 = 10/3 A

V2 = 6 .ib = 6 . 10/3 = 20V

V1 = 6 (-10/3) = - 20V  a corrente entra pelo lado negativo de V1


17.O circuito abaixo esta em regime permanente em t = 0-. Calcule dv1 / dt e dv2 / dt em t=0+.










Resolução:



Req = 8(12 + 6) / (8+12+6)
Req = 72/13 Ω





V = 72 . 8 /13 = 576/13 [V]





* O capacitor não permite uma variação brusca de tensão, logo:
Vc(0) = Vc(0+)

8Ω // V1     V1 = 576 / 13 [V]

LKT em ABCD    - V1 + 12ia + 6ia = 0

18ia = 576 / 13
ia = 32 / 13 [A]

6Ω // V2
V2 = 6 . ia = 6 . 32 / 13 = 192/13 [V]

t(0+)










LKT em ix
V2 + 6(- ix) + 6( -ix) = 0
12ix = 192/13
ix = 16/13 [A]

LKT em iy
V1 - V2 + 12iy = 0
IY = 1/12 (192/13 - 576/13) = - 32/13 [A]

LKT em iz
8iz + V1 = 0
iz = (- 576 /13 ) . 1/8 = - 72 /13 [A]

27/03/2020

Contador crescente e decrescente CCS C

Objetivo: Fazer um contador crescente usando função, PIC e um decodificador 4511


































Código feito em CCS C Compiler

#include <7seg for.h>

void Contador(){
   int vetor[] = {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9};//escrito em decimal
 
   while(TRUE){
      for(int i = 0; i < sizeof(vetor)/sizeof(int); i++){//tamanho do vetor
         output_b(vetor[i]);
         delay_ms(800);
      }
   
      delay_ms(1000);//espera 1 segundo para iniciar outra contagem
   
      for(i = (sizeof(vetor)/sizeof(int)); i >= 1; i--){
         output_b(vetor[i-1]);
         delay_ms(800);
      }
   }
}
void main(){
   Contador();
}

26/03/2020

Contador com PIC e decodificador 4511 CCS C Compiler


Objetivo: Fazer um contador de 0 até 9 usando uma função e um decodificador 4511 com PIC






















































Código feito em CCS C Compiler
Método 1

#include <16F877A.h>
#use delay(crystal = 20MHz)

//Função para o contador
void Contador(){
   int vetor[] = {0b0000, 0b0001, 0b0010, 0b0011, 0b0100, 0b0101, 0b0110, 0b0111, 0b1000, 0b1001};// Código de entrada em binário
 
   while(TRUE){
      for(int i = 0; i < sizeof(vetor)/sizeof(int); i++){//tamanho do vetor
         output_b(vetor[i]);
         delay_ms(500);
      }
   }
}

void main(){
   Contador();//chamando a função
}

Método 2

#include <16F877A.h>
#use delay(crystal = 20MHz)

void Contador(){
   int vetor[] = {0x0, 0x1, 0x2, 0x3, 0x4, 0x5, 0x6, 0x7, 0x8, 0x9};//forma em decimal
 
   while(TRUE){
      for(int i = 0; i < sizeof(vetor)/sizeof(int); i++){//tamanho do vetor
         output_b(vetor[i]);
         delay_ms(500);
      }
   }
}
void main(){
   Contador(); //chamando a função
}

24/03/2020

Algoritmo de todas as tabuada desejada em C

#include <stdio.h>
#include <stdlib.h>

int tabuada (int num){
    printf("\nTabuada de %d\n",num);
   
    for(int i = 0; i <= 10; i++){
        printf("%d x %d = %d\n",num, i, (num * i));
    }
    return num;
}

int valor, cont = 0;

int main(){
       
    printf("Digite o valor: ");
    scanf("%d",&valor);
   
    if(valor <= 0){
        while(valor <= 0){
            printf("Número inválido ! Digite um número maior que 0");
            printf("\nDigite novamente: ");
            scanf("%d",&valor);
        }
    }
   
    while(cont != valor +1){
        tabuada(cont);
        cont++;
    }
    return 0;
}

Saída gerada

20/03/2020

Prova LP 2 - 2019/2

Prova aplicada em 24/10/2019

1) Dado uma hierarquia de classes mapeadas em uma modelagem de um software, com vistas ao reuso de código, o que deve ser levado em consideração para a decisão do uso de herança de implementação (extends) ou de agregação/composição para promover o reuso ? ( 0,5 )

RESP:

Deve ser levado em consideração o uso em tempo de compilação e o uso em tempo de execução.
Para o uso em tempo de compilação a herança (extends) resolve o problema, para a agregação/composição que é herança de tipo ou uso em tempo de execução resolve o problema.



2) Tipos genéricos podem ser definidos por meio de classes abstratas ou interfaces. Estabeleça as diferenças entre o uso de classes abstratas ou interfaces na implementação de tipos genéricos ? ( 1,0 )

RESP:

Classes abstratas:
+ As classes abstratas força a hierarquia para as subclasses.
+ Seu contrato faz com que as subclasses contemplem as mesmas hierarquias e/ou padrões.

- Classes abstratas não podem ser instanciadas
- Deve conter pelo menos um método abstrato
- Classes abstratas serve apenas para ser herdado

Interface
+ Uma classe pode implementar diversas interfaces
+ Interface não possui implementação, apenas assinatura

- Interface não pode ser instanciada e nem como criar um construtor


3) Como é possível um tipo ser implementado por mais de uma classe ? ( 1,0 )

RESP:

É possível através de interfaces, se uma classe A é do tipo I1, se a classe B é do tipo I2 e se a classe A fazer uma herança (extends) de classe B, logo; podemos dizer que a classe A é do tipo I1 e do tipo I2.

4) Por que é conveniente que um cliente de um objeto não conheça a(s) classe(s) que pode(m) produzir os objetos para ele ? Como isso é possível ? ( 0,7 )

RESP:

Porque é necessário que as classes sejam implementadas por interfaces para adicionar todos os métodos da classe, ou que essa classe se transforme em uma herança.
  • É possível através de interfaces que esconde os métodos da classe.


5) Qual a finalidade da API JDBC do java ? ( 0,7 )

RESP:

Porque é necessário que as classes sejam implementadas por interfaces para adicionar todos os métodos da classe ou que essa classe se transforme em uma herança 
  • É possível através de interfaces que esconde os métodos da classe


6) Como é possível uma aplicação Java acessar mais de um tipo de SGDB de forma flexível (com pouca alteração) por meio da API JDBC ? ( 1,0 )

RESP:

É possível usando um driver JDBC para se comunicar diretamente com uma fonte de dados específica, caso não tenha um driver JDBC é necessário que tenha pelo menos um driver ODBC.

7) Existem quatro tipo de driver JDBC, qual é o mais recomendado ? Porque ? ( 1,0 )

RESP:

Pure Java, tipo 4
  • Porque os drivers se comunicam diretamente com o Banco de Dados usando soquetes de rede
  • Porque não requer código adicional do Java

8 - Considere o trecho de código a seguir e responda as questões ? ( 0,7 )

package apps;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class Conexao1{
    public static void main(String args[]){
        Connection conexao;
        String url = "jdbc:postgresql://localhost:5432/produto";
        String usr = "postgresql";
        String pass = "postgresql";
        
        try{
            Class.forName("org.postgresql.Driver");
            conexao = DriverManager.getConnection(url, usr, pass);
            System.out.println("Conexão estabelecida");
            conexao.close();
            System.out.println("Conexão encerrada");
        }catch (ClassNotFoundException cnf){
            System.out.println("Classe do driver não encontrado - "+cnf.getMessage());
            
        }catch (SQLException sqle){
            System.out.println("Conexao não estabelecida - "+sqle.getMessage());
        }
    }
}

a) Descreva quais são as informações presentes na URL de conexão JDBC ?

RESP:


b) Qual o papel da classe DriverManager ?

RESP:

Realizar a conexão com o banco de dados da fonte específica PostgreSQL usando a URL, USR(usuário) e o pass(senha)

c) Qual a finalidade da Interface / objeto Connection na manipulação de banco de dados por meio da JDBC ?

RESP:

Ser como uma forma de ponte para estabelecer a conexão com o Banco de Dados.

d) O que é realizado no trecho de código, caso ão ocorra exceções ?

RESP:

É feita uma conexão de curto tempo com a fonte específica PostgreSQL e em seguida é finalizado a conexão

9) Considere os trechos de código a seguir e responda as questões. ( 1,0 )

Código 01

Connection conexao = FabricaConexao.obterConexao();
PreparedStatement comando = null;
String nome = "Refrigerantes";
float promocao = 0;
float margem = 50;

try{
    comando = conexao.preparedStatement("INSERT INTO GRUPOPRODUTO (NOME, PROMOCAO, MARGEMLUCRO) VALUES (?, ?, ?)");
    comando.setString(1, nome);
    comando.setFloat(2, promocao);
    comando.setFloat(3, margem);
    comando.executeUpdate();
    System.out.println("Inclusão realizada com sucesso");
    
}catch (SQLException ex){
    System.out.println("Erro ao incluir grupo de produto"+ex.toString());
} finally {
    try{
        comando.close();
        conexao.close();
    }catch (SQLException ex){
        System.out.println("Erro ao desconectar"+ex.toString);
    }
}

Código 02

Connection conexao = FabricaConexao.obterConexao();
PreparedStatement comando = null;
String sql = "Refrigerantes";
String nome = "Bebidas destiladas";
float promocao = 10;
float margem = 50;

sql += "('"+ nome +"', "+promocao+", "+margem+")";

try{
    comando = conexao.reateStatment();
    comando.executeUpdate(sql);
    System.out.println("Inclusão realizada com sucesso");
    
}catch (SQLException ex){
    System.out.println("Erro ao incluir grupo de produto"+ex.toString());
} finally {
    try{
        comando.close();
        conexao.close();
    }catch (SQLException ex){
        System.out.println("Erro ao desconectar"+ex.toString);
    }
}

a) Existe diferença funcional entre os dois trechos de código ? Justifique.

RESP:

Não existe diferença funcionais entre o código 1 e o código 2, porém o código 1 é mais recomendado.

b) Existe diferença de implementação entre os trechos de código ? Justifique.

RESP:

Existe diferença de implementação entre os 2 códigos, o código 01 utiliza o PreparedStatmente para realizar a inserção, já o código 02 utiliza uma String SQL que é menos recomentada.

10) Analise o trecho de código a seguir e responda as questões. Considere que a FábricaConexao é uma classe utilitária que devolve um objeto Connection instanciado.  (0,8 )

Connection conexao = FabricaConexao.obterConexao();
PreparedStatement comando = null;

try{
    comando = conexao.preparedStatement("SELECT *FROM grupoproduto ORDER BY nome");
    ResultSet resultado = comando.executeQuery();
    while (resultado.next()){
        System.out.println("Codigo: "+resultado.getInt("codigo"));
        System.out.println("Nome: "+resultado.getString("nome"));
        System.out.println("% Promocao: "+resultado.getFloat("promocao"));
        System.out.println("% Margem lucro: "+resultado.getFloat("margemlucro"));
        System.out.println("---------------------------------------------------");
    }
    resultado.close();
}catch (SQLException ex){
    System.out.println("Erro ao recuperar os grupos de produtos"+ex.toString());
} finally {
    try{
        comando.close();
        conexao.close();
    }catch (SQLException ex){
        System.out.println("Erro ao desconectar"+ex.toString);
    }
}

a) O que o código realiza (linhas gerais) ?

RESP:
  • Realiza a conexão com o banco de dados
  • Faz uma seleção de tudo do grupoproduto ordenado em forma crescente por nome
  • É processado e executado o resultado
  • Enquanto haver dados em ResultSet
  • Exibe o código
  • Exibe o nome
  • Exibe a promoção
  • Exibe a margem de lucro
  • É finalizada e fechada o resultado
  • Caso ocorra erro de comando, irá exibir ERRO e os dados do grupo
  • Finalizar a conexão com o Banco de Dados
  • Caso ocorra um erro de conexão com Banco de Dados, irá exibir a mensagem de erro SQL


b) O que é o objeto ResultSet ? Qual a sua finalidade ?

RESP:

Coletar informação de linhas de comandos SQL e processa -lá.
  • Sua finalidade é ser como um objeto de referência para realizar os comandos SQL

19/03/2020

Tela LCD + teclado com PIC 16F877A



























Código feito em CCS C Compiler

#include <LCD + teclado.h>

#include <KBD.C>//driver do teclado
#define LCD_DATA_PORT getenv("SFR:PORTB")//porta padrão
#include <lcd.c>

char c;

void main(){

   kbd_init();
   lcd_init();
       
   printf(lcd_putc,"\fDigite: ");
   delay_ms(50);
 
   while(TRUE){
   
      c = kbd_getc();//retorna qual tecla foi precionada
      delay_ms(2);//dando uma pausa de 2 ms para processar informação
   
      if(c != 0){// se a tecla foi precionada
         printf(lcd_putc,"%c",c);//imprindo a tecla digitada
         delay_ms(300);
      }
   
   }
}

Clique aqui para fazer o download dos arquivos

Variável em CCS C Compiler


















Código feito em CCS C Compiler

#include <main.h>
#use delay(clock = 20MHz)

int x;

void main(){

    while(true){
      output_high(PIN_B2);
      delay_ms(1000);
      output_low(PIN_B2);
      delay_ms(1000);
   
      x++;//cada piscada soma +1
      if(x == 5){
         output_high(pin_b7);
               
      }
   }

}

18/03/2020

LCD com PIC 16F877A

Impressão no LCD com PIC 16F877A



Código feito em CCS C Compiler

#include <lcd1.h>
#include <KBD.C>
#include <lcd.c>

void main(){

   kbd_init();
   lcd_init();

   while(TRUE){
      printf(lcd_putc,"\fOla Mundo");
      delay_ms(1000);
   }

}

17/03/2020

Desafio 5 LCD

Desafio: Escrever caractere manualmente de acordo com a tabela ASCII
LCD manual



























Controle em inglês






































Controle em português






































Tabela ASCII







































Exemplo: Escrever FBD

Passo 1:
0000 1111 => Visor ligado (ligar o visor e ficar piscando)

Passo 2:
Habilita e desabilita o enable E

Passo 3:
0011 1000 => 2 Linhas do LCD (define 2 linhas )

Passo 4:
Habilita e desabilita o enable E

Passo 5:
F = 0100 0110

Passo 6:
Habilita RS

Passo 7:
Habilita e desabilita o Enable

Passo 8:
B = 0100 0010

Passo 9:
Habilita RS

Passo 10:
Habilita e desabilita o Enable

Passo 11:
D = 0100 0110

Passo 12:
Habilita RS

Passo 13:
Habilita e desabilita o Enable


















Palavras chave:

כתוב תו ידני לפי טבלת ASCII
Tulis karakter kanthi manual miturut tabel ASCII
Persona scribam tincidunt ASCII ad mensam
Psát znak ručně podle tabulky ASCII
Skriv tegn manuelt i henhold til ASCII-tabellen
根據ASCII表手動寫入字符
Kọ kikọ silẹ pẹlu ọwọ ni ibamu si tabili ASCII
Skriv tecken manuellt enligt ASCII-tabellen
Γράψτε τον χαρακτήρα χειροκίνητα σύμφωνα με τον πίνακα ASCII
अक्षर ASCII तालिका अनुसार म्यानुअली लेख्नुहोस्
Skriuw karakter manuell neffens de ASCII-tabel
Isulat sa sulud ang karakter nga sumala sa lamesa sa ASCII

16/03/2020

Display hexadecimal de 7 segmentos

Display hexadecimal de 7 segmentos usando microntrolador PIC 16F877A






















































Código feito em CCS C Compiler

#include <16f877a.h>
#use delay(crystal = 20MHz)

void main(){
   while(true){
      output_b(0b00111111);//0
      delay_ms(500);//espera 0.5 s
   
      output_b( 0b00000110);//1
      delay_ms(500);
   
      output_b(0b01011011);
      delay_ms(500);
   
      output_b(0b01001111);
      delay_ms(500);
   
      output_b(0b1100110);
      delay_ms(500);
   
      output_b(0b01101101);
      delay_ms(500);
   
      output_b(0b00000111);//6
      delay_ms(500);
   
      output_b(0b01111111);
      delay_ms(500);
   
      output_b(0b1100111);//9
      delay_ms(500);
   
      output_b(0b1110111);//A
      delay_ms(500);
   
      output_b(0b1111100);//B
      delay_ms(500);
   
      output_b(0b0111001);//c
      delay_ms(500);
   
      output_b(0b1011110);//D
      delay_ms(500);
   
      output_b(0b1111001);//E
      delay_ms(500);
   
      output_b(0b1110001);//f
      delay_ms(500);
   
   
   }
}
 

Palavras chave:

תצוגה הקסדצימאלית בת 7 קטעים באמצעות בקר מיקרו PIC16F877A
ຈໍສະແດງຜົນ hexadecimal 7 ສ່ວນໂດຍໃຊ້ PIC16F877A microcontroller
7-segmentni šestnajstiški prikaz z uporabo mikrokrmilnika PIC16F877A
Hiển thị thập lục phân 7 đoạn bằng vi điều khiển PIC16F877A
7-segment hexadecimal kuratidza uchishandisa PIC16F877A microcontroller
7-сегментний шестидесятковий дисплей за допомогою мікроконтролера PIC16F877A
PIC16F877A മൈക്രോകൺട്രോളർ ഉപയോഗിച്ച് 7-സെഗ്മെന്റ് ഹെക്സാഡെസിമൽ ഡിസ്പ്ലേ

15/03/2020

Botao com Led usando PIC 16F877A

Faça um programa que utilize 2 botoes, um botão terá a função de ligar um led. O outro botão, quando pressionado irá deligar o led.

















Código feito em CCS C Compiler

#include <16f877a.h>
#use delay(crystal = 20MHz)

void main(){
   while(true){
 
      if( input(pin_b0) == 1){//se precionado o botão1
         output_high(pin_b7);//liga o led
      }
   
      if( input(pin_b6) == 1){//se precionado o botao2
         output_low(pin_b7);//desliga o led2
      }
   }
}

13/03/2020

Contador crescente e decrescente usando PIC

Contador hexadecimal crescente e decrescente usando PIC 16F877A


















Código feito em CCS C Compiler

#include <16f877a.h>
#use delay(crystal = 20 MHz)

void main(){
   char value[] = {0b0111111, 0b0000110, 0b1011011, 0b1001111, 0b1100110, 0b1101101, 0b1111101, 0b0000111,
   0b11111111, 0b1100111, 0b1110111, 0b1111100, 0b0111001, 0b1011110, 0b1111001, 0b1110001};
 
   while(true){
      for(int i = 0; i <=15; i++){
         output_b(value[i]);
         delay_ms(500);
      }
     
      for(i = 16; i >=1; i--){
         output_b(value[i-1]);
         delay_ms(500);
      }
   }

Desafio 2

Ligar e desligar um led através de um push booton

















Código1 feito em CCS C Compiler

#include <16F877A.h>
#use delay(crystal = 20 MHz)

void main(){
   while(true){
      if(input(pin_b0) == 1){
         output_high(pin_b7);
      }
   
      if(input(pin_b0) == 0){
         output_low(pin_b7);
      }
   }
}
 
Código2 feito em CCS C Compiler

#include <16F877A.h>
#use delay(crystal = 20 MHz)

void main(){
   while(true){
      if(input(pin_b0) == 1){
         output_high(pin_b7);
       
      }else{// senao desliga o led
         output_low(pin_b7);
      }
   }
}

12/03/2020

Sequencia de leds1

Ligando uma sequencia de leds com apenas uma porta no PIC 16F877A


















Código1 feito em CCS C Compiler

#include <16f877a.h>
#use delay(crystal = 20MHz)

void main(){
   while(true){
      output_b(0b11111111);//b7,b6,b5... b0 ligando todas as potas
     
   }
}

Código2 feito em CCS C Compiler

#include <16f877a.h>
#use delay(crystal = 20MHz)

void main(){
   while(true){
      output_b(0b11010101);//b7,b6,b5... b0 ligando todas as potas
     
   }
}

Código3 feito em CCS C Compiler

#include <16f877a.h>
#use delay(crystal = 20MHz)

void main(){
   while(true){
      output_b(153);//b7,b6,b5... b0 ligando todas as potas
     
   }
}

Código4 feito em CCS C Compiler

















#include <16f877a.h>
#use delay(crystal = 20MHz)

void main(){
   while(true){
      output_b(255);//b7,b6,b5... b0 ligando todas as potas
      delay_ms(500);//desliga por 0,5 s
      output_b(10);//liga a porta rb3 e rb 1
      delay_ms(500);//espera 0,5s
      output_b(20);
      delay_ms(500);
      output_low(pin_b6);//desliga o pino b6
     
   }
}

11/03/2020

Semáforo usando PIC 16F877A


Código feito em CCS C Compiler

#include <16f877a.h>
#use delay(crystal=20MHz)

void main(){
   while(true){

      //output_high(pin_b2);//ligando o led verde

      output_high(pin_b0);//ligando o vermelho
      output_low(pin_b1);//desligando o amarelo
      output_low(pin_b2);//desligando o verde
      delay_ms(3000);//espera 3s
   
      output_low(pin_b0);
      output_high(pin_b2);
      delay_ms(2000);

      output_low(pin_b2);//desliga o led vermelho
      output_high(pin_b1);// e liga o led amarelo
      delay_ms(1500);//espera 1,5s
      output_low(pin_b1);// e espera o led amarelo

   }
}

26/02/2020

Push boton com PIC 16F877A

Objetivo: Inverter o estado do Led a cada vez que for pressionado

















Código feito em CCS C Compiler

#include <16f877a.h>
#use delay(crystal=20MHz)

void main(){
 
   while(true){
      if(input(pin_b0) == 1){
         output_toggle(pin_b1);//troca o estado do led
         delay_ms(500);// e espera 0,5s
      }
   }

}