ディスプレイは、ユーザーがシステムのステータスを知るのに役立ち、システムによって生成された出力または警告メッセージも表示するため、組み込みシステムアプリケーションの非常に重要な部分です。7セグメントディスプレイ、LCDディスプレイ、TFTタッチスクリーンディスプレイ、LEDディスプレイなど、電子機器で使用されるディスプレイには多くの種類があります。
前のチュートリアルでは、16x2LCDをARM7-LPC2148とインターフェースしました。今日、このチュートリアルでは、7セグメントディスプレイをARM7-LPC2148とインターフェースさせます。詳細に入る前に、7セグメントモジュールを制御して任意の数の文字を表示する方法を説明します。
7セグメントディスプレイ
7セグメントディスプレイ は、数字と文字を表示するための最も単純なディスプレイユニットの1つです。一般的に数字を表示するために使用され、ドットマトリックスディスプレイよりも明るい照明とシンプルな構造を備えています。また、照明が明るいため、LCDよりも遠くから出力を見ることができます。上の7セグメントディスプレイの画像に示すように、8個のLEDで構成され、各LEDはユニットの1つのセグメントを照らすために使用され、8番目のLEDは7セグメントディスプレイのDOTを照らすために使用されます。8thLEDは、たとえば(0.1)を表示するために、2つ以上の7セグメントモジュールが使用される場合に使用されます。1つのモジュールは、1桁または1文字を表示するために使用されます。複数の数字または文字を表示するには、複数の7セグメントが使用されます。
7セグメントディスプレイのピン
10個のピンがあり、そのうち8個のピンはa、b、c、d、e、f、g、およびh / dpを参照するために使用され、2つの中央のピンはすべてのLEDの共通のアノード/カソードです。これらの共通のアノード/カソードは内部で短絡されているため、1つのCOMピンのみを接続する必要があります
接続に応じて、7セグメントを2つのタイプに分類します。
一般的なカソード
この場合、8つのLEDすべてのすべての負端子(カソード)が相互に接続され(下の図を参照)、COMという名前が付けられています。また、すべてのプラス端子はそのままにするか、マイクロコントローラのピンに接続します。マイクロコントローラーを使用する場合は、ロジックをHIGHに設定して特定の照明を点灯し、LOWに設定してLEDをオフにします。
共通アノード
この場合、8つのLEDすべてのすべての正端子(アノード)が相互に接続され、COMと呼ばれます。そして、すべての負のサーマルはそのままにするか、マイクロコントローラーのピンに接続します。マイクロコントローラーを使用する場合は、ロジックLOWに設定して特定の照明を点灯し、ロジックHighに設定してLEDをオフにします。
そのため、ピンの値に応じて、7セグメントの特定のセグメントまたは行をオンまたはオフにして、目的の番号またはアルファベットを表示できます。たとえば、0桁を表示するには、ピンABCDEFをHIGHに設定し、GのみをLOWに設定する必要があります。ABCDEF LEDはONであり、GはOFFである。この形態0桁の7セグメント・モジュールです。(これは共通の陰極用であり、共通の陽極の場合は反対です)。
以下の表は、一般的なカソード構成のLPC2148ピンに応じ たHEX値と対応する桁を示しています。
桁 |
LPC2148のHEX値 |
A |
B |
C |
D |
E |
F |
G |
0 |
0xF3 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
1 |
0x12 |
0 |
1 |
1 |
0 |
0 |
0 |
0 |
2 |
0x163 |
1 |
1 |
0 |
1 |
1 |
0 |
1 |
3 |
0x133 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
4 |
0x192 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
5 |
0x1B1 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
6 |
0x1F1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
7 |
0x13 |
1 |
1 |
1 |
0 |
0 |
1 |
0 |
8 |
0x1F3 |
1 |
1 |
1 |
1 |
1 |
1 |
1 |
9 |
0x1B3 |
1 |
1 |
1 |
1 |
0 |
1 |
1 |
重要: 上の表では、LPC2148で使用したピンに応じたHEX値を示しています。以下の回路図を確認してください。任意のピンを使用できますが、それに応じて16進値を変更します。
7セグメントディスプレイの詳細については、リンクを参照してください。また、他のマイクロコントローラーとの7セグメントディスプレイインターフェースも確認してください。
- RaspberryPiとインターフェイスする7セグメントディスプレイ
- PICマイクロコントローラーとインターフェースする7セグメントディスプレイ
- Arduinoとインターフェースする7セグメントディスプレイ
- 8051マイクロコントローラーとインターフェースする7セグメントディスプレイ
- 0-99AVRマイクロコントローラーを使用したカウンター
必要な材料
ハードウェア
- ARM7-LPC2148
- 7セグメントディスプレイモジュール(1桁)
- ブレッドボード
- 接続線
ソフトウェア
- Keil uVision5
- フラッシュマジック
回路図
以下の回路図に示すように、7セグメントをLPC2148とインターフェースする場合、外部コンポーネントは必要ありません。
以下の表は、7セグメントモジュールとLPC2148間の回路接続を示しています。
7セグメントモジュールピン |
LPC2148ピン |
A |
P0.0 |
B |
P0.1 |
C |
P0.4 |
D |
P0.5 |
E |
P0.6 |
F |
P0.7 |
G |
P0.8 |
一般 |
GND |
ARM7LPC2148のプログラミング
前のチュートリアルで、Keilを使用してARM7-LPC2148をプログラムする方法を学びました。ここでは同じKeiluVision 5を使用してコードを記述し、16進ファイルを作成してから、フラッシュマジックツールを使用して16進ファイルをLPC2148にアップロードします。USBケーブルを使用して電力を供給し、LPC2148にコードをアップロードしています
ビデオの説明を含む完全なコードは、このチュートリアルの最後にあります。ここでは、コードのいくつかの重要な部分について説明します。
まず、LPC214xシリーズマイクロコントローラーのヘッダーファイルをインクルードする必要があります
#include
次に、ピンを出力として設定します
IO0DIR = IO0DIR-0xffffffff
これにより、ピンP0.0〜P0.31が出力として設定されますが、ピン(P0.0、P0.1、P0.4、P0.5、P0.6、P0.7、およびP0.8)のみを使用します。 。
次に、表示する数字に応じて、特定のピンをLOGICHIGHまたはLOWに設定します。ここでは、(0から9)までの値を表示します。値0〜9のHEX値で構成される配列を使用します。
unsigned int a = {0xf3,0x12,0x163,0x133,0x192,0x1b1,0x1f1,0x13,0x1f3,0x1b3};
コードが while ループに入れられると、値は継続的に表示されます
while(1) { for(i = 0; i <= 9; i ++) { IO0SET = IO0SET-a; //対応するピンをHIGHに設定 delay(9000); //遅延関数を呼び出します IO0CLR = IO0CLR-a; //対応するピンをLOWに設定します } }
ここでは、 IOSET と IOCLR を使用して、ピンをそれぞれHIGHとLOWに設定します。PORT0ピンを使用したので、 IO0SET と IO0CLRがあり ます。
以下のために ループインクリメントするために使用される I 、各反復では、各時間 iが インクリメントは、7セグメントはまた、その上に表示される数字をインクリメントします。
遅延 機能は、SETとCLR間の遅延時間を生成するために使用されます
void delay(int k)//遅延を作成するための関数 { int i、j; for(i = 0; i
完全なコードと作業ビデオの説明を以下に示します。また、ここですべての7セグメントディスプレイ関連プロジェクトを確認してください。