クイックスタート:MAX6954を使って16セグメントディスプレイを駆動する
要約
このアーティクルは、MAX6954を使用して16セグメントのモノカラーLEDを駆動することを検討している技術者が迅速に学ぶことを目的に作られたガイドブックです。
MAX6954は汎用のディスプレイドライバであり、シリアルインタフェースを通して、個別の7セグメント、14セグメント、及び16セグメントLEDディスプレイを混在して、駆動することができます。このアプリケーションノートでは、8個のモノカラー、16セグメンントLEDを駆動するための標準的なアプリケーションと構成を示します。
MAX6954の機能についてさらに情報を得たい場合はMAX6954のデータシートをご覧ください。
「クイックスタート:MAX6954を使って7セグメントディスプレイを駆動」及び「クイックスタート:MAX6954を使って14セグメントディスプレイを駆動」は、MAX6954を7セグメント及び14セグメントのアプリケーションを構成することを述べた同様のアプリケーションノートです。
MAX6954の標準的なアプリケーションの一例は、最大8個までの16セグメントモノカラーのLEDの駆動です。このアプリケーションノートは、MAX6954を16セグメントディスプレイに接続し、内蔵の104キャラクタのフォントマップを使ってディスプレイを制御するための内蔵のレジスタを構成するプロセスをユーザに解説します。
MAX6954はマルチプレクス技術を使用します。これは使用するポートのピン数を少なくして、これを交互にカソードとアノードドライバとして使うものです。これはアノード用とカソード用に別のドライバを用いる標準的なLEDマルチプレクス接続とは異なります。この技術は「Charlieplexing - Reduced Pin-Count LED Display Multiplexing」にて説明されています。表1はMAX6954マルチプレクス方式に対応した16セグメントの各桁に対する接続方法と内蔵の104種の文字フォントマップを示しています。表1における文字は図2に示したセグメントラベルに対応しています。図1はMAX6954に対する8桁の16セグメントのアプリケーションを図示しています。
図1. MAX6954の16セグメントアプリケーション回路
図2. MAX6954の16セグメントディスプレイのセグメントラベリング図
DIGIT | O0 | O1 | O2 | O3 | O4 | O5 | O6 | O7 | O8 | O9 | O10 | O11 | O12 | O13 | O14 | O15 | O16 | O17 | O18 |
0 | CCO | a1 | a2 | b | c | d1 | d2 | e | f | g1 | g2 | h | i | j | k | l | m | dp | |
1 | -- | CC1 | a1 | a2 | b | c | d1 | d2 | e | f | g1 | g2 | h | i | j | k | l | m | dp |
2 | a1 | a2 | CC2 | -- | b | c | d1 | d2 | e | f | g1 | g2 | h | i | j | k | l | m | dp |
3 | a1 | a2 | -- | CC3 | b | c | d1 | d2 | e | f | g1 | g2 | h | i | j | k | l | m | dp |
4 | a1 | a2 | b | c | CC4 | -- | d1 | d2 | e | f | g1 | g2 | h | i | j | k | l | m | dp |
5 | a1 | a2 | b | c | -- | CC5 | d1 | d2 | e | f | g1 | g2 | h | i | j | k | l | m | dp |
6 | a1 | a2 | b | c | d1 | d2 | CC6 | -- | e | f | g1 | g2 | h | i | j | k | l | m | dp |
7 | a1 | a2 | b | c | d1 | d2 | -- | CC7 | e | f | g1 | g2 | h | i | j | k | l | m | dp |
MAX6954を16セグメントのディスプレイに接続した後、接続を確認するためにディスプレイのテストモードを使うことができます。ディスプレイのテストモードはすべての制御用レジスタと桁レジスタに優先して、しかし、その内容を変更することなく、すべてのセグメントをオンとします。0x01をレジスタ0x07に書き込むことによってディスプレイテストモードがイネーブルとなります。ディスプレイテストモードでセグメントが点灯しない場合、接続に問題があるので、調査を必要とします。0x00をレジスタ0x07に書き込むとディスプレイテストモードを解除します。
MAX6954と16セグメントディスプレイ間の接続確認が終わった後、16セグメントディスプレイを動作させるようにデバイスを構成しなければなりません。表2はMAX6954の重要なレジスタの電源投入時の初期状態リストです。電源がMAX6954に最初に印加されたとき、デバイスはシャットダウンモードとなっており、すべての桁は消灯であり、16セグメントのフォントマップが選択されてデバイスは最大8桁をスキャンするようにセットされています。これはDecode Mode (0x01)とDigit Type (0x0C)レジスタのデフォルト設定値が16セグメントのアプリケーションにとって正しい値となっているためです。
図3. 16セグメントディスプレイのフォントマップ
REGISTER | POWER-UP CONDITION | ADDRESS (HEX) |
REGISTER DATA | |||||||
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
Decode Mode | 16-segment font enabled | 0x01 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
Global Intensity | 1/16 (minimum intensity) | 0x02 | X | X | X | X | 0 | 0 | 0 | 0 |
Scan Limit | Display eight 16-segment digits: 0, 1, 2, 3, 4, 5, 6, 7 | 0x03 | X | X | X | X | X | 1 | 1 | 1 |
Control Register | Shutdown enabled, blink disabled, blink speed is slow | 0x04 | 0 | 0 | X | X | 0 | 0 | 0 | 0 |
Display Test | Normal operation (display test disabled) | 0x07 | X | X | X | X | X | X | X | 0 |
Digit Type | Digits 0 through 7 are 16 segment digits | 0x0C | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Intensity10 | 1/16 (min on), digits 1 and 0 | 0x10 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Intensity32 | 1/16 (min on), digits 3 and 2 | 0x11 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Intensity54 | 1/16 (min on), digits 5 and 4 | 0x12 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Intensity76 | 1/16 (min on), digits 7 and 6 | 0x13 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Digit 0 | Blank digit, both planes | 0x60 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
Digit 1 | Blank digit, both planes | 0x61 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
Digit 2 | Blank digit, both planes | 0x62 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
Digit 3 | Blank digit, both planes | 0x63 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
Digit 4 | Blank digit, both planes | 0x64 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
Digit 5 | Blank digit, both planes | 0x65 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
Digit 6 | Blank digit, both planes | 0x66 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
Digit 7 | Blank digit, both planes | 0x67 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
コンフィギュレーションレジスタ(0x01)は、シャットダウンの設定、ブリンク機能の制御、すべての桁のデータクリア、全体または桁ごとの輝度制御の選択を行うために使用されます。コンフィギュレーションレジスタは7ビットで構成されています(表3):
- Sビットはシャットダウンまたは通常動作を選択(リード/ライト可能)。
- Bビットはブリンク速度を選択(リード/ライト可能)。
- Eビットは全桁のブリンク機能を許可/禁止(リード/ライト可能)。
- Tビットはブリンクタイミングをリセット(過渡ビットであり、記憶されません)。
- Rビットはすべての桁に対してP0とP1の両面の桁データをクリア(過渡ビットであり、記憶されません)。
- Iビットは全体または桁ごとの輝度制御を選択(リード/ライト可能)。
- Pビットは現在ブリンクタイミング位相(phase)を反映(リード専用、このビットへのライトは無視)。
CONFIGURATION REGISTER DATA BIT | DATA BIT LABEL | STATE | FUNCTION |
D7 | P | 0 | P1 Blink Phase |
1 | P0 Blink Phase | ||
D6 | I | 0 | Intensity for all digits is controlled by one setting in the Global Intensity Register |
1 | Intensity for digits is controlled by the individual settings in the Intensity10 through Intensity76 registers. |
||
D5 | R | 0 | Digit data for both planes P0 and P1 are unaffected |
1 | Digit data for both planes P0 and P1 are cleared on the rising edge of active-low CS | ||
D4 | T | 0 | Blink timing counters are unaffected. |
1 | Blink timing counters are reset on the rising edge of active-low CS. | ||
D3 | E | 0 | Blink function disabled |
1 | Blink function enabled | ||
D2 | B | 0 | Slow Blinking. Segments blink on for 1s, off for 1s with fOSC = 4MHz. |
1 | Fast Blinking. Segments blink on for 0.5s, off for 0.5s with fOSC = 4MHz. | ||
D1 | X | X | Don't care |
D0 | S | 0 | Shutdown |
1 | Normal Operation |
レジスタ0x04に0x01を書き込むことによってブリンクさせるのではなく、全体の輝度制御をディスプレイドライバに許可してください。MAX6954がシャットダウンから抜け出して、内蔵の発振器が給電されると、OSC_OUTの発振器出力が有効になります。このとき、まだ、16セグメントディスプレイは消灯のままです。それは桁制御レジスタ0x60~0x67の電源投入時の状態は0x20、即ち、点灯セグメントなしの状態であるからです(表2と図3を参照してください)。
MAX6954は16セグメントディスプレイ用の104文字ASCIIフォントマップを持っています。文字は標準のASCIIフォントに従いますが、次のような一般的なシンボルが追加されています:£、€、\、°、µ、±、≠、及び。104文字を表すために7ビットが使われ、8番目のビットは少数点(DP)を点灯させるかどうかを選択します(表4)。桁レジスタは2つの面、P0とP1を使って実現されます。各桁は2バイトのメモリで表現され、1バイトが面P0に、もう1バイトが面P1にあります(表7を参照)。桁レジスタは桁データが面P0(レジスタ0x20~0x27)、面P1(レジスタ0x40~0x47)、または両面に同時に(レジスタ0x60~0x67)更新することができるようにマッピングされています。16セグメントディスプレイの場合は桁レジスタのデータは桁セグメントの制御に直接使われず、16セグメントのフォント用データを蓄積する文字発生器のアドレス指定のために使われます(図3)。桁データの下位7ビット(D6~D0)はフォントから文字を選択します。このレジスタデータの最上位ビット(D7)は桁のDPセグメントを制御します:1に設定すると、DPを点灯し、0にすると非点灯のままです。
MODE | ADDRESS CODE (HEX) | REGISTER DATA | ||||||||
D7 | D6 | D5 | D4 | D3 | D2 | D1 | D0 | |||
16-segment mode, writing digit data to use font map data with decimal place unlit | 0x20 to 0x27 0x40 to 0x47 0x60 to 0x67 |
0 | Bits D6 to D0 select font character 0 to 127 | |||||||
16-segment mode, writing digit data to use font map data with decimal place lit | 0x20 to 0x27 0x40 to 0x47 0x60 to 0x67 |
1 | Bits D6 to D0 select font character 0 to 127 |
コンフィギュレーションレジスタのブリンクイネーブルビットE(表3)によってブリンク機能がディセーブルされている場合、P0面の桁レジスタデータはディスプレイをマルチプレクスするために使われます。P1面にある桁レジスタデータは使われません。ブリンク機能がイネーブルとされている場合、P0面とP1面の両方の桁レジスタデータはディスプレイをマルチプレクスするために交互に使われます。ブリンキングは、ブリンククロックの交互の位相で面P0と面P1を用いてLEDディスプレイをマルチプレクスすることによって行われます。
例として、MAX6954を用いて、「MAXIM-IC」という8文字を表示してみましょう。コンフィギュレーションレジスタをプログラムしたとき、ブリンク機能をディセーブルとしたため、データは桁0から桁7を制御するために、0x20~0x27レジスタに書き込むことができます。図3のフォントマップを用いて、各文字に対応したコードを決定してください。
REGISTER ADDRESS (HEX) | DIGIT | CHARACTER | FONT MAP EQUIVALENT CODE | |
DECIMAL | HEX | |||
0x20 | 0 | M | 0100 1101 | 0x4D |
0x21 | 1 | A | 0100 0001 | 0x41 |
0x22 | 2 | X | 0101 1000 | 0x58 |
0x23 | 3 | I | 0100 1001 | 0x49 |
0x24 | 4 | M | 0100 1101 | 0x4D |
0x25 | 5 | - | 0010 1101 | 0x2D |
0x26 | 6 | I | 0100 1001 | 0x49 |
0x27 | 7 | C | 0100 0011 | 0x43 |
全体の輝度制御レジスタであるレジスタ0x02に書き込むことによってディスプレイの輝度を調整してください。輝度は0x00 (最小オン、1/16の電流)と0xFF (最大オン、15/16の電流)の間で調整することができます。ディスプレイの明るさのディジタル制御は、また、各桁を個別に管理することができます。桁の明るさの調整及びその他のGPIOやKey-scanのような高度な機能については、MAX6954のデータシートを参照してください。
REGISTER (HEX) |
COMMAND (HEX) |
FUNCTION |
0x07 | 0x01 | Enter display test mode |
0x07 | 0x00 | Exit display test mode |
0x04 | 0x01 | Exit shutdown mode, disable blinking and select global intensity control |
0x20 | 0x4D | Write "M" to digit 0 |
0x21 | 0x41 | Write "A" to digit 1 |
0x22 | 0x58 | Write "X" to digit 2 |
0x23 | 0x49 | Write "I" to digit 3 |
0x24 | 0x4D | Write "M" to digit 4 |
0x25 | 0x2D | Write "-" to digit 5 |
0x26 | 0x49 | Write "I." to digit 6 |
0x27 | 0x43 | Write "C" to digit 7 |
0x02 | 0xFF | Set globalk intensity to full-scale |
REGISTER | ADDRESS (COMMAND BYTE) | ADDRESS (HEX CODE) | |||||||
D15 | D14 | D13 | D12 | D11 | D10 | D9 | D8 | ||
Decode Mode | R/active-low W | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0x01 |
Global Intensity | R/active-low W | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0x02 |
Scan Limit | R/active-low W | 0 | 0 | 0 | 0 | 0 | 1 | 1 | 0x03 |
Configuration | R/active-low W | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0x04 |
Display Test | R/active-low W | 0 | 0 | 0 | 0 | 1 | 1 | 1 | 0x07 |
Digit Type | R/active-low W | 0 | 0 | 0 | 1 | 1 | 0 | 0 | 0x0C |
Intensity 10 | R/active-low W | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0x10 |
Intensity 32 | R/active-low W | 0 | 0 | 1 | 0 | 0 | 0 | 1 | 0x11 |
Intensity 54 | R/active-low W | 0 | 0 | 1 | 0 | 0 | 1 | 0 | 0x12 |
Intensity 76 | R/active-low W | 0 | 0 | 1 | 0 | 0 | 1 | 1 | 0x13 |
Digit 0 Plane P0 | R/active-low W | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0x20 |
Digit 1 Plane P0 | R/active-low W | 0 | 1 | 0 | 0 | 0 | 0 | 1 | 0x21 |
Digit 2 Plane P0 | R/active-low W | 0 | 1 | 0 | 0 | 0 | 1 | 0 | 0x22 |
Digit 3 Plane P0 | R/active-low W | 0 | 1 | 0 | 0 | 0 | 1 | 1 | 0x23 |
Digit 4 Plane P0 | R/active-low W | 0 | 1 | 0 | 0 | 1 | 0 | 0 | 0x24 |
Digit 5 Plane P0 | R/active-low W | 0 | 1 | 0 | 0 | 1 | 0 | 1 | 0x25 |
Digit 6 Plane P0 | R/active-low W | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0x26 |
Digit 7 Plane P0 | R/active-low W | 0 | 1 | 0 | 0 | 1 | 1 | 1 | 0x27 |
Digit 0 Plane P1 | R/active-low W | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0x40 |
Digit 1 Plane P1 | R/active-low W | 1 | 0 | 0 | 0 | 0 | 0 | 1 | 0x41 |
Digit 2 Plane P1 | R/active-low W | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0x42 |
Digit 3 Plane P1 | R/active-low W | 1 | 0 | 0 | 0 | 0 | 1 | 1 | 0x43 |
Digit 4 Plane P1 | R/active-low W | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0x44 |
Digit 5 Plane P1 | R/active-low W | 1 | 0 | 0 | 0 | 1 | 0 | 1 | 0x45 |
Digit 6 Plane P1 | R/active-low W | 1 | 0 | 0 | 0 | 1 | 1 | 0 | 0x46 |
Digit 7 Plane P1 | R/active-low W | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 0x47 |