
HD44780は、英数字ドットマトリクスLCDコントローラおよびドライバとして機能する集積回路です。1980年代に日立製作所によって開発されました。コントローラの文字セットには、ASCII文字、日本語かな文字、およびいくつかの記号が2行40文字で含まれています。拡張ドライバを使用すると、デバイスは最大80文字を表示できます。[ 1 ]多くのサードパーティ製ディスプレイが16ピンインターフェースと命令セットと互換性があり、人気があり安価なLCDドライバとなっています。[ 2 ]

日立HD44780 LCDコントローラはモノクロテキスト表示に限定されており、コピー機、ファックス機、レーザープリンタ、産業用試験装置、ルーターやストレージデバイスなどのネットワーク機器によく使用されています。
互換性のあるLCDスクリーンは、いくつかの標準構成で製造されています。一般的なサイズは、1行に8文字(8×1)、16×2、20×2、20×4のフォーマットです。より大きなカスタムサイズは、32、40、80文字、1、2、4、または8行で製造されます。最も一般的に製造されている大きな構成は40×4文字で、1つのHD44780チップでは最大80文字までしかアドレス指定できないため、拡張チップを備えた2つの個別にアドレス指定可能なHD44780コントローラが必要です。
キャラクター液晶ディスプレイにはバックライトが搭載されている場合があり、バックライトにはLED、蛍光灯、またはエレクトロルミネッセンスが用いられる。LEDバックライトの公称動作電圧は最大輝度で5Vであり、低電圧での調光はLEDの色などの詳細によって異なる。非LEDバックライトは、多くの場合、より高い電圧を必要とする。

キャラクターLCDは16接点のインターフェースを使用し、一般的には0.1インチ(2.54mm )間隔のピンまたはカードエッジ接続を採用しています。バックライトのないタイプは、バックライト用の2ピンを省略し、14ピンのみとなる場合があります。このインターフェースは、2つのアドレスピンのみを使用してIntel MCS-51 XRAMインターフェースに簡単に接続できるように設計されており、シンプルなMOVXコマンドでLCDにテキストを表示できるため、デバイスにテキスト表示機能を追加するための費用対効果の高い選択肢となります。
主なピン配置は以下のとおりです(例外もあります)。
注:

8ビットモードでは、イネーブルピン(E)の1サイクルですべてのデータ転送が行われ、8ビットすべてがデータバス上にあり、RSピンとR/ Wピンが安定しています。4ビットモードでは、データは上位データピンD7~D4に4ビットの「ニブル」のペアとして転送され、2回のイネーブルパルスとRSピンおよびR/ Wピンの安定状態が必要です。最上位4ビット(7~4)を最初に書き込み、次に最下位4ビット(3~0)を書き込む必要があります。ハイ/ローシーケンスは毎回完了しなければならず、完了しない場合はコントローラは以降のコマンドを正しく受信できません。
4ビットモードまたは8ビットモードを選択するには、コマンドを慎重に選択する必要があります。主な考慮事項は2つあります。まず、D3~D0が接続されていない場合、内部プルアップMOSFETがあるため、これらのラインは常にHD44780に対してハイ(バイナリ1111)に見えます。[ 3 ]次に、LCDは初期状態で次の3つの状態のいずれかになります。
例えば、HD44780が4ビットモードのときに、コマンドの最初の4ビットだけを送信した後に以前の制御が中止された場合、状態3が発生する可能性があります。
以下のアルゴリズムは、LCDが目的のモードになっていることを保証します。
同じコマンドが3回送信されます。8ビットインターフェースD7~D4で機能セットを行うと、バイナリ0011となり、下位4ビットは「無視」となり、単一のイネーブルパルスが使用されます。コントローラが4ビットモードの場合、下位4ビットは無視されるため、インターフェースが既知のサイズ構成になるまで送信できません。
状態1(8ビット構成)から開始します。
状態2(4ビット構成、最初の4ビット転送待ち)から開始します。
状態3(4ビット構成、最後の4ビット転送待ち)から開始します。
いずれの初期設定においても、バスインターフェースは8ビットモード(1 行、5×8文字)になっています。別の構成の8ビットモードが必要な場合は、8ビットバス機能設定コマンドを送信して、すべてのパラメータを設定する必要があります。4ビットモードが必要な場合は、単一のイネーブルパルスとともにバイナリ0010をD7~D4に送信します。これでコントローラは4ビットモードになり、完全な4ビットバス機能設定コマンドシーケンス(コマンドビット7~4と3~0を連続して2回イネーブルする)によって、機能設定レジスタの設定が完了します。
HD44780の命令セットを以下に示します。[ 4 ]
DDRAMはディスプレイデータRAM、CGRAMは文字ジェネレータRAMです。[ 5 ] DDRAMは80バイト(1行あたり40バイト)で、2行の間にギャップがあります。最初の行のアドレスは10進数で0~39、16進数で0~27です。2番目の行のアドレスは10進数で64~103、16進数で40~67です。
CGRAMは、文字生成器で最大8文字をエンコードするために使用される読み書き可能なメモリです。アドレス0~3F(16進数)に64個のフィールドがあり、各フィールドは5ビットで、各文字のピクセル行に対応します。CGRAM内の8つのフィールドは、各文字に使用されます。文字コードの下位3ビット(0~7および8~15)によって、CGRAMメモリ内の8フィールドのグループが選択されます。
DDRAMへの読み書きは、バス転送中にRS入力をハイに設定することで行います。また、アクセスするDDRAMを選択するとともに、DDRAMアクセスの開始アドレスを設定する「Set DDRAM address」コマンドを使用して、DDRAMを選択する必要があります。
同様に、バス転送中にRS入力をハイに設定することで、CGRAMへの読み書きが行われます。また、アクセスするCGRAMを選択するとともに、CGRAMアクセスの開始アドレスを設定する「Set CGRAM address」コマンドによって、CGRAMを選択する必要があります。
この表に記載されている実行時間は、発振器周波数270kHzに基づいています 。データシートによると、VCC = 5V で抵抗が91kΩの場合、発振器の周波数は190kHzから350kHzの間で変化し、待機時間は37μsではなく52.6μsと28.6μsになります。推奨の91kΩ抵抗を備えたディスプレイを3.3Vで駆動する場合、発振器の動作速度は大幅に低下します。ビジービットを使用せず、命令のタイミングを外部回路で制御する場合は、この点を考慮する必要があります。
オリジナルのHD44780文字ジェネレータROMには、5×7ドットマトリックスで208文字、5×10ドットマトリックスで32文字が収録されています。より高解像度で、より多くのピクセルを持つディスプレイに対応した、より新しい互換チップも入手可能です。
ROMの2つのバージョンが開発されました: [ 5 ]
日本語版の7 ビットASCIIサブセットは非標準です。通常バックスラッシュ文字がある場所に円記号が、チルダと消しゴム文字の代わりに左右の矢印記号が使用されています。
限られた数のカスタム文字を、特殊なコマンドを使用してビットマップの形式でデバイスにプログラムすることができます。これらの文字は揮発性メモリに保存されるため、デバイスの電源を入れるたびに書き込む必要があります。