首页 > 微机单片机 >单片机制作 > 如何构建一个基于RFID的考勤系统?

如何构建一个基于RFID的考勤系统?

来源:互联网发布者:newrudeman 关键词: RFID 考勤系统 更新时间: 2024/05/06

在这篇文章中,我们将构建一个基于RFID的考勤系统,该系统可以记录给定时间窗口内 12 名学生/教职员工的出勤情况,该系统最多可以记录每人 255
名考勤。

什么是RFID考勤系统

我们不需要任何关于基于RFID的考勤系统的介绍,它被用于大学,办公室,图书馆,以了解一个人在什么时间进出多少次或多少人。

在这个项目中,我们将构建一个最简单的基于RFID的考勤系统,该系统不会使项目过于复杂。

在这个项目中,我们将使用RTC模块,该模块用于在给定的时间段内启用和禁用考勤系统,以便我们可以阻止迟到者。

RFID模块“RFID-RC522”可以在基于恩智浦的RFID标签上进行读写操作。恩智浦是全球RFID标签的领先生产商,我们可以轻松地在线和离线商店购买它们。

使用16 x 2 LCD显示屏,用于显示时间,日期,出席人数等信息。

最后使用Arduino板,这是项目的大脑。您可以选择任何版本的主板。

现在让我们继续看原理图:

Arduino 到 LCD 显示屏连接:

只需按照下图连接接线,并使用 10 千欧姆电位计调整对比度。

Arduino 到 RFID 模块连接:

RFID 模块必须由 3.3V 供电,5V 可能会损坏板载组件。RFID-RC522模块在与Arduino通信时采用SPI通信协议工作。

电路的其余部分:

Arduino可以由9V墙上适配器供电。有一个蜂鸣器和 LED 指示检测到卡。提供了 4
个按钮,用于查看考勤、清除内存以及“是”和“否”按钮。

硬件部分到此结束。

现在我们必须为 RTC 模块设置正确的时间才能执行此操作,按照以下步骤完成硬件设置。

打开 Arduino IDE。

导航到文件》示例》DS1307RTC》设置时间。

上传代码。

将代码上传到Arduino后,打开串行监视器。现在,RTC与计算机的时间同步。

现在,您必须找到所有12个RFID卡/标签的UID或唯一标识号。要查找 UID,请上传以下代码并打开串行监视器。
//-------------------------Program developed by
R.Girish------------------//

#include 《SPI.h》

#include 《MFRC522.h》

#define SS_PIN 10

#define RST_PIN 9

MFRC522 rfid(SS_PIN, RST_PIN);

MFRC522::MIFARE_Key key;

void setup()

{

Serial.begin(9600);

SPI.begin();

rfid.PCD_Init();

}

void loop() {

if ( ! rfid.PICC_IsNewCardPresent())

return;

if ( ! rfid.PICC_ReadCardSerial())

return;

MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);

if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&

piccType != MFRC522::PICC_TYPE_MIFARE_1K &&

piccType != MFRC522::PICC_TYPE_MIFARE_4K)

{

Serial.println(F(“Your tag is not of type MIFARE Classic, your card/tag
can‘t be read :(”));

return;

}

String StrID = “” ;

for (byte i = 0; i 《 4; i ++)

{

StrID +=

(rfid.uid.uidByte[i] 《 0x10 ? “0” : “”) +

String(rfid.uid.uidByte[i], HEX) +

(i != 3 ? “:” : “” );

}

StrID.toUpperCase();

Serial.print(“Your card’s UID: ”);

Serial.println(StrID);

rfid.PICC_HaltA ();

rfid.PCD_StopCrypto1 ();

}

//-------------------------Program developed by
R.Girish------------------//

打开串行监视器。

扫描RFID模块上的卡/标签。

现在,您将看到每张卡的一些十六进制代码。

写下来,我们将在下一个程序中输入这些数据。

主程序:

//-------------------------Program developed by
R.Girish------------------//

#include 《LiquidCrystal.h》

#include 《EEPROM.h》

#include 《SPI.h》

#include 《MFRC522.h》

#include 《Wire.h》

#include 《TimeLib.h》

#include 《DS1307RTC.h》

#define SS_PIN 10

