基于单片机的多点温度采集与记录系统

基于单片机的多点温度采集与记录系统
基于单片机的多点温度采集与记录系统

多点温度采集与记录系统

目录

一、引言 (4)

二、硬件设计 (5)

三、软件设计 (9)

四、总结 (11)

五、参考文献 (12)

六、程序附录 (13)

一、引言

温度(K)是一个和人们生活环境有着密切关系的物理量,也是一种在生产、科研、生活中需要测量和控制的重要物理量。在工、农业生产和日常生活中,占据着极其重要地位。工业发展与是否能掌握温度有着密切的联系。在冶金、钢铁、石化、水泥、玻璃、医药等行业都与之有关,可以说几乎80%的工业部门都不得不考虑温度对自身系统的影响。本设计是基于单片机的多点温度采集系统设计,多点温度测量显示是近几年的研究课题,随着传感技术与通讯技术的发展,单片机的出现,温度测量仪器应运而生,最近几年的研究更是迅速。采用单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。单片机以其功能强、体积小、可靠性高、造价低和开发周期短等优点,成为自动化和各个测控领域中必不可少且广泛应用的器件,尤其在日常生活中也发挥越来越大的作用。因此,本课题的研究在实际应用中意义十分重大。

二、硬件设计

2.1总体方案

硬件设计主要是温度测量模块的容,本设计由AT89C51单片机,LCD1602液晶显示屏,DS18B20温度传感器,以及DB9通信接口。一共包括三大模块:控制模块,温度采集模块,温度显示模块。总体方案如下图所示:

1.1 系统总方案图

2.1.1 控制模块功能

控制模块在系统的功能是控制温度采集模块完成温度采集并将采集到的温度读入控制模块的数据寄存器,再将从温度采集模块读取的温度数据写入显示模块并控制显示模块完成温度的显示。其中主控单位是AT89C52。

2.1.2 温度采集模块功能

温度采集模块的主要功能是通过温度传感器感应温室温度并转化成模拟信号,通过转化模块将模拟信号转化成数字信号,并存取温度数据。本设计采用2个DS18B20温度传感器,温度传感器DS18B20采用的电压是部电压,大小为5V,一个引脚接地,一个引脚接+5V电源,中间的引脚是数据的输入输出口。由于每个单片机开发板上有两个温度传感器,所以一个传感器的输出是P1.4,另一个传感器的输出是P1.5。使用时将一个传感器接到单片机的18b20接口,接口的1脚接18b20的地端,接口的3脚接18b20的电源,另一个温度传感器的电源接到P0.0口,数据读写端接到P1.5口,地端接到单片机的接地端,下面是温度传感器DS18B20的时序图。

图1.2 温度传感器DS18B20时序图

2.1.3 温度显示模块功能

温度显示模块的主要功能是在控制模块的控制下将控制模块写入的数据显示在液晶屏上,便于读取温度数值。显示模块采用LCD1602液晶屏。1602共16个管脚,但是编程用到的主要管脚不过三个,分别为:RS(数据命令选择端),R/W (读写选择端),E(使能信号);以后编程便主要围绕这三个管脚展开进行初始化,写命令,写数据。

以下具体阐述这三个管脚:

RS为寄存器选择,高电平选择数据寄存器,低电平选择指令寄存器。

R/W为读写选择,高电平进行读操作,低电平进行写操作。

E端为使能端,后面和时序联系在一起。

除此外,D0~D7分别为8位双向数据线。其操作时序如下图所示:

图1.3 LCD1602时序图

2.1.4温读报警模块

温度报警模块主要由2个led灯组成,当温度的采集值高于设定的温度上限或者低于设定的温度下限时,led灯将由暗变亮进行报警,此时此时设计者就可以改变室外的温度满足温度的需求,此报警简单易懂,可操作性强。

2、硬件电路仿真

根据设计的总方案在pretues中仿真,其结果如图所示;

图1.4硬件电路仿真

当温度超过高于设定的温度上限(此处设定38℃)或者低于下限(此处设定12℃)时,led灯发生报警。其仿真图如下所示:

图1.3 温度报警显示

三、软件设计

软件设计包括下位机编程和PC机编程,下位机编程完成ds18b20的温度采集、数据处理、数码管显示,串口中断处理及硬件初始化,通信协议的制定及数据的收发。通过串口通信将温度数据在上位机上面显示,并且编译VB程序,实现报警显示。

上位机程序工程:

图3.1上位机工程显示

当温度1是35℃,温度计2是13℃时:

当温度1是39℃,温度计2是11℃时:

四、总结

通过这次课程学习制作,令我学到了很多东西受益匪浅,仿佛又经历了一次系统学习,在作做课程前,我的导师也要求我做一些温度采集的设计,我一直在查找相关资料,这次的设计让我对多点温度采集的知识了解了许多,同时也上位机编程有了初步的概念。一直来认为做这些设计没什么困难,但在实际运作过程中才清楚地认识到自己的不足和短练,端正了学习态度。这次设计使我加深巩固了基础知识,更加深刻的把握到基础知识的重要,提高了动手和实际解决问题的能力,提高了对问题整体规划的意识。能把握重点设计的核心,并提高查阅资料的能力,培养了团队合作精神和人际交往能力。由于本人水平有限,难免有考虑不足之处,所以恳请老师同学们批评指正。

五、参考文献

[1]谭浩强《C程序设计》,清华大学

[2]童诗白《模拟电子技术基础(第四版)》,高等教育

[3]恢先、黄辉先《单片机原理及应用》,人民邮电

[4]何立民《单片机高级教程--应用于设计(第二版)》,航空航天大学

[5]蔡《单片机控制实习与专题制作》,航空航天大学

[6]伏加、林峰《Visual Basic程序设计教程(第4版)》,邮电大学

六、程序附录

单片机c语言代码:

#include

#include //标准输入输出

#include

#define uchar unsigned char

#define uint unsigned int;

#define ulong unsigned long;

/******************************************************************/ /* 定义端口 */ /******************************************************************/ #define Data P0//数据端口

sbit RS = P2^4; //Pin4

sbit RW = P2^5; //Pin5

sbit E = P2^6; //Pin6

sbit DQ=P1^3;//ds18b20 端口

sbit DQ1=P1^4;//ds18b20 端口改动

sbit D0=P1^6;

sbit D1=P1^5;

/******************************************************************/ /* 全局变量 */ /******************************************************************/ uint temp=0,temp1=0;

float t0,t1;

float high=38,low=12,change=0;

unsigned char point_flag=0,key_flag=0;

unsigned char receive[5];

unsigned char receive_no=0;

unsigned char receive_flag=0;

