基于51单片机计温手环设计与制作_第1页
基于51单片机计温手环设计与制作_第2页
基于51单片机计温手环设计与制作_第3页
基于51单片机计温手环设计与制作_第4页
基于51单片机计温手环设计与制作_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

湖南商务职业技术学院毕业设计

目录

1产品功能分析.........................................................................................................1

1.1主要功能...........................................................................................................1

2设计方案遴选.........................................................................................................1

2.1单片机的选择...............................................................................................1

2.2通讯方式的选择............................................................................................2

2.3系统框图设计..................................................................................................2

3产品硬件设计.........................................................................................................3

3.1STC89C52RC单片机核心电路设计..........................................................3

3.2按键电路设计................................................................................................3

3.3LCD1602液晶显示模块电路......................................................................4

4产品软件设计.........................................................................................................5

4.1主程序流程图..................................................................................................5

4.2LCD1602液晶显示程序设计......................................................................6

4.3下位机程序设计..............................................................................................7

5产品使用说明.........................................................................................................8

5.1产品装配图....................................................................................................8

5.2产品装配与调试............................................................................................8

5.3产品使用说明..................................................................................................8

6产品设计技术标准.................................................................................................9

7参考资料...............................................................................................................10

8附录.......................................................................................................................11

附录1元器件清单...........................................................................................11

附录2电路原理图...........................................................................................11

附录3PCB设计图..........................................................................................13

附录4产品实物图.........................................................................................14

附录5主程序代码...........................................................................................15

湖南商务职业技术学院毕业设计

基于51单片机计温手环的设计与制作

1产品功能分析

随着人们的健康意识不断加强,各类的运动手环涌现而出,在这其中无线传

感技术是一种应用十分广泛的技术,结合应用实际来说,无线传感有着方便轻盈

的特点,为了提高手环测温精准而设计出的产品,它可以完全满足运动手环的日

常使用需求。系统的核心是无线传感系统,由主控芯片,无线传感电路,按键模

块以及LCD显示模块组成,系统核心使用单片机STC89C52RC芯片,通过温度传

感器测得目标温度然后通过无线传感器发送给STC89C52RC芯片,然后通过STC

89C52RC芯片判断安全阈值距离,在安全范围中只在显示模块显示被测目标温度,

若是超过了安全阈值,蜂鸣器则报警提示,该系统拥有响应快,测量目标精度高,

可靠性强,价格实惠,使用维修方便的优点。在毕业设计过程中,我认为计温手

环是先进,具有科技含量的技术水平,同时也让我更加系统化的学习并加强了关

于这方面的知识与趣闻,加强了对单片机系统的了解。培养了自己的动手能力和

独立思考能力。

2设计方案遴选

在进行硬件电路搭建前必须得选择合适的产品的零部件,发挥器件的基本

功能。

单片机的选择

方案1:使用STM32系列单片机

STM32单片机该款产品的优缺点:STM32系列主要是为需求低成本,功耗低,

高性能的嵌入式应用设计的ARM,基本集成市场市面中工业领域的功能的STM

32,唯一美中不足的地方在于成本偏高,使用起来较为复杂,对一个学生来讲,

这两个缺点都是偏大的。

方案2:使用51系列单片

51单片机该款产品的优缺点:51单片机是属于很容易上手,并且很经典

的一款产品,软件到内部硬件都拥有整套的按位操作系统,一般可称为微处理器,

片内RAM双重功能地址区间是所拥有的功能,以及乘法和除法指令,使用极为

灵活,但是没有完美无瑕的产品以及毫无逻辑赌洞的程序,51单片机也还是有

1

湖南商务职业技术学院毕业设计

缺点的,比如AD、EEPRON之类的功能需扩展,增加了硬软件的负担,且保护芯

片能力较差,很容易烧掉芯片,综合成本、技术成熟程度以及产品功能的需求,

所以我选择了51系列的单片机。

传感器的选择

方案一:使用模拟集成的温度传感器,因为传感器是用硅半导体生产而来的。

最常见的就是AD590。它是温度电流的传感器,实现了提高系统抗干扰能力。不

足的就是依赖放大电路和模数转换电路,电路设计起来十分麻烦。

方案二:使用数字智能温度传感器,这个温度传感器包含很多的模块,比如