#define RST_PIN 9

MFRC522 rfid(SS_PIN, RST_PIN);

MFRC522::MIFARE_Key key;

const int rs = 7;

const int en = 6;

const int d4 = 5;

const int d5 = 4;

const int d6 = 3;

const int d7 = 2;

const int LED = 8;

boolean ok = false;

LiquidCrystal lcd(rs, en, d4, d5, d6, d7);

const int list = A0;

const int CLM = A1;

const int yes = A2;

const int no = A3;

int H = 0;

int M = 0;

int S = 0;

int i = 0;

int ID1 = 0;

int ID2 = 0;

int ID3 = 0;

int ID4 = 0;

int ID5 = 0;

int ID6 = 0;

int ID7 = 0;

int ID8 = 0;

int ID9 = 0;

int ID10 = 0;

int ID11 = 0;

int ID12 = 0;

char UID[] = “”;

// **************************** SETTINGS ************************ //

// ------ From -------- // (Set the time range for attendance in hours 0 to
23)

int h = 21; // Hrs

int m = 00; // Min

// ------- To ------- //

int h1 = 21; // Hrs

int m1 = 50; //Min

// ---------------- SET UIDs ----------------- //

char UID1[] = “F6:97:ED:70”;

char UID2[] = “45:B8:AF:C0”;

char UID3[] = “15:9F:A5:C0”;

char UID4[] = “C5:E4:AD:C0”;

char UID5[] = “65:1D:AF:C0”;

char UID6[] = “45:8A:AF:C0”;

char UID7[] = “15:9F:A4:C0”;

char UID8[] = “55:CB:AF:C0”;

char UID9[] = “65:7D:AF:C0”;

char UID10[] = “05:2C:AA:04”;

char UID11[] = “55:7D:AA:04”;

char UID12[] = “BD:8A:16:0B”;

// -------------- NAMES -----------------------//

char Name1[] = “Student1”;

char Name2[] = “Student2”;

char Name3[] = “Student3”;

char Name4[] = “Student4”;

char Name5[] = “Student5”;

char Name6[] = “Student6”;

char Name7[] = “Student7”;

char Name8[] = “Student8”;

char Name9[] = “Student9”;

char Name10[] = “Student10”;

char Name11[] = “Student11”;

char Name12[] = “Student12”;

// ********************************************************** //

void setup()

{

Serial.begin(9600);

lcd.begin(16, 2);

SPI.begin();

rfid.PCD_Init();

pinMode(yes, INPUT);

pinMode(no, INPUT);

pinMode(list, INPUT);

pinMode(LED, OUTPUT);

pinMode(CLM, INPUT);

digitalWrite(CLM, HIGH);

digitalWrite(LED, LOW);

digitalWrite(yes, HIGH);

digitalWrite(no, HIGH);

digitalWrite(list, HIGH);

}

void loop()

{

if (digitalRead(list) == LOW)

{

Read_data();

}

if (digitalRead(CLM) == LOW)

{

clear_Memory();

}

tmElements_t tm;

if (RTC.read(tm))

{

lcd.clear();

H = tm.Hour;

M = tm.Minute;

S = tm.Second;

lcd.setCursor(0, 0);

lcd.print(“TIME:”);

lcd.print(tm.Hour);

lcd.print(“:”);

lcd.print(tm.Minute);

lcd.print(“:”);

lcd.print(tm.Second);

lcd.setCursor(0, 1);

lcd.print(“DATE:”);

lcd.print(tm.Day);

lcd.print(“/”);

lcd.print(tm.Month);

lcd.print(“/”);

lcd.print(tmYearToCalendar(tm.Year));

delay(1000);

} else {

if (RTC.chipPresent())

{

lcd.setCursor(0, 0);

lcd.print(“RTC stopped!!!”);

lcd.setCursor(0, 1);

lcd.print(“Run SetTime code”);

} else {

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Read error!”);

lcd.setCursor(0, 1);

lcd.print(“Check circuitry!”);

}

}

if (H == h)

{

if (M == m)

{

ok = true;

}

}

if (H == h1)

{

if (M == m1)

{

ok = false;

}

}

if ( ! rfid.PICC_IsNewCardPresent())

