Contador crescente / decrescente com Flip Flop tipo T em PAR ou ÍMPAR
Clique aqui para fazer o download do arquivo feito no Logisim
Pesquisar neste blog
04/07/2018
03/07/2018
Contador assíncrono tipo JK
Contador crescente / decrescente tipo JK
Clique aqui para fazer o download do arquivo feito no Logisim
Clique aqui para fazer o download do arquivo feito no Logisim
02/07/2018
Contador assíncrono do tipo JK
Contador decrescente / crescente tipo JK
Clique aqui para fazer o download do arquivo no Logisim 2.7
Clique aqui para fazer o download do arquivo no Logisim 2.7
29/06/2018
NÚMEROS PRIMOS NO LOGISIM
CIRCUITO IDENTIFICADOR DE NÚMEROS PRIMOS
Objetivo: Identificar os números primos com 5 entradas = 32 bits de dados
CLIQUE AQUI para fazer o download do arquivo no Logisim
Objetivo: Identificar os números primos com 5 entradas = 32 bits de dados
Tabela de 5 entradas com identificador de números primos |
CLIQUE AQUI para fazer o download do arquivo no Logisim
19/06/2018
ELETRÔNICA DIGITAL
Uma indústria produz garrafas grandes e pequenas, transparente e coloridas, de vidro e plástico. Projete um circuito para identificar as garrafas: de vidro e transparente ou pequena colorida ou pequena de vidro e transparente. O circuito deve ter três entradas que são os sensores de tamanho, sensor de transparência e sensor que detecta se é vidro ou plástico.
Solução:
G = Grande = A
T = Transparente = B
V = Vidro = C
Resolvendo o mapa de karnaugh
Uma indústria produz garrafas grandes, pequenas, transparentes, coloridas, de vidro e plástico.
Projete um circuito para identificar as garrafas: de plástico transparente; grande colorida e
pequena de plástico transparente. O circuito deve ter três entradas que são os sensores de
tamanho, sensor de transparência e sensor que detecta se é vidro ou plástico.
Resolução:
11/06/2018
Ordenação de matriz em C/C++
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define size 4
void ordenaMatriz (int n, int mat[size][size]) {
int i, j, l, c;
n = size;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
for (l = 0; l < n; l++) {
for (c = 0; c < n; c++) {
if (mat[i][j] < mat[l][c]) {
int aux = mat[i][j];
mat[i][j] = mat[l][c];
mat[l][c] = aux;
}
}
}
}
}
}
int main (void) {
int i, j, n = size, mat[size][size];
srand(time(NULL));
printf("\n ORDENACAO DE MATRIZES\n");
printf("\n\n Ordem Inicial:\n\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
mat[i][j] = rand() % 99 +1;
printf(" %02d", mat[i][j]);
}
printf("\n");
}
ordenaMatriz(size, mat);
//ordenaMatriz(n, mat);
printf("\n\n Apos Ordenacao:\n\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf(" %.2d", mat[i][j]);
}
printf("\n");
}
printf("\n\n ");
system("pause");
return 0;
}
#include <stdlib.h>
#include <time.h>
#define size 4
void ordenaMatriz (int n, int mat[size][size]) {
int i, j, l, c;
n = size;
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
for (l = 0; l < n; l++) {
for (c = 0; c < n; c++) {
if (mat[i][j] < mat[l][c]) {
int aux = mat[i][j];
mat[i][j] = mat[l][c];
mat[l][c] = aux;
}
}
}
}
}
}
int main (void) {
int i, j, n = size, mat[size][size];
srand(time(NULL));
printf("\n ORDENACAO DE MATRIZES\n");
printf("\n\n Ordem Inicial:\n\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
mat[i][j] = rand() % 99 +1;
printf(" %02d", mat[i][j]);
}
printf("\n");
}
ordenaMatriz(size, mat);
//ordenaMatriz(n, mat);
printf("\n\n Apos Ordenacao:\n\n");
for (i = 0; i < n; i++) {
for (j = 0; j < n; j++) {
printf(" %.2d", mat[i][j]);
}
printf("\n");
}
printf("\n\n ");
system("pause");
return 0;
}
09/06/2018
DECODIFICADOR 74LS47 COM DISPLAY DE 7 SEGMENTOS
08/06/2018
Exercícios resolvidos no Neander
SOMA DE 2 NÚMEROS
Faça um programa para somar o conteúdo dos endereços 128, 129 e 130 e armazene o resultado no endereço 131.
SUBTRAÇÃO DE 2 NÚMEROS NO NEANDER
Faça um programa para subtrair 2 variáveis que estão nos endereços 128 e 129, e armazene o resultado no endereço 130.
Faça um programa que identifica a menor de valor dentre três variáveis. O resultado (o menor) deve ser armazenado na posição R. As variáveis e o resultado devem estar dispostos segundo o mapa de memória abaixo: Mapa de memória:
140: X
142: Y
144: Z
130: R
CONTROLE DE REPETIÇÃO
Realizar um contador que decremente o valor de uma variável subtraia 1 e armazene da posição 128 na posição 134 do acumulador
Ex:
Funcionaria como um decremento em linguagem C/C++
for(int i = 10; i >=0; i--){
printf("%d", i);
}
O resultado seria 10, 9, 8, ... 0.
MULTIPLICAÇÃO DE 2 NÚMEROS NO NEANDER
Comparação de 3 números no Neander e armazenar o maior número na posição 131 de memória
03/06/2018
Exercício de Circuito Lógico Combinacional
4.28) Projete um circuito lógico cuja saída seja nível ALTO sempre que A e B forem nível ALTO, enquanto C e D estiverem em nível BAIXO ou ambas em nível ALTO.
Solução:
Resolvendo o mapa de karnaugh
Solução:
Resolvendo o mapa de karnaugh
31/05/2018
CONVERSÃO DIGITAL - ANALÓGICA
K = Saída analógica / Entrada Digital
Vout = K . Entrada Digital
1) Um DAC de cinco bits tem saída em corrente. Para entrada digital de 10100, é gerada corrente de saída de 10 mA. Qual será o Iout para uma entrada digital de 11101 ?
Solução:
(10100)2 = (20)10
(11101)2 = (29)10
K = Fator de proporcionalidade
K = 10 mA / 20 = 0,5 mA
Iout = 0,5 mA . 29 = 14,5 mA
2) Qual o maior valor de tensão de saída de um DAC de 8 (oito) bits que gera 1 V para uma entrada digital de 110010 ?
Solução:
(110010)2 = (50)10
Maior tensão de saída 8 bits = (11111111)2 = (255)10
ou
210 -1 = (255)10
K = 1V / 50 = 0,02 V
Vout = K . Entrada Digital = 0,02V . 255 = 5,1V
RESOLUÇÃO (Tamanho do degrau)
3) Um DAC de 10 bits tem tamanho de degrau de 10 mV. Determine a tensão de saída de fundo de escala e a resolução percentual.
Resolução:
% Resolução = (tamanho do degrau / fundo de escala(F . S)) . 100%
210 -1 = 1023 degraus de 10 mV
Saída de fundo = 10 mV . 1023 = 10,23 V
% Res = (0,01V / 10,23 V ). 100 = 0,0977 % = ± 1%
Vout = K . Entrada Digital
1) Um DAC de cinco bits tem saída em corrente. Para entrada digital de 10100, é gerada corrente de saída de 10 mA. Qual será o Iout para uma entrada digital de 11101 ?
Solução:
(10100)2 = (20)10
(11101)2 = (29)10
K = Fator de proporcionalidade
K = 10 mA / 20 = 0,5 mA
Iout = 0,5 mA . 29 = 14,5 mA
2) Qual o maior valor de tensão de saída de um DAC de 8 (oito) bits que gera 1 V para uma entrada digital de 110010 ?
Solução:
(110010)2 = (50)10
Maior tensão de saída 8 bits = (11111111)2 = (255)10
ou
210 -1 = (255)10
K = 1V / 50 = 0,02 V
Vout = K . Entrada Digital = 0,02V . 255 = 5,1V
RESOLUÇÃO (Tamanho do degrau)
3) Um DAC de 10 bits tem tamanho de degrau de 10 mV. Determine a tensão de saída de fundo de escala e a resolução percentual.
Resolução:
% Resolução = (tamanho do degrau / fundo de escala(F . S)) . 100%
210 -1 = 1023 degraus de 10 mV
Saída de fundo = 10 mV . 1023 = 10,23 V
% Res = (0,01V / 10,23 V ). 100 = 0,0977 % = ± 1%
29/05/2018
Exercício lógico combinacional
Projete um circuito lógico que controla uma porta de elevador em um prédio de três andares . O circuito tem 4 entradas em que M é um sinal lógico que indica quando o elevador está se movendo (M = 1) ou parado (M = 0) , F1, F2, F3 são os sinais indicadores dos andares que são normalmente nível BAIXO, passando para o nível ALTO apenas quando o elevador estiver posicionado em determinado andar.
Solução:
Solução:
28/05/2018
Contadores e Registradores
Um contador é necessário para contar o número de intens que passam por uma esteira de transporte. Uma fotocélula combinada a uma fonte de luz é usada para gerar um único pulso cada vez que um item passa pelo feixe de luz. O contador tem de ser capaz de contar mil itens. Quantos FFs são necessários ?
Solução:
Determinando o valor de N de modo que 2N ≥ 1000
29 = 512, logo: Não são o suficiente
210 = 1024 , portanto 10 FFs produzem um contador que conta até 1111111111 = ( 1023 em decimal)
10 FFs são necessários.
11/05/2018
Exercicios resolvidos com ponteiro em C/C++
#include <stdio.h>
#include <stdlib.h>
/* 1 - ESCREVA UM PROGRAMA QUE DECLARE UM INTEIRO, UM REAL E UM CHAR, E PONTEIROS PARA INTEIRO, REAL, E CHAR. ASSOCIE AS VARIÁVEIS AOS PONTEIROS(USE &). MODIFIQUE OS VALORES DE CADA VARIÁVEL USANDO PONTEIROS. IMPRIMA OS VALORES DAS VARIÁVEIS ANTES E APÓS A MODIFICAÇÃO.*/
main (void){
int num = 15;
double valor= 20.77;
char letra = 'h';
int *Endint = #
float *Endfloat = &valor;
char *Endchar = &letra;
printf("Variavel inteiro = %d \nEndereco ponteiro inteiro = %i\n\n", num, Endint);
printf("Variavel float = %.2f\nEndereco do ponteiro float = %i\n\n",valor, Endfloat);
printf("Variavel char = %c\nEndereco do ponteiro char = %i\n\n",letra, &letra);
printf("\tAPOS MODIFICACAO:\n");
*Endint = 22;
*Endfloat = 50.35;
*Endchar = 'k';
printf("\nEndereco do ponteiro: %d\nAlterado para o valor: %d\n\n", Endint, *Endint);
printf("Endereco do ponteiro: %d\nAlterado para o valor: %d\n\n", Endfloat, *Endfloat);
printf("Endereco do ponteiro: %i\nAlterado para o caracter: %c\n\n", Endchar, *Endchar);
return EXIT_SUCCESS;
}
#include <stdio.h>
#include <stdlib.h>
/*2- ESCREVA UM PROGRAMA QUE CONTENHA DUAS VARIÁVEIS INTEIRAS.COMPARE
SEUS ENDEREÇOS E EXIBA O MAIOR ENDEREÇO.*/
int main (void){
int a = 27, b = 77;
int *EndA = &a , *EndB = &b;
printf("\tA = %d B = %d\n\n",a, b);
printf("Endereco de A = %d\nEndereco de B = %d\n",EndA, EndB);
if(EndA > EndB){
if(&a > &b)
printf("\n\nEndereco %d de A eh maior: \n",EndA);
//printf("\n\nEndereco %d de A eh maior: \n", &a);
}else{
printf("\n\nEndereco %d de B eh maior: \n",EndB);
//printf("\n\nEndereco %d de B eh maior: \n",&b);
}
//ou
/*if(&a > &b){
printf("\n\nEndereco %d de A eh maior: \n", &a);
}else{
printf("\n\nEndereco %d de B eh maior: \n",&b);
}
printf("\n");*/
return EXIT_SUCCESS;
}
#include <stdio.h>
#include <stdlib.h>
/* 3 - Escreva um programa que contenha 2 variaveis inteiras. Leia
essas variavéis do teclado. Em seguida, compare seus endereços
e exiba o maior endereço.*/
int main (void){
int a, b;
printf("\tDigite o valor de a: ");
scanf("%d",&a);
printf("\n\tDigite o valor b: ");
scanf("%d",&b);
printf("\nValor de a = %i\nValor de b = %i\n\n",a, b);
int *EndA = &a, *EndB = &b;
printf("Endereco de a = %i\nEndereco de b = %i\n\n",EndA, EndB);
if(EndA > EndB){
printf("\n\nEndereco %d de a eh maior:",EndA);
}else{
printf("\n\nEndereco %d de b eh maior:", EndB);
}
printf("\n\n");
return EXIT_SUCCESS;
}
#include <stdio.h>
#include <stdlib.h>
#define SIZE 5
/*4 - CRIE UM PROGRAMA QUE CONTENHA UM ARRAY DE 5 ELEMENTOS INTEIROS. lEIA
ESSE ARRAY DO TECLADO E IMPRIMA O ENDERECO DE POSICOES CONTENDO VALORES PARES.*/
int main (void){
int vet[SIZE], i;
int *Endvet;
Endvet = vet;
printf("\tDigite %d elementos:\n",SIZE);
for(i = 0; i < SIZE; i++){
printf("%d: ",i+1);
scanf("%d", &vet[i]);
}
printf("\n\tELEMENTOS:\n\n");
for(i = 0; i < SIZE; i++){
printf("%d ",vet[i]);
}
printf("\n\nENDERECOS DO ARRAY:\n");
for(i = 0; i < SIZE; i++){
printf("%i : %i : %i\n",i+1, vet[i], Endvet++);
}
printf("\nENDERECOS DO ARRAY PAR:\n");
Endvet = vet;
for(i = 0; i < SIZE; i++){
if(vet[i] %2 == 0){
printf("\nNumero %d eh par : Posicao = %d",vet[i], Endvet);
}
Endvet++;
}
return EXIT_SUCCESS;
}
#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
/* 5 - CRIE UM PROGRAMA QUE CONTENHA UM ARRAY DE FLOAT CONTENDO 10 ELEMENTOS.
IMPRIMA O ENDERECO DE CADA POSICAO DESSE ARRAY.*/
int main (void){
float vet[SIZE];
int i, *Endvet;
Endvet = vet;
printf("\tELEMENTOS:\n\n");
for(i = 0; i < SIZE; i++){
printf("[%.2f] ", (vet[i] = 10 + rand() %100) / 3.27);
}
printf("\n\nENDERECOS DO ARRAY:\n\n");
for(i = 0; i < SIZE; i++){
printf("%i : %.2f : %i\n",i+1, vet[i]/3.27, Endvet++);
}
return EXIT_SUCCESS;
}
#include <stdlib.h>
/* 1 - ESCREVA UM PROGRAMA QUE DECLARE UM INTEIRO, UM REAL E UM CHAR, E PONTEIROS PARA INTEIRO, REAL, E CHAR. ASSOCIE AS VARIÁVEIS AOS PONTEIROS(USE &). MODIFIQUE OS VALORES DE CADA VARIÁVEL USANDO PONTEIROS. IMPRIMA OS VALORES DAS VARIÁVEIS ANTES E APÓS A MODIFICAÇÃO.*/
main (void){
int num = 15;
double valor= 20.77;
char letra = 'h';
int *Endint = #
float *Endfloat = &valor;
char *Endchar = &letra;
printf("Variavel inteiro = %d \nEndereco ponteiro inteiro = %i\n\n", num, Endint);
printf("Variavel float = %.2f\nEndereco do ponteiro float = %i\n\n",valor, Endfloat);
printf("Variavel char = %c\nEndereco do ponteiro char = %i\n\n",letra, &letra);
printf("\tAPOS MODIFICACAO:\n");
*Endint = 22;
*Endfloat = 50.35;
*Endchar = 'k';
printf("\nEndereco do ponteiro: %d\nAlterado para o valor: %d\n\n", Endint, *Endint);
printf("Endereco do ponteiro: %d\nAlterado para o valor: %d\n\n", Endfloat, *Endfloat);
printf("Endereco do ponteiro: %i\nAlterado para o caracter: %c\n\n", Endchar, *Endchar);
return EXIT_SUCCESS;
}
#include <stdio.h>
#include <stdlib.h>
/*2- ESCREVA UM PROGRAMA QUE CONTENHA DUAS VARIÁVEIS INTEIRAS.COMPARE
SEUS ENDEREÇOS E EXIBA O MAIOR ENDEREÇO.*/
int main (void){
int a = 27, b = 77;
int *EndA = &a , *EndB = &b;
printf("\tA = %d B = %d\n\n",a, b);
printf("Endereco de A = %d\nEndereco de B = %d\n",EndA, EndB);
if(EndA > EndB){
if(&a > &b)
printf("\n\nEndereco %d de A eh maior: \n",EndA);
//printf("\n\nEndereco %d de A eh maior: \n", &a);
}else{
printf("\n\nEndereco %d de B eh maior: \n",EndB);
//printf("\n\nEndereco %d de B eh maior: \n",&b);
}
//ou
/*if(&a > &b){
printf("\n\nEndereco %d de A eh maior: \n", &a);
}else{
printf("\n\nEndereco %d de B eh maior: \n",&b);
}
printf("\n");*/
return EXIT_SUCCESS;
}
#include <stdio.h>
#include <stdlib.h>
/* 3 - Escreva um programa que contenha 2 variaveis inteiras. Leia
essas variavéis do teclado. Em seguida, compare seus endereços
e exiba o maior endereço.*/
int main (void){
int a, b;
printf("\tDigite o valor de a: ");
scanf("%d",&a);
printf("\n\tDigite o valor b: ");
scanf("%d",&b);
printf("\nValor de a = %i\nValor de b = %i\n\n",a, b);
int *EndA = &a, *EndB = &b;
printf("Endereco de a = %i\nEndereco de b = %i\n\n",EndA, EndB);
if(EndA > EndB){
printf("\n\nEndereco %d de a eh maior:",EndA);
}else{
printf("\n\nEndereco %d de b eh maior:", EndB);
}
printf("\n\n");
return EXIT_SUCCESS;
}
#include <stdio.h>
#include <stdlib.h>
#define SIZE 5
/*4 - CRIE UM PROGRAMA QUE CONTENHA UM ARRAY DE 5 ELEMENTOS INTEIROS. lEIA
ESSE ARRAY DO TECLADO E IMPRIMA O ENDERECO DE POSICOES CONTENDO VALORES PARES.*/
int main (void){
int vet[SIZE], i;
int *Endvet;
Endvet = vet;
printf("\tDigite %d elementos:\n",SIZE);
for(i = 0; i < SIZE; i++){
printf("%d: ",i+1);
scanf("%d", &vet[i]);
}
printf("\n\tELEMENTOS:\n\n");
for(i = 0; i < SIZE; i++){
printf("%d ",vet[i]);
}
printf("\n\nENDERECOS DO ARRAY:\n");
for(i = 0; i < SIZE; i++){
printf("%i : %i : %i\n",i+1, vet[i], Endvet++);
}
printf("\nENDERECOS DO ARRAY PAR:\n");
Endvet = vet;
for(i = 0; i < SIZE; i++){
if(vet[i] %2 == 0){
printf("\nNumero %d eh par : Posicao = %d",vet[i], Endvet);
}
Endvet++;
}
return EXIT_SUCCESS;
}
#include <stdio.h>
#include <stdlib.h>
#define SIZE 10
/* 5 - CRIE UM PROGRAMA QUE CONTENHA UM ARRAY DE FLOAT CONTENDO 10 ELEMENTOS.
IMPRIMA O ENDERECO DE CADA POSICAO DESSE ARRAY.*/
int main (void){
float vet[SIZE];
int i, *Endvet;
Endvet = vet;
printf("\tELEMENTOS:\n\n");
for(i = 0; i < SIZE; i++){
printf("[%.2f] ", (vet[i] = 10 + rand() %100) / 3.27);
}
printf("\n\nENDERECOS DO ARRAY:\n\n");
for(i = 0; i < SIZE; i++){
printf("%i : %.2f : %i\n",i+1, vet[i]/3.27, Endvet++);
}
return EXIT_SUCCESS;
}
27/04/2018
18/03/2018
Algoritmo Jogo da MEGA-SENA C/C++
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define SIZE 5
//função de ordenação
void Ordena(int vet[SIZE]){
int aux;
for(int i = 0; i < SIZE; i++){
for (int j = 0; j < SIZE-1; j++){
if(vet[j] > vet[j+1]){
aux = vet[j];
vet[j] = vet[j+1];
vet[j+1] = aux;
}
}
}
for(int i = 0; i < SIZE; i++){
printf("\t%d", vet[i]);
}
}
int main() {
int vetor[SIZE]= {13, 21, 7, 5, 45};
//int vetor[SIZE];
int aleatorio[SIZE], x[SIZE];
int cont;
/*
printf("\nDigite 5 numeros de 0 a 60: \n");
for(int i = 0; i < SIZE; i++){
printf("%d: ",i+1);
scanf("%d", &vetor[i]);
}*/
printf("\n\tNUMEROS JOGADOS: \n\n");
Ordena(vetor);
printf("\n\n\tNUMEROS SORTEADOS: \n\n ");
//sorteando os numeros aleatorios
srand(time(NULL));// não gerar os mesmos numeros aleatorios repetidos a cada compilação
for(int i = 0; i < SIZE; i++){
aleatorio[i] = 0 + (rand()%60);
}
Ordena(aleatorio);
printf("\n\n");
for(int i = 0; i < SIZE; i++){
x[i] = aleatorio[i];
if(x[i] == vetor[i]){
cont++;
printf("Voce acertou o %d numero: [%d]\n", i+1, x[i]);
}
}
printf("\n\n");
return 0;
}
#include <stdlib.h>
#include <conio.h>
#include <time.h>
#define SIZE 5
//função de ordenação
void Ordena(int vet[SIZE]){
int aux;
for(int i = 0; i < SIZE; i++){
for (int j = 0; j < SIZE-1; j++){
if(vet[j] > vet[j+1]){
aux = vet[j];
vet[j] = vet[j+1];
vet[j+1] = aux;
}
}
}
for(int i = 0; i < SIZE; i++){
printf("\t%d", vet[i]);
}
}
int main() {
int vetor[SIZE]= {13, 21, 7, 5, 45};
//int vetor[SIZE];
int aleatorio[SIZE], x[SIZE];
int cont;
/*
printf("\nDigite 5 numeros de 0 a 60: \n");
for(int i = 0; i < SIZE; i++){
printf("%d: ",i+1);
scanf("%d", &vetor[i]);
}*/
printf("\n\tNUMEROS JOGADOS: \n\n");
Ordena(vetor);
printf("\n\n\tNUMEROS SORTEADOS: \n\n ");
//sorteando os numeros aleatorios
srand(time(NULL));// não gerar os mesmos numeros aleatorios repetidos a cada compilação
for(int i = 0; i < SIZE; i++){
aleatorio[i] = 0 + (rand()%60);
}
Ordena(aleatorio);
printf("\n\n");
for(int i = 0; i < SIZE; i++){
x[i] = aleatorio[i];
if(x[i] == vetor[i]){
cont++;
printf("Voce acertou o %d numero: [%d]\n", i+1, x[i]);
}
}
printf("\n\n");
return 0;
}
Decodificador CI HC4511
16/03/2018
Detector de metal usando CI 555
09/03/2018
Buzina com CI 555
COMPONENTES |
1 CI 555 " 555 Timer " |
1 Capacitor "10 uF Capacitor " |
1 - Auto Falante " Piezo " |
1 - Bateria 9V " 9V Battery " |
1 - Push Butoon " Pushbutton " |
1 - Led "Green LED " |
1 - Resistor "10 kohm Resistor " |
07/03/2018
Placa sinalizadora usando CI 555
Assinar:
Postagens (Atom)