52单片机制作打卡考勤+测温一体系统(含后端管理平台)

技术要求

  1. python+flask+tcp基础(管理系统后端代码)
  2. angular(管理系统前端代码)
  3. C基础(单片机代码,主要涉及:iic,tcp,lcd1602总线,串口,中断)
  4. 数据库MySQL

!如果你是直接运行代码,不要忘记先建数据库哦。

代码整体包含以下部分:

  1. MFRC522射频模块调用;
  2. MLX90614测温模块调用;
  3. 52单片机串口的调用;
  4. ETH-01串口以太网模块(基于TCP协议)的使用;
  5. flask+mysql打造后端服务器;
  6. angular前端。

另外的一些小建议!!!!

这个项目其实很基础,用到的单片机知识你在开发版上几乎都能看见Flask也比较基础(主要就是负责转发信息、接口回复)。但是由于只有关键代码有注释、或者你只是单片机初学者,建议从阅读我的AT89C51单片机制作密码锁一文开始,密码锁真的是个打基础的好东西,可以更加有兴趣的学习起来。所以如果你是初学python 的话,建议先看我另一篇有关于pygame模块写一个2D迷宫游戏的列子,你能学到库的调用查询、类的使用、以及一些小技巧。
这份代码可以二次使用的地方很多,很多代码都是我以前写过直接copy过来的。你能从中找到很多需要的模块式代码,比如在后台管理功能中:xls读取生成,简单爬虫,文件下载上传,sql对象快速生成,时间格式的前后端交互技巧,登录密匙的生成重置小技巧等等…

单片机部分(我按照模块来陈述,也方便大家循序渐进)

MFRC522射频模块

我有写一篇专门的文章介绍->传送门


void SysInit(void)
{PcdReset();                //复位RC522PcdAntennaOff();       //关天线       PcdAntennaOn();         //开天线M500PcdConfigISOType('A'); //寻卡模式
}

MLX90614测温模块调(相关手册后续发上来,资料在学校)

这个接口相对简单,如果使用过红外线模块的同学,代码基本都可以复用。
参照MLX90614官方给出的实例代码,照葫芦画瓢。咋们拿上来直接用!
特别强调member_read函数,大家可以自己写一写,因为写法并不固定.。

//************函数声明*****************************************
void Init_IIC();
void start_bit(); //MLX90614 发起始位子程序
void stop_bit(); //MLX90614 发结束位子程序
uchar rx_byte(void); //MLX90614 接收字节子程序
void send_bit(void); //MLX90614 发送位子程序
void tx_byte(uchar dat_byte); //MLX90614 接收字节子程序
void receive_bit(void); //MLX90614 接收位子程序
void delay(uint N); //延时程序
uint memread(void); //读温度数据void delay1ms(uint c)   //误差 0us
{unsigned char a,b;for (; c>0; c--){for (b=199;b>0;b--){for(a=1;a>0;a--);}      }}   void Init_IIC(void)
{SCL=1;SDA=1;_nop_(); _nop_();_nop_();_nop_(); SCL=0; delay(1000); SCL=1;
}
//************************************
void start_bit(void)
{ SDA=1; _nop_();_nop_();_nop_();_nop_();_nop_(); SCL=1; _nop_();_nop_();_nop_();_nop_();_nop_(); SDA=0; _nop_();_nop_();_nop_();_nop_();_nop_(); SCL=0; _nop_();_nop_();_nop_();_nop_();_nop_();
}//------------------------------
void stop_bit(void)
{ SCL=0; _nop_();_nop_();_nop_();_nop_();_nop_(); SDA=0; _nop_();_nop_();_nop_();_nop_();_nop_(); SCL=1; _nop_();_nop_();_nop_();_nop_();_nop_(); SDA=1;
}//---------发送一个字节---------
void tx_byte(uchar dat_byte)
{ char i,n,dat; n = Nack_counter; TX_again: dat = dat_byte; for(i=0;i<8;i++) { if(dat&0x80) bit_out = 1; else bit_out = 0; send_bit(); dat = dat<<1; } receive_bit(); if(bit_in==1) { stop_bit(); if(n!=0) {n--;goto Repeat;} else goto exit; } else goto exit; Repeat: start_bit(); goto TX_again; exit: ;
}
//-----------发送一个位---------
void send_bit(void)
{ if(bit_out==0) SDA = 0; else SDA = 1; _nop_(); SCL = 1; _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); SCL = 0; _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();
}
//----------接收一个字节--------
uchar rx_byte(void)
{ uchar i,dat; dat = 0; for(i=0;i<8;i++) { dat=dat<<1; receive_bit(); if(bit_in==1) dat=dat+1; } send_bit(); return dat;
}
//----------接收一个位----------
void receive_bit(void)
{ SDA = 1;bit_in = 1; SCL = 1; _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_(); bit_in = SDA; _nop_(); SCL = 0; _nop_();_nop_();_nop_();_nop_(); _nop_();_nop_();_nop_();_nop_();
}
//------------延时--------------
void delay(uint N)
{ uint i; for(i=0;i<N;i++) _nop_();
}
//------------------------------
//------------------------------
uint memread(void)
{ start_bit(); tx_byte(0x00); //Send SlaveAddress tx_byte(0x07); //Send Command //------------ start_bit(); tx_byte(0x01); bit_out=0; DataL=rx_byte(); bit_out=0; DataH=rx_byte(); bit_out=1; Pecreg=rx_byte(); stop_bit();temp1[0] = DataH;temp1[1] = DataL;return(DataH*256+DataL);
}

