基于单片机的视力保护及身姿矫正器设计


第一章、产品开发背景

1.1引言

1.2研究背景与意义

第二章 、产品的功能

2.2、具体设计

第三章 、硬件设计

3.1、主电路的组成

3.2、单片机最小系统电路

3.3、超声波检测电路

3.4、光线检测电路

3.5、显示电路

3.6、报警电路

3.7、其他辅助电路

第四章、软件设计

4.1、程序框图

第五章 、产品的制作、组装、调试

5.1、元器件的购买

5.2、产品制作步骤

5.3、电路的调试

5.4、程序的烧录

第六章、结 论

基于单片机的视力保护及身姿矫正设计 

摘  要

近年来,我国青少年近视率大大增加。对此本文提出了一种以单片机为核心的视力保护及身姿乔正器设计。 本文利用大学三年课堂中所学习的的一些理论知识和实训课中所学到的实践能力,以STC89C52单片机为核心元器件,围绕它进行硬件电路设计和软件程序设计。其中硬件电路有,整体电路的核心单片机最小系统电路、用来检测书写距离的超声波检测电路、用来检测学习时光线强弱的光线检测电路、用来作为显示设备的LCD1602液晶显示电路、以及用来作为提醒报警的蜂鸣器LED提醒电路。软件程序方面,本设计主要利用单片机C语言作为软件语言,其中比较主要的有超声波模块驱动程序、定时报警程序、LCD1602液晶屏驱动程序等。本设计以我们大学三年所学的单片机原理与接口技术、C语言程序设计、数字电子技术、模拟电子技术等课堂里的知识和我自学的传感器等知识为主要理论依据,具体就多功能视力保护器的理论与硬件设计进行了研究。


关键词:单片机原理与接口技术;传感器技术;C语言程序设计;数字电子技术

第一章、产品开发背景


1.1引言  

眼睛是心灵的窗户,一个良好的视力是每一个人所希望拥有的,但是根据我国最新的统计显示,我国青少年近视率居世界之首,在青少年近视群体中,高中生的近视检出率最高,达72.8%。小学生、初中生近视率分别为39.05%和64.3%,分别比十年前提高25.7%和26.86%。而在最近回收的网络问卷“你觉得造成你眼睛近视的主要原因是什么”选项中,选择“写字看书姿势不正确的”占了最大的比列52.4%。由此可以看出,中国学生视力低下的状况十分严重,而写字看书姿势不正确和看书写作业的时间太长是导致中小学生近视的主要原因。


1.2研究背景与意义 

大部分中小学生,由于学生缺乏自觉意识,家长和老师又不能时时守在身边加以提醒,不良的阅读写字习惯一旦养成就很难改掉,日复一日的恶性循环使许多学生过早的架上眼镜,不仅在生活上很不方便,在孩子的心理上也会留下深刻的阴影。同时中小学生时代是孩子身体成长的旺盛时期,坐姿和读写姿势不正确,会影响到孩子骨骼的健康成长,很容易引起脊椎弯曲或侧弯变,造成含胸驼背,不仅影响形象,并且在以后的招飞、参军,以及很多要求形象的工作上面都大大吃亏,对孩子的前途影响甚远。


通过对现有产品的调查,市场上的视力坐姿矫正器主要机械平衡式坐姿矫正器,列如电子平衡式防瞌睡报警器、背背佳、利资坐姿乔正器、支架式坐姿矫正器等等。这些产品主要是通过力的作用,将身资强行纠正。因此自身存在着很大的局限性。列如,对身体有很大的负担,会造成呼吸不畅,身体紧绷长时间得不到放松等等。而且还会让人产生厌倦的心理,一旦不使用,读书学习的姿势又会变得原来那样,不能让人养成一个良好的学习习惯。


本产品是以人机交互和以人为本的理念,将电子学、物理学、人体工程学相结合的智能调控设备。本产品能够随时提醒读写者,端正坐姿,挺直腰背,养成良好的读写习惯,提高学习效率,有效防止驼背、脊椎弯曲以及近视等身理疾病,有效的保护学生的身心健康。


第二章、产品的功能


  2.1、预计功能

本产品叫做视力保护及身姿乔正器,它主要的功能就是保护使用者的视力和纠正使用者不正确的学习姿势,帮助学生做到国家教委规定:学生在读写时,应在合适的亮度下,眼离读物一尺,身离书桌一拳。保护青少年的身心健康。


2.2、具体设计

