V.- Uso do microcontrolador PIC16F628
NOTA: modificar o micro utilizado em Define Code Generation Tools... dentro do menu Source.
Circuito:
Componentes:
· MICRO (PIC16F628A)
Programa:
DEFINE OSC 4
CMCON = 7 ' PortA = digital I/O
VRCON = 0 ' A/D Voltage reference disabled
' Set LCD Data port
DEFINE LCD_DREG PORTB
' Set starting Data bit (0 or 4) if 4-bit bus
DEFINE LCD_DBIT 0
' Set LCD Register Select port
DEFINE LCD_RSREG PORTA
' Set LCD Register Select bit
DEFINE LCD_RSBIT 2
' Set LCD Enable port
DEFINE LCD_EREG PORTA
' Set LCD Enable bit
DEFINE LCD_EBIT 3
' Set LCD bus size (4 or 8 bits)
DEFINE LCD_BITS 4
' Set number of lines on LCD
DEFINE LCD_LINES 2
'
Set command delay time in us
DEFINE LCD_COMMANDUS 2000
' Set data delay time in us
DEFINE LCD_DATAUS 50
PAUSE 20
LCDOUT $FE, 1, "NOMBRE"
ASB:
GOTO ASB
END
vi.- Uso do Display Alfanumérico e Teclado.
Trocar o tipo de micro da mesma forma que o circuito anterior para -P16F877
Componentes:
ACTIVE (KEYPAD-SMALLCALC)
Programa:
DEFINE OSC 20
'DEFINE LOADER_USED 1
ADCON1 = 7
TRISE = 0
TRISB = %00001111
OPTION_REG = %00010101
'INTCON2 = %00000000
DEFINE
LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTE
DEFINE LCD_RSBIT 0
DEFINE LCD_EREG PORTE
DEFINE LCD_EBIT 1
DEFINE LCD_BITS 4
DEFINE LCD_LINES 2
DEFINE LCD_COMMANDUS 2000
DEFINE LCD_DATAUS 50
Tecla var
byte
FLAG VAR BIT
L1 CON
%01110000
L2 CON %10110000
L3 CON %11010000
L4 CON %11100000
PAUSE 20
LCDOUT $FE, 1,"Listo" 'Clear display and show “Preparado”
Rastreo:
PORTB =
L1
SELECT CASE PORTB & $0F
CASE %1110
LCDOUT $FE, 1,"ON/C"
FLAG = 1
CASE %1101
LCDOUT $FE, 1,"0"
FLAG = 1
CASE %1011
LCDOUT $FE, 1,"="
FLAG = 1
CASE %0111
LCDOUT $FE, 1,"+"
FLAG = 1
END SELECT
PORTB = L2
SELECT CASE PORTB & $0F
CASE %1110
LCDOUT $FE, 1,"1"
FLAG = 1
CASE %1101
LCDOUT $FE, 1,"2"
FLAG = 1
CASE %1011
LCDOUT $FE, 1,"3"
FLAG = 1
CASE %0111
LCDOUT $FE, 1,"-"
FLAG = 1
END SELECT
PORTB =
L3
SELECT CASE PORTB & $0F
CASE %1110
LCDOUT $FE, 1,"4"
FLAG = 1
CASE %1101
LCDOUT $FE, 1,"5"
FLAG = 1
CASE %1011
LCDOUT $FE, 1,"6"
FLAG = 1
CASE %0111
LCDOUT $FE, 1,"X"
FLAG = 1
END SELECT
PORTB =
L4
SELECT CASE PORTB & $0F
CASE %1110
LCDOUT $FE, 1,"7"
FLAG = 1
CASE %1101
LCDOUT $FE, 1,"8"
FLAG = 1
CASE %1011
LCDOUT $FE, 1,"9"
FLAG = 1
CASE %0111
LCDOUT $FE, 1,"/"
FLAG = 1
END SELECT
IF FLAG =
1 THEN
PAUSE 150
FLAG = 0
ENDIF
GOTO Rastreo