毕业设计 基于51单片机智能手环的设计


🔥 毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。
为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天要分享的是:基于51单片机智能手环的设计

第1章  硬件设计实现

本章通过前期系统方案的论证确定了基本需要实现的功能以及需要用到的功能模块,以此进行基础的硬件设计,首先总体确定整个电路的设计并确定框图,之后再通过输入与输出分别对不同功能模块进行电路设计,

1.1硬件总体电路

通过对功能模块的选择,确定了51单片机最小系统模块、MPU6050陀螺仪模块、LCD1602液晶显示模块、Pulse Sensor脉搏检测模块、DS18B20体温监测模块、蜂鸣器模块、按键模块。现将这些模块通过软件绘制成简单框图如下:

图1-1 完整设计框图

通过上述的硬件结构,预期在硬件方面实现以下几个功能:

l数据处理:51单片机最小系统处理物理量信息得到我们熟悉的模拟信息。

l心率数据采集:通过红外技术将人体心率的变化采集回来。

l温度数据采集:通过温度传感器阻值随温度的变化而变化,获得相关数据。

l步数信息采集:通过陀螺仪三轴重力传感器的电压变化而采集到相关数据。

l按键效果:通过四个按键并联的形式,当按键按下触发对应功能。

l报警模块:最小系统监控阈值和采集数据的大小,当出现异常便触发报警。

1.2单片机最小系统设计

整个系统最为核心的控制部分是由STC89C52芯片、电源电路、复位电路和晶振时钟电路组成的51单片机最小系统。

l时钟电路中:接入XTAL1(19引脚):内部晶振电路输入端口

            接入XTAL2(18引脚):内部晶振电路输出端口

l复位电路中:接入RST(9引脚):单片机的复位引脚。

l电源电路中:接入VCC(31引脚):EA(Vpp)电源引脚。

51单片机最小系统主要依靠时钟模块的晶振得到周期性时钟信号,从而实现计时器作用,可以在一定时间内实现数据采集处理和转换。原理图如图1-2。

图1-2 单片机最小系统

(1)时钟电路

51单片机的节拍由晶体振荡器提供,而时钟电路就是晶体振荡器的角色。主控芯片的操作须在这个节拍的控制下进行。因此主控芯片是通过软件让单片机根据时钟来做相应工作。

时钟电路的正常工作是由外部时钟方式提供工作时序。本次采用了一个11.0592MHZ的晶振和两个22PF的瓷片电容器件构成了震荡电路为单片机提供时钟。51单片机的时钟电路原理图如图1-3

图1-3 时钟电路        图1-4 复位电路

(2)复位电路

51单片机的复位电路分为:手动复位方式,和上电复位。本次系统设计中,复位电路采用上电系统自动复位的方式进行系统复位。

51单片机上电复位电路由220UF电容器件和10K电阻构成。因为电容内的电压是不能突变的,所有当上电时刻电容没有充电时两端电压就为零,此时,给予复位脉冲,电源给电容充电,直至电容两端电压等于电源电压,电路进入正常工作状态。

复位电路用于控制主控芯片的状态。在系统受到干扰出现程序错误或系统死机的时候,启动复位操作,主控芯片内烧录的代码会重新执行。复位电路原理图如图1-4

1.3 输入模块电路

1.3.1 陀螺仪电路设计

人体在运动过程中,重心会随着人体的运动,在一定范围内出现规律性变化,三轴重力传感器对此敏感,随重力变化,其输出电压也会发生规律性变化。

由此可知陀螺仪的工作流程。如图3-5 MPU6050的电路由5V/3.3V电源输入。SDA,SCL连接到单片机,INT产生中断信号连接至单片机。注意到使用的主控芯片为52单片机需给SDA和SCL加上上拉电阻。

图1-5 MPU6050电路

1.3.2 体温监测电路设计

DS18B20的工作原理:

因为低温振荡器的频率随温度变化较小,而高温度振荡器频率变化明显,当低温度振荡器变化,减法计数器触发减1,当初值减到0时,温度寄存器(根据硬件特性最低-55°,所以基数为-55)加1。当高温度振荡器触发减法计数器减到0时,停止工作。此时温度寄存器内的数值就是监测到的温度值。

DS18B20无需外部电源。但需通过开漏模式连接总线,并给控制引脚加上上拉电阻。结构图如图1-6内部结构图:

