Curso de programación de PIC en PICBasic Pro

Lubeck ya tengo armado las 2 tarjetas para los modulos los pic aun no tienen el programa te parece si al rato le seguimos
 
Hola amigos, me podrian hacer el favor de ayudarme con ejemplos o programas para desplegar textos en un lcd 16*4 en sus cuatro lineas. Lo estoy manejando con un pic 16f877.

Pensaba en un programa en el cual un texto ocupaba 4 lineas y se desplegaba todo el texto de arriba hacia abajo. Ya que en videos de google existe un proyecto igual pero no hay codigo y no tengo ni la mas minima idea como se hace esto.

Muchas gracias por su ayuda.
 
Hola amigos, me podrian hacer el favor de ayudarme con ejemplos o programas para desplegar textos en un lcd 16*4 en sus cuatro lineas. Lo estoy manejando con un pic 16f877.

Pensaba en un programa en el cual un texto ocupaba 4 lineas y se desplegaba todo el texto de arriba hacia abajo. Ya que en videos de google existe un proyecto igual pero no hay codigo y no tengo ni la mas minima idea como se hace esto.

Muchas gracias por su ayuda.
Revisa el help del mismo programa... manual más completo no hay (en ingles).
Busca la instrucción LCDOUT que debajo de su explicación hay dos tablas, una de ellas de los comandos incluyendo la manera de pasar a la 2da, 3ra y 4ta línea.

Fragmento.
Código:
$FE, $C0 | Move cursor to beginning of second line 
$FE, $94 | Move cursor to beginning of third line 
$FE, $D4 | Move cursor to beginning of fourth line

salu2
 
ya que estan con eso de los LCD seria bueno si se animaran ha realizar unos programas com GLCD se los agradeceriamos mucho
Lo veo complicado (hacer todo el protocolo de control) ya que el PBP no tiene instrucciones para trabajar con GLCDs. Mi sugerencia es que no se casen con uno. Por ejemplo pueden usar el Proton IDE que si tiene instrucciones para GLCDs.
Si alguien lo ha echo a buena hora que lo suba :).
 
hola tengo una duda con picbasic:
cual es la sintaxis de la coneccion usb yo encontré esto
Código:
DoUSBOut:
   USBBufferCount = USBBufferSizeTX   
   usbservice
   USBOut 1, USBBuffer, USBBufferCount, DoUSBOut ' if bus available, transmit data
   return
   DoUSBIn:
   USBBufferCount = USBBufferSizeRX              ' RX buffer size
   USBService                                    ' keep connection alive
   USBIn 1, USBBuffer, USBBufferCount, DoUSBIn   ' read data, if available
   return

pero usbbuffer usbbufffercount y los demas que funcion tienen

eso espero q me ayuden

gracias
 
mira en el microcoede al igual que en el proton hay una herramienta con la que se puede generar el codigo directamente para poder hacer la coneccion con un uC a una PC por USB creo que el que colocaste antes es en proton no estoy seguro pero en estos campos solo se debe llenar lo que quieres que haga el uC por ejemplo un ADC o el accionar de los puertos puedes hacer relativamente todo dependiendo del micro que uses no soy un experto pero si aprendi algo algo dañoando las cosas sobre este tema
 
gracias por tu respues bueno paso el codigo que tengo por no si si esta bien enfocado no es mi fuerte
Código:
USBBufferSizeMax   con 8  ' maximum buffer size
USBBufferSizeTX    con 8  ' input 
USBBufferSizeRX    con 8  ' output

' the USB buffer...
USBBuffer        Var Byte[USBBufferSizeMax] 
USBBufferCount   Var Byte 
dato             var byte

usbinit ' initialise USB...
ProgramStart: 
    PORTB=USBBuffer[7]
    gosub dousbin
    goto ProgramStart  

 escaneo:

     if portd.0=1 then 
      USBBuffer[0]=1
      USBBuffer[1]=1
      USBBuffer[2]=2
      
   DoUSBOut:
   USBBufferCount = USBBufferSizeTX   
   usbservice
   USBOut 1, USBBuffer, USBBufferCount, DoUSBOut ' if bus available, transmit data
   return
   DoUSBIn:
   USBBufferCount = USBBufferSizeRX              ' RX buffer size
   USBService                                    ' keep connection alive
   USBIn 1, USBBuffer, USBBufferCount, DoUSBIn   ' read data, if available
   return
   
   endif

if USBBuffer[1]==1 then 
 high portb.0
 high portb.1
endif

  goto escaneo

