您好,欢迎来到意榕旅游网。
搜索
您的当前位置:首页室内温度系统设计

室内温度系统设计

来源:意榕旅游网



《专业综合实习》报告

设计题目:室内温度设计



业:

电气工程及自动化


级:

(三)班

名:温强 杨涛 于兴国 王兼 姜黎黎

指导教师:

高飞





1课程设计目的…………………………………………………12 课程设计目的和要求…………………………………………13 课程设计报告内容……………………………………………14 总结和体会……………………………………………………8







1课程设计目的
综合运用所学过的知识进行室内温度系统设计,并进行实物的焊接以实现设计的要求。

2课程设计题目和要求
课程设计题目:室内温度系统设计。

课程设计要求:
1)测量范围-55℃-125℃
2)精度误差小于1℃
3)LED 数码直读显示。

3 课程设计报告内容
3.1室内温度系统设计方案论证
可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。

3.2总体设计框图
温度计电路设计总体设计方框图如图1所示,控制器采用单片机ATS52,温度传感器采用DS18B20,用3LED数码管以串口传送数据实现温度显示。

单片机复

LED

显示

时钟

温度传感

振荡




1 总体设计方框图




3.3主控制器
单片机ATS52具有低电压供电和体积小等特点,四个端口只需要两个口就能满足电路系统的设计需要,很适合便携手持式产品的设计使用系统可用三节电池供电。

3.4温度传感器
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。

DS18B20 的性能特点如下:
1)独特的单线接口仅需要一个端口引脚进行通信;
2)多个DS18B20可以并联在惟一的三线上,实现多点组网功能;
5)零待机功耗;
6)温度以9或12位数字;
7)用户可定义报警设置;
8)报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;
9)负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常
工作。

如图2 DS18B20 采用3脚PR35封装或8脚SOIC 封装,其外部形状及管脚如图2所示。图中①GND 为地,②DQ为数据输入/输出端,该引脚为漏极 开路输出,常态下成高电平,③可选用的VDD引脚,不用时应接地。SOIC



装的NC为空引脚。





















DQ




1

DS18B20

8

2

7

3

6

4

5





































VDD

GND

NC

NC

NC

NC

NC

GND

DQ

VDD

2DS18B20 的两种封装管脚图其内部结构框图如图3所示。

存储器与控制逻辑

DQ
温度传感器

配置寄存器

VDD 8CRC发生器

3DS18B20 内部结构
ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20 可通过软件写入户可以采用一线进行通信的原因。
温度报警触发器TH和TL,报警上下限。

DS18B20 温度传感器的内部存储器还包括一个高速暂存RAM和一个非



易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图3所示。头2个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为低5位一直为1,TM是工相应精度的温度数值。该字节各位的定义如图4所示。

作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分辨率。

.

.


4 DS18B20 字节定义
.
.
由表1 可见,DS18B20 温度

转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。

高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。 DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值



就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃LSB形式表示。

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

R1

R0

分辨率/

温度最大转换时间/ms

0

0

9

93.75

0

1

10

187.5

1

0

11

375

1

1

750

容作比较。若T>THTTL,则将该器件内的报警标志位置位,并对主机发
出的报警搜索命令作出响应。因此,可用多只DS18B20同时测量温度并进行报
警搜索。

ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20CRC值作比较,以判断主机收到的ROM数据是否正确。

DS18B20的测温原理是这这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶 所产生的信号作为减法计数器2的脉冲输入。振随温度变化其振荡频率明显改变,



器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1、温度寄存器中,计数器1和温度寄存器被预置在-55℃所对应的一个基数值。

减法计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当减法计数器1的预置值减到0时,温度寄存器的值将加1,减法计数器1的预置将重新被装入,减法计数器1重新开始对低温度系数晶振产生的脉冲信号进行计数,如此

循环直到减法计数器计数到0时,停止温度寄存器的累加,此时温度寄存器中的
数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍未
关闭就重复上述过程,直到温度寄存器值大致被测温度值。





0000


-10.125

1111 1111 0101

1110

FF5EH

-25.0625

1111 1110 0110

1111

FE6FH

-55

1111 1100 1001

0000

FC90H

2 一部分温度对应值表
另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,
因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:
初使化DS18B20(发复位脉冲)→发ROM功能命令→发存储器操作命令→处
理数据。

DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B201脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式,如图5所示单片机端口接单线总线,为保证在有效的DS18B20时钟周期内提供足够的电流,可用一个MOSFET管来完成对总线的上拉。





VCC

R1

4.7k

S1

J1

VCC

1

U1

P00

39

1

2

P10/T

2

38

3

P11/T

P01

3

37

DS18B20

P12

P02

4

36

P13

P03

5

35

P14

P04

6

34

C1

P15

P05

7

33

P16

P06

8

32

P17

P07

22u

Y1

13

INT1

P20

21

12

22

INT0

P21

23

15

P22

T1

24

P23

C2

11.0592MHz

14

25

T0

P24

26

31

P25

EA/VP

27

P26

28

22u

19

X1

P27

18

X2

C3

9

RESET

RXD

10

11

17