说模数转换器模块。广泛使用的产品就是DS18B20。DS18B20测量出来的温度是

用十六位数字量这个形式给我们展示出来的。DS18B20温度传感器无需进行AD

转换,与单片机接口连接更为简单,因此本设计选用DS18B20温度传感器。

系统框图设计

以单片机最小系统作为核心控制电路,通过DS18B20传感器检测温度并采

集温度数据传输至单片机;通过LCD1602液晶显示屏显示测量出来的温度;利用

按钮管理设置报警阈值,当温度超出设定温度范围,通过蜂鸣器和LED指示灯实

现声光报警。

图2-1系统框图

2

湖南商务职业技术学院毕业设计

3产品硬件设计

由STC89C52RC单片机组成的此系统,温度传感器,LCD1602液晶显示器,

蜂鸣器模块,按键模块,NRF24L01通信模块以及电源组成。

主要利用传感器检测到传感器收到的实际参数值,再把传感器收到的实际

参数值显示于LCD1602液晶显示器上面。

电路板上面有四个按键,一个是电源的开关按键,其余三个是:设置阈

值,其余的按键是设置键,设置+、设置-、这个设置+、设置-、只可以处于设

置模式之中才可以对它进行操作。

在处于设置模式之中时,LCD1602液晶显示器有对应显示标志,设置阈值

存储在单片机的Flash中,掉电的话,不会丢失数据,无需重新设置数据阈

值。

STC89C52RC单片机核心电路设计