bueno lo que quiero es que si el puerto rd.0 esta en estado1 envié un arreglo de bytes luego el programa en java, según la decisión del usuario prenda un led que esta en rb0 y 1

eso espero que me ayuden con opiniones sobre el código

saludos
 
creo que mecatrodatos posteo antes algo en particular sobre el usb o tambien busca en el internet la pagina micros y mas micros ahi hay un ejemplo que usa en lugar de java visual basic. pero con todo el pedazito que pusiste me parece esta mal colocado revisa bien la sintaxis del programa por ahora no me acuerdo pero asi pude lograr la coneccion usb.si lo hicieras en proton esto lo deberias hacer asi mas o menos " claro esta que esta hecho con el easy hid si no lo tienes puedes descargarlo del internet sin problemas "
Código:
' select MCU and clock speed
Device = 18F4550
Xtal = 48	

' descriptor file, located in \inc\usb_18 - a copy
' is located in the same folder as this file	
USB_Descriptor = "USBProjectDESC.inc"

' USB Buffer...
Symbol USBBufferSizeMax = 8
Symbol USBBufferSizeTX  = 8
Symbol USBBufferSizeRX  = 8
Dim    USBBuffer[USBBufferSizeMax] As Byte

' some useful flags...
Dim PP0 As Byte System        ' USBPOLL status return
Symbol CARRY_FLAG = STATUS.0  ' high if microcontroller does not have control over the buffer
Symbol ATTACHED_STATE = 6     ' is USB attached


' AQUI DEBES CREAR TUS VARIABLES Y ALIAS PARA TU PROGRAMA  <====



     
' ************************************************************
' * main program loop - remember, you must keep the USB      *
' * connection alive with a call to USBPoll, USBIn or USBOut *
' * every couple of milliseconds or so                       *
' ************************************************************
GoSub AttachToUSB
ProgramLoop:
   GoSub DoUSBIn
   GoSub DoUSBOut
   GoTo ProgramLoop
  
' ************************************************************
' * receive data from the USB bus                            *
' ************************************************************
DoUSBIn:
   USBIn 1, USBBuffer, USBBufferSizeRX, DoUSBIn
   
   'AQUI DEBEN IR TU PRCESO DE IDA A LA PC        <====
   
   Return
   
' ************************************************************
' * transmit data                                            *
' ************************************************************
DoUSBOut:   
   USBOut 1, USBBuffer, USBBufferSizeTX, DoUSBOut
   
    'AQUI DEBE IR EL PROCESO DEL UC AL PC     <====
   
   Return

' ************************************************************
' * wait for USB interface to attach                         *
' ************************************************************
AttachToUSB:
   Repeat								
      USBPoll		
   Until PP0 = ATTACHED_STATE
   Return
 
Última edición:
Hombre tienes que generar tus codigos con EASY HID QUE VIENE INCLUIDO en microcode studio
este programa te genera un plantilla en visual basic y otra en pic basic y una serie mas de archivos que son necesarios para esta comunicacion.
MM no se si podras implementar esto en java pero creo k sip yaque visual basic hace una llamada a una libreria.
 
gracias por sus respuestas bueno quiero manejar java por varias razones una de ellas me estoy especializando en este código ... ahora creo que se podría utilizar el easyhid voy a probar y les cuento como me va
 
oye amigo disculpa por la molestia pero estoy haciendo un sensor de temperatura de labview y me interesa como es que lo comunicas con labviw ya cheque el post que abriste de proyectos con labview pero la vdd estoy perdido con ese programa de echo lo poco que se es por lo e investigado por mi cuenta pero lo tengo que entregar en enero y pues si me sirvio tu post de programacion de echo el sensor ya lo tenia con un lm35 pero programadao en c la cuestion es que no se como mostrar esa informacion en labview mira te dejo la pag en donde puedes descargar el labview 2009 full www.somosmecatronica.net te vas a la parte de sofware y ahi esta de entemano muchas gracias por la yuda que puedas brindarme
 
