单片机设计报告温度传感器.docx
- 文档编号:12812687
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:18
- 大小:20.46KB
单片机设计报告温度传感器.docx
《单片机设计报告温度传感器.docx》由会员分享,可在线阅读,更多相关《单片机设计报告温度传感器.docx(18页珍藏版)》请在冰豆网上搜索。
单片机设计报告温度传感器
一、设计题目
温度传感器
二、设计背景
温度测量在物理实验、医疗卫生、食品生产等领域,尤其在热学实验(如:
物体的比热容、汽化热、热功当量、压强温度系数等教学实验)中,有特别重要
的意义。
目前温度计的发展很快,从原始的玻璃管温度计发展到了现在的热电阻
温度计、热电偶温度计、数字温度计、电子温度计等等。
现在所使用的温度计通
常都是精度为1℃和0.1℃的水银、煤油或酒精温度计,这些温度计的刻度间隔
通常都很密,不容易准确分辨,读数困难,而且他们的热容量还比较大,达到热
平衡所需的时间较长,因此很难读准,并且使用非常不方便。
本文所介绍与传统
的温度计相比,具有读数方便、测温围广、测温准确等优点,其输出温度采用数
字显示,主要供测温要求准确的场所和科研实验室使用。
二、设计目的
利用单片机及其外围电路完成远程温度检测系统设计。
通过本课题设计,学
生能够掌握单片机硬件设计及其编程语言,掌握利用protel软件绘制电路图,提高根据实际情况进行单片机开发能力。
在电气工程及其自动化学科的培养方向上,提高针对具体问题的资料收集、自我学习、分析及处理能力。
学习protel软件,并绘制本课题的硬件电路图;熟悉单片机编程语言,并能用单片机C语言进行本课题的编程;通过本课题的设计,学习根据实际情况进行合理设计的方法,并能选择合适的器件实现系统功能。
三、设计原理
本设计是以51单片机为核心的温度传感器设计,该系统以STC89C516RD单
片机为中心控制单元,由数码管显示模块,蜂鸣器警报模块组成,并预设温度报警上下限,系统启动后可以实时采集环境中的温度,并且当温度超出上下限的值
以后蜂鸣器报警.
...
五、设计要求与容
1.用Protel等软件绘制原理图SCH的绘制;
2.画出电路原理图,并对元件进行正确的封装、合理布局、布线,完成PCB
图。
3.小组成员掌握相关操作,完成各自的演示实验;
4.进行单片机仿真实验,按照设计任务书的要求对基础实验进行创新,达到预期目的。
六、主要过程
1.由老师布置设计任务,并对相关知识进行了讲述,并领取工具;
2.在老师的指导下,安装相关软件,对软件的常用操作进行学习;
3小组成员按照分配的任务展开工作。
主要是:
搜集相关资料,绘制SCH和PCB图,对程序进行修改完成相关创新;
4.进行仿真实验,对问题进行反馈,小组成员展开讨论;
5.递交设计结果及设计报告。
七、相关结果
1、设计原理图
...
2、由protel绘制的SCH图
...
3、由protel绘制的PCB图
...
4、基础设计仿真结果图
5、创新之后的仿真结果
(1)、程序
见附录1
...
(2)、结果
八、设计总结
这次课程设计的完成真的挺不容易的。
有的知识不太清楚,网上找的不符合课程设计
要求,我们几个又跑到图书馆去找相关书籍,结果还是不太满意,最后还是求教于老师,还
好老师有足够的耐心帮助我们完成课题设计。
虽然这次课程设计的完成有点吃力,但我还是
挺珍惜课程设计的机会,因为它可以暴漏我自身的问题,让我更清楚的认识自己,同时,与
组员之间讨论的时间多了,与老师接触的机会多了,锻炼了自己各个方面的能力。
而且,它
是我们在校期间难得的实践机会。
在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,
一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,
才能在今后的道路上,不断收获喜悦,得到社会及他人对你的认可!
九、参考文献
电子CAD(Protel)教程中南大学
十、附录
附录1C++算法仿真程序(main.c)
/******************************************************************************
*
*
*
普中科技
*
实验
名
:
18B20温度显示试验
*
实验说明
:
LCD1602显示温度值。
*
连接方式
:
见连接图
...
*注意:
******************************************************************************/
#include
#include"lcd.h"
#include"temp.h"
voidLcdDisplay(int);
voiddelay(unsignedinti);//延迟
sbitBeep=P1^5;
//定义全局变量
unsignedchardatas[]={0,0,0,0,0};//定义数组
/******************************************************************************
*
*
函数名
:
main
*
函数功能
:
主函数
*
输入
:
无
*
输出
:
无
******************************************************************************/
voidmain()
{
LcdInit();//初始化LCD1602
LcdWriteCom(0x88);//写地址80表示初始地址
LcdWriteData('C');
while
(1)
{
LcdDisplay(Ds18b20ReadTemp());
//Delay1ms(1000);//1s钟刷一次
if(datas[1]==2&&datas[2]>=5||datas[1]>2)
{
Beep=1;
delay(5);
Beep=0;
delay(5);
}
}
}
/******************************************************************************
*
*
函数名
:
delay()
*
函数功能
:
延迟程序
*
输入
:
i
*
输出
:
无
*******************************************************************************/
voiddelay(unsignedinti)
...
{
charj;
for(i;i>0;i--)
for(j=200;j>0;j--);
}
/******************************************************************************
*
*
函数名
:
LcdDisplay()
*
函数功能
:
LCD显示读取到的温度
*
输入
:
v
*
输出
:
无
*******************************************************************************/
voidLcdDisplay(inttemp)//lcd显示
{
floattp;
if(temp<0)//当温度值为负数
{
LcdWriteCom(0x80);//写地址80表示初始地址
LcdWriteData('-');//显示负
//因为读取的温度是实际温度的补码,所以减1,再取反求出原码
temp=temp-1;
temp=~temp;
tp=temp;
temp=tp*0.0625*100+0.5;
//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点
//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5
的就
//算由?
.5,还是在小数点后面。
}
else
{
LcdWriteCom(0x80);//写地址80表示初始地址
LcdWriteData('+');//显示正
tp=temp;//因为数据处理有小数点所以将温度赋给一个浮点型变量
//如果温度是正的那么,那么正数的原码就是补码它本身
temp=tp*0.0625*100+0.5;
//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点
//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5
的就
//算加上0.5,还是在小数点后面。
}
datas[0]=temp/10000;
datas[1]=temp%10000/1000;
...
datas[2]
=
temp
%
1000
/
100;
datas[3]
=
temp
%
100
/
10;
datas[4]
=
temp
%
10;
LcdWriteCom(0x82);
//写地址80表示初始地址
LcdWriteData('0'+datas[0]);
//
百位
LcdWriteCom(0x83);
//写地址
80表示初始地址
LcdWriteData('0'+datas[1]);
//
十位
LcdWriteCom(0x84);//
写地址
80表示初始地址
LcdWriteData('0'+datas[2]);
//
个位
LcdWriteCom(0x85);//
写地址
80表示初始地址
LcdWriteData('.');
//显示
‘.’
LcdWriteCom(0x86);
//写地址
80表示初始地址
LcdWriteData('0'+datas[3]);
//
显示小数点
LcdWriteCom(0x87);
//写地址
80表示初始地址
LcdWriteData('0'+datas[4]);
//
显示小数点
}
附录2C++算法仿真程序(lcd.c)
/*******************************************************************************
*普中科技
-------------------------------------------------------------------------------
*
实验
名
:
18B20温度显示试验
*
实验说明
:
LCD1602显示温度值。
*
连接方式
:
见连接图
*
注
意
:
*******************************************************************************
/
#include
#include"lcd.h"
#include"temp.h"
void
LcdDisplay(int);
void
delay(unsigned
int
i)
;//延迟
sbit
Beep=
P1^5
;
//定义全局变量
unsignedchardatas[]={0,0,0,0,0};//定义数组
/******************************************************************************
*
*
函数名
:
main
*
函数功能
:
主函数
*
输入
:
无
*
输出
:
无
*******************************************************************************
...
/
voidmain()
{
LcdInit();//初始化LCD1602
LcdWriteCom(0x88);//写地址80表示初始地址
LcdWriteData('C');
while
(1)
{
LcdDisplay(Ds18b20ReadTemp());
//Delay1ms(1000);//1s钟刷一次
if(datas[1]==2&&datas[2]>=5||datas[1]>2)
{
Beep=1;
delay(5);
Beep=0;
delay(5);
}
}
}
/******************************************************************************
*
*
函数名
:
delay()
*
函数功能
:
延迟程序
*
输入
:
i
*
输出
:
无
*******************************************************************************/
voiddelay(unsignedinti)
{
charj;
for(i;i>0;i--)
for(j=200;j>0;j--);
}
/******************************************************************************
*
*
函数名
:
LcdDisplay()
*
函数功能
:
LCD显示读取到的温度
*
输入
:
v
*
输出
:
无
*******************************************************************************/
voidLcdDisplay(inttemp)//lcd显示
{
...
floattp;
if(temp<0)//当温度值为负数
{
LcdWriteCom(0x80);//写地址80表示初始地址
LcdWriteData('-');//显示负
//因为读取的温度是实际温度的补码,所以减1,再取反求出原码
temp=temp-1;
temp=~temp;
tp=temp;
temp=tp*0.0625*100+0.5;
//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点
//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5
的就
//算由?
.5,还是在小数点后面。
}
else
{
LcdWriteCom(0x80);//写地址80表示初始地址
LcdWriteData('+');//显示正
tp=temp;//因为数据处理有小数点所以将温度赋给一个浮点型变量
//如果温度是正的那么,那么正数的原码就是补码它本身
temp=tp*0.0625*100+0.5;
//留两个小数点就*100,+0.5是四舍五入,因为C语言浮点数转换为整型的时候把小数点
//后面的数自动去掉,不管是否大于0.5,而+0.5之后大于0.5的就是进1了,小于0.5
的就
//算加上0.5,还是在小数点后面。
}
datas[0]
=
temp
/
10000;
datas[1]
=
temp
%
10000
/
1000;
datas[2]
=
temp
%
1000
/
100;
datas[3]
=
temp
%
100
/
10;
datas[4]
=
temp
%
10;
LcdWriteCom(0x82);
//写地址
80表示初始地址
LcdWriteData('0'+datas[0]);
//
百位
LcdWriteCom(0x83);
//写地址
80表示初始地址
LcdWriteData('0'+datas[1]);
//
十位
LcdWriteCom(0x84);//
写地址
80表示初始地址
LcdWriteData('0'+datas[2]);
//
个位
LcdWriteCom(0x85);//
写地址
80表示初始地址
LcdWriteData('.');
//
显示
‘.’
LcdWriteCom(0x86);
//写地址
80表示初始地址
LcdWriteData('0'+datas[3]);
//
显示小数点
...
LcdWriteCom(0x87);//写地址80表示初始地址
LcdWriteData('0'+datas[4]);//显示小数点
}
...
一、设计题目1
二、设计背景1
三、设计目的错误!
未定义书签。
四、设计原理1
五、设计要求与容2
六、设计主要过程2
七、相关结果2
1.设计原理图3
2.SCH原理图4
3.PCB图5
4.基础实验仿真结果5
5.创新仿真结果5
八、设计总结6
1.组分工6
2.自我总结6
3.组评分7
4.组长总结8
九、参考文献8
十、附录9
...
...
...
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 设计 报告 温度传感器
![提示](https://static.bdocx.com/images/bang_tan.gif)