人間の世界と機械の世界の良好なコミュニケーションを確立するために、ディスプレイユニットは重要な役割を果たします。そして、それらは組み込みシステムの重要な部分です。ディスプレイユニット-大小を問わず、同じ基本原理で動作します。グラフィックディスプレイや3Dディスペイなどの複雑なディスプレイユニットに加えて、16x1や16x2ユニットなどの単純なディスプレイの操作について知っておく必要があります。16x1ディスプレイユニットは16文字で、1行になります。16x2 LCDは、1行目に合計32文字、2行目にさらに16文字が含まれます。ライン。ここでは、各文字に5x10 = 50ピクセルがあることを理解する必要があるため、1つの文字を表示するには、50ピクセルすべてが連携する必要があります。しかし、ディスプレイユニットにはピクセルを制御する別のコントローラー(HD44780)があるので、それについて心配する必要はありません。(液晶ユニットで見ることができます、後ろの黒い目です)。
必要なコンポーネント
ハードウェア:
ATmega32マイクロコントローラー
電源(5v)
AVR-ISPプログラマー
JHD_162ALCD(16x2 LCD)
100uFコンデンサ。
ソフトウェア:
Atmelスタジオ6.1
Progispまたはフラッシュマジック
回路図と説明
ATmega32回路とインターフェースするLCDに示されているように、ATMEGA32のPORTAがデータポートLCDに接続されていることがわかります。ここで、PORTCを通常の通信ポートとして使用したい場合は、ヒューズバイトを変更してATMEGAのPORTCでのJTAG通信を無効にすることを忘れないでください。 16x2 LCDには全体で16ピンがあり、バックライトがある場合はバックライトがない場合は14ピンになります。バックライトピンに電力を供給するか、そのままにしておくことができます。 14ピンには8つのデータピン(7-14またはD0-D7)、2つの電源ピン(1&2またはVSS&VDDまたはgnd&+ 5v)、コントラスト制御用の3番目のピン(VEE-文字の太さを制御します)があります。示されている)、3つの制御ピン(RS&RW&E)
16x2 LCDをAVRマイクロコントローラーとインターフェースする上記の回路では、2つの制御ピンしか使用していないことがわかります。これにより、より良い理解の柔軟性が得られます。コントラストビットとREAD / WRITEはあまり使用されないため、グランドに短絡することができます。これにより、LCDが最高のコントラストと読み取りモードになります。ENABLEピンとRSピンを制御して、それに応じて文字とデータを送信する必要があります。
ATmega32マイクロコントローラーと16x2LCD間の接続を以下に示します。
PIN1またはVSS-グランド
PIN2またはVDDまたはVCC- + 5v電源
PIN3またはVEE-グラウンド(初心者に最適な最大のコントラストを提供します)
PIN4またはRS(レジスタ選択)-マイクロコントローラのPD6
PIN5またはRW(読み取り/書き込み)-グラウンド(LCDを読み取りモードにすると、ユーザーの通信が容易になります)
PIN6またはE(有効)-マイクロコントローラーのPD5
PIN7またはD0-マイクロコントローラーのPA0
PIN8またはD1-PA1-
PIN9またはD2-PA2-
PIN10またはD3-PA3-
PIN11またはD4-PA4-
PIN12またはD5-PA5-
PIN13またはD6-PA6-
PIN14またはD7-PA7
回路では8ビット通信(D0-D7)を使用していることがわかりますが、これは必須ではなく、4ビット通信(D4-D7)も使用できますが、4ビット通信プログラムでは初心者にとって少し複雑になるため、 8ビット通信。
したがって、上記の表からの単なる観察から、LCDの10ピンをコントローラーに接続しています。8ピンはデータピンで、2ピンは制御用です。
ワーキング
ここで開始するには、16x2 LCDの10ピン(8データピン+ 2制御ピン)の機能を知っている必要があります。8つのデータピンは、LCDにデータまたはコマンドを送信するためのものです。2つの制御ピン:
1. RS(レジスタ選択)ピンは、LCDにデータを送信するのか、コマンドを送信するのかをLCDに通知するためのものです。
例えば:
上記の表1で、データポート(D7-D0)の値が「0b00101000または0x28」の場合、LCDに「(」記号を表示するように指示します。表2では、同じ値の0x28がLCDに「あなたは5x7ドットLCDであり、同じ値の場合、ユーザーは2つのことを定義できます。この状況は、レジスタ選択ピンによって中和されます。RSピンがローに設定されている場合、LCDはコマンドを送信していることを認識します。RSピンをハイに設定すると、 LCDは、データを送信していることを認識しているため、どちらの場合も、LCDはRSピンの値に従ってデータポートの値を尊重します。
2. E(イネーブル)ピンは単に「PCの電源表示LED」を示すためのものであり、このピンはLCDに「コントローラのデータポートからデータを受信するように」を示すためにハイに設定されます。このピンがHighの後にLowになると、LCDは受信データを処理し、対応する結果を表示します。したがって、このピンはデータを送信する前にHighに設定され、データを送信した後にグランドにプルダウンされます。
ハードウェアを接続した後、Atmel studioを起動し、プログラムを作成するための新しいプロジェクトを開始します。次に、プログラミング画面を開き、プログラムの絞り込みを開始します。プログラムは次のように従わなければなりません。
まず、LCDのデータと制御に使用しているポートをコントローラーに通知します。次に、RSピンとEピンを操作して、データまたはコマンドを送信するタイミングをコントローラーに指示します。
プログラムで使用される概念の簡単な説明:
1. Eがハイに設定され(LCDにデータを受信するように指示)、RSがローに設定されます(LCDにコマンドを送信します)
2.画面をクリアするコマンドとしてデータポートに値0x01を与える
3. Eがハイに設定され(LCDにデータを受信するように指示)、RSがハイに設定されます(LCDにデータを提供します)
4.文字列を取得して、文字列内の各文字を1つずつ送信します。
5. Eが低く設定されている(データの送信が完了したことをLCDに通知)
6.最後のコマンドの後、LCDは通信を終了し、データを処理して、文字列を画面に表示します。
このシナリオでは、キャラクターを次々に送信します。文字はASCIIコード(情報交換のためのアメリカの標準コード)によってLCDに与えられます。
ASCIIコードの表は上に示されています。ここで、LCDに文字「@」を表示するには、16進コード「64」を送信する必要があります。LCDに「0x62」を送信すると、「>」記号が表示されます。このように、名前を表示するために適切なコードをLCDに送信します。
LCDとATmega32AVRマイクロコントローラー間の通信方法は、以下のCコードのステップバイステップで最もよく説明されています。