Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

08/12/2013 #1


Texto animado en lcd de pic16f84
Trabajo en este programa hace algún tiempo pero ya no se que hacer para lograr lo que el texto corra tal como se ve en el gif, quiero que corra de izquierda a derecha con continuidad.


Código:
;******************************************************************
; Proyecto:            Visualización de texto en un display LCD
;                      empleando una tabla
; Archivo de proyecto: CMC1007.mclsprj
; Archivo fuente:      CMC1007.asm
; Editor:              hpolster
; Fecha:               05.10.05
; Software:            GPASM
; Hardware:            Unidad ISP PIC
;                      Unidad LCD I2C con PORTB
;                      SCL = RB3
;                      SDA = RB4
;
;******************************************************************

;------------------------------------------------------------------
; Configuración del PIC
; -----------------------------------------------------------------
   LIST  p=16f84

; Palabra de configuración para el microcontrolador
; code protection off/ power up timer off/ wdt off /XT oscillator
   __config   0x3ff9   

; -----------------------------------------------------------------
; Variables en RAM a partir de la dirección 0x10
; -----------------------------------------------------------------
cblock 0x10
   lcdcount
      lcdcount1
      lcdcount2
   offset
endc

   org    0
start:
   call   IIC_INIT      ; inicializar interfaz I2C
   call   LCD_INIT      ; inicializar LCD
   call   Display       ; visualizar posiciones BCD en display LCD
   goto   start
main:
   goto   main          ; bucle infinito

; -----------------------------------------------------------------
; Subrutinas
; -----------------------------------------------------------------
Display:
   movlw   D'12'         ; columna 0 de LCD hacia W
   movwf   lcdcount2      ; W hacia columna

   movlw   D'12'         ; columna 0 de LCD hacia W
   movwf   lcdcount1      ; W hacia columna

   movlw   D'0'         ; columna 0 de LCD hacia W
   movwf   columna      ; W hacia columna

xxx:
   movlw   0x20         ; dirección de LCD línea 2 hacia W
   movwf   línea        ; W hacia línea
   call    LCD_GOTO_XY  ; posicionar cursor LCD

   movf    lcdcount2,0
   movwf   lcdcount2        ; valor de lcdcount hacia W
   movwf   lcdcount     ; W hacia lcdcount (12 caracteres)
   
   movlw   D'0'          ; posición de tabla 0 hacia W
   movwf   offset        ; W hacia offset para tabla "text1"

loop1:
   movf   offset,w       ; posición de tabla hacia W
   call   text1          ; buscar carácter
   call   LCD_SEND_ASCII ; visualizar en LCD
   incf   offset,f       ; offset para siguiente carácter en "text1"
 
   decfsz lcdcount,f     ; lcdcount - 1 -> =0?
   goto   loop1          ; no -> saltar a loop1
   decfsz lcdcount2,f     ; lcdcount - 1 -> =0?

   incfsz columna,f  ;izqu a der
   decfsz lcdcount1,f
   goto   xxx      
   call wait_480ms

   return
; -----------------------------------------------------------------
; Cadenas de texto
; -----------------------------------------------------------------
text1:
      addwf   PCL,f
      retlw   ' '
      retlw   'U'
      retlw   'N'
      retlw   'I'
      retlw   'V'
      retlw   'E'
      retlw   'R'
      retlw   'S'
      retlw   'I'
      retlw   'D'
      retlw   'A'
      retlw   'D'
    return
      
; -----------------------------------------------------------------
; Archivos de inclusión
; -----------------------------------------------------------------
include "p16f84.inc"     ; definiciones de controlador de destino
include "time.inc"       ; subrutinas de retardo de tiempo
                         ; por software
include "iic.inc"        ; subrutinas IIC
include "lcd.inc"        ; subrutinas LCD

; -----------------------------------------------------------------
   end
11/12/2013 #2


te recomiendo que uses las librerías del libro "pic16f84A desarrollo de proyectos" con estas es muy facil.
y una pregunta porque usas librerias i2c?
12/12/2013 #3


En assembler no te puedo ayudar pero, en CCS puedes hacerlo así.
Haber si te sirve !

Código PHP:
/****************************************************************
*   Proyecto: Manejo de LCD                                     *
*   Desarrollado: Luis Alberto Zamora Lara                      *
*              Diciembre 2013                                   *
*                                                               *
*****************************************************************/   


#include <16F84A.h>
#Fuses XT,NOWDT,NOPROTECT
//#device ADC=10
#Use Delay(Clock=4 000 000)
#include <lcd.c>
#byte puerto_b = 06

int var,i,k;
char a[14]=0x200x55,0x4E,0x49,0x56,0x450x520x530x490x440x410x440x000x00;


void main(void){
   
set_tris_b(0b00001000);
   
set_tris_a(0b00110111);
   
lcd_init();
   
delay_ms(10);
   var=
3;
   
k=0;
   
i=1;

   while(
true){ 
   
lcd_putc("\f");
   
delay_ms(200);
   for(
k=16;k!=-16;k--) //al lado contrario   for(k=-16;k!=32;k++)
   
{
   
lcd_gotoxy(k,1);
   
delay_ms(70);
   
printf(lcd_putc " UNIVERSIDAD ");
   }
   }
 } 
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.