Code:
;***************************CONFIG SETUP***************************
;__CONFIG _CONFIG1, _LVP_OFF & _FCMEN_ON & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_OFF & _WDT_OFF & _HS_OSC
;__CONFIG _CONFIG2, _WRT_OFF & _BOR21V
'************************************************* ******************************
'==========================MCU SETUP============================================
DEFINE OSC 20
Include "modedefs.bas"
DEFINE ADC_BITS 10 ' ADCIN resolution (Bits)
DEFINE ADC_CLOCK 0 ' Work around that sets Vref bits in ADCON1
DEFINE ADC_SAMPLEUS 50 ' ADC sampling time (uSec)
ADCON0=ADCON0 | %11000000 ' Work around that sets ADCS in ADCON0
CM1CON0 = 0
CM2CON0 = 0
ANSEL = 0 ' set ANx as analog
ANSELH = 0
ADCON1 = %10000000 ' Right justified results for 10 bits
ADCON0 = %10000001 ' Internal OSC, AN0, Configure and turn on A/D Module
OPTION_REG=7
INTCON = 0
'============================I/O SETUP==========================================
TRISA = %0
TRISB = %11111111
TRISC = %10000000
TRISD = 0
TRISE = 0
'================================usuart=========== =============================9+
'==============================BAUD SETUP=======================================
N96 con 16416 ' Inverted 19200 baud for the lcd rs232
T96 con 32 '19200 TTL (TBD)
RES var PORTA.1'PIN 3
SDA var PORTA.2 'pin 4
SCL VAR PORTA.3 'pin 5
TEXT VAR BYTE[20]
LENGTH VAR BYTE[2]
DC VAR BIT' "DATA OR COMMAND", 1=DATA;0=COMMAND
LCD_DATA VAR BYTE
COM VAR BYTE'COMMAND
PAGE VAR BYTE'LCD PAGE(B0 TO B7)
I VAR BYTE
J VAR BYTE
X VAR BYTE' LCD POSITION X(0 TO 127)
Y VAR BYTE'LCD POSITION X(0 TO 7)
CLEAR
'================================================= ============================
PAGE = $B0
high res
LOW RES
PAUSE 20
HIGH RES
PAUSE 50
pause 5
GOSUB INIT
GOSUB CLEAR_LCD
GOSUB TITLE
MAIN:
PAUSE 1000
COM=$A6:GOSUB SEND_COMMAND '$A6=NORMAL MODE;$A7=INVERSE MODE
PAUSE 100
COM=$2E:GOSUB SEND_COMMAND
COM=$27:GOSUB SEND_COMMAND
COM=$00:GOSUB SEND_COMMAND
COM=$03:GOSUB SEND_COMMAND
COM=$04:GOSUB SEND_COMMAND
COM=$06:GOSUB SEND_COMMAND
COM=$00:GOSUB SEND_COMMAND
COM=$FF:GOSUB SEND_COMMAND
COM=$2F:GOSUB SEND_COMMAND
PAUSE 10000
GOTO MAIN
'=========================lcd initialization====================================
INIT:
high res
LOW RES
PAUSE 20
HIGH RES
PAUSE 50
COM=$AE:GOSUB SEND_COMMAND'DISPALY OFF
COM=$20:GOSUB SEND_COMMAND'HORIZONTAL MODE
COM=$00:GOSUB SEND_COMMAND
COM=$40:GOSUB SEND_COMMAND' DISPLAY START AT 0
COM=$A1:GOSUB SEND_COMMAND'REMAP 0-127
COM=$C8:GOSUB SEND_COMMAND'SCAN DIRECTION
COM=$DA:GOSUB SEND_COMMAND'COM PINS
COM=$10:GOSUB SEND_COMMAND'COM PINS
COM=$A4:GOSUB SEND_COMMAND' DISPLAY ON
COM=$A7:GOSUB SEND_COMMAND '$A6=NORMAL MODE;$A7=INVERSE MODE
COM=$AF:GOSUB SEND_COMMAND ' DISPLAY ON
return
'================================================= ==============================
'==============================clear lcd========================================
CLEAR_LCD:
FOR J=0 TO 7
FOR I=0 TO 127
LCD_DATA=$00:GOSUB SEND_DATA
NEXT I
NEXT J
RETURN
'****************SEND COMMAND******************************************* *****
SEND_COMMAND:
dc=0
SHIFTOUT SDA,SCL,1,[DC\1]'SEND COMMAND BIT(D/C=0)
SHIFTOUT SDA,SCL,1,[COM\8]
dc=1
RETURN
'************************************************* ****************************
RETURN
'======================Send data============================================== =
SEND_DATA:
DC=1
SHIFTOUT SDA,SCL,1,[DC\1]'SEND DATA BIT(D/C=1)
SHIFTOUT SDA,SCL,1,[LCD_DATA\8]
RETURN
'================================================= ==============================
'=============================FILL================ =============================
FILL:
FOR J=0 TO 7
FOR I=0 TO 127
LCD_DATA=$FF:GOSUB SEND_DATA
NEXT I
NEXT J
RETURN
'================================================= ==============================
'=========================TITLE=================== ==============================
TITLE:
X=0:Y=0 :GOSUB SET_XY
FOR I=0 TO 127
LOOKUP I,[$00,$40,$60,$50,$7E,$50,$60,$40,$02,$06,$0E,$1E,$3 E,$00,$00,$00,_
$00,$00,$00,$00,$00,$1F,$3F,$60,$60,$60,$60,$60,$6 0,$3C,$1C,$00,_
$00,$7F,$7F,$61,$61,$61,$61,$61,$61,$3F,$1E,$00,$0 0,$1E,$3F,$61,_
$61,$61,$61,$61,$61,$38,$18,$00,$00,$00,$00,$00,$0 0,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,$00,$1F,$3F,$60,$60,$60,$6 0,$60,$60,$3C,_
$1C,$00,$00,$1E,$3F,$61,$61,$61,$61,$61,$61,$38,$1 8,$00,$00,$3F,_
$7F,$60,$18,$06,$06,$18,$60,$7F,$3F,$00,$00,$00,$0 0,$00,$00,$00,_
$00,$00,$00,$1C,$63,$41,$5D,$41,$5D,$41,$5D,$41,$5 D,$41,$7F,$00],LCD_DATA
lcd_data=lcd_data rev 8
GOSUB SEND_DATA
NEXT I
X=0:Y=1 :GOSUB SET_XY
for i=0 to 127
lookup i,[$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0 0,$00,$00,$00,_
$00,$00,$00,$00,$00,$F8,$FC,$06,$06,$06,$C6,$C6,$C 6,$FC,$F8,$00,_
$00,$FE,$FE,$80,$80,$80,$80,$80,$80,$00,$00,$00,$0 0,$18,$1C,$86,_
$86,$86,$86,$86,$86,$FC,$78,$00,$00,$00,$00,$00,$0 0,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,$00,$F8,$FC,$06,$06,$06,$C 6,$C6,$C6,$FC,_
$F8,$00,$00,$18,$1C,$86,$86,$86,$86,$86,$86,$FC,$7 8,$00,$00,$FE,_
$FE,$00,$00,$00,$00,$00,$00,$FE,$FE,$00,$00,$00,$0 0,$00,$00,$00,_
$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0 0,$00,$00,$00],lcd_data
lcd_data=lcd_data rev 8
GOSUB SEND_DATA
NEXT I
X=0:Y=3:GOSUB SET_XY
for i=0 to 127
lookup i,[$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$3C,$7E,$C 3,$C3,$C3,$C3,_
$C3,$C3,$71,$30,$00,$00,$7F,$FF,$C3,$C3,$C3,$C3,$C 3,$C3,$C3,$C3,_
$00,$00,$7F,$FF,$C1,$C1,$C1,$C1,$C1,$C1,$FF,$7F,$0 0,$00,$7F,$FF,_
$C3,$C3,$C3,$C3,$C3,$C3,$7E,$3C,$00,$00,$3F,$7F,$C 0,$C0,$C0,$C0,_
$C0,$C0,$70,$30,$00,$00,$FF,$FF,$03,$03,$03,$03,$0 3,$03,$FF,$FF,_
$00,$00,$C0,$C0,$C0,$C0,$FF,$FF,$C0,$C0,$C0,$C0,$0 0,$00,$FF,$FF,_
$0C,$0C,$03,$03,$00,$00,$FF,$FF,$00,$00,$3F,$7F,$C 0,$C0,$C0,$C1,_
$C1,$C1,$79,$39,$00,$00,$00,$00,$00,$00,$00,$00,$0 0,$00,$00,$00],lcd_data
lcd_data=lcd_data rev 8
GOSUB SEND_DATA
NEXT I
X=0:Y=4:GOSUB SET_XY
for i=0 to 127
lookup i,[$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$30,$38,$0 C,$0C,$0C,$0C,_
$0C,$0C,$F8,$F0,$00,$00,$F8,$FC,$0C,$0C,$0C,$0C,$0 C,$0C,$0C,$0C,_
$00,$00,$FC,$FC,$80,$80,$80,$80,$80,$80,$FC,$FC,$0 0,$00,$FC,$FC,_
$80,$C0,$60,$30,$18,$0C,$04,$00,$00,$00,$F0,$F8,$0 C,$0C,$0C,$0C,_
$0C,$0C,$38,$30,$00,$00,$FC,$FC,$00,$00,$00,$00,$0 0,$00,$FC,$FC,_
$00,$00,$0C,$0C,$0C,$0C,$FC,$FC,$0C,$0C,$0C,$0C,$0 0,$00,$FC,$FC,_
$00,$00,$00,$00,$C0,$C0,$FC,$FC,$00,$00,$F0,$F8,$0 C,$0C,$0C,$8C,_
$8C,$8C,$F8,$F0,$00,$00,$00,$00,$00,$00,$00,$00,$0 0,$00,$00,$00],lcd_data
lcd_data=lcd_data rev 8
GOSUB SEND_DATA
NEXT I
X=0:Y=5:GOSUB SET_XY
for i=0 to 127
lookup i,[$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$1F,$3F,$3 0,$30,$30,$30,_
$30,$30,$30,$30,$00,$00,$0F,$1F,$30,$30,$30,$30,$3 0,$30,$1F,$0F,_
$00,$00,$1F,$3F,$30,$30,$30,$30,$30,$30,$1F,$0F,$0 0,$00,$00,$00,_
$00,$00,$00,$0F,$1F,$30,$30,$30,$30,$30,$30,$1C,$0 C,$00,$00,$30,_
$30,$30,$30,$3F,$3F,$30,$30,$30,$30,$00,$00,$0F,$1 F,$30,$30,$30,_
$30,$30,$30,$1E,$0E,$00,$00,$3F,$3F,$03,$03,$00,$0 0,$00,$00,$3F,_
$3F,$00,$00,$1F,$3F,$30,$30,$30,$30,$30,$30,$3F,$1 F,$00,$00,$3F,_
$3F,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$0 0,$00,$00,$00],lcd_data
lcd_data=lcd_data rev 8
GOSUB SEND_DATA
NEXT I
X=0:Y=6:GOSUB SET_XY
for i=0 to 127
lookup i,[$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$FF,$C 0,$C0,$C0,$C0,_
$C0,$C0,$00,$00,$00,$00,$FC,$FE,$03,$03,$03,$03,$0 3,$03,$FE,$FC,_
$00,$00,$FF,$FF,$E0,$F0,$D8,$CC,$C6,$C3,$81,$00,$0 0,$00,$00,$00,_
$00,$00,$00,$0C,$8E,$C3,$C3,$C3,$C3,$C3,$C3,$7E,$3 C,$00,$00,$03,_
$03,$03,$03,$FF,$FF,$03,$03,$03,$03,$00,$00,$FC,$F E,$03,$03,$03,_
$63,$63,$63,$7E,$7C,$00,$00,$FF,$FF,$00,$00,$C0,$C 0,$30,$30,$FF,_
$FF,$00,$00,$FF,$FF,$60,$60,$60,$60,$60,$60,$FF,$F F,$00,$00,$FF,_
$FF,$03,$03,$03,$03,$03,$03,$03,$03,$00,$00,$00,$0 0,$00,$00,$00],lcd_data
lcd_data=lcd_data rev 8
GOSUB SEND_DATA
NEXT I
RETURN
'===========================================SET X AND Y=========================
SET_XY:
COM=$21:GOSUB SEND_COMMAND
COM=X:GOSUB SEND_COMMAND
COM=127:GOSUB SEND_COMMAND
COM=$22:GOSUB SEND_COMMAND
COM=Y:GOSUB SEND_COMMAND
COM=Y:GOSUB SEND_COMMAND
RETURN
'================================================= ==============================
END
Bookmarks