温度计Word下载.docx

上传人:b****2 文档编号:15245118 上传时间:2022-10-28 格式:DOCX 页数:18 大小:416.53KB
下载 相关 举报
温度计Word下载.docx_第1页
第1页 / 共18页
温度计Word下载.docx_第2页
第2页 / 共18页
温度计Word下载.docx_第3页
第3页 / 共18页
温度计Word下载.docx_第4页
第4页 / 共18页
温度计Word下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

温度计Word下载.docx

《温度计Word下载.docx》由会员分享,可在线阅读,更多相关《温度计Word下载.docx(18页珍藏版)》请在冰豆网上搜索。

温度计Word下载.docx

第3章数字温度子系统软件设计整体流程图6

3.1总流程图6

3.2子程序流程图6

第4章设计体会与总结9

第5章参考文献10

附录11

附录A源程序11

附录B运行图17

第1章数字温度计的设计要求与设计方案

1.1基本设计要求

随着人们生活水平的不断提高,单片机控制无疑是人们追求的目标之一,它所给人带来的方便也是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活、提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。

本设计所介绍的数字温度计与传统的温度计相比,具有读数方便,测温范围广,测温准确,其输出温度采用数字显示,主要用于对测温比较准确的场所,或科研实验室使用,该设计控制器使用单片机AT89C52,测温传感器使用DS18B20,用1602液晶实现温度显示,能准确达到以上要求。

1.2性能指标

(1)基本范围-10℃-50℃;

(2)精度误差小于0.1℃;

(3)液晶LCD显示;

(4)可以设定温度的上下限报警功能。

第2章数字温度计系统的硬件设计

2.1数字温度计硬件框图

数字温度计系统硬件框图如图2.1所示。

图2.1系统的硬件框图

2.2AT89C52单片机

AT89C52单片机引脚配置图,如图2.2所示。

图2.2AT89C52引脚配置截图

2.3总设计图

数字温度计系统的硬件总设计图如图2.3所示。

图2.3

如图2.3所示,AT89C52的时钟电路是单片机内部有一个高增益、反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2。

通过这两个引脚在芯片外并接石英晶体振荡器和两只电容(电容和一般取10uF)。

构成一个稳定的自激振荡器。

AT89C52的按键复位操作,若要复位,只要按图中的RESET键,电源VCC经电阻分压,在RESET端产生一个复位高电平。

显示电路对于现实电路我们采用LCD1602液晶显示。

故障状态指示电路本设计采用发光二级管以及蜂鸣器对运行方式进行指示,可清楚看到系统的故障状态。

第3章数字温度计系统软件设计整体流程

3.1总体流程图

数字温度计系统总体流程图如图3.1所示。

图3.1主流序流程图

3.2子程序流程图

数字温度计系统子程序主要包含:

读温度子程序、转换温度子程序、计算温度子程序。

3.2.1读温度子程序流程图

读温度子程序流程图如图3.2所示。

图3.2读温度子程序流程图

3.2.2转换温度子程序流程图

转换温度子程序流程图如图3.3所示。

图3.3转换温度子程序流程图

3.2.3计算温度子程序流程图

计算温度子程序流程图如图3.4所示。

图3.4计算温度子程序流程图

第4章设计体会与小结

通过上网查阅各种类似的设计,去图书馆翻阅相关设计书籍,查阅所提供的芯片功能,确定基本设计方案,又通过仿真验证试验方案的可实行性,虽说比较烦杂但却对设计一个电路有了基本的经验。

同时也使自己认识到设计思路是整个设计的灵魂:

拿下每个课题能有一个非常清晰的设计思路是至关重要的。

只有对课题的充分理解,对各种器件的熟练掌握,才能成功的勾画出基本的设计图,这是成功的关键,必须多花时间在设计上才能为后续工作提供更扎实的基础。

翻阅各种资料,上网查询填补所需知识的空白是必要的;

焊接制作必须精益求精,一丝不苟,一点的差错都可能导致实验结果错误,因此必须准确无误还要工整,这样才能在调试中能比较轻松进行,也是整个电路可看性更好;

调试工作是个精细工作。

在调试过程中,有些问题是芯片本身损坏引起的,也有些是因为焊接问题引起的等因此排查过程需要特别有耐心,通过对芯片功能的检验,对焊点的检查最后检查出问题所在。

当最后解决问题时,电路的正确是非常振奋,也很有成就感和满足感。

通过这次对数字温度计的设计与制作,让我了解了设计电路的基本流程,也让我了解了关于数字温度计的原理与设计理念。