STC89C52RC是一种带4K字节FLASH存储器(FPEROM—Flash

ProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8

位微处理器,俗称单片机。STC89C52RC提供以下标准功能:4k字节Flash闪

速存储器,256字节片内数据存储器(00H-7FH为片内RAM,80H-FFH为特殊功

能寄存器SFR),32个I/O口线,两个16位定时/计数器,一个5向量两级中

断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,STC89C52RC

可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式

停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工

作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作

直到下一个硬件复位。

按键电路设计

有一种电子开关—按键,实现开关接通仅需按下按键,断开连接仅需松开

按键,轻触按键内部中金属弹片受力弹动触发来实现接通断开功能,此设计

内,按键是一个系统输入,是人机交互的实现枢纽,要想实现对系统输入。按

键单片机控制引脚默认为高电平,按键按下,单片机对应引脚于是成为低电

平。

我分别设计了四个按键分别是温度加、温度减、温度设置键和复位键

3

湖南商务职业技术学院毕业设计

图3-1复位电路

图3-2按键电路

LCD1602液晶显示模块电路

工业字符型液晶之一—1602LCD显示屏,1602指显示表现可观内容是

16*2。意为显示两行,每一行有16个字符,HD44780液晶芯片是市面上字

符液晶使用最多的,基本完全一样的控制原理,所以基于HD44780写控制程

4

湖南商务职业技术学院毕业设计

序能很轻松的兼容并应用市面市场中的字符型液晶。

字段显示和字符显示两种种类是LCD1603显示器的特点,LCD显示中显

示字段,需送达对应信号与对应管脚才能显示,字符显示是根据需要显示基本

字符。本设计系统选择了字符型显示,LCD1602作为本系统中的显示模块输出

信息,相比较传统的数码管显示器,功耗低,体积小是液晶显示模块显示内容

丰富的优点。并且也不需要去多添加驱动电路,现在的主流的显示器件当属液

晶显示模块,鉴于我使用的LOD102液晶显示器就能显示可观测的2行16个

汉字。

图3-3液晶显示模块

4产品软件设计

主程序流程图

5

湖南商务职业技术学院毕业设计

发射端接收端

开始开始

初始化温按键设置温

度传感器度报警阈值

测得温判断温度数据

度数据是否超过阈值

蜂鸣器报警

发送温

度数据

显示测得温度

结束结束

图4-1主程序流程图

LCD1602液晶显示程序设计

显示屏还没有显示之前,先确定一个位置,输入想要的坐标就可以了,显示

都是一位一位显示的,从高位开始显示,字符串也是这样,不需要每个字符都定

位一次,显示屏会自动定位的。

6

湖南商务职业技术学院毕业设计

开始

定位行列坐标

显示一个字符

数据是否显示完?

结束

图4-1液晶显示流程图

产品程序清单

图4-2产品程序清单

7

湖南商务职业技术学院毕业设计

5产品使用说明

产品分为两个部分:发射端与接收端

发射端:STC89C52RC单片机,LED,电源和按键,DS18B20温度传感

器模块,NRF24L01通信模块

接收端:STC89C52RC单片机,显示屏1602,蜂鸣器和LED,电源和按

键。NRF24L01通信模块

产品装配调试

认真检查焊接的万能板,怕有漏焊,怕有虚焊,不然故障出错,十分危

险。使用万用表测量值,看看有没有错误,如果有,马上立刻处理,上电检

查,带入代码,操作一下产品,看有没有错。

图5-1产品装配图

产品使用说明

1.接上电,显示屏显示温度,传感器测量温度。2.温度超过设定阈值,就

会触发报警。3.温度过低同样也会报警4.也可以使用按键来调最高最低温度。

5.使用酒精降温。

8

湖南商务职业技术学院毕业设计

图5-2产品使用说明图

6产品设计技术标准

[1]J-STD-001E电气与电子组件的焊接要求

[2]IPC-A-610D(中文版),IPC-A-610E电子组件的可接受性要求

[3]IPC-7711/21电子组件和电路板的返工&返修

[4]GB/T11457-2006信息技术软件工程术语;

[5]GB/T8566-2007信息技术软件生存周期过程标准;

[6]GB/T8567-2006计算机软件文档编制规范。

9

湖南商务职业技术学院毕业设计

7参考资料

[1]谭浩强.C程序设计[M].北京:清华大学出版社,2005:32~34

[2]张毅刚.单片机原理及应用[M].北京:高等教育出版社,2008:45~55

[3]陈桂友,柴远斌.单片机应用技术[M].北京:机械工业出版社,2008.8:27~55

[4]秦曾煌.电工学电子技术[M].北京:高等教育出版社,2004.7:31~47

[5]熊诗波,黄长艺.机械工程测试技术基础[M].北京:机械工业出版社,2006.5:68~79

[6]李晓妮.单片机温度控制系统的设计[J].江学院学报(自然科学版),2005:81~107

[7]余瑾,姚燕.基于DS18B20测温的单片机温度控制系统[J].微计算机信息,2009(3):

17~23

[8]王梅红.基于单片机的温度控制系统设计与仿真[J].四川兵工学报,2012(2):67~69

10

湖南商务职业技术学院毕业设计

8附录

附录1元器件清单

(1)发射端元件清单:

(2)接收端元件清单:

附录2电路原理图

(1)发射端电路原理图

11

湖南商务职业技术学院毕业设计

(2)接收端电路原理图

12

湖南商务职业技术学院毕业设计

附录3PCB设计图

(1)发射端PCB设计图

(2)接收端PCB

13

湖南商务职业技术学院毕业设计

附录4产品实物图

14

湖南商务职业技术学院毕业设计

附录5主程序代码

发送端代码:

#include<reg52.h>//包含头文件

#include<intrins.h>

#include"api_c.h"//包含NRF24L01头文件

#defineucharunsignedchar

#defineuintunsignedint//宏定义变量范围

sbitDS1820_dat=P2^0;//定义温度IO

uinttemp;//定义温度变量

ucharms;//定义时间变量

bitonce;//定义发送标志位

voiddelay(uintT)//延时函数

{

while(T--);

}

voidInitial()//DS13B20初始化函数

{

DS1820_dat=1;

delay(2);//延时16毫秒

DS1820_dat=0;

delay(40);

DS1820_dat=1;

delay(22);

}

15

湖南商务职业技术学院毕业设计

voidInput(ucharf)//18B20输入指令子程序

{

ucharj;

for(j=0;j<8;j++)

{

DS1820_dat=0;

DS1820_dat=f&0x01;

delay(10);

DS1820_dat=1;

f>>=1;

}

}

ucharOutput()//18b20读数、输出子程序

{

ucharj,b;

for(j=0;j<8;j++)

{

DS1820_dat=0;

b>>=1;

DS1820_dat=1;

if(DS1820_dat)

{

b=b|0x80;

}

delay(10);

}

return(b);

}

voidTemper()

{

16

湖南商务职业技术学院毕业设计

uintStore,Store_2,Store_1;

Initial();//对DS18B20复位

Input(0xcc);//跳过ROM

Input(0x44);//启动温度转换

Initial();//对DS18B20复位

Input(0xcc);//跳过ROM

Input(0xbe);//读RAM命令

Store_1=Output();//读温度的低字节

Store_2=Output();//读温度的高字节

Store=(Store_2*256)|Store_1;//合起来为温度的整数部分

Store=Store*0.625;

temp=Store;//乘以0.0625为温度值,这里扩大10000倍

}

voidmain()

{

ucharTxBuf[20]={0};

ucharRxBuf[20]={0};//定法发送接收缓冲数组

do

{

Temper();

}while(temp==850);//ds18b20温度传感器刚上电会读一个850,并不

是温度数据,所以这里我们用do{}while()语句处理掉

init_NRF24L01();//初始化24L01

nRF24L01_TxPacket(TxBuf);//发送一下

delay(8000);//短延时稳定数据

while(1)

{

Temper();//获取温度数据

TxBuf[0]=temp/256;

TxBuf[1]=temp%256;//将数据拆开发送

17

湖南商务职业技术学院毕业设计

TxBuf[2]=12;//发送数据结尾12

if(once==1)//发送标志位等于1,执行一下发送函数

{

nRF24L01_TxPacket(TxBuf);//TransmitTxbufferdata

once=0;//清零

delay(2000);//短延时一下

}

SetRX_Mode();//设置成接收模式

nRF24L01_RxPacket(RxBuf);//调用接收函数

if(RxBuf[0]==34)//判断接收到数据34,说明有机器

查询数据,发送标志位置一

{

once=1;//置一

}

Delay(1000);//延时,稳定一下数据

RxBuf[0]=0x00;

RxBuf[1]=0x00;

}

}

接收端代码:

#include<reg51.h>

#include<intrins.h>//包含头文件

#include"api_c.h"//包含NRF24L01

#include"eeprom52.h"//包含51单片机内部存储

#defineucharunsignedchar

#defineuintunsignedint//宏定义变量类型

#defineLCD1602_datP0//定义液晶IO

sbitLCD1602_rs=P2^5;

sbitLCD1602_rw=P2^6;//I/O定义

sbitLCD1602_e=P2^7;

18

湖南商务职业技术学院毕业设计

sbitbeep=P2^0;//定义蜂鸣器IO

sbitled_1=P1^0;

sbitled_2=P1^1;//定义指示灯IO

sbitkey_1=P1^5;

sbitkey_2=P1^6;

sbitkey_3=P1^7;//定义按键IO

uinttemp;//定义温度变量

ucharstate,ms,temp_h=30,temp_l=10;//显示变量定时变量温度上限

温度下限

uchartime;//连接时间变量

bitbeep1,s1,send;//蜂鸣器报警标志位,闪烁标志位发

送标志位

voiddelay(uintT)//短延时函数

{

while(T--);

}

voidLCD1602_write(ucharorder,dat)//1602一个字节处理

{

LCD1602_e=0;

LCD1602_rs=order;

LCD1602_dat=dat;

LCD1602_e=1;

delay(1);

LCD1602_e=0;

}

voidLCD1602_writebyte(uchar*prointer)//1602字符串

19

湖南商务职业技术学院毕业设计

处理

{

while(*prointer!='\0')

{

LCD1602_write(1,*prointer);

prointer++;

}

}

voidLCD1602_cls()//1602初始化

{

LCD1602_rw=0;

LCD1602_write(0,0x01);//1602清屏指令

delay(1500);

LCD1602_write(0,0x38);//功能设置8位、5*7点阵

delay(1500);

LCD1602_write(0,0x0c);//设置光标不显示开关、不显示光

标、字符不闪烁

LCD1602_write(0,0x06);

LCD1602_write(0,0xd0);

delay(1500);

}

voidshow()

{

if(time!=0)//只要显示变量不为0,说明

最近1秒内有通信

{

LCD1602_write(0,0x80);//在液晶第一行的第零个位

置,开始显示数据

LCD1602_writebyte("TEMP:");//显示Temp

if(temp>99)LCD1602_write(1,0x30+temp/100%10);//显示温度数据

elseLCD1602_writebyte("");

LCD1602_write(1,0x30+temp/10%10);

20

湖南商务职业技术学院毕业设计

LCD1602_writebyte(".");

LCD1602_write(1,0x30+temp%10);

LCD1602_write(1,0xdf);

LCD1602_writebyte("C");//显示符号

LCD1602_write(0,0xc0);//在第二行的第0个位置开

始显示

LCD1602_writebyte("HT:");//显示温度上限

if(state==1&&s1==1)//当state等于1,说明

设置温度上限,当闪烁标志位等于1,显示空

{

LCD1602_writebyte("");

}else//否则显示数据

{

LCD1602_write(1,0x30+temp_h/10%10);

LCD1602_write(1,0x30+temp_h%10);

}

LCD1602_write(1,0xdf);

LCD1602_writebyte("C");

LCD1602_writebyte("LT:");//温度下限

if(state==2&&s1==1)

{

LCD1602_writebyte("");

}else

{

LCD1602_write(1,0x30+temp_l/10%10);

LCD1602_write(1,0x30+temp_l%10);

}

LCD1602_write(1,0xdf);

LCD1602_writebyte("C");

}

else//当time等于0,说明最近5S都没

21

湖南商务职业技术学院毕业设计

有传输数据

{

LCD1602_write(0,0x80);//显示固定界面

LCD1602_writebyte("Disconnect");

LCD1602_write(0,0xc0);

LCD1602_writebyte("");

}

}

voidkey()//按键处理函数

{

if(!key_1)//判断按键按下

{

delay(888);//延时消抖

if(!key_1)//再次判断按键按下

{

while(!key_1);//按键等待死循环释放

state=(state+1)%3;//变量累加,对3取余,相当于将数据限制在

了012

}

}

if(!key_2)//按键二按下

{

delay(888);//短延时数据消抖

if(!key_2)//再次判断按键按下

{

while(!key_2);//按键死循环

if(state==1)//当是1时,说明正在设置温度上限,数据加一,

然后执行一次存储

{

if(temp_h<99)temp_h++;

22

湖南商务职业技术学院毕业设计

SectorErase(0x2000);//保存上限值

byte_write(0x2000,temp_h);

}elseif(state==2)//等于2,说明修改温度下限

{

if(temp_h-1>temp_l)temp_l++;

SectorErase(0x2200);//保存上限值

byte_write(0x2200,temp_l);

}

}

}

if(!key_3)//按键三和按键二是一样的,只是按键二是数据加,按键

三是数据减

{

delay(888);

if(!key_3)

{

while(!key_3);

if(state==1)

{

if(temp_h-1>temp_l)temp_h--;

SectorErase(0x2000);//保存上限值

byte_write(0x2000,temp_h);

}elseif(state==2)

{

if(temp_l>1)temp_l--;

SectorErase(0x2200);//保存上限值

byte_write(0x2200,temp_l);

}

}

}

}

voidproc()//报警函数

{

23

湖南商务职业技术学院毕业设计

if(temp>=temp_h*10)//温度大于温度上限,驱动对应的指示灯

{

led_1=0;

led_2=1;

}elseif(temp<=temp_l*10)//温度低于下限,

{

led_1=1;

led_2=0;

}else//否则两个指示灯都熄灭

{

led_1=1;

led_2=1;

}

if(temp>=temp_h*10||temp<=temp_l*10)//只要温度大于上限,或者低

于下限,就将蜂鸣器报警标志位,置一

{

beep1=1;

}else//否则清零

{

beep1=0;

}

}

voidmain()

{

ucharTxBuf[20]={0};//定义发送接收缓冲数组

ucharRxBuf[20]={0};

TMOD=0x01;

TH0=0x3c;

TL0=0xb0;

ET0=1;

24

湖南商务职业技术学院毕业设计

TR0=1;

EA=1;//配置定时器。使用定时器0作为常规定

时,定时周期是50ms

init_NRF24L01();//初始化24L01

delay(40000);//延时稳定一下

nRF24L01_TxPacket(TxBuf);//发送一下数据,也可以不要的

delay(8000);//短延时稳定

LCD1602_cls();//调用初始

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论