アレグリア ! 狂った時計師が帰ってきました !!

それがされているだろうので、タイトルは故意に挑発的です:

私はMATRICEを表示します: HW SW技術および使用

私が説明するつもりですが、ドットマトリックス表示8あるためです×8 (7×5 8×5) それらの使用方法、ハードウェアとソフトウェアの両方を理解しよう. このために私はいくつかのプロトタイプを作成しました (技術のこれらの状態でした) ただ、これらの行列を使用してデジタル時計. これは、HW特性がほぼ同じであることを述べて (それだけでピンを変更します) アノードコモンカソードコモンその両方. そうで特異的に入る前に’ いくつかのビデオでそれを基づかすると、これらのプロトタイプのいくつかを表示します.

NB: 動画を表示します: 運命はSULのリンクをクリックしてください: ファイルを開くか保存するかどうかを尋ねるダイアログボックスを開きます. 動画は、Windows Media Playerまたはのための同様のWMVファイルを見ることができます.

ミニバイナリ時計

このビデオでは、どのように単純マトリクス8を示しています×8 あなたは時計を表示することができます “RAIL”. それは心の時間前に代わりの一つに考えていた場合は、すでに私の別の記事で紹介しました !

カスケードクロック

このビデオでは、個々のクロック値は点ごとに表示されます: 配列は分まで追従し、その後数十時間と左から初期値の形成を示します. 第2のスキャンは、ディスプレイ上で左からLED /ピクセル第によって表示されます.

スライド式時計

時間を作るビッグ文字, 分と秒は無期限に右から左にスクロールします. 文字の形成に要する時間を考えます, あなたは約失います 2/3 フルとその後の表示の間の秒.

時計の言葉

この最新のビデオの時計で “言葉で”. この場合、ドットマトリックス表示装置が、特定のデバイスを使用しません: インクルード DL2416T. なお、表示されます “賢いです” 構成 4 数値を表示することができる複数のセグメントと桁, 文字や一部の特殊文字. このデバイス, 廃止, これは、更新されたバージョンで利用できるようになりましたが、残念ながら、かなり “懐かしいです”. 私の所有するものには、いくつかのドットマトリックスの共食いから派生年をプリンタ 80/90. あなたがビデオから見ることができるように, これが唯一のプロトタイプを終了します (ディスプレイと一部の両方を持つPCB “メイン” マイクロArduino_Nanoと制御電子回路と).

マトリックスディスプレイの特性

インターネット上でこれらのマトリックスの使用上の多くの画像との例があります: 彼らは、特定の使用をappronfondireする助けとなることがあり. しかし、多くの例は、表面的であり、, 私の意見では, 包括的ではありません. それでは、私が説明しますと、研究や個人的な経験の結果だけです. 任意の参照は、純粋に偶然です.

下の図では見ることができます: ディスプレイ8×8, ディスプレイのコントローラの両方を収容するモジュール (MAX7219), スケッチによって割り当てられ、管理される論理レイアウト, モジュール上の行列の最後にピンアサイン. L’ ディスプレイモジュールの向きに収容された単一の位置を有します (8 右のピン 8 左へ) それによって、それが逆さまに配置されている場合、明らかにそれが正常にオンになりません. 第四の図からは、コントローラのものと表示ピンの割り当てを確認することができます (MAX7219), 一つは、したがって、陰極である推測することができます (私が呼び出されます “桁“) そしてアノードは何ですか (私が呼び出されます “SEGMENTS“). 問題の表示は共通のカソードであります.