本设计主要完成了一款简单的数字温度计设计,温度通过LCD屏显示出来。

实现温度测试的基本功能要求。

在1周的课程设计中我学会了很多的东西。

学会用PROTEUS仿真和用ALTIUMDESINER画PCB,最后做板子的时候发现只有自己经历过了才知道板子调试的时候和仿真的不完全一样,通过这次课设,也提升了我的动手能力和对数字电路的重新认识,总之,这次课设不仅提升了个人能力和对知识水平的运用,也大大提高了我们的之间的配合默契!

第5章

参考文献

[1]郭天祥.51单片C语言.教程.电子工业出版社.2009

[2]刘坤,王巧芝,郑锋.51单片机典型应用开发范例大全.中国铁道出版社.2011

[3]张友德,赵志英,涂时亮.单片微型机原理[M].上海:

复旦大学出版社.2005.

附录

附录A源程序

//使用1602LCD显示DS18B20转换的温度值

#include<

reg52.H>

intrins.H>

math.H>

#defineucharunsignedchar

#defineuintunsignedint

sbitRS=P3^0;

//数据/命令选择端(H/L)

sbitLCDEN=P3^2;

//使能端

sbitdeng=P1^6;

//超过温度限制指示灯

sbitbeep=P1^7;

//超过温度限制报警器

ucharhigh=30;

//最高温度

ucharlow=10;

//最低温度

unsignedcharr;

voiddelayUs()//短延时

{

_nop_();

}

voiddelayMs(uinta)//长延时

uinti,j;

for(i=a;

i>

0;

i--)

for(j=100;

j>

j--);

//第一行开始地址为0x80,第二行开始地址为0xc0;

//写命令:

RS=0,RW=0;

voidwriteComm(ucharcomm)

RS=0;

P2=comm;

LCDEN=1;

delayUs();

LCDEN=0;

delayMs

(1);

//写数据:

RS=1,RW=00

voidwriteData(uchardat)

{

RS=1;

P2=dat;

LCDEN=1;

//初始化函数

//显示模式,固定指令为00111000=0x38,16*2显示,5*7点阵,8位数据接口

//显示开/关及光标设置00001100=0x0c

//指令1:

00001DCB:

D:

开显示/关显示(H/L);

C:

显示光标/不显示(H/L),B:

光标闪烁/不闪烁(H/L)

//指令2:

000001NS:

//N=1,当读/写一个字符后地址指针加1,且光标也加1;

N=0则相反

//S=1,当写一个字符,整屏显示左移(N=1)或右移(N=0),但光标不移动;

S=0,整屏不移动

voidinit()

writeComm(0x38);

//显示模式

writeComm(0x0c);

//开显示,关光标

writeComm(0x06);

//写字符后地址加1,光标加1

writeComm(0x01);

//清屏

voidwriteString(uchar*str,ucharlength)

uchari;

for(i=0;

i<

length;

i++)

writeData(str[i]);

/*****************************DS18B20*******************************/

sbitds=P3^7;

//初始化DS18B20

//让DS18B20一段相对长时间低电平,然后一段相对非常短时间高电平,即可启动

voiddsInit()

//对于11.0592MHz时钟,unsignedint型的i,作一个i++操作的时间大于为8us

unsignedinti;

ds=0;

i=100;

//拉低约800us,符合协议要求的480us以上

while(i>

0)i--;

ds=1;

//产生一个上升沿,进入等待应答状态

i=4;

voiddsWait()

while(ds);

while(~ds);

//检测到应答脉冲

while(i>

0)i--;

//向DS18B20读取一位数据

//读一位,让DS18B20一小周期低电平,然后两小周期高电平,

//之后DS18B20则会输出持续一段时间的一位数据

bitreadBit()

bitb;

i++;

//延时约8us,符合协议要求至少保持1us

//延时约16us,符合协议要求的至少延时15us以上

b=ds;

i=8;

//延时约64us,符合读时隙不低于60us要求

returnb;

}

//读取一字节数据,通过调用readBit()来实现

unsignedcharreadByte()

unsignedcharj,dat;

dat=0;

for(i=0;

i<

8;

j=readBit();

//最先读出的是最低位数据

dat=(j<

<

7)|(dat>

>

1);

returndat;

//向DS18B20写入一字节数据

voidwriteByte(unsignedchardat)

unsignedcharj;

for(j=0;

j<

8;

j++)

b=dat&

0x01;

dat>

=1;

//写"

1"

将DQ拉低15us后,在15us~60us内将DQ拉高,即完成写1

if(b)

//拉低约16us,符号要求15~60us内

i=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 文化宗教

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1