图1-6 DS18B20内部结构图

DS18B20高速暂存存储器由9个字节组成,分为:

表1-1 寄存器对应表

序号

寄存器名称

作 用

序号

寄存器名称

0

温度低字节

以16位补码形式存放

4

配置寄存器

1

温度高字节

5、6、7

保留

2

高温阈值

存放温度上限

8

CRC

3

低温阈值

存放温度下限

器件断电时,EEPROM寄存器的数据将会被保留,再次上电后,数据将重新加载到对应寄存器,通过命令也可随时将数据从EEPROM重新加载到暂存器。

表1-2 温度寄存器数据格式

字节 7

字节 6

字节 5

字节 4

字节 3

字节 2

字节 1

字节 0

低字节

23

22

21

20

2-1

2-2

2-3

2-4

字节 15

字节 14

字节 13

字节 12

字节 11

字节 10

字节 9

字节 8

高字节

S

S

S

S

S

26

25

24

S = SIGN

DS18B20中数据是以16位二进制形式显示,S为符号位(正数S=0,负数S=1)。默认分辨率为12位时,寄存器中所有位都将是有效数据。

表1-3 主要指令代号表格

指令

约定代码

操作说明

温度转换

44H

启动DS18B20进行温度转换,结果存入RAM中

读暂存器

0BEH

读暂存器9字节内容

写暂存器

4EH

将数据写入暂存器的TH、TL字节

写时序:主控芯片向DS18B20写入逻辑1或0至少要60us,且两次独立的“写时隙”之间至少需lus的恢复时间。

读时序:在单片机发出读数据指命后,立刻产生读时序,先将总线拉低至少1us,DS18B20才开始向总线发送逻辑1或0。

1.3.3 心率监测电路设计

红外光源和三极管光敏设备在同一侧,红外光源的光经手指反射到感光设备。当手指组织的半透明度较大,红外光二级管发射出透过手指的光强很弱,光敏三极管无法导通,导致输出端高电平,当手指半透明度数值较小,输出端为低电平。

图1-7反射式心率检测方法工作原理

通过图3-8信号采集电路,U3为红外发射二极管和光敏三极管。二极管中电流越大,发射角越小,产生强度就越大。基于光敏三极管灵敏度,R21选择270Ω。当干扰光线较强的时,输入端电压变化大,用C8、C9串联组成双极性耦合电容隔断。

图1-8 信号采集电路

1.4 输出模块电路

1.4.1 LCD1602液晶显示电路设计

LCD1602液晶屏可以存储160种不同的字符编码,一个字符在存储器中仅有一个编码,使显示更简单。工作过程中,微机提前获取显示的点阵码,一个字符占32B。通过给予显示的X轴与Y轴(行列号)每个位置的列数就可以找到显示位置显示字符的第一个字节,光标逐渐加1送上下一位,直到32B显示完毕就完成一个字的显示。

在本次系统中,通过连接液晶屏DB0-DB7与主控芯片P0.0-P0.7;液晶屏RS、RW、EN分别与芯片P2.5、P2.6、P2.7连接。LCD1602液晶屏原理图与接线如图1-9:

图1-9 LCD1602液晶显示模块接线图

1.4.2 按键电路设计

设计采用4个独立按键串联连接完成输入操作。通过物理按压使内部接通通电。当松手就自动抬起,从而切断电路。当其中一个按下执行对应功能。按键是K1、K2、K3、K4,完成数据发送,阈值选择、阈值+1、阈值-1。

图1-10 按键电路接线图

1.4.3 蜂鸣器报警电路设计

设计中,报警信号通过有源蜂鸣器元件实现。在蜂鸣器响起的同时还带动一个达到声音报警的效果。

蜂鸣器通过8550三极管驱动,当主控芯片输出低电平时,三极管产生电流而驱动蜂鸣器发声。只有主控芯片输出下一次低电平,蜂鸣器才关闭。

LED灯通过二极管驱动,当单片机输出低电压时,LED灯点亮。当单片机下次输出高电压后,LED灯才会灭。

蜂鸣器上接口接入单片机P2.5,LED灯接口接入单片机P2.6。具体接线如图1-11

图 1-11 蜂鸣器与LED接线图

第2章  系统调试

