智能仪表课程设计2.docx

上传人:b****6 文档编号:8041484 上传时间:2023-01-28 格式:DOCX 页数:26 大小:450.28KB
下载 相关 举报
智能仪表课程设计2.docx_第1页
第1页 / 共26页
智能仪表课程设计2.docx_第2页
第2页 / 共26页
智能仪表课程设计2.docx_第3页
第3页 / 共26页
智能仪表课程设计2.docx_第4页
第4页 / 共26页
智能仪表课程设计2.docx_第5页
第5页 / 共26页
点击查看更多>>
下载资源
资源描述

智能仪表课程设计2.docx

《智能仪表课程设计2.docx》由会员分享,可在线阅读,更多相关《智能仪表课程设计2.docx(26页珍藏版)》请在冰豆网上搜索。

智能仪表课程设计2.docx

智能仪表课程设计2

目录

序言1

第一章系统方案2

1.1课题的意义和目的2

1.2主要设计内容2

1.3课题的任务要求2

第二章硬件设计3

2.1系统总体方案3

2.1.1系统总体设计框图3

2.1.2各模块简介3

2.2系统硬件设计6

2.2.1单片机电路设计6

2.2.2DS18B20温度传感器电路设计7

2.2.3显示电路设计7

2.2.4按键电路设计8

2.2.5报警电路设计8

第三章软件设计9

3.1DS18B20程序设计9

3.1.1DS18B20传感器操作流程9

3.1.2DS18B20传感器的指令表10

3.1.3DS18B20传感器的初始化时序11

3.1.4DS18B20传感器的读写时序11

3.1.5DS18B20获取温度程序流程图11

3.2显示程序设计12

3.3按键程序设计12

第四章系统的软硬件调试13

参考文献14

附录15

附录一硬件原理图15

附录二源程序清单16

附录三实物图25

序言

本设计采用的主控芯片是ATMEL公司的AT89S52单片机,数字温度传感器是DALLAS公司的DS18B20。

本设计用数字传感器DS18B20测量温度,测量精度高,传感器体积小,使用方便。

所以本次设计的数字温度计在工业、农业、日常生活中都有广泛的应用。

单片机技术已经广泛应用社会生活的各个领域,已经成为一种非常实用的技术。

51单片机是最常用的一种单片机,而且在高校中都以51单片机教材为蓝本,这使得51单片机成为初学单片机技术人员的首选。

本次设计采用的AT89S52是一种flash型单片机,可以直接在线编程,向单片机中写程序变得更加容易。

本次设计的数字温度计采用的是DS18B20数字温度传感器,DS18B20是一种可组网的高精度数字式温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠。

本设计根据设计要求,首先设计了硬件电路,然后绘制软件流程图及编写程序。

本设计属于一种多功能温度计,温度测量范围是0℃到50℃。

温度值的分辨率可以被用户设定为9-12位,可以设置上下限报警温度,当温度不在设定的范围内时,就会启动报警程序报警。

本设计的显示模块是用液晶显示屏实现的。

在显示实时测量温度的模式下还可以通过查询按键查看设定的上下限报警温度。

 

第1章系统方案

1.1课题的意义和目的

在日常生活及工农业生产中经常要用到温度的检测及控制,传统的测温元件有热电偶和热电阻。

而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,需要比较多的外部硬件支持,硬件电路复杂,软件调试复杂,制作成本高。

由单片集成电路构成的温度传感器的种类越来越多,测量的精度越来越高,响应时间越来越短,使用方便无需变换电路等。

近年来,美国DALLAS公司生产DSI8B20为代表的新型单总线数字式温度传感器以其突出优点广泛使用于仓储管理、工农业生产制造、气象观测、科学研究以及日常生活中。

DSI8B20集温度测量和A/D转换于一体,直接输出数字量,传输距离远,可以很方便地实现多点测量。

温度采集仪增加PC机与单片机之间的通信,可以对实时温度进行远程监测与存储,此仪器可用于蔬菜大棚的监控或者工厂中的锅炉温度的采集等场合应用广泛。

1.2主要设计内容

通过温度传感器采集温度,并将温度传到单片机进行处理,并通过液晶显示,同时以单片机为核心的主控单元通过对按键的操作,设定上下限报警温度与实测温度进行比较,并判断是否报警,且与PC机通信将监测的温度发送到PC机(温度监测界面可用VB进行编程设计)。

1.3课题的任务要求

1.温度测量范围0℃到+50℃;

2.自定义的通信协议可靠,传输误码率低;

3.用液晶显示屏直接显示读数、显示清晰直观;

4.稳定性好。

 

第二章硬件设计

2.1系统总体方案

2.1.1系统总体设计框图

