Proceso secuencial ,Matriz de leds controlada con pic

Hola Saludos,

Tengo un proyecto de electrónica.El cual consiste en desarrollar un proceso secuencial a base de leds , por ejemplo el llenado de tanques.
Si fueran estos 3 tanques entonces , Se prendería la primera válvula ( que es representada por un led) y luego empezaría a llenarse el tanque de la izquierda ,luego cuando termine de llenarse hasta donde yo lo indique , pues se apagaría la primera válvula y se prendería la segunda válvula que indica que se activo el prendido, luego empezaría a llenarse el tanque 2 de la derecha hasta donde yo lo indique con el programa , luego de esto se apagara la válvula 2 , y se prenderá las válvulas 3 y 4 , que inician el llenado del 3er tanque , bien mientras se prendan 4 leds en el tercer tanque pues se apagaran 2 leds del tanque 1 y 2 leds del tanque 2 , y asi simulara que esta pasando liquido de los 2 tanques al tercero . Soy nuevo en Programación y me gustaría saber si me pueden apoyar con este proyecto.Estoy programando en MikroC y con un PIC16F877A.

Tengo un avance pero me eh trabado en una parte , cuando enciendo la válvula 1 es facil, mando por el puero PORTC.F0=1;PORTC.F3=1; y listo , luego para prender secuencial mente simplemente activo el PORTC.F4=1; Y PORTB.F4=1 , luego le coloco un delay_ms(1000), luego un PORTB.F3=1 y logro prender los leds secuencial mente , pero también prende el led de la matriz PORTC.F4=1 Y PORTC.F0=1 , ya que esta prendido indirectamente y eso no quiero que haga , no se como solucionar este problema.

Lo mismo sucede cuando voy a prender el 2do tanque , como yo quiero que el 1er tanque este con los leds prendidos para recien empezarlos a apagar cuando actue el 3er tanque , pues como los puerto B0, B1 ,B2 estan activados , cuando mande UN PORTB.F7 =1 y PORTD.F5=1 pues se prenderan varios leds ya que los puertos B0, B1 ,B2 estan en 1 , y no se como solucionar este problema tampoco .
Les dejo 2 imagenes que pueden mostrarles un poco mejor lo que tengo.
Gracias por su tiempo


void main() {
ADCON1=0X06;//sirve para configurar el puerto A como entrada o salida analogica
TRISA=255;//definimos como entrada el puerto A
TRISB=0X00;//definimos como salida al puerto B
TRISD=0X00;//definimos como salida al puerto D
TRISC=0X00;//definimos como salida el puerto C
TRISE=0X00;//definimos como salida el puerto E
PORTB=0x00;// inicializo el puerto B en cero
PORTD=0X00; // inicializo el puerto D en cero
PORTE=0X00;
PORTC=0X00;
//int n,m;
//TRISB0_bit=0;


while()
{

PORTC.F0=1;
PORTC.F4=1;
delay_ms(1000);
PORTC.F5=1;
PORTB.F0=1;
delay_ms(1000);
PORTB.F1=1;
delay_ms(1000);
PORTB.F2=1;
delay_ms(1000);
PORTB.F3=1;
delay_ms(1000);


}
}
 

Adjuntos

  • 10696363_737178569652388_461793080424813027_n.jpg
    10696363_737178569652388_461793080424813027_n.jpg
    50 KB · Visitas: 12
  • Dibujo.JPG
    Dibujo.JPG
    79.5 KB · Visitas: 16
Atrás
Arriba