hola
Me gustaria saber si ustedes antes pusieron uno o varios bloques de 7 segmentos
para encender con un pic y en tal caso, ¿que chip usaron pra ahorrarse pines?.
¿cual me reconedarian? usando solo 4 lineas.
0000 --> 0
0001 --> 1
0010 --> 2
...
asi hasta
1111 --> F
yo ahora tengo uno problemilla un poco raro..
Por el momentos yo monte un PIC18F2550 con 1 solo chip de 7 segmentos en el simulador de proteus
acionado por: 7447, 4511, 7449 y no funciona muy bien.
pero si lo acciono de forma manual si que funciona, pero desde el pic solo me muestra de 0 a 4
la cosa es sencilla con el bus spi le envio del master al esclavo los 9 primeros numeros
pero solo me muestra del 0 al 4 no se lo que pasa con el resto.
alguna idea de que puede ocurrir?
sigo indagando en la resolucion del problema...
coloco el codigo del master y del esclavo ...
#include "C:\spi_pic18F2550\master_04\main.h"
//char taBCD[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};
int taBCD[]={0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09};
//int taBCD[]={0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f, 0x67};
int dato; //variable entera que sirve para que , al incrementar, vaya variando el dato.
void main()
{
//int cnt=0;
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_2);
setup_spi(SPI_MASTER|SPI_L_TO_H|SPI_CLK_DIV_16);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_timer_3(T3_DISABLED|T3_DIV_BY_1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
//Setup_Oscillator parameter not selected from Intr Oscillator Config tab
// TODO: USER CODE!!
while(true) {
for(dato=0;dato<10;dato++) {
spi_write(taBCD[dato]);
delay_ms(300);
}//fin for
// dato=0;
} //fin while
}
codigo del esclavo:
#include "C:\spi_pic18F2550\esclavo_04\main.h"
//char taBCD[]={0x00,0x01,0x02,0x03,0x04,0x06,0x07,0x08,0x09};
//int dato;
void main(){
setup_adc_ports(NO_ANALOGS|VSS_VDD);
setup_adc(ADC_CLOCK_DIV_2);
setup_spi(SPI_SLAVE);
setup_wdt(WDT_OFF);
setup_timer_0(RTCC_INTERNAL);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_comparator(NC_NC_NC_NC);
setup_vref(FALSE);
//Setup_Oscillator parameter not selected from Intr Oscillator Config tab
// TODO: USER CODE!!
//set_tris_c(0x00);
while(true) {
if(spi_data_is_in()){ // Esto sirve para detectar que hay o no un dato en el SPI al leer.
dato=spi_read();
//output_high(PIN_B0);
output_c(dato);
delay_ms(500);
}
}
}
si alguno lo desea puedo poner el circuito
solo tienen que pedirlo.
Un saludo.
#########################################################
:: Indice de pruebas ::=========================================================
1.- 1 Master por SPI enciende 1 Modulo de 7seg de un esclavo.
2.- 1 Master por SPI enciende n Modulos de 7seg de N esclavos a la vez.
3.- 1 Master por SPI enciende 1 Modulo de 7seg de un esclavo numeros pares
y en otro esclavo de construcion igulito enciende los numeros impares.
##########################################################
# Enlaces #
========
http://www.todopic.com.ar/foros/index.php?topic=28952.msg239608#msg239608