单片机设计报告温度传感器_第1页
单片机设计报告温度传感器_第2页
单片机设计报告温度传感器_第3页
单片机设计报告温度传感器_第4页
单片机设计报告温度传感器_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

单片机设计报告温度传感器...设计题目温度传感器设计背景温度测量在物理实验、医疗卫生、食品生产等领域,尤其在热学实验(如:物体的比热容、汽化热、热功当量、压强温度系数等教学实验)中,有特别重要的意义。目前温度计的发展很快,从原始的玻璃管温度计发展到了现在的热电阻温度计、热电偶温度计、数字温度计、电子温度计等等。现在所使用的温度计通常都是精度为1℃和0.1℃的水银、煤油或酒精温度计,这些温度计的刻度间隔通常都很密,不容易准确分辨,读数困难,而且他们的热容量还比较大,达到热平衡所需的时间较长,因此很难读准,并且使用非常不方便。本文所介绍与传统的温度计相比,具有读数方便、测温围广、测温准确等优点,其输出温度采用数字显示,主要供测温要求准确的场所和科研实验室使用。设计目的利用单片机及其外围电路完成远程温度检测系统设计。通过本课题设计,学生能够掌握单片机硬件设计及其编程语言,掌握利用protel软件绘制电路图,提高根据实际情况进行单片机开发能力。在电气工程及其自动化学科的培养方向上,提高针对具体问题的资料收集、自我学习、分析及处理能力。学习protel软件,并绘制本课题的硬件电路图;熟悉单片机编程语言,并能用单片机C语言进行本课题的编程;通过本课题的设计,学习根据实际情况进行合理设计的方法,并能选择合适的器件实现系统功能。设计原理单片机设计报告温度传感器全文共15页,当前为第1页。本设计是以51单片机为核心的温度传感器设计,该系统以STC89C516RD单片机为中心控制单元,由数码管显示模块,蜂鸣器警报模块组成,并预设温度报警上下限,系统启动后可以实时采集环境中的温度,并且当温度超出上下限的值以后蜂鸣器报警.单片机设计报告温度传感器全文共15页,当前为第1页。五、设计要求与容1.用Protel等软件绘制原理图SCH的绘制;2.画出电路原理图,并对元件进行正确的封装、合理布局、布线,完成PCB图。3.小组成员掌握相关操作,完成各自的演示实验;4.进行单片机仿真实验,按照设计任务书的要求对基础实验进行创新,达到预期目的。六、主要过程1.由老师布置设计任务,并对相关知识进行了讲述,并领取工具;2.在老师的指导下,安装相关软件,对软件的常用操作进行学习;3小组成员按照分配的任务展开工作。主要是:搜集相关资料,绘制SCH和PCB图,对程序进行修改完成相关创新;4.进行仿真实验,对问题进行反馈,小组成员展开讨论;5.递交设计结果及设计报告。相关结果1、设计原理图单片机设计报告温度传感器全文共15页,当前为第2页。单片机设计报告温度传感器全文共15页,当前为第2页。2、由protel绘制的SCH图单片机设计报告温度传感器全文共15页,当前为第3页。单片机设计报告温度传感器全文共15页,当前为第3页。3、由protel绘制的PCB图单片机设计报告温度传感器全文共15页,当前为第4页。单片机设计报告温度传感器全文共15页,当前为第4页。4、基础设计仿真结果图创新之后的仿真结果(1)、程序单片机设计报告温度传感器全文共15页,当前为第5页。见附录1单片机设计报告温度传感器全文共15页,当前为第5页。(2)、结果设计总结这次课程设计的完成真的挺不容易的。有的知识不太清楚,网上找的不符合课程设计要求,我们几个又跑到图书馆去找相关书籍,结果还是不太满意,最后还是求教于老师,还好老师有足够的耐心帮助我们完成课题设计。虽然这次课程设计的完成有点吃力,但我还是挺珍惜课程设计的机会,因为它可以暴漏我自身的问题,让我更清楚的认识自己,同时,与组员之间讨论的时间多了,与老师接触的机会多了,锻炼了自己各个方面的能力。而且,它是我们在校期间难得的实践机会。在今后社会的发展和学习实践过程中,一定要不懈努力,不能遇到问题就想到要退缩,一定要不厌其烦的发现问题所在,然后一一进行解决,只有这样,才能成功的做成想做的事,才能在今后的道路上,不断收获喜悦,得到社会及他人对你的认可!九、参考文献电子CAD(Protel)教程中南大学附录附录1C++算法仿真程序(main.c)单片机设计报告温度传感器全文共15页,当前为第6页。/*******************************************************************************

*

*

普中科技

*

:

18B20温度显示试验

*

实验说明

:

LCD1602显示温度值。

*

连接方式

:

见连接图

*

:

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

#include<reg51.h>

#include"lcd.h"

#include"temp.h"

void

LcdDisplay(int);

void

delay(unsigned

int

i)

;//延迟

sbit

Beep

=

P1^5

;

//定义全局变量

unsigned

char

datas[]

=

{0,

0,

0,

0,

0};

//定义数组

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

*

函数名

:

main

*

函数功能

:

主函数

*

输入

:

*

输出

:

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

void

main()

{

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

*

输出

:

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

单片机设计报告温度传感器全文共15页,当前为第7页。

void

delay(unsigned

int

i)

{

char

j;

for(i;

i

>

0;

i--)

for(j

=

200;

j

>

0;

j--);

}

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

*

函数名

:

LcdDisplay()

*

函数功能

:

LCD显示读取到的温度

*

输入

:

v

*

输出

:

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

void

LcdDisplay(int

temp)

//lcd显示

{

float

tp;

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;

单片机设计报告温度传感器全文共15页,当前为第8页。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)单片机设计报告温度传感器全文共15页,当前为第6页。单片机设计报告温度传感器全文共15页,当前为第7页。单片机设计报告温度传感器全文共15页,当前为第8页。单片机设计报告温度传感器全文共15页,当前为第9页。/*******************************************************************************

*

普中科技

*

:

18B20温度显示试验

*

实验说明

:

LCD1602显示温度值。

*

连接方式

:

见连接图

*

:

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

#include<reg51.h>

#include"lcd.h"

#include"temp.h"

void

LcdDisplay(int);

void

delay(unsigned

int

i)

;//延迟

sbit

Beep

=

P1^5

;

//定义全局变量

unsigned

char

datas[]

=

{0,

0,

0,

0,

0};

//定义数组

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

*

函数名

:

main

*

函数功能

:

主函数

*

输入

:

*

输出

:

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

void

main()

{

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

*

输出

:

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

void

delay(unsigned

int

i)

{

char

j;

for(i;

i

>

0;

i--)

for(j

=

200;

j

>

0;

j--);

}

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

*

函数名

:

LcdDisplay()

*

函数功能

:

LCD显示读取到的温度

*

输入

:

v

*

输出

:

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

void

LcdDisplay(int

temp)

//lcd显示

单片机设计报告温度传感器全文共15页,当前为第10页。{

float

tp;

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表示初始地址

单片机设计报告温度传感器全文共15页,当前为第11页。LcdWriteData('0'+datas[3]);

//显示小数点

LcdWriteCom(0x87);

//写地址

80表示初始地址

LcdWriteData('0'+datas[4]);

//显示小数点

}

单片机设计报告温度传感器全文共15页,当前为第9页。单片机设计报告温度传感器全文共15页,当前为第10页。单片机设计报告温度传感器全文共15页,当前为第11页。单片机设计报告温度传感器全文共15页,当前为第12页。单片机设计报告温度传感器全文共15页,当前为第12页。...目录一、设计题目 1二、设计背景 1三、HYPERLINK\l"_T

温馨提示

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

评论

0/150

提交评论