基于单片机的学生视力保护仪

news2025/7/27 21:43:02

目录
摘 要 1
ABSTRACT 2
第一章 绪论 4
1.1课题的选题背景 4
1.2国内外发展现状 5
1.3本论文主要研究内容 6
1.3.1主要内容 6
1.3.2基本要求 7
第二章 学生视力保护仪总系统设计 8
2.1系统总框图 8
2.2单片机的选择 8
2.3传感器的选择 9
2.4编程语言的选择 9
第三章 系统硬件电路的设计 11
3.1系统硬件总电路构成 11
3.2单片机系统 11
3.2.1单片机引脚介绍 12
3.2.2单片机最小系统 16
3.3显示系统 17
3.3.1 LED提示电路 17
3.3.2数码管显示 18
3.4蜂鸣器报警电路 19
3.5按键电路 20
3.6光敏模块电路 22
3.7测距电路 23
第四章 系统软件程序的设计 25
4.1Keil C51软件平台 25
4.2程序的模块化划分 26
第五章 结论及展望 28
参考文献 29
附录 A 31
附录 B 32
致 谢 38
1.3本论文主要研究内容
1.3.1主要内容
以51单片机为核心处理器、LM393电压比较器、光敏电阻、数码管等构成一款智能视力保护仪设计。鉴于单片机芯片的智能处理功能本设计采用理论计算和实验验证的方法相结合的以单片机芯片为核心的主体电路。首先是对各单元电路进行设计,并选择合适的元器件。在选择元器件时,要注意所选芯片的性价比,对于电阻、电容等常用元件要先进行参数计算后再选择。其次是设计整个电路,其中单片机芯片选用较为普遍的stc89c51型,红外测距选用利用光电反射累的,红外测距尾部有个电位器可以调节感应距离(0~80cm),当距离小于调节设定的距离时小灯快速闪烁同时蜂鸣器响提示,当光线过强或过弱时,也会提示;数码管显示时间,当时间到45分钟时,数码管和小灯闪烁,蜂鸣器滴滴提示,此时按下按键即可休息,防止过度伤身;当休息回来时,再按下按键此时系统又重新开始工作。设计利用红外测距传感器实在对距离的测量,比超声波测距更加可靠准确、健康安全。
1.3.2基本要求
1.当使用者脸部与桌面或电脑等之间的距离小于25CM(距离可以适当调整)时,电路将发出声光提示;
2.当使用时间达到45分钟时,电路自动发出声音提示,数码管闪烁,提醒使用者注意休息;
3.当读写环境光线照度不足或过强时,电路将发出声光提示;
4.感应环境光线的范围是可以调节的,实现智能化;
5.电路可靠,设计小巧省电,并且能够实现相应的功能。
真正帮助学生做到国家教委规定:学生在读写时,应在一定亮度下,眼离读物一尺,身离书桌一拳,时间不超过45分钟。

第二章 学生视力保护仪总系统设计
2.1系统总框图
硬件主要以STC89C51型单片机为核心,功能电路主要包括传感器辅助坐直报警电路、光线报警电路、定时报警电路以及蜂鸣器报警电路等核心电路。利用C语言进行编程。本设计的系统总框图如图2-1所示。
在这里插入图片描述