ETH-01串口以太网模块(基于TCP协议)

当然我也写有一篇相关文章->有关于ETH-01串口以太网模块的使用详情
原理是:单片机一端通过串口发送数据给网络模块,网络模块另一端连接着上位机(占用某一个端口),tcp协议下是监听模式(我有一篇关于python做监听的文章以供参考,使用python做一个简单的WiFi连接监视),后端服务器时刻监听是否有数据通过这个端口发送过来。

/** UART初始化* 波特率:9600
*/
void UART_init(void)
{   //PCON &= 0x7F;        //波特率不倍速SCON  = 0x50;        // 10位uart,允许串行接受TMOD = 0x20;     //T1工作模式2  8位自动重装TH1 = 0xfd;TL1 = 0xfd;   //比特率9600TR1 = 1;      //启动T1定时器SM0 = 0;SM1 = 1;         //串口工作方式1 10位异步REN = 1;        //串口允许接收EA  = 1;       //开总中断ES  = 1;     //串口中断打开
}/** UART 发送一字节
*/
void UART_send_byte(unsigned char dat)
{SBUF = dat;while (TI == 0);TI   = 0;
}/** UART 发送字符串
*/
void UART_send_string(unsigned char *buf)
{while (*buf != '\0'){UART_send_byte(*buf++);}
}void SysInit(void)
{PcdReset();                //复位RC522PcdAntennaOff();       //关天线       PcdAntennaOn();         //开天线M500PcdConfigISOType('A'); //寻卡模式
}void UART() interrupt 4
{if(RI) //检测是否接收完成{num = SBUF;   //num 取出接收缓存器的值   ,判断打卡是否成功//P1 = SBUF;if(num == 0){LCD1602_Dis_Str(1,0,"you are failed");beep = 0;delay1ms(1200);beep = 1;//蜂鸣器发出滴提示音}RI = 0;//SBUF = num;  //while(!TI);//TI = 0;}
}

1602或者是12864的使用就不赘述了,读者可以看看购买的开发板提供的代码、或者尝试的实例代码。

主程序

main()
{unsigned int Tem,account;// 存温度UART_init();         //串口初始化//Init_ST7920();   //LCD12864初始化Init_LCD1602();     //1602初始化SysInit();     //RC522初始化// 初始化iicInit_IIC();while(1){ // 测温Tem = memread();temp1[0] = Tem/256;temp1[1] = Tem%256;//Tem = 0x27AD;display(Tem);//LCD1602_Dis_Str(1,0,temperature);LCD1602_Dis_OneChar(1,0,temperature[0]);LCD1602_Dis_OneChar(2,0,temperature[1]);LCD1602_Dis_OneChar(3,0,temperature[2]);LCD1602_Dis_OneChar(4,0,temperature[3]);LCD1602_Dis_OneChar(5,0,temperature[4]);LCD1602_Dis_Str(1,1,"clipe card");if (PcdRequest(0x52, Temp) == MI_OK){beep = 0;if (PcdAnticoll(UID) == MI_OK){//开始发送//UART_send_byte(UID[0]);//UART_send_byte(UID[1]);//UART_send_byte(UID[2]);//UART_send_byte(UID[3]);u16ToString(UID,str,4);//UART_send_string(str);LCD1602_Dis_Str(1,1,str);//u16ToString(temp1,tempStr,2);for(account=0;account<8;account++){Assic[account] = str[account];}u16ToString(temp1,str,2);Assic[8] = '&';Assic[9] = str[0];Assic[10] = str[1];Assic[11] = str[2];Assic[12] = str[3];UART_send_string(Assic);//UART_send_string(str);//UART_send_string(temperature);}if (PcdSelect(UID) == MI_OK){//UART_send_byte(0x67);     }}delay1ms(900);beep = 1;//蜂鸣器发出滴提示音}
}

后端代码(也在学校,回头补上)

后端这一块,用过Flask的同学应该蛮熟悉的。简单的接受GET、POST请求,存库取库并不复杂,没有相关基础的同学,也别着急。
我是这么推荐的:1. 先弄懂怎么写一个请求(也推荐一个有意思项目,快速爬取千张高清壁纸);2. flask是一个框架,我们用的不深,所以上手起来难度并不大。
有一份flask最小框架的代码提供给大家参考:github

最后展示,管理端页面(python+flask+angular)

单片机部分的代码

码云

