キーパッドは、さまざまな電子機器や組み込みプロジェクトで使用されている広く使用されている入力デバイスです。これらは、数値やアルバベットの形式で入力を受け取り、それをシステムにフィードしてさらに処理するために使用されます。このチュートリアルでは、4x4マトリックスキーパッドを8051マイクロコントローラーとインターフェースします。
4X4マトリックスキーパッド
キーパッドをマイクロコントローラーとインターフェースする前に、まずそれがどのように機能するかを理解する必要があります。マトリックスキーパッドは、相互接続されたプッシュボタンのセットで構成されています。私たちの場合のように、4X4マトリックスキーパッドを使用しています。このキーパッドでは、4つの行のそれぞれに4つのプッシュボタンがあります。そして、押しボタンの端子は図のように接続されています。最初の行では、4つの押しボタンすべての1つの端子が相互に接続され、4つの押しボタンの別の端子が4つの列のそれぞれを表しています。これは各行にも当てはまります。したがって、マイクロコントローラーに接続するための8つの端子を取得しています。
キーパッドと8051マイクロコントローラー(AT89S52)のインターフェース
まず、KEYPADを介して供給されるデータを表示するためにLCDモジュールをインターフェースする必要があるため、KEYPADをインターフェースする前に、「8051マイクロコントローラーとのLCDインターフェース」の記事を参照してください。
上記の回路図に示すように、キーパッドをインターフェースするには、キーパッドの8つの端子をマイクロコントローラーの任意のポート(8ピン)に接続する必要があります。キーパッド端子を8051のポート1に接続したように。ボタンを押すたびに、ボタンの位置を取得する必要があります。これは、対応する行と列の番号を意味します。ボタンの位置を取得したら、それに応じて文字を印刷できます。
ここで問題は、押されたボタンの位置を取得する方法です。これについては以下の手順で説明し、コードも確認してください。
1.最初に、すべての行をロジックレベル0にし、すべての列をロジックレベル1にしました。
2.ボタンを押すたびに、そのボタンに対応する列と行が短絡され、対応する列が論理レベル0になります。その列が論理レベル0の行に接続(短絡)されるためです。列番号 main()関数を参照してください。
3.次に、行番号を見つける必要があるため、各列に対応する4つの関数を作成しました。列1のいずれかのボタンが押された場合と同様に、関数row_finder1()を呼び出して、行番号を検索します。
4. row_finder1()関数で、ロジックレベルを逆にしました。つまり、すべての行が1で、列が0です。ボタンが押された列に接続(短絡)されたため、押されたボタンの行は0になります。 、およびすべての列は0ロジックです。したがって、すべての行をスキャンして0を探しました。
5.したがって、ロジック0で行が見つかった場合は常に、それが押されたボタンの行であることを意味します。これで、列番号(手順2で取得)と行番号ができ、番号を印刷できます。lcd_data関数を使用してそのボタンの。
ボタンを押すたびに同じ手順が続き、while(1)を使用して、ボタンが押されているかどうかを継続的にチェックします。