© MCS Electronics, 1995-2007
'mode 8 gives 240 / 8 = 30 columns , mode=6 gives 240 / 6 = 40 columns
'Dim variables (y not used)
Dim X As Byte , Y As Byte
'Clear the screen will both clear text and graph display
Cls
'Other options are :
' CLS TEXT to clear only the text display ' CLS GRAPH to clear only the graphical part
Cursor Off
Wait 1
'locate works like the normal LCD locate statement ' LOCATE LINE,COLUMN LINE can be 1-8 and column 0-30
Locate 1 , 1
'Show some text
Lcd "MCS Electronics"
'And some othe text on line 2 Locate 2 , 1 : Lcd "T6963c support"
Locate 3 , 1 : Lcd "1234567890123456789012345678901234567890" Locate 16 , 1 : Lcd "write this to the lower line"
Wait 2
Cls Text
'use the new LINE statement to create a box |
|
'LINE(X0,Y0) - (X1,Y1), on/off |
' diagonal line |
Line(0 , 0) -(239 , 127) , 255 |
Line(0 , 127) -(239 , 0) , 255 |
' diagonal line |
Line(0 , 0) -(240 , 0) , 255 |
' horizontal upper |
line |
'horizontal lower |
Line(0 , 127) -(239 , 127) , 255 |
line |
' vertical left |
Line(0 , 0) -(0 , 127) , 255 |
line |
' vertical right |
Line(239 , 0) -(239 , 127) , 255 |
line |
|
Wait 2
'draw a line using PSET X,Y, ON/OFF
'PSET on.off param is 0 to clear a pixel and any other value to turn it on For X = 0 To 140
Pset X , 20 , 255 |
' set the pixel |
Next |
|
For X = 0 To 140 |
' set the pixel |
Pset X , 127 , 255 |
Next |
|
Wait 2 |
|
'circle time
'circle(X,Y), radius, color
'X,y is the middle of the circle,color must be 255 to show a pixel and 0 to clear a pixel
For X = 1 To 10
© MCS Electronics, 1995-2007 |
|
Circle(20 , 20) , X , 255 |
' show circle |
Wait 1 |
'remove circle |
Circle(20 , 20) , X , 0 |
Wait 1 |
|
Next |
|
Wait 2 |
|
For X = 1 To 10 |
' show circle |
Circle(20 , 20) , X , 255 |
Waitms 200 |
|
Next |
|
Wait 2 |
|
'Now it is time to show a picture |
|
'SHOWPIC X,Y,label |
|
'The label points to a label that holds the image data |
|
Test: |
|
Showpic 0 , 0 , Plaatje |
' show 2 since we |
Showpic 0 , 64 , Plaatje |
have a big display |
|
Wait 2 |
' clear the text |
Cls Text |
End |
|
'This label holds the mage data Plaatje:
'$BGF will put the bitmap into the program at this location $bgf "mcs.bgf"
'You could insert other picture data here
CLEAR
Action
Clear serial input ir output buffer
Syntax
CLEAR bufname
Remarks
Bufname Serialbuffer name such as Serialin, Serialin1 , Serialout or Serialout1 For chips with more UARTS :
SERIALIN2, SERIALIN3, SERIALOUT2, SERIALOUT3
When you use buffered serial input or buffered serial output, you might want to clear the buffer.
While you can make the head pointer equal to the tail pointer, an interrupt could be active which might result in an update of the buffer variables, resulting in an unexpected result. The CLEAR statement will reset the head and tail pointers of the ring buffer, and it will set the buffer count variable to 0. The buffer count variable is new and introduced in 1.11.8.3. It counts how many bytes are in the buffer.
The internal buffercount variable is named _RS_BUFCOUNTxy , where X is R for Receive, and W for Write, and y is 0 for the first UART, and 1 for the second UART.
The
© MCS Electronics, 1995-2007
See also
CONFIG SERIALIN, CONFIG SERIALOUT
ASM
Calls _BUF_CLEAR from MCS.LIB
Example
CLEAR SERIALIN
CLS
Action
Clear the LCD display and set the cursor to home.
Syntax
CLS
Syntax for graphical LCD
CLS
CLS TEXT
CLS GRAPH
Remarks
Clearing the LCD display does not clear the CG-RAM in which the custom characters are stored.
For graphical LCD displays CLS will clear both the text and the graphical display.
See also
$LCD , $LCDRS , LCD , SHIFTLCD , SHIFTCURSOR , SHIFTLCD
Example
'----------------------------------------------------------------------------- |
|
------------ |
: lcd.bas |
'name |
'copyright |
: (c) 1995-2005, MCS Electronics |
'purpose |
: demo: LCD, CLS, LOWERLINE, SHIFTLCD, SHIFTCURSOR, |
HOME |
CURSOR, DISPLAY |
' |
'micro |
: Mega8515 |
'suited for demo |
: yes |
'commercial addon needed |
: no |
'----------------------------------------------------------------------------- |
|
------------ |
|
$regfile = "m8515.dat" |
' specify the used |
micro |
|
|
page -302- |
|
© MCS Electronics, 1995-2007 |
$crystal = 4000000 |
' used crystal |
frequency |
' use baud rate |
$baud = 19200 |
$hwstack = 32 |
' default use 32 |
for the hardware stack |
' default use 10 |
$swstack = 10 |
for the SW stack |
' default use 40 |
$framesize = 40 |
for the frame space |
|
$sim
'REMOVE the above command for the real program !! '$sim is used for faster simulation
'note : tested in PIN mode with 4-bit
'Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2 , Db6 = Portb.3 , Db7 = Portb.4 , E = Portb.5 , Rs = Portb.6
Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Portc.7 , Rs = Portc.6
'These settings are for the STK200 in PIN mode
'Connect only DB4 to DB7 of the LCD to the LCD connector of the STK D4-D7 'Connect the E-line of the LCD to A15 (PORTC.7) and NOT to the E line of the LCD connector
'Connect the RS, V0, GND and =5V of the LCD to the STK LCD connector
Rem with the config lcdpin statement you can override the compiler settings
Dim A As Byte
Config Lcd = 16 * 2 'configure lcd screen
'other options are 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 |
|
© MCS Electronics, 1995-2007 |
|
|
Wait 1 |
'wait a moment |
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 |
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 |
|
CLOCKDIVISION
Action
Will set the system clock division available in the MEGA chips.