LCDシリアルインターフェイスの新機能

このアイデアが生まれたとき、シリアルバスを備えたLCDインジケータが必要でした。 手元に最新のディスプレイはなく、µPD7225ドライバーを備えた古代のLCDが検証のために使用されました。 問題が解決されたとき、今日利用できる指標は単なる特別なケースであることが明らかになりました。







脚の数が少ないマイクロコントローラーを使用すると、多くの場合、入力/出力ポートの不足の問題が発生します。 マイクロコントローラのリソースは、タスクを解決するのに十分な「目」ですが、ポートはありません。 既に占有されている「負荷」への誘惑があります。 例として、tiny13 MKのシンプルな2チャンネル電圧計を考えてみましょう。2つのポートはアナログ入力で、2つはLCDのシリアルインターフェイスです。 デバイスの機能を拡張するには、シリアルデータバス(SD)を使用する必要があります。 さらに、彼女はほとんどいつも休んでいます。 インジケータへのデータ送信には最大200〜300マイクロ秒かかり、300ミリ秒ごとに1回しか更新されません。 クロックライン(CLK)は、明らかな理由で使用できません。 単純な小さなデバイスには、モードを切り替えてこれらのモードを表示するためのボタンがいくつかありません。特に、表示容量が少ない場合はそうです。 それが仕事です...







まず、インジケータを2線式シリアルインターフェイスに接続します。 µPD7225でLCDを制御するには、RESET、CS、C / D、BUSY、SI、SCKの6本の信号線が必要です。 最後の2つについては議論する必要はありません。既に言及しました。 残りは順番に:リセット、チップ選択、コマンド/データ、およびLCDドライバーによって生成される可用性。 2線ディスプレイの接続図を図1の右側に示します。 チップは電源がオンになると一度リセットされ、ドライバーのドキュメントで提供されているR2C2回路によって実行されます。







画像







アクティブローCSは、同期ラインのローレベルによって形成されます。 データがLCDに書き込まれている間、コンデンサC1はダイオードVD1を介して放電されます。 最後の記録の後、CLKが「1」に設定され、C1がR1を介して充電すると、クリスタルの解像度が削除されます。







コマンドシーケンスをインジケーターに書き込む前に、SDバス上で高レベルを設定し、C3がR3を介して充電されるのを待つ必要があります。 C3の電圧を大幅に変更するには、数バイトを書き込むだけでは不十分です。 データを書き込むために、C3はSDでローです。 BUSY信号をポーリングする代わりに、プログラムはコストがかかるため、パルスのエッジの後、別のバイトを書き込む前に時間遅延を生成します。 波形に示されているように、各バイトが書き込まれた後、CSが削除されると、ドライバによって準備完了信号が削除されます。







画像







回路の信頼性を確認するために、同様のインターフェースを備えた別のLCD KTM-S1201をテストしました。 ドライバーは同じですが、クロックパラメーターは20%異なります。



























遅延定数を調整し、不足しているコントラスト調整回路を追加する必要がありました。 8ビットNECインジケータの場合、pt13.asmプログラムは、12ビットKTM-S1201-pt23.asmを対象としています。 これらのインジケータ用の標準8ピン長方形コネクタを介したマイクロコントローラへの接続。











シーケンシャル制御を備えた最新のLCDを2つのバスに接続する方がはるかに簡単であることは明らかです。







制御および表示回路は、図1の中央に示されています。 3つのLEDのチェーンと、ロックのない2つの従来のボタンを備えた1組の抵抗により、ノードの電圧のセットを取得して、確実に押すのを確実に識別できるようにし、ポートの標準出力の機能を使用して異なる色の2つのLEDを個別に制御することもできます。 直列に接続された赤色ダイオードを、二重の直接電圧降下を伴うものと見なします。 ここでLEDは意図された目的だけでなくツェナーダイオードとしても使用されるため、最初に、示されている色以外の色のLEDを置き換えても良い結果が得られない可能性があることを警告します。 同じことが回路の供給電圧にも当てはまります。







初期状態(ボタンが押されていない状態)では、2.1Vダイオードの接合点の電圧。 グローはなく、各ダイオードにはほとんど電圧がありません。 押された上部/下部-1.4 / 4.8V。 レベルを区別するために、マイクロコントローラは、回路を接続するために選択されたポートでアナログからデジタルへの変換が可能でなければなりません。 さらに、すべてが標準です。







ポートを入力として構成し、入力電圧を変換し、コードを設定されたしきい値と比較し、「バウンス」を抑制してフラグフラグを生成できます。 スキャンプログラムのロジックは、選択されたボタンを最初に押すとフラグが設定され、2番目のボタンがリセットされるように調整されています。 別のプログラムがLEDを制御します。 ポートの3番目の状態は、独立してオンとオフを切り替えるために使用されます。 ポートの低レベルは赤色のLEDを、高-緑を点灯します。 すべてのLEDが同時に点灯できるように、動的表示の通常の原理が使用されます。 メンテナンスのコストはごくわずかです。







