0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

將EM-18 RFID與8051微控制器連接并顯示RFID卡號

科技觀察員 ? 來源:circuitdigest ? 作者:沙希·庫馬爾 ? 2022-11-18 17:12 ? 次閱讀

射頻識別 (RFID)使用射頻來讀取存儲在 RFID 卡或標(biāo)簽中的信息。在這個項(xiàng)目中,我們將連接EM-18 RFID閱讀器與8051微控制器,并在16* 2 LCD顯示屏上顯示RFID卡號。這種無線射頻識別用于許多系統(tǒng),如基于RFID的考勤系統(tǒng),安全系統(tǒng),投票機(jī)等。

所需組件:

8051微控制器

EM-18 無線射頻識別讀寫器

16*2液晶顯示屏

射頻識別卡/標(biāo)簽

電位計(jì)

跳線

電路圖:

8051 微控制器

8051微控制器是一款8位微控制器,具有128字節(jié)的片上RAM,4K字節(jié)的片上ROM,兩個定時器,一個串行端口和四個8位端口。8052微控制器是微控制器的擴(kuò)展。下表顯示了8051名家庭成員的比較。

特征 8051 8052
只讀存儲器(以字節(jié)為單位) 4K 8K
內(nèi)存(字節(jié)) 128 256
定時器 2 3
I/O 引腳 32 32
串行端口 1 1
中斷源 6 8

16x2 液晶顯示器:

16 * 2 LCD是嵌入式應(yīng)用中廣泛使用的顯示器。以下是有關(guān)16 * 2液晶顯示器的引腳和工作的簡要說明。LCD內(nèi)部有兩個非常重要的寄存器。它們是數(shù)據(jù)寄存器和命令寄存器。命令寄存器用于發(fā)送清晰顯示、光標(biāo)在家鄉(xiāng)等命令,數(shù)據(jù)寄存器用于發(fā)送要在16*2 LCD上顯示的數(shù)據(jù)。下表顯示了16 * 2 LCD的引腳說明。

象征 I/O 描述
1 VSS -
2 Vdd - +5V電源
3 V形 - 用于控制對比度的電源
4 RS RS=0 為命令寄存器 ,
RS=1 用于數(shù)據(jù)寄存器
5 烏爾曼 R/W=0 表示寫入,R/W=1 表示讀取
6 E I/O 使
7 D0 I/O 8位數(shù)據(jù)總線
8 D1 I/O 8位數(shù)據(jù)總線
9 D2 I/O 8位數(shù)據(jù)總線
10 D3 I/O 8位數(shù)據(jù)總線
11 D4 I/O 8位數(shù)據(jù)總線
12 D5 I/O 8位數(shù)據(jù)總線
13 D6 I/O 8位數(shù)據(jù)總線
14 D7 I/O 8位數(shù)據(jù)總線
15 一個 - +5V背光
16 K -

下表顯示了常用的液晶屏命令代碼。

代碼(十六進(jìn)制) 描述
01 清晰的顯示屏
06 遞增光標(biāo)(右移)
0安 顯示關(guān)閉,光標(biāo)打開
0C 顯示打開,光標(biāo)關(guān)閉
0F 顯示于 ,光標(biāo)閃爍
80 強(qiáng)制光標(biāo)從 1 開始圣線
C0 強(qiáng)制光標(biāo)到開頭 2德·線
38 2行和5 * 7矩陣

EM-18 無線射頻識別讀寫器:

EM-18 RFID閱讀器的工作頻率為125 KHz,并配有片上天線,可采用5V電源供電。它提供串行輸出以及 weigand 輸出。范圍約為8-12厘米。串行通信參數(shù)為9600bps,8個數(shù)據(jù)位,1個停止位。其應(yīng)用包括身份驗(yàn)證、電子收費(fèi)公路定價、公共交通電子票務(wù)、考勤系統(tǒng)等。在此處查看所有 RFID 項(xiàng)目。

EM-18 RFID閱讀器提供的輸出為12位ASCII格式。在 12 位數(shù)字中,前 10 位數(shù)字是卡號,后兩位數(shù)字是卡號的異或結(jié)果。最后兩位數(shù)字用于錯誤檢查。

poYBAGN3TGqAMaX1AACz1vZfDRs749.jpg

pYYBAGN3TGyAEyw-AAAqmzyP_x8907.jpg

例如,從讀卡器讀取的卡號是0200107D0D62,那么卡上的卡號將如下所示。

02 – 序言

00107D0D = 十進(jìn)制1080589。