(1)当使用者脸部与桌面之间的距离小于30CM时,电路将发出声音提示; 

(2)当读写环境光线照度不足时,电路将发出声音提示; 

(3)当使用时间达到45分钟时,电路自动发出提示,提醒使用者注意休息; 

(4)电路测光报警的灵敏度可调;

(5)电路可靠,做出实物能够实现相应的功能。


第三章、硬件设计

 3.1、主电路的组成


   其中硬件电路有,整体电路的核心单片机最小系统电路、用来检测书写距离的超声波检测电路、用来检测学习时光线强弱的光线检测电路、用来作为显示设备的LCD1602液晶显示电路、以及用来作为提醒报警的蜂鸣器LED提醒电路,还有给电路供电的电源电路。


 3.2、单片机最小系统电路

  单片机最小系统是整个设计的核心,可称之为大脑,或者心脏,其中又细分为单片机、复位电路、晶振电路。


  本产品使用的是STC89C52单片机,这款单片机有4组32个io口,一个8位数据总线接口,一个串口,一个外部中断输入,功能上完全满足本产品的设计要求,并且价格较低,通用性强。


复位电路使用的是手动按键复位,由一个按键和一个10uf的电解电容及一个10k的色环电阻并联接到单片机的RST脚上。用来使电路恢复到起始状态。


晶振电路,由一个12.000hz的晶体振荡器,两个20pf的瓷片电容组成,与单片机的XTAL1、XTAL2两个引脚连接。用来给单片机提供稳定的时钟信号,使单片机的每一条指令都能够严格按照机器周期来执行。

 

图 1 单片机主控电路

3.3、超声波检测电路

  本产品的超声波检测电路主要由一个是HC-SR04超声波测距模块构成。HC-SR04超声波测距模块可提供2cm-400cm的非接触式距离感测功能,测距精度高达3mm;模块包括超声波发射器,接受器与控制电路。模块有四个引脚,VCC接5v电源,GND接地线,Trig口输出触发控制信号接单片机的P3.2脚,Echo口输入回响信号接单片机的P3.3脚。


  超声波是一种在弹性介质中的机械振荡,其频率超过20KHz,分横向振荡和纵向振荡两种,超声波可以在气体、液体及固体中传播,其传播速度不同。它有折射和反射现象,且在传播过程中有衰减。波长波的传播速度是用频率乘以波长来表示。电磁波的传播速度是3×108m/s,而声波在空气中的传播速度很慢,约为344m/s (20℃时)。在这种比较低的传播速度下,波长很短,这就意味着可以获得较高的距离和方向分辨率。正是由于这种较高的分辨率特性,才使我们有可能在进行测量时获得很高的精确度。要探测某个物体是否存在,超声波就能够在该物体上得到反射。由于金属、木材、混凝土、玻璃、橡胶和纸等可以反射近乎100%的超声波,因此我们可以很容易地发现这些物体。由于布、棉花、绒毛等可以吸收超声波,因此很难利用超声波探测到它们。同时,由于不规则反射,通常可能很难探测到凹凸表面以及斜坡表面的物体,这些因素决定了超声波的理想测试环境是在空旷的场所,并且测试物体必须反射超声波。


 

图 2 超声波模块

3.4、光线检测电路

  光线检测电路由光敏电阻,2k色环电阻和JR42AH型AD转换芯片组成。光敏电阻将检测到的光线强弱的模拟量经芯片CH0脚输入芯片,通过AD转换芯片的处理变成数字量,再通过芯片CLK、DO、DI三个引脚将信息传送到单片机P15、P16两个引脚当中。当光线发生变化时,光敏电阻的阻值也就不同,然后分得的电压也不同。经过AD采集后就可以得到各种光照强度下的电压值。从而设定出理想的光线强度报警值。


 

图 3 光线检测及AD转换电路

3.5、显示电路

  LCD1602液晶显示电路,由LCD1602液晶显示屏和一个2k色环电阻组成。能够较好的显示。

图 3 液晶显示电路

 

3.6、报警电路

  报警电路由一个8550三极管,两个2k色环电阻,一个发光二极管,一个蜂鸣器组成。当光线或超声波检测异常时,发出警报。当P13脚发生变化时,报警电路发生反应。

 

图 4 报警电路

 

 

 

 3.7、其他辅助电路

  由一个塔式开关和一个电源接口组成电源电路,由三个独立按键组成控制电路。

图 5 其他辅助电路


第四章、软件设计

4.1、程序框图

