基于单片机教室人数实时检测系统

一、系统方案
主程序中main函数主要是引脚的初始化,给单片机引脚初始化,初始化LCD1602,初始化红外对管,通过对LCD1602赋值,采集进入教室的人数,显示在LCD1602上面进出人数我们采用按键的形式,检测完毕后按下确认键确认是否在我们需要的人数范围内,当少于我们需要的人数时,蜂鸣器会报警三秒,反之,则会LED亮三秒。
在这里插入图片描述
二、硬件设计
原理图如下:
在这里插入图片描述
三、单片机软件设计
1、首先是系统初始化
/****
*******1602初始化函数
*****/
void lcd_init()
{
lcd_write_com(0x38);
lcd_write_com(0x0c);
lcd_write_com(0x06);
lcd_write_com(0x01);

}
2、液晶显示程序
/****
*******1602写数据忙函数
*/
void lcd_write_date(uchar date)
{
check_busy();
en=0;
LCD_PORT=date;
rs=1;
wr=0;
en=1;
en=0;
}
/

*******1602写命令函数
*/
void lcd_write_com(uchar com)
{
check_busy();
en=0;
LCD_PORT=com;
rs=0;
wr=0;
en=1;
en=0;
}
/

*******1602写温度函数
*****/
void lcd_wendu(uchar add,uchar date)
{
uchar shi,ge;
shi=date/10;
ge=date%10;
lcd_write_com(add);
lcd_write_date(shi+‘0’);
lcd_write_date(ge+‘0’);
}
3、按键程序
void keyscan()
{

if(K1==0)		//检测按键K1(正转)是否按下
{delayms(10);	//消除抖动if(K1==0){ZZ(0x01);count++;buf_3[0]=count/10+'0';buf_3[1]=count%10+'0';lcd_write_str(0x80+0x40+8,buf_3);}while(!K1);	 //检测按键是否松开}
if(K2==0)		//检测按键K2(反转)是否按下
{delayms(10);	//消除抖动if(K2==0){ZZ_1(0x01);count--;buf_3[0]=count/10+'0';buf_3[1]=count%10+'0';lcd_write_str(0x80+0x40+8,buf_3);}while(!K2);	 //检测按键是否松开}	

if(K30) //检测按键K2(反转)是否按下
{
delayms(10); //消除抖动
if(K3
0)
{
if(count >= 80)
LED = 0;
else
{
BUZ = 0;
delayms(500);
BUZ = 1;
delayms(500);
BUZ = 0;
delayms(500);
BUZ = 1;
delayms(500);
}
}
while(!K3) //检测按键是否松开
{
delayms(3000);
BUZ = 1;
LED = 1;
}

}		

}
4、核心算法程序
/┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
函数功能:主函数
┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈
/
void main(void)
{
uint i;
count = 70;
TMOD = 0x01; //T0 16位工作方式
IR_1=1; //发射端口常态为高电平

lcd_init();
lcd_write_str(0x80,buf_1);
lcd_write_str(0x80+0x40,buf_2);
lcd_write_str(0x80+0x40+8,"70");

while(1)
{
keyscan();
}
}

四、 proteus仿真设计
Proteus软件是一款应用比较广泛的工具,它可以在没有硬件平台的基础上通过自身的软件仿真出硬件平台的运行情况,这样就可以通过软件仿真来验证我们设计的方案有没有问题,如果有问题,可以重新选择器件,连接器件,直到达到我们设定的目的,避免我们搭建实物的时候,如果当初选择的方案有问题,我们器件都已经焊接好了,再去卸载下去,再去焊接新的方案的器件,测试,这样会浪费人力和物力,也给开发者带来一定困惑,Proteus仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/66435.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

opencv鼠标事件函数setMouseCallback()详解

文章目录 opencv鼠标事件函数setMouseCallback()详解1、鼠标事件函数:(1)鼠标事件函数原型:setMouseCallback(),此函数会在调用之后不断查询回调函数onMouse(),直到窗口销毁(2)回调函…

肖sir__linux详解__001

linux详解: 1、ifconfig 查看ip地址 2、6版本:防火墙的命令: service iptables status 查看防火墙状态 service iptables statrt 开启防火墙 service iptables stop 关闭防火墙 service iptables restart 重启防火墙状态 7版本: systemctl s…

考前冲刺上岸浙工商MBA的备考经验分享

2023年对于许多人来说都是不平凡的一年,历经三年的抗争,我们终于成功结束了疫情。而我也很幸运的被浙工商MBA项目录取,即将开始全新的学习生活。身为一名已在职工作6年的人,能够重回校园真是一种特别令人激动的体验。今天&#xf…

域内密码喷洒

在Kerberos阶段认证的AS-REQ阶段,请求包cname对应的值是用户名,当用户名存在时候,密码正确和错误两种情况下,AS-REP返回包不一样,所以可以利用这一点对域用户名进行密码喷洒攻击 域内密码喷洒工具 Kerbrute kerbrut…

【Redis】redis入门+java操作redis

目录 一、Redis入门 1.1 Redis简介 1.2 Redis下载与安装 1.2.1 下载 1.2.2 linux安装 1.2.3 windows安装 1.3 Redis服务启动与停止 1.3.1 linux启动、停止Redis服务 1.3.2 windows启动、停止Redis服务 1.4 修改Redis启动密码 1.4.1 Linux修改设置 1.4.2 windows设…

使用HTTPS模式建立高效爬虫IP服务器详细步骤

嘿,各位爬虫小伙伴们!想要自己建立一个高效的爬虫IP服务器吗?今天我就来分享一个简单而强大的解决方案——使用HTTPS模式建立工具!本文将为你提供详细的操作步骤和代码示例,让你快速上手,轻松建立自己的爬虫…

【力扣每日一题】2023.8.29 带因子的二叉树

目录 题目: 示例: 分析: 代码: 题目: 示例: 分析: 题目给我们一些元素,让我们用这些元素连接形成特定的二叉树,每种元素可以使用任意次数,形成的二叉树要…

【云计算•云原生】5.云原生之初识DevOps

文章目录 1.DevOps背景2.DevOps概念3.DevOps工具链 1.DevOps背景 软件开发必须包含两个团队:开发团队和运维团队 开发团队负责开发项目,系统迭代更新运维团队负责项目测试以及部署上线,维持系统稳定运行 一个软件周期中是由这两个团队相互…

数据库备份

数据库备份,数据库为school,素材如下 1.创建student和score表 目录 数据库备份,数据库为school,素材如下 1.创建student和score表 2.为student表和score表增加记录 3.备份数据库school到/backup目录 4.备份MySQL数据库为带…

Windows10上使用llama-recipes(LoRA)来对llama-2-7b做fine-tune

刚刚在Windows10上搭建环境来对llama2做finetune,里面坑还是挺多的,这里把印象中的坑整理了一下以作备忘。 llama-recipes是meta的开源项目,Github地址为:GitHub - facebookresearch/llama-recipes: Examples and recipes for Ll…

Go几种读取配置文件的方式

比较有名的方案有 使用viper管理配置[1] 支持多种配置文件格式,包括 JSON,TOML,YAML,HECL,envfile,甚至还包括Java properties 支持为配置项设置默认值 可以通过命令行参数覆盖指定的配置项 支持参数别名 viper[2]按照这个优先级(从高到低&am…

UE4 显示遮挡物体

SceneDepth是你相机能够看见的物体的深度距离 CustomDepth是你相机包括看不见被遮挡的物体的深度距离 如果CustemDepth比SceneDepth的距离相等,那么就是没有被遮挡的物体,如果被遮挡那么就是CustemDepth比SceneDepth深度距离远,然后再做对应…

【业务功能篇91】微服务-springcloud-多线程-线程池执行顺序

一、线程的实现方式 1. 线程的实现方式 1.1 继承Thread class ThreadDemo01 extends Thread{Overridepublic void run() {System.out.println("当前线程:" Thread.currentThread().getName());} }1.2 实现Runnable接口 class ThreadDemo02 implements Runnable{…

Win7下设置“定时关机”的方法

【Win7下设置定时关机的方法】 ●【所有程序】→【附件】→【系统工具】→【任务计划程序】 ● 右键单击,选择【创建基本任务】,然后在【任务名称】中填自定义名称,如“定时关机” ● 之后,按照下面各图的提示进行“任务触发器”…

在Ubuntu上安装CUDA和cuDNN以及验证安装步骤

在Ubuntu上安装CUDA和cuDNN以及验证安装步骤 本教程详细介绍了如何在Ubuntu操作系统上安装CUDA(NVIDIA的并行计算平台)和cuDNN(深度神经网络库),以及如何验证安装是否成功。通过按照这些步骤操作,您将能够…

QTday4

一、闹钟 头文件 源文件 二、XMind思维导图

Vue框架--理解MVVM

我们知道,MVVM是Model-View-ViewModel的简写。它本质上就是MVC的改进版。我们看看MVVM的模型架构,如下所示: 架构理解与实例

9.1.tensorRT高级(4)封装系列-自动驾驶案例项目self-driving-道路分割分析

目录 前言1. 道路分割总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程,之前有看过一遍,但是没有做笔记,很多东西也忘了。这次重新撸一遍,顺便记记笔记。 本次课程学习 tensorRT 高级-自动驾驶案例项目self-driving-道路分…

java-初识Servlet,Tomcat,JDBC

文章目录 前言一、ServletServlet 生命周期Servlet 实例Servlet 过滤器 二、TomcatJDBCJDBC连接数据库实例 总结 前言 java入门须知的重要概念/名词/技术 等 一、Servlet Servlet是Java Web开发中的一个核心组件,它是基于Java语言编写的服务器端程序,…

Error: PostCSS plugin autoprefixer requires PostCSS 8 问题解决办法

报错:Error: PostCSS plugin autoprefixer requires PostCSS 8 原因:autoprefixer版本过高 解决方案: 降低autoprefixer版本 执行:npm i postcss-loader autoprefixer8.0.0