Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature currently requires accessing the site using the built-in Safari browser.
Device = 18F4550 ' Usamos el PIC 18F4550, pero puedes declarar cualquiera de los 18Fxx5x.
Xtal = 48 ' El PLL interno siempre ha de ser de 48MHz. (No se refiere al cristal de cuarzo)
Reminders = 1 ' Mostrar todos los avisos al compilar.
@CONFIG_REQ ; Configuración para usar un cristal de 20MHz.
@PLL_Req ; * Haz clic aquí para ver otras configuraciones del cristal.
@__config config1l, PLLDIV_5_1 & CPUDIV_1_1 & USBDIV_2_1
@__config config1h, FOSC_HSPLL_HS_1
@WATCHDOG_REQ
@__config config2h, WDT_OFF_2 & WDTPS_128_2
@DEBUG_REQ
@__config config4l, LVP_OFF_4 & ICPRT_OFF_4 & XINST_OFF_4 & DEBUG_OFF_4
@__config config3h, PBADEN_OFF_3
All_Digital = 1 ' Todas las entradas/salidas serán digitales.
'-------- Configuración Encoder -----------
Symbol INTF = INTCON.1 ' RB0 External Interrupt Flag
Symbol INTE = INTCON.4 ' RB0 External Interrupt Enable
Symbol GIE = INTCON.7 ' Global Interrupt Enable
Symbol INTEDG = INTCON2.6 ' Flag = 0 Flanco bajada. Flag = 1 Flanco subida.
On_Interrupt GoTo Interrupcion ' Interrupción por Hardware (es la más rápida).
GIE = 1 ' Activa interrupciones generales.
INTE = 1 ' Activa la interrupción externa RB0/INT.
INTEDG = 1 ' Hace que inicialmente la interrupción se dispare
' por flanco de subida.
Dim x As Word ' Variable X ---> contador de posición actual.
TRISA = %11111111
TRISB = %11111111 ' Sólo usamos las entradas RB0 y RB1 para el encoder.
TRISC = %11111111
TRISD = %11111111
USB_Descriptor = "CDCDESC.INC" ' Descriptor del modo CDC (Puerto COM virtual)
Dim PP0 As Byte System ' Estado del USBPOLL
Dim Buffer As String * 20 ' Declaramos (sobradamente) un buffer de 20 bytes.
DelayMS 500 ' Damos tiempo para inicializarse.
Clear ' Pone a cero toda la memoria RAM del PIC antes de comenzar.
Repeat
USBPoll ' El PIC espera hasta enlazar con el PC a través del USB.
Until PP0 = 6
' --------------------------------------------------------------------------------
While 1 = 1
Buffer = Str$(Dec5, x) ' Convierte X (número) en una cadena (texto) de 5 cifras en ASCII.
' Esta cadena mostrará de 00000 hasta 65535.
Repe:
USBOut 3, Buffer, 5, Repe ' Envía la cadena de 5 bytes (ASCII correspondiente al número)
' al PC a través del USB.
Wend
End
Interrupcion: '-------- Decodificador de Encoder --------------
Context Save ' Salva en contexto de los registros antes de operar con la interrupción.
If PORTB.0 = 1 Then ' Si RB0 se ha puesto a 1 (flanco de subida),
INTEDG = 0 ' entonces activar la siguiente interrupción por flanco de bajada.
If PORTB.1 = 1 Then ' Si RB1 está a 1,
Inc x ' entonces incrementar el contador X.
EndIf
Else ' Si RB0 se ha puesto a 0 (flanco de bajada),
INTEDG = 1 ' entonces activar la siguiente interrupción por flanco de subida.
If PORTB.1 = 1 Then ' Si RB1 está 1,
Dec x ' entonces decrementar el contador X.
EndIf
EndIf
INTF = 0 ' Borra el "flag" de la interrupción RB0/Int por poder permitir la
' siguiente interrupción cuando ocurra.
Context Restore ' Restablece el contexto de los registros tal como estaban antes de la
' interrupción.
Include "PROTON_G4.INT"
'***********************************
Adin_Res = 10 'resolucuion a 10-bit
ADIN_DELAY = 50 'Allow 50us sample time
'***********************************
TRISA = %00000001 'configura el el bit.0 del(PORTA.0) como entrada Analoga
ADCON1 = %1001 'Set de entrada analógica en PORTA.0
'***********************************
Dim XPOS_START As Byte
Dim XPOS_END As Byte
Dim YPOS_START As Byte
Dim YPOS_END As Byte
Dim SET_CLR As Byte
'***********************************
Dim DATO As Word
Dim VOLT As Byte
'***********************************
DelayMS 300
Cls
XPOS_START = 0
YPOS_START = 0
XPOS_END = 127
YPOS_END = 63
SET_CLR = 1
Line SET_CLR , XPOS_START , YPOS_START , XPOS_END , YPOS_END
Cls
DelayMS 100
Line 1,0,0,127,0 'Dibuja un Marco en la Glcd
Line 1,0,63,127,63
Line 1,0,0,0,63
Line 1,127,0,127,63
Line 1,0,30,127,30
FRANK:
DATO = ADIn 0
VOLT = DATO * 0.0488
Print At 2,55,Inverse 0, Dec2 VOLT,"VOLTAGE"
GoTo FRANK
si miran con detenimiento encontraran una fabulosa libreria que nos ayuda un monton lo demas es sentido común claro sin dejar de lado q para cada GLCD es necesario consultar su respectivo hoja de datos, porq, 1 no todas las GLCD traen el mismo orden de conexiones 2 es de gran importancia saber con q tipo de controlador vamos a trabajar si es toshiba o samsung, claro y la referncia del controlador cuenta ya q las librerias de Proton por ahora no soportan todos los tipos de controladores q hay en el mercado para samsung trabaja muy bien con el controlador KS0108 y para toshiba el t6963 con estos para las lcd monocromaticas es suficiente cabe destacar q son unos de los mas comerciales aun que vamos a encontrar otros es por eso q antes de comprar una GLCD debemos mirar el data.
En la rutina encontraremos como leer un voltage de 0 a 5vot. atravez del puerto A/D y asi mostrarlo en pantalla, tambien vamos a poder observar un marco al tamaño de la GLCD y aqui debajo les dejo lo mas importante como debe ir nuestra libreria, claro debemos ajustala a nuestras necesidades
Device = 18F452
Xtal = 20
LCD_DTPort = PORTD
LCD_RSTPin = PORTB.3 'B.5-c1
LCD_ENPin = PORTC.0 'B.4-E0
LCD_RWPin = PORTB.4 'B.3-C0
LCD_CS1Pin = PORTB.0 'B.0-E1
LCD_CS2Pin = PORTB.1 'B.1-E2
LCD_RSPin = PORTB.2 'B.2
LCD_Type = GRAPHIC
Internal_Font = On
Font_Addr = 0
SDA_Pin = PORTC.4
SCL_Pin = PORTC.3
Serial_Baud = 9600
Rsout_Pin = PORTC.6
Rsout_Mode = TRUE
Rsout_Pace = 1
Rsin_Pin = PORTC.7
Rsin_Mode = TRUE
Hserial_Baud = 2400 ' Set baud rate to 2400 for 4MHz XTAL
Hserial_RCSTA = %10010000 ' Enable serial port and continuous receive
Hserial_TXSTA = %00100000 ' Enable transmit and asynchronous mode
Hserial_Clear = On ' Enable Error clearing on received characters
Keypad_Port = PORTB
CCP1_Pin = PORTC.2
CCP2_Pin = PORTC.1
Symbol T300 = 3313
Symbol N300 = 3313 + $4000
Symbol T600 = 1646
Symbol N600 = 1646 + $4000
Symbol T1200 = 813
Symbol N1200 = 813 + $4000
Symbol T2400 = 396
Symbol N2400 = 396 + $4000
Symbol T4800 = 188
Symbol N4800 = 188 + $4000
Symbol T9600 = 84
Symbol N9600 = 84 + $4000
Symbol OT2400 = 396 + $8000 ' Open True
Symbol OT1200 = 813 + $8000 ' Open True
Symbol OT9600 = 84 + $8000 ' Open True
Symbol OT300 = 3313 + $8000 ' Open True
Symbol ON2400 = 396 + $4000 + $8000 ' Open Inverted
Symbol ON1200 = 813 + $4000 + $8000 ' Open Inverted
Symbol ON9600 = 84 + $4000 + $8000 ' Open Inverted
Symbol ON300 = 3313 + $4000 + $8000 ' Open Inverted
' Rsout / Serial Constants
Symbol HOME = 1
Symbol BELL = 7
Symbol BKSP = 8
Symbol TAB = 9
Symbol CR = 13
All_Digital = TRUE ' Set PORTA and PORTE to all digital