Curso de programación de PIC en PICBasic Pro

Que tal hace un tiempo realice un proyecto con el Nokia 7110 y lo simule en proteus , pero tocara mirar si los comandos que utilice aplica para el 1100.

por otro la lado para desarrollar la trama para para el generador de caracteres se necesita un software como el GLCD generator, Bitmap2 lcd , fastLCD
 
Última edición:
D@rio:
Estuve analizando el Link...
Yo creo que la manera mas facil si es utilizando el I2C, esta la direccion del esclavo la infomacion de los pines clk y data, donde no le entiendo en es los comandos, yo creo que el secreto esta en lo que nos menciona macatrodatos...
Reyvilla:
Excelente pagina.

Saludos amigos...
 
listo ya la encontré espero le sirva a nuestro amigo Dario luego posteo el circuito y la simulación es el envió de números de 0 9 a través de pic 16f877A utilizando el bitmap como generador de caracteres y visualizados en LCD NOKIA 7710.



Código:
'****************************************************************
'*  Name    : LCD_7110.PBP                                      *
'*  Date    : MECATRODATOS                                      *                                              *
'*  Notes   : Biblioteca  LCD de comandos para Nokia 7110       *
'*            o similares LCD                                   *
'*                                                              *
'****************************************************************

' LCD Command are:
'   Lcd_Init
'   LCD_ON                                                                                     
'   LCD_OFF
'   Lcd_GotoXY                                             
'   Lcd_Clear                                      
'   Lcd_Home                                               
'   Lcd_Contrast
'   Scr_Normal                                            
'   Scr_Invert
'   Rotate_0
'   Rotate_180                                             

'-------------------------------------------------------------------------------
'Variables comunes para LCD 3310 y 7110 
PosX            var Byte        'Variable para Posición X
PosY            var Byte        'Variable para Posición Y
FC              var Byte [6]    'Variable de 6 bytes = 1 Caracter
Lcd_Data        var Byte        'Comandos LCD de datos
ColumnNum       var Byte        'Número de columna

'variable Extra para LCD 7110
LowBits         VAR Byte        'Bajo Bits para la columna
HighBits        VAR Byte        'Los bits más alto en la columna

'-------------------------------------------------------------------------------
'Asignación de puertos          'Cambiar para emparejar su uso
Lcd_CLK         VAR PORTB.1     'LCD Clock
Lcd_DC          VAR PORTB.2     'LCD Data/Comando (A0 en la especificación)
Lcd_CS          VAR PORTB.3     'LCD Chip seleccion (WR en la especificación)
Lcd_RST         VAR PORTB.4     'LCD Reset
Lcd_VCC         VAR PORTB.5     'LCD Power
Lcd_SDA         VAR PORTB.6     'LCD Data

'-------------------------------------------------------------------------------
Lcd_Init:                                               'Dar formato a LCD, ejecute primero esto!
    Low Lcd_RST                                         'Reajustar LCD (HW reset)
    High Lcd_RST                                        'Restablecer Lanzamiento
    Low Lcd_CS                                          'Seleccionar Chip (WR)
    Low Lcd_DC                                          'Comando/Data (A0)

    Lcd_Data = %11100010:GoSub Lcd_SentByte             'Reajustar LCD (SW reset)
    Lcd_Data = %10100010:GoSub Lcd_SentByte             'Seleccione parcialidad del LCD
    
    GoSub Rotate_0                                      'Mostrar rotación 0
    'gosub Rotate_180                                   'DMostrar rotación 180
     
    Lcd_Data = %10100110:GoSub Lcd_SentByte             'Seleccione pantalla (visualización normal) 
    Lcd_Data = %00100100:GoSub Lcd_SentByte             'Establecer 5V relación resistencia
    Lcd_Data = %10000001:GoSub Lcd_SentByte             'Ajuste electrónico de volumen
    Lcd_Data = Contrast:GoSub Lcd_SentByte              'Ajuste el brillo de LCD
    Lcd_Data = %00101111:GoSub Lcd_SentByte             'Control de potencia
    Lcd_Data = %10101111:GoSub Lcd_SentByte             'Gire LCD ON
    Return