TXD

RD

30

ALE /P

16

29

WR

PSEN

SW SPST

10u

ATS52

R2

1k

R3

1k


的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。

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

3.6系统的显示电路
如图6所示,采用74ls373驱动4位共阳极数码管进行显示采集温度。

如图,显示电路连接简单,调试方便。







6显示电路
3.7系统整体硬件电路
系统整体硬件电路包括,传感器数据采集电路,温度显示电路,单片机主板电路等。

5中的按健复位电路是上电复位加手动复位,使用比较方便,在程序跑



飞时,可以手动复位,这样就不用在重起单片机电源,就可以实现复位。

3.8系统软件算法分析
系统程序主要包括主程序,读出温度子程序,温度转换命令子程序,计算温度子程序,显示数据刷新子程序等。

4 总结与体会
1、硬件装焊方面要有足够的耐心和细心,就算电路设计的再好,在焊接
时出一点小差错,也是不允许的,往往电路的错误都是由于一些小问题引起的,
如短路等,将造成不可预测的后果
2、软件方面注意的细节也很多,下面简单介绍一下这阵子写程序得到的一
些经验:
()写较大的程序时一定要事先做好资源分配。
(4)进入中断时一定要记得保护ACCPSW(视情况而定)
(5)不止进中断时要保护,有时候在正常程序下也要对某些值进得保护。可用
堆栈式的保护也可先赋值给其他地址,过后再赋回来
(6)妥善使用位地址,位地址可做为一些标志位,可以给编程带来很大的方便。

在本程序中,我就用了三个位地址,使程序大大的简化了

参考书目:

[1]张迎新,《单片机初级教程——单片机基础》,北京,北京航空航天大学出版社,2006



[2]马忠梅,籍顺心,张凯新,《单片机的C语言应用程序设计》,北京,北京航空航天大

学出版社,2003

[3]徐爱钧,彭秀华,《KeilCx51 V7.0 单片机高级语言编程与μVision2应用实践》,北京,

2006

[4]谢维成,杨加国,《单片机原理与应用及C51程序设计》,北京,清华大学出版社,2006



附录一:电路原理图





W2

Q6

W1

Q1

U3
74L

9

10

12

11

+5

J1

S1

+5

REST

1

U1

P00

39

P00

1

a
9

a

10

a
12

11

a

b

DS1

DPY_7-SEG_DP

P10/T

2

DPY

f

g

b f

g

b f

g

b f

g

2

38

P01

P11/T

P01

3

3

37

P02

+C1
22UF

P12

P02

4

e

d

c e

d

c e

d

c e


d



c

4

36

P03

P13

P03

5

5

35

P04

a

dp

dp
g

f

dp

dp

dp

P14

P04

6

SW-PB

6

34

P05

P15

P05

7

7

33

P06

R1

P16

P06

8

1
2

3

4
5
6

7
8

8

32

P07

P17

P07

9

Q5
Q4

Q8

Q3
Q7
W4

Q2
W3

C2

200

R2

+5

13

INT1

P20

21

P23

103

+5

Q8
P07

P06
Q7
Q6
P05
P04
Q5
P27

U2

+5

P07

P06

P05

P04

P26

12

22

INT0

P21

23

P22

X1

1K

15

T1

24

P23

14

25

T0

P24

26

27P

31

EA/VP

P25

P26

27

P26

28

P27

P27

C3

Y1

X1 19

X1

40

+5

11.0592M HZ

X2 18

vcc

X2

X2

REST

20

GND

10

CAP

RESET

RXD

20
19
18

17
16
15
14
13
12
11

20
19
18

17
16
15
14

13
12
11

11

17

TXD

RD

30

ALE/P

16

29

WR

PSEN

VCC
Q8
D8

D7
Q7
Q6
D6
D5

Q5
LE

VCC

Q8
D8

D7
Q7
Q6
D6
D5
Q5
LE

74LS373

8052

OE
Q1
D1
D2
Q2
Q3
D3
D4
Q4

GND

OE

Q1
D1
D2
Q2
Q3
D3
D4
Q4

GND

1
2
3

4
5
6
7
8
9

10

1
2
3
4
5
6
7
8























































































































































































































































































































































































































































































































































































































































附录二:C 语言程序
#define uint unsigned int
sbit ds=P2^3;
sbit dula=P2^7;
sbit wela=P2^6;
sbit beep=P1^7;
uchar flag ;
uinttemp; //参数temp 一定要声明为int
uchar codetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,

0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

//不带小数点数字编




ucharcode table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd, 0x87,0xff,0xef}; //带小数点数字编码

/*延时函数*/
voidTempDelay (uchar us)
{
while(us--);
}

void delay(uint count) //延时子函数{

while(count) { uint i;

i=200;
while(i>0)
i--;
count--;
}
}

/*串口初始化,波特率9600,方式1*/

void init_com()
{





TMOD=0x20; //设置定时器1为模式2 TH1=0xfd; //装初值设定波特率
TL1=0xfd;
TR1=1; //启动定时器
SM0=0;
//串口通信模式设置 SM1=1;
//REN=1; //串口允许接收数据
PCON=0; //波特率不倍频
// SMOD=0; //波特率不倍频
// EA=1; //开总中断
//ES=1; //开串行中断
}

