0 Usuarios y 1 Visitante están viendo este tema.
Escrito originalmente por SantiMizarPuede utilizarse con cualquier modelo de PIC que tenga 1 puerto y 3 bits de otro libres para tal efecto.Es una maravilla, si teneis alguna duda, me lo comentais.
Codigo:; REALIZA LA INICIALIZACION DEL LCD. UNA INTERFAZ DE 4 BITS,; 2 LINEAS Y 5X7 PIXELS.;; RS ----> RA4 D7 ----> RA3; RW ----> RA6 D6 ----> RA2; E ----> RA7 D5 ----> RA1; D4 ----> RA0; D3 ----> GND; D2 ----> GND; D1 ----> GND; D0 ----> GND; _____________________________________________________; | |; | ----------------------------------------------- |; | | | |; | | | |; | | | |; | ----------------------------------------------- |; | _ |; | GND VCC VEE RS R/W E D0 D1 D2 D3 D4 D5 D6 D7 A K |; |_____________________________________________________|; | | | | | | | | | | | | | | | |; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ; SE DEFINEN PINES DEL PORTA#DEFINE D4_LCD PORTA,0#DEFINE D5_LCD PORTA,1#DEFINE D6_LCD PORTA,2#DEFINE D7_LCD PORTA,3#DEFINE RS PORTA,4#DEFINE RW PORTA,6#DEFINE E PORTA,7; BLOQUE DE COMANDOSLCD_LINEA1 EQU 0X80 ;COLOCA EL CURSOR EN LA POSICION 1 LINEA 1LCD_LINEA2 EQU 0XC0 ;COLOCA EL CURSOR EN LA POSICION 1 LINEA 2LCD_BORRAR EQU 0X01 ;CLR LCD, CURSOR EN LA POSICION 1 LINEA 1LCD_INICIO EQU 0X02 ;COLOCA EL CURSOR EN LA POSICION 1 LINEA 1LCD_INC EQU 0X06 ;INC POSICION CURSOR DESPUES DE CADA CARACTERLCD_DEC EQU 0X04 ;DEC POSICION CURSOR DESPUES DE CADA CARACTERLCD_ON EQU 0X0C ;ENCIENDE LCDLCD_OFF EQU 0X08 ;APAGA LCDLCD_CURSON EQU 0X0E ;ENCIENDE LCD Y EL CURSOR (_CURSOR)LCD_CURSOFF EQU 0X0C ;APAGA EL CURSORLCD_CURSBLK EQU 0X0D ;ENCIENDE LCD Y PARPADEA EL CURSOR ([]CURSOR)LCD_IZDA EQU 0X18 ;DESPLAZA LOS CARACTERES MOSTRADOS A LA IZQUIERDALCD_DECHA EQU 0X1C ;DESPLAZA LOS CARACTERES MOSTRADOS A LA DERECHALCD_CURSIZ EQU 0X10 ;MUEVE EL CURSOR UNA POSICION A LA IZQUIERDALCD_CURSDE EQU 0X14 ;MUEVE EL CURSOR UNA POSICION A LA DERECHALCD_4BITS EQU 0X28 ;INTERFACE 4 BITS, 2 LINEAS, 5X7 PIXELESLCD_CGRAM EQU 0X40 ;GENERADOR DE CARACTERES DE USUARIO RAM; RUTINA PARA LA CONFIGURACION DEL LCDLCD_CONFIG CALL DEMO_5MS MOVLW B"11110000" ANDWF PORTA,F ;BORRA PORTA_LOW RESPETANDO LAS RESTANTES MOVLW 0X03 IORWF PORTA,F ;INTERFACE DE 8 BITS BCF RW ;MODO ESCRITURA BCF RS ;MODO COMANDO CALL LCD_E CALL DEMO_150MS ;RETARDO SUGERIDO POR EL FABRICANTE CALL LCD_E CALL DEMO_150MS ;RETARDO SUGERIDO POR EL FABRICANTE CALL LCD_E CALL DEMO_150MS ;RETARDO SUGERIDO POR EL FABRICANTE MOVLW B"11110000" ANDWF PORTA,F ;BORRA PORTA_LOW RESPETANDO LAS RESTANTES MOVLW 0X02 IORWF PORTA,F ;INTERFACE DE 4 BITS CALL LCD_E MOVLW LCD_4BITS ;INTERFACE DE 4 BITS, 2 LINEAS Y 5X7 PIXELS CALL LCD_CMD MOVLW LCD_ON CALL LCD_CMD MOVLW LCD_BORRAR CALL LCD_CMD RETURN; RUTINA QUE ENTREGA UN PULSO A ENABLE DEL LCDLCD_E BSF E NOP NOP BCF E RETURN; RUTINA QUE VERIFICA EL ESTADO DEL FLAG BUSY DEL LCD.LCD_BUSY BANK_1 MOVLW B"00001111" IORWF TRISA,F ;PORTA_LOW COMO ENTRADA BANK_0 BSF RW ;MODO LECTURA BCF RS ;MODO COMANDO NOPLCD_BUSY3 BSF E NOP NOP MOVFW PORTA MOVWF LCD_TEMP NOP NOP BCF E NOP NOP BSF E NOP NOP BCF E BTFSC LCD_TEMP,3 GOTO LCD_BUSY3 BANK_1 MOVLW B"11110000" ANDWF TRISA,F ;PORTA_LOW COMO SALIDA BANK_0 RETURN ; RUTINA QUE ENVIA UN COMANDO AL LCDLCD_CMD MOVWF LCD_CHAR ;SALVA COMANDO PARA SER ENVIADO CALL LCD_BUSY BCF RW ;MODO ESCRITURA BCF RS ;MODO COMANDO GOTO $+.5; RUTINA QUE VISUALIZA EN EL LCD EL CONTENIDO CARGADO EN W (W=ASCII)LCD_DATA MOVWF LCD_CHAR ;SALVA COMANDO PARA SER ENVIADO CALL LCD_BUSY BCF RW ;MODO ESCRITURA BSF RS ;MODO CARACTER BCF D4_LCD BCF D5_LCD BCF D6_LCD BCF D7_LCD; SEND NYBLE MSB BTFSC LCD_CHAR,7 BSF D7_LCD BTFSC LCD_CHAR,6 BSF D6_LCD BTFSC LCD_CHAR,5 BSF D5_LCD BTFSC LCD_CHAR,4 BSF D4_LCD CALL LCD_E; SEND NYBLE LSB BCF D4_LCD BCF D5_LCD BCF D6_LCD BCF D7_LCD BTFSC LCD_CHAR,3 BSF D7_LCD BTFSC LCD_CHAR,2 BSF D6_LCD BTFSC LCD_CHAR,1 BSF D5_LCD BTFSC LCD_CHAR,0 BSF D4_LCD CALL LCD_E RETURN
Escrito originalmente por mario_pastorSaludos, espero que estas rutinas les sea de ayuda.
Escrito originalmente por mario_pastorClaro que las probe y me funcionaron... porque las hice yo Por cierto, donde veas CALL DEMO_5MS y CALL DEMO_150MS son retardos que debes crear de acuerdo al CRISTAL que uses . Ya me contaras como te va con tu diseño...
Escrito originalmente por mario_pastorClaro, con los de RENTRON que trabajan a 433MHz y su modulación es OOK. Aquí tienes el link: http://www.rentron.com/PicBasic/RemoteControl.htm pero te recomiendo a que abras un nuevo post si tienes alguna duda respecto al tema... tu sabes para mantener el orden del foro
Escrito originalmente por mario_pastorElizabeth, coloca aquí el link de tu consulta sobre RF y de esa manera vemos como solucionamos tu problema.