'-------------------------------------------------------------------------------
LCD_ON:                                                 'Gire LCD ON                                   
    Low Lcd_DC    
    Lcd_Data = %10101111:GoSub Lcd_SentByte
    Return

LCD_OFF:
    Low Lcd_DC                                          'Gire LCD OFF
    Lcd_Data = %10101110:GoSub Lcd_SentByte
    Return

Lcd_GotoXY:                                             'Ir a coordenadas XY
    Low Lcd_DC                                          '7110 LCD inicio de la columna 18
    'Y                                                  '18 Por consiguiente, se añadirá posX
    Lcd_Data = 176 + PosY:GoSub Lcd_SentByte            'Dirección de la página 0, 176 = 1011xxxx
    'X
    LowBits = (PosX+18) & %00001111                     
    HighBits = (PosX+18) & %11110000                    
    HighBits = HighBits >> 4                            
    Lcd_Data = %00000000 + LowBits:GoSub Lcd_SentByte   
    Lcd_Data = %00010000 + HighBits:GoSub Lcd_SentByte  
    Return

Lcd_Clear:                                              'limpiar Display                               
    Low Lcd_DC
    Lcd_Data = %01111000:GoSub Lcd_SentByte             'la línea de salida
    For PosY = 0 To 8
        Lcd_Data = 176 + PosY:GoSub Lcd_SentByte        'Dirección de la página 0, 176 = 1011xxxx
        Lcd_Data = %00010000:GoSub Lcd_SentByte         
        Lcd_Data = %00000000:GoSub Lcd_SentByte         
        High Lcd_DC
        For ColumnNum = 0 To 18                         'Enviar vacío de caracteres, 18 por página
            SHiftOUT Lcd_SDA , Lcd_CLK , msbfirst, [ 0,0,0,0,0,0 ] 
        Next ColumnNum                                             
        Low Lcd_DC
    Next PosY
    Return

Lcd_Home:                                               ' Inicio de Cursor
    PosX=0:PosY=0:GoSub Lcd_GotoXY
    Return

Lcd_Contrast:                                           'Contraste
    Low Lcd_DC
    Lcd_Data = %10000001:GoSub Lcd_SentByte             'Electrónica volumen
    Lcd_Data = Contrast:GoSub Lcd_SentByte              'El brillo de LCD
    Return

Scr_Normal:                                             'El modo de pantalla normal
    Low Lcd_DC
    Lcd_Data = %10100110:GoSub Lcd_SentByte     
    Return

Scr_Invert:                                             'Invertir el modo de pantalla
    Low Lcd_DC                          
    Lcd_Data = %10100111:GoSub Lcd_SentByte     
    Return

Rotate_0:                                               'Mostrar la rotación de 0 grados
    Lcd_Data = %10100001:GoSub Lcd_SentByte             'Seleccione el controlador serie de sesiones de la dirección (al revés)
    Lcd_Data = %11000000:GoSub Lcd_SentByte             'Seleccione el modo de salida común (normal)
    Return

Rotate_180:                                             'Mostrar la rotación de 180 grados
    Lcd_Data = %10100000:GoSub Lcd_SentByte             'Seleccione el controlador segmento de dirección (normal)
    Lcd_Data = %11001000:GoSub Lcd_SentByte             'Seleccione el modo de salida común (normal)
    Return

Lcd_SentByte:                                           'Enviar comandos o datos para LCD
    SHiftOUT Lcd_SDA , Lcd_CLK , msbfirst, [ Lcd_Data ]
    Return
