JavaScript が無効です。有効にしてください。
ななよんのホームページ
トップ > 電子工作 > 鉄道部品制御のすすめ > 16x32 赤色ドットマトリクス LED の制御

16x32 赤色ドットマトリクス LED の制御

最終更新日さいしゅうこうしんび:2023-08-10
「横浜」と表示されている。

 【2022-09-19】大阪のデジットで、16x32 赤色のドットマトリクス LED モジュールが売っています。春に 18 きっぷで関西旅行した際に購入して、ずっとしまい込んでいましたが、台風で暇なのでついに動かしてみることにしました。型番は AD-501-C です。メーカはアルファーデバイス、制御 IC はローム社製 BD7851FP が 3 つ載っています。おそらくパチンコ等の遊戯用モジュールでしょう。出力コネクタがついていないのと、基板が大きいため数珠繋ぎにはできません。なので、基本的にはパネル 1 枚単独で使うことが多くなると思います。鉄道系としての使い道だと、時刻や号車表示に使えそうですね。

 ピン配置、簡単な制御方法についてはデジットが簡易資料を用意しています。店頭にも置いてあったので購入時に 1 枚もらってきました。通販サイトからも見れたと思います。そのためピン配置やピンの詳しい説明については本記事では割愛させていただきます。

制御方法

 制御方法は、データ・クロック・ラッチ・イネーブルがあるので DUG や LUM とは似ていますが、コモンと左半分、右半分にそれぞれ IC がついているので、制御の考え方は DUG や LUM とは全く異なっています。データ線は 3 本あり、これは色ではなく(赤単色です)各 IC に繋がっていて、コモン、左半分および右半分のデータを同時に入れます。コモンとカラムの交点が、どちらも 1 であるときに(AND)そのドットは点灯します。なので、3 つの IC すべてに 0b11111111 11111111 を書き込めば全点灯しますが、文字等を表示させたい場合は、コモンを高速で切り替えてそれぞれの行のデータを入れてあげる必要があります。

PIC マイコンでの制御例

 PIC16F1827 を使用し、表示させてみました。設定は MCC で行い、クロックは PLL Enable で 32 MHz です(遅いとちらつきます)。ピン以外(タイマ等のペリフェラル)は使用していませんので、入出力とピン名の設定だけすれば動きます。ピン名は、デジットの資料のピン配置表に基づいています。なお、電源は余裕をもって 1 A 程度必要です。うまくいけば、1 秒間全点灯したあと、トップ画像のように「横浜」と表示されるはずです。

#include "mcc_generated_files/mcc.h"

const bool yokohama [16][32] = {
    {0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0, 0,1,0,0,0,0,0,0,0,0,0,1,1,0,0,0,},
    {0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0, 0,0,1,0,0,0,1,1,1,1,1,0,0,0,0,0,},
    {0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,0, 0,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,},
    {0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0, 0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,},
    {1,1,1,1,1,1,0,0,1,0,0,0,1,0,0,0, 1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,},
    {0,0,0,1,0,0,1,1,1,1,1,1,1,1,1,0, 0,1,0,0,0,0,1,1,1,1,1,1,1,1,0,0,},
    {0,0,1,1,0,0,0,0,0,0,1,0,0,0,0,0, 0,0,1,0,0,0,1,0,0,0,0,1,0,0,0,0,},
    {0,0,1,1,1,0,0,1,1,1,1,1,1,1,0,0, 0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,},
    {0,1,0,1,0,1,0,1,0,0,1,0,0,1,0,0, 0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,},
    {0,1,0,1,0,0,0,1,0,0,1,0,0,1,0,0, 0,0,0,0,0,0,1,0,0,0,0,1,0,0,0,0,},
    {1,0,0,1,0,0,0,1,1,1,1,1,1,1,0,0, 0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,0,},
    {0,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0, 0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,},
    {0,0,0,1,0,0,0,1,0,0,1,0,0,1,0,0, 0,1,0,0,0,0,0,1,0,0,0,1,0,0,0,0,},
    {0,0,0,1,0,0,0,1,1,1,1,1,1,1,0,0, 0,1,0,0,0,0,1,0,0,0,0,0,1,0,0,0,},
    {0,0,0,1,0,0,0,0,1,0,0,0,1,0,0,0, 1,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,},
    {0,0,0,1,0,0,1,1,0,0,0,0,0,1,1,0, 1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,0,},
};

void main(void)
{
    SYSTEM_Initialize();

    ENABLE_SetLow();
    SIN_1_SetHigh();
    SIN_2_SetHigh();
    SIN_3_SetHigh();
    
    for(int i=0; i<16; i++) {
        CLOCK_SetHigh();
        CLOCK_SetLow();
    }
    
    LATCH_SetHigh();
    LATCH_SetLow();

    __delay_ms(1000);

    while (1)
    {
        for(int i=0; i<16; i++) {
            for(int j=0; j<16; j++) {
                SIN_1_LAT = (bool)((0b0000000000000001<<i) & (0b1000000000000000>>j));
                SIN_2_LAT = yokohama[i][j+16];      
                SIN_3_LAT = yokohama[i][j];
                
                CLOCK_SetHigh();
                CLOCK_SetLow();
            }
            LATCH_SetHigh();
            LATCH_SetLow();
        }
    }
}

戻る

右メニュー

【表示がおかしい・崩れる場合】PC では Shift と F5 を同時押し。スマホではキャッシュを削除してみてください。



とうサイトでは Cookieくっきー使用しようします。くわしくは上記じょうきの「プライバシーポリシー・免責事項等めんせきじこうとう」もご確認かくにんください。



上へ戻る