return;

if ( ! rfid.PICC_ReadCardSerial())

return;

MFRC522::PICC_Type piccType = rfid.PICC_GetType(rfid.uid.sak);

if (piccType != MFRC522::PICC_TYPE_MIFARE_MINI &&

piccType != MFRC522::PICC_TYPE_MIFARE_1K &&

piccType != MFRC522::PICC_TYPE_MIFARE_4K)

{

Serial.println(F(“Your tag is not of type MIFARE Classic, your card/tag
can‘t be read :(”));

}

String StrID = “” ;

for (byte i = 0; i 《 4; i ++)

{

StrID +=

(rfid.uid.uidByte[i] 《 0x10 ? “0” : “”) +

String(rfid.uid.uidByte[i], HEX) +

(i != 3 ? “:” : “” );

}

StrID.toUpperCase();

if (ok == false)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Attendance is”);

lcd.setCursor(0, 1);

lcd.print(“Closed.”);

delay(1000);

}

if (ok)

{

//-----------------------------------//

if (StrID == UID1)

{

ID1 = EEPROM.read(1);

ID1 = ID1 + 1;

if (ID1 == 256)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Memory is Full”);

lcd.setCursor(0, 1);

lcd.print(“Please Clear All.”);

for (i = 0; i 《 20; i++)

{

digitalWrite(LED, HIGH);

delay(100);

digitalWrite(LED, LOW);

delay(100);

}

i = 0;

return;

}

if (ID1 != 256)

{

EEPROM.write(1, ID1);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Your Attendance”);

lcd.setCursor(0, 1);

lcd.print(“Registered !!!”);

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

return;

}

}

//-----------------------------------//

if (StrID == UID2)

{

ID2 = EEPROM.read(2);

ID2 = ID2 + 1;

if (ID2 == 256)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Memory is Full”);

lcd.setCursor(0, 1);

lcd.print(“Please Clear All.”);

for (i = 0; i 《 20; i++)

{

digitalWrite(LED, HIGH);

delay(100);

digitalWrite(LED, LOW);

delay(100);

}

i = 0;

return;

}

if (ID2 != 256)

{

EEPROM.write(2, ID2);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Your Attendance”);

lcd.setCursor(0, 1);

lcd.print(“Registered !!!”);

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

return;

}

}

//-----------------------------------//

if (StrID == UID3)

{

ID3 = EEPROM.read(3);

ID3 = ID3 + 1;

if (ID3 == 256)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Memory is Full”);

lcd.setCursor(0, 1);

lcd.print(“Please Clear All.”);

for (i = 0; i 《 20; i++)

{

digitalWrite(LED, HIGH);

delay(100);

digitalWrite(LED, LOW);

delay(100);

}

i = 0;

return;

}

if (ID3 != 256)

{

EEPROM.write(3, ID3);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Your Attendance”);

lcd.setCursor(0, 1);

lcd.print(“Registered !!!”);

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

return;

}

}

//-----------------------------------//

if (StrID == UID4)

{

ID4 = EEPROM.read(4);

ID4 = ID4 + 1;

if (ID4 == 256)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Memory is Full”);

lcd.setCursor(0, 1);

lcd.print(“Please Clear All.”);

for (i = 0; i 《 20; i++)

{

digitalWrite(LED, HIGH);

delay(100);

digitalWrite(LED, LOW);

delay(100);

}

i = 0;

return;

}

if (ID4 != 256)

{

EEPROM.write(4, ID4);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Your Attendance”);

lcd.setCursor(0, 1);

lcd.print(“Registered !!!”);

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

return;

}

}

//-----------------------------------//

if (StrID == UID5)

{

ID5 = EEPROM.read(5);

ID5 = ID5 + 1;

if (ID5 == 256)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Memory is Full”);

lcd.setCursor(0, 1);

lcd.print(“Please Clear All.”);

for (i = 0; i 《 20; i++)

{

digitalWrite(LED, HIGH);

delay(100);

digitalWrite(LED, LOW);

delay(100);

}

i = 0;

return;

}

if (ID5 != 256)

{

EEPROM.write(5, ID5);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Your Attendance”);

lcd.setCursor(0, 1);