'-------------------------------------------------------------------------------    
' Esta parte muestra cómo escribir en LCD
Lcd_SentChar:
    Select Case lcd_data
        Case 0                   
        	FC(0)=$3E:FC(1)=$51:FC(2)=$49:FC(3)=$45:FC(4)=$3E:FC(5)=$00 ' // 0
        Case 1                   
        	FC(0)=$00:FC(1)=$42:FC(2)=$7F:FC(3)=$40:FC(4)=$00:FC(5)=$00 ' // 1
        Case 2                   
        	FC(0)=$42:FC(1)=$61:FC(2)=$51:FC(3)=$49:FC(4)=$46:FC(5)=$00 ' // 2
        Case 3                  
        	FC(0)=$21:FC(1)=$41:FC(2)=$45:FC(3)=$4B:FC(4)=$31:FC(5)=$00 ' // 3
        Case 4                   
        	FC(0)=$18:FC(1)=$14:FC(2)=$12:FC(3)=$7F:FC(4)=$10:FC(5)=$00 ' // 4
        Case 5                   
        	FC(0)=$27:FC(1)=$45:FC(2)=$45:FC(3)=$45:FC(4)=$39:FC(5)=$00 ' // 5
        Case 6                   
        	FC(0)=$3C:FC(1)=$4A:FC(2)=$49:FC(3)=$49:FC(4)=$30:FC(5)=$00 ' // 6
        Case 7                   
        	FC(0)=$01:FC(1)=$71:FC(2)=$09:FC(3)=$05:FC(4)=$03:FC(5)=$00 ' // 7
        Case 8                   
        	FC(0)=$36:FC(1)=$49:FC(2)=$49:FC(3)=$49:FC(4)=$36:FC(5)=$00 ' // 8
        Case 9                   
        	FC(0)=$06:FC(1)=$49:FC(2)=$49:FC(3)=$29:FC(4)=$1E:FC(5)=$00 ' // 9
    End Select
Write_LCD:
    High Lcd_DC
    SHiftOUT Lcd_SDA , Lcd_CLK , msbfirst, [ FC(0),FC(1),FC(2),FC(3),FC(4),FC(5) ]
    Low Lcd_DC
    Return
'-------------------------------------------------------------------------------
 
Hola mi estimado mecatrodatos, tengo una consulta alrespecto y se que me puedes apoyar.

Mi consulta es como poder conectar un sensor pt100 o algun rtd o algun sensor de mayor rango y la alimentacione s de 220v ac

deseo conectarlo con un pic con salida a lcd y me mande una seÑal a la temperatura deseada a una salida del picc.

Espero me puedas responder pronto es para un trabajo de la universidad y necesito informacion,

de antemano se agradece la colaboracion.

Jhonatan vasquez tello
peru
 
Por otro lado amigo reyvilla se pueden desarrollar proyectos de manejo de GLCD con PBP, PROTON es otra ayuda pero que se pueden compilar y ensayar en el entorno de microde estudio estoy completamente seguro , ya que he realizado varios, aunque Proton es mas potente porque en la carpeta de Plugin esta el editor para caracteres GLCD en cambio con el PBP se tiene de incorporar a la carpeta para que me genere la trama y anexarlos al programa fuente. Dame tiempo y enriqueceremos el foro con estos conocimientos, compañeros TU, Dario, BYAXEL y LUBEK ayudan a que se aporten nuevas cosas.

Amigo vatejhomi para lo que necesitas te recomiendo el libro de electrónica de POTENCIA de Muhmmad H Rashid.
 
Última edición:
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
 

Adjuntos

  • lcd Nokia.rar
    17.8 KB · Visitas: 349
  • Proteus Model.zip
    29.3 KB · Visitas: 331
  • 3310 LCD.pdf
    805.7 KB · Visitas: 337
  • esquematico.rar
    74.3 KB · Visitas: 286
  • esquematico 3310.rar
    33.3 KB · Visitas: 251
  • LIBRARY 6610.rar
    3.4 KB · Visitas: 240
  • MODELS 6610.rar
    10.1 KB · Visitas: 233
