TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: PSoC en 07 de Enero de 2010, 21:01:26
-
Ola a todos
eu gostaria de saber se seria dificil adaptar um código de voltimetro LCD
para um voltimetro com display 7 segmentos com 4 digitos?
O programa ja esta todo pronto só queria fazer esta modificação.
Se alguem puder me ajudar eu agradeço desde ja.
Fiquem com DEUS
-
Hola Psoc, bienvenido al foro!
El LCD es de los llamados inteligentes? (16x2)
con cuantas lineas o pines esta configurado?
tendrias que subir el programa para poder evaluar si es posible ok?
Saludos
Norberto
-
De poder modificar se puede, pero es bastante distinto, pues tendrás que realizar la conversión a BCD del dato y enviar cada unidad por separado a cada display, que dependerá de como sea el hardware (Multiplexado o con registro de desplazamientos)
Saludos!
-
Ola
obrigado pelos cumprimentos.
É um LCD 16x2 e estou usando 7 pinos do pic.
e o código seria este abaixo.
unsigned long value; //se define o valor do canal0
unsigned char d1,d2,d3,d4,*text; //d1,d2,d3,d4: são para converter os dados de entrada
#define printV lcd_chr(2,11,d1+48); lcd_chr_cp(d2+48); \
lcd_chr_cp('.'); lcd_chr_cp(d3+48); \
lcd_chr_cp(d4+48); lcd_out_cp("V");
void main()
{
adcon1=0b10000010; //canais analogicos ativados
trisa=0xff; //PortA esta configurado como entrada
lcd_config(&portb,1,3,2,7,6,5,4);
lcd_cmd(LCD_CURSOR_OFF);
lcd_cmd(LCD_CLEAR);
text="Oscar PROJECT";
lcd_out(1,2,text);
text="Tensao:";
lcd_out(2,1,text);
for(;;)
{
value=adc_read(0);
value=value*5000/1023;
d1=value/1000;
d2=(value%1000)/100; //"%" este operador devolve ao modulo a divisão
d3=((value%1000)%100)/10;
d4=((value%1000)%100)%10;
printV //Aqui se invoca a MACRO
delay_ms(20);
}
}
(http://)
-
Hola, te consultaba sobre los pines del lcd, porque podrias emplear 7->para los segmentos +4 para multiplexarlos
o emplear 4->cd4511 (bcd exitador 7 segmentos) +4 para multiplex
Como te manifesto Suky, tu ya tienes los valores de cada digito
d1=value/1000;
d2=(value%1000)/100; //"%" este operador devolve ao modulo a divisão
d3=((value%1000)%100)/10;
d4=((value%1000)%100)%10;
Creo que printV pasara el Valor D a CHR... ahora no hace falta
tendras que tomar d1, colocarlo en el puerto, activar digito 1... demora
d2.... puerto desactivar digito 1 y activar digito 2 ... etc hasta el 4 y repetir
Norberto
-
Voce poderia me ajudar com o código Norberto?
Segue ai o esquema eletrico
(http://img521.imageshack.us/img521/3317/picfm.png).
-
Estou usando crystal de 20MHz.
Ele mede de 0v a 50V
-
Hola Psoc, yo por ahora, solo programo en assembler....
Pero hay grandes capos del C por estos lados!!!
Un abrazo
Norberto
-
Obrigado pela sua ajuda Norberto
Fique com DEUS
Felicidades
-
Se o Suky puder me ajudar
eu fico feliz.
Obrigado SUky
-
Lo único que hay que modificar es el macro printV por una función, para utilizar 4 display multiplexados si es tu elección. Busca por la red que hay mucha info al respecto, intenta modificarlo y si tienes algún inconveniente consulta.
Saludos!
-
Certo Suky.
Vou tentar fazer o que você me disse.
Qualquer duvida eu te pergunto.
Obrigado.
Saludos.
-
PSoC, revisa aquí:
http://www.todopic.com.ar/foros/index.php?topic=4847.msg36612#msg36612
no es el mismo voltímetro, pero la idea de la multiplexación a lo mejor te sirve.
-
Obrigado pela sua colaboração PalitroqueZ.
Vou ver o que posso fazer.
Até logo.