本设计采用c语言编写。c语言是一种计算机程序设计语言。它既有高级语言的特点,又具有汇编语言的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。本产品主要程序都是利用C语言编写。主要有:超声波模块驱动程序、LCD1602液晶屏驱动程序、AD转换程序、定时报警程序、按键程序,延时程序等。详细程序见附录。

 


 

 

第五章、产品的制作、组装、调试


 5.1、元器件的购买

元器件清单:STC89C52单片机一个,LCD1602液晶显示屏一个,超声波检测模块一个,光敏电阻一个,AD转换芯片一个,蜂鸣器一个,LED灯一个,色环电阻五个,按键四个,开关一个,电源接口一个,晶振一个,瓷片电容两个,电解电容一个。


 5.2、产品制做步骤

5.2.1、测试元器件是否可用

买好元器件之后,按各元件的检测方法分别进行检测,将测试不正常的元器件替换,确定组装产品的元件都能够正常使用。


5.2.2、元器件的组装与焊接

    参考原理图的位置放置各个元器件,先放置、焊接较低的元件,后焊较高的和要求较高的元件。容易损坏的元件要后焊,在焊集成芯片时连续焊接时间不要超过10s,注意芯片的安装方向。有正负的元器件要判断出方向再进行焊接。


5.3、电路的调试

将电路组装、焊接好之后,利用万用表测试具体回路是否导通,是否有短路的地方,将异常线路的问题找出来,重新焊接,将问题解决。确定所有电路都已经正常之后,给电路上电,再测量供电是否正常,如有异常再进行修改。

5.4、程序的烧录

本产品为了程序烧录的方便,专门留了一个下载器接口。首先将程序下载器与产品下载接口连接好,利用STC-isp软件将程序下载到单片机中。然后测试液晶显示,显示正常。说明显示部分无误。然后加入超声波测距程序,调节超声波的灵敏度使达到理想效果。在调试程序时,发现有的指令用的不正确,导致电路功能不能完全实现,另外软件程序中的延时有的过长、有的过短。类似的现象还有很多就不一一列举了。

第六章 实物展示


 

图 6 产品正面

 

图 7 产品背面

 

  

图 8 产品侧面(一)

图 9 产品侧面(二)

 

第七章、结   论

本次毕业设计硬件上完成了一个STC89C52单片机的视力保护器的设计,并在此平台上用单片机C语言进行软件设计,经过测试,基本满足设计目标,可以完成各项基本功能。本系统开发空间大,使用灵活,便于用户扩展功能。当然,由于时间关系,本次设计的系统也有某些不太完善的地方,有待进一步改善。


本文探索并实现了多功能视力保护器设计的完整过程。,该系统具有很高的使用价值,很好地达到了设计的目的;


本文创新点:

1.发展了利用单片机设计视力保护器的思想,增加了单片机在现实生活中的应用。利用光敏电阻电路检测光照,通过超声波传感器辅助帮组学生坐直进而校正其视力,简单方便且不会产生系统稳定性方面的问题。

2.尽可能发挥系统优势,可以方便向其他功能扩展,也就是利用平台优势可以衍生更多功能。

参考文献

[1] 曹天汉 《单片机原理与接口技术》电子工业出版社 33-35

[2] 唐文彦 《传感器》机械工业出版社 45-47

[3] 张金锋  金欢阳名《传感器及其应用》西安电子科技大学出版社 32-35

[4] 吴金戌  沈庆阳《8051单片机实践与应用》清华大学出版社 48-49

[5] 王东峰 《单片机C语言应用100例》电子工业出版社 78-80

[6] 谭浩强 《C语言程序设计》清华大学出版社 137-139

[7] 康华光 《电子技术基础》 高等教育出版社 234-236

[8] 赵  健 《实用声光电及无线电遥控电路300例》中国电力出版社 23-24

的软件,使得单片机开发人员可以通过单片机仿真器输入和修改程序,观察程序运行结果与中间值,同时对与单片机配套的硬件进行检测与观察,可以大大提高单片机的

[9] 高  静 《怎样用万用电表检测电子元器件修订本》人民邮电出版社    34-35

[10] 王新贤 《通用集成电路速查手册第二版》 山东科学技术出版社 56-57

[11] 王玉凤《51单片机应用从零开始》清华大学出版社 89-90

[12] 胡汉才《单片机原理及系统设计》清华大学出版社 8-14 

[13] 马忠梅《单片机的C语言应用程序设计》北京航空航天大学出版社  53-58. 