结合前面的设计,实物的大体功能都已经基本实现。结合预期效果,智能手环可以实现较准确的检测心率、温度随人体温度变化而变化、步数按照实际行走情况统计,最后还可以比对数据与阈值的大小给予反馈。最后进行各功能的测试,观察与预期不同的效果,加以更正达到最后理想的数值。

2.1功能模块测试

2.1.1心率监测数值有误差

对实物进行调试时发现得到数值与水银测量数值存在误差,原因是红外传感器通过监测血液流动产生的透光度不同而产生非常微弱的电信号。有时候过于弱而无法发生脉冲电平触发定时器中断,导致数值不正常(如图2-1)正常情况下应该在60-100之间。因而在调试过程中通过多次修改传感器参数,使这一电信号处理得到较稳定的脉冲电平。最后得到与水银测量数据出入不大的数值。

图2-1 心率因电信号过低无法正常测量

图2-2 温度显示异常

2.1.2温度监测数据出错

初次调试时,发现温度传感器反馈数值每次都不改变(如图5-2),且数值明显不是人体温度。一开始认为是寄存器发送出现问题,于是多次修改程序。但效果不明显,数值仍然是不合理数。最后通过对电路及接口的分析,发现是没有给传感器一个上拉电阻。

2.1.3陀螺仪数值不合理跳变

运行陀螺仪程序时发现,当单片机处于倾斜状态时步数快速累加。而当平放单片机时步数却不累加。先是检测了程序代码,基本检测没有出现问题。之后是查看接口连接是否出现接口错误,但也没有出现致命失误。最后研究陀螺仪工作原理,发现是传感器阻值过小,导致其灵敏度过大。加上之前接口的小失误,最后解决了这个问题。

2.2 测试总结

2.2.1目标代码测试

本设计用的代码为C语言,在校期间学习最多的就是C语言。开发工具是用到学习过的KEIL4,不仅编写代码界面简洁,函数调用也简单,支持编译。在编译过程中经常出现参数错误、函数调用与指针问题,多次进行修正。直至编译生成目标文件(.HEX)。最后通过下载到开发板上进行调试。在这一步注意到52单片机在一次下载后需要单片机掉电,电量放光后上电(冷启动)才能进行下一次下载。同时需要为PC端安装单片机对应的驱动,再通过USB口连接才能识别到主控芯片。

最后总结整个软件程序流程为:单片机驱动安装;项目驱动程序编写;通过KEIL软件进行编译得到目标文件,下载目标文件到主控芯片。检测系统正常运行,如不满足要求则重复上面过程。

2.2.2数据反馈测试

在通过串口助手对所有收集的数据进行观察的过程中,多次遇到数据出现明显错误的情况,并回到硬件和软件进行检查。发现许多错误是不经意间犯下。在多次修正后得到如下正常的数据反馈图:

图2-1 串口助手数据反馈

在图中可以清楚看到:

第一行为初始数据,温度为室温,心率尚未检测,步数未移动

第二行进行了心率检测,仅仅心率改变了,测得此时心率为75次/分钟

 第三行进行了步数检测,仅仅改变了步数从000变化到008

 第四行进行了温度检测,用手去捂住温度传感器,测定手温度为30°。

在提高了功能模块数据的准确度以后,基于52单片机的智能手环也基本完成预期设想。

总体原理图:

如果学弟学妹们在毕设方面有任何问题,随时可以私信我咨询哦,有问必答!学长专注于单片机相关的知识,可以解决单片机设计、嵌入式系统、编程和硬件等方面的难题。
愿毕业生有力,陪迷茫着前行!

