H8/3052F に、話題の秋月グラフィックLCDをバス接続してみました。 LCDからのREADはうまく動かないようですが、 表示だけならば、問題ありません。 回路とソースは以下の通りです。 ▲5V │ > < 5KΩ > < ┌───┐ A01 ─────┼───┤ │ (CN3-16) ●───┤OR ├─ CS1(5) │┌──┤ │ ││ └───┘ ││ ┌───┐ A02 ─────┼┼──┤ │ (CN3-17) ││┌─┤OR ├─ CS2(6) │││┌┤ │ CS5 ─────●┼┘│└───┘ (CN1-13) │ │ │ │ RESET ──|>─●─┴────── RES(18) (CN2-04) NOT A00 ────────────── A0(4) (CN3-16) HWR ────────────── WR(9) (CN2-08) TIOCB4────────────── CL(7) (CN1-19/PB3) ▲5V │ > < 5KΩ > (READが動作しないので < とりあえず pull up) RD └─────── RD(8) (CN2-07) D00 DB0(10) (CN3-07) | | D07 DB7(17) (CN3-14) --------- 以下、ソースコード ---------------------- #define BASE_ADR 0xa0000 #define CMD0 (*((volatile unsigned char*)(BASE_ADR+2))) #define CMD1 (*((volatile unsigned char*)(BASE_ADR+4))) #define DATA0 (*((volatile unsigned char*)(BASE_ADR+3))) #define DATA1 (*((volatile unsigned char*)(BASE_ADR+5))) __inline void WriteLcdCmd( char cs, unsigned char data ) { switch( cs ) { case 0 : CMD0 = data ; break ; case 1 : CMD1 = data ; break ; } //WaitLcdBusy( cs ) ; } __inline void WriteLcdData( char cs, unsigned char data ) { switch( cs ) { case 0 : DATA0 = data ; break ; case 1 : DATA1 = data ; break ; } } void InitLcd( void ) { Sleep( 1000 ) ;/* ハードリセット終了待ち */ WriteLcdCmd( LEFT, 0xe2 ); /* リセット */ WriteLcdCmd( RIGHT, 0xe2 ); Sleep( 300 ) ;/* リセット終了待ち */ WriteLcdCmd( LEFT, 0xa9 ); /* DUTY=1/32 */ WriteLcdCmd( RIGHT, 0xa9 ); WriteLcdCmd( LEFT, 0xa0 ); /* ADC=右回り */ WriteLcdCmd( RIGHT, 0xa0 ); WriteLcdCmd( LEFT, 0xa4 ); /* 通常表示 */ WriteLcdCmd( RIGHT, 0xa4 ); WriteLcdCmd( LEFT, 0xb8 ); /* ページ0 */ WriteLcdCmd( RIGHT, 0xb8 ); WriteLcdCmd( LEFT, 0xaf ); /* ここでランダムパターン表示 */ WriteLcdCmd( RIGHT, 0xaf ); } void ChangeLcdPage( char cs, char page ) { page &= 0x3; WriteLcdCmd( cs, 0xb8 + page ); } void SetLcdColumn( char cs, char col ) { col &= 0x7f; if( col > 79 ){ col = 79; } WriteLcdCmd( cs, col ); } void ClearLcd( void ) { char i, j; for( i = 0; i < 4; i++ ){ ChangeLcdPage( LEFT, i ); SetLcdColumn( LEFT, 0 ); for( j = 0; j < 62; j++ ){ WriteLcdData( LEFT, 0 ); } } for( i = 0; i < 4; i++ ){ ChangeLcdPage( RIGHT, i ); SetLcdColumn( RIGHT, 0 ); for( j = 0; j < 62; j++ ){ WriteLcdData( RIGHT, 0 ); } } ChangeLcdPage( LEFT, 0 ); SetLcdColumn( LEFT, 0 ); } void FillLcd( char Data )//テストプログラム { char i, j; for( i = 0; i < 4; i++ ){ ChangeLcdPage( LEFT, i ); SetLcdColumn( LEFT, 0 ); for( j = 0; j < 62*3; j++ ){ WriteLcdData( LEFT, Data ); } } for( i = 0; i < 4; i++ ){ ChangeLcdPage( RIGHT, i ); SetLcdColumn( RIGHT, 0 ); for( j = 0; j < 62*3; j++ ){ WriteLcdData( RIGHT, Data ); } } ChangeLcdPage( LEFT, 0 ); SetLcdColumn( LEFT, 0 ); } PS LCDデータ/コマンドの読み出しは、やはり無理でしょうか(^^;)? ソフト屋なんでよく分かりません...horosi-desu -- Name :Katsuhiko Terawaki Address:5-3 Tashita Hirano-aza Iizaka-machi Fukushima-city Fukushima-prefecture Japan. E-mail :wakky@xxxxxxxxxxxxxxxxxxx URL :http://www.computerartisan.com