基于单片机教室人数实时检测系统
一、系统方案
主程序中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(K30)
{
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仿真软件就很好的解决这个问题,我们在设计之初,就使用该软件进行模拟仿真,测试,选择满足我们设计的最优方案。最后根据测试没问题的仿真图纸,焊接实物,调试,最终完成本设计的作品。

相关文章:
基于单片机教室人数实时检测系统
一、系统方案 主程序中main函数主要是引脚的初始化,给单片机引脚初始化,初始化LCD1602,初始化红外对管,通过对LCD1602赋值,采集进入教室的人数,显示在LCD1602上面进出人数我们采用按键的形式,检…...
alibabacloud的简单使用,nacos配置中心+服务中心。作者直接给自己写的源码
文章目录 依赖关键主要的程序启动文件配置文件bootstrap.yml依赖文件nacos配置中心上的文件截图 启动成功截图参考文档 依赖关键 SpringBoot版本和com.alibaba.cloud版本需要对应,不然会程序会启动失败作者使用的版本 SpringBoot: 2.1.6.RELEASE alibabacloud: 2.…...
Python爬虫:一个爬取豆瓣电影人像的小案例
从谷歌浏览器的开发工具进入 选择图片右键点击检查 
1.打开STM32CubeMX选择好对应的芯片,打开IWDG 2.打开串口1进行调试 3.配置好时钟 4.写好项目名称,选好开发环境,最后获取代码。 5.打开工程,点击魔术棒,勾选Use Micro LIB 6.修改main.c #include "main.h"…...
39.RESTful案例
RESTful案例 准备环境 Employee.java public class Employee {private Integer id;private String lastName;private String email;//1 male, 0 femaleprivate Integer gender; } //省略get、set和构造方法EmployeeDao.java package com.atguigu.SpringMVC.dao;import com.…...
Power Pivot 实现数据建模
一、简介 Excel中的透视表适合小规模数据;如果想在稍微大一些的数据中进行高性能透视表分析,就要使用Power Pivot;再大一些数据,可能就需要大数据分析服务来进行分析。 Power Pivot,可以让没有技术背景的企业业务人员…...
Ansible自动化运维之playbooks剧本
文章目录 一.playbooks介绍1.playbooks简述2.playbooks剧本格式3.playbooks组成部分4.运行playbooks及检测文件配置 二.模块实战实例1.playbooks模块实战实例2.vars模块实战实例3.指定远程主机sudo切换用户4.when模块实战实例5.with_items迭代模块实战实例6.Templates 模块实战…...
Docker - Docker安装MySql并启动
因为项目需要连接数据库,但是远程服务器上的mysql我不知道账户和密码,这个时候便是docker发挥作用的关键时刻了! 目录 docker安装安装gcc卸载老docker(如有)安装软件包设置镜像仓库更新yum软件包索引安装docker启动doc…...
SQL Server 2019导入txt数据
1、选择导入数据 2、选择Flat file Source 选择文件,如果第一行不是列名,就不勾选。 3、下一步 可以看看数据是否是对的 4、下一步 选择SQL server Native Client 11,数据库选择导入进的库 输入连接数据库的名字和要导入的数据库 下一…...
科研 | Zotero导入无PDF的参考文献、书籍
最近在用Zotero在Word中插入参考文献的时候发现,有些没在网上找到对应的PDF版本,但也不是必须要PDF版本的参考文献或者参考书籍,如何才能不影响正常的文献排版 主要是先在网上找到对应文献,书籍,网页等的ISBN…...
【Docker】docker入门之dockerfile编写
文章目录 前言一、docker是什么?docker介绍docker指令 二、docker有什么用?三、docker怎么用?FROMMAINTAINERRUNENVWORKDIRCOPY、ADDUSEREXPOSE实例 四、docker注意事项docker容器中使用某些宿主机设备时需要额外的权限docker容器中文件内容中…...
javaee之黑马乐优商城1
问题1:整体的项目架构与技术选型 技术选型 开发环境 域名测试 如何把项目起来,以及每一个目录结构大概是什么样子 通过webpack去启动了有个项目,这里还是热部署,文件改动,内容就会改动 Dev这个命令会生成一个本地循环…...
滴滴前端一面面经(已挂)
面试过程 前段时间面试了滴滴的前端实习岗位,大厂的面试机会很难得,复习了很多前端知识。 拿到面试机会,是在地铁上投递了boss,当时hr看了我的简历就和我约了第二天的面试。电脑也没带,晚上就用手机复习了前端的一些…...
靠谱的适合上班族做的副业,这几种一定要试试!
作为上班族,我们的时间常常被工作和日常生活所占据,很少有机会去追求自己的兴趣和创造额外的收入来源。然而,副业是一种理想的选择,可以帮助我们实现多样化的发展,并在经济上取得一定的突破。正如书中所言:…...
VSCode连接服务器
Pycharm连接服务器参考我的另一篇文章Pycharm远程连接服务器_pycharm进入服务器虚拟环境终端_Jumbo星的博客-CSDN博客 本质上Pycharm和VSCode都只是IDE,没有什么好坏之分。但是因为Pycharm连接服务器(准确来说是部署)需要买professional。而…...
Python爬虫网络安全:优劣势和适用范围分析
各位Python程序猿大佬们!在当今数字化时代,网络安全是至关重要的。保护你的网络通信安全对于个人和组织来说都是非常重要的任务。在本文中,我将与你一起探讨Python网络安全编程中的代理、虚拟专用网络和TLS这三个关键概念,分析它们…...
swift APP缓存
这里的APP缓存是指Cache文件夹里的内容,iOS系统从iOS 10开始就支持系统自动清理功能了。 建议重要的内容不要放到 Cache文件夹中。 一、获取缓存 /// 获取缓存大小public static func getCacheSize() -> String {let folderPath NSSearchPathForDirectoriesIn…...
Linux中的dpkg指令(dpkg -l | grep XXX等)
dpkg是Debian包管理系统中的一个工具,用于在Linux系统中安装、升级、删除和管理软件包。它是Debian、Ubuntu以及基于它们的发行版中的包管理器。 dpkg 有很多用法,常用之举例:dpkg -l | grep apt 显示系统中安装的与apt相关(命名)…...
import type {} from ‘module‘ 具体解释
import type { AxiosInstance, AxiosRequestConfig } from axiosimport type { RequestConfig, RequestInterceptors } from ./typesimport type {} from module 是 TypeScript 中的一种导入语法,用于导入类型声明而不导入具体的值,它告诉 TypeScript 编…...
十年JAVA搬砖路——数据结构线性结构
线性结构 线性表是一种数据结构,用于存储一组有序的数据元素。它的特点是数据元素之间存在一对一的关系,每个元素只有一个前驱和一个后继(除了第一个元素和最后一个元素)。线性表可以用数组或链表来实现。 数据是指事物的符号表…...
vscode里如何用git
打开vs终端执行如下: 1 初始化 Git 仓库(如果尚未初始化) git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
通过Wrangler CLI在worker中创建数据库和表
官方使用文档:Getting started Cloudflare D1 docs 创建数据库 在命令行中执行完成之后,会在本地和远程创建数据库: npx wranglerlatest d1 create prod-d1-tutorial 在cf中就可以看到数据库: 现在,您的Cloudfla…...
如何在看板中体现优先级变化
在看板中有效体现优先级变化的关键措施包括:采用颜色或标签标识优先级、设置任务排序规则、使用独立的优先级列或泳道、结合自动化规则同步优先级变化、建立定期的优先级审查流程。其中,设置任务排序规则尤其重要,因为它让看板视觉上直观地体…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
css的定位(position)详解:相对定位 绝对定位 固定定位
在 CSS 中,元素的定位通过 position 属性控制,共有 5 种定位模式:static(静态定位)、relative(相对定位)、absolute(绝对定位)、fixed(固定定位)和…...
大模型多显卡多服务器并行计算方法与实践指南
一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...
OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...
R语言速释制剂QBD解决方案之三
本文是《Quality by Design for ANDAs: An Example for Immediate-Release Dosage Forms》第一个处方的R语言解决方案。 第一个处方研究评估原料药粒径分布、MCC/Lactose比例、崩解剂用量对制剂CQAs的影响。 第二处方研究用于理解颗粒外加硬脂酸镁和滑石粉对片剂质量和可生产…...
GruntJS-前端自动化任务运行器从入门到实战
Grunt 完全指南:从入门到实战 一、Grunt 是什么? Grunt是一个基于 Node.js 的前端自动化任务运行器,主要用于自动化执行项目开发中重复性高的任务,例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...