52单片机制作打卡考勤+测温一体系统(含后端管理平台)相关推荐

  1. 上班考勤测温效率慢?人脸识别测温一体来到办公场所应用

    人员的体温测量和人员行动轨迹数据追踪是疫情预防和防控过程中重要的手段.在办公所,随着各个行业恢复工作,人员进出多,而且还要进行上下班考勤.采用人工手持额温枪的方式检测体温,效率慢,而且不便于人员行动轨 ...

  2. 基于单片机的刷卡考勤系统的设计

    资源下载地址:https://download.csdn.net/download/sheziqiong/86771891 资源下载地址:https://download.csdn.net/downl ...

  3. 基于STM32单片机的K型热电偶测温(Proteus仿真+程序)

    编号:17 基于STM32单片机的K型热电偶测温 功能描述: 本设计由STM32单片机+MAX7765+TCK热电偶+1602液晶显示模块组成. 1.主控制器是STM32单片机 2.TCK热电偶测温通 ...

  4. 【单片机毕业设计】【mcuclub-jk-003】基于单片机的非接触红外测温的设计

    最近设计了一个项目基于单片机的非接触红外测温系统,与大家分享一下: 一.基本介绍 项目名:非接触红外测温 项目编号:mcuclub-jk-003 单片机类型:STC89C52.STM32F103C8T ...

  5. 基于51单片机射频RFID卡考勤上课上班统计设计

    具体实现功能 系统由STC89C52单片机电路+RFID模块电路+1602液晶显示电路+电源电路组成. 具体功能: (1)系统有3张卡,分别代表依次是张三.李四.王二: (2)任何一个人刷卡成功能,1 ...

  6. 人体测温 melexis迈来芯 linux 平台mlx90614/mlx90621/mlx90641驱动调试

    2020年的春节因为疫情的原因一直出不了门,听说melexis测温头价格从40块涨到400块,并且还买不到货:正好有同事要求调到驱动:mlx测温模块驱动,基于android平台: 3. app: 这个 ...

  7. NB-IoT智能配电柜测温监测系统解决方案

    一.方案背景 在电力系统中,温度是表征设备运行正常的一个重要参数.随着科技的进步,社会用电负荷不断增长,为了避免因设备发热而导致的起火或者温度的自动监测已经成为各行业进行安全生产和减少损失所采取的重要 ...

  8. 人脸识别测温一体道闸机省时更省力

    人脸识别测温一体道闸机作为出入口控制系统中的关键设备,即使在人流量通行极高的条件下也完全可以胜任.访客只需要主动出示身份证.健康码.行程码信息,系统自自动人脸识别与身份证进行核验,引入AI人工智能和识 ...

  9. 单片机设计_单路测温系统(AT89C51、DS18B20温度传感器、LCD1602)

    单片机测温系统 想要更多项目私wo!!! 一.简介 此系统主要由AT89C51.DS18B20温度模块和LCD1602组成. 大致的原理是DS18B20温度采集到的数据传送给AT89C51的P3.3/ ...

最新文章

  1. HTML5调用本地摄像头画面,拍照,上传服务器
  2. CoreOS 和 Kubernetes 1.5 自主运行 Kubernetes、Container Linux
  3. linux基础-网络基础知识篇
  4. pytorch笔记 pytorch模型中的parameter与buffer
  5. MapReduce编程实战之“初识”
  6. Spring-AOP @AspectJ进阶之绑定抛出的异常
  7. Java学习小程序(9)冒泡排序算法实现
  8. 升级到php7和安装拓展(mac centos)
  9. Vue+Element!一千字带你编写合理的编辑,查看,新建!
  10. 使用encodeURl()进行编解码
  11. 打印出不同顺序的字符串单引号和双引号的差异
  12. OpenShift 4 - 基于CPU负载和网络负载的HPA
  13. 谷歌修复安卓蓝牙组件中无需用户交互的 bug
  14. 算法:回溯十二 Word Search字符串匹配二维矩阵
  15. 牛客网 牛客小白月赛1 A.简单题-控制输出格式setiosflags()函数+setprecision()函数
  16. FlyMcu一键烧录STM32开发板时关于RTS和DTR电平方式的设置
  17. 【UE·蓝图】UE4蓝图MediaPlayer注意事项
  18. 【论文模型讲解】Vision Transformer
  19. 医疗图像论文笔记二:《Learning to recognize Abnormalities in Chest X-Rays with Location-Aware Dense Networks》
  20. 联想微型计算机供电电源线,拆修一只联想电源适配器,告诉你一个不为人知的秘密...

热门文章

  1. 永洪致力于提供AI+BI+BIG DATA一站式数据智能解决方案
  2. Cache的命中率影响因素
  3. “签了三方后不想去,我赔了公司8千块钱……”
  4. 郑正中:中国商业智能的应用特点
  5. webserver日志中\xCF\xE3\xB8\xDB\xCA\xAE\xB4\xF3\xCE\xC4\xBB\xAF\xB7\xFB\xBA\xC5这种形式原因及处理
  6. 新手上路:ADAMS 基础知识讲解(图文并茂)【转载仿真论坛】(五)
  7. 微信小程序,分销系统,微商城 (广州企客猫微信小程序开发定制公司)
  8. 035:Pell数列
  9. js_RPC,sekiro框架,实现HTTPS通讯
  10. FF董事会任命陈雪峰为全球CEO 毕福康被解除职务