第一章.... 4 【实例1】使用累加器进行简单加法运算:... 4 【实例2】使用B寄存器进行简单乘法运算:... 4 【实例3】通过设置RS1,RS0选择工作寄存器区1:... 4 【实例4】使用数据指针DPTR访问外部数据数据存储器:... 4 【实例5】使用程序计数器PC查表:... 4 【实例6】if语句实例:... 4 【实例7】switch-case语句实例:... 4 【实例8】for语句实例:... 4 【实例9】while语句实例:... 5 【实例10】do…while语句实例:... 5 【实例11】语句形式调用实例:... 5 【实例12】表达式形式调用实例:... 5 【实例13】以函数的参数形式调用实例:... 5 【实例14】函数的声明实例:... 5 【实例15】函数递归调用的简单实例:... 5 【实例16】数组的实例:... 6 【实例17】指针的实例:... 6 【实例18】数组与指针实例:... 6 【实例19】P1口控制直流电动机实例... 6 第二章.... 8 【实例20】用74LS165实现串口扩展并行输入口... 8 【实例21】用74LS164实现串口扩展并行输出口... 10 【实例22】P0 I/O扩展并行输入口... 12 【实例23】P0 I/O扩展并行输出口... 12 【实例24】用8243扩展I/O端口... 12 【实例25】用8255A扩展I/O口... 14 【实例26】用8155扩展I/O口... 19 第三章.... 26 【实例29】与AT24系列EEPROM接口及驱动程序... 26 【实例30】EEPROM(X5045)接口及驱动程序... 30 【实例31】与铁电存储器接口及驱动程序... 33 【实例32】与双口RAM存储器接口及应用实例... 35 【实例33】与NANDFLASH(K9F5608)接口及驱动程序... 35 第四章.... 43 【实例34】独立键盘控制... 43 【实例35】矩阵式键盘控制... 44 【实例36】改进型I/O端口键盘... 46 【实例37】PS/2键盘的控制... 49 【实例38】LED显示... 53 【实例39】段数码管(HD7929)显示实例... 54 【实例40】16×2字符型液晶显示实例... 55 【实例41】点阵型液晶显示实例... 61 【实例42】LCD显示图片实例... 63 第五章.... 70 【实例43】简易电子琴的设计... 70 【实例44】基于MCS-51单片机的四路抢答器... 71 【实例45】电子调光灯的制作... 76 【实例46】数码管时钟的制作... 81 【实例47】LCD时钟的制作... 96 【实例48】 数字化语音存储与回放... 103 【实例49】电子标签设计... 112 第六章.... 120 【实例50】指纹识别模块... 121 【实例51】数字温度传感器... 121 第七章.... 124 【实例53】超声波测距... 124 【实例54】数字气压计... 125 【实例55】基于单片机的电压表设计... 132 【实例56】基于单片机的称重显示仪表设计... 133 【实例57】基于单片机的车轮测速系统... 136 第八章.... 138 【实例58】电源切换控制... 138 【实例59】步进电机控制... 140 【实例60】单片机控制自动门系统... 141 【实例61】控制微型打印机... 144 【实例62】单片机控制的EPSON微型打印头... 144 【实例63】简易智能电动车... 145 【实例64】洗衣机控制器... 149 第九章.... 152 【实例65】串行A/D转换... 152 【实例66】并行A/D转换... 153 【实例67】模拟比较器实现A/D转换... 154 【实例68】串行D/A转换... 155 【实例69】并行电压型D/A转换... 156 【实例70】并行电流型D/A转换... 156 【实例71】file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image002.gif接口的A/D转换... 157 【实例72】file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image002.gif接口的D/A转换... 161 第十章.... 164 【实例73】单片机间双机通信... 164 【实例74】单片机间多机通信方法之一... 166 【实例75】单片机间多机通信方法之二... 171 【实例76】 PC与单片机通信... 176 【实例77】红外通信接口... 178 第十一章.... 180 【实例79】单片机实现PWM信号输出... 180 【实例80】实现基于单片机的低频信号发生器... 182 【实例81】软件滤波方法... 183 【实例82】FSK信号解码接收... 186 【实例83】单片机浮点数运算实现... 187 【实例84】神经网络在单片机中的实现... 192 【实例85】信号数据的FFT变换... 194 第十二章.... 198 【实例86】file:///C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp\msohtmlclip1\01\clip_image005.gif总线接口的软件实现... 198 【实例87】SPI总线接口的软件实现... 200 【实例88】1-WIRE总线接口的软件实现... 205 【实例89】单片机外挂CAN总线接口... 207 【实例90】单片机外挂USB总线接口... 210 【实例91】单片机实现以太网接口... 214 【实例92】单片机控制GPRS传输... 221 【实例93】单片机实现TCP/IP协议... 223 第十三章.... 229 【实例94】读写U盘... 229 【实例95】非接触IC卡读写... 234 【实例96】SD卡读写... 238 【实例97】高精度实时时钟芯片的应用... 242 第十四章.... 247 【实例98】智能手机充电器设计... 247 【实例99】单片机控制门禁系统... 248
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值