[HD44780] LCD 초기 설정에서 디스플레이로

우리는 HD44780을 문자 LCD 컨트롤러의 위영 표준으로 초기에 설정하는 함수를 만들었다.
HD44780은 현재 유통되고 있는 거의 모든 CLCD의 컨트롤러가 사용하는 물건이다.

40줄을 사용했어요.×2의 LU3172LCD 모듈입니다.
마이크로컴퓨터는 H8/3664를 사용했다.
시작 구성은 다음과 같습니다.

초기화 프로그램
1. 전원 공급 장치 연결
2.15ms이상 대기
3. 기능 집합(8비트mode 설정)
4.4.1ms 이상 대기 중
5. 기능 집합(8비트mode 설정)
6.100us 이상 대기 중
7. 기능 집합(8비트mode 설정)
8. 기능 집합(8비트mode 설정)
9. 기능 세트(다양한 설정)
10. 디스플레이 제어
11. 디스플레이 삭제
12. 신청 모드 설정
7에서 12 사이에도 상응하는 무게가 있어야 한다.
LCD_init()
함수 LCD 초기화나는 init()입니다.
LCD_init().c
/* LCDのイニシャライズ */
void LCD_init(unsigned char bus, unsigned char line, unsigned char font, unsigned char cursor, unsigned char blink, unsigned char add, unsigned char shift)//LCD_init(1,1,0,1,1,1,0);
{
    unsigned char data=0x00;        // 変数宣言


    _wait(1500);                    // ウェイト

    data=0x30;
    LCD_IR(data);               // ファンクションセット1回目
    _wait(410);                     //ウェイト

    data=0x30;
    LCD_IR(data);               // ファンクションセット2回目
    _wait(410);

    data=0x30;
    LCD_IR(data);               // ファンクションセット3回目
    _wait(410);                 

    data=0x20;                  // ファンクションセット(インターフェースデータ長8ビット)
    data   |= (bus <<4);        //バス幅 1:8bit 0:4bit
    data   |= (line << 3);      //表示ライン 1:2行表示 0:1行表示
    data   |= (font << 2);      //表示フォント 1:11ライン/行 0:8ライン/行 ※11ラインはg,yなどが切れずに表示されるが2行モードが使えなくなる.
    LCD_IR(data);               
    _wait(40);                  // ウェイト

    data=0x0c;                  //表示ON/OFF
    data   |= (cursor <<1);     //下線カーソル 1:ON 
    data   |= blink;            //ブロックカーソル 1:ON
    LCD_IR(data);               
    _wait(40);                  // ウェイト

    LCD_IR(0x01);               //表示クリア
    _wait(40);                  // ウェイト

    data    = 0x04;             // エントリモード
    data   |= (add << 1);        //0:デクリメント 1:インクリメント
    data   |= shift;            //1:表示シフトあり
    LCD_IR(data);               
    _wait(400);                 // ウェイト


}
_wait, 제법 등 시간을 벌세요.
그러나 컴파일러에 따라 처리 시간도 다르기 때문에 환경에 따라 수치를 바꿔야 한다.
(등 정해진 시간 이상이면 되므로 전체에 영향을 주지 않는 범위 내에서 큰 값으로 설정할 수 있다)
다양한 매개변수를 매개변수로 설정할 수 있습니다.
LCD_IR
LCD_IR()는 안내자 액세스용 함수입니다.
LCD_IR.c
static  void LCD_IR( unsigned char data )
{

    PDR7 &= 0xef;               //0 LCD_RS(0x10) レジスタをインストラクションレジスター(IR)にセット
    PDR7 &= 0xdf;               //0 LCD_RW(0x20) 0:書き込み 1:読み出し
    PDR7 |= 0x40;               //1 LCD_E(0x40) シグナル可能セット 

    PDR8 = data;                //LCD_PORT(Port8) データの書き込み
    _wait(410);                 // 20usのウェイト

    PDR7 &= 0xbf;               // シグナル可能リセット(Eの立下りでレジスタの読み書きを行う)
    _wait(410);                 // 20usのウェイト
}
LCD_init() 실행이 끝나면 설정이 완료됩니다.
LCD_DR
마지막으로 함수 LCD 표시DR().
LCD_DR.c
static  void LCD_DR( unsigned char data )
{

    PDR7 |= 0x10;               //1 LCD_RS(0x10) レジスタをデータレジスター(DR)にセット
    PDR7 &= 0xdf;               //0 LCD_RW(0x20) 0:書き込み 1:読み出し
    PDR7 |= 0x40;               //1 LCD_E(0x40) シグナル可能セット 

    PDR8 = data;                //LCD_PORT(Port8) データの書き込み
    _wait(410);                 //ウェイト

    PDR7 &= 0xbf;               // シグナル可能リセット(Eの立下りでレジスタの読み書きを行う)
    _wait(20);
}
데이터에 ASCII 코드가 있습니다.
샘플 보기
char LCD_title[81]="Yellow_tracer        kiki0817 Yellow_IDE,H8/3664f, from2019_01_19  ";
for(i=0;i<80;i++){
    LCD_DR(LCD_title[i]);
    }

좋은 웹페이지 즐겨찾기