⚡ Descuentos en cursos en video - Lleva tu aprendizaje técnico al siguiente nivel y aprovecha precios especiales antes de que termine la oferta. 🔥 Aprovechar oferta ahora 🔥
Microcontroladores y sistemas digitales

movimiento de caracteres en display 16x2

jairotev
jairotev
849
hace 9 años
hace 9 años
Hola amigos, les traigo un nuevo desafió (para mi lo es, probablemente no para ustedes). Les cuento, estoy desarrollando un programa en picc compiler, en lenguaje C en el que tengo una función que lo que hace es que hasta que no se presione la tecla ok, haya una leyenda que diga " presione -ok- " que corra por el display de derecha a izquierda. El problema que se me presenta es el siguiente. Al pasar la leyenda de der a izq la parte final de este texto no llega a desaparecer por completo de la pantalla. quedaría así "e -ok- ". Luego vuelve a aparecer la leyenda por la derecha y va pisando a lo que quedo en pantalla, pero esa parte final de la leyenda nunca desaparece. Es como si el lcd 16x2 solo permitiera el movimiento de 9 caracteres hacia la izquierda, lo que supera a eso lo deja fijo en pantalla. ¿Como puedo hacer para que el texto se mueva completo? Que desaparezca por completo por la izq y aparezca por la der. Les paso el código que yo estoy usando. void leyenda _en _movimiento(void) { int s=1; //creamos el entero S que es el que me va a permitir el movimiento en pantalla while(bit_test(porta,1)) // mientras no se presione la tecla ok correra el siguiente programa { lcd_gotoxy(s,1); // me ubica en la columna 1, porque "s" es 1, y en la fila 1 (parte superior del display) printf(lcd_putc," PRESIONE -OK- "); // imprime la leyenda " PRESIONE -OK- " delay_ms(180); // retraso de 180 milisegundos, tiempo de movimiento de la leyenda s=s-1; // S resta 1 por cada vez que el programa pasa por aca if(s==-15) // si S es igual a -15 (o sea que 15 caracteres pasaron hacia la izq del display o desaparecieron de la pantalla) { s=16; // me coloca la leyenda justo en el margen derecho del display para que vuelvan a caminar hacia la izq. } } } En el simulador PROTEUS funciona perfecto, pero en la realidad ocurre lo que les explique al principio. Espero su auyuda. Gracias amigos!!!
jairotev
jairotev
849
hace 9 años
hace 9 años
Alguna idea?
jairotev
jairotev
849
hace 9 años
hace 9 años
Alguien tuvo el mismo problema?
jairotev
jairotev
849
hace 9 años
hace 9 años
Estuve probando modificar el codigo usando un FOR, pero sigue pasando lo mismo. Alguien que quiera darme una manito? Se los agradeceria.
jairotev
jairotev
849
hace 9 años
hace 9 años
Alguien me podra dar una manito?
henmope
henmope
161
hace 9 años
hace 9 años
Jairotev, yo no programo en c sino en basic, sin embargo ésto le puede dar una idea para que si le es posible la implemente en c. y es que cuando comience la rutina siempre limpie la pantalla en basic es:$FE,1
jairotev
jairotev
849
hace 9 años
hace 9 años
Hola, el tema es que no puedo limpiar la pantalla, porque mientras me corre el texto "presione ok", en la linea 1 en la linea 2 me esta mostrando un contador, por eso no puedo usar un "print/f"
sergiouasd
sergiouasd
3.527
hace 8 años
hace 8 años
saludos. al igual que el compañero uso basic , no se C todavía , pero veo que corre los caracteres con un conteo , quizás le falten dígitos a su contador y por ellos se detiene antes de pasar todos los caracteres. de hecho cuento 9 caracteres y deja fuera la parte ok- , de restar tres valores mas y si tiene espacio cuantan tambien son un caracter. espero haber ayudado suerte.
Reparaciones similares solucionadas

¿Conoces una solución?

¡Aprende a reparar con estos cursos YoReparo!

4.25
(8)

Reparación de Placa Main TV LED con el Ing. Picerno

Ing. Alberto H. Picerno
$ 40 USD
$ 20 USD
4.73
(22)

Curso Reparación de Fuentes Conmutadas de PC y Equipos Electrónicos

Maximiliano Resch
$ 40 USD
$ 20 USD
4.6
(10)

Curso Localización de Fallas en Refrigeración en Heladeras/Neveras On/Off

Yamil Alarcón
$ 29 USD
$ 12 USD
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos?
Regístrate gratis