char Text[]=" ";

uchar code TPoint[16]={0, 1, 1, 2, 3, 3, 4, 4, 5, 6, 6, 7, 8, 8, 9, 9 }; /* 函数声明 */ /******************************************************************/ /******************************************************************/ /* 微秒延时函数 */ /******************************************************************/ void DelayUs(unsigned char us)//delay us

{

unsigned char uscnt;

uscnt=us>>1; /*12MHz频率*/

while(--uscnt);

}

/******************************************************************/ /* 毫秒函数声明 */ /******************************************************************/ void DelayMs(unsigned char ms)

{

while(--ms)

{

DelayUs(250);

DelayUs(250);

DelayUs(250);

DelayUs(250);

}

}

/******************************************************************/ /* 1602写入命令函数

*/

/******************************************************************/ void WriteCommand(unsigned char c)

{

DelayMs(5);//操作前短暂延时,保证信号稳定

E=0;

RS=0;

RW=0;

_nop_();

E=1;

Data=c;

E=0;

}

/******************************************************************/ /* 1602写入数据函数 */ /******************************************************************/ void WriteData(unsigned char c)

{

DelayMs(5); //操作前短暂延时,保证信号稳定

E=0;

RS=1;

RW=0;

_nop_();

E=1;

Data=c;

E=0;

RS=0;

}

/******************************************************************/ /* 1602写入字节函数 */ /******************************************************************/ void ShowChar(unsigned char pos,unsigned char c)

{

unsigned char p;

if (pos>=0x10)

p=pos+0xb0; //是第二行则命令代码高4位为0xc

else

p=pos+0x80; //是第二行则命令代码高4位为0x8

WriteCommand (p);//写命令

WriteData (c); //写数据

}

/******************************************************************/ /* 1602写入字符串函数 */ /******************************************************************/ void ShowString (unsigned char line,char *ptr)

{

unsigned char l,i;

l=line<<4;

for (i=0;i<16;i++)

ShowChar (l++,*(ptr+i));//循环显示16个字符

}

/******************************************************************/ /* 1602初始化函数 */ /******************************************************************/ void InitLcd()

{

DelayMs(15);

WriteCommand(0x38); //display mode

WriteCommand(0x38); //display mode

WriteCommand(0x38); //display mode

WriteCommand(0x06); //显示光标移动位置

WriteCommand(0x0c); //显示开及光标设置

WriteCommand(0x01); //显示清屏

}

/******************************************************************/ /* 18b20延时函数

*/

/******************************************************************/ void delay(unsigned int i)//延时函数

{

while(i--);

}

/******************************************************************/ /* 18b20初始化

*/

/******************************************************************/ void Init_DS18B20(void)

{

unsigned char x=0;

DQ = 1; //DQ复位

delay(8); //稍做延时

DQ = 0; //单片机将DQ拉低

delay(80); //精确延时大于 480us

DQ = 1; //拉高总线

delay(10);

x=DQ; //稍做延时后如果x=0则初始化成功 x=1则初始化失败

delay(5);

}

void Init_DS18B201(void)

{

unsigned char x=0;

DQ1 = 1; //DQ复位

delay(8); //稍做延时

DQ1 = 0; //单片机将DQ1拉低

delay(80); //精确延时大于 480us

DQ1 = 1; //拉高总线

delay(10);

x=DQ1; //稍做延时后如果x=0则初始化成功 x=1则初始化失败

delay(5);

}

/******************************************************************/ /* 18b20读一个字节

*/

/******************************************************************/ unsigned char ReadOneChar(void)

{

unsigned char i=0;

unsigned char dat = 0;

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

{

DQ = 0; // 给脉冲信号

dat>>=1;

DQ = 1; // 给脉冲信号

if(DQ)

dat|=0x80;

delay(5);

}

return(dat);

}

unsigned char ReadOneChar1(void)

{

unsigned char i=0;

unsigned char dat = 0;

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

{

DQ1 = 0; // 给脉冲信号

dat>>=1;

DQ1 = 1; // 给脉冲信号

if(DQ1)

dat|=0x80;

delay(5);

}

return(dat);

}

/******************************************************************/ /* 18b20写一个字节

*/

/******************************************************************/ void WriteOneChar(unsigned char dat)

{

unsigned char i=0;

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

{

DQ = 0;

DQ = dat&0x01;

delay(5);

DQ = 1;

dat>>=1;

}

delay(5);

}

void WriteOneChar1(unsigned char dat)

{

unsigned char i=0;

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

{

DQ1 = 0;

DQ1 = dat&0x01;

delay(5);

DQ1 = 1;

dat>>=1;

}

delay(5);

}

/******************************************************************/ /* 18b20读取温度

*/

/******************************************************************/ unsigned int ReadTemperature(void)

{

unsigned char a=0;

unsigned int b=0;

unsigned int t=0;

Init_DS18B20();

WriteOneChar(0xCC); // 跳过读序号列号的操作

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

delay(200);

Init_DS18B20();

WriteOneChar(0xCC); //跳过读序号列号的操作

WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器)前两个就是温度

a=ReadOneChar(); //低位

b=ReadOneChar(); //高位

b<<=8;

t=a+b;

return(t);

}

unsigned int ReadTemperature1(void)

{

unsigned char a=0;

unsigned int b=0;

unsigned int t=0;

Init_DS18B201();

WriteOneChar1(0xCC); // 跳过读序号列号的操作

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

delay(200);

Init_DS18B201();

WriteOneChar1(0xCC); //跳过读序号列号的操作

WriteOneChar1(0xBE); //读取温度寄存器等(共可读9个寄存器)前两个就是温度

a=ReadOneChar1(); //低位

b=ReadOneChar1(); //高位

b<<=8;

t=a+b;

return(t);

}

void UartInit(void) //4800bps11.0592MHz

{

SCON = 0x50;

TMOD |= 0x20;

TL1 = 0xFD;

TH1 = 0xFD;

TR1 = 1;

ES = 1;

EA = 1;

}

/******************************************************************/ /* 主函数 */ /******************************************************************/ main()

