系列文章目录
- 基于单片机的超声波测距器设计
- 基于51单片机的自动浇花器设计
- 基于51单片机的红外遥控自动风扇设计
- 基于STM32的条形码识别器
文章目录
0 前言
🔥近几年随着人工智能等新技术的不断火热,带动了嵌入式等的传统行业的进一步发展。最近带过的几届同学反馈:以往的毕设题目缺乏创新性和亮点,不能满足学校的答辩要求。为了方便毕业生们顺利、省心、高效的通过毕设,这里分享一些优质的低投入高产出毕业设计。
今天给大家分享一个比较实用且有一定创新力的题目
🚩基于51单片机的非接触式测温系统实现
🥇首先对这道题目给出一个量化的评价(每项满分5⭐):
- 难度:⭐⭐⭐
- 工作量:⭐⭐⭐
- 创新性:⭐⭐⭐
1 题目
2 方案设计
2.1 方案框图
分析题目功能点,结合开发经验,构思整体方案,形成整体方案框图
2.2 器件选型
根据市售器件,进一步确定所用器件的具体型号:
主控:采用 8051 内核的 STC89C52 单片机, 外部晶振 11.0592MHz;
非接触式测温传感器:采用红外原理的非接触式测温传感器,型号 GY-615V3DAG,与主控通过 I2C 协议通信;
LCD屏幕:采用 LCD1602液晶屏,与主控通过并行数据接口通信;
系统采用5V供电。
2.3 小结-设计要点、难点解析
1、I2C 协议原理及使用;
2、红外非接触测温传感器的原理、使用方法、产品特性与通信协议;
3、传感器原始数据处理,对返回的数据结果进行滤波整定;
4、系统软件总体流程设计,能够准确快速地响应温度识别结果;
5、显示界面设计,需具备良好的人机交互体验;
6、系统需具备高鲁棒性,稳定性和可靠性是至关重要的。
3 硬件设计——原理图及PCB
使用 Altium Designer 软件进行硬件原理图和PCB绘制
4 软件设计——软件模块划分及主程序源码
使用 Keil-MDK ARM建立工程
工程文件树
主程序部分源码展示:
#include <reg52.h>
#include "LCD1206.h" //包含LCD1206函数库文件
#include "stdio.h"
#include "iic.h"
#define uint unsigned int
#define uchar unsigned char
#define uint32_t unsigned long
#define int16_t int
/*********************************************************************************************
程序名: 非接触式测温仪
编写人:
编写时间:
硬件支持:
主控MCU ST89C52RC 外部晶振11.0592MHz
LCD1602 并行数据口-P0 控制口 EN-5^7 RW-2^6 RS-2^5
无接触测温传感器 SDA-2^3 SCL-2^4
修改日志:
1-
*********************************************************************************************/
/* 位定义 */
/* 变量声明 */
/* 体温限制 */
float SetTemp = 3730; // 为方便存储、计算和比较 体温存储为四位数
/* 被测者体温 */
int CutTemp = 0;
/* 数组 存放原始及转换后的数据 */
uchar raw_data[9]={0};
uint datas[4]={0},delay_t;
/* 结构体变量 传感器所测数据 */
typedef struct
{
float e; // 发射率 E=(0x62)/100=0.98
float to; // 目标温度 TO=(0x0C*256+0xEB)/100=30.99℃
float ta; // 环境温度 TA=(0x0C*256+0x3F)/100=31.35℃
float bo; // 额温转换体温 BO=(0x0E*256+0x20)/100=36.16℃
} gyir;
/***********函数声明***********/
/* ms级delay函数 */
void delay(uint z);
/* LCD更新显示内容 */
void LCDUpdate(void);
/* 主函数 */
void main()
{
// 变量声明
// LCD显示字符串
uchar code uctech[] = {" IRThermoetry "};
uchar raw_data[9]={0}; // 数组 存放原始及转换后的数据
uint datas[4]={0},delay_t;
uchar i;
uchar td = 0;
gyir my_ir; // 结构体定义
// 初始化各部件
delay(200); // 启动等待,等LCD讲入工作状态
LCDInit(); // 初始化LCD
// 第一行显示信息
DisplayListChar(0, 0, uctech);
delay(200);
td=2;
Single_WriteI2C_byte(0xa4,0x02,2);//设置更新频率5hz
switch(td)
{
case 0:delay_t=1010;break;
case 1:delay_t=510;break;
case 2:delay_t=210;break;
case 3:delay_t=110;break;
}
delay(1);
Single_WriteI2C_byte(0xa4,0x07,95);//设置发射率0.95
delay(1);
Single_WriteI2C_byte(0xa4,0x06,95);//设置温度补偿 95-100=-5度
delay(1);
5 成果——实现效果展示
6 最后总结——项目资料获取
想获取设计方案、器件资料、原理图、PCB、程序源码获取、其他毕设题目解答,欢迎私信。
或搜索微信公众号“电子设计万事屋”,敬请关注