Las siguientes capturas de pantallas muestran el control de un display de 7 segmentos CC mediante el cual al activar el state logic se visualizara los números del 0-9 y enseguida las letra de la A-E y al activar el otro logic state el orden es inverso es decir primero se visualizaran las letra A-E y los números del 0-9 en orden descendente.
viernes, 3 de abril de 2015
Encendido De 8 Led`s Con PIC18F4620
En este programa controlaremos el encendido de 8 led mediante un PIC y para ello primero apagaremos todos los led`s de forma que después de cierto tiempo previamente establecido en mili-segundos durante la compilación de código fuente, encenderemos los 4 primero led`s y los apagaremos al mismo tiempo que encenderemos los 4 últimos led`s todo esto se ejecutara de manera indefinida.
PIC18F4620 Y LCD De 16*2
En este programa utilizaremos un LCD de 16 caracteres por 2 lineas (16*2) para mostrar diferentes textos con diferentes efectos.
En este caso el programa realiza la escritura letra por letra de la palabra HOLA MUNDO en la primera linea y ESTi UAEH en la segunda linea empezando desde el ultimo carácter y posteriormente realiza el corrimiento hacia la derecha de HOLA MUNDO finalizando con el corrimiento a la izquierda de la palabra HOLA MUNDO (1ª linea) ESTi UAEH (2ª linea) en un ciclo infinito.
Hola Mundo Con PIC18F4620 Y Display 16 Segmentos Anodo Comun
Versión 1: "Solo Texto"
A continuación se expone el programa que realiza la escritura de la oración HOLA MUNDO en 5 display de 16 segmentos ac (Anodo Comun), esto se realiza mediante el uso de la Multiplexeacion y la activación de cada uno de los pines del display para llevar el control de que letra deberá desplegarse en cada display.
Versión 2: "Texto Con Corrimiento"
Finalmente adjunto imágenes de la segunda versión de este mismo programa, en la cual ahora se muestra el texto HOLA MUNDO y se procede a hacer el corrimiento de cada letra en cada uno de los display en un ciclo infinito.
Código:
A petición de un usuario aquí muestro mi código, el programa fue trabajado en Mikro C, esta es el código del programa de la versión 1 "Texto sin corrimiento":
int i;
int k=0;
void main() {
adcon1=0b11111111;
trisc=0;
trisd=0;
trisa=1;
trisb=1;
porta=0;
portb=0;
portc=0;
portd=0;
do{
k=0;
k++;
for (i=0; i<60; i++){
k=0;
portb=0b00000010;
portc=0b00110011;
portd=0b01110111;
delay_ms(2);
portb=0b00000100;
portc=0b00000000;
portd=0b11111111;
delay_ms(2);
portb=0b00001000;
portc=0b00001111;
portd=0b11111111;
delay_ms(2);
portb=0b00010000;
portc=0b00110000;
portd=0b01110111;
delay_ms(2);
}
trisc=0;
trisd=0;
trisa=1;
porta=0b11111111;
portb=0b00000000;
portc=0b00000000;
portd=0b00000000;
delay_ms(1500);
for (i=0; i<60; i++){
portb=0b00000010;
portc=0b00110011;
portd=0b11111010;
delay_ms(2);
portb=0b00000100;
portc=0b00000011;
portd=0b11111111;
delay_ms(2);
portb=0b00001000;
portc=0b00110011;
portd=0b11101110;
delay_ms(2);
portb=0b00010000;
portc=0b10000011;
portd=0b01110111;
delay_ms(2);
portb=0b00100000;
portc=0b00000000;
portd=0b11111111;
delay_ms(2);
}
trisc=0;
trisd=0;
trisa=1;
porta=0b11111111;
portb=0b00000000;
portc=0b00000000;
portd=0b00000000;
delay_ms(1500);
}
while(k<400);
}
Finalmente esta es la Versión 2 "Texto con corrimiento":
int i;
int k=0;
void main() {
adcon1=0b11111111;
trisc=0;
trisd=0;
trisa=1;
trisb=1;
porta=0;
portb=0;
portc=0;
portd=0;
do{
k=0;
k++;
for (i=0; i<60; i++){
k=0;
portb=0b00000010;
portc=0b00110011;
portd=0b01110111;
delay_ms(2);
portb=0b00000100;
portc=0b00000000;
portd=0b11111111;
delay_ms(2);
portb=0b00001000;
portc=0b00001111;
portd=0b11111111;
delay_ms(2);
portb=0b00010000;
portc=0b00110000;
portd=0b01110111;
delay_ms(2);
}
for (i=0; i<60; i++){
k=0;
portb=0b00000100;
portc=0b00110011;
portd=0b01110111;
delay_ms(2);
portb=0b00001000;
portc=0b00000000;
portd=0b11111111;
delay_ms(2);
portb=0b00010000;
portc=0b00001111;
portd=0b11111111;
delay_ms(2);
portb=0b00100000;
portc=0b00110000;
portd=0b01110111;
delay_ms(2);
}
for (i=0; i<60; i++){
k=0;
portb=0b00001000;
portc=0b00110011;
portd=0b01110111;
delay_ms(2);
portb=0b00010000;
portc=0b00000000;
portd=0b11111111;
delay_ms(2);
portb=0b00100000;
portc=0b00001111;
portd=0b11111111;
delay_ms(2);
portb=0b01000000;
portc=0b00110000;
portd=0b01110111;
delay_ms(2);
}
for (i=0; i<60; i++){
k=0;
portb=0b00010000;
portc=0b00110011;
portd=0b01110111;
delay_ms(2);
portb=0b00100000;
portc=0b00000000;
portd=0b11111111;
delay_ms(2);
portb=0b01000000;
portc=0b00001111;
portd=0b11111111;
delay_ms(2);
portb=0b10000000;
portc=0b00110000;
portd=0b01110111;
delay_ms(2);
}
for (i=0; i<60; i++){
k=0;
portb=0b00100000;
portc=0b00110011;
portd=0b01110111;
delay_ms(2);
portb=0b01000000;
portc=0b00000000;
portd=0b11111111;
delay_ms(2);
portb=0b00000000;
portc=0b11111111;
portd=0b11111111;
delay_ms(2);
}
//HOLA CON CORRIDA
for (i=0; i<60; i++){
portb=0b00000010;
portc=0b00110011;
portd=0b11111010;
delay_ms(2);
portb=0b00000100;
portc=0b00000011;
portd=0b11111111;
delay_ms(2);
portb=0b00001000;
portc=0b00110011;
portd=0b11101110;
delay_ms(2);
portb=0b00010000;
portc=0b10000011;
portd=0b01110111;
delay_ms(2);
portb=0b00100000;
portc=0b00000000;
portd=0b11111111;
delay_ms(2);
}
for (i=0; i<60; i++){
portb=0b00000100;
portc=0b00110011;
portd=0b11111010;
delay_ms(2);
portb=0b00001000;
portc=0b00000011;
portd=0b11111111;
delay_ms(2);
portb=0b00010000;
portc=0b00110011;
portd=0b11101110;
delay_ms(2);
portb=0b00100000;
portc=0b10000011;
portd=0b01110111;
delay_ms(2);
portb=0b01000000;
portc=0b00000000;
portd=0b11111111;
delay_ms(2);
}
for (i=0; i<60; i++){
portb=0b00001000;
portc=0b00110011;
portd=0b11111010;
delay_ms(2);
portb=0b00010000;
portc=0b00000011;
portd=0b11111111;
delay_ms(2);
portb=0b00100000;
portc=0b00110011;
portd=0b11101110;
delay_ms(2);
portb=0b01000000;
portc=0b10000011;
portd=0b01110111;
delay_ms(2);
portb=0b10000000;
portc=0b00000000;
portd=0b11111111;
delay_ms(2);
}
for (i=0; i<60; i++){
portb=0b00010000;
portc=0b00110011;
portd=0b11111010;
delay_ms(2);
portb=0b00100000;
portc=0b00000011;
portd=0b11111111;
delay_ms(2);
portb=0b01000000;
portc=0b00110011;
portd=0b11101110;
delay_ms(2);
portb=0b10000000;
portc=0b10000011;
portd=0b01110111;
delay_ms(2);
}
for (i=0; i<60; i++){
portb=0b00100000;
portc=0b00110011;
portd=0b11111010;
delay_ms(2);
portb=0b01000000;
portc=0b00000011;
portd=0b11111111;
delay_ms(2);
portb=0b10000000;
portc=0b00110011;
portd=0b11101110;
delay_ms(2);
}
for (i=0; i<60; i++){
portb=0b01000000;
portc=0b00110011;
portd=0b11111010;
delay_ms(2);
}
delay_ms(1500);
}
while(k<400);
}
Espero les sea de utilidad...
jueves, 2 de abril de 2015
Control De Motores DC Con PIC y Puente H en Mikro C
Este es un programa sencillo que permite controlar dos motores mediante el uso de un PIC previamente programado en MikroC.
La función que realiza es la siguiente:
1) Giro de ambos motores a derecha
2) Detiene el movimiento de ambos motores
3) Giro de ambos motores a izquierda
4) Giro del primer motor y detiene el segundo
5) Detiene el primer motor y giro del segundo
El entorno de simulación es ISIS de Proteus v8.0, el compilador es MikroC Pro.
La función que realiza es la siguiente:
1) Giro de ambos motores a derecha
2) Detiene el movimiento de ambos motores
3) Giro de ambos motores a izquierda
4) Giro del primer motor y detiene el segundo
5) Detiene el primer motor y giro del segundo
El entorno de simulación es ISIS de Proteus v8.0, el compilador es MikroC Pro.
A continuación se muestra el esquema de las conexiones:
Finalmente la captura de pantalla de la simulación ejecutándose.
Nota: Dado que la velocidad de giro de los motores es alta, la impresión de pantalla puede parecer idénticas; sin embargo, es conveniente observar los estados de cada elemento para constatar que nuestra simulación es la correcta, y con esto me refiero a los cuadros azules o rojos que aparecen a ejecutar la simulación y que nos sirven de auxiliar para saber que estado tiene cada componente en cada etapa.
Suscribirse a:
Entradas (Atom)