[14] 康华光《电子技术基础(数字部分)》高等教育出版社23-26

[15] 赵战民《液晶屏显示方法的比较》 科技信息 70-71

[16] 熊再荣、雷建龙、李汉玲《液晶与显示》257-259

[17] 伍冯洁、谢陈跃、谢斌 Proteus与Keil在单片机开放性实验中的应 用100-107.

[18] 《全国大学生电子设计竞赛获奖作品选编》北京理工大学出版 34-36


/************************************************************************************************************/

超声波程序

/*********************超声波测距程序*****************************/

void send_wave()

{

c_send = 1;             //10us的高电平触发 

delay();

c_send = 0;  

TH0 = 0;            //给定时器0清零

TL0 = 0;

TR0 = 0;      //关定时器0定时

while(!c_recive);    //当c_recive为零时等待

while(c_recive)        //当c_recive为1计数并等待

{

flag_time0 = TH0 * 256 + TL0;

if((flag_time0 > 40000))      //当超声波超过测量范围时,显示3个888

{

TR0 = 0;

flag_csb_juli = 2;

distance = 888;

break ;  

}

else 

{

flag_csb_juli = 1;

}

}

if(flag_csb_juli == 1)

{

TR0=0;        //关定时器0定时

distance =flag_time0;    //读出定时器0的时间

distance *= 0.017;               // 0.017 = 340M / 2 = 170M = 0.017M 算出来是米

if((distance > 500))     //距离 = 速度 * 时间

{

distance = 888;     //如果大于3.8m就超出超声波的量程 }}}

液晶显示程序

/********************************************************************

* 名称 : write_data(uchar dat)

* 功能 : 1602写数据函数

* 输入 : 需要写入1602的数据

* 输出 : 无

***********************************************************************/

void write_data(uchar dat)

{

e=0;

rs=1;

rw=0;

P0=dat;

delay_uint(3);

e=1;

delay_uint(25);

e=0;

}

 

/***********************lcd1602上显示两位十进制数************************/

void write_sfm2(uchar hang,uchar add,uchar date)

{

if(hang==1)   

write_com(0x80+add);

else

write_com(0x80+0x40+add);    

write_data(0x30+date/10%10);

write_data(0x30+date%10);

}

 

/***********************lcd1602上显示超声波距离************************/

void write_sfm_csb(uchar hang,uchar add,uint date)

{

if(hang==1)   

write_com(0x80+add);

else

write_com(0x80+0x40+add);    

write_data(0x30+date/100%10);

write_data('.');

write_data(0x30+date/10%10);

write_data(0x30+date%10);

}

/********************************************************************

* 名称 : init_1602()

* 功能 : 1602初始化,请参考1602的资料

* 输入 : 无

* 输出 : 无

***********************************************************************/

void init_1602()

{

write_com(0x38); //

write_com(0x0c);

write_com(0x06);

}

 

/********************************************************************

* 名称 : write_string(uchar hang,uchar lie,uchar *p)

* 功能 : 改变液晶中某位的值,如果要让第一行,第五个字符开始显示"ab cd ef" ,调用该函数如下

   write_string(1,5,"ab cd ef;")

* 输入 : 行,列,需要输入1602的数据

* 输出 : 无

***********************************************************************/

void write_string(uchar hang,uchar add,uchar *p)

{

if(hang==1)   

write_com(0x80+add);

else

write_com(0x80+0x40+add);

while(1)               

{

if(*p == '\0')  break;

write_data(*p);

p++;

}

uchar key_can;

> > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > >

一般会这么自我介绍:中年肥宅,单片机死忠粉16年,玩了7年单片机后把自己玩进了单片机公司(NXP)。喜欢看到科技改变世界,一直深埋着对人工智能的敬畏之心。虽然在两年前还不敢想象人工智能与单片机结合,但是在几次灵魂拷问的邂逅下,终于鼓起勇气从萌新开始学用,和难兄难弟们一路开荒至今。到时候我们一起好好跟他交流单片机上的AI玩法,然后进行有奖问答(奖品由DF社区赞助)。

生成海报
点赞 0

Abin

我还没有学会写个人说明!

相关推荐

INA226使用之程序与模块测试

笔者最近有个项目需要测量电流参数,于是买来INA226模块测试一下。 应用电路 首先测试使用的INA226模块如下图所示。 INA226模块原理图如下图所示。 官方手册的参考电路如下图所示。 结合上述图片以及数据手册&#xf