62 是 (02 XOR 00 XOR 10 XOR 7D XOR 0D) 的 XOR 值。

因此,卡上的數(shù)字是0001080589。

工作和代碼說明:

poYBAGN3THGAOKyIAAE2_P4oeo4212.jpg

該項(xiàng)目的完整C 程序和演示視頻在本項(xiàng)目結(jié)束時給出。代碼被分成有意義的小塊,并在下面解釋。

對于與8051微控制器的16 * 2 LCD接口,我們必須定義16 * 2 LCD連接到8051微控制器的引腳。16*2 LCD 的 RS 引腳連接到 P3.7,16*2 LCD 的 RW 引腳連接到 P3.6,16*2 LCD 的 E 引腳連接到 P3.5。數(shù)據(jù)引腳連接到 8051 微控制器的端口 1。

sbit rs=P3^7;
sbit rw=P3^6;
sbit en=P3^5;
接下來,我們必須定義一些在程序中使用的函數(shù)。延遲功能用于創(chuàng)建指定的時間延遲。Cmdwrt功能用于向16 * 2 LCD顯示器發(fā)送命令。Datawrt功能用于將數(shù)據(jù)發(fā)送到16 * 2 LCD顯示器。Rxdata功能用于從串口接收數(shù)據(jù)。

void delay(unsigned int) ;
void cmdwrt(unsigned char);
void datawrt(unsigned char);
char rxdata(void);
在代碼的這一部分中,我們將配置8051微控制器進(jìn)行串行通信。

TMOD寄存器加載了定時器1模式2(自動重新加載)的0x20。SCON 寄存器加載了 8 個數(shù)據(jù)位、1 個停止位和接收啟用的0x50。TH1寄存器加載了波特率為每秒9600位的0xfd。TR1=1 用于啟動計(jì)時器。

TMOD= 0x20;
SCON=0x50;
TH1=0xfd;
TR1=1;
在代碼的這一部分,我們將命令發(fā)送到 16*2 lcd。清除顯示、遞增光標(biāo)、強(qiáng)制光標(biāo)到開頭 1 等命令圣線在一段時間后一一發(fā)送到16 * 2液晶顯示器。

for(i=0;i<5;i++)?
{
cmdwrt (cmd[i]);
delay (1);
}
在代碼的這一部分,我們通過8051微控制器的串行接口接收EM-18 RFID閱讀器的輸出并存儲在變量中。計(jì)數(shù)用于跟蹤接收的字節(jié)數(shù)。一旦收到所有12字節(jié)的數(shù)據(jù),接下來我們必須將其顯示在16 * 2 LCD顯示屏上。這個過程永遠(yuǎn)重復(fù),以便讀取不同的卡片。

while(1)
{
count=0;
cmdwrt(0xC2);
while(count<12)?
{
input[count]=rxdata();
count++;
}
for(i=0;i<12;i++)
{
datawrt(input[i]);
delay(1);
}
delay(100);
}
在代碼的這一部分中,我們將命令發(fā)送到 16*2 LCD 顯示器。該命令將復(fù)制到 8051 微控制器的端口 1。對于命令寫入,RS 設(shè)置為低電平。對于寫入操作,RW 設(shè)置為低電平。在使能 (E) 引腳上施加高到低脈沖以啟動命令寫入操作。

void cmdwrt (unsigned char x)
{
P1=x;
rs=0;
rw=0;
en=1;
delay(1);
en=0;
}

在代碼的這一部分,我們將數(shù)據(jù)發(fā)送到16 * 2 LCD顯示器。數(shù)據(jù)被復(fù)制到 8051 微控制器的端口 1。RS 設(shè)置為高,用于命令寫入。對于寫入操作,RW 設(shè)置為低電平。在使能(E)引腳上施加高到低脈沖以啟動數(shù)據(jù)寫入操作。