lcd.print(“Registered !!!”);

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

return;

}

}

//-----------------------------------//

if (StrID == UID6)

{

ID6 = EEPROM.read(6);

ID6 = ID6 + 1;

if (ID6 == 256)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Memory is Full”);

lcd.setCursor(0, 1);

lcd.print(“Please Clear All.”);

for (i = 0; i 《 20; i++)

{

digitalWrite(LED, HIGH);

delay(100);

digitalWrite(LED, LOW);

delay(100);

}

i = 0;

return;

}

if (ID6 != 256)

{

EEPROM.write(6, ID6);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Your Attendance”);

lcd.setCursor(0, 1);

lcd.print(“Registered !!!”);

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

return;

}

}

//-----------------------------------//

if (StrID == UID7)

{

ID7 = EEPROM.read(7);

ID7 = ID7 + 1;

if (ID7 == 256)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Memory is Full”);

lcd.setCursor(0, 1);

lcd.print(“Please Clear All.”);

for (i = 0; i 《 20; i++)

{

digitalWrite(LED, HIGH);

delay(100);

digitalWrite(LED, LOW);

delay(100);

}

i = 0;

return;

}

if (ID7 != 256)

{

EEPROM.write(7, ID7);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Your Attendance”);

lcd.setCursor(0, 1);

lcd.print(“Registered !!!”);

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

return;

}

}

//-----------------------------------//

if (StrID == UID8)

{

ID8 = EEPROM.read(8);

ID8 = ID1 + 1;

if (ID8 == 256)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Memory is Full”);

lcd.setCursor(0, 1);

lcd.print(“Please Clear All.”);

for (i = 0; i 《 20; i++)

{

digitalWrite(LED, HIGH);

delay(100);

digitalWrite(LED, LOW);

delay(100);

}

i = 0;

return;

}

if (ID8 != 256)

{

EEPROM.write(8, ID8);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Your Attendance”);

lcd.setCursor(0, 1);

lcd.print(“Registered !!!”);

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

return;

}

}

//-----------------------------------//

if (StrID == UID9)

{

ID9 = EEPROM.read(9);

ID9 = ID9 + 1;

if (ID9 == 256)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Memory is Full”);

lcd.setCursor(0, 1);

lcd.print(“Please Clear All.”);

for (i = 0; i 《 20; i++)

{

digitalWrite(LED, HIGH);

delay(100);

digitalWrite(LED, LOW);

delay(100);

}

i = 0;

return;

}

if (ID9 != 256)

{

EEPROM.write(9, ID9);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Your Attendance”);

lcd.setCursor(0, 1);

lcd.print(“Registered !!!”);

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

return;

}

}

//-----------------------------------//

if (StrID == UID10)

{

ID10 = EEPROM.read(10);

ID10 = ID10 + 1;

if (ID10 == 256)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Memory is Full”);

lcd.setCursor(0, 1);

lcd.print(“Please Clear All.”);

for (i = 0; i 《 20; i++)

{

digitalWrite(LED, HIGH);

delay(100);

digitalWrite(LED, LOW);

delay(100);

}

i = 0;

return;

}

if (ID10 != 256)

{

EEPROM.write(10, ID10);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Your Attendance”);

lcd.setCursor(0, 1);

lcd.print(“Registered !!!”);

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

return;

}

}

//-----------------------------------//

if (StrID == UID11)

{

ID11 = EEPROM.read(11);

ID11 = ID11 + 1;

if (ID11 == 256)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Memory is Full”);

lcd.setCursor(0, 1);

lcd.print(“Please Clear All.”);

for (i = 0; i 《 20; i++)

{

digitalWrite(LED, HIGH);

delay(100);

digitalWrite(LED, LOW);

delay(100);

}

i = 0;

return;

}

if (ID11 != 256)

{

EEPROM.write(11, ID11);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Your Attendance”);

lcd.setCursor(0, 1);

lcd.print(“Registered !!!”);

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

return;

}

}

//-----------------------------------//

if (StrID == UID12)

{

ID12 = EEPROM.read(12);

ID12 = ID12 + 1;

if (ID12 == 256)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Memory is Full”);

lcd.setCursor(0, 1);