私はカソードと呼ばれる理由 “桁” そして、陽極 “SEGMENTS” それはそれは、ハードウェアやソフトウェア、ディスプレイおよび関連するコントローラから管理されている方法から来ています. これらのディスプレイは、ディスプレイと比較することができ、 7 セグメント + 1 以下のように定義 “A”, “B”, “C”, “D”, “E”, “F”, “G”, “DP” (小数点または第セグメント). 各列 8 マトリックスのLED /ピクセル (3番目の図を参照してください) なお、表示することができ 7+1 セグメントとは、アレイは、鎖にたとえることができます 8 セグメント化された表示. 単一LED /ピクセルをオンにすると、ピンを適用するのに十分です “陰極” 地面とピンの列の “anodo” 論理値への単一セグメント “1” (+5RによるVの秋). E’ 文字または数字を形成するために同時に所定のフォーマットに係るLED /ピクセルをオンにする必要があることが明らかに (目への永続化del'immagine): または多重化を使用します. これは、数字とセグメントを接続しても意味がありません (8+8 ピン) マイクロコントローラの出力に (抵抗は明らかに落ちて) そして、不要なプログラムによる合併症.

私のプロジェクトでは、私はいつもと思うために使用 “プリンシペ” から “シフトレジスタ” のみであるため 3 のチェーンを駆動することができ、ピン 8 お互いにカスケード接続されたマトリックスまたは 8 表示A 7 セグメント. 制限付き (その後、我々はそうではないことがわかります) : モジュールのみ “カソードコモン”. このチップ (低コストディスプレイのそんなに持つモジュールが価値がある場合 1,5 A 5 ユーロ) あります MAX7219. 主な機能:

  • 3 駆動用のPIN (LOAD / CLOCK / DATA_IN).
  • 統合された多重化.
  • スケジュールされた調光対応.
  • 別のディスプレイを接続するための端子DATA_OUT.
  • セグメントディスプレイに無差別両方管理する行列.
  • 7 運転制御用レジスタと 8 I桁ごと.
  • トリマーとも外部から明るさの制限.

どのように使用し、PROGRAM THE CHIP MAX7219

ディスプレイの管理に関わるすべてのプロジェクトのために今、このチップを使用してRGBにもマトリックス又はセグメントLEDアレイであります. RGB LEDについてすぐに私が公開します “CHRISTMAS STAR” それはシーズンではありませんが、 !. 私たちは、チップと、その後深め、さまざまなレジストリをピン:

DG0 / DG7 ディスプレイの陰極を駆動, SEG_A / SEG_DP ディスプレイのアノードをフライング. 私はMATRICEを表示するパー DG0 / DG7 彼らは、列の中を参照してください。 SEG_A / DP 彼らは、個々のLED / pixex欄を参照してください。. L’ セグメント割当/ LEDとそのバイナリ値は、レジストリに設定する必要があります “データ” ビットことを念頭に “DP” 谷 128 (0X80). ピン FROM これは、入力データに相対的です , ピン ロード/ CS チップを選択, ピン CLK クロック、最終的にピンを提供 DOUT それは、最大のための別のチップのカスケード接続を可能にするものです 8. 最終ピン “ISET “R 10Kを接続することにより、輝度値を調整します (1つの1トリマー) 正極.

レコードを見てみましょう:

使用して、個々のレジスタの意味:

  • 登録 0: に置きます “0X00” それが唯一のチェーンで表示するのに役立ちます. (0具体的な表示のために何も操作をしないVVER).
  • ログ 1/8: これらは、個々のセグメントの点火のための個々のセグメントをアドレスレジスタであります (形式のデータレジスタを参照してください).
  • 登録 9: Decode_Mode: それはそれはBCDコードまたはnoneを使用しているかどうかを確認するためにチップに必要.
  • 登録 10: 明るさの変更. 値に 0 A 15. ゼロの値で表示が、その最小輝度をオフに取得することはありません. あなたは、発光効果がこのレジスタをもたらすことができます 0 A 15 プログレッシブと韻律の方法で.
  • 登録 11: スキャン制限: 確かにそれはスキャンされますどのように多くの数字を示さなければなりません: データシート上の表は、値が割り当てられることを示し.
  • 登録 12: 動作モード (シャットダウン). このレジスタの値を交互に (インクルード 0X00は0x01) あなたは、ディスプレイオンまたはオフに切り替えることによって得られます (任意の現在価値を失うことなく、). これは、2つの値の測定方法を交互に効果が点滅を作成するのに役立つかもしれません.
  • 登録 13/14: いいえ.
  • 登録 15: デバイステスト: あなたが接続されているすべてのLEDの点灯を取得します.

基本的に特定のコマンドを実行するために、チップに送ってください。 2 バイト: 同じコマンドの関数として仮定しなければならないレジスタ・アドレスと値: たとえば、通常、あなたはシーケンスを送信する必要があります開始: “0C00“.

 

管理ソフトウェア

ここで最も興味深い部分です: これらの表示を管理する方法. ネット上, 明らかに, あなたは多くの例やライブラリを見つけることができますし、最初に私は、これらのライブラリのいくつかダウンロードしていました: LEDCONTROL E LEDCONTROLMS そして最初のテストに使用 . 私は満足していない有効ですが、私は自分の利益aを開発した理由pesonalmente “ライブラリがsuiのgeneris” 両方のカソード表示ANODO domuneを管理することができます. 私は定義されました “隋generis” それは行に書かれたが、実際にはファイルではなかったので、 (.イノ) これは、必要なすべての機能が含まれており、そのために両方の行列のために実装 7 セグメント. E’ ちょうどスケッチで、このファイルをインクルードしてから電話をかけること. (私は本物のライブラリにこのファイルを変換する権利を留保します). この記事の開口言葉は、我々は、彼らが管理することができる方法を見て行列については.

まず、あなたが扱われなければならないどのように多くの行列を定義しなければなりません: 一つ以上. 単一のアレイのために、特に問題がない場合, それは1つが採用されるべきより多くのまたはPCBをconnetterneまたは接続を飛んで作るために来るとき. 私たちは、この図を参照してください:

第1行列は、古典的なピンとマイクロに接続されています LOAD / DIN / CLOCK: それがある場合にはこれだけは何も必要ありません. 2回目以降の接続から、 LOAD / CLK 一緒に接続されているが、二番目の配列されています (または第三など) 彼の FROM これは、に接続されています DOUT 前の行列の. E’ ソフトウェアのタスクが正しく行列をターゲット. (レジスタを忘れないでください “ゼロ” ?) . この小さなモジュールを使用すると、接続が容易に:

入力は、それらの前に見ていると、出力端子があります VCC, GND, 負荷, CLK, DOUT. スライディングクロックプロトタイプ用またはカスケードで, 私が使用しました 4 このPCBに収容表示:

 

メインエントランスピンの左に, 出力ピンの右下の他の行列を接続します. 各モジュールの空間が赤色に長方形で囲まれています. VCCピンとGNDをお見逃しなく.

私たちは、私たちが管理するための最初のステップを行うと述べたされています. で行われる最初の操作 “セットアップ” 任意のスケッチであります: (今後のために “デバイス” チップを特定し、 “表示” 行列の一桁または列). これらの操作はすべて、それぞれのために実行する必要があります “デバイス” 現在. システムがあるときことに留意すべきです, ほとんどの場合、, あなたはLEDの点灯の持続性を持つことになりますそうでなければ、他の前にこれらの操作を実行するのは良い考えかもしれれるすべてのLEDがオンになり、チップの自己テストを持っています.

  • 出力としてマイクロチップのピンアサイン.
  • チップを初期化するためにシャットダウンしてください.
  • 明るさを設定します。.
  • コーディングに設定.
  • テストモードを設定します。.
  • 設定します “スキャンリミット”.

すべてのこれらの操作は、以下のように定義されたマイライブラリ内の関数を使用して管理されています “Led_MX_Init” それは、ピンを設定します, 初期化を実行し、メソッドを割り当て “CATHODE” ザ・ “ANODO” 一般的. このライブラリのデバッグのための利便性のために、私も追加します (INIT内のフラグを介して) 値は、レコードに送信するシリアル出力を表示する機能. ライブラリの開発のために私はそのスケッチを実装しました, シリアル, 表示のための両方の行列のためのライブラリのすべての機能の実行を可能にするメニューから対話を設定します 7 セグメント.

私はチップが表示のみ共通のカソードを管理できるように指定していました: ある程度まで本当あなたはまた、これらの共通のアノードが、次の措置を使用することができますので、:

  • レベルHW: HEXインバータを介した信号DG0 / DG7を反転 (74LS04). このように、アノードは、正しい論理値に到着します.
  • A livello SW: フラグを活性化させます “ACMODE” ライブラリ内のINIT機能. 発光ダイオード/ピクセルを管理し、この活性化関数の存在下で通過した値を反転’ 特殊機能 (Led_Value =〜Led_Value;).
  • の状態で、’ アートライブラリーは表示のみ、この機能を使用しています 7 セグメント.

初期のプロトタイプが同じの開発に使用される方法とコツを説明し、具体的クロックごとに、今私たちにしてみましょう. それが時計になるとして、私たちに必要なことは明らかです RTC そこから日時を読むには. 特に指定はありません: あなたが使用することができます DS1307 インクルード DS3231 若しくは PCF8583 (モデルvetusto). 唯一の違いは、レジスタ及び復号化方法を読んでいます. ちなみに私は、これらのRTCを管理するための任意のライブラリを使用していません: 私は、ライブラリ関数を登録するには、直接アクセス “ワイヤー“.

バイナリ時計: これは、他のすべての最も単純です. スケッチは、一つのデバイスを管理します (マトリックス8×8) そして後にデバイスを初期化し、RTCの動作確認, 関数内でループを実行します “ループ” レジスタRTCの時刻値からの読み込み, 分,秒,日, 月. これらの値は形成されているとおり “BCD” (時間 12 彼らは、バイナリであります 0001 0010) 何のデコードは彼らの可視化のために必要ありませんされていません. さんが戻って一歩を踏み出してみましょう: 私は行列がのセットとして見ることができると言いました 8 各列が表す式ディスプレイ 8 セグメント (7+1) そのエンコーディングレジスタに割り当てられています 1 列の 1, 2 列の 2 (ように、他の列のために) チップによって課さコーディングを尊重 (図を参照してください “データを登録“). だから、トリックはあります: 各選択欄について、次に値がアップロードされます “有名な12時間” 次のように彼らは、割り当てられています:

そして、その上の他のすべての列について. そして、マスクは、その表示は不要であるビットをカバー. これは、カラムによりチップ列を制御するために、その後で (から 1 A 8 しかし、特定の場合 1, 2, 4, 5, E 7) これは、ライブラリ機能を提供します “LEDMTX_Setcolumn” デバイス番号を提供します, 列の数とその値.

スライド式時計: これは、以前のではなく、複雑よりも複雑であり、それは上の唯一の理由であります’ 値の滑りを決定するアルゴリズム. それは、このコンテキスト別のファイルに収まります (Led_Tabel.ino) アレイの形でこれは, 数字の表現に個々の列を仮定しなければならないバイナリの構成はどのようなもの (ゼロへ9) 表示のための両方のための行列 7 セグメント. 今、これらのディスプレイの設定を決定し、あいまいであれば, 8の利用可能なグリッドを有するマトリックスについて×8 LED /ピクセルは、最も喜ばとして様々な数を設定するには、開発者の自由な選択となり.

ここでは例です: セグメント化された表示用数字のゼロは、以下の構成を有しています: 0111 1110. どれ小数点 (セグメント “DP“) それはにつながる挿入することができます “1” 彼はビット 8 又は適切な機能のフラグを有効にし. そう一つずつ数のバイトと表示を行う機能は、数の関数としてのアレイによって指さ. (配列の最初のバイトのゼロ先端, 二つ目、というように).

別のは配列のためのシステムであり、: 実際には、同じ番号のためにそれがよくなります 8 構成、各列ごとに、すなわち1つのバイト. 次のように同じ数のゼロが定義されています: “0,60,98,82,74,70,60,0“. 値は、小数や構成で表現されている個人的な選択であります. 番号を表示する機能は、各系列の最初のバイトを指していなければならないことになります * 8 (“0” * “8” = “0” そして最初のバイトを指します; “1” * “8” = 8 そしてナンバーワンを設定する最初のバイトを指します). 次いで、カラム/列には、閲覧可能. 以下の図は、彼らがグリッド内の文字で構成することができる方法の一例である8×8.

これを言った私たちは、私が考案したアルゴリズムであるかを見ます, カラム右から左の列にスライドさせることにより、クロックの値を表示します. 上にあるスライディング 4 の合計のための装置 4*8 = 32 コラム: あなたは、その後の配列を作成します 32 コラム. 私は、セットアップの最初の部分を省略します (RTC, INIT 7219 等) その後、サイクルで “ループ” あなたが作ります:

  • RTCレジスタを読みます
  • 時間値のデコード, 十単位の個々の値を得るために、分、秒. これらの値は、個々のグループの文字テーブルの先頭にあなたを指すために使用されています 8 バイト.
  • 時間の数十の値から開始ルーチンが位置におけるテーブル構成および挿入からバイトで相対バイトを抽出します 32 アレイ値は、一度に1つの抽出しました. 配列は、位置からスキャンし、この時点で開始 “ゼロ” 左側に第1のデバイスの第1の列の内容を表示し、継続 32 ポジション (デバイスがあります 4 直列に接続されました). このスキャンは、アレイ全体つの位置だけ左にシフトされ、そしてサイクルは、構成の次のバイトで再び始まると. サイクルが終了したとき 8 まで、それは時間の単位で継続するバイト’ 同じシステムと第二のユニットの. 従って、摺動効果を得られます。. しかし、他の測定値の間’ RTCとその完全な表示が失われます 2/3 サイクルあたりの秒数.

この時点ではまだ表示管理では考慮されていない一つの局面で来ます. 私は、デバイスがある言ったように 4 直列に接続されました. その後も、デバイス全体を指揮します (最初から最後まで) 各コマンドは、で構成されていることを知っています 2 バイト (アドレス/値) 我々は、値を標的とするデバイスの数に等しいバイトとコマンドのセットを送信する必要があります:

デバイスがある場合は、次のように又は第四のシーケンスは、: “0000 0000 0000 XXXX“. (デバイスは、第1の配列だった場合だろう: “XXXX“)

鳩: “0000” それはのコードです NULL OPERATION, “XXXX” 第4の装置に送信するコマンドであります (最初の右). しかし、バイトの第四群から連載 (練習の最後). チップは、第一受信します 4 しかしサイクルのバイトはゼロに続いて受信するので, 一つのデバイスからの様々なバイトをスライディング. すべてこのためには、テーブルから読み出すことによって、特定の機能を提供します (以下のための準備 8 デバイス) 私 4 明らかに、最後から始まる値. E’ しかし、デバイスの数に基づいて決定し、同じ機能は、多くのバイトを送信します.

言うことよりも、申し訳ありませんが、それは何をする方が簡単です. 私は明確だった願っていますが、 注意 すべての番号が割り当てられた第1のデバイス位置に対して相対的です 1.

カスケードクロック: ここでは、より複雑です, 実装の観点から, これらpersentati今まで. 私はあなたが映画で見た効果を達成するために、右のアルゴリズムを構築する上でいくつかの問題を抱えていたことを告白します. また、ここで実行されている標準的な操作をスキップ “セットアップ” 本発明の方法に直接移動します. そして、サイクル “ループ” あなたは、RTCの値を読み始めます, 時間と分の数十に変換します, 時間と分の単位. 秒は、左から3番目のデバイスに点滅して表示されます, LED “DP” ビットの値に基づいて、第1のカラムの “1” 秒. 映画のように、最初はすべての行列に値が設定されて見ることができます, ミリアンペア, 各マトリックスは、変更が表示されるはずの値が前回に比べた場合にのみ変更します. すべての値は、RTCから読み取る場合 (時間または数十分, 時間または分単位) 変更, その後、アップグレードをその表示が有効になり. だから、すべての 60 秒 (“年頃” 行列の完全な表示は、少し時間を占めているので、) これは、数分または数時間などを更新します. 効果を達成するために “滝” テーブルから取るべきあなたが持っている各列の個々のLEDの (3あなたがデータソースを変更することができますを製造しました。) シングルバイト (第1〜第8へ) それが第1のLEDを点滅し始め (ビット 1) あたり 15 ミズ, その後、第二しかし、前のLEDが点灯したまま言ったそうで継続 (文字の構成によれば). ゼロバイトをスキップします. サイクルは、8つのバイトが完了するまで繰り返されます. このサイクルが完了するまで次の文字に渡されると. 私 15 一つのフラッシュおよび他間のミリ秒の遅延は、実行及び所望の効果の速度との間の妥協であります. 明らかに、秒の点滅は、彼らが同時に時間と分を変更する場合は特に正確ではありません。(インクルード 23.59 A 00.00).

このメカニズムを説明することは容易ではありません, 自分も可変パラメータを追加することによって産生され、変性した後, 私はほとんどricomprenderloことはできません (!!!). あなたはプログラミングの初心者であれば, ルーチンは十分に理解されるようにコメントしています.

標準電波: そして、ここです’ 最後 (あなたが退屈していない、その間に期待して). 私はまた、異なるディスプレイモジュール間の比較を行うためには、これを言及したかったです: この場合, 古いものの引き出しから引き出され、まだ完全に機能, それはあります DL2416T 今日は置き換えられ、特定の表示 DLR2416. 残念ながら、後者は高価です.

2つのモデルの違いは、我々はこの数字でそれを見ることができます:

最初の構成要素は 4 セグメント化された表示 (14 私が間違ってカウントされていない場合) 第二は、マトリックス7であります×5. これらの表示特性, 両方の端子機能としてコンパチブル, 彼らは次のように要約することができます。:

  • 4 桁、個別にアドレス指定 (“00”, “01”, “10”, “11”).
  • 個別にアドレス可能なデバイス (2つの選択ピン)
  • 個別に消去可能.
  • 特殊文字のセット, 英数字と数値.
  • 自動多重化管理.
  • 食べ物 5 6V最大.
  • カーソル管理
  • 各データシートのその他の特徴.

二つのモデルのための有効な以下の図では, 連結ピン:

私たちは、チェック: 2 選択のためのピン (CE1 / 2), 2 カーソルの管理のためのピン (CUS,合図), 数字の選択のための2本のピン (A0 / A1), ピン CLR 取り消し, ピン BL 値の損失なしにシャットダウン (blincaggioに便利), 7 ピン (D0 / D6) とに データ入力, 最後に、ピン 我々 値の書き込みのため. HIGH-LOW-HIGH移行が設定されているものの書き込みを可能にします. 経験豊富な最適値: 5米国.

二つのディスプレイへの接続の後、複雑 (試作品のように), 私はこのようなPCBを生産しなければなりませんでした:

PCBだけ平行にピンを接続することにより、2つのディスプレイのハウジングを提供しています言ったように私は、回路を設計しました D0 / D6 とに接続するために持って来ます “メイン” 私はピン A0 / A1, 我々, CL1, CL2, BL1, BL2. Iピン CUS E 合図 この文脈で、それらは使用されず、デフォルト値に設定されています (論理レベル “0” E “1”). 特に注目すべきは、ピンを懸念します CL1 / 2 E BL1 / 2: データシートによると、ディスプレイのキャンセルやそのabblencamentoのために、私たちは同じディスプレイの選択から独立しています: することはできません (それは選択肢であります) あなたは、単一の表示を削除したり、無効にしたい場合は、並列に接続されています. 私はそれ以降のソフトウェアで期待. ここでは代わりにマイクロArduino_Nanoためのメインボード上のPCBと2 74HC595.

 

プロトタイプの心に、その後に移動しましょう.

接続の数を与えられたことは明らかです (6 Iデータ入力あたり) E 9 コマンドについて, 彼らはすべてのArduinoピンを実行します (メガなどを除外するために、1つまたはナノ), この回路図で見ることができるように、我々は異なるアプローチが必要:

グラフでは、私たちが見ることができます 2 74HC595 (シフトレジスタ) 第一に、それらはピン出力に定義されます D0 / D6 第2のコマンドピンに定義されている間に表示のデータ入力に対して: とき/ A1, CL1 / 2、BL1 / 2, CE1 / 2. 二つのチップをカスケード接続し、シフトレジスタの規則に従ってれます (並行してそれらを送信するためのシリアルの受信データ). 信号 QH それはに接続しています データ入力 第2.

信号を分離するために厳密には必要でないというスキームは、最初のバージョンに関連しています OE, THE, CLK それがかかるため、信号を個別にあります OE 出力を制御します サポート/ Q7 (そうでない場合は、ハイインピーダンスであります). E’ しかし、私の選択信号の分離. 信号 氏 (マスタリセット) これは、チップをリセットするのに役立ちます. コマンドピンは、Arduinoのピンに接続されています; 信号 “我々” これは、他の部分から独立しており、別のマイクロピンに起因します.

チップについて 7219 あなたは定義することができます “インテリジェント” なぜなら、シフトレジスタの機能に加えて、, 機能の活性化のためのコマンドの必要性, 私 74hc595 それらは “愚か” 彼らはただのシリアルビットを受信し、これらがある場合に限られているため > 8 ように次のチップへの連続するビットを渡し、そして. このシステムを利用して、個々に表示を制御するためのアルゴリズムは、で構成されてもよいです:

  • チップへ送ります 8 文字の構成に関するビット (8 ゼロゼンパービット).
  • ディスプレイ構成とその数字を選択する制御ビットの次のチップへ送ります; オペレーション, これら, 順序で行われます.
  • イネーブル信号を安定させます’ OE 二つのチップ.
  • スイッチ信号 “我々” ディスプレイ上の実際の書き込みについて.

E’ 持つことについて書いていることは明らか 8 桁 (2 あたりの表示 4 桁) 完全なテキストを構成する文字をsigole (あなたは映画を見たことがあるかもしれませとして) コマンドの正確な配列および送信する文字を決定するために必要な . この点で、私は次の表を構築しました.

あなたはこのテーブルを読んで ?. 例: あなたは、ディスプレイをロードしたいです “1” 桁 “0” 文字で: あなたが最初のチップに送られ、文字の値は、小数点以下の値のチップに応じて “62“. レイアウトビット出力 (Q0 / Q7) これは、信号に対応します A1 / A0, BL2, CL2, CE2, BL1, CL1, CE1 これは私が論理レベルにしています “1” (非動作) または論理レベル “0” オペレーティング. 私は、彼らが0または1のときに正しく値を計算するために使用されているような表に示されている数字を欺くしないでください. 心に留めするもう一つは、チップが信号に接続されている方法に応じて、次に表示するということです, なお、第1のチップは、必ずしも信号のデータのための1つ又はそれでなければならないと言われていません.

まだ少しの忍耐: また、我々はそのソフトウェアで、このプロトタイプを完成します. あなたはこの場合にも知っているように、それはクロックを管理しています. スケッチは複雑ではないが、以下のように、それを簡単に説明することができます:

  • のソリタ活性化’ 通常のプレゼンスコントロールと効率のRTCシステムの不在下でのその.
  • 74HC595チップに接続されているピンの設定.
  • ループでは “ループ” RTC値の読み取り, 同じ文字列の準備のトランスコーディングは、言葉で構成されてい “営業時間はARE ” 時間値 (十台) ポイントが点在, それから “THE ” 日の値, 週の月およびトランスコーディングのトランスコーディング. だから、文字列の末尾に含まれています:
  • XX.XX XX月金曜日の営業時間はARE —-> 例. 一つの単語と他の間のスペースは、文字を用いて得られます “00” 目に見える何も発生しないバイナリ.
  • 文字列を作成した後、, その実際の長さに応じて配列dに挿入されています 8 バイト位置 8, 文字列の最初の文字.
  • これは、ループを実行します 8 に配列の値を送信するためのサイクル 8 桁デイ表示 (具体的に表示するコマンドと数字とDATA_VALUEのセット).
  • これは、シフトの配列を維持します 8 右から左へバイト.
  • これは、サイクルを繰り返し、.

これは、このように250ミリ秒のプログラムされた速度は、視聴のために最適と考えることができるスライディング効果を得られます。.

 

結論:

私はこの記事が非常に長いことを認識し、おそらく私は明白なものとrisaputeを記述する. しかし、私の視点からの方法と実装の選択を表示するには, 彼らはいつも、特に私のような初心者あるいは単に趣味のある人のための良い情報源になることができます.

その後、私はいくつかの不正確さを書いた場合, ない言い訳をしてください.

あなたの注意をありがとう.

GVSOFT月 2018

PS: あなたはgvsoft75@hotmail.comにスケッチおよび関連ドキュメントの書き込みに興味がある場合.

 

 

 

 

2 返信

返信を残す

議論に参加したいです?
貢献してお気軽に!

返信を残します