由于DS18B20数字温度传感器具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠,所以在该设计中采用DS18B20数字温度传感器测量温度。

温度计电路设计总体设计框图如图2-1所示,控制器采用单片机AT89S52,温度传感器采用DS18B20,显示采用液晶显示屏,报警采用蜂鸣器、LED灯实现,键盘用来设定报警上下限温度。

 

图2-1温度计电路总体设计框图

 

2.1.2各模块简介

主控模块:

可以选用STC89C系列的单片机,这里采用的STC89C52单片机,价格便宜,使用方便,STC89C52的片内RAM已能满足存放要求。

温度传感模块:

由于本设计中单片机除了要完成数据采集、处理、控制和显示任务外,还要完成按键值的采集、处理。

如果用常规的数字加模拟电路实现就会相对困难一些。

本设计选用的数字式集成温度传感器DS18B20。

DS18B20是DALLAS半导体公司(现属MAXIM公司)设计生产的单总线数字温度传感器,其测量温度范围为-55℃~+125℃,在-10~+85℃时精度为±0.5℃。

这个传感器最大的特点就是能够从一根总线直接输出二进制的温度信号,不需要A/D转换和信号放大。

这样的选择使得整个电路的硬件设计更为简化,节省了单片机的资源。

显示模块:

可以使用数码管或者液晶显示,两者皆可。

在本设计中,主要使用液晶,焊接简单且程序调用方便。

按键模块:

本设计采用三个按键分别用来设定上限、下限温度。

报警模块:

就是当设定的温度在门限温度之外,就会报警,蜂鸣器发出响声。

通信模块:

RS-232电平与单片机TTL电平之间的转换方式,可以使用分立元件焊接而成,也可以直接使用集成芯片MAX232芯片。

从电路使用方便的角度来看直接采用集成芯片,适应性更强,加之其价格适中,硬件接口简单。

DS18B20的主要特性

(1)适应电压范围更宽,电压范围:

3.0V~5.5V,在寄生电源方式下可由数据线供电。

(2)独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。

(3)DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。

(4)温度范围-55℃~+125℃,在-10~+85℃时精度为±0.5℃。

(5)可编程的分辨率为9~12位,对应的可分辨温度分别为0.5℃、0.25℃、0.125℃和0.0625℃,可实现高精度测温。

(6)在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在750ms内把温度值转换为数字,速度更快。

(7)测量结果直接输出数字温度信号,以“一线总线”串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。

(8)负压特性:

电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。

DS18B20采用3脚TO-92封装或8脚SO或µSOP封装,其其封装形式如图2-2所示。

图2-2DS18B20的封装形式

DS18B20的64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。

温度报警触发器TH和TL,可通过软件写入户报警上下限。

DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM。

高速暂存RAM的结构为8字节的存储器,结构如图2-3所示。

头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝是易失的,每次上电复位时被刷新。

第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率,DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值,该字节各位的定义如表2-1所示。

表2-1:

配置寄存器

D7D6D5D4D3D2D1D0

TM

R1

R0

1

1

1

1

1

配置寄存器的低5位一直为1,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率,“R1R0”为“00”是9位,“01”是10位,“10”是11位,“11”是12位。

当DS18B20分辨率越高时,所需要的温度数据转换时间越长。

因此,在实际应用中要将分辨率和转换时间权衡考虑。

高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。

第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。

当DS18B20接收到温度转换命令后,开始启动转换。

转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。

单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示。

当符号位s=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位s=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。

输出的二进制数的高5位是符号位,最后4位是温度小数点位,中间7位是温度整数位。

表2-2是一部分温度值对应的二进制温度数据。

表2-2DS18B20输出的温度值

温度值

二进制输出

十六进制输出

+125℃

0000011111010000

07D0h

+85℃

0000010101010000

0550h

+25.0625℃

0000000110010001

0191h

+10.125℃

0000000010100010

00A2h

+0.5℃

0000000000001000

0008h

0℃

0000000000000000

0000h

-0.5℃

1111111111111000

FFF8h

-10.125℃

1111111101011110

FF5Eh

-25.0625℃

1111111001101111

FF6Fh

-55℃

1111110010010000

FC90h

DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。

若T>TH或T<TL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令作出响应。

因此,可用多只DS18B20同时测量温度并进行报警搜索。

在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。

主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。

4.调节模块介绍

调节模块是由四个按键接地后直接接单片机的I/O口完成的。

当按键没有按下时单片机管脚相当于悬空,默认下为高电平,当按键按下时相当于把单片机的管脚直接接地,此时为低电平。

程序设计为低电平触发。

5.报警模块介绍

报警模块是由一个PNP型的三极管9012驱动的5V蜂鸣器,和一个加一限流电阻的发光二极管组成的。

报警时蜂鸣器间歇性报警,发光二极管闪烁。

