2005/8/25
MES2.0b3ではLCDをサポートしていません。
ここで紹介する方法は、IOポートを直接操作して、LCDを制御しています。
IOポートの操作やLCDの制御方法に自信がない方は、決して実行しないでください。
また、これら操作により生じた障害、故障等についてはすべてご自身の責任において処理してください。
AKI-H8/3069FフラッシュマイコンLANボードをマザーボードにとりつけます。
マザーボード上のLCD(液晶パネル)に文字を出します。
使用するLCDは
です。
SC1602とSC2004は電源の接続端子が違いますから、注意してください。
注意すべきことはつぎのとおりです。
H8/3069 | CN2 | LCD-LED-DIP | LCD | |
D0/P0 | 5 | 2 | 1 | 11 DB4 |
D1/P41 | 6 | 4 | 3 | 12 DB5 |
D2/P42 | 7 | 6 | 5 | 13 DB6 |
D3/P43 | 8 | 8 | 7 | 14 DB7 |
D4/P44 | 9 | 10 | 9 | 4 RS |
D5/P45 | 10 | 12 | 11 | 6 E |
## lcd.c MES2 = /home/j00300/H8/MES2.0b3 TARGET = lcd SOURCE = $(TARGET).c OBJ = $(TARGET).o ELF = $(TARGET).elf clean : rm -f $(OBJ) $(ELF) all : $(ELF) $(ELF) : $(OBJ) h8300-elf-gcc -Wl,--section-start=.stack=0x400 -B $(MES2)/local/h8300-elf -L$(MES2)/app -mint32 -mh -T $(MES2)/app/h8pic.x -nostartfiles $(MES2)/app/h8piccrt0.S -o $(ELF) $(OBJ) -lmes_h8 cp $(ELF) /tftpboot/ $(OBJ) : $(SOURCE) sc1602.h h8300-elf-gcc -B $(MES2)/local/h8300-elf -I $(MES2)/app -mint32 -mh -fPIC -O2 -c $(SOURCE)
#include <mes2.h> #include <h8/reg3067.h> #include "sc1602.h" int main(){ printf("LCD test (AKI-H8/3069)\r"); lcd_init(); lcd_string("AKI-H8/3069"); printf("LCD OK ?\r"); }
//#include <mes2.h> //#include <h8/reg3067.h> #define RS 0x10 ; #define E 0x20 ; #define LEDR 0x40 ; #define LEDG 0x80 ; int lcd_cmd(char cmd){ P4DR = cmd ; sleep(1); P4DR = 0 ; sleep(1) ; } int lcd_init(){ // LCD initiation sleep(15); //wait 15 mSec after Power ON ABWCR=0xff; P4DR = 0x23 ; P4DR = 0x00 ; sleep(5); //4.1mSec P4DR = 0x23 ; P4DR = 0x00 ; sleep(1); // 100uSec以上待つ(1mSec wait) lcd_cmd(0x23); lcd_cmd(0x22); lcd_cmd(0x22);//function set lcd_cmd(0x24); lcd_off(); // LCD OFF lcd_clear();// LCD CLEAR lcd_cmd(0x20);//entery mode set lcd_cmd(0x26); lcd_on();//LCD ON } // LCD CLEAR int lcd_clear(){ lcd_cmd(0x20); lcd_cmd(0x21); } // LCD CURSOR HOME int lcd_cursor_home(){ lcd_cmd(0x20); lcd_cmd(0x22); } // LCD ON int lcd_on(){ lcd_cmd(0x20); lcd_cmd(0x2E); } // LCD OFF int lcd_off(){ lcd_cmd(0x20); lcd_cmd(0x28); } // 文字列をLCDへ出力 int lcd_string(char *p){ int i; for(i=0;i<strlen(p);i++){ int a = (p[i] & 0x00F0) >>4; int b = p[i] & 0x000F; lcd_cmd(0x30+a); lcd_cmd(0x30+b); } }