温度监控系统程序设计Word下载.docx

上传人:b****5 文档编号:16476359 上传时间:2022-11-24 格式:DOCX 页数:10 大小:321.17KB
下载 相关 举报
温度监控系统程序设计Word下载.docx_第1页
第1页 / 共10页
温度监控系统程序设计Word下载.docx_第2页
第2页 / 共10页
温度监控系统程序设计Word下载.docx_第3页
第3页 / 共10页
温度监控系统程序设计Word下载.docx_第4页
第4页 / 共10页
温度监控系统程序设计Word下载.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

温度监控系统程序设计Word下载.docx

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

温度监控系统程序设计Word下载.docx

报警功能:

上位机和下位机上均设置有报警功能,上位机中,采用语音或者警示灯报警,同时还有相关提示;

下位机则采用报警灯和报警蜂鸣器提示;

图1

图2

图3

图4

 

2)本文主要讲解上位机程序的编写(VC++),下位机串口通信程序编写(C51),以及温度传感器的驱动程序的编写(C51).

2.DS18B20及驱动程序

美国DALLAS公司生产的DS18B20,采用独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯,测温范围-55℃~+125℃,固有测温分辨率0.5℃,工作电源:

3~5V/DC,在使用中不需要任何外围元件,测量结果以9~12位数字量方式串行传送,DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。

因为一线通信接口,必须在先完成ROM设定,否则记忆和控制功能将无法使用。

主要首先提供以下功能命令之一:

1)读ROM,2)ROM匹配,3)搜索ROM,4)跳过ROM,5)报警检查。

这些指令操作作用在没有一个器件的64位光刻ROM序列号,可以在挂在一线上多个器件选定某一个器件,同时,总线也可以知道总线上挂有有多少,什么样的设备。

以下给出DS18B20的驱动程序:

typedefunsignedchar 

BYTE;

typedefunsignedint 

WORD;

typedefsignedchar 

CHAR;

sbitDS18B20=P2^2;

//定义DS18B20温度传感器端口,接单片机P2.2口

BYTEbDS18B20Reset(void);

//sendresetandinitializationcommand

bitTmpreadByteBit(void);

//readabit

BYTEbTmpreadByte(void);

//readabytedate

voidTmpWriteByte(BYTE);

//writeabytetods18b20

voidTmpChange(void);

//DS18B20beginchange

WORDwGetTmp();

//getthetemperature

voidDelay1ms1(WORDwTime);

//Delaytimefuction

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

函数名:

DS18B20Reset(void) 

功能:

sendresetandinitializationcommand

作者:

Koby

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

BYTEbDS18B20Reset(void) 

{

WORDwCnt;

DS18B20=0;

wCnt=103;

while(wCnt--);

DS18B20=1;

wCnt=4;

return(DS18B20);

}

TmpreadByteBit(void) 

readabit

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

bitTmpreadByteBit(void) 

WORDwCnt=0;

bitfgDat;

wCnt++;

//wCnt++forDelay1ms

fgDat=DS18B20;

wCnt=8;

return(fgDat);

TmpreadByte(void)

readabytedate

BYTEbTmpreadByte(void) 

BYTEi,j,bData=0;

for(i=0;

i<

8;

i++){

j=TmpreadByteBit();

bData=(j<

<

7)|(bData>

>

1);

//读出的数据最低位在最前面,这样刚好一个字节在Data里

return(bData);

TmpWriteByte(BYTEbComond)

writeabytetoDS18B20

bData为指令码:

===================================================================================

ROM指令码 

|

------------------------------------|----------------------------------------------

0x33 

ReadROM(读ROM)

----------------------------------|----------------------------------------------

0x55 

MatchROM(指定匹配芯片)

0xCC 

Skip 

ROM(跳跃ROM指令)

0xFO 

SearchROM(搜索芯片)

0xEC 

AlarmSearch(报警芯片搜索) 

储存器指令码 

0x4E 

WriteScratchpad(向RAM中写数据) 

0xBE 

ReadScratchpad(从RAM中读数据) 

0x48 

CopyScratchpad(将RAM数据复制到EEPROM中) 

0x44 

ConvertT(温度转换) 

0xB8 

RecallEEPROM(将EEPROM中的报警值复制到RAM)

0xB4 

ReadPowerSupply(工作方式切换)

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

voidTmpWriteByte(BYTEbComond) 

WORDi;

BYTEj;

bitfgTestb;

for(j=1;

j<

=8;

j++){

fgTestb=bComond&

0x01;

bComond=bComond>

1;

if(fgTestb){ 

//write1 

i++;

i=8;

while(i--);

else 

//write0

TmpChange(void) 

DS18B20beginchange

voidTmpChange(void) 

bDS18B20Reset();

Delay1ms1

(1);

TmpWriteByte(0xCC);

//addressalldriversonbus

TmpWriteByte(0x44);

// 

initiatesasingletemperatureconversion

wGetTmp() 

Getthetemperaturevalue

WORDwGetTmp() 

WORDwTemp;

//variableoftemperature

floatfTemp;

BYTEbTmp1,bTmp2;

Delay1ms1

(2);

TmpWriteByte(0xBE);

bTmp1=bTmpreadByte();

bTmp2=bTmpreadByte();

wTemp=bTmp2;

wTemp=wTemp<

//twobyte 

composeaintvariable

wTemp=wTemp|bTmp1;

fTemp=wTemp*0.0625;

wTemp=fTemp*10+0.5;

//放大10倍,四舍五入

returnwTemp;

Delay1ms(WORDwTime)

延时

voidDelay1ms1(WORDwTime)

WORDw1,w2;

if(wTime==0)return;

for(w1=wTime;

w1>

0;

w1--)

for(w2=100;

w2>

w2--);

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

当前位置:首页 > 高中教育 > 其它课程

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

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