2.2系统硬件设计

2.2.1单片机电路设计

图2-4单片机最小系统原理图

单片机最小系统是由晶振电路,上电复位、按键复位电路,ISP下载接口和电源指示灯组成。

原理图如图2-4所示。

2.2.2DS18B20温度传感器电路设计

DS18B20温度传感器是单总线器件与单片机的接口电路采用电源供电方。

电源供电方式如图2-7,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。

图2-7DS18B20电源供电方式

当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。

采用寄生电源供电方式时VDD端接地。

由于单线制只有一根线,因此发送接口必须是三态的。

2.2.3显示电路设计

显示电路是由液晶显示屏进行显示的。

显示电路的总体设计如图2-6所示。

图2-6显示电路

2.2.4按键电路设计

按键电路是用来实现调节设定报警温度的上下限和查看上下报警温度的功能。

图2-7按键电路

2.2.5报警电路设计

报警电路是在测量温度大于上限或小于下限时提供报警功能的电路。

该电路是由一个蜂鸣器和一个红色的发光二极管组成,具体的电路如图2-7所示。

图2-7报警电路原理图

 

第三章软件设计

3.1DS18B20程序设计

3.1.1DS18B20传感器操作流程

根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:

•每一次读写之前都要对DS18B20进行复位操作

•复位成功后发送一条ROM指令

•最后发送RAM指令

这样才能对DS18B20进行预定的操作。

复位要求主CPU将数据线下拉500μs,然后释放,当DS18B20收到信号后等待16~60μs左右,后发出60~240μs的存在低脉冲,主CPU收到此信号表示复位成功。

DS18B20的操作流程如图3-1所示。

如图3-1DS18B20的操作流程

3.1.2DS18B20传感器的指令表

DS18B20传感器的操作指令如表3-1所示。

传感器复位后向传感器写相应的命令才能实现相应的功能。

表3-1DS18B20的指令表

指令

指令代码

功能

读ROM

0x33

读DS1820温度传感器ROM中的编码(即64位地址)

符合ROM

0x55

发出此命令之后,接着发出64位ROM编码,访问单总线上与该编码相对应的DS1820使之作出响应,为下一步对该DS1820的读写作准备。

搜索ROM

0xF0

用于确定挂接在同一总线上DS1820的个数和识别64位ROM地址。

为操作各器件作好准备。

跳过ROM

0xCC

忽略64位ROM地址,直接向DS1820发温度变换命令。

适用于单片工作。

告警搜索命令

0xEC

执行后只有温度超过设定值上限或下限的片子才做出响应。

温度变换

0x44

启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。

结果存入内部9字节RAM中。

读暂存器

0xBE

读内部RAM中9字节的内容

写暂存器

0x4E

发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。

复制暂存器

0x48

将RAM中第3、4字节的内容复制到EEPROM中。

重调EEPROM

0xB8

将EEPROM中内容恢复到RAM中的第3、4字节。

读供电方式

0xB4

读DS1820的供电模式。

寄生供电时DS1820发送“0”,外接电源供电DS1820发送“1”。

3.2显示程序设计

显示电路是由液晶显示屏来实现的。

由于单片机的I/O口有限,所以数码管采用动态扫描的方式来进行显示。

3.3按键程序设计

按键是用来设定上下限报警温度的。

具体的程序流程图如图3-3所示。

图3-3按键程序流程图

 

第四章系统的软硬件调试

在做实物时出现了不少问题。

比如本来是采用NPN型9013驱动蜂鸣器,但是在实际调试中蜂鸣器驱动不了,经多次试验,在三极管的基极电阻与单片机的接口处接一个1、2kΩ的上拉电阻就能驱动了。

但考虑到单片机的I/O口默认状态时为高电平,这样一上电蜂鸣器就会响,所以将NPN型9013换成了PNP型的9012三极管,效果挺好。

 

结束语

此次的设计使我从中学到了一些很重要的东西,那就是如何从理论到实践的转化,怎样将我们所学到的知识运用到实践中去。

在大学课堂的学习只是给我们灌输专业知识,而我们应把所学的知识应用到我们现实的生活中去。

这次的设计不仅使我们将课堂上学到的理论知识与实际应用结合了起来,而且使我们对电子电路、电子元器件、印制电路板等方面的知识有了更进一步的认识,同时在软件编程、焊板调试、相关调试仪器的使用等方面得到较全面的锻炼和提高,为今后能够独立进行某些单片机应用系统的开发设计工作打下一定的基础。

此次单片机设计也为我们以后进行更复杂的单片机系统设计提供了宝贵的经验。

通过此次的综合设计,我们初步掌握了单片机系统设计的基本原理。