lcd.print(“Please Clear All.”);

for (i = 0; i 《 20; i++)

{

digitalWrite(LED, HIGH);

delay(100);

digitalWrite(LED, LOW);

delay(100);

}

i = 0;

return;

}

if (ID12 != 256)

{

EEPROM.write(12, ID12);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Your Attendance”);

lcd.setCursor(0, 1);

lcd.print(“Registered !!!”);

digitalWrite(LED, HIGH);

delay(1000);

digitalWrite(LED, LOW);

return;

}

}

if (StrID != UID1 || StrID != UID2 || StrID != UID3 || StrID != UID4

|| StrID != UID5 || StrID != UID6 || StrID != UID7 || StrID != UID8

|| StrID != UID9 || StrID != UID10 || StrID != UID11 || StrID != UID12)

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(“Unknown RFID”);

lcd.setCursor(0, 1);

lcd.print(“Card !!!”);

for (i = 0; i 《 3; i++)

{

digitalWrite(LED, HIGH);

delay(200);

digitalWrite(LED, LOW);

delay(200);

}

}

rfid.PICC_HaltA ();

rfid.PCD_StopCrypto1();

}

}

void Read_data()

{

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(Name1);

lcd.print(“:”);

lcd.print(EEPROM.read(1));

lcd.setCursor(0, 1);

lcd.print(Name2);

lcd.print(“:”);

lcd.print(EEPROM.read(2));

delay(2000);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(Name3);

lcd.print(“:”);

lcd.print(EEPROM.read(3));

lcd.setCursor(0, 1);

lcd.print(Name4);

lcd.print(“:”);

lcd.print(EEPROM.read(4));

delay(2000);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(Name5);

lcd.print(“:”);

lcd.print(EEPROM.read(5));

lcd.setCursor(0, 1);

lcd.print(Name6);

lcd.print(“:”);

lcd.print(EEPROM.read(6));

delay(2000);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(Name7);

lcd.print(“:”);

lcd.print(EEPROM.read(7));

lcd.setCursor(0, 1);

lcd.print(Name8);

lcd.print(“:”);

lcd.print(EEPROM.read(8));

delay(2000);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(Name9);

lcd.print(“:”);

lcd.print(EEPROM.read(9));

lcd.setCursor(0, 1);

lcd.print(Name10);

lcd.print(“:”);

lcd.print(EEPROM.read(10));

delay(2000);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(Name11);

lcd.print(“:”);

lcd.print(EEPROM.read(11));

lcd.setCursor(0, 1);

lcd.print(Name12);

lcd.print(“:”);

lcd.print(EEPROM.read(12));

delay(2000);

}

void clear_Memory()

{

lcd.clear();

lcd.print(0, 0);

lcd.print(F(“Clear All Data?”));

lcd.setCursor(0, 1);

lcd.print(F(“Long press: Y/N”));

delay(2500);

Serial.print(“YES”);

if (digitalRead(yes) == LOW)

{

EEPROM.write(1, 0);

EEPROM.write(2, 0);

EEPROM.write(3, 0);

EEPROM.write(4, 0);

EEPROM.write(5, 0);

EEPROM.write(6, 0);

EEPROM.write(7, 0);

EEPROM.write(8, 0);

EEPROM.write(9, 0);

EEPROM.write(10, 0);

EEPROM.write(11, 0);

EEPROM.write(12, 0);

lcd.clear();

lcd.setCursor(0, 0);

lcd.print(F(“All Data Cleared”));

lcd.setCursor(0, 1);

lcd.print(F(“****************”));

delay(1500);

}

if (digitalRead(no) == LOW);

{

return;

}

}

//-------------------------Program developed by
R.Girish------------------//

---------------- 设置用户界面----------------- //

字符 UID1[] = “F6:97:ED:70”;

字符 UID2[] = “45:B8:AF:C0”;

字符 UID3[] = “15:9F:A5:C0”;

char UID4[] = “C5:E4:AD:C0”;

字符 UID5[] = “65:1D:AF:C0”;

char UID6[] = “45:8A:AF:C0”;

字符 UID7[] = “15:9F:A4:C0”;

char UID8[] = “55:CB:AF:C0”;

