10/6/2017
CursodeprogramacióndePIC enPICBasicPro
Curso de programación de PIC en PICBasic Pro Temas similares
Aqui esta el diagrama de los proyectos que manejaremos con lcd es el mismo de los anteriores ( mensaje y desplazamiento) en formato dibujo , archivo comprimido si por el caso cambiaremos al pic 16f877A perola configuracion segura siendo la misma
pines pic pines LCD 2x16 RB0 D4 RB1 D5 RB2 D6 RB3 D7 RB4 RS RB5 E RW a tierra estoy son los pines que aparecen en proteus al seleccionar el pic y el LCD 2x16 se tiene que realizar la conexion antes descrita. Archivos Adjuntos perdonaran la ortografia pero vamos con un proyecto interesante visualizacion de caracteres especiales en LCD 2X16,para ello aclaremos lo siguiente:
Un dispositivo LCD dispone de dos tipos de memorias ambas independientes. Estas memorias se denominan DD RAM y CG RAM. -DD RAM (Display Data Ram) Es la memoria encargada de almacenar los caracteres de la pantalla que se esten visualizando en ese momento, o bien, que esten en una posición no visible. El display tiene una capacidad de 2 lineas horizontales por 40 caracteres cada una, de los cuales solo seran visibles 2 lineas de 16 caracteres cada una. La DDRAM tiene un tamaño de 2x40=80 bytes.
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
1/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
CG RAM (carácter generator RAM) La CG RAM contiene los caracteres que pueden ser definidos por el usuario, es decir que pueden ser personalizados. Está formada por 64 posiciones, con direcciones $00-$3F. Cada posición es de 5 bits. La memoria esta dividida en 8 bloques que corresponden a los posibles caracteres creados por el usuario que van del 0 al 7. Cada carácter esta constituido por una matriz de 5 columnas por 8 filas. De este modo un 1 indica un punto de la matriz encendido, y un 0 apagado.
Programa generacion de caracteres pic basic pro utilizando un pic 16f877A un LCD 2x16 con comunicacion a 4 bits: Código:
@ device xt_osc ; oscilador externo XT define osc 4 ; especifica que se va a utilizar uno de 4 Mhz ' DEFINICIÓN DE REGISTROS PARA EL LCD Define LCD_DREG PORTB 'Utilizar 4 bits del puerto B para tx de datos Define LCD_DBIT 4
'Desde el Bit B.4 al Bit B.7
Define LCD_RSREG PORTB'Selección del puerto del registro Define LCD_RSBIT 3 'En el bit B.1 Define LCD_EREG PORTB 'Utilizar el enable en el puerto B Define LCD_EBIT 2
'En el bit B.2
' Establecer el puerto B como salida TRISB=0 M var byte
;creacion de variable
Pause 500 ' tiempo para inicializar LCD RUTINA: LCDOUT $FE,64 ' COMIENZA DEFINICION LCDOUT $0,$E,$A,$1F,$1B,$1F,$1F,$0 ' 3 candado cerrado LCDOUT $0,$E,$8,$1F,$1B,$1F,$1F,$0 ' 4 CANDAdO ABIERTO LCDOUT $E,$A,$4,$1F,$4,$E,$A,$0 ' 5 MONITO LCDOUT $A,$A,$0,$4,$11,$E,$0,$0 ' 6 cara feliz http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
2/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
LCDOUT $A,$A,$0,$4,$11,$E,$6,$0 '7 cara lengua LCDOut $FE, 1 ' LIMPIA EL DISPLAY LCDOUT $FE,$84,"CARACTERES"; mensaje en la primera linea LCD LCDOUT $FE,$C0
;caracteres personalizados segunda linea LCD 2X16
; las siguientes lineas del programa sirven para visualizar en la segunda linea del LCD 2X 16 los caracteres especiales FOR M = 0 TO 4 LCDOUT M PAUSE 300 NEXT M PAUSE 1500 LCDOut $FE, 1 ' LIMPIA EL DISPLAY LCDOUT $FE,$81,"PERSONALIZADOS"
;mensaje
la primera linea LCD 2X16
LCDOUT $FE,64 'COMIENZA DEFINICION
LCDOUT $1F,$11,$A,$4,$A,$11,$1F,$0 ' 2 RELOJ ARENA LCDOUT $11,$1F,$1F,$15,$1F,$1B,$E,$0 ' 3 DIABLO LCDOUT $E,$1F,$15,$1F,$1F,$E,$E,$0 ' 4 CALAVERA LCDOUT $4,$2,$4,$0,$1F,$11,$E,$0 ' 5 TAZA LCDOUT $0,$E,$11,$1F,$4,$14,$8,$0 ' sombrilla ; las siguientes lineas del programa sirven para visualizar en la segunda linea del LCD 2X 16 los caracteres especiales LCDOUT $FE,$C0 FOR M = 0 TO 4 LCDOUT M PAUSE 300 NEXT M PAUSE 1500 LCDOUT $FE, 1 ' LIMPIA EL DISPLAY GOTO RUTINA http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
3/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
Por ultimo anexo simulacion en proteus 7.4 , codigo fuente, .hex .la carpeta esta en formato comprimido Archivos Adjuntos
Que tal siguiendo con los proyectos de lcd un frecuenciometro con el pic 16f84A , ldc 2x16 y un generador de señales cuadradas ubicado por el puertoA2, en donde se capta los pulsos y se visualizan el LCD; con alarmas de activacion condicionales ubicadas en el puert A 0,1 respectivamente, sin mas el codigo fuente:
Código: @ device xt_osc ; oscilador externo XT
define osc 4 ; especifica que se va a utilizar uno de 4 Mhz ' DEFINICIÓN DE REGISTROS PARA EL LCD Define LCD_DREG PORTB 'Utilizar 4 bits del puerto B para tx de datos Define LCD_DBIT 0
'Desde el Bit B.4 al Bit B.7
Define LCD_RSREG PORTB'Selección del puerto del registro Define LCD_RSBIT 4
'En el bit B.1
Define LCD_EREG PORTB 'Utilizar el enable en el puerto B Define LCD_EBIT 5
'En el bit B.2
' Establecer el puerto B como salida TRISB=0 ; configuracionde pines del PIc 16f84A Alarma0 var porta.0 Alarma1 var porta.1 ; definicion de variables pulsos var word
; variable con capacidad de 65535
loop: count porta.2,1000,pulsos lcdout $fe,1
; CONTAR LOS PULSOS POR EL PUERTO A2
;LIMPIA lcd
lcdout $fe,$82,"fecuencia:" lcdout $fe,$c5,dec pulsos,"hz"
; ENVIAR MENSAJE AL LCD ; MOSTRAR PULSOS EN LCD SEGUNDA LINEA
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
4/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
;condicionales para alarmas if pulsos>750 then EMER1 if pulsos<320 then EMER2
;SI PULSOS EXCEDE 750 IR A EMER1 ; SI PULSOS DECIENDE
320 IR A EMER2
LOW ALARMA0:LOW ALARMA1 GOTO LOOP EMER1:
; RUTINA EMER1
HIGH ALARMA0 LOW ALARMA1 GOTO LOOP EMER2: ;RUNITA EMER2 LOW ALARMA0 HIGH ALARMA1 GOTO LOOP Archivos Adjuntos
frecuencimetro_135.zip (31,9 KB (Kilobytes), 895 visitas)
ldc_frecuen_127.zip (30,7 KB (Kilobytes), 812 visitas) Robot seguidor de luz con pbp Bueno amigos quiero compartir con ustedes el desarrollo de un robot seguidor de luz bajo la programacion en pic basic pro,utilice un pic 16f84a, driver l293b,fotoceldas y como estructura del robot un carro viejo de rf que tenia,adaptando en un pequeño protoboard el circuto para controlar los dos motores que componen el carrito. No coloque los testigos (leds) por el espacio en la proto para controlar el motor 1 utilice el comando PWM. Este es dodigo fuente: Código:
@ device xt_osc ; oscilador externo XT define osc 4 ; especifica que se va a utilizar uno de 4 Mhz
;ROBOT SEGUIDOR DE LUZ b0 var byte
;VARIABLE PARA GUARDAR EL VALOR DE LDR1
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
5/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
b1 var byte
;VARIABLE PARA GUARDAR VALOR DE LDR2
b2 var byte
;VARIABLE DE COMPARACION DE LDR1 Y LDR2
p2 var portb.0
;SALIDA MOTOR1
p3 var portb.1
;SALIDA MOTOR2
p4 var portb.2
;SALIA MOTOR2
EN1 var portb.3
; habilitador inversor giro MOTOR 2
EN2 VAR PORTB.4
;HABILITADOR MOTOR UNO
LED1 VAR PORTA.0 LED2 VAR PORTA.1 LED3 VAR PORTA.2 start:
;INICIO
pot portb.5,255,b0
;LEE LDR1 Y GUARDA VALOR EN BO
pot portb.6,255,b1
;LEE LDR2 Y GUARDA VALOR EN B1
If b0 = b1 then straight
;SI BO =B1 ENTONCER IR
if b0 > b1 then left
;SI BO ES MAYOR A B1 IR A IZQUIERDA
if b1 > b0 then right
;SI B1 ES MAYOR QUE BO ENTONCES IR A DERECHA
straight:
;RUTINA COMIENZO
ALA RUTINA STRAIGHT
pwm EN2,125,30:HIGH p2 LOW EN1: low p3:low p4
; HABILITA MOTOR 1
high led1 goto start
;IR A INICIO
left:
;RUTINA IZQUIERDA
b2 = b0‐b1
;RESTE EL VALOR DE BOY B1 Y GUARDELO EN LA ;VARIABLE B2
if b2 > 15 then left1
;SIB2 ES MAYOR QUE 15 ENTONCES IR A RUTINA ;IZQUIERDA 1
goto straight left1:
;IR A INICIO ;RUTINA IZQUIERDA 1
pwm EN2,125,30:HIGH p2 HIGH EN1: LOW P3:high p4 ;ACTIVA SALIDA P3 Y DESACTIVA SALIDA P4 HIGH LED2 goto start
;ENCIENDE TESTIGO ;IR A INICIO
right:
;RUTINA DERECHA
b2 = b1‐b0
;RESTE EL VALOR DE B1 CON B0 Y GUARDE EL ;VALOR EN B2
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
6/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
if b2 > 15 then right1
;SI B2 ES MAYOR QUE 15 ENTONCES IR A RUTINA ;DERECHA 1
goto straight
;IR A INICIO
right1:
;RUTINA DERECHA 1
pwm EN2,125,30:high p2 HIGH EN1:HIGH P3:low p4 ;ACTIVA SALIDA P4 Y DESACTIVA SALIDA P3 HIGH LED3
;ENCIENDE TESTIGO
goto start
;IR A INICIO
end
;FIN DE PROGRAMA
Archivos Adjuntos
Amigos vamos con un proyecto interesante control de acceso son clave utilizando un teclado matrixal de 4x4,pic 16f84a y testigos de operatividad, al ingresar los cuatro digitos correctamente se energiza un rele durante tres segundos ubicado en el pin door del pic ,si la clave es incorrecta se emite tres activaciones en bip y led ubicados en el puerto A0 y A1 respectivamente, la activacion de cada tecla va acompañado de la visualizacion del led ubicado en pin 18 del pic 16f84a. codigo fuente en pic basic pro Código:
@ device xt_osc ; oscilador externo XT define osc 4 ; especifica que se va a utilizar uno de 4 Mhz ;creacion de variables tecla var byte
;donde se guarada tecla pulsada
repit var byte
;para hacer repeticiones
;configuracion de pines del pic 16f84a bip var porta.0 led var porta.1 door var porta.2 a var portb.0
;donde se conecta la chicharra ;donde se conecta el led ;donde se conecta rele para la puerta ;pines de las filas
b var portb.1 c var portb.2 d var portb.3 http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
7/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
uno var portb.4 dos var portb.5 tres var portb.6 cuatro var portb.7 iniciando:
;incica funcionamiento del sistema
high led:high bip pause 1000 low led:low bip goto teclauno
; comparar clave
barrido: low a
;sensar fila a
if uno=0 then tecla=1:return if dos=0 then tecla=2:return if tres=0 then tecla=3:return if cuatro=0 then tecla=10:return high a low b if uno=0 then tecla=4:return if dos=0 then tecla=5:return if tres=0 then tecla=6:return if cuatro=0 then tecla=11:return high b low c if uno=0 then tecla=7:return if dos =0 then tecla=8:return if tres=0 then tecla=9:return if cuatro=0 then tecla=12:return high c low d if uno=0 then tecla=14:return if dos=0 then tecla=0:return if tres=0 then tecla=15:return if cuatro=0 then tecla=13:return high d pause 10 goto barrido ;rutina antirrebote de teclas http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
8/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
ptecla: high led:low bip pause 100 low led :low bip espacio: if uno=0 then espacio if dos=0 then espacio if tres=0 then espacio if cuatro=0 then espacio pause 25 return ;rutina para comparar claves teclauno: gosub barrido gosub ptecla if tecla=1then teclados goto falso teclados: gosub barrido:gosub ptecla if tecla=2 then teclatres goto falso1 teclatres: gosub barrido:gosub ptecla if tecla=3 then teclacuatro goto falso2 teclacuatro gosub barrido:gosub ptecla if tecla=4 then open goto falso3 open: for repit=1 to 2 pause 100 high led:high bip pause 100 low led:low bip next http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
9/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
high door pause 3000 low door goto teclauno ;rutina teclas erroneas falso: gosub barrido:gosub ptecla falso1: gosub barrido:gosub ptecla falso2: gosub barrido:gosub ptecla falso3: for repit=1 to 3 pause 100 high led:high bip pause 100 low led: low bip next goto teclauno end Archivos Adjuntos
bien amigo patico, vayamos por partes, primero el 16f877a no tiene oscilador interno, pero es mucho mas completo que el 16f628 en otras areas, mas memoria eeprom, 33 in/out, etc, debes conserguirte un cristal de 4 mhz que es lo mas comun, y dos condensadores de 22 picofaradios, con esto haces el oscilador, es indispensable contar con el datasheet u hoja de datos del mencionado pic, de otra forma no sabes con que estas trabajando, debes si o si conocer la disposicion de las patas del pic... ahora para el lcd debes tener en cuenta un par de cosas, un lcd por ejemplo de 2x16 (muy comun) trabajan de dos modos con 8 bits o con 4 bits, que es esto? la cantidad de patas que vas a conectar al pic, si es de 4 bits conectas 4 patas del pic al lcd, si es de 8 conectas 8 patas del lcd al pic, que se gana con esto, una mayor velocidad de transferencia de datos del pic al lcd...ahora bien ademas de las 4 u 8 patas debes conectar tambien otras dos que son "E" (enable), el pic lo pone a 1 para que el lcd se active y luego tienes otra que es "RS" (register select) que sirve para que el lcd sepa si recibe un comando, por ejepmlo: (limpiar la pantalla) o si recibe un caracter, por ahora debes poder armar el soft, y debes ser paciente para poder entender como funciona el sistema, es maravilloso pero no debes desesperarte, busca información en google que hay mucha...saludos te adjunto un esquema de http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
10/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
conexion del lcd, saludos Imágenes Adjuntas
Temas similares
Bien vamos con proyecto interesante aqui os dejo el codigo fuente comentado: Código:
;Programa en donde se mueve un servo motor de tres lineas con el pic 16f877A, ;se utiliza LCD 2X16 que muestra la posicion de giro dada por tres botones ;conectados al puerto B, los cuales dan las posiciones: giro derecha ,centro y ;giro izquierda referenciado de 0 a 1000, donde posicion de centro es 500. ; deficion de Oscilador Externo @ device xt_osc ; oscilador externo XT define osc 4 ; especifica que se va a utilizar uno de 4 Mhz ' Libreria para la operacion del programa Define
LOADER_USED
1
; Definicion de conexiónes del LCD Define
LCD_DREG
PORTD
Define
LCD_DBIT
4
Define
LCD_RSREG
PORTA
Define
LCD_RSBIT
0
Define
LCD_EREG
PORTA
Define
LCD_EBIT
1
pos
var
word
servo1
var
PORTC.1 'pin donde se conecta el servo
' Posicion del servo
ADCON1 = 7 Low PORTA.2
' PORTA y PORTE digitales ' LCD R/W low = escritura
Pause 100
' retardo para inicializar el LCD
OPTION_REG = $7f Low servo1
;portc.1 como salida para controlar el servo
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
11/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
Gosub center
'ir a centro
' progrma principal LOOP: PORTB = 0
' PORTB lineas a cero logico para leer botones
TRISB = $fe
'Rutinas para el chequeo de botones y posiciones del servo If PORTB.4 = 0 Then Gosub left Endif If PORTB.5 = 0 Then Gosub center Endif If PORTB.6 = 0 Then Gosub right Endif ;Rutina para mostrar mensaje y valor decimal de la posicion del servo
Lcdout $fe,1 Lcdout $fe,2,"Position = ", #pos servo1 = 1
' iniciar pulso hacia el servo
Pauseus 1000 + pos servo1 = 0
' termine pulso
Pause 16
' retardo
Goto LOOP
' Crea un bucle cerrado
' giro hacia la izquierda left:
If pos < 1000 Then pos = pos + 1 Endif Return
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
12/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
' giro hacia la derecha right:
If pos != 0 Then pos = pos ‐ 1 Endif Return
' posicion de centro center: pos = 500 Return End Archivos Adjuntos
Visualizacion de sensor temperatura ds18s20 en lcd con pic 16f84A Que tal para mi amigo electroandres el hecho de recomendarte un sensor digital para tu proyecto es que el pic que vas a utilizar no tiene conversores A/D como el pic 16f877A por ello debes selecionar uno que pueda leer tu pic y adjuntar la medida obtenida en 8 byte para que posteriormente sea enviado el valor en decimal al lcd por comunicacion de 4 bits revisa este codigo espero sea de utilidad Código:
'DEFINICION OSCILADOR EXTERNO @ device xt_osc ; oscilador externo XT define osc 4 ; especifica que se va a utilizar uno de 4 Mhz
' DEFINICION DE LIBRERIA PARA COMUNICACION Define
LOADER_USED
1
'DEFINICION DE PINES PARA CONECTAR EL LCD
Define Define
LCD_DREG LCD_DBIT
PORTB 0
Define
LCD_RSREG
PORTB
Define
LCD_RSBIT
4
Define
LCD_EREG
PORTB
Define
LCD_EBIT
5
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
13/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
' CREACION DE VARIABLES command var
byte
' VARIABLE PARA COMANDO
i
var
byte
' VARIABLE PARA CONTEO
temp
var
word
' PARA GUARDAR VALOR TEMP
' DETERMINACION DE PIN SENSOR DS 18S20 CONECTADO AL PIC 16F84a DQ
var
PORTB.7
' PIN DEL SENSOR DS18S20 CONECTADO A PORTB.7
DQ_DIR
var
TRISB.7
' DEL PIC 16F84a
Low PORTB.6
' LCD R/W A CERO LOGIGO POR EL PIC 16F84a
Pause 100
' 100 MS PARA INICIALIZAR LCD
Lcdout $fe, 1 Lcdout $fe,$80, "Temp:"
'MOSTRAR MENSAJE
'PROGRAMA PARA LECTURA DE TEMPERATURA EN EL LCD INICIO: Gosub init18S20
' IR A RUTINA DE INICIALIZACION DEL LCD
command = $cc Gosub write18S20 command = $44
' EMPIEZE CONVERCION DE TEMPERATURA
Gosub write18S20 Pause 2000
' ESPERO 2S EG HASTA QUE FINALICE LA CONVERSION
Gosub init18S20 command = $cc Gosub write18S20 command = $be
' LEER TEMPERATURA
Gosub write18S20 Gosub read18S20 http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
14/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
'RUTINA PARA MOSTRAR VALOR DE TEMPERATURA EN EL LCD Lcdout $fe,$86, dec (temp >> 1),".",dec (temp.0 * 5), "oC" Goto INICIO
' INICIALIZA
' CREA UN BUCLE CERRADO
DS18S20 Y CHEQUEA PRESENCIA
init18S20: Low DQ Pauseus 500 DQ_DIR = 1 Pauseus 100 If DQ = 1 Then Lcdout $fe, 1 Lcdout $fe,$83,"SENSOR DS18S20" Lcdout $fe,$C2,"NO CONECTADO" Pause 500 Goto INICIO Endif Pauseus 400 Return
' RUTINA PARA COMUNICACION DEL PIC CON SENSOR DS1820 A 8 BYTE write18S20: For i = 1 to 8 If command.0 = 0 Then Gosub write0 Else Gosub write1 Endif command = command >> 1 Next i Return ' RUTINA PARA DESHABILITAR DS18S20 A TRAVES DE UN BIT http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
15/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
write0: Low DQ Pauseus 60 DQ_DIR = 1 Return ' RUTINA PARA HABILITAR DS18S20 A TRAVES DE UN BIT write1: Low DQ @
nop
' RETARDO DE 1us CON UN OSCILADOR EXTERNO DE 4MHz
DQ_DIR = 1 Pauseus 60 Return
' RUTINA PARA LEER DS18S20 read18S20: For i = 1 to 16 temp = temp >> 1 Gosub readbit Next i Return
' RUTINA PARA LEER BIT DS18S20 readbit: temp.15 = 1 Low DQ @
nop
' RETARDO DE 1us CON UN OSCILADOR EXTERNO DE 4MHz
DQ_DIR = 1 If DQ = 0 Then temp.15 = 0 Endif Pauseus 60 Return End Archivos Adjuntos
Temas similares http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
16/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
Archivos Adjuntos
Avances proyecto temperatura RSR 232 y labview Que amigos he simulado el proyecto en proteus 7.5 con excelentes resultados , corre muy bien y se logra mostrar la tempetura que sensa el LM 35 con buena precision al igual que los mensajes que he enviado a traves de la comunicacion RS 232, me recibe y recepciona datos, sin mas preambulos les anexo lo que llevo ahora me dedicare a que se muestre en la PC la temperatura por medio grafico utilizando LABVIEW, he conseguido buena información para ello. Archivos Adjuntos
Reloj En LcD con igualador y alarma... Hola! Encontré este foro muy interesante sobre microcontroladores PIC en Basic... Quisiera aportar con el proyecto que se solicitaba de reloj digital con LCD... En el archivo adjunto está la simulación y el programa... Solo falta la parte de la alarma [solo unas 5 ó 6 lineas de codigo más].... una breve explicación del funcionamiento: Al encender el circuito, se carga una hora/fecha al RTC (DS1307), que después puede ser configurada en cualquier monento con los pulsadores (MODO NORMAL). Para esto, har que mantener presionado el pulsador "SET" por un momento (ENTRAS AL MODO CONFIGURACION), y comenzará a parpadear en el display el campo a ser modificado: hora, pulsando otras vez, el cursor cambia a minutos, pulsando otra vez cambia a dia... Con los botones UP o DOWN_MODE, se cambia el valor del campo seleccionado. Ya cuando se modifican todos los campos, el Reloj sigue normalmente con el último puslo en SET. Para acceder al modo de la alarma, debes presionar DOWN_MODE en el MODO NORMAL, .... bueno, hasta aqui va el código. Como dije anteriormente, solo falta unas lineas (variables de almacenamiento de la hora de la alarma, configuración...)
Cualquier cosa, duda del codigo, posteala y veremos como solucionamos... Si encuentras algun bug tambien avisamelo, o si logras hacer el programa mas corto tambien! Adjunto un screencapt y el modelo con la simulación. Cabe destacar que la simulacion está en proteus 7.4sp3, con un PIC 16F877A, para migrar a 16F628/A o algun otro, deben revisar los pinouts, y la capacidad de memoria. Recomendaría usar un 628A...
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
17/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
En unos dias subo ya el proyecto completo... Imágenes Adjuntas
Que tal amigo lectroandres interprete mal su proyecto creo que no deseas utilizar el integrado DS 1370 por lo que te anexo un proyecto con alarmas un reloj de clases. El proyecto consiste en visualizar jornadas de estudio de 6:00 AM a 12:00 AM hora en que empieza y culmina la jornada mañana con sus respectivos mensajes visualizados en el LDC activandose una alarma durante tres segundos el mismo procedimiemto se repite para la jornada tarde. Al activar el boton comienzo se da inicio a la jornada mañana, se puede incrementar los minutos en el boton minus , los mensajes apareceran siempre que se ejecute el cambio de jornadas programas: 6:00 am ini. clases j.m 12:00 pm ter. calses j.m 12:300 pm ini. clases j.t 6:30 pm ter. clase j.t Lo habia reralizado para un evidencia de estudio te anexo todo lo necesario espero que esto sea lo que necesites o te ayude a realizarlo. Archivos Adjuntos
Para mi amigo cripty te anexo documento de utilizacion de los registros del pic 16f628A para la operacion del pwm por hardware sin la utilizacion del comando PWM en el entorno de microcode studio aqui esta el codigo Código:
; Programa PWM con Hardware con el pic 16f628A con un ciclo util del 50% ;y frecuencia de 38 KHZ aproximadamente @ device xt_osc ; oscilador externo XT define osc 4 ; especifica que se va a utilizar uno de 4 Mhz CMCON
= 7
' PUERTO A DIGIAL
VRCON
= 0
' A/D Voltage referencia deshabilitado
TRISB
= %11110000
' B.3=PWM,B.0,B.1,B.2 LEDs
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
18/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
PR2
= 25
' Seleecion PWM para aproximadamente 38KHz
CCPR1L
= 13
' PWM Duty‐Cycle a 50%
CCP1CON
= %00001100
' modo de seleccion = PWM
T2CON
= %00000100
' Timer2 ON + 1:1 prescaler
LOOP: high PortB.0 pause 50 low PortB.0 pause 50 high PortB.1 pause 50 low PortB.1 pause 50 high PortB.2 pause 50 low PortB.2 pause 50 goto LOOP Por ultimo es conveniente tener la hoja de caracteristicas del pic que se va ha utilizar y aprovechar mejor su memoria por lo que se conoce mejor la estructura interna del micro, en el caso de los micros que no poseen registro PWM es conveniente utilizar el comando PWM que nos facilita PBP para realizar la modulacion de ancho de pulso que necesitemos como en el caso del pic 16f84A por ejemplo: Código:
; Programa PWM con el pic 16f84A con un ciclo util del 50% @ device xt_osc ; oscilador externo XT define osc 4 ; especifica que se va a utilizar uno de 4 Mhz PWM portB.3,127,30 ; Sacar 30 pulsos PWM por el puerto b3 con un ciclo util del 50% Archivos Adjuntos
Temas similares
hola gracias por responder mira en un manual o algo asi de PBP mire que << es para desplazamientos izquierdo y >> para desplazamiento derecho eso no se la verdad para que sirve me podrias explicar y http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
19/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
eso de los decimales mas o menos me di cuenta pero como puedo hacer para que la los decimales aparezcan al mover mi potenciometro un poco aparezca 0.1 y a medida que vaya moviendo pueda verlo 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1....ahora tengo otra duda talvez bien torpe peron no entiendo por ejemplo tengo mi potenciometro que lo lee de 0 a 255 pero para mi conveniencia lo quiero transformar a otra escala es decir de 0 a 500 lo mas facil que se me ocurrio era (P1*500/255) p1 es mi variable pero al mirar en el LCD en 0 era 0 estaba bien en la mitad del potenciometro meda 256 pero sigo abanzando se baja a 4 y al final me da 255 y eso me tiene muy confundido...ahora tambien quiero restarle a mi variable p1-10 me comienza en 6225 o algo asi y al seguir avanzando sigue la escala no entiendo puedes darme una mano con eso por favor con lo de los decimales para que lo mires te adjunto la simulacion y el programa. Archivos Adjuntos
proyecto de lectura teclado 4X4 con letras con pic 16f877A que tal vamos con otro proyecto de teclado matrixal pero de visualizacion de letras (A;B;C;D;*;#) he aqui el codigo : Código:
; programa de visualizacion de teclado '
1 2 3 A
'
4 5 6 B
'
7 8 9 C
' * 0 # D ' con pic 16f877A y lcd 2x16 en donde muestra la tecla presionada en la pantalla ' del LCD utilizando operandos matematicos del PBP.
'Definir libreria Define
LOADER_USED
1
'definir oscilador externo @ device xt_osc define osc 4 ' Define LCD connections Define LCD_DREG PORTD Define
LCD_DBIT
4
Define
LCD_RSREG
PORTD
Define
LCD_RSBIT
3
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
20/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
Define
LCD_EREG
PORTD
Define
LCD_EBIT
2
' Definicion de variables col
Var
Byte
'
fila
Var
Byte
' filas
columnas
B
Var
Byte
' numero
A
Var
Byte
' tecla a visualizar
OPTION_REG.7 = 0
' Activa resistencias internas PORTB
ADCON1 = 7
' PORTA y PORTE digital
Low PORTD.1
' LCD R/W low (escritura)
Pause 100
' tiempo para inicializar el LCD
Lcdout $fe, 1, "PRESIONE TECLA"
' mensaje
inicio: Gosub leer Lookup A, ["0123456789*#ABCD"],B Lcdout $fe,1,B
' mostrar tecla primida
Goto inicio
' Subrutina para leer tecla pulsada leer: Pause 50
' esperer 50ms
leer0: PORTB = 0
' puerto B como salida
TRISB = $f0 If ((PORTB >> 4) != $f) Then leer0 Pause 50 leer1: For col = 0 To 3 PORTB = 0 TRISB = (dcd col) ^ $ff fila = PORTB >> 4
'leer filas
If fila != $f Then tecla http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
21/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
Next col Goto
leer1
tecla: B = (col * 4) + (ncd (fila ^ $f)) ‐ 1 ' transformadorrmacion de tecla activada ' 10 = * ' 11 = # ' 12 = A ' 13 = B ' 14 = C ' 15 = D Lookup B, [1,2,3,12,4,5,6,13,7,8,9,14,10,0,11,15],A Return
' retornar
End Como siempre dejo la simulacion en proteus , codigo fuente y esquematico "comentar es agradecer" Archivos Adjuntos
TCLEDO -LCD.zip (86,1 KB (Kilobytes), 809 visitas)
lcdtecla.zip (56,4 KB (Kilobytes), 724 visitas) Temas similares
Respuesta: Curso programacion de pic en bsic pro alli envio un esquema que podria ayudar, adicionando un optotriac sin cruce y tambien puede ser usar el optotriac con cruce por cero ueno los diodos deberan ser 1n4007 Imágenes Adjuntas
Respuesta: Curso programacion de pic en bsic pro si tienes micha razon pero imagina lo siguiente: mi sistema es trifasico y el cruce por cero es para evitar el arco en los contactores (que lo desgastan) pero teniendo el desfasaje en que momento cierro el contactor ya que al cerrar este se cierran los 3 contactos en una ; los triacs los puedo disparar alternadamente pero no al contactor.adjunto mi esquema para que me ayuden a resolverlo. Imágenes Adjuntas http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
22/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
Temas similares
Respuesta: Curso programacion de pic en bsic pro saludos mecatrodatos
he estado leyendo este post y veo que eres muy bueno con el pbasic. por eso, queria pedirte si puedes ayudarme a comprender como utilizar el serin y serout del pbasic. te explico un poco lo que quiero hacer. mi idea es implementar un control remoto basado en el pic16f84A pero la verdad que no entiendo muy bien como utilizar estas dos instrucciones
. una idea basica seria por ejemplo que si yo presiono un boton en el transmisor, en el receptor se encienda el led que corresponde al mismo. te paso un dibujo del circuito basico espero que se entienda
. solo necesito un par de lineas de codigo como para guiarme. un saludo y espero puedas ayudarme gracias
Imágenes Adjuntas
Temas similares
Respuesta: Curso programacion de pic en bsic pro claro... probalo vos mismo. aca te dejo la simulacion en proteus
Archivos Adjuntos
leds en paralelo !! Hola a todos !! soy nuevo en este foro
y tengo una pregunta sobre los led : Bueno estoy usando el pic 16F84A para hacer una secuencia de luces, y tengo una duda !! Use todo el puerto B para formar una secuencia de luces. Mi pregunta es: si no solo quisiera conectar un solo led http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
23/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
a cada salida, si quisiera conectar 20 leds en paralelo en cada salida del puerto B, entonces el problema radicaria en saber cuanta corriente proporciona cada salida del puerto B del pic!!! y creo que no va a ser la sufiente. Ahora como podria hacer para que cada led tenga la suficiente corriente que necesite para billar con toda su intencidad!???? Tendria que usar un transistor como amplificador de corriente o que es lo que deberia hacer ????? adjunto el diagrama del cto en proteus i el codigo en HEX, para cargar al pic!! Espero puedan ayudarme !! =D !! Gracias de antemano!!
Archivos Adjuntos
Temas similares
Respuesta: Curso programacion de pic en bsic pro listo perdona para ayudarte mejor visita primero el Entrenador de pic con pic basic pro que poste y el manual hay ejemplo y estan en español espero que esto te sirva de base no dudes en preguntar Archivos Adjuntos
pbpesp.pdf (646,9 KB (Kilobytes), 33 visitas)
entrenador para microcontrolador con PBP.zip (954,0 KB (Kilobytes), 34 visitas Andres111 manejo comunicacion serial entre PICS con los comandos serin y serout , vere como te puedo ayudar con la comunicacion SPI apartir de Hardware, por otro lado para los proyectos que vienen necesitamos saber un poco de Visual basic por lo que facilito un documento para empezar a conocer este programa y saberlo utilizar Archivos Adjuntos
Respuesta: Curso programacion de pic en bsic pro Para Ayudarte realizaremos un programa por hardware con los registros del puerto C del Pic 16f877a.
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
24/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
El puerto C consta de 8 líneas bidireccionales y tiene asociados los registros:
Registro PORTC (07H).-Es el registro de datos cuyos 8 bits RC7,RC6,...,RC0 reflejan
directamente el valor lógico de las líneas físicas del puerto C.
Registro TRISC(87H).-Registro de control de dirección de las líneas del puerto C. Poniendo un 1 en un bit del registro TRISC se configura la línea correspondiente como entrada y poniendo un 0 se configura la línea correspondiente como salida.
Las líneas del puerto C se encuentran multiplexadas con varias lineas controladas por otros periféricos, cuando se habilita la línea del periférico respectivo puede ser ignorada la configuración de TRISC, de hecho, algunos periféricos configuran la línea como salida mientras que otros la configuran como entrada.
Cada entrada del puerto C posee un buffer con disparador Schmitt. Además, cuando se selecciona la función I2C, las patitas PORTC<4,3> pueden ser configuradas con niveles I2C o con niveles SMBus mediante el bit CKE del registro SSPSTAT<6>.
En la siguiente tabla se resumen las líneas del puerto C y las de los periféricos que están multiplexadas con ellas. Nombre Función multiplexada RC0/T1OSO/T1CKI Salida oscilatoria del Timer1/reloj de entrada del Timer 1 RC1/T1OSI/CCP2 Entrada oscilatoria del Timer1/entrada de captura2 o salida de comparación2 o salida PWM2 RC2/CCP1 Entrada de captura1 o salida de comparación1 o salida PWM1 RC3/SCK/SCL Reloj para los modos de comunicación serie síncrona SPI e I 2C
RC4/SDI/SDA Dato de entrada (en modo SPI)/ Dato de entrada-salida (modo I
2 C)
RC5/SDO Dato de salida (en modo SPI) RC6/TX/CK Linea de transmisión asíncrona de la USART/reloj síncrono RC7/RX/DT Linea de recepción asíncrona de la USART/dato síncrono Tambien te adjunto documento donde explico el manejo de registros del pic 16ff877a para realizar el programa.
Que tal vamos a poner el siguiente codigo de comunicacion spi a traves de Hardware (manipulacion de http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
25/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
registros del puerto C) con dos pic 16f877A como proyecto. este el programa para el pic maestro: Código:
' Programa protocolo SPI entre dos Pic 16f877A usando Comunicación serial ' sincrónica por medio de hardware a través del puerto C. ' ' El pic 16f877a maestro muestra valor del estado de un potenciómetro conectado ' en RAO del pic 16f877a esclavo en una pantalla LCD a través de caracteres en ' string. 'DEFINICION OSCILADOR EXTERNO @ device xt_osc ; oscilador externo XT define osc 4 ; especifica que se va a utilizar uno de 4 Mhz 'Se definen registros del pic 16f877a maestro para conectar display DEFINE LCD_DREG PORTD DEFINE LCD_DBIT 4 DEFINE LCD_RSREG PORTE DEFINE LCD_RSBIT 0 DEFINE LCD_EREG PORTE DEFINE LCD_EBIT 1 SSPEN VAR SSPCON.5 'Habilita bit SSP CKP VAR SSPCON.4 'SELECCIONA POLARIDAD DE RELOJ SMP VAR SSPSTAT.7 'Seleccionar la muestra de datos de entrada de fase CKE VAR SSPSTAT.6 'Selecciona bit de reloj SSPIF VAR PIR1.3 'SPI indicador de interrupción i VAR BYTE 'contador del bucle a VAR BYTE[6] 'Con capacidad para 6 caracteres leídos de esclavo ADCON1 = 7 'Selección PORTA y PORTE como digital Low PORTE.2 'LCD R/W linea a cero lógico Pause 100 'espera paras inicializar el LCD TRISC = 0 'puerto c como salida SSPEN = 1 'pines activados SPI CKP = 0 'reloj en funcionamiento bajo CKE = 0 'transmitir a la transición inactivo a activo SSPIF = 0 'Buffer de estado completo http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
26/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
SMP = 0 'muestra en medio de los datos
mainloop: GoSub getdata 'iniciar la conversión de datos y recibir LCDOut $fe,1 'Indicar recibió de cadena en lcd LCDOut $fe,$80,"Conversor A/D " LCDOut $fe,$c0, STR a\5, DEC a[5] Pause 100 GoTo mainloop 'hacerlo de nuevo getdata: SSPBUF = "?" 'enviar? para iniciar la conversión GoSub letclear 'esperar dato para eliminar IF SSPBUF<>"!" Then getdata 'esperar para la respuesta (!) For i = 0 to 5 'bucle de 6 caracteres SSPBUF = 0 'escribir a SSPBUF para iniciar el reloj GoSub letclear 'esperar para la recepción a[i] = SSPBUF 'recibió en carácter de matriz Next i 'recibe el siguiente carácter Return letclear: IF SSPIF = 0 Then letclear 'esperar a SPI indicador de interrupción PauseUs 25 ' pausa de 25uS SSPIF = 0 'resetiar flag Return Este es le programa para el pic esclavo Código:
'DEFINICIÓN OSCILADOR EXTERNO
@ device xt_osc ; oscilador externo XT define osc 4 ; especifica que se va a utilizar uno de 4 Mhz 'Asignar memoria RAM dataout VAR BYTE[8] 'Salida de datos serie SSPEN VAR SSPCON.5 'Habilitar bit SSP http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
27/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
CKP VAR SSPCON.4 'selección de polaridad SMP VAR SSPSTAT.7 'Datos de entrada de fase CKE VAR SSPSTAT.6 'Selecciona bit de reloj SSPIF VAR PIR1.3 'indicador de interrupción ‐ último bit seleccionado i VAR BYTE 'contador del bucle a VAR BYTE[6] 'Con capacidad para 6 caracteres de datos TRISC = %11011111 'configuración trisc SSPCON = %00000101 'configurar SPI esclavo, no SS CKP = 0 'reloj al ralentí bajo CKE = 0 'transmitir a la transición inactivo a activo SSPIF = 0 'limpiar interrupción SPI SMP = 0 'muestra en medio de los datos ADCON1 = $0e 'PORTA.0 análogo, el reto ' PORTA y PORTE como pines digitales dataout[0] = "P" 'La salida de datos predefinidos a "POT =" dataout[1] = "O" dataout[2] = "T" dataout[3] = "=" dataout[4] = " " mainloop: SSPEN = 0 'desactivar / activar la SSP para restablecer el puerto SSPEN = 1 GoSub letclear ''esperar a byte recibido IF (SSPBUF <> "?") Then mainloop 'esperar? para iniciar la conversión ADCIN 0, dataout[5] 'Leer canal ADC 0, la 6 ª posición de la cadena de caracteres GoSub senddata 'senviar"! " y la cadena de datos GoTo mainloop 'volver a realizar senddata: GoSub letclear 'esperar SSPBUF = "!" 'Enviar respuesta For i = 0 to 5 'bucle GoSub letclear ' SSPBUF = dataout[i] 'enviar variable de matriz Next i 'próxima localización
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
28/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
Return letclear: IF SSPIF = 0 Then letclear 'esperar a indicador de interrupción SSPIF = 0 'resetiar bandera Return por ultimo dejo simulación en proteus 7.6 , programa en pic basic pro y esquemático Archivos Adjuntos
Comunicación SPI PIC 16F877A.pdf (307,0 KB (Kilobytes), 494 visitas)
spi.zip (75,8 KB (Kilobytes), 461 visitas) Respuesta: Curso programacion de pic en bsic pro hola chicos feliz 2010!!! les cuento que estoy tratando de hacer una especie de servomotor con un pic 16f84 y un potenciometro como sensor de posision. el funcionamiento es muy simple: se trata de comparar la variable de con la variable de po t y en funcion de la diferencia o igualdad de ambos valores,
pulsin
( < > = ) obtener tres
posibles estados en dos salidas para controlar el driver del motor. segun mi poco conocimiento en pbasic me parece que el programa que escribi deberia funcionar sin problemas, pero aqui es donde se complica. si pulsin es menor que pot, anda bien, si pulsin es mayor que pot anda bien. pero si pulsin es igual a pot las dos salidas de control empiezan a oscilar entre igual o menor y no logro que este estable ni en proteus ni en la practica real. solo me preguntaba si ustedes podrian darme una manito ya que me arde la cabeza pensando en que estoy haciendo mal
aca adjunto un zip con el proyecto para ver que opinan ustedes... agradecere cualquier tipo de consejo. saludosss y feliz 2010. Archivos Adjuntos
Temas similares
Respuesta: Curso programacion de pic en bsic pro Buenas a todos, Primero felicitar a mi compatriota Mecatrodatos por este tutorial,
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
29/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
que te lleva directo al grano a diferencia de muchos otros que simplemente te sacan canas :enfadado: Amigo Meca antes habia hecho pruebillas con leds y todo bien pero llegaron las fiestas navideñas, la construccion de la casa, y mi hija....eh?. Bueno has manejado varios temas importantes pero y los 7 segmentos?, tenemos muy poca por no decir nada sobre manejar estos dispocitivos con el pic basic pro. Tengo un proyectos en mente y aprovechando este post podemos realizarlo en conjunto y que quede la información aqui en el foro ademas del avalioso aprendizaje que dejaría en muchos foristas. Se trata de un reloj con 7 segmentos, con pic16f628a un nuevo pic relacionado...eh, que lea los datos del bus i2c del ds1307,pues, siguiendo la relacion de distrubucion de energia de mi pueblo, por cada 2 dias de luz electrica 3 horas no y hasta si puede cerrar la relacion a diario, en fin lo que no se querria es perder la hora, y definitivamente una bateria back up no daria chicle. y por ultimo manejaria una carga "x", es decir un relé, con un ajuste de on y off, este ciclo deberia ser diario, en mi caso para manejar la nevera por las noches...pero puede ser usado por ejemplo para sistemas de riego, iluminacion perimetral etc.
dejo la semilla...y por supeusto el plano esquematico de lo que sería tentativamente el circuito y por supuesto como me gustaría que quedara.
claro...podriamos ir manejando el tema de los siete segmentos primero de modo de ir avanzando apropiadamente Saludos y exitos a todos, cheyo28
Imágenes Adjuntas
pic_reloj2.PNG (101,6 KB (Kilobytes), 600 visitas)
microcontroller-based-digital-blue-clock.jpg (82,5 KB (Kilobytes), 396 visitas) Respuesta: Curso http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
30/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
programacion de pic en bsic pro Amigo atricio te dejo programa y simulacion para control de posicionamiento sin margen de error, simulacion en proteus 7.6, codigo fuente , .hex y esquematico para ayuda en tu proyecto. solamente aconcicionas el codigo a tus necesidades. Que tal amigo Cheyo interesante tu propuesta pero empezamos con utilizacion de multiplexado de display para realizar el cogido ? o vamos de una con el proyecto ... Archivos Adjuntos
programacion de pic en bsic pro_reloj rtc 7 segmentos buenas, Amigo Meca, creo que debemos iniciar con las caracteristicas del pic16f628a, actualmente leo el libro de porgrmacion en basic, lo recomeindo (y lo encuentran en google)...seria bueno contrastarlo con el modo de programacion de tu post. dejo est...me parece muy importante
-oscilador interno RC de 4Mhz +/- 1% -mclr programable -mayor capacidad de corriente, sus puerto A y B entregan un total de 200mA cada uno, es decir 25mA cada pin. lo mismo para el modo sumidero. Gracias a un forista Lucas22, me ayodo a seleccionar los puertos adecuados para hacer este proyectos y aprendí de él muchas cosas importantes. él maneja el basic tambien...seria bueno que hiciera parte de este post. Amigo meca, no estoy muy avansado en esto del PBP, espero me disculpe mis horrores de programacion y mis dudas...de los errores se aprende. 1-Definamos primero si las puertos estan bien asignados acoplandose al circuito 2-Este pic no usa oscilador externo, en Basic, ¿el no comandarle el oscilador externo el toma por defecto que vamos a usar oscilador interno del pic?. fuera del proyecto: aclarame esta rutina que usaste en el reloj con lcd y ds1307...para asignar los meses y dias en el lcd
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
31/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
Código:
'CPNFIGURACION MESES,DIAS Data @0,74,97,110,70,101,98,77,97,114,65,112,114 ' Jan Feb Mar Apr Data 77,97,121,74,117,110,74,117,108,65,117,103 ' May Jun Jul Aug Data 83,101,112,79,99,116,78,111,118,68,101,99 ' Sep Oct Nov Dec Data 84,117,101,87,101,100,84,104,117,70,114,105 ' Tue Wed Thu Fri Data 83,97,116,83,117,110,77,111,110 ' Sat Sun Mon noté que esos numeros corresponden a una letra...y hasta si esta en mayusculas...como detrminas el numero?...y ese @0 que asigna? que hace el DIM en basic? cuando llegue la rutina de los multiplexados podemos primero hacer un contador con la misma caracteristica y así otros ejemplos para entender las rutinas
Saludos y exitos....por la tarde voy mostrando lo que seria la rutina...eh. Cheyo28
Imágenes Adjuntas
pines 16f528a.PNG (337,8 KB (Kilobytes), 215 visitas)
contador.PNG (238,8 KB (Kilobytes), 289 visitas) Amigo Cheyo realiza las siguientes configuracioens a tu programa: @ DEVICE pic16F628A, INTRC_OSC_NOCLKOUT ' Opción del Osc Interno @ DEVICE pic16F628A, WDT_ON ' Watchdog Timer ON @ DEVICE pic16F628A, PWRT_ON ' Power-On Timer @ DEVICE pic16F628A, BOD_ON @ DEVICE pic16F628A, MCLR_OFF ' Master Clear Opción interno @ DEVICE pic16F628A, LVP_OFF ' Bajo voltaje de programación http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
32/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
@ DEVICE pic16F628A, CPD_OFF ' Protección del código de memoria OFF @ DEVICE pic16F628A, PROTECT_OFF' protección de código OFF led var portb.0 ;nombre del pin 6 inicio: ;nombre de subrutina de inicio HIGH led ;enciende el led que esta conectado en el pin6 pause 1000 ;Espera un segundo low led ;apaga el led pause 1000 ;espera un segundo goto inicio ;continua el programa para siempre end ;fin del programa Como te comentaba lo mismo ocurre con el Asm se debe incluir unas lieas para configurar el oscilador con el cual va ha trabajar el PIC ya que el progrmador que poseee no tiene la opcion de configurarlo como el Epiwin 800 te anexo programa en pic basic , simulacion y .hex Archivos Adjuntos
Temas similares
Respuesta: Curso programacion de pic en bsic pro bien dejame ver realizare uno multiplexado en estos dias subo el codigo y el programa suerte amigo con tu aprendizaje En la imagen que te anexo asi quedaria el circuito pero tendrias que cambiar de pic a 16f877a si le conectamos los botones de configuracion o realizarlo con el pic 16f628A pero solamenta con los botones de configuracion de horas y minutos ya que se nos va de pines. o podriamos utilizar el circuito que posteaste pero el multiplexado no lo realizaria el pic sino el integrado conectado a los display estoy presto a tus comentarios Archivos Adjuntos
RELOJ.pdf (143,6 KB (Kilobytes), 548 visitas)
RELOJ1.pdf (133,9 KB (Kilobytes), 418 visitas) Temas similares
Respuesta: Reloj digital (PIC-Decodificadores Parte 1) http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
33/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
BIen para no olvidar el tema y proyecto de nuestro amigo Cheyo la primera parte para el desarrollo del REloj digital con se explica el multiplexado y coneccion de display al PIC 16f628A como progrmas en Basic para activar los pines de I/O del PIC. Archivos Adjuntos
Respuesta: Curso programacion de pic en bsic pro hola chicos. yo por aqui de nuevo. bueno, primero le queria dar las gracias a mecatrodatos por ayudarme con lo del servo casero pero, no pude hacer que funcione... tal ves sea que no se como adaptar el programa a mi circuito... en fin... gracias de todas formas en este caso, les queria dejar un control remoto serie proporcional de pic a pic que diseñe. es de un solo canal pero con algunas modificaciones al programa se pueden lograr varios canales. lo que tiene de bueno este circuito, es que a diferencia del que postie anteriormente, cuando el receptor deja de recibir señal, los servos de sus salidas vuelven a cero. espero les sea de utilidad. saludosss. Archivos Adjuntos
Temas similares
Temas similares
Respuesta: Curso programacion de pic en bsic pro Para el tema de humedad tienes la opcion de un ci que hace esta lectura y que lo puedes conectar facilmente al pic,para la web es mas simple hace un tempo atras realise algo parecido.lo que hacia era montar un servidor (apache) este ya viene configurado con php en el appserver es cosa instalar y ya tenes tu servidor corriendo para la web dinamica utilse swish que es parecido a macromedia flash pero muy simple. En resumen con visual basic leia los datos del pic guarda esta info en archivo de texto cada cierto tiempo y ala ves un scriot en php lei este mismo archivo y desplegaba la info en la web echa en flash ,asi de facil y bonito voy a buscar los archivos para k los veass eso y saludosss.... Archivos Adjuntos
humedad.pdf (331,0 KB (Kilobytes), 299 visitas)
web control.rar (2,4 KB (Kilobytes), 270 visitas) Respuesta: Curso programacion de pic en bsic pro http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
34/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
Hola fernando, después de muchas horas investigando (y de poner preguntas en todos los foros que conozco) he dado con la que creo que es la respuesta. Hay que usar el ADCON1 de la siguiente manera. Pon 1000, en el adresh, (por lo del ADFM) y los 4 bits siguientes dependen de las entradas analógicas que vayas a usar. En la tabla que adjunto te salen los adresl.
Yo todabía no lo he podido probar porque estoy esperando a que me lleguen 2 16f877, en cuanto los tenga en mi poder, me lío con ello.
Ya me dirás si funciona. Saludos! Imágenes Adjuntas
Temas similares
Respuesta: Curso programacion de pic en bsic pro La funcion de autocalibracion de los potes es asi... despues usas la variable "escala". Imágenes Adjuntas
Respuesta: Curso programacion de pic en bsic pro primero es obligatorio el uso de servos, puedes usar servos trucados es una alternativa mira he intentado eso en microcode pero no logre exito depende del micro que vayas a usar puede que te ayude este documento te da una idea bastante buena de lo que se vaya a hacer pudes usar un L293D para activar los motores y atravez de un micro receptor activar las salidas necesarias para un L293D y hacer que vaya adelante atras izquierda derecha yo lo logre en Proton pero talvez tu puedas hacerlo asi porque aqui en mi pais no se puede encontrar con facilidad el 16F84A es muy caro aqui Archivos Adjuntos
Respuesta: Curso programacion de pic en bsic pro hola amigos, estoy usando un pic16f88, y me ha sido imposible utilizar el conversor A/D, simulo en http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
35/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
proteus y no me funciona les adjunto los archivos para ver si alguien me puede ayudar, la idea es que el led rojo encienda al comenzar el programa, el azul cuando la luz es baja y el verde cuando es alta. saludos!!
Código:
define osc 20 DEFINE ADC_BITS 8 DEFINE ADC_CLOCK 3
' USE A/D INTERNAL RC CLOCK
DEFINE ADC_SAMPLEUS 50 'VARIABLES RES VAR WORD
'SET SAMPLING TIME IN uS
'A/D CONVERTER RESULT
VOLTS1 VAR WORD
'FIRST PART OF RESULT IN mV
VOLTS2 VAR WORD
'SECOND PART OF RESULT IN mV
'CONSTANTS CONV1 CON 19 '5000/256=19.53, THIS IS THE DECIMAL PART CONV2 CON 53
'THIS IS THE FRACTIONAL PART
TRISA=1
'RA0 (AN0) IS INPUT
TRISB=0
'PORTB IS OUTPUT
'INIATIALIZE THE A/D CONVERTER ADCON1=0
'MAKE AN0 TO AN4 AS ANALOG INPUTS, MAKE REFERENCE VOLTAGE=VDD
ADCON0=%11000001
'A/D CLOCK IS INTERNAL RC, SELECT CHANNEL AN0, TURN ON A/D
CONVERTER HIGH PORTB.2 PAUSE 3000 AGAIN: 'START A/D CONVERSION
ADCIN 0,RES VOLTS1=RES*CONV1
'READ CHANNEL 0 DATA 'MULTIPLY BY 19
VOLTS2=RES*CONV2
'MULTIPLY 53
VOLTS2=VOLTS2/100 VOLTS1=VOLTS1+VOLTS2
'RESULT IN mV
IF VOLTS1 < 2500 THEN http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
36/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
HIGH PORTB.0 ELSE HIGH PORTB.1 ENDIF PAUSE 2000 GOTO AGAIN END Aqui adjunto el archivo para el proteus.
GRACIAS! Archivos Adjuntos
Temas similares
Curso programacion de pic en bsic pro PROYECTOS CON MOTORES comparto una serie de programas para manejos de motores, totalmente comentados con su respectiva simulacion en proteus como codigo fuente con el pic 16f88 en el cual algunos tienen dudas sobre su utilizacion. '---------------Titulo -------------'******************* ****************************** *************** '* Name : Proyecto con motores ......servo1.pbp * '* Author : MECATRODATOS * '* Date : 13/06/2010 * '******************* ****************************** *************** '--------Descrip cion del programa-------'Programa básico servo con el formato para el control de 'Pulsos del servo con PicBasic Pro comando PULSOUT. 'Servo ciclos entre la izquierda y 'Las posiciones de las agujas del reloj. '------------Comentario-------------'CON EL PIC16F88, asegúrese de tener alimentacion por separado 'SUMINISTROS PARA el PIC Y el SERVO. Usar 9V de 'La batería y dos reguladores de voltaje 78L05. 'También, inicializar el estado de PORTB, (PORTB = 0), lo más bajo 'Ya que establecerá la polaridad de la declaración PULSOUT . http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
37/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
'Servos "podrá ser modificado o hackeado para permitir 'la rotación continua y puedan ser utilizados 'Como motores de pequeños robots. El libro 'Amphibionics por Karl Williams da un 'En el tratamiento a fondo sobre cómo modificar los servos. '----- Comandos PicBasic Pro -------'PULSOUT pin, período 'Este comando envía un pulso a la clavija para el período definido. ' 'Por ejemplo: ' 'PULSOUT 0.200 Envía un pulso a cabo en RB0 pines para 2,0 ms. 'El período, (200), se multiplica por el 'Incremento para un oscilador de 4 MHz (10 us) 'Para obtener un pulso de tiempo de espera de 2,0 ms. ' 'Mira a tu alrededor en la página 121 PicBasic Pro Manual del compilador ' 'Otro comando PBP que podrá ser sustituido por PULSOUT'Es PAUSEUS. '---------PIC Connecciones---------' PIC16F88 Pin Wiring ' --------- ---------' RB0 Servo Control Wire ' Vdd +5 V ' Vss Ground ' MCLR 4.7K Resistor to +5 V '------------Variables------------i VAR BYTE 'BYTE para la variable contador, i '----------Initialization---------PORTB = %00000000 'Eqivalent a: PORTB = 0 'Establece todos los pines PORTB a BAJO (0 voltios) 'Asegúrese de incluir este 'Inicialización que establece la 'Correcta polaridad de los pulsos en el comando 'PULSOUT . 'Para establecer un solo pin RB0 como, a http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
38/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
'LOW, introduzca PORTB.0 = 0. ANSEL = 0 'Configure todos los pines a la digital 'Operación ya que no utiliza ADC '(Convertidor analógico a digital) OSCCON = $60 'Establece el oscilador interno en el '16F88 a 4 MHz '------------ -Codigo Principal-----------loop: For i = 1 TO 40 ' posición:Hacia la izquierda ' Enviar la señal 40 veces. Para cambiar el sentido ' El servo se mantiene en una posición, el cambio ' De 40 a otro valor. PulsOut 0,100 ' Ancho de pulso: ' Envía un pulso a cabo en RB0 pines para 1,0 ms. ' El período, (100), se multiplica por el ' Incremento para un oscilador de 4 MHz (10 us) ' Para obtener un pulso de tiempo de espera de 1,0 ms. Pause 20 - 1 ' Intervalo de pulso : ' Una pausa de 20 ms de pulso menor ancho (1,0 m) ' Esta ecuación mantiene el período de ' El pulso del servo uconstante de 20 ms, HIGH ' Por 1 ms y ms de 19 BAJO = 20 ms. Next i ' Volver a la declaración ' Siguiente cuenta For i = 1 TO 40 ' Enviar la señal para el giro manecillas del reloj ' 40 veces PulsOut 0,200 ' Ancho de pulso: ' Envía un pulso a cabo en RB0 pines para 2,0 ms. ' El período, (200), se multiplica por el ' Incremento para un oscilador de 4 MHz (10 us) ' Para obtener un pulso de tiempo de espera de 2,0 ms.
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
39/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
Pause 20 - 2 ' Intervalo de Pulso: ' Una pausa de 20 ms de pulso menor ancho (2,0 m) ' Esta ecuación mantiene el período de ' El pulso del servo constante de 20 ms, HIGH ' Durante 2 ms y 18 ms para BAJO = 20 ms. Next i ' Volver a la declaración ' Siguiente cuenta goto loop ' Hace que el programa se ejecute siempre end Archivos Adjuntos
Código:
'**************************************************************** '*
Name
: SERVO 2.BAS
*
'*
Author
: MECATRODATOS
*
'**************************************************************** '‐‐‐‐‐‐‐‐Descripcion del programa‐‐‐‐‐‐‐‐ 'Girar servos en las rotaciones de las agujas del reloj y en sentido antihorario ' '‐‐‐‐‐‐‐‐‐‐‐ConnecCIONES‐‐‐‐‐‐‐‐‐‐‐ '
PIC16F88 Pin
'
Wiring
‐‐‐‐‐‐‐‐‐
‐‐‐‐‐‐‐‐‐‐
'
RB0
Servo Control Wire
'
Vdd
+5 V
'
Vss
Ground
'
MCLR
4.7K Resistor to +5 V
'‐‐‐‐‐‐‐‐‐‐‐‐Variables‐‐‐‐‐‐‐‐‐‐‐‐‐ p0
VAR
BYTE
' Byte para almacenar la posición del servo
'‐‐‐‐‐‐‐‐‐‐Initialization‐‐‐‐‐‐‐‐‐‐
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
40/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
PORTB = %00000000
'Eqivalent a: PORTB = 0 'Establece todos los pines PORTB a BAJO (0 voltios) 'Asegúrese de incluir esta 'Inicialización que establece la 'Correcta polaridad de los pulsos en 'El comando PULSOUT .
OSCCON = $60
'Establece el oscilador interno en el '16F88 a 4 MHz
'‐‐‐‐‐‐‐‐‐‐‐‐‐codigo principal‐‐‐‐‐‐‐‐‐‐‐‐ loop: ' ************Giro a la izquierda *********************************** For p0 = 200 TO 100 STEP ‐1
' Modificar el valor del pulso de 2
ms y ' 1 ms en pasos de 10. ' Ver siguiente Comando PulsOut 0,p0
' Envía un pulso, p0, sobre
pin RB0. ' El período, p0, se multiplica por el ' Incremento para un oscilador de 4 MHz ' (10 us) para obtener un pulso de tiempo de espera. ' Por ejemplo, si p0 = 200, ' 200 * 10 = nosotros nos 2000 = 2 ms Pause 20 ‐ p0/100
' Una pausa de 20 ms menos
ancho de pulso (p0/100) ' Si p0 = 200, = 200/100 = p0/100 2 ms. ' Esta ecuación mantiene el período de ' El pulso del servo una constante de 20 ms. Next p0
' Volver a la declaración del ' Siguiente valor de p0
'*******Rotación hacia la derecha
**************************
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
41/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
For p0 = 100 TO 200
' Modificar el valor del pulso de 1
ms y '2 ms en pasos de 10. PulsOut 0,p0
' Envía un pulso, p0, sobre RB0
alfiler. ' Tiempo de espera varía de un pulso ms 1,0 ' A 2,0 ms. Pause 20 ‐ p0/100
'Una pausa de 20 ms menos
ancho de pulso (p0/100) Next p0
' Volver a la declaración del ' Siguiente valor de p0
goto loop
' Hace que el programa se ejecute siempre
end '****Nota: el mismo diagrama utilizado en el primer proyecto sirve para la simulación****** Archivos Adjuntos
Respuesta: Curso programacion de pic en bsic pro
Mira te anexo una guía esta en ingles pero te da ejemplos de como trabajar con el software Archivos Adjuntos
Proyectos con motores AMPLIFICADOR PARA MOTORES
Antes de empezar nuestra discusión sobre el control de motores, vamos a echar un vistazo a algunos pequeños amplificadores que podemos utilizar para controlar nuestros motores. Todos los amplificadores que he seleccionado son baratos y fáciles de usar. Sin embargo, no debería haber ningún problema con el uso de otros amplificadores. Si desea para controlar un motor más grande, todo lo que necesita es un amplificador más grande. Los tres amplificadores se que utilizan en los proyectos son económicos y fácil de realizar para ejecutar http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
42/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
el control de motores de 2 ejes o motores paso a paso. El amplificador L298 es más barato, pero también se ocupa de menos amperios. El amplificador que he usado para todos los experimentos es el amplificador LMD 18200T. Los tres amplificadores toman señales TTL directamente desde el microcontrolador y el control la alimentación del motor. Cada motor requiere una fuente de alimentación compatible con la alimentación que necesita el motor y la capacidad del amplificador. La fuente de alimentación del microcontrolador y la fuente de alimentación del motor debe mantenerse separada en todas las circunstancias con sólo una conexión a tierra común. Si no se hace esto, el ruido del motor contaminará el poder para el microprocesador y provocara problemas graves. Todos los motores son muy ruidosos por lo que se refiere a electrónica deL PIC y debe ser aislado. El ruido del motor proviene de los conmutadores de motor y de la rápida desactivación de las bobinas del motor. A pesar de la adición de pequeños condensadores a tierra desde cada Terminal del motor y ayuda a través de las terminales, no funciona tan bien como un diseño bien aislado. Puesto que tenemos una opción, vamos a utilizar fuentes de alimentación independientes en todos nuestros experimentos. Cada uno de los amplificadores utiliza uno o dos circuitos integrados como componentes de su amplificador, y algunos auxiliares equipados con indicadores LED para anunciar las condiciones internas. Sin embargo, otros dispositivos permiten la interconexión a las señales que el microcontrolador proporciona sin la necesidad de dispositivos intermedios.
Notas sobre el hecho en casa Amplificador de construcción Aunque usted puede hacer su propio amplificador, no recomiendo que haga otro. Los amplificadores que es probable que hayan (una serie de los diseños están disponibles en Internet) es probable que sean puentes H bastante sencillo. A menos que un circuito mucho más sofisticados, se añade al circuito amplificador básico, es muy fácil de volar un puente H mediante la activación de ambos transistores en cualquier lado del puente, al mismo tiempo. Por otra parte, si utilizamos circuitos integrados para construir nuestros amplificadores, estos circuitos es casi seguro que tienen circuitos dentro de ellos para evitar daños en cortocircuito, cierre de sesión en el sobrecalentamiento, y otras características útiles. Cuanto más sofisticado sea el circuito también proporciona la capacidad de detectar el apagado térmico y para mirar el flujo de corriente a través de cada amplificador. Puesto que hay una serie de proveedores que venden barato, los componentes a utilizar para el http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
43/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
desarrollo de los amplificadores, no hay ninguna buena razón en esta etapa de nuestro proceso de aprendizaje de no utilizar estos recursos para realizar estos amplificadores y controlar nuestros motores.
El amplificador LMD 18200T . El amplificador que he usado para todos los experimentos .Las conexiones que utiliza este amplificador se identifican en Figura 1. Cada uno de los dos amplificadores puede manejar hasta 3 amperios a 55 VDC. Pulsos cortos de 6 amperios son tolerados. La polaridad de la alimentación del amplificador es crítica auque se puede colocar una protección a través de diodo 4148. Para nuestros propósitos los pines 1, 2 y 3 se puede utilizar para controlar la bobina / del motor 1, y los pines 6, 7, y 8 control de la bobina / el motor 2.
El Amplificador 33886 Si usted necesita un amplificador de un solo eje, el amplificador 33866 de eje único que se muestra en la figura 2 es adecuado para motores pequeños que necesitan menos de 5 amperios a 40 V. He utilizado este amplificador para los pequeños experimentos con el motor de CC. Las conexiones de cableado de este amplificador son sencillas. Una característica de seguridad de este amplificador proporciona un diodo de protección contra la conexión accidental de polaridad inversa al conector de alimentación.
CARACTERÍSTICAS: - poder en la potencia del motor se conecta a estos dos terminales. Aunque un diodo de protección se incluye, la polaridad de la conexión debe ser observada.
- motor de corriente continua Aquí es donde el motor está conectado. La polaridad de esta conexión no es importante. Las operaciones de motor se pueden invertir en software. - LEDs Los tres LED en la tarjeta de indicar la operación de la tarjeta como el poder y señales de control se aplican a la tarjeta. http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
44/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
El Amplificador L298 2-Ejes El amplificador L298 de control de doble eje se muestra en la Figura 3 con sus conexiones de cableado identificadas. Este circuito permitirá el control de dos motores. El amplificador L298 tiene un problema con las señales PWM en determinadas condiciones y no deben ser utilizados en los experimentos sofisticados con muchos cambios de PWM ambos ejes simultáneamente. Hay algunas interferencias y problemas de incumplimiento. La condición no inhibe el uso de este amplificador de bajo costo para el funcionamiento de pequeños motores. Se trata del más barato amplificador integrado de 2 ejes que usted puede considerar para armar. Archivos Adjuntos
figura 1.rar (20,4 KB (Kilobytes), 288 visitas)
figura 3.rar (160,9 KB (Kilobytes), 251 visitas) Temas similares
Respuesta: Curso programacion de pic en bsic pro jeje disculpa por las multiples dudas!!! pero aun tengo demasiadas... Estoy equivocado en cuanto a el control del motor pap quiza no soy muy bueno explicandome jejej lo que quiero hacer es que con pulsos varie la velocidad del motor o el numero de pasos dados. Tengo una idea de como, corrigeme si estoy mal de favor El motor pap que utilizo tiene 6 hilos, 2 son comunes y los otros 4 pertencen a las bobinas, si mando voltaje a una bobina da ciertos pasos, si le mando voltaje a otra bobina camina otros ciertos pasos. Lo que tengo que controlar es eso. jejeje no soy muy bueno en esto apenas empiezo. se que se hace con if..then ( lo de antirrebote afecta esto?) espero ahora si haberme eplicado bien
Por cierto aqui un video de lo que quiero hacer
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
45/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
salu2 Temas similares
Respuesta: Curso programacion de pic en bsic pro hola, buenas quisiera dar un pequeño aporte y ver si me pueden dar sus criticas constructivas al respecto y por supuesto si hay alguna mejora. se trata de un minutero programable muy parecido al de un microhondas, me lo mandaron como un proyecto de la univ. con compuertas y demas pero quise no enrollarme y hable con el profe y me permitio utilizar un pic siempre y cuando cumpliera el cometido osea programar un tiempo en minutos y que al culminar osea llegar a cero este envie una alarma pues como ven es bien sencillo mas el programita me salio algo largo y me costo ya que a pesar de tener conosiendo al pic mas de un año a penas he logrado utilizar unos 30 comandos del pbp de los mas de 50 que se pueden usar. mas que todo debido a que no he tenido tiempo para ponerme mas de lleno con el pbp. en fin el programa, me gustaria saber si esta bien o se puede mejorar utilizando otras instrucciones...de atemano muchas gracias... Archivos Adjuntos
Temas similares
Respuesta: Curso programacion de pic en bsic pro Buenas del minutero gracias por verlo aui les traigo una pequeña modificacion con un efecto animado y el logo del instituto a ver que les parece me avisan cualquier cosa. Archivos Adjuntos
Respuesta: Curso programacion de pic en bsic pro Este me marca un error que nunca habia visto.... que sera??? http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
46/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
Imágenes Adjuntas
lubeck dijo: Este me marca un error que nunca habia visto.... que sera??? Es el Proteus. Tenés declarados los fuentes (ver imagen) y antes de ejecutar los quiere compilar. Salta el error porque no encuentra al PBP. Eliminás esas dos líneas desde Source->Add/Remove Source files y desaparece el problema. (la otra es configurar el camino y los argumentos para compilar desde el Proteus) Bueno... desaparece ese y aparece otro
. Después que terminan los mensajes iniciales empieza a dar "Stack Overflow" Imágenes Adjuntas
Respuesta: Curso programacion de pic en bsic pro por cierto este programita me ayudo bastante con los caracteres y figuras de la lcd Archivos Adjuntos
Respuesta: Curso programacion de pic en bsic pro hola gente
les cuento que estoy intentando hacer un variador brushless con pic, ya hice uno con componentes dicretos que funciona aqui pueden verlo andando. es un poco voluminoso y complicado asi que, ahora quiero hacerlo con un pic utilizando pbasic para programar el micro pero, tengo un problema, basandome en el funcionamiento del bldc discreto, he creado una rutina en pbasic que a segun mis calculos, deberia funcionar igual pero no funciona. aca subo el rar con el diseño completo y su codigo fuente en basic para ver si me pueden dar una mano y asi saber que estoy haciendo mal para corregirlo. lo que hace el circuito, es detectar una secuencia de numeros binarios del 1 al 6 y a segun el numero que entre, sera el estado en sus salidas. saludosss a todos... Archivos Adjuntos
Respuesta: Curso programacion de pic en bsic pro http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
47/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
hola lubek. aca te dejo los archivos livewire del bldc discreto. no se si habras simulado el circuito en proteus, si asi fue, debes haber notado que al potenciometro lo lee bien y que la variacion del pwm es correcta. el problema que tiene mi circuito, es que los puertos RB0 a RB2 no funcionan como el programa lo indica. cuando en el programa dice: paso4: pwm 2,b0,5 high 4 goto loop empieza el problema de que el puerto B no responde como debiera. veras, el circuito que estoy intentando hacer, es una especie de decodificador binario que en funcion del numero binario que detecta conmuta dos salidas del pic enviando por una, un pulso pwm y pr la otra, un uno logico simultaneamente. con esto, consigo conmutar los mosfets del inversor trifacico segun la señal de zerocrossing que obtengo del circuito con lm324. tengo la impresion de que se puede detectar numeros binarios de otra manera con picbasic pero no se me ocurre mas que lo anterior... aca dejo el codigo pbp. ah lubeck, el cmcon=7, es para desactivar los comparadores del puerto A y convertirlos en en E/S digitales y esto me sirve porque lo que estoy intentando detectar, son 1 y 0´s saludosss
Código:
CMCON=7 TRISA=%00000000 porta=%00000000 trisb=%01110000 portb=%01110000 frec var byte loop: pot portb.3,137,frec if portb.4=1 then paso1 low porta.0 low portb.1 if portb.5=1 then paso2 low porta.0 low portb.2 if portb.4 and portb.5=1 then paso3 low porta.1 low portb.2 http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
48/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
if portb.6=1 then paso4 low porta.1 low portb.0 if portb.4 and portb.6=1 then paso5 low porta.2 low portb.0 if portb.5 and portb.6=1 then paso6 low porta.2 low portb.1 goto loop paso1: PWM porta.0,frec,5 high portb.1 goto loop paso2: PWM porta.0,frec,5 high portb.2 goto loop paso3: pwm porta.1,frec,5 high portb.2 goto loop paso4: pwm porta.1,frec,5 high portb.0 goto loop paso5: pwm porta.2,frec,5 high portb.0 goto loop paso6: pwm porta.2,frec,5 high portb.1 goto loop end Archivos Adjuntos
Temas similares
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
49/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
erick percy dijo: gracia reyvilla por responder ;pero trate de compilar lo que me pusiste en el foro y me salen estos errores Hola: Disculpa voy a dar mi opinión. El Microcode que supongo es que están usando tiene dos opciones para usar un determinado compilador que lo ven en "View" > "Compile and Program Options"; por lo que se, es cuando se usan Fuses y el compilador asociado es el MPASM te genera errores como los que te han salido. Para arreglar eso debes usar el compilador del PicBasic que está en "C:\PBP", entonces los asocias por medio del botón que está en la imagen; luego de eso te debe aparecer al costado la dirección del compilador "C:\PBP". Intenta eso. Saludos. Imágenes Adjuntas
Temas similares
mecatrodatos dijo: Bien amigo ByAxel por cierto, una vez preguntaste en este hilo sobre el compilador y editor para PIC de la serie 18F "Swordfish IDE", tengo varios ejemplos y una tutoría totalmente terminada como el caso del PROTON IDE que solamente me falta subir las partes restantes que será cuando termine de arreglar el computador y pasar algunos artículos a PDF. Por lo que en este foro quedara todo lo de PIC Basic para microcontroladores, en el hilo de PBP, PROTON y un nuevo HILO Swordfish IDE para aquellos que deseen escoger. Impresionante
, realmente quiero hacer cosas con el "Swordfish IDE"... muy bien recibida la info , en cuanto me libere de algunos trabajos le pongo pilas al Swordfish para colaborar con ejemplos en el respectivo hilo. ----------- ------------ ------------ ------------- ------------ ------------ ------------ ----Sobre los Fuses para los P18 en el PBP me he encontrado con varios detalles y los que pusiste no me funcionó, bueno investigue un poco más y lo aplique otra forma usando PBP 2.60L + Microcode 4 para aquellos que quieran modificar los Fuses para los P18: http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
50/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
1) En mi caso use el MPASM de la carpeta "C:\MCC18\mpasm" porque tengo el C18 instalado (el PBP no me vino con el MPASM integrado); abrir el archivo P18Fxxxx.INC , en la ultima parte del archivo están los Fuses. 2) Ubicar el archivo 18Fxxxx.INC , en la carpeta del PBP; en caso del PIC18F2550 es: Código:
NOLIST ifdef PM_USED LIST "Error: PM does not support this device.
Use MPASM."
NOLIST else LIST LIST p = 18F2550, r = dec, w = ‐311, w = ‐230, f = inhx32 INCLUDE "P18F2550.INC"
; MPASM
Header
__CONFIG
_CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L
__CONFIG
_CONFIG1H, _FOSC_HSPLL_HS_1H & _FCMEN_OFF_1H & _IESO_OFF_1H
__CONFIG
_CONFIG2L, _PWRT_OFF_2L & _BOR_ON_2L & _BORV_3_2L &
_VREGEN_ON_2L __CONFIG
_CONFIG2H, _WDT_ON_2H & _WDTPS_512_2H
;__CONFIG
_CONFIG3H, _CCP2MX_ON_3H & _PBADEN_OFF_3H & _LPT1OSC_OFF_3H &
_MCLRE_ON_3H ;__CONFIG
_CONFIG4L, _STVREN_ON_4L & _LVP_OFF_4L & _XINST_OFF_4L
NOLIST endif LIST EEPROM_START
EQU
0F00000h
BLOCK_SIZE
EQU
32
Donde se puede reemplazar directamente las líneas que empiezan con "__CONFIG" con la configuración que se quiera del archivo P18Fxxxx.INC del PIC respectivo (en este caso, PIC18F2550). 3) O comentar las líneas __CONFIG con ' ;' para evitar que salga errores al declarar los fuses en el mismo archivo del programa (.bas, .pbp) y de ese modo recién el compilador acepta la declaración como: Código:
@ __CONFIG
_CONFIG1L, _PLLDIV_5_1L & _CPUDIV_OSC1_PLL2_1L & _USBDIV_2_1L
@ __CONFIG
_CONFIG1H, _FOSC_HS_1H
@ __CONFIG
_CONFIG2H, _WDT_ON_2H & _WDTPS_128_2H
@ __CONFIG
_CONFIG3H, _PBADEN_OFF_3H
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
51/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
@ __CONFIG
_CONFIG4L, _LVP_OFF_4L & _ICPRT_OFF_4L & _XINST_OFF_4L
o como pongo en la prueba que realicé para PBP: Código:
'**************************************************************** ' PIC18F2550, prueba generador de media onda '**************************************************************** @ CONFIG PLLDIV = 5, CPUDIV = OSC1_PLL2, USBDIV = 2 @ CONFIG FOSC = HS @ CONFIG BOR = ON, BORV = 1 @ CONFIG WDT = OFF, WDTPS = 32768 @ CONFIG MCLRE = OFF @ CONFIG STVREN = ON, LVP = OFF, XINST = OFF, DEBUG = OFF define OSC 20 CNT var byte clear ADCON1 = 15 TRISB = 0 LATB = 0 Main: for cnt = 0 to 127 LATB = sin cnt pause 1 next cnt goto main end Me avisan si me equivoque en algo
saludos. Imágenes Adjuntas
Respuesta: Curso programacion de pic en bsic pro hola gente del foro. http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
52/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
bueno, aca estoy de nuevo, pidiendo vuestra ayuda jeje
... no sin antes, dejar un pequeño aportito a cambio. se trata de un tacometro para motores DC como los de aeromodelismo. esta probado en proteus y no se cual es el limite de RPMs que puede medir. ahora pasemos a mi duda... bueno, pasa que no tengo por ahora el display de este proyecto y me gustaria hacerlo ya que, me seria de gran utilidad. resulta que tengo un lcd de un nokia 1100 y me gustaria adaptarlo para este proyecto, utilizando como lenguaje de programacion, picbasic. tengo el pinout de este display y he visto en el foro como se conecta, pero lo que no se, es como cambiar la comunicacion entre el pic y el display nokia ya que, en este tacometro, la comunicacion es en paralelo y el display nokia, es serie sincronico. ¿acaso se podria usar la instruccion SHIFTOUT para controlarlo? ustedes ¿que opinan? ¿como puedo hacer para adaptarlo a mi diseño? gracias. saludosss
Imágenes Adjuntas
Temas similares
Respuesta: Curso programacion de pic en bsic pro
bien aquí esta el lcd la conexión del LCD NOKIA 3110 por hay tengo las libreria para ponerlo a trabajar en proteus aunque la ultima version trae el 7110. listo mire en mi pc y encontré las librerías y circuitos de conexión para la simulación de pantallas Nokia 3310 6610 7710 compatibles con 1100 Archivos Adjuntos
lcd Nokia.rar (17,8 KB (Kilobytes), 307 visitas) Proteus Model.zip (29,3 KB (Kilobytes), 300 visitas)
3310 LCD.pdf (805,7 KB (Kilobytes), 296 visitas) esquematico.rar (74,3 KB (Kilobytes), 254 visitas) esquematico 3310.rar (33,3 KB (Kilobytes), 224 visitas)
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
53/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
LIBRARY 6610.rar (3,4 KB (Kilobytes), 213 visitas) MODELS 6610.rar (10,1 KB (Kilobytes), 205 visitas)
Temas similares
Respuesta: Curso programacion de pic en bsic pro Intentemoslo asi... Archivos Adjuntos
Respuesta: Curso programacion de pic en bsic pro los diodos igual si quieres ponerlos.... Prueba asi... EDITO los negativos de ambas fuentes los unes... para que ambas sean tierras... Imágenes Adjuntas
Temas similares
Respuesta: Curso programacion de pic en bsic pro hola a todos, a mi los fuses los pongos para ahorrarme trabajo a la hora de programar el pic pero en basic estos fuses me dan error y los pongo en forma correcta ¿alguien sabe la causa de estos errores? les dejo una imagen donde sale error. saludos. Imágenes Adjuntas
Respuesta: Curso programacion de pic en bsic pro Supongo que sin fuses te compila, entonces la causa del error puede que sea la configuración del compilador ya que una vez me sucedió algo parecido. Asegúrate que el compilador sea del pbp que está en la dirección C:\PBP como en la imagen. Un saludo Imágenes Adjuntas
ByAxel dijo: Supongo que sin fuses te compila, entonces la causa del error puede que sea la configuración del compilador ya que una vez me sucedió algo parecido. Asegúrate que el compilador sea del pbp que http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
54/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
está en la dirección C:\PBP como en la imagen. Un saludo Si!! los programas se compila normalmente sin los fuses, pues bien el PBP lo tengo instalado dentro la carpeta del microcode, dejame probar usando la ruta C:/ para ver que tal. pues bien coloque todo en C:/ y nada sigue dandome el mismo error ando usando el PBP 2.5 y el microstudio 3.0.0.5 Imágenes Adjuntas
Temas similares
Respuesta: Curso programacion de pic en bsic pro Saludos, un gusto escribir una vez mas aca, soy nuevo en esto de las transmisiones vía radiofrecuencia, les comento que estoy realizando un proyecto con un sensor de temperatura cuya lectura se visualizará en un lcd via rf. En el siguiente circuito que adjunto uso el conversor a/d del pic16f877a para visualizar la lectura en en lcd1 de ese pic y funciona correctamente, pero cuando deseo visualizarlo en el receptor (pic 16f628a) no me muestra lectura alguna, para la transmisión uso unos modulos a 315Mhz (adjunto el datasheet) y el codificador y decodificador ht12e/ht12d, he comprobado que el modulo funciona correctamente he probado transmitiendo 1 bit y efectivamente recibe correctamente el dato que envio, mi problema es el siguiente: Conecto el pin 39 del pic 16f877a a mi entrada del encoder(pin10), conecto la salida del decoder (pin10) al pin asignado para la recepcion de datos porta.0 del pic 16f628a(pin17), pero no logro visualizar el dato que envio , y bueno en ese mismo instante para comprobar nuevamente el estado de transmisión pruebo transmitiendo bits y efectivamente hay transmision y recepción sin embargo no logro visualizar el dato que necesito. La salida del del pin 39 del pic 16f877a corresponde al dato que almaceno de mi conversor a/d para luego transmitirlo, he probado la transmisión directa usando un cable para unir el pin 39 del 16f877a y el pin 17 del 16f628a y funciona, bueno de esa forma logro visualizar la lectura del dato que deseo enviar por lo que creo el programa funciona correctamente. Alguna sugerencia para solucionar mi problema seria bien recibida y muy agradecida. Adjunto el esquema que realice en caso sirva de algo para su ilustración en pdf. Incluyo fragmentos del programa que uso, esta hecho en microcode studio, tal vez estoy omitiendo algo o cometo un error y esa sea la razón por la cual no funcione. http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
55/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
TX: Código:
DEFINE osc 4 DEFINE
LCD_BITS 4
define
LCD_DREG
PORTB
;bit de datos del LCD empezando
define
LCD_DBIT
0
;por B.0. B.1, B.2, B.3
define
LCD_RSREG
PORTB
;bit de registro del LCD conectar
define
LCD_RSBIT
5
;en el puerto B.5
define
LCD_EREG
PORTB
;bit de enable conectar en el
define
LCD_EBIT
4
;puerto B.4
define
ADC_BITS
8
;Fije el número de BITS del resultado
define
ADC_CLOCK
3
;Fije EL CLOCK (rc=3)
define
ADC_SAMPLEUS
50
;Fije el tiempo de muestreo en Us
pause 2000
(5,8,10)
;ADC_SAMPLEUS es el número de microsegundos que el programa ;espera entre fijar el canal y comenzar la conversión analógica/digital TRISA= 1
;el puerto A es de entrada
ADCON1= %00001110
;el puerto A.0 es conversor los demás
digitales TRISB= 0
;el puerto b es salida da datos
dato
var word
tempbaj
var byte
tempalt
var byte
x
var byte
releF
var portD.2
releC
var portD.3
led
var portD.4
enter
var portD.5
bsubir
var portD.6
bbajar
var portD.7
EEPROM 0,[20,26]
;crear variable dato para guardar
;contenido inicial de la EEPROM
Symbol N2400 = 4
inicio:
;3 parpadeos del led que indica que
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
56/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
funciona for x =1 to 3 high led pause 200 low led pause 200 next READ 0,tempbaj
;lee la EEPROM 0 y lo guarda en tempbaj
read 1,tempalt
;lee la EEPROM 1 y lo guarda en tempalt
sensar: adcin 0, dato
;lee el canal 0(A0) y guarda en dato
serout PORTB.6, N2400, [dato]
;Envía los datos por RB0
LCDOUT $FE,1,"T.mi T.actu T.ma"
;limpia el LCD y muestra el texto
dato=dato/2
;el dato dividir para 2
LCDout $FE,$c6,dec dato,"ºC"
;muestra el decimal de dato
LCDout $FE,$c0,dec tempbaj,"ºC"
;muestra el decimal de tempbaj
LCDout $FE,$cc,dec tempalt,"ºC"
;muestra el decimal de tempalt
for x =1 to 50
;repetir 50 veces
if enter =0 then grabarla pause 10 next if dato
;si dato es
if dato>tempalt then enfriar
;si dato es >tempalt ir a enfriar
low relec: low releF goto sensar enfriar: HIGH releF: low releC goto sensar calentar: HIGH releC: low releF goto sensar grabarla: gosub soltar
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
57/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
grabar1: LCDOUT $fe, 1,"Programar Temp." lcdout $fe,$c0,"baja=",dec tempbaj,"ºC" pause 100 if bbajar =0 then restar1 if bsubir =0 then sumar1 if enter =0 then grabarA goto grabar1 restar1: gosub soltar
;programa antirebote de tecla
if tempbaj<1 then grabar1 tempbaj=tempbaj‐1 goto grabar1 sumar1: gosub soltar if tempbaj>40 then grabar1 tempbaj=tempbaj+1 goto grabar1 grabarA: gosub soltar write 0,tempbaj
;escribir en la direcciom 0 de la
EEPROM grabar2: LCDOUT $fe, 1,"Programar Temp." LCDOUT $fe,$c0,"alta=",dec tempalt,"ºC" pause 100 if bbajar= 0 then restar2 if bsubir= 0 then sumar2 if enter= 0
then grabarB
goto grabar2
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
58/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
restar2: gosub soltar if tempalt<5 then grabar2 tempalt=tempalt‐1 goto grabar2 sumar2: gosub soltar if tempalt>50 then grabar2 tempalt=tempalt+1 goto grabar2 grabarB: gosub soltar write 1,tempalt
;escribir en la direccion 1 de la
EEPROM goto inicio soltar
;antirebote de tecla
HIGH led pause 150 low led
soltar2: if bbajar= 0 then soltar2 if bsubir= 0 then soltar2 if enter= 0
then soltar2
pause 100 return end RX: Código:
DEFINE osc 4 define define
LCD_DREG LCD_DBIT
PORTB 0
;bit de datos del LCD empezando ;por B.0. B.1, B.2, B.3
define
LCD_RSREG
PORTB
;bit de registro del LCD conectar
define
LCD_RSBIT
5
;en el puerto B.5
LCD_EREG
PORTB
;bit de enable conectar en el
pause 2000 define
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
59/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
define
LCD_EBIT
DEFINE
LCD_BITS 4
4
;puerto B.4
cmcon= 7 TRISB= 0
dato
var word
x
var byte
led
var portB.6
;crear variable dato para guardar
Symbol N2400 = 4
inicio: for x =1 to 3
;3 parpadeos del led que indica que
funciona high led pause 200 low led pause 200 next
sensar: serin PORTA.0, N2400, dato LCDOUT $FE,1,"Temp Actual"
;limpia el LCD y muestra el texto
dato=dato/2
;el dato dividir para 2
LCDout $FE,$c6,dec dato,"ºC" end datahsheet modulo: http://electronicahifi.com/pdf/212st-rx04-a.pdf p.d.1. Subiré el esquemático en pdf para que tengan una visualización del circuito. p.d.2. Pido disculpas por el post en la sección que no correspondía, en realidad por el apuro no pude ver que estaba abierto este topic sobre la programación en pbp Archivos Adjuntos
Respuesta: Curso programacion de pic en bsic pro http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
60/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
hola alex. la verdad que por falta de un lcd, no he tenido la oportunidad de probar el tacometro en la realidad, al circuito lo saque de un libro de pbasic que tengo, y le modifique las salidas porque no me funcionaba asi con proteus. te paso la imagen del diseño completo porque lleva una etapa de entrada con optoacoplador que no esta en el circuito anterior, probalo asi. NOTA: para que funcione como el de esta imagen, hay que modificar el programa Sobre lo que te comenté, sobre que no funcionaban los programas en el Proteus la solución biene en poner una resistencia entre el "RS" del LCD y el +5, de esta manera sale la lectura pues si te fijas en el circuito, el pin rs del lcd, va conectado al RB1 del micro. saludosss Imágenes Adjuntas
Temas similares
Respuesta: Curso programacion de pic en bsic pro Saludos, tengo este error. Espero alguien me pueda ayudar. Gracias Imágenes Adjuntas
Temas similares Temas similares
Respuesta: Curso programacion de pic en bsic pro Hola nuevamente, Y sigo con la molestadera. Aquí adjunto la simulación del que me presenta varias alertas cuando se ha digitado la clave varias veces a ver si alguien me sabe orientar del por qué de estos mensajes. Nuevamente gracias a quien decida colaborarme. Archivos Adjuntos
Respuesta: Curso programacion de pic en bsic pro Viggiani... puse la clave con cuatro digitos es 5678... http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
61/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
con el *(asterisco) se borra lo digitado... tiene muchos detalles tu codigo y el esquema comparalo con el que puse... a ver si es lo que necesitas... Archivos Adjuntos
Respuesta: Curso programacion de pic en bsic pro Cómo elimino el detalle que me manda el mensaje que indica que se excede la velocidad real o algo así según lo que entiendo en la simulación? a veces es por la animaciones... abre la ventana en menu : system->set animation options... y ve si esta asi... Imágenes Adjuntas
Viggiani... ahora le quiero agregar para cambiar la clave codigo con cambio de clave... para cambiar clave tiene que estar apagada la alarma(LED OFF o puerto Salida) y presionar Michi(#) e introducir la nueva clave de 4 digitos... Código:
@ DEVICE pic16F628A @ DEVICE INTRC_OSC_NOCLKOUT ' Opción del Osc Interno @ DEVICE WDT_Off ' Watchdog Timer ON @ DEVICE PWRT_Off ' Power‐On Timer @ DEVICE BOD_Off @ DEVICE MCLR_Off ' Master Clear Opción interno @ DEVICE LVP_Off ' Bajo voltaje de programación @ DEVICE CPD_Off ' Protección del código de memoria OFF @ DEVICE PROTECT_Off' protección de código OFF Define Osc 4 CmCon=7 TrisA=%00001111 TrisB=0 EEPROM 0,[5,6,7,8]
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
62/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
DEFINE LCD_DREG PORTB 'UTILIZAR 4 BITS DEL PUERTO B PARA TX DE DATOS DEFINE LCD_DBIT 4
'DESDE EL BIT B.4 AL BIT B.7
DEFINE LCD_RSREG PORTB'UTILIZAR EL REGISTRO DEFINE LCD_RSBIT 1
DE CONTROL/DATOS EN EL PUERTO B
'EN EL BIT B.1
DEFINE LCD_EREG PORTB 'UTILIZAR EL ENABLE EN EL PUERTO B DEFINE LCD_EBIT 3
'EN EL BIT B.3
'‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ X
VAR BYTE
ALMACEN
VAR BYTE[4]
EPROM
VAR BYTE[4]
SALIDA
VAR PORTB.2
Flag
var bit
Cont
var byte
Var1
var word
'‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ COLUMNA1 VAR PORTA.4 COLUMNA2 VAR PORTA.7 COLUMNA3 VAR PORTA.6 FILA1 VAR PORTA.0 FILA2 VAR PORTA.1 FILA3 VAR PORTA.2 FILA4 VAR PORTA.3 '‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ x=0 for cont=0 to 3 READ cont,EPROM[cont] next cont '‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐ flag=0 gosub mmenu low salida high porta.5 Inicio: Call Teclado GOTO INICIO END
Teclado: http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
63/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
high COLUMNA1
' Columna 1 = 0
If
FILA1 Then VAR1 = 1 :gosub keyc
If
FILA2 Then VAR1 = 4 :gosub keyc
' tecla "1" ' tecla "4"
If
FILA3 Then VAR1 = 7 :gosub keyc
' tecla "7"
If
FILA4 Then VAR1 = 10:gosub keyc
' tecla "*"
low COLUMNA1
' Columna 1 = 1
high COLUMNA2
' Columna 2 = 0
If
FILA1
Then VAR1 = 2:gosub keyc
' tecla "2"
If
FILA2
Then VAR1 = 5:gosub keyc
If
FILA3
Then VAR1 = 8:gosub keyc
If
FILA4
Then VAR1 = 11:gosub keyc
' tecla "5" ' tecla "8" ' tecla "0"
low COLUMNA2
' Columna 2 = 1
high COLUMNA3
' Columna 3 = 0
If FILA1
Then VAR1 = 3 :gosub keyc
' tecla "3"
If FILA2
Then VAR1 = 6 :gosub keyc
' tecla "6"
If FILA3
Then VAR1 = 9 :gosub keyc
' tecla "9"
If FILA4
Then VAR1 = 12:gosub keyc
' tecla "#"
low COLUMNA3 RETURN keyC: if var1=12 then if not salida then toggle flag:x=0:gosub mMenu else ALMACEN[X] = VAR1 LCDOUT $FE,$C6+x,"*" x=x+1 if x=>4 then Gosub verificar if var1=10 then LCDOut $FE,1,"DIGITE LA CLAVE":X=0 endif PAUSE 500 Return mMenu: if flag then lcdout $FE,1,"INTRODUCIR CLAVE": else lcdout $FE,1,"DIGITE CLAVE": endif return
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
64/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
VERIFICAR: IF FLAG THEN for cont=0 to 3 WRITE cont,almacen[cont]:pause 10 read cont,eprom[cont] next cont LCDOut $FE,1,"CAMBIO CLAVE" ELSE X=1 for Cont=0 to 3 if almacen[cont]<>eprom[cont] then x=0 next cont if x=1
THEN
TOGGLE SALIDA LCDOut $FE,1,"CAMBIO DE ESTADO" else LCDOut $FE,1,"CLAVE INCORRECTA" ENDIF ENDIF pause 500 flag=0 gosub mmenu X=0 return Imágenes Adjuntas
Respuesta: Curso programacion de pic en bsic pro buenas agradezco la información que se comparte en este foro y deseo plantear un inconveniente estoy realizando un programa en microcode studio con el pic 18f4550 pero al compilar me aparece estos errores:contenidos en el formato PDF el codigo es el siguiente: ' CONTADOR ASCENDENTE DE 00 AL 99 DEFINE OSC 8 Dato var byte Unidad VAR BYTE Decena VAR BYTE
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
65/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
U0 VAR Unidad.0 U1 VAR Unidad.1 U2 VAR Unidad.2 U3 VAR Unidad.3 D0 VAR Decena.0 D1 VAR Decena.1 D2 VAR Decena.2 D3 VAR Decena.3 TRISD = 0 Inicio: for Dato = 0 to 99 Decena = Dato/10 Unidad = Dato - Decena*10 PORTD.0 = U0 PORTD.1 = U1 PORTD.2 = U2 PORTD.3 = U3 PORTD.4 = D0 PORTD.5 = D1 PORTD.6 = D2 PORTD.7 = D3 pause 1000 next Dato goto Inicio he realizado varios programas pero siempre me generan los mismos errores agradezco la ayuda que me pueden brindar. Archivos Adjuntos
:bien con el programa anterior realice un voltimetro DC de 0-5 aqui esta el programa:
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
66/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
Código:
Define LOADER_USED 1 Define OSC 48 Define LCD_DREG
PORTD
Define LCD_DBIT
4
Define LCD_RSREG PORTE Define LCD_RSBIT 0 Define LCD_EREG
PORTE
Define LCD_EBIT
1
Define
ADC_BITS
10
Define
ADC_CLOCK
3
Define
ADC_SAMPLEUS 50
MEDIDA
Var Word
fullbars Var Byte barval
Var Byte
partbar
Var Byte
pad
Var Byte
TRISA = %11111111 ADCON1 = %00001010 ADCON2 = %10000000 Low PORTE.2 Pause 500 LCDOut $FE, 64, REP $0\8 LCDOut $0, REP $10\6,$0 LCDOut $0, REP $14\6,$0 LCDOut $0, REP $15\6,$0 LCDOut $FE, 1
INICIO: ADCIN 0,MEDIDA MEDIDA = (MEDIDA */ 500) >> 2 LCDOut $FE, 2, "VOLTIOS DC= ", DEC (MEDIDA / 100), ".", DEC2 MEDIDA barval = (MEDIDA / 9) + 1 http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
67/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
GoSub BARRA GoTo INICIO BARRA: fullbars = (barval MIN 60) / 3 partbar = (barval MIN 60) // 3 pad = 19 ‐ fullbars LCDOut $fe, $c0, REP $3\fullbars, partbar, REP " "\pad Return End Ahora deseo realizar la comunicación a usb para que se vea en pc por medio de comunicación USB con visual basic , delphi, c++ o labview. les dejo el proyecto hasta ahora ha espero no incomodar en el orden del foro
Archivos Adjuntos
Temas similares
Respuesta: Curso programacion de pic en bsic pro realice lo que me dijiste con el pwm pero me envia como 132 aproximadamnete con 1 circlo te coloco el programa para que me digas si hice algo mal, ah y por cierto tome parte de uno que habian echo para un teclado matrixial y lo adapte.
@ DEVICE pic16F628 @ DEVICE INTRC_OSC_NOCLKOUT ' Opción del Osc Interno @ DEVICE WDT_Off ' Watchdog Timer ON @ DEVICE PWRT_Off ' Power-On Timer @ DEVICE BOD_ON @ DEVICE MCLR_OFF ' Master Clear Opción interno @ DEVICE LVP_OFF ' Bajo voltaje de programación @ DEVICE CPD_OFF ' Protección del código de memoria OFF @ DEVICE PROTECT_OFF' protección de código OFF Define Osc 4 CMCON=7 http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
68/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
A var word COLUMNA1 VAR PORTB.0 COLUMNA2 VAR PORTA.6 COLUMNA3 VAR PORTA.7 FILA1 VAR PORTA.0 FILA2 VAR PORTA.1 FILA3 VAR PORTA.2 FILA4 VAR PORTA.3 clear Inicio: TrisA=%00001111 TrisB=%00001000 PORTA = %00000000 PORTB = %00000000 Call Teclado GOTO INICIO END
Teclado: high COLUMNA1 ' Columna 1 = 1 If FILA1 Then gosub S1 ' ' tecla "1" If FILA2 Then gosub S4 ' tecla "4" If FILA3 Then gosub S7 ' tecla "7" If FILA4 Then gosub S10 ' tecla "*" low COLUMNA1 ' Columna 1 = 0 high COLUMNA2 ' Columna 2 = 1 If FILA1 Then gosub S2 ' tecla "2" If FILA2 Then gosub S5 ' tecla "5" If FILA3 Then gosub S8 ' tecla "8" If FILA4 Then gosub S11 ' tecla "0" low COLUMNA2 ' Columna 2 = 0 http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
69/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
high COLUMNA3 ' Columna 3 = 1 If FILA1 Then gosub S3 ' tecla "3" If FILA2 Then gosub S6 ' tecla "6" If FILA3 Then gosub S9 ' tecla "9" If FILA4 Then gosub S12 ' tecla "#" low COLUMNA3 ' Columna 3 = 0 RETURN S1: PORTB.2 = 1 'señal de bandera para empezar a leer los ciclos, activa el receptor PAUSE 250 'se suma en la espera al receptor con los otros 250ms al final y PORTB.2 = 0 ' depues de 500ms es que empieza el count a contar los pulsos. PAUSE 250
PWM PORTB.2,127,1 'cada ciclo ocurre aprox. cada 5ms, segun manual PORTB.2 = 0 GOTO TECLADO S2: S3: S4: S5: S6: S7: S8: S9: S10: S11: S12:
por cierto aprovecho para mostrar el circuito que estaba haciendo y que me ayudaron por aca el del minutero para que vean como quedo...saludosss Imágenes Adjuntas
15102010156.jpg (54,3 KB (Kilobytes), 70 visitas)
15102010159.jpg (54,4 KB (Kilobytes), 45 visitas)
15102010160.jpg (37,1 KB (Kilobytes), 34 visitas) http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
70/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
15102010162.jpg (70,4 KB (Kilobytes), 53 visitas) Respuesta: Curso programacion de pic en bsic
pro te adjunto la imagen donde se observa, primero 1 y despues 0 cada uno dura 500ms y luego un tren de pulso que se supone sea el ciclo del pwm... gracias por lo del minutero tomare en cuenta tu recomendacion, con respecto a sistema pretendo hacerlo lo mas sencillo posible, yo utilice el serin y el serout pero tengo muchas dudas al respecto, ya que es un comando complejo, bueno para mi, pero si tu me dices como puedo usarlo te agradeceria un millon de veces. Lei el manual y habla de codigo ascii y velocidades? lei nuevamente el manual y con respecto al serout me dice esto: SEROUT Pin,Mode,[Item[,Item...}] Envía uno ó más Items a Pin , en formato standard asincrónico usando 8 bits de datos , sin paridad y 1 stop bit (8N1) .SEROUT es similar al comando Serout de BS1 .Pin es automáticamente colocado como salida . Pin puede ser una constante , 0 - 15 , ó una variable que contenga un número de 0-15 (p.ej. B0) ó un número de Pin (p.ej. PORTA.0) Los nombres Mode (p.ej. T2400) están definidos en el archivo MODEDEFS.BAS . Para usarlos ,agregue la línea : Include "modedefs.bas" al comienzo de su programa PBP . BS1DEFS.BAS y BS2DEFS.BAS ya incluyen MODEDEFS.BAS . No lo incluya ,si ya está usando uno de ellos .Los números Mode pueden ser usados sin incluir este archivo . No entiendo "sin paridad y 1 stop bit (8N1)"...? lo demas si, ya inclui el archivo y todo solo falta desifrar el como utilizarlo? Imágenes Adjuntas
Respuesta: Curso programacion de pic en bsic pro crea una variable tipo word que contenga la palabra o letras que estes escribiendo y que lo guarde temporalmente en la eeprom y que a su vez borre, seria como un tipo de indexacion, vas guardando en la pila o stack, de manera que tengas una cierta cantidad de letras para escribir y luego empiece a reemplazar las primeras que se introdujeron...por ejemplo...saludos... ahora yo tengo una duda eso que tu haces de pc a pic yo puedo hacerlo de pic a pic.....? les adjunto el como estoy simulando todo... http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
71/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
Imágenes Adjuntas
Respuesta: Curso programacion de pic en bsic pro Hola que tal, acabo de entrar a este rollo del PWM, es interesante, ya fabriique mis programa para la comunicacion en serie. Lo que tengo que hacer es lo siguiente. Aumentar o disminuir la velocidad del motor con el PWM, a traves de una comunicacion serial, es decir cuando el usuario mande la letra "A" la velocidad del motor debe aumentar y si mando la letra "D" la velocidad del motor disminuye. Hoy lo realice en clase y lo unico que logre es que el motor gire a su velocidad maximan, no se porque, pero al momento de establecer la comunicacion y mandar la letra "A" un led prende y el motor empieza a girar a todo lo que da. Además de que si mando otra letra este ya no hace nada tengo que cortar la corriente para resetear el PIC. Si no es mucha molestia aqui les dejo mis dos programasy haber si me puenden ayudar. PD:Algun programa para simular la comunicacion serial? uso matlab y programo en Pbasic(microcode) salu2 Archivos Adjuntos
Temas similares
Respuesta: Curso programacion de pic en bsic pro bueno ya realice varias pruebas, y al final uso: serout puls,T9600,["A",#ID,10] ya lo entendi bien asi, ahora hubo unas confuciones fue porque a nivel de conexiones hay varias direfencias, yo utilize el el pin portb.2 del mando para enviar los datos y tu el portb.0 no se si esto influya pero yo lo utilice porque dice Tx, y por otra parte la salidad del led indicando que el dato que esperaba recivir es correcto, de resto todo lo demas esta bien, espero no haber echo un mucho despelote, en fin, para mi es indiferente la cuestion es que funcione, y lo demas es cuestion de adaptarlo, probe colocando diferentes letras y si las diferencia, pero aun hay que darle dos veces al boton para que salga el caracter en el virtual terminal. lo he logrado de momento la meta de hoy muchas gracias amigo
"lubeck" de verdad, de momento
logre adaptarlo a lo que requeria el sistema de momento en simulacion funciona logre conectar al 16f628A unos 3, 12f629 que estan como receptores los cuales cada uno tiene una letra especifica y al enviar esa letra en codigo asscii a traves del teclado un unico 12f629 se activa permaneciendo los demas en espera, lo que indica que si descriminan y lo se activan a lo loco. te adjunto la simulacion con todos los programas hice 10 programas en total en basic para los receptores. hay 10 carpetas. por otro lado esta la simulacion de los 16f628A para pruebas. y la del sistema completo con tres 12f629, que es la que esta funcionando en simulacion....hablamos luego y gracias de nuevo...saludosss
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
72/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
PD: Por cierto encontre unas paginas interesantes con respecto a los comandos que soportan los pic, en el pbp, las encontre debido a que queria utilizar el 12c509A en vez del 629, pero no soporta el serin...saludosss http://melabs.com/support/12-bit.htm http://www.rentron.com/picbasic/prod...cbasic-pro.htm Archivos Adjuntos
Respuesta: Curso programacion de pic en bsic pro avance en lo siguiente: @ device pic12f629,intrc_osc,wdt_of f,pwrt_off,mclr_off,prot ect_off OPTION_REG.7 = 0 VRCON = 0 INCLUDE "modedefs.bas" Define Osc 4 CMCON = 7 TRISIO = %00001000 gpio = %00000000 ACEPTADO VAR GPIO.1 LEYENDO VAR GPIO.2 IN VAR GPIO.0 SERIAL VAR WORD DATAID VAR WORD CLEAR INICIO: LEYENDO = 0 ACEPTADO = 0 read 5,seriaL serout GPIO.4,T300,[SE RIAL,10] IF IN = 1 THEN GOSUB LEE ENDIF goto inicio LEE: SERIN IN,T300,["A"],DATAID http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
73/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
PAUSE 200 LEYENDO = 1 PAUSE 500 GOSUB VERIFICACION GOTO INICIO
VERIFICACION: IF DATAID = "P" THEN GOSUB GRABAR ENDIF IF DATAID = SERIAL THEN ACEPTADO = 1 serout GPIO.4,T300,[DATAID,10] GOTO INICIO ENDIF
Grabar: WRITE 5,daTaid 'graba valor recibido que esta en dataid en la eeprom el caracter seguido de A un 1 ACEPTADO = 1 PAUSE 1000 GOTO INICIO END
resulto ser que si lo guarda coloque un serout al inicio para chequear que lo guardaba, lo que hice fue guardar en la variable serial el valor guardado en la direccion 5 de la eerpom y luego lo envie por serout por un pin libre del pic y si resulto que si lo envio demasiado bueno...jejeje otra cosa que note es que cambie la letra y coloque otra a enviar y me muestra la anterior y luego sale la nueva letra algo asi: letra guarda A paro la simulacion cambio la letra y vuelvo a simular y me muestra la A por el serout del inicio y cuando programo la nueva letra empieza a parecer la nueva y deja de aparecer la A esto es en el virtual terminal...curioso
es como si el proteus mantuviera los datos de la eeprom del pic no sabia eso.
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
74/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
adjunto la imagen:
si es cierto ya que sin tocar ningun boton el programa queda en el lazo de inicio haciendo la lectura de al eeprom y luego la envia por serout, entonces si guarda en la memoria del pic la informacion. Imágenes Adjuntas
Respuesta: Curso programacion de pic en bsic pro yo de nuevo por aca parece que los corri a todos jejeje. bueno explico mis avances, resulta que logre hacer funcionar el circuito con serout y serin con un baud rate de t300 bastante bien, logre programar un receptor con un codigo a travez de la eeprom colocandole asi una identificacion al receptor de tal manera que pueda codificarse con cualquier serial en cualquier momento, todo esto es via serial de pic a pic, aparte logre a travez del virtual terminal vizualizar cada proceso, sabiendo con esto en que parte del programa del pic se encontraba ejecuantando en ese momento, lo unico es que se pone super lenta la simulacion pero si se aprecia..adjunto todo para quienes quieran ver como funciona cualquier duda me pregunta y si me pueden ayudar a mejorarlo de antemano muchas gracias...saludoss PD: la idea de este sistema es un control infrarojo para varios receptores para que se activen con una señal unica...saludos actualizacion del archivo con mejoras...saludos Archivos Adjuntos
Temas similares
Hola Lubeck, no me hechas una mano a mi??
GoX F4yCk3r DB dijo: Hola que tal, acabo de entrar a este rollo del PWM, es interesante, ya fabriique mis programa para la comunicacion en serie. Lo que tengo que hacer es lo siguiente. Aumentar o disminuir la velocidad del motor con el PWM, a traves de una comunicacion serial, es decir cuando el usuario mande la letra "A" la velocidad del motor debe aumentar y si mando la letra "D" la velocidad del motor disminuye. Hoy lo realice en clase y lo unico que logre es que el motor gire a su velocidad maximan, no se porque, pero al momento de establecer la comunicacion y mandar la letra "A" un led prende y el motor empieza a girar a todo lo que da. Además de que si mando otra letra este ya no hace nada http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
75/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
tengo que cortar la corriente para resetear el PIC. Si no es mucha molestia aqui les dejo mis dos programasy haber si me puenden ayudar. PD:Algun programa para simular la comunicacion serial? uso matlab y programo en Pbasic(microcode) salu2 Archivos Adjuntos
lubeck dijo: si te ayuda en algo mi consejo es que empieces con aplicaciones que esten bien sencillas y utilices un simulador como proteus como por ejemplo... lo de menos es hacerte la aplicación o ayudarte a buscarla pero no creo que te sirva como material didáctico y siempre vas a estar en busca de lo ya echo... ahora si ya tienes algo avanzado subelo y con gusto te echo una mano, con simulador es mucho mas facil... que solo con el codigo... recuerda que mi opinion es sin saber que tanto sabes al respecto...
HOLA lubeck. ya tengo programadas las 8 secuencias pero no se de que forma hacer cambie de secuencia cada que oprima el pulsador,
este el codigo que hasta el momento llevo. Código:
CMCON = 7 PORTB=0
'HACE QUE SE TRABAJE CON LAS ENTRADAS EN DIGITAL ' PONE LAS SALIDAS EN CERO PARA ARRANCAR
PORTA=0 'SALIDAS LED1 VAR PORTB.0 'Defino RB0 como LED1 LED2 VAR PORTB.1 LED3 VAR PORTB.2 LED4 VAR PORTB.3 http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
76/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
LED5 VAR PORTB.4 LED6 VAR PORTB.5 LED7 VAR PORTB.6 LED8 VAR PORTB.7 'ENTRADAS PULSADOR VAR PORTA.0 TRISB = 0 ' selecciono los pines de PORTB como salidas TRISA=1
' selecciono los pines de PORTA como ENTRADAS
CAMBIOSECUENCIA: if pulSADOR=1 then GOTO INICIO GOTO CAMBIOSECUENCIA
'SECUENCIA 1 (SE PRENDEN Y SE APAGAN UNO POR UNO) INICIO: PAUSE 2000 LED1=1 PAUSE 500 LED1=0 LED2 = 1 PAUSE 500 LED2=0 LED3 = 1 PAUSE 500 LED3=0 LED4 = 1 PAUSE 500 LED4=0 LED5 = 1 PAUSE 500 LED5=0 LED6 = 1 PAUSE 500 LED6=0 LED7 = 1 PAUSE 500 http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
77/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
LED7=0 LED8 = 1 PAUSE 500 LED8=0 PAUSE 2000 GOTO INICIO
SECUENCIA2: '(SE PRENDEN Y SE APAGAN DE DOS EN DOS) LED1=1 : LED2 = 1 ' PRENDE
LED 1 Y 2
PAUSE 500 ' ESPERA 0,5 SEGUNDOS LED1= 0 LED2 = 0 ' LED 1 2 SE APAGAN LED3=1 LED4 =1 PAUSE 500 LED3=0 LED4 =0 LED5=1 LED6=1 PAUSE 500 LED5=0 LED6=0 LED7=1 LED8=1 PAUSE 500 LED7=0 LED8=0 GOTO SECUENCIA2 'SECUENCIA3: (SE PRENDEN Y SE APAGAN DE TRES EN TRES) PAUSE 2000 LED1=1 LED2=1 LED3=1 PAUSE 500 LED1=0 LED2=0 LED3=0 http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
78/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
PAUSE 500 LED4=1 LED5=1 LED6=1 PAUSE 500 LED4=0 LED5=0 LED6=0 PAUSE 500 LED7=1 LED8=1 PAUSE 500 LED7=0 LED8=0 PAUSE 2000 'SECUENCIA 4 (SE PRENDEN Y SE APAGAN DE CUATRO EN CUATRO) PORTB=%00001111
'METODO ABREVIADO PARA PONER LAS CUATO PRIMERAS SALIDAS A 1
PAUSE 500 PORTB=%11110000 PAUSE 500 PORTB=%00000000 PAUSE 2000 'SECUENCIA 5 (SE PRENDEN Y SE APAGAN DE UNO EN
UNO DEL 8 AL 1)
LED8=1 PAUSE 500 LED8=0 LED7 = 1 PAUSE 500 LED7=0 LED6 = 1 PAUSE 500 LED6=0 LED5 = 1 PAUSE 500 LED5=0 LED4 = 1 PAUSE 500 LED4=0 LED3 = 1 PAUSE 500 LED3=0 http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
79/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
LED2 = 1 PAUSE 500 LED2=0 LED1 = 1 PAUSE 500 LED1=0 PAUSE 2000 'SECUENCIA 6 (SE PRENDEN Y SE APAGAN DE DOS EN DOS DEL 8 AL 1) LED8=1 : LED7 = 1 ' PRENDE
LED 1 Y 2
PAUSE 500 ' ESPERA 0,5 SEGUNDOS LED8= 0 : LED7 = 0 ' LED 1 2 SE APAGAN LED6=1: LED5 =1 PAUSE 500 LED6=0 LED5 =0 LED4=1 LED3=1 PAUSE 500 LED4=0 LED3=0 LED2=1 LED1=1 PAUSE 500 LED2=0 LED1=0 PAUSE 2000 'SECUENCIA 7(SE PRENDEN Y SE APAGAN DE TRES EN TRES DEL 8 AL 1) LED8=1 LED7=1 LED6=1 PAUSE 500 LED8=0 LED7=0 LED6=0 PAUSE 500 LED5=1 LED4=1 LED3=1 PAUSE 500 LED5=0 LED4=0 http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
80/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
LED3=0 PAUSE 500 LED2=1 LED1=1 PAUSE 500 LED2=0 LED1=0 PAUSE 2000 'SECUENCIA 7(SE PRENDEN Y SE APAGAN DE CUATRO EN CUATRO DEL 8 AL 1) LED8=1 LED7=1 LED6=1 LED5=1 PAUSE 500 LED8=0 LED7=0 LED6=0 LED5=0 PAUSE 500 LED4=1 LED3=1 LED2=1 LED1=1 PAUSE 500 LED4=0 LED3=0 LED2=0 LED1=0 GOTO INICIO' SE REPITE END 'FIN DEL PROGRAMA Archivos Adjuntos
Temas similares
reyvilla dijo: prueba con este fijate que le faltaba y por otra lado juega colacandole las otras secuencias me http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
81/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
avisas. '******************* ****************************** *************** '* Name : UNTITLED.BAS * '* Author : [select VIEW...EDITOR OPTIONS] * '* Notice : Copyright (c) 2010 [select VIEW...EDITOR OPTIONS] * '* : All Rights Reserved * '* Date : 22/10/2010 * '* Version : 1.0 * '* Notes : * '* : * '******************* ****************************** *************** @ DEVICE pic16F628 @ DEVICE INTRC_OSC_NOCLKOUT ' Opción del Osc Interno @ DEVICE WDT_Off ' Watchdog Timer ON @ DEVICE PWRT_Off ' Power-On Timer @ DEVICE BOD_Off @ DEVICE MCLR_OFF ' Master Clear Opción interno @ DEVICE LVP_OFF ' Bajo voltaje de programación @ DEVICE CPD_OFF ' Protección del código de memoria OFF @ DEVICE PROTECT_OFF' protección de código OFF Define Osc 4 CMCON = 7 'HACE QUE SE TRABAJE CON LAS ENTRADAS EN DIGITAL PORTB=0 led1 var portb.0 led2 var portb.1 pulsador var porta.0 contador var byte trisa=1 trisb=0 inicio: if pulsador = 1 then contador = contador+1 gosub aumentar endif goto inicio aumentar: if contador = 1 then gosub secuencia1 http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
82/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
endif if contador = 2 then gosub secuencia2 goto aumentar endif secuencia1: led1=1 pause 200 Led1=0 led2=1 pause 200 led2=0 goto aumentar secuencia2: led2=1 pause 200 Led2=0 led1=1 pause 200 led1=0 goto aumentar end
HOLA REY he probado de todas las maneras y no me fúnciona,, ahora el programa solo me salta a primera secuencia y ya no sale de allí..(envío el circuito en proteus) les agradezco me ayuden con este problema. Archivos Adjuntos
Respuesta: Curso programacion de pic en bsic pro no es lo mas adecuado como te menciono lo mejor es usar el
ON INTERRUPT ...
pero he encontrado un ejemplo claro de como se usa! Algun dia lo encontrare es cuestión de tiempo...
Listo creo que es una buena ayuda.... http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
83/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
Who is NEXT? [/QUOTE] HOLA . al final utilicé el método que me pasaste del los cases y bueno de momento esa parte la tengo solucionada,, lo que pasa es que ahora me piden adicionar otro pulsador para hacer cambiar la velocidad de las secuencias . (un pulsdador para cambio de secuencias y otro para hacerles variar la velocidad a las secuencias) le agradeceria me hecharan una mano... os dejo el código que llevo. Código:
Define Osc 4 CMCON = 7 'HACE QUE SE TRABAJE CON LAS ENTRADAS EN DIGITAL TrisA=1 trisB=0 led0 var portb.0 led1 var portb.1 led2 var portb.2 led3 var portb.3 led4 var portb.4 led5 var portb.5 led6 var portb.6 led7 var portb.7 pulsador var porta.0 contador var byte clear PortB=0 inicio: if pulsador then pause 200 contador = contador+1 if contador >=8 then contador =0 endif select case contador http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
84/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
case 0 PORTB=%00001111 gosub TIEMPO_ON PORTB=%11110000 GOSUB TIEMPO_Off case 1 PORTB=%00000000 PORTB=%11001100 gosub TIEMPO_ON PORTB=%01000100 GOSUB TIEMPO_OFF case 2 PORTB=%10101010 case 3 PORTB=0 led7=1 gosub tiempo_on led7=0 led6=1 gosub tiempo_on led6=0 led5=1 gosub tiempo_on led5=0 led4=1 gosub tiempo_on led4=0 led3=1 gosub tiempo_on led3=0 led2=1 gosub tiempo_on led2=0 led1=1 gosub tiempo_on led1=0 led0=1 http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
85/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
gosub tiempo_on led0=0 case 4 led0=1 gosub tiempo_on led0=0 led1=1 gosub tiempo_on led1=0 led2=1 gosub tiempo_on led2=0 led3=1 gosub tiempo_on led3=0 led4=1 gosub tiempo_on led4=0 led5=1 gosub tiempo_on led5=0 led6=1 gosub tiempo_on led6=0 led7=1 gosub tiempo_on led7=0 case 5 PORTB=%00011000 GOSUB TIEMPO_ON PORTB=%00100100 GOSUB TIEMPO_OFF case 6 PORTB=0 led7=1 gosub tiempo_on led6=1 gosub tiempo_on http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
86/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
led5=1 gosub tiempo_on led4=1 gosub tiempo_on led3=1 gosub tiempo_on led2=1 gosub tiempo_on led1=1 gosub tiempo_on led0=1 gosub tiempo_on portb=%10000000 case 7 led7=1 gosub tiempo_on led7=0 led6=1 gosub tiempo_on led6=0 led5=1 gosub tiempo_on led5=0 led4=1 gosub tiempo_on led4=0 led3=1 gosub tiempo_on led3=0 led2=1 gosub tiempo_on led2=0 led1=1 gosub tiempo_on led1=0 led0=1 gosub tiempo_on led0=0 led0=1 gosub tiempo_on http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
87/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
led0=0 led1=1 gosub tiempo_on led1=0 led2=1 gosub tiempo_on led2=0 led3=1 gosub tiempo_on led3=0 led4=1 gosub tiempo_on led4=0 led5=1 gosub tiempo_on led5=0 led6=1 gosub tiempo_on led6=0 led7=1 gosub tiempo_on led7=0 end select goto inicio tiempo_on: PAUSE 180 RETURN 'CON TIEMPO_OFF MANEJO EL TIEMPO QUE DURAN LOS LED APAGADOS tiempo_off: PAUSE 180 RETURN end Archivos Adjuntos
Temas similares
Respuesta: Curso programacion de pic en bsic pro http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
88/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
Por favor, alguien me puede ayudar con una comunicacion serial entre 2 PIC12f675, intente con estos codigos, pero no me corren en proteus y ya no se que más cambiar :
emisor Código:
@ DEVICE pic12F675, intrc_osc_noclkout, wdt_off, pwrt_on, mclr_off, bod_off, protect_off INCLUDE "modedefs.bas" define OSC 4 define OSCCAL_1K 1 botonA var gpio.1 botonB var gpio.2 botonC var gpio.4 transmitir: if botonA=0 then envio1 if botonB=0 then envio2 if botonC=0 then envio3 goto transmitir envio1: serout gpio.5,N2400,["A"] pause 500 goto transmitir envio2: serout gpio.5,N2400,["B"] pause 500 goto transmitir envio3: serout gpio.5,N2400,["C"] pause 500 goto transmitir
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
89/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
end receptor Código:
@ DEVICE pic12F675,intrc_osc_noclkout, wdt_off, pwrt_on, mclr_off, bod_off, protect_off INCLUDE "modedefs.bas" define OSCCAL_1K 1
ledr var gpio.1 leda var gpio.2 ledv var gpio.4 datos var byte high ledr pause 500 low ledr recibir: serin gpio.0,N2400,1,recibir,datos if datos="A" then high ledr pause 1000 if datos="B" then high leda pause 1000 if datos="C" then high ledv pause 1000 low ledr:low leda:low ledv goto recibir end
Muchas gracias a quien se dé el tiempo, adjunto la simulación. Archivos Adjuntos
Respuesta: Curso programacion de pic en bsic pro Hola, reyvilla, estaba leyendo otra vez tu codigo, y trate de sacarle lo que supongo esta demás para http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
90/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
mi,y anotaba al costado lo que supongo hace cada sección. Yo solo necesito 3 o 4 pulsadores. ( si me ayudas, no se como poner la imagen para que se vea, la adjunté) Dejé una parte de tu código como guia y ahora quiero ver como construyo sobre él. Código:
@ device pic12f675,intrc_osc,wdt_off,pwrt_off,mclr_off,protect_off INCLUDE "modedefs.bas" define OSCCAL_1K 1 Define Osc 4 CMCON = 7 ansel=0 vrcon=0 adcon0=0 TRISIO = %00001001 gpio
= %00000000
ACEPTADO
VAR GPIO.1
LEYENDO IN
VAR GPIO.2 ' VAR GPIO.0 '
ESPERANDO VAR GPIO.5 led var GPIO.4 SERIAL
VAR WORD
DATAID
VAR WORD
'
CLEAR ' LEYENDO = 0
'en esta parte lee el dato almacenado en la eeprom
' ACEPTADO = 0 ' READ 5,serial ' GPIO.4 = 1 '¿por que haces esto???? 'SEROUT GPIO.4,T9600,[" CODIGO ACTUAL ",SERIAL,10]
'inicio
INICIO: http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
91/92
10/6/2017
CursodeprogramacióndePIC enPICBasicPro
LEYENDO = 0
' aqui espera hasta que llegue algo a gpio.o
ACEPTADO = 0 ESPERANDO = 1 IF IN = 1 THEN ESPERANDO = 0 GOTO LEE ENDIF IF IN = 0 THEN GOTO INICIO ENDIF GOTO INICIO
LEE:
'una vez que algo llego a gpio.0, lo graba en
dataid, anteponiendo '‐' LEYENDO = 1 SERIN IN,T9600,[" ‐ "],DATAID 'Y ES LA BANDERA, SI Y NO LLEGA SE QUEDA ESPERANDO high led pause 500 low led 'SEROUT GPIO.4,T9600,[" CODIGO LEIDO ",DATAID,10]
'saca lo leido por gpio.4
LEYENDO = 0 if dataid="1" then high led
' por ejemplo que encienda un led cuando dataid=
'algo' low led goto inicio end Saludos.
http://www.forosdeelectronica.com/f24/curso-programacion-pic-picbasic-pro-20658/index3.html
92/92