图2-1 系统总体框图
2.2单片机的选择
从控制系统的大小和复杂度出发,必须考虑单片机的基本参数和增强功能。前者往往需要考虑芯片的速度,ROM容量,I/O引脚数量和工作电压(1.8V/3V/5V)等,后者则包括是否拥有看门狗,双指针,双串口,实时时钟,CAN接口,SPI接口,USB接口等附加模块。本设计中受控对象只有超声波、声光报警,复杂度低,采用低端的通用的单片机芯片就能够满足要求。
从容易学习掌握的角度出发,要求所选单片机支持简单易学的编程语言,并且拥有软件支持的良好编程环境。同时还应当有丰富的资料支持,包括详尽的芯片说明书,应用指南,设计方案,范例程序等。
从工作可靠性的角度出发,要求所选芯片有较宽工作温度范围,较低的功耗和一定的抗干扰能力。按适用的工作温度分,常用单片机芯片可分为商用级、工业级、军品级,这里选择一般的商用机即可。在功耗和抗干扰方面,本控制系统的要求都不高,一般的单片机芯片都能满足要求。
综上所述,本系统选择STC89C51单片机作为主控芯片。足够本设计运行,且价格便宜,下载程序方便。
2.3传感器的选择
在测距模块中,常用超声波测距,它的原理是利用超声波的发射与接收,根据超声波传播的时间来计算出传播距离。实用的测距方法有两种,一种是在被测距的两端,一端发射,另一端接受的直接波方式,适用于身高计;一种是发射波被物体发射回来后接收的反射波方式,适用与测距仪。本设计主要是测距要选用得体,要准确无误,通过查阅资料感觉利用超声波测距的设计较多,但是稳定性不是很好,所以决定采用光电式测距传感器,主要应用在生产加工等精密场合,稳定性极高。所以本设计选用光电式红外测距传感器。
在感光模块中,采用光敏电阻与LM393构成的电压比较器来构成感光模块的主要部分。通过对电压的采集,来实现智能化。
2.4编程语言的选择
对于指令系统兼容MCS51系列的单片机,其较为常用的编程语言有C和汇编语言。
C语言是一种结构化编程语言,可产生压缩代码。C语言在硬件结构上仅要求对单片机存储器等硬件结构有初步了解,寄存器分配,不同存储器寻址及数据类型等细节可由编译器管理。C语言程序本身并不依赖于机器硬件系统,基本上不做修改就可以在不同种类的单片机之间相互移植。程序可划分为不同函数,结构规范,可读性强。C语言提供的库包含许多标准子程序,具有很强的数据处理能力。C语言作为一种方便、容易掌握的语言得到了广泛的应用,是目前单片机编程中应用最多的语言之一。
汇编语言同样在单片机编程中得到了广泛的应用,其具有简单实用,控制灵活,实时性强,程序效率高等特点。汇编语言有着极强的硬件控制能力,用其它的高级语言所无法控制的软硬件细节,在汇编语言中都可以实现,但是编程复杂。
综合考虑,软件的设计语言选择C语言。

#include<reg52.h>
#include<intrins.h>
#include<absacc.h>		//头文件

#define uc unsigned char
#define ui unsigned int

sbit HW=P2^2;	//红外感应
sbit BJS=P2^1;	//报警声音
sbit BJG=P2^7;	//报警光/指示灯/秒灯  
sbit key=P2^0;	//按键
sbit GQ=P2^4;	//光线强感应
sbit GR=P2^6;	//光线弱感应

bit bdata flag,flag1;

uc sec,min;

uc code tab[]={0x5F,0x44,0x9D,0xD5,0xC6,0xD3,0xDB,0x45,0xDF,0xD7};	//gcpdebfa
																	//11010111
void delay(ui x)
{
	ui i,j;
	for(i=0;i<x;i++)
	for(j=0;j<110;j++);
}

void work()//工作函数
{
	if(flag1==0)
	{
		if(HW==0||GQ==1||GR==1)//红外、强、弱
		{
			delay(20);
			if(HW==0||GQ==1||GR==1)
			{
				flag=1;
			}
		}
		else
		flag=0;
		if(key==0)
		{
			delay(20);
			if(key==0)
			{
				TR0=1;
				BJG=0;
			}
			while(key==0);
			BJG=1;
		}
	}
	else if(flag1==1)
	{
		TR0=0;
		if(key==0)
			while(key==0);
			BJG=1;
		}
	}
}

