無線周波数識別(RFID)は、無線周波数を使用して、RFIDカードまたはタグに格納されている情報を読み取ります。このプロジェクトでは、EM-18 RFIDリーダーを8051マイクロコントローラーとインターフェースし、RFIDカード番号を16 * 2LCDディスプレイに表示します。このワイヤレスRFIDは、RFIDベースの出席システム、セキュリティシステム、投票機などの多くのシステムで使用されます。このプロジェクトは、16 * 2LCDと8051マイクロシステムの適切なインターフェイスとしても機能します。
必要なコンポーネント:
- 8051マイクロコントローラー
- EM-18RFIDリーダー
- 16 * 2LCDディスプレイ
- RFIDカード/タグ
- ポテンショメータ
- ジャンパー線
回路図:
8051マイクロコントローラー:
8051マイクロコントローラーは8ビットマイクロコントローラーで、128バイトのオンチップRAM、4KバイトのオンチップROM、2つのタイマー、1つのシリアルポートと4つの8ビットポートを備えています。8052マイクロコントローラーはマイクロコントローラーの拡張です。以下の表は、8051ファミリーメンバーの比較を示しています。
特徴 |
8051 |
8052 |
ROM(バイト単位) |
4K |
8K |
RAM(バイト) |
128 |
256 |
タイマー |
2 |
3 |
I / Oピン |
32 |
32 |
シリアルポート |
1 |
1 |
割り込みソース |
6 |
8 |
16x2 LCD:
16 * 2 LCDは、組み込みアプリケーションで広く使用されているディスプレイです。16 * 2LCDディスプレイのピンと動作について簡単に説明します。LCD内には2つの非常に重要なレジスタがあります。データレジスタとコマンドレジスタです。コマンドレジスタは、クリア表示、自宅カーソルなどのコマンドを送信するために使用され、データレジスタは、16 * 2LCDに表示されるデータを送信するために使用されます。以下の表は、16 * 2lcdのピンの説明を示しています。
ピン |
シンボル |
I / O |
説明 |
1 |
対 |
- |
接地 |
2 |
Vdd |
- |
+ 5V電源 |
3 |
ヴィー |
- |
コントラストを制御する電源 |
4 |
RS |
私 |
コマンドレジスタのRS = 0、 データレジスタのRS = 1 |
5 |
RW |
私 |
書き込みの場合はR / W = 0、読み取りの場合はR / W = 1 |
6 |
E |
I / O |
有効にする |
7 |
D0 |
I / O |
8ビットデータバス(LSB) |
8 |
D1 |
I / O |
8ビットデータバス |
9 |
D2 |
I / O |
8ビットデータバス |
10 |
D3 |
I / O |
8ビットデータバス |
11 |
D4 |
I / O |
8ビットデータバス |
12 |
D5 |
I / O |
8ビットデータバス |
13 |
D6 |
I / O |
8ビットデータバス |
14 |
D7 |
I / O |
8ビットデータバス(MSB) |
15 |
A |
- |
バックライト用+ 5V |
16 |
K |
- |
接地 |
以下の表は、頻繁に使用されるLCDコマンドコードを示しています。
コード(16進数) |
説明 |
01 |
表示画面をクリア |
06 |
カーソルをインクリメント(右シフト) |
0A |
表示オフ、カーソルオン |
0C |
表示オン、カーソルオフ |
0F |
表示、カーソル点滅 |
80 |
カーソルを1行目の先頭に移動します |
C0 |
カーソルを2行目の先頭に移動します |
38 |
2行と5 * 7マトリックス |
EM-18 RFIDリーダー:
EM-18RFIDリーダーは125KHzで動作し、オンチップアンテナが付属しており、5V電源で電力を供給できます。ウェイガンド出力とともにシリアル出力を提供します。範囲は約8〜12cmです。シリアル通信パラメータは、9600bps、8データビット、1ストップビットです。そのアプリケーションには、認証、e有料道路の価格設定、公共交通機関のeチケット、出席システムなどが含まれます。ここですべてのRFIDプロジェクトを確認してください。
EM-18RFIDリーダーによって提供される出力は12桁のASCII形式です。12桁のうち最初の10桁はカード番号で、最後の2桁はカード番号のXOR結果です。最後の2桁は、エラーチェックに使用されます。
たとえば、カード番号がリーダーから読み取られた0200107D0D62の場合、カードのカード番号は次のようになります。
02 –前文
00107D0D = 10進数で1080589。
62は(02 XOR 00 XOR 10 XOR 7D XOR 0D)のXOR値です。
したがって、カードの番号は0001080589です。
作業とコードの説明:
このプロジェクトの完全なCプログラムとデモンストレーションビデオは、このプロジェクトの最後にあります。コードは意味のある小さなチャンクに分割され、以下で説明されています。
8051マイクロコントローラーとインターフェースする16 * 2 LCDの場合、16 * 2lcdが8051マイクロコントローラーに接続されるピンを定義する必要があります。16 * 2 lcdのRSピンはP3.7に接続され、16 * 2 lcdのRWピンはP3.6に接続され、16 * 2lcdのEピンはP3.5に接続されます。データピンは8051マイクロコントローラのポート1に接続されています。
sbit rs = P3 ^ 7; sbit rw = P3 ^ 6; sbit en = P3 ^ 5;
次に、プログラムで使用されるいくつかの関数を定義する必要があります。遅延機能は、指定された時間遅延を作成するために使用されます。 Cmdwrt 関数は、コマンドを16 * 2lcd ディスプレイに送信するために使用されます。 datawrt 関数は、16 * 2lcd ディスプレイにデータを送信するために使用されます。 Rxdata 関数は、シリアルポートからデータを受信するために使用されます。
void delay(unsigned int); void cmdwrt(unsigned char); void datawrt(unsigned char); char rxdata(void);
コードのこの部分では、シリアル通信用に8051マイクロコントローラーを構成します。
TMODレジスタには、タイマー1、モード2(自動リロード)の0x20がロードされます。SCONレジスタには、8データビット、1ストップビットの0x50がロードされ、受信が有効になっています。TH1レジスタには、9600ビット/秒のボーレートで0xfdがロードされます。TR1 = 1は、タイマーを開始するために使用されます。
TMOD = 0x20; SCON = 0x50; TH1 = 0xfd; TR1 = 1;
コードのこの部分では、16 * 2lcdにコマンドを送信しています。表示のクリア、カーソルのインクリメント、カーソルを1行目の先頭に強制するなどのコマンドは、指定された時間遅延の後に1つずつ16 * 2lcdディスプレイに送信されます。
for(i = 0; i <5; i ++){cmdwrt(cmd); 遅延(1); }
コードのこの部分では、8051マイクロコントローラーのシリアルインターフェイスを介してEM-18 RFIDリーダーの出力を受信し、変数に格納します。 カウント は、受信したバイト数を追跡するために使用されます。12バイトのデータがすべて受信されたら、次にそれを16 * 2lcdディスプレイに表示する必要があります。このプロセスは、さまざまなカードを読み取るために永久に繰り返されます。
while(1){count = 0; cmdwrt(0xC2); while(count <12){input = rxdata(); count ++; } for(i = 0; i <12; i ++){datawrt(input); delay(1); } delay(100); }
コードのこの部分では、16 * 2 lcddisplayにコマンドを送信しています。コマンドは8051マイクロコントローラのポート1にコピーされます。コマンド書き込み用にRSをローにします。書き込み動作ではRWをローにします。イネーブル(E)ピンにハイパルスからローパルスを印加して、コマンド書き込み動作を開始します。
void cmdwrt(unsigned char x){P1 = x; rs = 0; rw = 0; en = 1; delay(1); en = 0; }
コードのこの部分では、16 * 2lcdディスプレイにデータを送信しています。データは8051マイクロコントローラのポート1にコピーされます。コマンド書き込みのRSをハイにします。書き込み動作のRWをローにします。データ書き込み動作を開始するために、ハイパルスからローパルスがenable(E)ピンに印加されます。
void datawrt(unsigned char y){P1 = y; rs = 1; rw = 0; en = 1; delay(1); en = 0; また、他のマイクロコントローラーですべてのRFIDプロジェクトを確認してください。