Última edición:
que tal amigo si me puedes ayudar con el codigo para manejar un motor unpolar con el pic 16f628a

es decir con un pulsador que gire a un lado y con otro al lado contrario

gracias
 
hola chicos.
mecatrodatos, lubeck, reyvilla, muchas gracias por responder. ahora un par de dudas, mecatrodatos: ¿como hago para cargar las librarys y los models a mi proteus? otra cosita mecatrodatos, el codigo que dejaste en el post #524, cuando lo compilo, me da varios errores. ¿porque sera? estoy usando microcode para compilar.
muchisimas gracias amigos, saludosss
 
vas la carpeta donde esta lab center en C archivos de programa que es la de proteus y hay están las carpetas para incrustar las librerías con los puntos de extensión busca y anexalas , por otro lado subí la librería y no el codigo de fuente, espérame si mañana lo subo completo.
 
No amigo mio , te explicare con PBP y el entorno de microcode estudio se pueden realizar librerias , como las que utiliza el CCS compiler , pero con muy buenas prestaciones y optimizan el pic con el cual trabajas por ejemplo las puedes crear con comandos ASM y las llamas como si fueran .inc

es decir las incluyes al inicio del programa con terminación .bas , para ser mas claro si el programa que se realiza tiene una cantidad considerable de lineas lo puedes reducir llamando librerías o incluyéndolas.por ejemplo para leer un teclado matrixal puedes realizar la librería y adjuntar al inicio del programa como si adjuntaras un moddefast de comunicación serial.
 
Última edición:
aaah... ahora entiendo.
osea que, si yo copio y pego en un documento de texto la libreria que dejaste arriva, y le pongo por nombre: paisanito.bas y lo guardo en la carpeta pbp244 de pbp, cuando yo inicie un programa en pbasic, quedaria algo asi: "include paisanito.bas" y ya me habria ahorrado buena parte del codigo necesario.
¿es asi?
saludosss
 
Última edición:
si correcto, estoy buscando el código fuente en mi información, pero si no encuentro realizaremos el código de nuevo ya que tuvo que realizar una copia de seguridad de toda la información por un virus :confused:
 
ok amigo, gracias. te cuento que hice lo que te dije arriva, eso de poner la libreria en pbp244 y trate de compilar un codigo fuente para lcd nokia y me sale que la libreria y no el codigo que intento compilar, tiene algunas expresiones mal hechas. ¿que podra ser?
saludosss
 
Amigo dario te anexo un proyecto muy bien explicado que detalla el uso de las librerias y como incrustarlas en el codigo fuente principal, esperame si salgo de unas cosas de la universidad y te hecho una mano.
 

Adjuntos

  • Proyecto_librerias pic DS 1624.pdf
    110.8 KB · Visitas: 313
Hola que tal, tengo un pequeño problema, quiero controlar un motor de DC, solo necesito que cambie de giro, segun yo ya hice el programa y toda la cosa pero me falta la etapa de potencia, compre un l293d, para energizar el motor, solo que al simularlo me marca error, alguien me podria ayudar a conectar esta parte.
se los agradesco.
salu2
 
time var word
time=5000
trisb=0

inicio:
portb.0=1
portb.1=0
pause time

portb.1=1
portb.0=0
pause time
goto inicio
end

ese es mi programa, es sencillo, en el proteus si me corre pero conectando el motor de manera directa al pic, pero lei que no c puede conectar el motor directamente y me dijeron que el l293d me ayudaba a evitar que el pic se dañara.

aqui esta la pagina del data del l293d
http://www.datasheetcatalog.org/datasheet/texasinstruments/l293d.pdf

Aqui esta el diagrama de conexion que realice en proteus.
 

Adjuntos

  • motor.jpg
    motor.jpg
    147.1 KB · Visitas: 88
Última edición:
Atrás
Arriba