/*数码管的显示 */

{ bai=temp/100;
shi=temp%100/10;
ge=temp%100%10;

dula=0;
P0=table[bai]; //显示百位

dula=1; dula=0;

wela=0;

//0 1,有个上升沿,解除锁存,显示相应段
//1 0 再次锁存




P0=0xfe;
wela=1;
wela=0;
delay(1); //延时约2ms

P0=table1[shi]; //显示十位
dula=1;
dula=0;

P0=0xfd;
wela=1;
wela=0;
delay(1);
dula=1;
dula=0;

P0=0xfb;
wela=1;
wela=0;
delay(1);
}
/*****************************************
时序:初始化时序、读时序、写时序。

所有时序都是将主机(单片机)作为主设备,单总线器件作为从设备。而每一次命令和数据的传输




都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。

初始化时序:复位脉冲存在脉冲
读;10时序
写;10时序
只有存在脉冲信号是从18b20(从机)发出的,其它信号都是由主机发出的。

存在脉冲:让主机(总线)知道从机(18b20)已经做好了准备。

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



-------------------------------------------------------------------------------------------------------------------*/
voidds_reset(void)
{
ds=1;
_nop_(); //1us
ds=0;
TempDelay(80); //当总线停留在低电平超过480us,总线上所以器件都将被复位,这里//延时约530us总线停留在低电平超过480μs,总线上的所有器

件都
//将被复位。





_nop_();
ds=1; //产生复位脉冲后,微处理器释放总线,让总线处于空闲状态,原因查//18b20中文资料

TempDelay(5); //释放总线后,以便从机18b20通过拉低总线来指示其是否在线,
//存在检测高电平时间:15~60us,所以延时44us,进行1-wirepresence //detect(单线存在检测)
_nop_();
_nop_();
_nop_();
if(ds==0)

else flag=1; //detect 18b20 success
_nop_();
ds=1; //再次拉高总线,让总线处于空闲状态
/**/
}

/*----------------------------------------
/写时间隙:
DS1820的数据读写是通过时间隙处理

位和命令字来确认信息交换。

------------------------------------------*/





bit ds_read_bit(void) //读一位
{
bit dat;
ds=0; //单片机(微处理器)将总线拉低
_nop_(); //读时隙起始于微处理器将总线拉低至少1us
ds=1; //拉低总线后接着释放总线,让从机18b20能够接管总线,输出有效数据
_nop_();
_nop_(); //小延时一下,读取18b20上的数据,因为从ds18b20上输出的数据
//在读"时间隙"下降沿出现15us内有效
dat=ds; //主机读从机18b20输出的数据,这些数据在读时隙的下降沿出现//15us内有效

}

{

TempDelay(10); return(dat);

//所有读"时间隙"必须60~120us,这里77us //返回有效数据


ucharvalue,i,j;
value=0;
for(i=0;i<8;i++)
{
j=ds_read_bit();
value=(j<<7)|(value>>1);
}
return(value); //返回一个字节的数据

}
void ds_write_byte(uchar dat) //写一个字节




{
uchar i;
bit onebit; //一定不要忘了,onebit是一位
for(i=1;i<=8;i++)
{
onebit=dat&0x01;
dat=dat>>1;
if(onebit) //1
{
ds=0;
_nop_();
_nop_(); //看时序图,至少延时1us,才产生写"时间隙"ds=1;
//写时间隙开始后的15μs内允许数据线拉到高电平 TempDelay(5); //所有写时间隙必须最少持续60us
} else //0

ds=0; {

电平并保持至少60μs,这里us
ds=1;
_nop_();
_nop_();
}
}
}

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





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

/*----------------------------------------
进行温度转换:
先初始化
然后跳过ROM:跳过ROM地址,直接向ds18B20发温度转换命令,适合单片工作
发送温度转换命令
------------------------------------------*/

void tem_change() {
ds_write_byte(0x44);
}

/*----------------------------------------
获得温度:
------------------------------------------*/
uintget_temperature()
{

float wendu;
uchar a,b;





ds_reset();
delay(1); //2ms
ds_write_byte(0xcc);
ds_write_byte(0xbe);
a=ds_read_byte();
b=ds_read_byte();
temp=b;
temp<<=8;
temp=temp|a;
wendu=temp*0.0625;
temp=wendu*10+0.5;
return temp;
}
/*----------------------------------------
ROM------------------------------------------*/

{ /*

uchara,b;
ds_reset();
delay(30);
ds_write_byte(0x33);
a="ds"_read_byte();
b="ds"_read_byte();
}
*/
voidbaojing(temp)
{

if(temp>30)
{beep=0;}





}
voidmain()
{
uint a;
init_com();

while(1)
{
tem_change(); //12位转换时间最大为750msbaojing(get_temperature());
for(a=10;a>0;a--)
{
display(get_temperature());

}

}

}





Copyright © 2019- yrrf.cn 版权所有 赣ICP备2024042794号-2

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务