TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: microfull en 19 de Noviembre de 2007, 17:55:27
-
actualmente estoy realizando un probrama y lo monte en mi pic junto con la tarjeta que ya fabrique estoy usando un pic16F876 el problema es que creo que cuando se usa la instruccion lcdout con un 4 bit's de datos este escoje el puerto que uno le asigame mediante
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
pero los bit no los escoge uno sino que el programa asigna desde portb.4 hasta portb.7
mi problema fue que en las conexiones yo escogi desde el bit 0 hasta el bit3 como haria yo para cambiar y decirle que los bit de datos estan desde el bit 4 hasta el 7 y no del 0 hasta el 3 como el los coge. no quiero volver a rediseñar la pcb que me costo trabajo y me quedo muy bien.
agradeceria su colaboracin este es parte de mi programa
'****************************************************************
'* Name : UNTITLED.BAS *
'* Author : [select VIEW...EDITOR OPTIONS] *
'* Notice : Copyright (c) 2007 [select VIEW...EDITOR OPTIONS] *
'* : All Rights Reserved *
'* Date : 06/06/2007 *
'* Version : 1.0 *
'* Notes : *
'* : *
'****************************************************************
Define OSC 4
' Configuracion de Display LCD
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 1
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 2
DEFINE ADC_CLOCK 3
DEFINE ADC_BITS 10
DEFINE ADC_SAMPLEUS 50
TRISA = %11111111 ' Set PORTA to all input
TRISC=%00001111
TRISB=$00
ADCON1 = %10001110 ' Set PORTA analog and right justify result
TERMO VAR PORTA.0
HTEMP VAR PORTC.1
LTEMP VAR PORTC.0
ENTER VAR PORTC.2
EXIT VAR PORTC.3
HEAT VAR PORTC.4
'Set temperatura inferior
LED VAR PORTB.3
SENSOR VAR WORD
MAXTEMP VAR WORD
RANGO VAR WORD
REF VAR WORD
ADVAL VAR WORD
RL VAR BYTE
TL VAR BYTE
I VAR BYTE
INICIO:
HIGH LED
MAXTEMP=0
RANGO=0
PORTC=0
LCDOUT$FE,1," INGRESE "
LCDOUT$FE,$C0,"TEMPERATURA"
GOSUB PAUSA
-
Hola:
No entiendo bien lo que quieres decir, pero cuando trabajas a 4 bits, se usan los bits D4,D5,D6 y D7 del LCD, en tanto que para el pic puedes seleccionarlo tu, esta parte:
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 5
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 4
Indica que la conexión de los bits del bus de datos sería así:
PIC LCD
B0 D4
B1 D5
B2 D6
B3 D7
Si lo tienes así:
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 5
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 4
Entonces las conexiones quedan así:
PIC LCD
B4 D4
B5 D5
B6 D6
B7 D7
No puedes elegir los pines del LCD para los datos, eso lo puedes hacer solo con el pic
-
Que tal amigo!
Mira en el manual del pic basic pro aparese como se utiliza de todas formas yo te coloco la informacion aqui:
' Set LCD Data port
DEFINE LCD_DREG PORTB 'con esta instruccion seleccionas el puerto al
'cual vas a colocar el bus de datos
' Set starting Data bit (0 or 4) if 4-bit bus
DEFINE LCD_DBIT 4 ' con esta seleccionas si el bus es de 4 u 8 bits
' Set LCD Register Select port
DEFINE LCD_RSREG PORTB 'aqui defines el puerto donde vas a conectar el
'RS
' Set LCD Register Select bit
DEFINE LCD_RSBIT 1 'Con esta asignas el pin del puerto que
'que seleccionaste arriba
' Set LCD Enable port
DEFINE LCD_EREG PORTB 'es lo mismo que con RS
' Set LCD Enable bit
DEFINE LCD_EBIT 0
' Set LCD bus size (4 or 8 bits)
un ejemplo aqui esta:
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4 'desde potb4 a portb7 si colocas cero ira asi portb.0 a
'portb.3
DEFINE LCD_RSREG PORTB 'el puerto donde va el bit RS
DEFINE LCD_RSBIT 1 'aqui seria el portb.1 donde va RS
DEFINE LCD_EREG PORTB 'el puerto donde vas a colocar el bit E (portb)
DEFINE LCD_EBIT 0 'aqui colocas el bit del puerto que seleccionas (portb.0)
Por defecto el programa opera con bus a 4 lineas si quieres que sea a 8 lineas debes colocar el siguiete Define.
DEFINE LCD_BITS 4 '4 para bus de 4 lineas y 8 para bus de 8 lineas
Espero haberte servido de ayuda
-
Que tal amigo!
Mira en el manual del pic basic pro aparese como se utiliza de todas formas yo te coloco la informacion aqui:
' Set LCD Data port
DEFINE LCD_DREG PORTB 'con esta instruccion seleccionas el puerto al
'cual vas a colocar el bus de datos
' Set starting Data bit (0 or 4) if 4-bit bus
DEFINE LCD_DBIT 4 ' con esta seleccionas si el bus es de 4 u 8 bits
' Set LCD Register Select port
DEFINE LCD_RSREG PORTB 'aqui defines el puerto donde vas a conectar el
'RS
' Set LCD Register Select bit
DEFINE LCD_RSBIT 1 'Con esta asignas el pin del puerto que
'que seleccionaste arriba
' Set LCD Enable port
DEFINE LCD_EREG PORTB 'es lo mismo que con RS
' Set LCD Enable bit
DEFINE LCD_EBIT 0
' Set LCD bus size (4 or 8 bits)
un ejemplo aqui esta:
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4 'desde potb4 a portb7 si colocas cero ira asi portb.0 a
'portb.3
DEFINE LCD_RSREG PORTB 'el puerto donde va el bit RS
DEFINE LCD_RSBIT 1 'aqui seria el portb.1 donde va RS
DEFINE LCD_EREG PORTB 'el puerto donde vas a colocar el bit E (portb)
DEFINE LCD_EBIT 0 'aqui colocas el bit del puerto que seleccionas (portb.0)
Por defecto el programa opera con bus a 4 lineas si quieres que sea a 8 lineas debes colocar el siguiete Define.
DEFINE LCD_BITS 4 '4 para bus de 4 lineas y 8 para bus de 8 lineas[/b]
Espero haberte servido de ayuda
Hola, la parte de rojo no selecciona si el bus es de 4 u 8, indica el bit de inicio para el bus de datos, puede ser 0 o 4 como lo indica en el comentario en inglés, la parte de azul si es para definir si el bus es de 4 u 8 bits.
-
Quiero darle las gracias a todos los que me ayudaron y felicitar al grupo de este foro por su pronta ayuda les cuento que ya aprendi algo nuevo y con su ayyuda puede resolver el problemita que tenia. gracias pronto colocare parte del programa y fotos del circuito terminado.
:-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/ :-/
-
Hola:
Y como lo has solucionado?
-
Tienes razon, lordlafebre se me escapo, lo correcto es:
define lcd_bits 4 ' es 4 para un bus de 4 bits y 8 para un bus de 8 bits de datos.
Pic basic pro toma por defecto la configuracion para 4 bits, asi que este comando lo debes utilizar solo si trabajas con un bus de datos de 8 bits.
Si necesitas algun ejemplo en el foro hay varios sino de seguro te podemos enviar varios :mrgreen:
Saludos
-
Este fue el comentario que me ayudo mucho y fue el que mas dio en el problema que tenia que era que tenia conectado al pic en los 4 bit menos significativos(b0-b3) el bus de datos de 4 bit de la lcd donde por lo general se conectan a los bit's mas significativos(b4-b7)
Hola:
No entiendo bien lo que quieres decir, pero cuando trabajas a 4 bits, se usan los bits D4,D5,D6 y D7 del LCD, en tanto que para el pic puedes seleccionarlo tu, esta parte:
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 0 aqui fue donde lo tenia con valor de 4 y lo coloque con valor de 0
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 5
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 4
el comando que define si la lcd trabaja con 8 o con 4 es DEFINE LDC_DBITS
Indica que la conexión de los bits del bus de datos sería así:
PIC LCD
B0 D4
B1 D5
B2 D6
B3 D7
Si lo tienes así:
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 5
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 4
Entonces las conexiones quedan así:
PIC LCD
B4 D4
B5 D5
B6 D6
B7 D7
No puedes elegir los pines del LCD para los datos, eso lo puedes hacer solo con el pic
-
Hola:
Bueno, me alegro que ya lo tengas todo solucionado. :mrgreen:
-
Imagenes del circuito
(http://img219.imageshack.us/img219/7594/imagen001qg3.jpg) (http://imageshack.us)(http://img218.imageshack.us/img218/9718/imagen002oq4.jpg) (http://imageshack.us)
(http://img218.imageshack.us/img218/2640/imagen005rg1.jpg) (http://imageshack.us) (http://img218.imageshack.us/img218/4051/imagen008yz7.jpg) (http://imageshack.us)
-
Hola:
Se ve muy bien, felicidades, que es lo que hará esa plaquita?
-
Es un termostato electronico