ここではAT90S1200で液晶ディスプレーSC1602Bを使うプログラムを紹介します.
接続および設定
AVR側:液晶側
PB0:RS
PB1:RW
PB2:EN
PB4:DB4
PB5:DB5
PB6:DB6
PB7:DB7
発振子は4MHz
VLCはコントラスト調整だが,回路を簡単にするためGNDに接続した.(最も濃く表示される)
電源は,4.5Vでも6VでもOK.
サンプルプログラム
LCD04.ASM
「イバラキ」「ダイガク」と上下に交互に表示されるはずです.
.include "1200def.inc"
.equ en =2 ;PB2
.def temp =R16
.def data =R17 ;DATA
.def CT1 =R18
.def CT2 =R19
.def CT3 =R20
rjmp reset ;reset
reti
reti
reti
reset: ldi temp,0Xff
out DDRB,temp ;set PORTB
;***************** LCD initialize ******************************************
rcall TM10
rcall TM10
ldi data,0X30 ;Function Set X 3
OUT PORTB,data
sbi PORTB,en
cbi PORTB,en
rcall TM10
sbi PORTB,en
cbi PORTB,en
rcall TM10
sbi PORTB,en
cbi PORTB,en
rcall TM10
CBI PORTB,4 ;ldi data,0X20
sbi PORTB,en
cbi PORTB,en
rcall TM10
ldi data,0X2c
rcall cmnd
ldi data,0X01 ;
rcall cmnd
ldi data,0X0c
rcall cmnd ;Display On Off Control
ldi data,0X06
rcall cmnd ;Entry Mode Increment
main: ldi data,0X01 ;clear LCD
rcall cmnd ;out command
ldi data,0XB2 ;I
rcall write ;
ldi data,0XCA ;BA
rcall write ;
ldi data,0XDE ;
rcall write ;
ldi data,0XD7 ;RA
rcall write ;
ldi data,0XB7 ;KI
rcall write ;
rcall TM ;wait 1 second
ldi data,0X01 ;
rcall cmnd ;clear LCD
ldi data,0XC0 ;
rcall cmnd ;DDRAM=40 Lower Line
ldi data,0XC0 ;DA
rcall write ;
ldi data,0XDE ;
rcall write ;
ldi data,0XB2 ;I
rcall write ;
ldi data,0XB6 ;GA
rcall write ;
ldi data,0XDE ;
rcall write ;
ldi data,0XB8 ;KU
rcall write ;
rcall TM ;wait 1s
rjmp main ;jump main
;*** command and write to LCD *** rs 0X01 rw 0X02 en 0X04
cmnd: MOV temp,data
SWAP temp
CBR data,0X01
CBR temp,0X01
RJMP DO
write: MOV temp,data
SWAP temp
SBR data,0X01
SBR temp,0X01
DO: CBR data,0X06 ;rw & en =0
CBR temp,0X06 ;rw & en =0
OUT PORTB,data
sbi PORTB,en
cbi PORTB,en
OUT PORTB,temp
sbi PORTB,en
cbi PORTB,en
RCALL TM10
ret
;******************* timer 10ms *********************************************
;If CT2=100 & CT1=100 T=10ms at 4MHz
TM10: ldi CT2,100
LP1: ldi CT1,100
LP2: nop
dec CT1
brne LP2
dec CT2
brne LP1
ret
;******************** timer 1sec *******************************************
TM: ldi CT3,100
LP: rcall TM10
dec CT3
brne LP
rcall TM10
ret