充分认识到理论学习与实践相结合的重要性,对于书本上的很多知识,不但要学会,更重要的是会运用到实践中去。

在以后的学习中,我们会更加注重实践方面的锻炼,多提高自己的动手实践能力。

 

参考文献

[1]谭浩强.C程序设计(第三版).北京:

清华大学出版社,2005.7

[2]余发山,王福忠.单片机原理与应用技术.徐州:

中国矿业大学出版社,2008.6

[3]求是科技.单片机典型模块设计实例导航.北京:

人民邮电出版社,2005.5

[4]求是科技.8051系列单片机C程序设计完全手册.北京:

人民邮电出版社,2006.4

[5]于永,戴佳,刘波.51单片机C语言常用模块与综合系统设计实例精讲(第2版).北京:

电子工业出版社,2008.10

 

附录

附录一硬件原理图

 

附录二源程序清单

C程序:

#include

#include

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

ucharteH=35,teL=20;

sbitDQ=P3^7;//ds18b20与单片机连接口

sbitRS=P2^5;

sbitRW=P2^6;

sbitEN=P2^7;

sbitSET=P1^0;

sbitADD=P1^1;

sbitSUB=P1^2;

sbitBEEP=P3^2;

sbitbusy=P0^7;//lcd忙标位

sbitL=P3^3;

sbitH=P3^4;

uchars1num=0,s2num=0;

uchardis3[]={"0123456789"};

ucharval_sp[5]={0};

ucharfre_sp[5]={0};

ucharcodestr1[]={"Tem:

"};

ucharcodestr2[]={"studentN0:

"};

ucharcodestr3[]={"11314228"};

ucharcodestr4[]={"teH:

35"};

ucharcodestr5[]={"teL:

20"};

uchardatadisdata[5];

uchardatastr6[2];

ucharp=0;

uinttvalue;//温度值

uchartflag;//温度正负标志

//*************************lcd1602程序**************************/

voiddelay1ms(uintms)//延时1毫秒

{

uinti,j;

for(i=0;i

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

}

voidwr_com(ucharcom)//写指令//

{

//delay1ms

(1);

RS=0;

RW=0;

EN=0;

P0=com;

//delay1ms

(1);

EN=1;

//cbusy();

delay1ms

(1);

EN=0;

}

voidwr_dat(uchardat)//写数据//

{

//delay1ms

(1);

RS=1;

RW=0;

EN=0;

P0=dat;

//delay1ms

(1);

EN=1;

//cbusy();

delay1ms

(1);

EN=0;

}

voidlcd_init()//初始化设置

{

wr_com(0x38);delay1ms(5);

wr_com(0x08);delay1ms(5);

wr_com(0x01);delay1ms(5);

wr_com(0x06);delay1ms(5);

wr_com(0x0c);delay1ms(5);

}

voiddisplay(uchar*p)//显示

{

while(*p!

='\0')

{

wr_dat(*p);

p++;

delay1ms

(1);

}

}

voidinit_play()//初始化显示

{

lcd_init();

wr_com(0x80);

display(str2);

wr_com(0xc0);

display(str3);

delay1ms(2000);

lcd_init();

wr_com(0x80);

display(str1);

wr_com(0xc0);

display(str4);

wr_com(0xc0+8);

display(str5);

}

/***************************ds18b20程序****************************/

voiddelay_18B20(uinti)//延时1微秒

{

while(i--);

}

voidds1820rst()/*ds1820复位*/

{

DQ=1;//DQ复位

delay_18B20(4);//延时

DQ=0;//DQ拉低

delay_18B20(100);//精确延时大于480us

DQ=1;//拉高

delay_18B20(40);

}

uchards1820rd()/*读数据*/

{

uchari=0;

uchardat=0;

for(i=8;i>0;i--)

{

DQ=0;//给脉冲信号

dat>>=1;

DQ=1;//给脉冲信号

if(DQ)

dat|=0x80;

delay_18B20(10);

}

return(dat);

}

voidds1820wr(ucharwdata)/*写数据*/

{

uchari=0;

for(i=8;i>0;i--)

{

DQ=0;

DQ=wdata&0x01;

delay_18B20(10);

DQ=1;

wdata>>=1;

}

}

read_temp()/*读取温度值并转换*/

{

uinta,b;

ds1820rst();

ds1820wr(0xcc);//*跳过读序列号*/

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

ds1820rst();

ds1820wr(0xcc);//*跳过读序列号*/

ds1820wr(0xbe);//*读取温度*/

a=ds1820rd();

b=ds1820rd();

tvalue=b;

tvalue<<=8;

tvalue=tvalue|a;

if(tvalue<0x08ff)

tflag=0;

else

{

tvalue=~

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

当前位置:首页 > 求职职场 > 社交礼仪

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

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