Saludos a todos los miembros que leen este foro
Primeramente para todos una feliz navidad y mis mejores deseos para un nuevo año que nos viene seguramente de expectativas y retos, que Dios me bendiga a cada uno por su aporte desinteresado en compartir sobre microcontroladores y este lenguaje de Programacion PICBASIC que en verdad me ha ayudado a entender un poco mas la programacion comparada com ASM. Quisiera tambien aprovechar para solicitar una opinion para el siguiente codigo que consiste en un sencillo contador de 4 digitos y lo que necesito hacer es que cuente mas lento de lo que actualmente lo hace pues a pesar que me funciona no he podido hacer que cuente al menos con retardo de 1seg, notaran que las pausas que he dejado es para refrescar unos display de 7 segmentos, asi que, aca les va (sugerencias son muy bienvenidas)
@ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT
CMCON = 7 ; apagar comparadores puertoA
Segments Var PORTB ' Desde PORTB0-PORTB6 se conectan display de 7Segmentos
Digits VAR PORTA ' iran hacia la base de transistores PNP en este caso para Anodo Comun
i var byte ' contador
n var byte
Value var word

TRISB = 0
TRISA = %11110000 ' puertos PORTA0 - PORTA3 como salida para los transistores
' Rutina principal para contar desde cero hasta 9999
MAINLOOP:
FOR Value = 0 to 9999
gosub Display
next Value
goto MAINLOOP

; subrutina para enviar el numero (0 - 9999) en Value
Display:
for i = 0 to 3 ' PARA MOSTRAR CUATRO DISPLAY
n = Value dig i ' OBTIENE EL DATO MAS A LA DERECHA DESDE 0
gosub Display1 ' RUTINA DE CONVERSION
'pause 1 ' espera 1ms para refrescar rapidamente displays (subir este tiempo causa parpadeo)
next i
return

; subrutina para mostrar un digito en display; i=digito & n=numero a mostrar
Display1:
Digits = $ff
' CONVIERTE EL NUMERO A SIETE SEGMENTOS ANODO COMUN PARA ESTE CASO
lookup n,[$40,$79,$24,$30,$19,$92,$02,$78,$00,$18],Segments
' Ajustar el digito i to 0 (encendido) y el resto de los pins a 1 (apagado) logica para PNP
' ~ Bitwise NOT , funcion de negacion para cambiar el valor de Digits para la base del transistor
Digits = ~Dcd i ' DCD RETURNA VALOR CODIFICADO SI i=2 ENTONCES 100
pause 1
return
end

Como les comento el codigo me trabaja pero la pausa de 1seg no me trabaja pues los display parpadean si pongo pausa ya sea en la subrutina de Dusplay1 o en la de Mainloop.
FELICES FIESTAS
 
Czapatasv

El numero posterior a la sentencia "pause" indica en MiliSegundos el tiempo de Pausa, si deseas 1seg deberas cambiar el "1" por 1000 .

Saludos, JuanKa.-
 
Gracias por vuestra respuesta Juan
Pues te comento que pense que eso me podria ayudar pero al cambiarlo sencillamente el parpadeo de los display de 7Segmentos es notable, quiero decir que el contador funciona pero en el protoboard se observa que se encienden y apagan los display. Entonces no logro entender donde ubicar la pausa de 1000mseg para lograr el efecto desado y que los display de 7 segmentos e vean como encendidos todo el tiempo y solo cambiando su valor.

CZ
 
Czapatasv

La pausa deberia estar dentro del lazo For ---> Next y de esta forma tendrias 1 segundo visualizando cada numero contado, yo no puedo probarlo. Si igual ves el encendido y apagado del display en el cambio de un número al siguiente, deberíamos ver que más esta faltando.

Te debería quedar así:

for i = 0 to 3 ' PARA MOSTRAR CUATRO DISPLAY
n = Value dig i ' OBTIENE EL DATO MAS A LA DERECHA DESDE 0
gosub Display1 ' RUTINA DE CONVERSION
pause 1000 'pause 1 ' espera 1ms para refrescar rapidamente displays (subir este tiempo causa parpadeo)
next i
return



Saludos, JuanKa.-
 
oye amigo disculpa por la molestia pero estoy haciendo un sensor de temperatura de labview y me interesa como es que lo comunicas con labviw ya cheque el post que abriste de proyectos con labview pero la vdd estoy perdido con ese programa de echo lo poco que se es por lo e investigado por mi cuenta pero lo tengo que entregar en enero y pues si me sirvio tu post de programacion de echo el sensor ya lo tenia con un lm35 pero programadao en c la cuestion es que no se como mostrar esa informacion en labview mira te dejo la pag en donde puedes descargar el labview 2009 full www.somosmecatronica.net te vas a la parte de sofware y ahi esta de entemano muchas gracias por la yuda que puedas brindarme

mira en el foro de labview y pic basic ahi postie como debes hacer la comunicacion y lo unico que debes mandar al compu es la info del ADC leido por el micro y lo visualizes depende de ti si quieres en un termetro o un waveform chart
 
Atrás
Arriba