シングル入力/出力の制御回路は、LCDシリアルインターフェースのSDバスに接続されています。 インジケータの呼び出し間のポーズでは、バスは高インピーダンスに切り替えられ、クロックバスはパッシブ状態になります。 現在、SDバスのレベルは、LED抵抗ボタン回路によって決定されます。この回路は、押されたボタンに応じて、LED間の直接的な電圧降下の大きさによって、平均とは異なる方向に変化します。 ADCサイクルの後、マイクロコントローラはタイムシェアリングモードでLEDを制御し、オプションで任意のマイクロコントローラの任意の便利なポートに接続して、プログラムグリッチのセットアップ、チェック、または検索を行うことができます。 この場合、初期初期化中にその存在を簡単に確認する必要があります。その兆候は「ゼロでも1でもない」電圧レベルです。 この回路は、インジケータインターフェイスの動作に影響を与えず、マイクロコントローラプログラムメモリの大幅な消費を必要としません。 これは、HEXデモファイルのサイズによって明確にわかります。







制御回路の動作は、シリアルインターフェースのSDバス上の信号の波形によって示されます。 左側の小さなチェックマークは、ボタンがポーリングされた瞬間です。 中央の右側の「柵」-インジケーターの更新。











要素ベースを選択するときは、次のことを考慮してください。 選択した電流での輝度が低いため、緑色のSMD LEDは拒否されます。 3 mm LEDを使用する必要がありました。 テストするには、10K抵抗を介して5V回路に接続します。 明るさはあなたに合うはずです。 赤色のLEDはあらゆる用途に適しています。 ボタンを押した瞬間にLEDの輝きに注意する必要はありません(これがスキームです)。 ボタンが放されると、マイクロコントローラのレジスタの情報が変わります。 新しい出力サイクルをアクティブにするには、もう少し時間が必要です(古いサイクルはまだ終了していない可能性があります)。 作業中に不都合は認められませんでした。 唯一の機能であるインジケータ更新時の短いLEDの点滅は、デバイスの動作状態の表示と見なすことができます。







デモプログラムはアセンブラーで作成され、2つのインジケータの下でATtiny13用にコンパイルされ、実際のデバイスのインターフェースと制御回路の共同動作の原理を理解するために必要なもののみが含まれています。 対応するボタンのLEDは、最初に押すと点灯し、2回目に押すと消えます。 これにより、プログラムのクリックフラグの処理が制限されます。 開発者は、デバイスの機能目的に応じて自由に制御用のポートを自由に使用でき、「リセット」入力は予約されています。 残りの空きプログラムメモリ(これはほぼ半分)は、デバイス固有の追加機能を提供するのに十分なはずです。 tiny25 / 45/85を使用すると、一般的にメモリの問題が解消されます。







電圧計のチャネルの変換係数を選択するために、ソースのCoef定数が使用されます。 プログラムのコンパイル時の選択により、入力信号分割器でトリミング抵抗を使用する必要がなくなり、最大99.9Vの入力電圧範囲で電圧計を使用できるようになります。 小数点の後に2桁が表示されますが、精度はマイクロコントローラーのADCの分解能によって制限されることを理解する必要があります。 64個のサンプルを平均すると、10Vを超える入力電圧の数十ミリボルト以内の変化を、高い測定値の安定性で観察できます。 入力分周器の抵抗器の値は、マイクロコントローラの供給電圧を超えない条件から選択され、読み取り値と一致するようにプログラム内の定数がその後修正されます。 MKはソースコードの値を融合します。 8でディバイダーをオフにする必要があり、残りはデフォルトです。







著者は、シリアルインターフェイスの追加機能を実証するための電圧計の選択は純粋に実用的であるという事実に注目しています。 テストプログラムにいくつかの機能を追加するのは簡単でした。 ポートの数が少ない場合のマイクロコントローラーの設計でのこのアイデアの適用により、説明した制御回路を接続し、ソフトウェアコンポーネントを変更するだけで、完成したデバイスの機能を拡張できます。







パート2.「しかし、スイングするかどうか...」



I2Cバスは2線式インターフェースにも適用されます。 特にこの規格には多くのLCDインジケータがあるため、シリアルバスを2回使用するという考えを転送したいと思うでしょう。 国内の製造業者でさえ、数十の品目を生産しています。







明らかな解決策は、初期状態の中間点で電源電圧の半分を超える電圧が存在するように、順次LED抵抗回路を反転させることです。 バスの動作は「マウント」の原理に基づいており、低レベル電流は必要な制限内でなければなりません。 このパラメーターを確保するために、インジケーターLEDの接続ポイントで異なる電圧レベルでボタンの押下を識別する機能を維持しながら、図1に示す回路 2。









初期レベルを相殺するために、VD3 LEDでパラメトリックスタビライザーが使用され、抵抗R3によって電流が設定されます。 このLEDは、デバイスの動作のインジケータとして使用できます。 上記の電圧計のデモプログラムがありますが、インジケータMT-10T11(LLC "MELT")および制御表示回路で動作するように設計されています。





















注意:SDAバスのプルアップ抵抗器は取り付けられていません。その機能は実行されます

制御表示回路。 SCLバスプルアップ抵抗は、インジケータに取り付けられています。







ファイル

材料








All Articles