ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.06.2025
Просмотров: 8216
Скачиваний: 1
© MCS Electronics, 1995-2007
'+5V |
+5V |
'GND |
GND |
'V0 |
V0 |
'D0-D3 are not connected since 4 bit bus mode is used!
'Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.5 , Rs = Portb.6
Rem with the config lcdpin statement you can override the compiler settings
$regfile = "8515def.dat" $lcd = &HC000
$lcdrs = &H8000 Config Lcdbus = 4
Dim A As Byte
Config Lcd = 16 * 2 'configure lcd screen
'other options are 16 * 2 , 16 * 4 and 20 * 4, 20 * 2 , 16 * 1a 'When you dont include this option 16 * 2 is assumed
'16 * 1a is intended for 16 character displays with split addresses over 2 lines
'$LCD = address will turn LCD into 8-bit databus mode |
||
' |
use this with uP with external RAM and/or ROM |
|
' |
because it aint need the port pins ! |
|
Cls |
'clear the LCD |
|
display |
'display this at |
|
Lcd "Hello world." |
||
the top line |
||
Wait 1 |
'select the lower |
|
Lowerline |
||
line |
||
Wait 1 |
'display this at |
|
Lcd "Shift this." |
||
the lower line |
||
Wait 1 |
||
For A = 1 To 10 |
'shift the text to |
|
Shiftlcd Right |
||
the right |
'wait a moment |
|
Wait 1 |
||
Next |
||
For A = 1 To 10 |
'shift the text to |
|
Shiftlcd Left |
||
the left |
'wait a moment |
|
Wait 1 |
||
Next |
||
Locate 2 , 1 |
'set cursor |
|
position |
'display this |
|
Lcd "*" |
||
Wait 1 |
'wait a moment |
|
Shiftcursor Right |
'shift the cursor |
|
Lcd "@" |
'display this |
|
Wait 1 |
'wait a moment |
|
Home Upper |
'select line 1 and |
|
return home |
'replace the text |
|
Lcd "Replaced." |
||
Wait 1 |
'wait a moment |
|
Cursor Off Noblink |
'hide cursor |
|
page -221-
© MCS Electronics, 1995-2007 |
||
Wait 1 |
'wait a moment |
|
Cursor On Blink |
'show cursor |
|
Wait 1 |
'wait a moment |
|
Display Off |
'turn display off |
|
Wait 1 |
'wait a moment |
|
Display On |
'turn display on |
|
'-----------------NEW support for 4-line LCD------ |
||
Thirdline |
||
Lcd "Line 3" |
||
Fourthline |
||
Lcd "Line 4" |
'goto home on line |
|
Home Third |
||
three |
||
Home Fourth |
'first letteer |
|
Home F |
||
also works |
||
Locate 4 , 1 : Lcd "Line 4" |
||
Wait 1 |
||
'Now lets build a special character |
||
'the first number is the characternumber (0-7) |
||
'The other numbers are the rowvalues |
||
'Use the LCD tool to insert this line |
||
Deflcdchar 1 , 225 , 227 , 226 , 226 , 226 , 242 , 234 , 228 |
' replace ? |
|
with number (0-7) |
' replace ? |
|
Deflcdchar 0 , 240 , 224 , 224 , 255 , 254 , 252 , 248 , 240 |
||
with number (0-7) |
'select data RAM |
|
Cls |
||
Rem it is important that a CLS is following the deflcdchar statements because
it will set the controller back in datamode |
'print the special |
Lcd Chr(0) ; Chr(1) |
|
character |
|
'----------------- Now use an internal routine ------------ |
'value into ACC |
_temp1 = 1 |
|
!rCall _write_lcd |
'put it on LCD |
End |
$LCDPUTCTRL
Action
Specifies that LCD control output must be redirected.
Syntax
$LCDPUTCTRL = label
Remarks
Label |
The name of the assembler routine that must be called when a control byte |
is printed with the LCD statement. The character must be placed in register |
|
R24. |
|
With the redirection of the LCD statement, you can use your own routines.
page -222-
© MCS Electronics, 1995-2007
See also
$LCDPUTDATA
Example
$regfile = "m48def.dat" $crystal = 4000000 $baud = 19200
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
'dimension used variables Dim S AsString* 10
Dim W AsLong
'inform the compiler which routine must be called to get serial 'characters $lcdputdata= Myoutput
$lcdputctrl= Myoutputctrl 'make a never ending loop
Do
Lcd "test"
Loop
End
'custom character handling routine
'instead of saving and restoring only the used registers
'and write full ASM code, we use Pushall and PopAll to save and 'restore 'all registers so we can use all BASIC statements
'$LCDPUTDATA requires that the character is passed in R24
Myoutput: |
'save all |
Pushall |
|
registers |
|
'your code here |
'restore registers |
Popall |
|
Return |
|
MyoutputCtrl: |
'save all |
Pushall |
|
registers |
|
'your code here |
'restore registers |
Popall |
|
Return |
$LCDPUTDATA
Action
Specifies that LCD data output must be redirected.
Syntax
$LCDPUTDATA = label
Remarks
Label |
The name of the assembler routine that must be called when a character is |
page -223- |
© MCS Electronics, 1995-2007
printed with the LCD statement. The character must be placed in R24.
With the redirection of the LCD statement, you can use your own routines.
See also
$LCDPUTCTRL
Example
$regfile = "m48def.dat" $crystal = 4000000 $baud = 19200
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
'dimension used variables Dim S AsString* 10
Dim W AsLong
'inform the compiler which routine must be called to get serial 'characters $lcdputdata= Myoutput
$lcdputctrl= Myoutputctrl 'make a never ending loop
Do
Lcd "test"
Loop
End
'custom character handling routine
'instead of saving and restoring only the used registers
'and write full ASM code, we use Pushall and PopAll to save and 'restore 'all registers so we can use all BASIC statements
'$LCDPUTDATA requires that the character is passed in R24
Myoutput: |
'save all |
Pushall |
|
registers |
|
'your code here |
'restore registers |
Popall |
|
Return |
|
MyoutputCtrl: |
'save all |
Pushall |
|
registers |
|
'your code here |
'restore registers |
Popall |
|
Return |
$LCDRS
Action
Instruct the compiler to generate code for 8-bit LCD displays attached to the data bus.
Syntax
$LCDRS = [&H]address
page -224-
© MCS Electronics, 1995-2007
Remarks
Address The address where must be written to, to enable the LCDdisplay.
The db0-db7 lines of the LCD must be connected to the data lines D0-D7. (or is 4 bit mode, connect only D4-D7)
On systems with external RAM, it makes more sense to attach the LCD to the data bus. With an address decoder, you can select the LCDdisplay.
See also
$LCD , CONFIG LCDBUS
Example
'-------------------------------------------------------------- |
(c) 1995-2005 MCS Electronics |
' |
|
'-------------------------------------------------------------- |
'file: LCD.BAS
'demo: LCD, CLS, LOWERLINE, SHIFTLCD, SHIFTCURSOR, HOME
'CURSOR, DISPLAY
'--------------------------------------------------------------
'note : tested in bus mode with 4-bit on the STK200
'LCD |
- STK200 |
'------------------- |
D4 |
'D4 |
|
'D5 |
D5 |
'D6 |
D6 |
'D7 |
D7 |
'WR |
WR |
'E |
E |
'RS |
RS |
'+5V |
+5V |
'GND |
GND |
'V0 |
V0 |
'D0-D3 are not connected since 4 bit bus mode is used!
'Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.5 , Rs = Portb.6
Rem with the config lcdpin statement you can override the compiler settings
$regfile = "8515def.dat" $lcd = &HC000
$lcdrs = &H8000 Config Lcdbus = 4
Dim A As Byte
Config Lcd = 16 * 2 'configure lcd screen
'other options are 16 * 2 , 16 * 4 and 20 * 4, 20 * 2 , 16 * 1a 'When you dont include this option 16 * 2 is assumed
'16 * 1a is intended for 16 character displays with split addresses over 2 lines
'$LCD = address will turn LCD into 8-bit databus mode
'use this with uP with external RAM and/or ROM
'because it aint need the port pins !
page -225-