ここでは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