字符 UID9[] = “65:7D:AF:C0”;

字符 UID10[] = “05:2C:AA:04”;

字符 UID11[] = “55:7D:AA:04”;

字符 UID12[] = “BD:8A:16:0B”;

//----------------------------------------------//

您这里有地名:

--------------名字-----------------------//

字符名称 1[] = “学生 1”;

字符名称 2[] = “学生 2”;

字符名称 3[] = “学生 3”;

字符名称 4[] = “学生 4”;

字符名称 5[] = “学生 5”;

字符名称 6[] = “学生 6”;

字符名称 7[] = “学生 7”;

字符名称 8[] = “学生 8”;

字符名称 9[] = “学生 9”;

字符名称 10[] = “学生 10”;

字符名称 11[] = “学生 11”;

字符名称 12[] = “学生 12”;

//--------------------------------------------//

将学生 1、学生 2 替换为您想要的任何名称或保持原样。

您必须设置从何时到考勤系统应该处于活动状态的时间,其余时间当我们扫描RFID标签/卡时,系统不会注册考勤:

------从--------//

整数 h = 21;小时

int m = 00;最小值

-------自-------//

整数 h1 = 21;小时

int m1 = 50;最小值

//-------------------------//

上半部分是开始时间,下半部分是结束时间。您必须输入从 0 到 23 的小时和从 00 到 59 的分钟。

提问/讨论

这里还没有内容,您有什么问题吗?

我要提问/讨论

推荐帖子 最新更新时间:2024-11-21 19:43

调查显示有33个国家的移动网络平均速度已超过WiFi
  下载速度慢?不得不关闭WiFi?你可并非一个人!    OpenSignal的一项研究显示,有33个国家的移动网络平均速度已超过WiFi,与其十年前正好相反。   其中,澳大利亚的差距最为明显,其移动网络平均速度为34.6 Mbps,而平均WiFi速度为21.6 Mbp
 maiyouaRF/无线
CC6678数字信号处理器 (DSP) 的用法
与DSP的其中一位发明者, Gene Frantz 一样,对我来说,了解客户如何将我们的处理器应用到实际环境中是再开心不过的一件事情了。然而,我发现基于KeyStone 的 TMS320C6678 ,一款8内核C66x DSP特别有意思,这是因为这款器件是市面上较早的高性
 AguileraDSP 与 ARM 处理器
dsp28335的例程分享(在ccs3.3下建立)
同时欢迎讨论关于在ccs4下的如何建立工程,需要哪些文件及其作用和注意事项? dsp28335的例程分享(在ccs3.3下建立) 谢谢分享! 好的 非常感谢 多谢楼主分享 1. workspace要选为默认。 2. target configuration里的ccxml文件
 巧紫DSP 与 ARM 处理器
哪位大神知道这是什么器件
陶瓷封装,外表像个3个引脚的陶瓷晶振。可它不是晶振。印字223是什么意思? 哪位大神知道这是什么器件 可变电容? 可变电容应该有调节的 从标号看应该不是电容,否则设计者就太胡闹了。 外观看,陶瓷滤波器的可能性较大,陶瓷振子(不能叫 陶瓷晶振 )虽也有可能,但可能性不
 电子学模拟与混合信号
STM32的ISP协议公开么?
刚搜索了一下论坛,没搜到协议,网上不是有第三方的ISP软件么?那么这个协议应该可以公开的吧?我想做个产品的专用下载机呢~ STM32的ISP协议公开么? 有3篇应用笔记:AN3154、AN3155和AN3156,请在ST网站下载: http:/
 ddystm32/stm8
【好书推荐】嵌入式网络那些事:LwIP协议深度剖析与实战演练.PDF
编辑推荐 骨灰级TCP/IP专家、风靡网络的电子书《LwIP协议栈源码详解》朱升林老师倾情分享 超精彩!延续了电子书的语言及内容风格,轻松诙谐,简单直白 超实战!完整的实验环境配合详细的实验步骤,使你修改的每一行代码都可以在实验板上看到效果。 超实用!囊括作者多年开发
 qinkaiabc嵌入式系统

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

EEWORLD 电路图 站点相关: 下载中心 Datasheet 参考设计

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved