TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: kaki en 10 de Septiembre de 2013, 01:38:59
-
Hola a todos.. Quiero manejar 8 diplay con un max7219 pero no logro hacer que los display prendan!!
Aca dejo el codigo, la verdad no encuentro el problema. No se si es problema de Sofware, de conexionado, o simplemente que el proteus no lo simula.
#include <18F2550.h>
#use delay(clock=4000000) //Configuracion Ocilador
#fuses HS,NOWDT,NOPROTECT,NOLVP,NODEBUG //Configuracion Fusibles
#use spi(DO=pin_b7,CLK=pin_b5,LOAD=pin_b6,LOAD_ACTIVE=1,BITS=16,IDLE=1)
//Constantes
#define LIMIMTE_UP 100
#define LIMIMTE_DOWN 0
//Varible Globales
int16 packetmax;
void send_MAX(int digito, int dato){
packetmax=make16(digito,dato);
spi_xfer(packetmax);
}
void setupMAX7219(){
send_MAX(0x0F,0x00);
send_MAX(0x09,0xff); // Registro "DecodeMode" dígitos de 0 a 3
send_MAX(0x0A,0x0D);
send_MAX(0x0C,0x01); // Registro "ShutDown" 1 - Enciendo los display 0 - Apaga los Display
send_MAX(0x0B,0x03); // Registro "ScanLimit" Digitos 0, 1, 2 y 3
}
/****************************************************************************/
/* Main */
/****************************************************************************/
void main()
{
delay_ms(10);
setupMAX7219();
while(TRUE)//Bucle Infinito
{
send_MAX(0x01,0x05);
}
}
Saludos
-
Porque no pones la simulacion en proteus, asi sera mas facil ayudarte...
-
Aca les dejo la simulacion!!!
-
Ya furula :mrgreen: :-/
Saludos
-
Cuando le cambie el modo para que no sea BCD murio jejeje esto me esta :5]
maxsend(0x09,0xff); // mode for digit decoding
maxsend(0x0a,0x01); // Segment luminosity intensity
maxsend(0x0b,0x07); //0X03 Display refresh
maxsend(0x0c,0x01); // Turn on the display
maxsend(0x0f,0x00); // No test 0X00
-
Cuando le cambie el modo para que no sea BCD murio jejeje esto me esta
No te entendi lo que quisistes decir arriba :?
-
la Configuracion esta puesta para que la salida sea BCD
maxsend(0x09,0xff);
por ejemplo para que se vea un 8 en el display tengo q poner asi maxsend(0x02,0xFF);
cambiando ese modo a maxsend(0x09,0x00); logras que para poner un 8 en el display lo envies asi maxsend(0x02,0x08);
no se si entiendes lo que digo...
La cuestien es q cuando cambio el maxsend(0x09,0xff); por el maxsend(0x09,0x00); muere... no prende mas nada...
-
Puede ser problema del proteus o la simulacion. o el mplab no compila bien no se...
pero cualquier cosa que cambio y compilo ya no anda mas... es mas compilo sin cambiar nada y tampoco anda mas
no se por que pero cuando compilo no me compila. no se si tengo algun problema de configuracion en el mplab o algo de eso.
todo esto ya lo comprobe y compila.. puse un led hice q prendiera y prendio... pero los display ya no prenden
-
Ok el problema es tu version de CCS al parecer :(
A mi me furula fino!
Te adjunto para que veas el 7 en el display.
Saludos
-
Que version tienes de CCS??? y proteu?? a si estamos en la misma!! y un millon de gracias!!!