void datawrt (unsigned char y)
{
P1=y;
rs=1;
rw=0;
en=1;
delay(1);
en=0;

在代碼的這一部分,我們將數(shù)據(jù)發(fā)送到16 * 2 LCD顯示器。數(shù)據(jù)被復(fù)制到 8051 微控制器的端口 1。RS 設(shè)置為高,用于命令寫入。對于寫入操作,RW 設(shè)置為低電平。在使能(E)引腳上施加高到低脈沖以啟動數(shù)據(jù)寫入操作。

void datawrt (unsigned char y) { P1=y; rs=1; rw=0; en=1; delay(1); en=0; }

*this program is for interfacing RFID reader with 8051 microcontroller and to display card number on 16*2 lcd display*/



#include



sbit rs=P3^7; //Register Select(RS) pin of 16*2 lcd

sbit rw=P3^6; //Read/Write(RW) pin of 16*2 lcd

sbit en=P3^5; //Enable(E) pin of 16*2 lcd



char count = 0; // count = 0

char input[12]; // character array of size 12

char ch;



void delay(unsigned int) ; //function for creating delay

void cmdwrt(unsigned char); //function for sending commands to 16*2 lcd display

void datawrt(unsigned char); //function for sending data to 16*2 lcd display

char rxdata(void); //function for receiving a character through serial port of 8051

microcontroller



void main(void)

{

unsigned char cmd[]={0x38,0x01,0x06,0x0c,0x80}; //16*2 lcd initialization commands

unsigned char msg[]={"RFID card Number"};

unsigned char i;

TMOD=0x20; //timer 1 , mode 2 , auto reload

SCON=0x50; //8bit data , 1 stop bit , REN enabled

TH1=0xfd; //timer value for 9600 bits per second(bps)

TR1=1; //start the timer



for(i=0;i<5;i++) //send commands to 16*2 lcd display one command at a time

{

cmdwrt(cmd[i]); //function call to send commands to 16*2 lcd display

delay(1);

}



for(i=0;i<16;i++) //send data to 16*2 lcd display one character at a time

{

datawrt(msg[i]); //function call to display message on 16*2 lcd display

delay(1);

}



while(1)

{

count=0;

cmdwrt(0xC2);

while(count<12) //repeat for 12 times

{

input[count]=rxdata(); //receive serial data and store it.

count++;

}



for(i=0;i<12;i++) //send data to 16*2 lcd display one character at a time

{

datawrt(input[i]); //function call to display rfid card number on 16*2 lcd display

delay(1);

}



delay(100);

}

}



void cmdwrt (unsigned char x)

{

P1=x; //send the command to Port 1 on which 16*2 lcd is connected

rs=0; //make RS = 0 for command

rw=0; //make RW = 0 for write operation

en=1; //send a HIGH to LOW pulse on Enable(E) pin to start commandwrite operation

delay(1);

en=0;

}



void datawrt (unsigned char y)

{

P1=y; //send the data to Port 1 on which 16*2 lcd is connected

rs=1; //make RS = 1 for command

rw=0; //make RW = 0 for write operation

en=1; //send a HIGH to LOW pulse on Enable(E) pin to start datawrite operation

delay(1);

en=0;

}



char rxdata()

{

while(RI==0); //wait till RI becomes HIGH

RI=0; //make RI low

ch=SBUF; //copy received data

return ch; //return the received data to main function.

}



void delay(unsigned int z)

{

unsigned int p,q;

for(p=0;p
{

for(q=0;q<1375;q++); //repeat for 1375 times

}

}

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 微控制器
    +關(guān)注

    關(guān)注

    48

    文章

    7559

    瀏覽量

    151486
  • RFID
    +關(guān)注

    關(guān)注

    388

    文章

    6155

    瀏覽量

    237962
  • 無線射頻
    +關(guān)注

    關(guān)注

    4

    文章

    205

    瀏覽量

    27027
收藏 人收藏

    評論

    相關(guān)推薦

    8051微控制器的基礎(chǔ)知識

    8051微控制器是嵌入式系統(tǒng)、消費(fèi)電子、汽車等各個領(lǐng)域中最流行和最常用的微控制器之一,技術(shù)上稱為Intel MCS-51架構(gòu)。8051微控制器
    發(fā)表于 09-12 17:32 ?3465次閱讀
    <b class='flag-5'>8051</b><b class='flag-5'>微控制器</b>的基礎(chǔ)知識

    基于RFID的淋浴控制器的設(shè)計(jì)

    本帖最后由 親王殿下 于 2014-4-12 09:11 編輯 誰做過RFID淋浴控制器方面的畢業(yè)設(shè)計(jì),能否指導(dǎo)一下。謝謝
    發(fā)表于 03-05 14:41

    關(guān)于LABVIEW讀取USB-RFID讀卡卡號問題

    有沒有那位大神用LABVIEW程序讀取過USB-RFID刷卡的(讀取ID卡和IC卡2種讀卡,每刷一次讀取里面的卡號數(shù)據(jù))??!指教下。
    發(fā)表于 12-23 23:35

    RFID 收發(fā)參考設(shè)計(jì)

    `描述此射頻識別 (RFID) 參考設(shè)計(jì)概括了所需的組件和布局注意事項(xiàng),并提供固件示例以說明如何 RFID 實(shí)施到應(yīng)用中以從應(yīng)答中提取 RFID
    發(fā)表于 04-08 11:06

    【EMC家園】RFID射頻讀寫的設(shè)計(jì)

    效地解決核心問題。本文為射頻通信系統(tǒng)的實(shí)現(xiàn)提供了一種可行的解決方案?! ? 系統(tǒng)整體設(shè)計(jì)  本文選用的是C8051F310 微控制器和FM1702SL 讀寫芯片。C8051F310 具有10 位轉(zhuǎn)換速率可達(dá)
    發(fā)表于 03-16 15:51

    如何8051微控制器引到FPGA中去?

    請問如何8051微控制器引到FPGA中去?
    發(fā)表于 04-28 06:41

    通過stm32單片機(jī)與RC522讀卡讀取RFID卡號

    整體思路也很簡單:通過stm32單片機(jī)連RC522讀卡,RFID卡號讀取出來,通過網(wǎng)絡(luò)RFID
    發(fā)表于 01-12 06:43

    基于RFID閱讀和ESP微控制器的訪問控制系統(tǒng)

    描述ESP RFID - 帶有 ESP8266 和 RC522 的訪問控制板使用便宜的 RFID 閱讀和 ESP 微控制器的訪問
    發(fā)表于 08-26 07:37

    RFID收發(fā)參考設(shè)計(jì)

    描述此射頻識別 (RFID) 參考設(shè)計(jì)概括了所需的組件和布局注意事項(xiàng),并提供固件示例以說明如何 RFID 實(shí)施到應(yīng)用中以從應(yīng)答中提取 RFID
    發(fā)表于 09-22 07:25

    ST25RU3993 EVAL板上外部接口的相同RFID芯片,微控制器及其重新編程的后果是什么?

    在 ST25RU3993 EVAL 板中,微控制器通過 SPI 接口和控制信號(93_signals)與 RFID 讀取芯片交互 - 總共有 6 條數(shù)據(jù)線。SPI 接口還與載波消除芯
    發(fā)表于 02-07 06:44

    C8051FMCU RFID讀卡

    整個系統(tǒng)主要分成兩部分(主控板和天線板),PC通過C8051FMCU RFID讀卡對相應(yīng)的卡進(jìn)行讀寫等操作,其中主控板的控制器用C8051
    發(fā)表于 07-09 23:45 ?80次下載

    基于RFID應(yīng)用的通用型控制器的設(shè)計(jì)方案

    文章以門禁控制為例,介紹一款基于RFID應(yīng)用的通用型控制器的設(shè)計(jì)原理,給出了利用Proteus軟件進(jìn)行仿真調(diào)試的方法。該控制器
    發(fā)表于 08-06 11:35 ?1408次閱讀
    基于<b class='flag-5'>RFID</b>應(yīng)用的通用型<b class='flag-5'>控制器</b>的設(shè)計(jì)方案

    8051微控制器引腳說明與基本電路

    此前已經(jīng)介紹過8051微控制器的基礎(chǔ)知識,包括它的歷史、特性、封裝和一些實(shí)際應(yīng)用。在本文中,小編將將繼續(xù)介紹關(guān)于8051微控制器引腳圖、引腳說明以及其他一些細(xì)節(jié)內(nèi)容,包括
    發(fā)表于 08-23 15:53 ?8459次閱讀
    <b class='flag-5'>8051</b><b class='flag-5'>微控制器</b>引腳說明與基本電路

    如何使用觸摸傳感8051微控制器控制LED燈

    在這個項(xiàng)目中,我們觸摸傳感8051 微控制器 AT89S52 連接。如果您是 8051
    的頭像 發(fā)表于 09-07 15:13 ?3143次閱讀
    如何使用觸摸傳感<b class='flag-5'>器</b>和<b class='flag-5'>8051</b><b class='flag-5'>微控制器</b><b class='flag-5'>控制</b>LED燈

    基于8051微控制器連接到SCI端口

    本應(yīng)用筆記介紹如何配置高速微控制器或超高速閃存微控制器的UART,以便與支持SCI的設(shè)備通信。它首先簡要討論了SCI和UART模塊之間的差異,并以一個實(shí)際示例結(jié)束,說明如何配置基于8051的達(dá)拉斯半導(dǎo)體
    的頭像 發(fā)表于 06-13 15:48 ?768次閱讀
    <b class='flag-5'>將</b>基于<b class='flag-5'>8051</b>的<b class='flag-5'>微控制器</b><b class='flag-5'>連接</b>到SCI端口