void display()
{
	if(BJS==1)
	{
		P0=0x00;
		P1=0xfe;
		P0=tab[min/10];
		delay(5);
		P0=0x00;
		P1=0xfd;
		P0=tab[min%10];
		delay(5);
		P0=0x00;
		P0=0x20;//小数点
		P1=0xfd;
		delay(5);
		P0=0x00;
		P1=0xfb;
		P0=tab[sec/10];
		delay(5);
		P0=0x00;
		P1=0xf7;
		P0=tab[sec%10];
		delay(5);
		P0=0x00;
	}
	else
	{
		P1=0xff;
	}
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

CentOS 7 源码制作ngnx-1.22.1-ipv6 rpm —— 筑梦之路

源码包&#xff1a;http://nginx.org/packages/centos/7/SRPMS/nginx-1.22.1-1.el7.ngx.src.rpm # 安装依赖包yum install http://mirror.centos.org/centos/7/os/x86_64/Packages/pcre2-devel-10.23-2.el7.x86_64.rpm# 安装源码包 初始化项目rpm -ivh nginx-1.22.1-1.el7.ngx…

5G无线技术基础自学系列 | 物理下行控制信道

素材来源&#xff1a;《5G无线网络优化实践》 一边学习一边整理内容&#xff0c;并与大家分享&#xff0c;侵权即删&#xff0c;谢谢支持&#xff01; 附上汇总贴&#xff1a;5G无线技术基础自学系列 | 汇总_COCOgsta的博客-CSDN博客 2.4.1 PDCCH位置定义 在LTE中&#xff0…

ESP32的AP模式使用

WifiClient 和WebServe有啥区别? (14 封私信 / 1 条消息) httpclient 和webservice有啥区别? - 知乎 (zhihu.com) 1.Webservice两大核心&#xff1a;soap&#xff08;理解为要传输的数据&#xff09;、wsdl&#xff08;理解为传输数据xml的说明&#xff09; soap xml ht…

Java类变量和类方法(static)

文章目录类变量-提出问题类变量内存布局如何定义类变量如何访问类变量类变量使用细节类方法介绍类变量-提出问题 提出问题的主要目的就是让大家思考解决之道&#xff0c;从而引出我要讲的知识点. 说:有一群小孩在玩堆雪人,不时有新的小孩加入&#xff0c;请问如何知道现在共有…

客服系统Golang源码

客服系统 概述 采用Golang语言&#xff0c;基于 gRPC [Mongo Vue3WebsocketRabbitMQ]来实现系统 用户侧逻辑采用匿名注册模式&#xff0c;Token采用JWT技术&#xff0c;服务端不保存Token信息&#xff0c;用户每次使用检测Token合法时返回新的Token来达到续期的目的 后端分…

kubernetes集群基于kubeadm部署以及常见问题解决

文章目录集群类型主机规划环境初始化检查操作系统版本关闭防火墙设置主机名主机名解析时间同步关闭 SELinux关闭 swap 分区将桥接的IPv4流量传递到iptables的链开启ipvs安装容器运行时&#xff08;Docker&#xff09;卸载Docker旧版本&#xff1a;安装 gcc 相关安装Docker设置阿…

Vivado_AXI Quad SPI_IP核

填一下前面的坑。 介绍关于Vivado中AXI Quad SPI v3.2的使用方法。 参考资料&#xff1a;pg153-axi-quad-spi.pdf&#xff0c;可自行在官网下载。 以该IP核的Standard SPI Mode的使用为例。 Address Space OffsetRegister NameAccess TypeDefault Value (hex)Description40hS…

【JavaSE】抽象类

前言&#xff1a; 作者简介&#xff1a;爱吃大白菜1132 人生格言:纸上得来终觉浅&#xff0c;绝知此事要躬行 如果文章知识点有错误的地方不吝赐教&#xff0c;和大家一起学习&#xff0c;一起进步&#xff01; 如果觉得博主文章还不错的话&#xff0c;希望三连支持&#xff01…

知物由学 | 弹幕蜂拥而入,智能审核平台如何用技术破局?

导读&#xff1a;弹幕的出现增加了视频观看者的深度参与感&#xff0c;弹幕也逐渐成为国内各大视频网站最基本的评论交互形式&#xff0c;本文将通过网易易盾在弹幕实现原理及交互方式方面的实践&#xff0c;具体介绍弹幕相较于传统聊天室的区别与实践经验&#xff0c;希望能为…

【检索资讯】2022年控制理论与应用国际会议(ICOCAT 2022)已成功被EI检索

ICOCTA 2022&#xff08;www.icocta.org&#xff09; 2022年控制理论与应用国际会议&#xff08;ICOCAT 2022&#xff09;已成功被EI&#xff0c;Scopus检索&#xff0c;作者可自行登录EI数据库查询检索&#xff0c; ICOCTA 2023会议预告 重要信息 会议官网&#xff1a;www.i…

新品速看丨创新微MinewSemi正式推出GNSS高精度卫星定位导航模块

致力于GNSS、蓝牙、Wi-Fi、LoRa、UWB等物联网无线模块研究的一站式供应商——创新微MinewSemi近日推出了数款基于多种卫星导航授时、多星多频、具有低功耗、高灵敏度、抗干扰、高性能的工业级GNSS高精度定位模块。 此次推出的GNSS模块各有特点&#xff0c;满足用户不同需求&…

【LeetCode】用队列实现栈和用栈实现队列(C语言)

目录 1.用队列实现栈 增删 求栈顶元素 判断栈为空 2.用栈实现队列 增删 返回队列开头的数据 判断队列为空 尾言 源码 队列实现栈 栈实现队列 刚讲完栈和队列&#xff0c;LeetCode上有两题栈与队列的互相实现&#xff0c;简单地讲讲思路和实现吧。 1.用队列实现栈 原题地址&am…

婴幼儿蛋白质过敏怎么回事

很多孩子吃了含蛋白质的食物后会出现瘙痒或痱子等过敏症状&#xff0c;甚至全身发红。这是因为一些过敏体质的孩子儿童会对蛋白质过敏。婴儿蛋白质过敏会导致一些严重的问题&#xff0c;那么当婴儿蛋白质过敏发生时&#xff0c;该怎么以下是一个详细的介绍&#xff01;目录蛋白…

[Spring Boot]08 IDEA接入MyBatisCodeHelper代码自动生成器

目录前言一、插件市场安装插件二、使用插件自动生成代码前言 上次介绍了&#xff0c;原生mybatis的方法&#xff1a; 06 Spring Boot接入mybatis通用mapper插件自动生成器。 这次&#xff0c;再介绍下插件MyBatisCodeHelper-Pro的用法&#xff0c;使用此方法更加简单和方便。 …

老照片修复工具哪个好?这几个修复软件你快看看

相信我们很多小伙伴的爷爷奶奶家里都会有很多老照片&#xff0c;这些照片由于年代久远&#xff0c;或多或少都会有些损坏&#xff0c;不是泛黄就是有些褶皱&#xff0c;如果我们想将照片进行流传下去&#xff0c;肯定就是将其修复并重新洗出来啦。要是不想出门找专业的摄影师修…

Spring Boot 整合 MyBatis Plus实现多数据源的两种方式

第一种&#xff1a;使用配置类的方式&#xff1a; 项目结构 xml依赖&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-ins…

hadoop 3.3大数据集群搭建系列3-安装Hive

文章目录一. 下载hive二. 解压三. 添加Hive核心配置&#xff0c;选择远程MySQL模式四. 下载连接MySQL的驱动包到hive的lib目录下五. MySQL下创建hive数据库六. 执行Hive的初始化工作七. 验证初始化是否成功八. 使用hive参考:一. 下载hive cd /home/software wget https://mirr…

简单搭建redis哨兵集群

文章目录简单搭建redis哨兵集群配置参数说明配置部署哨兵集群检查哨兵状态其他配置踩坑记录简单搭建redis哨兵集群 配置参数说明 sentinel monitor mymaster 10.0.0.4 6379 指定对一个 master 的监控&#xff0c;给监控的 master 指定的一个名称。 sentinel down-after-mill…

Ubuntu配置NFS服务器(Linux挂载Linux)

Ubuntu配置NFS服务器 服务器端的配置 Ubuntu安装NFS服务器端 sudo apt-get install nfs-kernel-server服务端查看版本 nfsstat -s在桌面上创建共享目录 mkdir share修改/etc/export配置文件&#xff0c;在后面添加如下语句 /home/xxx/桌面/share *(rw,sync,no_root_squas…

Java异常处理机制

文章目录异常的概念引入的小例子基本概念异常体系图常见异常分类常见的运行时异常编译异常异常处理try-catch-finallythrows小练习自定义异常自定义异常的步骤throw与throws练习题异常的概念 引入的小例子 public class Exception01 {public static void main(String[] args)…