IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 【2020年全国大学生电子设计竞赛】-- 简易无接触温度测量与身份识别装置(F题) -> 正文阅读

[嵌入式]【2020年全国大学生电子设计竞赛】-- 简易无接触温度测量与身份识别装置(F题)

在这里插入图片描述

简易无接触温度测量与身份识别装置(F题)

方案选择

本设计无接触温度测量模块由STC89C52单片机电路+1602液晶显示电路+MLX90614ESF红外非接触温度检测电路+按键电路+蜂鸣器报警电路。

身份识别模块的选择:使用K210+NT35310液晶显示屏+OV5640摄像头模块。 K210是基于RISC-V精简指令集的一款MCU,芯片架构包含了一个神经网络硬件加速器KPU,可以高性能地进行卷积神经网络运算,可以更好地在机器视觉和听觉上发挥作用。从传统的人工设计特征加浅层分类器的框架,到基于深度学习的端到端的检测框架。通过创建被识别对象(参赛队3名队员,以及口罩防疫识别)的数据集,之后进行深度学习及算法训练。

无接触温度测量系统

在这里插入图片描述

main.c
#include<reg52.h> 
#include<stdio.h>		 
#include<intrins.h>
#include "delay.h"
#include "1602.h"
#include "mlx90614.h"

sbit buzzer=P1^0;
sbit key1=P2^0;
sbit key2=P2^1;

unsigned long time_20ms; 
char dis0[16];			  
char dis1[16];
unsigned int setNum = 37; 

bit rekey =0;
bit disFlag =0;
unsigned int  Tem;	 
float objTemp,envTemp;	

void Init_Timer0(void);	

void main (void)
{   
	Init_Timer0();        
	             
	LCD_Init();           
	DelayMs(20);          
	LCD_Clear();

	while (1)        
	{
		if(disFlag==1)	  
		{
			Tem=ReadObjectTemp();	 
			objTemp=(float)(Tem)*0.02-273.15;
	
			Tem=ReadEnvironTemp();	
			envTemp=(float)(Tem)*0.02-273.15;

			sprintf(dis0,"E: %4.1f'C   ",envTemp);
			LCD_Write_String(0,0,dis0);
			sprintf(dis1,"O:%5.1f'C   %3d  ",objTemp,setNum);
			LCD_Write_String(0,1,dis1);

			if(objTemp>setNum)
			{buzzer =0;	}	
			else
			{buzzer=1;}		
			disFlag = 0;

		}

		if((key1 == 0)||(key2 == 0))  
		{
		 	if(rekey == 0)
			{
				DelayMs(10);
				if(key1 == 0) 
				{
					rekey =1;	
					if(setNum<200) setNum++;	 
				}
				else if((key2 == 0))
				{
				 	rekey =1;
					if(setNum>0) setNum--;		
				}
			}
		}
		else
		{
			rekey = 0;	 
		}					
	}
}


void Init_Timer0(void)
{
	TMOD |= 0x01;	  
	TH0=(65536-20000)/256;		
	TL0=(65536-20000)%256;
	EA=1;           
	ET0=1;          
	TR0=1;          
}

void Timer0_isr(void) interrupt 1 
{
	TH0=(65536-20000)/256;		 
	TL0=(65536-20000)%256;	
	time_20ms++;
	if(time_20ms%20==0)	 
	{disFlag = 1;}
}

人脸控制系统

在这里插入图片描述
操作过程:
操作过程放在文章末尾资料链接中!!!

代码块

kpu_image.pixel = 3;
    kpu_image.width = 320;
    kpu_image.height = 240;
    image_init(&kpu_image);
    
    display_image.pixel = 2; //2->3 LIUSEN
    display_image.width = 320;
    display_image.height = 240;
    image_init(&display_image);
    
    crop_image.pixel = 3;
    crop_image.width = 224;
    crop_image.height = 224;
    image_init(&crop_image);

    //存放AI图像的地址,供AI模块进行算法处理(红色、绿色、蓝色/分量地址)
    dvp_set_ai_addr((uint32_t)kpu_image.addr, (uint32_t)(kpu_image.addr + 320 * 240), (uint32_t)(kpu_image.addr + 320 * 240 * 2));
    //设置采集图像在内存中的存放地址,可以用来显示
    dvp_set_display_addr((uint32_t)display_image.addr);
    //图像开始采集中断| 图像结束采集中断
    dvp_config_interrupt(DVP_CFG_START_INT_ENABLE | DVP_CFG_FINISH_INT_ENABLE, 0);
    //禁用自动接收图像模式
    dvp_disable_auto();

/* DVP interrupt config */
    printf("DVP interrupt config\n");

 plic_set_priority(IRQN_DVP_INTERRUPT, 1);               //设置中断优先级
    plic_irq_register(IRQN_DVP_INTERRUPT, dvp_irq, NULL);   //注册外部中断函数
  plic_irq_enable(IRQN_DVP_INTERRUPT);                    //使能外部中断
    /* init model */
    //加载 kmodel,需要与 nncase 配合使用
    if (kpu_load_kmodel(&task1, model_data) != 0)
    {
        printf("Cannot load kmodel.\n");
        exit(-1);
    }
   
sysctl_enable_irq();
      
    /* system start */
    printf("System start\n");
    while (1)
    {
        g_dvp_finish_flag = 0;
        dvp_clear_interrupt(DVP_STS_FRAME_START | DVP_STS_FRAME_FINISH);
        dvp_config_interrupt(DVP_CFG_START_INT_ENABLE | DVP_CFG_FINISH_INT_ENABLE, 1);
        while (g_dvp_finish_flag == 0)
            ;
            
        image_crop(&kpu_image, &crop_image, 48, 8);


 g_ai_done_flag = 0;

  if (kpu_run_kmodel(&task1, crop_image.addr, DMAC_CHANNEL5, ai_done, NULL) != 0)
        {
            printf("Cannot run kmodel.\n");
            exit(-1);
        }
        while (!g_ai_done_flag);

        float *features;
        size_t output_size;
        // 获取 KPU 最终处理的结果  KPU任务句柄  结果的索引值  结果  大小(字节)
        kpu_get_output(&task1, 0, &features, &output_size);
        size_t cls = argmax(features, 2);

        const char *text = NULL;
        //{'cat': 0, 'dog': 1},
        switch (cls)
 {
            case 0:
                text = "people1";
                break;
            case 1:
                text = "people2";
                break;
            case 2:
                text = "people3";
                break;

        }

        
        /* display pic*/
        if (features[cls] > PROB_THRESH)
            ram_draw_string(display_image.addr, 150, 20, text, RED);
        lcd_draw_picture(0, 0, 320, 240, (uint32_t *)display_image.addr);
    }
    
}

资料:

在这里插入图片描述
资源链接!!!https://download.csdn.net/download/wangshuqian1314/85206253

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2022-04-24 09:36:52  更:2022-04-24 09:37:20 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 3:52:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码