Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
BASCOM AVR, help reference (2007).PDF
Скачиваний:
305
Добавлен:
12.08.2013
Размер:
17.02 Mб
Скачать

© MCS Electronics, 1995-2007

ConfigLcd = 16 * 3,Chipset = Dogm163v5

'16*3 type LCD display

'other options for chipset are DOG163V3 for 3Volt operation

 

'Config Lcd = 16 * 3 , Chipset = Dogm163v3 , Contrast = &H702

'16*3 type LCD display

'The CONTRAST can be specified when the default value is not what you need

'The EADOG-M162 is also supported :

 

 

'Chipset params for the DOGM162 : DOG162V5, DOG162V3

 

Cls

'Dit maakt het scherm leeg

 

Locate 1,1:Lcd "Hello World"

 

 

 

Locate 2,1:Lcd "line 2"

 

 

 

Locate 3,1:Lcd "line 3"

 

 

 

End

 

 

 

CONFIG LCDBUS

Action

Configures the LCD data bus and overrides the compiler setting.

Syntax

CONFIG LCDBUS = constant

Remarks

Constant 4 for 4-bit operation, 8 for 8-bit mode (default)

Use this statement together with the $LCD = address statement.

When you use the LCD display in the bus mode the default is to connect all the data lines. With the 4-bit mode, you only have to connect data lines d7-d4.

See also

CONFIG LCD

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

page -359-

© 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 -360-

© 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

CONFIG LCDMODE

Action

Configures the LCD operation mode and overrides the compiler setting.

Syntax

CONFIG LCDMODE = type

Remarks

Type

PORT

 

Will drive the LCD in 4-bit port mode and is the default.

 

In PORT mode you can choose different PIN's from different PORT's to

 

connect to the upper 4 data lines of the LCD display. The RS and E can also

 

be connected to a user selectable pin. This is very flexible since you can

 

use pins that are not used by your design and makes the board layout

 

simple. On the other hand, more software is necessary to drive the pins.

 

BUS will drive the LCD in bus mode and in this mode is meant when you

 

 

 

page -361-

© MCS Electronics, 1995-2007

have external RAM and so have an address and data bus on your system. The RS and E line of the LCD display can be connected to an address decoder. Simply writing to an external memory location select the LCD and the data is sent to the LCD display. This means the data-lines of the LCD display are fixed to the data-bus lines.

Use $LCD = address and $LCDRS = address, to specify the addresses that will enable the E and RS lines.

See also

CONFIG LCD , $LCD , $LCDRS

Example

Config LCDMODE = PORT 'the report will show the settings

Config LCDBUS = 4 '4 bit mode

LCD "hello"

CONFIG LCDPIN

Action

Override the LCD-PIN select options.

Syntax

CONFIG LCDPIN = PIN , DB4= PN,DB5=PN, DB6=PN, DB7=PN, E=PN, RS=PN

CONFIG LCDPIN = PIN , PORT=PORTx, E=PN, RS=PN

Remarks

PN

The name of the PORT pin such as PORTB.2 for example.

PORTX

When you want to use the LCD in 8 bit data, pin mode, you must specify

 

the PORT to use.

 

 

You can override the PIN selection from the Compiler Settings with this statement, so a second configuration lets you not choose more pins for a second LCDdisplay.

The config command is preferred over the menu settings since the code makes clear which pins are used. The CONFIG statement overrides the Options setting.

See also

CONFIG LCD

Example

'-----------------------------------------------------------------------------

 

------------

: lcd.bas

'name

'copyright

: (c) 1995-2005, MCS Electronics

'purpose

: demo: LCD, CLS, LOWERLINE, SHIFTLCD, SHIFTCURSOR,

HOME

CURSOR, DISPLAY

'

page -362-

 

© MCS Electronics, 1995-2007

'micro

: Mega8515

'suited for demo

: yes

'commercial addon needed

: no

'-----------------------------------------------------------------------------

------------

$regfile = "m8515.dat"

' specify the used

micro

' used crystal

$crystal = 4000000

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

page -363-

© MCS Electronics, 1995-2007

 

 

Shiftlcd Right

'shift the text to

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

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

 

page -364-