{

unsigned int TempL,TempH,TempL1,TempH1;//state,i,j,k;

float wendu;

InitLcd(); //初始化LCD

DelayMs(15); //延时保证信号稳定

UartInit();

EX0=1;

IT0=1;

while(1)

{

temp=ReadTemperature();

temp1=ReadTemperature1();

t0=temp*0.0625;

t1=temp1*0.0625;

TempH=temp>>4;

TempL=TPoint[temp&0x0F];

TempH1=temp1>>4;

TempL1=TPoint[temp1&0x0F];

if(t0high)

{

D0=0;

}

else

{

D0=1;

}

if(t1high)

{

D1=0;

}

else

{

D1=1;

}

SBUF=0xff;//校验

while(!TI);

TI=0;

SBUF=TempH;

while(!TI);

TI=0;

SBUF=TempL;

while(!TI);

TI=0;

SBUF=TempH1;

while(!TI);

TI=0;

SBUF=TempL1;

while(!TI);

TI=0;

SBUF=(int)wendu;

while(!TI);

TI=0;

SBUF=(int)(wendu*10)%10; while(!TI);

TI=0;

SBUF=(int)high;

while(!TI);

TI=0;

SBUF=(int)(high*10)%10;

while(!TI);

TI=0;

SBUF=(int)low;

while(!TI);

TI=0;

SBUF=(int)(low*10)%10;

while(!TI);

TI=0;

ShowString(0,Text);

if(key_flag==0)

sprintf(Text,"%d.%d%cC,%d.%d%cC

",TempH,TempL,0xdf,TempH1,TempL1,0xdf);//打印输出第二行信息

else

sprintf(Text,"U:%d.%d%%,D:%d.%d%%

",(int)high,(int)(high*10)%10,(int)low,(int)(low*10)%10);//打印输出第二行信息

}

}

void s(void) interrupt 4

{

if(RI)

{

RI=0;

if (receive_flag==0)

{

receive_no=0;

receive[receive_no]=SBUF;

if (receive[receive_no]==0x63)

{

receive_flag=1;

change=0;

point_flag=0;

}

}

else

{

receive_flag=0;

receive[receive_no]=SBUF;

if(receive[receive_no]!=0x61 && receive[receive_no]!=0x62 &&

receive[receive_no]!=0x2E && point_flag==0)

{

change=change*10+receive[receive_no]-'0';

receive_no++;

receive_flag=1;

}

else if(receive[receive_no]==0x2E&&change!=0)

{

point_flag=1;

receive_no++;

receive_flag=1;

}

else if(receive[receive_no]!=0x61 &&

receive[receive_no]!=0x62 && receive[receive_no]!=0x2E && point_flag==1)

{

change+=(receive[receive_no]-'0')*0.1;

receive_no++;

receive_flag=1;

point_flag=0;

}

else if(receive[receive_no]==0x61)

{

high=change;

change=0;

receive_flag=0;

receive_no=0;

point_flag=0;

}

else if(receive[receive_no]==0x62)

{

low=change;

change=0;

receive_flag=0;

receive_no=0;

point_flag=0;

}

}

}

}

void ISR_Key(void) interrupt 0 using 1

{

单片机温度采集显示系统

考试序列号____ 单片机课程设计论文 论文题目:温度采集显示系统 课程名称:单片机课程设计 学院物理与光电工程学院 专业班级 08电子3班 学号 3108009223 姓名梁辉浩 联系方式 任课教师 20 年月日

温度采集显示系统 一、功能和要求: (1)温度测量范围 0 - 99℃。 (2)温度分辨率±1℃。 (3)选择合适的温度传感器。 (4)使用键盘输入温度的最高点和最低点,温度超出范围时候报警。(报警温度不需要保存) 二、系统方案: 方案一:由于本设计是测温电路,可以使用热敏电阻之类的器件利用其感温效应,在将随被测温度变化的电压或电流采集过来,进行A/D转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来,这种设计需要用到A/D转换电路,感温电路比较麻烦。 方案二:进而考虑到用温度传感器,在单片机电路设计中,大多都是使用传感器,所以这是非常容易想到的,所以可以采用一只温度传感器DS18B20,此传感器,可以很容易直接读取被测温度值,进行转换,就可以满足设计要求。 从以上两种方案,很容易看出,采用方案二,电路比较简单,软件设计也比较简单,故采用了方案二。 三、核心元件的功能 1、AT89C51 AT89S51美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含4K BytesISP(In-system programmable)的可反 复擦写1000次的Flash只读程序存储器,器 件采用ATMEL公司的高密度、非易失性存储技 术制造,兼容标准MCS-51指令系统及AT89C51 引脚结构,芯片内集成了通用8位中央处理器 和ISP Flash存储单元。单片机AT89S51强大 的功能可为许多嵌入式控制应用系统提供高 性价比的解决方案。 AT89C51芯片的引脚结构如图1所示: 1.1功能特性概括: AT89S51提供以下标准功能:40个引脚、 4K Bytes Flash片内程序存储器、128 Bytes 的随机存取数据存储器(RAM)、32个外部双

基于单片机的多路温度采集系统毕业设计(论文)外文翻译

华南理工大学学院 本科毕业设计(论文)外文翻译 外文原文名Structure and function of the MCS-51 series 中文译名MCS-51系列的功能和结构 学院电子信息工程学院 专业班级自动化一班 学生黎杰明 学生学号 3 指导教师吴实 填写日期2016年3月10日 页脚.

外文原文版出处:《association for computing machinery journal》1990, V ol.33 (12), pp.16-ff 译文成绩:指导教师(导师组长)签名: 译文: MCS-51系列的功能和结构 MSC-51系列单片机具有一个单芯片电脑的结构和功能,它是英特尔公司的系列产品的名称。这家公司在1976年推出后,引进8位单芯片的MCS-48系列计算机后于1980年推出的8位的MCS-51系列单芯片计算机。诸如此类的单芯片电脑有很多种,如8051,8031,8751,80C51BH,80C31BH等,其基本组成、基本性能和指令系统都是相同的。8051是51系列单芯片电脑的代表。 一个单芯片的计算机是由以下几个部分组成:(1)一个8位的微处理器(CPU)。(2)片数据存储器RAM(128B/256B),它只读/写数据,如结果不在操作过程中,最终结果要显示数据(3)程序存储器ROM/EPROM(4KB/8KB).是用来保存程序一些初步的数据和切片的形式。但一些单芯片电脑没有考虑ROM/EPROM,如8031,8032,80C51等等。(4)4个8路运行的I/O接口,P0,P1,P2,P3,每个接口可以用作入口,也可以用作出口。(5)两个定时/计数器,每个定时方式也可以根据计算结果或定时控制实现计算机。(6)5个中断(7)一个全双工串行的I/UART(通用异步接收器I口/发送器(UART)),它是实现单芯片电脑或单芯片计算机和计算机的串行通信使用。(8)振荡器和时钟产生电路,需要考虑石英晶体微调能力。允许振荡频率为12MHz,每个上述的部分都是通过部数据总线连接。其中CPU是一个芯片计算机的核心,它是计算机的指挥中心,是由算术单元和控制器等部分组成。算术单元可以进行8位算术运算和逻辑运算,ALU单元是其中一种运算器,18个存储设备,暂存设备的积累设备进行协调,程序状态寄存器PSW积累了2个输入端的计数等检查暂时作为一个操作往往由人来操作,谁储存1输入的是它使操作去上暂时计数,另有一个操作的结果,回环协调。此外,协调往往是作为对8051的数据传输转运站考虑。作为一般的微处理器,解码的顺序。振荡器和定时电路等的程序计数器是一个由8个计数器为2,总计16位。这是一个字节的地址,其实程序计数器,是将在个人电脑进行。从而改变它的容可以改变它的程序进行。在8051的单芯片电脑的电路,

基于AT89C51单片机的温度传感器

基于AT89C51单片机的温度传感器 目录 摘要.............................................................. I ABSTRACT........................................................... I I 第一章绪论 (1) 1.1 课题背景 (1) 1.2本课题研究意义 (2) 1.3本课题的任务 (2) 1.4系统整体目标 (2) 第二章方案论证比较与选择 (3) 2.1引言 (3) 2.2方案设计 (3) 2.2.1 设计方案一 (3) 2.2.2 设计方案二 (3) 2.2.3 设计方案三 (3) 2.3方案的比较与选择 (4) 2.4方案的阐述与论证 (4) 第三章硬件设计 (6) 3.1 温度传感器 (6) 3.1.1 温度传感器选用细则 (6) 3.1.2 温度传感器DS18B20 (7) 3.2.单片机系统设计 (13)

3.3显示电路设计.................................错误!未定义书签。 3.4键盘电路设计................................错误!未定义书签。 3.5报警电路设计.................................错误!未定义书签。 3.6通信模块设计.................................错误!未定义书签。 3.6.1 RS-232接口简介..............................错误!未定义书签。 3.6.2 MAX232芯片简介.............................错误!未定义书签。 3.6.3 PC机与单片机的串行通信接口电路.............错误!未定义书签。 第四章软件设计..................................错误!未定义书签。 4.1 软件开发工具的选择..........................错误!未定义书签。 4.2系统软件设计的一般原则.......................错误!未定义书签。 4..3系统软件设计的一般步骤......................错误!未定义书签。 4.4软件实现....................................错误!未定义书签。 4.4.1系统主程序流程图.........................错误!未定义书签。 4.4.2 传感器程序设计...........................错误!未定义书签。 4.4.3 显示程序设计.............................错误!未定义书签。 4.4.4 键盘程序设计.............................错误!未定义书签。 4.4.5 报警程序设计.............................错误!未定义书签。 4.4.6 通信模块程序设计.........................错误!未定义书签。 第五章调试与小结..................................错误!未定义书签。致谢...............................................错误!未定义书签。参考文献...........................................错误!未定义书签。附录...............................................错误!未定义书签。系统电路图.......................................错误!未定义书签。系统程序.........................................错误!未定义书签。

单片机课程设计说明书 多点温度采集电路设计

单片机课程设计说明书题目:多点温度采集电路设计

课程设计(论文)任务书 I、课程设计(论文)题目: 多点温度采集电路设计 II、课程设计(论文)使用的原始资料(数据)及设计技术要求: 1.设计一个基于单片机的多点温度采集电路,至少可采集8个点。 2.测温范围:0℃-800℃。 3.采用LED数码直读显示检测点、温度。 4.温度分辨率:1℃。 5.应用protel画出原理图,给出硬件清单。 II、课程设计(论文)工作内容及完成时间: 5月21日至5月23日:查找资料,方案论证; 5月24日至5月25日:总体设计; 5月25日至5月30日:软、硬件详细设计与调试; 5月31日至6月1日:整理数据,撰写报告。 Ⅳ主要参考资料: 1.曹天汉.单片机原理与接口技术.北京:电子工业出版社,2006. 2.求是科技.单片机典型模块设计实例导航.北京:人民邮电出版社,2004. 3.李广弟,朱月秀,王秀山.单片机基础(修订本).北京:北京航空航天大学出版社,2001. 4.传感器电路分析与设计李道华、李玲、朱艳.武汉大学出版社,2000. 专业类班 学生:

日期:自2012年5月21日至2011年6月1日指导教师: 助理指导教师(并指出所负责的部分): 教研室主任: 附注:任务书应该附在已完成的课程设计说明书首页。 目录 △、设计摘要 (1) 一、设计背景 (2) 1.1 课题背景 (2) 1.2 课题的目标及意义 (2) 1.3 主要研究内容 (3) 二、设计准备 (4) 2.1设计时间安排 (4) 2.2设计需求 (4)

2.2.1 所需元件 (4) 2.2.2 部分元件解析 (4) 三、设计分析 (11) 3.1 总图展示 (11) 3.2 线口说明 (11) 四、设计总结 (16) 参考文献 (17)

基于单片机的温度测量系统设计

基于STC单片机的温度测量系统的研究 摘要:本文针对现有温度测量方法线性度、灵敏度、抗振动性能较差的不足,提出了一种基于STC单片机,采用Pt1000温度传感器,通过间接测量铂热电阻阻值来实现温度测量的方案。重点介绍了,铂热电阻测量温度的原理,基于STC实现铂热电阻阻值测量,牛顿迭代法计算温度,给出了部分硬件、软件的设计方法。实验验证,该系统测量精度高,线性好,具有较强的实时性和可靠性,具有一定的工程价值。 关键词:STC单片机、Pt1000温度传感器、温度测量、铂热电阻阻值、牛顿迭代法。 Study of Temperature Measurement System based on STC single chip computer Zhang Yapeng,Wang Xiangting,Xu Enchun,Wei Maolin Abstract:A method to achieve temperature Measurement by the Indirect Measurement the resistance of platinum thermistor is proposed. It is realized by the single chip computer STC with Pt1000temperature sensor.The shortcomings of available methods whose Linearity, Sensitivity, and vibration resistance are worse are overcame by the proposed method. This paper emphasizes on the following aspects:the principle of temperature measurement by using platinum thermistor , the measurement of platinum thermistor’s resistance based on STC single chip computer, the calculating temperature by Newton Iteration Method. Parts of hardware and software are given. The experimental results demonstrate that the precision and linearity of the method is superior. It is also superior in real-time character and reliability and has a certain value in engineering application. Keywords: STC single chip computer,Pt1000temperature sensor,platinum thermistor’s resistance,Newton Iteration Method 0 引言 精密化学、生物医药、精细化工、精密仪器等领域对温度控制精度的要求极高,而温度控制的核心正是温度测量。 目前在国内,应用最广泛的测温方法有热电偶测温、集成式温度传感器、热敏电阻测温、铂热电阻测温四种方法。 (1) 热电偶的温度测量范围较广,结构简单,但是它的电动势小,灵敏度较差,误差较大,实际使用时必须加冷端补偿,使用不方便。 (2) 集成式温度传感器是新一代的温度传感器,具有体积小、重量轻、线性度好、性能稳定等优点,适于远距离测量和传输。但由于价格相对较为昂贵,在国内测温领域的应用还不是很广泛。 (3) 热敏电阻具有灵敏度高、功耗低、价格低廉等优点,但其阻值与温度变化成非线性关系,在测量精度较高的场合必须进行非线性处理,给计算带来不便,此外元件的稳定性以及互换性较差,从而使它的应用范围较小。 (4)铂热电阻具有输出电势大、线性度好、灵敏度高、抗振性能好等优点。虽然它 的价格相对于热敏电阻要高一些,但它的综合性能指标确是最好的。而且它在0~200°C范

基于单片机的温度数据采集系统实验报告

基于单片机的温度数据采集系统实验报告 班级:电技10—1班 姓名:田波平 学号:1012020108 指导老师:仲老师

题目:基于单片机的温度数据采集系统 一.设计要求 1.被测量温度范围:0~120℃,温度分辨率为0.5℃。 2.被测温度点:2个,每5秒测量一次。 3.显示器要求:通道号2位,温度4位(精度到小数点后一位)。 显示方式为定点显示和轮流显示。 4.键盘要求: (1)定点显示设定;(2)轮流显示设定;(3)其他功能键。 二.设计内容 1.单片机及电源模块设计 单片机可选用AT89S51及其兼容系列,电源模块可以选用7805等稳压组件,本机输入电压范围9-12v。 2.存储器设计 扩展串行I2C存储器AT24C02。 要求: AT24C02的SCK接P3.2 AT24C02的SDA接P3.4 2.传感器及信号转换电路 温度传感器可以选用PTC热敏电阻,信号转换电路将PTC输出阻值转换为0-5V。 3.A/D转换器设计 A/D选用ADC0832。 要求: ADC0832的CS端接P3.5 ADC0832的DI端接P3.6 ADC0832的DO端接P3.7 ADC0832的CLK端接P2.1 4.显示器设计。 6位共阳极LED显示器,段选(a-h)由P0口控制,位选由P2.2-P2.7控制。数码管由2N5401驱动。 5.键盘电路设计。 6个按键,P2.2-P2.7接6个按键,P3.4接公共端,采用动态扫描方式检测键盘。 6.系统软件设计。 系统初始化模块,键盘扫描模块,数据采集模块,标度变换模块、显示模块等。 三.设计报告要求 设计报告应按以下格式书写: (1)封面; (2)设计任务书; (3)目录; (4)正文;

基于51单片机SHT11温湿度传感器检测程序.doc

基于51单片机SHT11温湿度传感器检测程序(含电路图) ? 下面是原理图: 下面是SHT11与MCU连接的典型电路:

下面是源代码: #include #include /******************************************************** 宏定义 ********************************************************/ #define uint unsigned int #define uchar unsigned char #define noACK 0 #define ACK 1 #define STATUS_REG_W 0x06 #define STATUS_REG_R 0x07 #define MEASURE_TEMP 0x03 #define MEASURE_HUMI 0x05 #define RESET 0x1e enum {TEMP,HUMI}; typedef union //定义共用同类型 { unsigned int i; float f; } value; /******************************************************** 位定义 ********************************************************/ sbit lcdrs=P2^0; sbit lcdrw=P2^1; sbit lcden=P2^2; sbit SCK = P1^0; sbit DATA = P1^1; /******************************************************** 变量定义 ********************************************************/ uchar table2[]="SHT11 温湿度检测"; uchar table3[]="温度为:℃"; uchar table4[]="湿度为:"; uchar table5[]="."; uchar wendu[6]; uchar shidu[6]; /******************************************************** 1ms延时函数 ********************************************************/ void delay(int z) {

(完整版)基于单片机的多点温度检测系统毕业设计论文

集成电路课程设计 课题:基于AT89C51单片机的多点温度测量系统设 计 姓名:韩颖 班级:测控12-1 学号:

指导老师:汪玉坤 日期: 目录 一、绪论 二、总体方案设计 三、硬件系统设计 1主控制器 2 显示模块 3温度采集模块 (1)DS18B20的内部结构 (2)高速暂存存储器 (3)DS18B20的测温功能及原理 (4)DS18B20温度传感器与单片机的连接

(5)单片机最小系统总体电路图 四、系统软件设计 五、系统仿真 六、设计总结 七、参考文献 八、附源程序代码 一、绪论 在现代工业控制中和智能化仪表中,对于温度的控制,恒温等有较高的要求,如对食品的管理,冰箱的恒温控制,而且现在越来越多的地方用到多点温度测量,比如冰箱的保鲜层和冷冻层是不同的温度这就需要多点的测量和显示可以让用户直观的看到温度值,并根据需要调节冰箱的温。它还在其他领域有着广泛的应用,如:消防电气的非破坏性温度检测,电力、电讯设备之过热故障预知检测,空调系统的温度检测。。。。。。温度检测系统应用十分广阔。 本设计采用DALLAS最新单线数字温度传感器DS18B20 简介新的"一线器件"体积更小、适用电压更宽、更经济DALLAS 半导体公司的数字化温度传感器DS18B20是世界上第一片支持"一线总线",测量温度范围为-55°C~+125°C,在-10~+85°C范围内,精度为±0.5°二、设计过程及工艺要求 1、基本功能 (1)检测两点温度 (2)两秒间隔循环显示温度 2、主要技术参数 测温范围:-30℃到+99℃

测量精度:0.0625℃ 显示精度:0.1℃ 显示方法:LCD循环显示 3、系统设计 系统使用AT89C51单片机对两个DS18B20进行数据采集,并通过1602LCD液晶显示器显示所采集的温度。 DS18B20以单总线协议工作,51单片机首先分别发送复位脉冲,使信号上所有的DS18B20芯片都被复位,程序先跳过ROM,启动DS18B20进行温度变换,再读取存储器的第一位和第二位读取温度,通过IO口传到1602LCD显示。 1 2 3 图(1)DS18B20引脚图 引脚定义如图(1): (1) GND为电源地; (2) DQ为数字信号输入输出端; (3) Vcc为外接供电电源输入端(在寄生电源接线方式时接地)。 4、设计原理框图 图(2)原理框图 三、硬件设计 1、主控制器(单片机) 基于设计的要求要使用AT89C51单片机作为本系统设计的核心器件。由于 AT89C51 单片机是一种带 4K 字节闪烁可编程可擦除只读存储器的低电压,高性能cMOS8 位微处理器。该器件采用 ATMEL 高密度非易失存储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由于将多功能8 位 CPU 和闪烁存储器组合在单个芯片中,ATMEL 的AT89C51 是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性

单片机温度采集系统

课程设计 课程设计名称:温度采集装置 班级:数控技术0901 学号: 课程设计时间:2011.12.5—12.11

目录 1 设计任务 (2) 2 确定设计方案 (3) 2.1 温度传感器—AD22100K (3) 2.2 A/D转换器—ADC0809 (4) 2.3 单片机的选择—80C51 (6) 2.4 显示器接口—LED动态显示接口 (8) 3 硬件电路的设计 (10) 3.1 温度传感器与A/D转换器的接口电路 (10) 3.2 A/D转换器与89C51的接口电路 (10) 3.3 89C51与显示器间的接口电路 (11) 3.4 晶振电路和复位电路的设计 (12) 4 软件设计 (13) 4.1温度采集的主程序流程图 (13) 4.2 程序清单 (15) 5 心得体会 (20) 附录 (21) 温度采集装置 1、设计任务

设计一个温度采集系统,要求按1路/s的速度顺序检测8路温度点,测温范围为+20℃~+100℃,测量精度为±1%。要求用5位数码管显示温度,最高位显示通道号,次高位显示“—”,低三位显示温度值。 2、设计方案 2.1 温度传感器—AD22100K AD22100K是有信号调节的单片温度传感器,工作温度范围为-50~+150,信号调节不需要调节电路、缓冲器和线性化电路,简化了系统设计。输出温度与电压和电源电压的乘积(比率测量)成比例。输出电压摆幅为0.25V(对应-50℃)和4.75V(对应150℃),用5V单电源工作。 2.1.1 AD22100K的引脚图如2.1.1 图2.1.1 AD22100K的引脚图 注:1.V电源 4.GND接地 2.U输出 3、5~8 NC不连接

基于单片机的温度采集系统设计

摘要 单片机已在各行业得到广泛应用,为适应更多的应用领域,厂家采取了在一块单片机芯片上集成多种功能部件和大容量存储器的方法。因而,整个应用系统不需要扩展,而体积变小、可靠性增高,使单片机成为真正意义上的单片机系统。 第一章单片机概述 单片机是单片微型计算机的简称,有时称为微控制器,是将计算机的主要功能单元集成在一个芯片中而构成的器件。由于单片机在一个芯片上集成诸多功能,因此就单项功能而言,通常都没有普通计算机强大,如计算机速度不够快、字长较短、外部可扩展接口的数量少且规模小等。但是,单片机具有体积小、价格便宜和技术成熟等优点,是各种电子产品的重要组成部分,在国民经济的各个领域发挥着重要作用。 早期的单片机都是8位或4位的。其中最成功的是INTEL的8031,因为简单可靠而性能不错获得了很大的好评。此后在8031上发展出了MCS51系列单片机系统。基于这一系统的单片机系统直到现在还在广泛使用。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大提高。随着INTEL i960系列特别是后来的ARM系列的广泛应用,32位单片机迅速取代16位单片机的高端地位,并且进入主流市场。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。目前,高端的32位单片机主频已经超过300MHz,性能直追90年代中期的专用处理器,而普通的型号出厂价格跌落至1美元,最高端[1]的型号也只有10美元。当代单片机系统已经不再只在裸机环境下开发和使用,大量专用的嵌入式操作系统被广泛应用在全系列的单片机上。而在作为掌上电脑和手机核心处理的高端单片机甚至可以直接使用专用的Windows和Linux操作系统。 单片机比专用处理器更适合应用于嵌入式系统,因此它得到了最多的应用。事实上单片机是世界上数量最多的计算机。现代人类生活中所用的几乎每件电子和机械产品中都会集成有单片机。手机、电话、计算器、家用电器、电子玩具、

51单片机热敏电阻测温程序

//本程序是通过热敏电阻测温度(30c-50c),采用六位串行数码管显示,前三位显示ds18b20测得数据,后三位是热敏电阻测得数据 #include #include #include #define uchar unsigned char #define uint unsigned int uchar smg[]={0x88,0xeb,0x4c,0x49,0x2b,0x19,0x18,0xcb,0x08,0x09}; uchar b,d; uint shuju; int a,temp; sbit start=P2^7; sbit ale=P2^7; sbit addc=P2^6; sbit addb=P2^5; sbit adda=P2^4; sbit eoc=P2^3; sbit oe=P2^2; sbit clk=P3^2;//0809时钟脚 sbit dat=P3^0; //串行数码管数据端 sbit clock=P3^1; //串行数码管时钟端 sbit DQ=P2^0; /******************delay**************************/ void delay(uint x) { while(x--); } void delay1(uint x) { uint i,j; for(i=0;i

单片机温度采集程序

单片机温度采集程序 用一片DS18B20 构成测温系统,测量的温度精度达到0.1 度,测量的温度的范围在-20 度到+100 度之间,用8 位数码管显示出来。 由于DS18B20 是在一根I/O 线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20 有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。 DS18B20 的读时序 对于DS18B20 的读时序分为读0 时序和读1 时序两个过程。 对于DS18B20 的读时隙是从主机把单总线拉低之后,在15 秒之内就得释放单总线,以让DS18B20 把数据传输到单总线上。DS18B20 在完成一个读时序过程,至少需要60us 才能完成。 对于DS18B20 的写时序仍然分为写0 时序和写 1 时序两个过程。 对于DS18B20 写0 时序和写1 时序的要求不同,当要写0 时序时,单总线要被拉低至少60us ,保证DS18B20 能够在15us 到45us 之间能够正确地采样IO 总线上的“0 ”电平,当要写1 时

序时,单总线被拉低之后,在15us 之内就得释放单总线。 本程序实现温度的采集并且实时在数码管上显示出来。 具体程序如下: /*----------------------------------------------- 名称:18B20温度传感器 日期:2009.5 修改:无 内容:18B20单线温度检测的应用样例程序,请将18b20插紧, 然后在数码管可以显示XX.XC,C表示摄氏度,如显示25.3C表示当前温度25.3度 ------------------------------------------------*/ #include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义 #include #include #define uchar unsigned char #define uint unsigned int; /******************************************************************/ /* 定义端口*/ /******************************************************************/ sbit seg1=P2^0; sbit seg2=P2^1; sbit seg3=P2^2; sbit DQ=P1^3;//ds18b20 端口 sfr dataled=0x80;//显示数据端口 /******************************************************************/ /* 全局变量*/ /******************************************************************/ uint temp; uchar flag_get,count,num,minute,second; uchar code tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //7段数码管段码表共阳 uchar str[6]; /******************************************************************/ /* 函数声明*/ /******************************************************************/ void delay1(uchar MS); unsigned int ReadTemperature(void); void Init_DS18B20(void); unsigned char ReadOneChar(void);

(完整word版)基于51单片机的温度控制系统设计

基于51单片机的水温自动控制系统 0 引言 在现代的各种工业生产中 ,很多地方都需要用到温度控制系统。而智能化的控制系统成为一种发展的趋势。本文所阐述的就是一种基于89C51单片机的温度控制系统。本温控系统可应用于温度范围30℃到96℃。 1 设计任务、要求和技术指标 1.1任务 设计并制作一水温自动控制系统,可以在一定范围(30℃到96℃)内自动调节温度,使水温保持在一定的范围(30℃到96℃)内。 1.2要求 (1)利用模拟温度传感器检测温度,要求检测电路尽可能简单。 (2)当液位低于某一值时,停止加热。 (3)用AD转换器把采集到的模拟温度值送入单片机。 (4)无竞争-冒险,无抖动。 1.3技术指标 (1)温度显示误差不超过1℃。 (2)温度显示范围为0℃—99℃。 (3)程序部分用PID算法实现温度自动控制。 (4)检测信号为电压信号。 2 方案分析与论证 2.1主控系统分析与论证 根据设计要求和所学的专业知识,采用AT89C51为本系统的核心控制器件。AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压,高性能CMOS 8位微处理器。其引脚图如图1所示。 2.2显示系统分析与论证 显示模块主要用于显示时间,由于显示范围为0~99℃,因此可采用两个共阴的数码管作为显示元件。在显示驱动电路中拟订了两种设计方案: 方案一:采用静态显示的方案 采用三片移位寄存器74LS164作为显示电路,其优点在于占用主控系统的I/O口少,编程简单且静态显示的内容无闪烁,但电路消耗的电流较大。 方案二:采用动态显示的方案 由单片机的I/O口直接带数码管实现动态显示,占用资源少,动态控制节省了驱动芯片的成本,节省了电 ,但编程比较复杂,亮度不如静态的好。 由于对电路的功耗要求不大,因此就在尽量节省I/O口线的前提下选用方案一的静态显示。

单片机温度采集与显示

1、课程设计目的 (1)利用单片机及相应温度传感器设计单检测节点或多检测节点数字温度计 (2)精度误差:0.5摄氏度以内;测温范围:10-50摄氏度 (3)LED数码管或LCD直接显示 (4)完成对设计系统测试 2、数字温度计正文 摘要:随着时代的进步和发展,单片机技术已经普及到我们生活、工作、科研、各个领域,已经成为一种比较成熟的技术,本文主要介绍了一个基于89C52单片机的测温系统,详细描述了利用数字温度传感器DS18B20开发测温系统的过程,重点对传感器在单片机下的硬件连接,软件编程以及各模块系统流程进行了详尽分析,对各部分的电路也一一进行介绍,该系统可以方便的实现温度采集和显示,并可根据需要任意设定上下限报警温度,使用起来相当方便,适合于我们日常生活和嵌入其它系统中,作为其AT89C52结合最简温度检测系统,该系统恶劣环境下进行现场温度测量,有广泛的应用前景。本文将介绍一种基于单片机往制的数字温度计,本温度计属于多功能温度计,可以设置上下报警温度,当温度不在设置范围内时,可以报警。 关键词:单片机,数字控制,温度计,DSIBB20, AT89C52 2.1引言 随着科技的不断发展,现代社会对各种信息参数的准确度和精确度的要求都有了几何级的增长,而如何准确而又迅速的获得这些参数就需要受制于现代信息基础的发展水平。在三大信息信息采集(即传感器技术)、信息传输(通信技术)和信息处理(计算机技构中,传感器属于信息技术的前沿尖端产品,尤其是温度传感器技术,在我国各领域己经引用的非常广泛,可以说是渗透到社会的每一个领域,人民的生活与环境的温度息息相关,在工业生产过程中需要实时测量温度,在农业生产中也离不开温度的测量,因此研究温度的测量方法和装置具有重要的意义。 测量温度的关键是温度传感器,温度传感器的发展经历了三个发展阶段 ①传统的分立式温度传感器 ②模拟集成温度传感器 ③智能温度传感器 目前的智能温度传感器(亦称数字温度传感器)是在20世纪90年代中期问世的,它是微电子技术、计算机技术和自动测试技术(ATE)的结晶,特点是能输出温度数据及相关的温度控制量,适配各种微控制器(MCU)。社会的发展使人们对传感器的要求也越来越高,现在的温度传感器正在基于单片机的基础上从模拟式向数字式,从集成化向智能化、网络化的方向飞速发展,并朝着高精度、多功能、总线标准化、高可靠性及安全性、开发虚拟传感器和网络传感器、研制单片测温系统等高科技的方向迅速发展,本文将介绍智能集成温度传感器DS18B20的结构特征及控制方法,并对以此传感器,AT89C52单片机为控制器构成的数字温度测量装置的工作

基于采用AT89S51单片机和LM35温度传感器的温度采集显示系统设计

基于采用AT89S51单片机和LM35温度传感器的温度采集显示系统设计随着电子和传感技术的快速发展,温度的测量和控制在民用、工业以及航空航天技术等领域,等到了广泛应用。小型的、低功耗的、廉价的、可靠性高的温度传感器引起了人们的广泛关注。在实际生产、生活等领域中,温度是环境因素不可或缺的一部分,对温度进行及时精确的控制和检测显得尤为重要。本文基于AT89S51单片机,采用 LM35温度传感器,设计了一种灵敏度较高,抗干扰能力强,工作稳定可靠的温度采集显示系统。 1、系统结构及工作原理温度采集显示系统电路由温度采集模块、A/D转换模块、单片机控制模块、数码管显示模块和下载模块组成。电路工作原理是:首先由LM35温度传感器采集外界环境的温度,经LM358放大10倍后以电压形式输入到A/D采样电路,由A/D 转换器TLC549将温度的数字量值传送给单片机系统,再有单片机系统驱动数码管显示温度。本文设计的基于LM35的单片机温度采集显示系统的温度测量范围为25℃~80℃温度采集显示系统电路是一个开环控制系统系统原理框图如图1示: 2、系统核心硬件电路设计系统核心硬件电路设计主要包含温度采集模块的设计、A/D转换模块的设计、单片机控制模块的设计、数码管显示模块的设计和下载模块的设计。 2.1、采集模块的设计 传感器是信号输入的第一个环节,也是整个测试系统性能的关键环节之一,因此对传感器的正确选用显得尤为重要。在本系统中,温度采集模块的核心硬件采用LM35温度传感器,该器件有很高的工作精度和较宽的线性工作范围,其输出电压与摄氏温度线性成比例,温度每上升1℃,电压上升10ms。LM35无需外部校准,可以提供±1/4℃的常用室温精度。从经济适用等多方面考虑,系统采用LM35温度传感器和LM358放大电路进行温度采集模块的设计,设计原理图如图2 所示。图2中,经过LM35传感器采集后的微弱电压通过LM358 放大电路放大10倍后送入单片机。 2.2、/D 转换模块的设计

CAN总线多点温度采集节点硬件设计

CAN总线多点温度采集节点硬件设计 【摘要】随着科学技术的发展,温度监控系统的应用越来越广泛,本文阐述了一种基于CAN总线的多点温度采集系统,可以实现温度实时监测,该系统能应用于工农业生产的诸多场合。系统以AT89C52单片机为微处理器,外接数字式温度传感器DS18B20获得现场环境的温度信号。通过CAN总线控制器SJA1000和CAN总线驱动器PCA82C250将数据发送到CAN总线上,从而实现对温度的采集。 【关键词】CAN总线;节点;温度采集 0 概述 现场总线是安装在生产制造过程中的装置与控制室内的控制装置之间的一种数字式、串行、多点通信的数据线。应用现场总线技术不仅可以降低系统的布线成本,还具有设计简单、调试方便等优点。同时,由于现场总线本身还提供了灵活且功能强大的协议,这就使得用户对系统配置,设备选型具有强大的自主权,可以任意的将多种功能模块组合起来扩充系统的功能。在众多的现场工业总线中。随着温度控制技术在各个领域得到广泛地推广和应用,相关行业对温度控制技术的要求与日俱增。目前市场上也有一些温度控制系统,但是这些系统在传送数据时实时性能实现的不是很好,而CAN总线的实时性强、成本低,而且还具备可靠性高、抗干扰强等特点。综合多方面因素考虑,我们能够利用CAN总线的特点和优势设计温度控制系统。 1 设计方案 1.1 系统功能要求 系统能够接受数字式温度传感器DS18B20的温度信号,将温度信号传给单片机,完成单片机最小系统设计,并把此系统作为CAN的节点,节点的硬件包括AT89C52单片机、CAN总线驱动器PCA82C250、CAN总线控制器SJA1000、单片机的时钟和复位电路。主要研究基于AT89C52单片机与DS18B20数字温度传感器的多点温度测量系统。完成数字式温度传感器与CAN总线节点的接口设计及电路设计,实现具有数字式串行温度采集功能的CAN总线节点的硬件设计。应用CAN总线控制器SJA1000及其总线收发器的工作原理,完成数字式温度传感器与CAN总线节点的接口设计。 1.2 硬件功能模块 该系统主要由现场数据采集模块和总线发送模块构成。现场数据的采集是以AT89C52单片机为核心控制单元,外接数字传感器DS18B20,从而获得现场环境的温度信号。通过CAN总线控制器SJA1000和CAN总线驱动器PCA82C250将数据发送到CAN总线上。CAN节点由微处理器、CAN控制器SJA1000、CAN

基于51单片机的多路温度采集控制系统设计

基于51单片机的多路温度采集控制系统设计 前言: 随着现代信息技术的飞速发展,温度测量控制系统在工业、农业及人们的日常生活中扮演着一个越来越重要的角色,它对人们的生活具有很大的影响,所以温度采集控制系统的设计与研究有十分重要的意义。 本次设计的目的在于学习基于51单片机的多路温度采集控制系统设计的基本流程。本设计采用单片机作为数据处理与控制单元,为了进行数据处理,单片机控制数字温度传感器,把温度信号通过单总线从数字温度传感器传递到单片机上。单片机数据处理之后,发出控制信息改变报警和控制执行模块的状态,同时将当前温度信息发送到LED进行显示。本系统可以实现多路温度信号采集与显示,可以使用按键来设置温度限定值,通过进行温度数据的运算处理,发出控制信号达到控制蜂鸣器和继电器的目的。 我所采用的控制芯片为AT89c51,此芯片功能较为强大,能够满足设计要求。通过对电路的设计,对芯片的外围扩展,来达到对某一车间温度的控制和调节功能。 关键词:温度多路温度采集驱动电路 正文: 1、温度控制器电路设计 本电路由89C51单片机温度传感器、模数转换器ADC0809、窜入并出移位寄存器74LS164、数码管、和LED显示电路等组成。由热敏电阻温度传感器测量环境温度,将其

电压值送入ADC0809的IN0通道进行模数转换,转换所得的数字量由数据端D7-D0输出到89C51的P0口,经软件处理后将测量的温度值经单片机的RXD端窜行输出到74LS164,经74LS164 窜并转换后,输出到数码管的7个显示段,用数字形式显示出当前的温度值。89C51的P2.0、P2.1、P2.2分别接入ADC0809通道地址选择端A、B、C,因此ADC0809的IN0通道的地址为F0FFH。输出驱动控制信号由p1.0输出,4个LED为状态指示,其中,LED1为输出驱动指示,LED2为温度正常指示,LED3为高于上限温度指示,LED4为低于下限温度指示。当温度高于上限温度值时,有p1.0输出驱动信号,驱动外设电路工作,同时LED1亮、LED2灭、LED3亮、LED4灭。外设电路工作后,温度下降,当温度降到正常温度后,LED1亮、LED2亮、LED3灭、LED4灭。温度继续下降,当温度降到下限温度值时,p1.0信号停止输出,外设电路停止工作,同时LED1灭、LED2灭、LED3灭、LED4亮。当外设电路停止工作后,温度开始上升,接着进行下一工作周期。 2、温度控制器程序设计 本软件系统有1个主程序,6个子程序组成。6个子程序为定时/计数器0中断服务程序、温度采集及模数转换子程序ADCON、温度计算子程序CALCU、驱动控制子程序DRVCON、十进制转换子程序METRICCON及数码管显示子程序DISP。 (1)主程序 主程序进行系统初始化操作,主要是进行定时/计数器的初始化。 (2)定时/计数器0中断服务程序 应用定时计数器0中断的目的是进行定时采样,消除数码管温度显示的闪烁现象,用户可以根据实际环境温度变化率进行采样时间调整。每当定时时间到,调用温度采集机模数转换子程序ADCON,得到一个温度样本,并将其转换为数字量,传送给89C51单片机,

相关文档
最新文档