当前位置:文档之家› 基于单片机的温度监测与控制系统程序

基于单片机的温度监测与控制系统程序

基于单片机的温度监测与控制系统程序
基于单片机的温度监测与控制系统程序

//------------------------------------------------------------------------

// 名称:用1602LCD与DS18B20设计的温敏报警器(含读ROM CODE,温度上下限显示)//------------------------------------------------------------------------

// 说明:本例将报警温度为高:70℃,低:-20℃当DS18B20感知温度达此临界

// 值时对应的LED闪烁,且发出警报声。

// 本例还可以显示DS18B20的ROM CODE及报警温度上下限。

//------------------------------------------------------------------------

#include

#include

#define uchar unsigned char

#define uint unsigned int

#define delayNOP() {_nop_();_nop_();_nop_();nop_()}

sbit HI_LED = P2^3; // 高温,低温报警闪烁LED

sbit LO_LED = P2^6;

sbit DQ = P3^3; //DS18B20 数据线

sbit BEEP = P3^7; //报警器

sbit RS=P2^0;

sbit RW=P2^1;

sbit E=P2^2;

sbit K1=P1^7; //正常显示温度,越界时报警

sbit K2=P1^4; //显示报警温度

sbit K3=P1^1; //查看ROM CODE

uchar code RomCodeStr[]={"-- ROM CODE --"};

uchar RomCode[8]={0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00};//64位ROM CODE

uchar code Temp_Disp_Title[] ={"Current Temp:"};

uchar Current_Temp_Display_Buffer [ ] ={"TEMP: "};

uchar code Temperature_Char[8] ={0x0C,0x12,0x12,0x0C,0x00,0x00,0x00,0x00};

//温度字符

uchar code Alarm_Temp[] = {"ALARM Temp HI LO"};

uchar Alarm_HI_LO_STR[] ={"HI: LO:"};

uchar temp_date[2]= {0x00,0x00};

uchar temp_alarm[2]= {0x00,0x00};

uchar display[5] = {0x00,0x00,0x00,0x00};

uchar display1[3] = {0x00,0x00,0x00};

uchar code df_Table[] = {0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};

char Alarm_Temp_HL[2] ={ 70, -20 };

uchar CurrentT = 0; //读取当前的温度整数部分

uchar Temp_Value []= {0x00,0x00}; //从DS18B20读取的温度值

uchar Display_Digit[]={0,0,0,0};

bit HI_Alarm = 0 , LO_Alarm = 0;

bit DS18B20_IS_OK = 1;

uint Time0_Count = 0;

//-------------------------------------------------------

//延时

//-------------------------------------------------------

void DelayXus(int x)

{

uchar i;

while(x--) for(i=0; i<200;i++);

}

bit LCD_Busy_check( )

{

bit result;

RS=0;RW=1;E=1;DelayXus(4); result=(bit)(P0& 0x80);E=0;

return result;

}

//-------------------------------------------------------

//向LCD发送命令

//-------------------------------------------------------

void Write_LCD_Command( uchar c)

{

while(LCD_Busy_check()); //判断LCD是否忙碌

RS=0;RW=0;E=0; _nop_();_nop_();P0=c;DelayXus(4);

E=1;DelayXus(4);E=0;

}

//-------------------------------------------------------

//设置LCD显示位置

//-------------------------------------------------------

void Set_LCD_POS(uchar pos)

{

Write_LCD_Command(pos | 0x80);

}

//-------------------------------------------------------

// 向LCD发送数据

//-------------------------------------------------------

void Write_LCD_Data(uchar dat)

{

while(LCD_Busy_check()) ;

RS= 1;RW=0;E=0;

P0= dat;DelayXus(4);

E=1;DelayXus(4);E=0;

}

//-------------------------------------------------------

//初始化LCD

//-------------------------------------------------------

void LCD_Initialise()

{

Write_LCD_Command(0x38); //开显示

Write_LCD_Command(0x0f); //清屏

Write_LCD_Command(0x01); //画面不动光标右移Write_LCD_Command(0x06);

}

//-------------------------------------------------------------------------------

//

//通用显示函数

//

//-------------------------------------------------------------------------------

void Write_NEW_LCD_Char()

{

uchar i;

Write_LCD_Command( 0x40);

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

Write_LCD_Data(Temperature_Char[i]) ;

}

void Delay(uint num)

{

while(--num);

}

//-------------------------------------------------------

//初始化DS18B20

//-------------------------------------------------------

uchar Init_DS18B20()

{

uchar status;

DQ=1;Delay(8);

DQ=0;Delay(90);

DQ=1;Delay(8);

status=DQ;

Delay(100);

DQ=1;

return status; //初始化成功时返回0

}

//-------------------------------------------------------------

//读一字节

//-------------------------------------------------------------

uchar ReadOneByte()

{

uchar i,dat =0;

DQ=1; _nop_();

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

{

DQ=0;dat>>=1; DQ=1;_nop_();_nop_();

if(DQ) dat|=0x80;Delay(30);DQ=1;

}

return dat;

}

void WriteOneByte(uchar dat)

{

uchar i;

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

{

DQ=0;DQ=dat &0x01;Delay(5);DQ=1;dat>>=1;

}

}

//-------------------------------------------------------------

//读取温度值

//------------------------------------------------------------- void Read_Temperature()

{

if( Init_DS18B20() ==1) //DS18B20故障DS18B20_IS_OK=0;

else

{

WriteOneByte(0xCC);

WriteOneByte(0x44);

Init_DS18B20() ;

WriteOneByte(0xCC);

WriteOneByte(0xBE);

Temp_Value[0]=ReadOneByte();

Temp_Value[1]=ReadOneByte();

Alarm_Temp_HL[0] = ReadOneByte();

Alarm_Temp_HL[1] = ReadOneByte();

DS18B20_IS_OK=1;

}

}

//-------------------------------------------------------------

//设置DS18B20温度报警值

//------------------------------------------------------------- void Set_Alarm_Temp_Value()

{

Init_DS18B20();

WriteOneByte(0xCC);

WriteOneByte(0x4E);

WriteOneByte(Alarm_Temp_HL[0]) ;

WriteOneByte(Alarm_Temp_HL[1]) ;

WriteOneByte(0x7F);

WriteOneByte(0x48);

}

//-------------------------------------------------------------

//在LCD上显示温度

//-------------------------------------------------------------

void Display_Temperature()

{

uchar i;

uchar t=150;

uchar ng=0;

char Signed_Current_Temp;

if( ( Temp_Value[1] & 0xF8) ==0xF8)

{

Temp_Value[1]= ~Temp_Value[1];

Temp_Value[0]= ~Temp_Value[0]+1;

if ( Temp_Value[0] == 0x00 ) Temp_Value[1]++;

ng=1;

}

Display_Digit[0] =df_Table [ Temp_Value[0] & 0x0F ];

CurrentT = ( (Temp_Value[0] & 0x0F)>>4) |(Temp_Value[1] & 0x07)<<4; Signed_Current_Temp = ng? -CurrentT : CurrentT;

HI_Alarm =Signed_Current_Temp >= Alarm_Temp_HL[0] ? 1 : 0;

LO_Alarm =Signed_Current_Temp <= Alarm_Temp_HL[1] ? 1 : 0;

Display_Digit[3]=CurrentT /100;

Display_Digit[2]=CurrentT %100 /10;

Display_Digit[1]=CurrentT % 10;

//刷新LCD显示缓冲

Current_Temp_Display_Buffer[11] = Display_Digit[0] +'0';

Current_Temp_Display_Buffer[10] = '.' ;

Current_Temp_Display_Buffer[9]=Display_Digit[1] +'0';

Current_Temp_Display_Buffer[8] = Display_Digit[2] +'0';

Current_Temp_Display_Buffer[7] = Display_Digit[3] +'0';

// 高位为0时不显示

if (Display_Digit[3] == 0) Current_Temp_Display_Buffer[7] = ' ';

//

if (Display_Digit[2] == 0 && Display_Digit[3] == 0)

Current_Temp_Display_Buffer[8] = ' ' ;

if(ng)

{

if (Current_Temp_Display_Buffer[8] == ' ' )

Current_Temp_Display_Buffer[8] = '-';

else

if (Current_Temp_Display_Buffer[7] ==' ')

Current_Temp_Display_Buffer[7] = '-' ;

else

Current_Temp_Display_Buffer[6] = '-';

}

//在第一行显示标题

Set_LCD_POS(0x00);

for( i=0; i<16;i++) Write_LCD_Data( Temp_Disp_Title[i]);

// 在第二行显示标题

Set_LCD_POS(0x40);

for( i=0; i<16;i++) Write_LCD_Data( Current_Temp_Display_Buffer[i]);

//显示温度符号

Set_LCD_POS(0x4D); Write_LCD_Data(0x00);

Set_LCD_POS(0x4E); Write_LCD_Data('C');

}

//---------------------------------------------------------------------------

//定时器中断,控制警报声音

//---------------------------------------------------------------------------

void T0_INT() interrupt 1

{

TH0 = -1000/256;

TL0 = -1000%256;

BEEP = !BEEP;

if( ++Time0_Count == 400)

{

Time0_Count =0;

if (HI_Alarm) HI_LED = ~HI_LED; else HI_LED = 0;

if (LO_Alarm) LO_LED = ~LO_LED; else LO_LED = 0;

TR0=0;

}

}

//---------------------------------------------------------------------------

//ROM CODE 转换与显示

//---------------------------------------------------------------------------

void Display_Rom_Code()

{

uchar i,t;

Set_LCD_POS(0x40);

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

{

t=((RomCode[i]& 0xF0)>>4);

if(t>9) t+= 0x37;else t+='0';

Write_LCD_Data(t); //高位显示

t= RomCode[i]& 0x0F;

if(t>9) t+= 0x37;else t+='0';

Write_LCD_Data(t);

}

} //低位显示

// ---------------------------------------------------------------------------

// 读64位序列码

//---------------------------------------------------------------------------

void Read_Rom_Code()

{

uchar i;

Init_DS18B20();

WriteOneByte(0x33);

for (i=0;i<8;i++) RomCode[i]= ReadOneByte();

}

//---------------------------------------------------------------------------

//显示ROM CODE

//---------------------------------------------------------------------------

void Display_RomCode()

{

uchar i;

Set_LCD_POS(0x00) ;

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

Write_LCD_Data(RomCodeStr[i]);

Read_Rom_Code();

Display_Rom_Code();

} //显示64位ROM CODE

//------------------------------------------------------------------------------

//显示报警温度

//------------------------------------------------------------------------------

void Disp_Alarm_Temperature()

{

uchar i,ng;

//------------------------------------------------------------------------------ //显示Alarm_Temp_HL数组中的报警温度

//由于Alarm_Temp_HL类型为char故可以直接进行正负比较

//高温报警----------------------------------------------------------------------

if (Alarm_Temp_HL[0]<0) //如果为负数则取反加1

{

Alarm_Temp_HL[0]=~Alarm_Temp_HL[0]+1;

ng=1;

}

//分解高温各数位到待显示串中

Alarm_Temp_HL[0]=Alarm_HI_LO_STR[4] =Alarm_Temp_HL[0]/100 + '0'; Alarm_Temp_HL[0]=Alarm_HI_LO_STR[5] =Alarm_Temp_HL[0]/10 %10 + '0'; Alarm_Temp_HL[0]=Alarm_HI_LO_STR[6] =Alarm_Temp_HL[0]%10 + '0';

//屏蔽高位不显示的0

if( Alarm_HI_LO_STR[4]=='0') Alarm_HI_LO_STR[4] = ' ';

if( Alarm_HI_LO_STR[4]==' ' && Alarm_HI_LO_STR[5] == '0' )

Alarm_HI_LO_STR[5] = ' ';

//“-”符号显示

if (ng)

{

if( Alarm_HI_LO_STR[5] ==' ') Alarm_HI_LO_STR[5] = '-' ;

else

if( Alarm_HI_LO_STR[4] ==' ') Alarm_HI_LO_STR[4] = '-' ;

else

Alarm_HI_LO_STR[3] = '-';

}

//低温报警值

ng=0;

if(Alarm_Temp_HL[1]<0) //如果为负数则取反加1

{

Alarm_Temp_HL[1]= ~Alarm_Temp_HL[1]+1;

ng=1;

}

//分解高温各数位到待显示串中

Alarm_HI_LO_STR[12] =Alarm_Temp_HL[1]/100+'0';

Alarm_HI_LO_STR[13] =Alarm_Temp_HL[1]/10 %10+'0';

Alarm_HI_LO_STR[14] =Alarm_Temp_HL[1]%10+'0';

// 屏蔽高位不显示的0

if( Alarm_HI_LO_STR[12]=='0') Alarm_HI_LO_STR[12] =' ';

if( Alarm_HI_LO_STR[12]==' ' && Alarm_HI_LO_STR[13] =='0');

Alarm_HI_LO_STR[13] =' ';

if(ng)

{

if(Alarm_HI_LO_STR[13] == ' ') Alarm_HI_LO_STR[13] ='-';

else

if(Alarm_HI_LO_STR[12] == ' ') Alarm_HI_LO_STR[12] ='-';

Alarm_HI_LO_STR[11] ='-';

}

//显示高低温报警温度值

Set_LCD_POS(0x00);

for(i=0;i<16;i++) Write_LCD_Data(Alarm_Temp[i]);

Set_LCD_POS(0x40); //显示高低温

for(i=0;i<16;i++) Write_LCD_Data(Alarm_HI_LO_STR[i]); }

//-------------------------------------------------------------------

//主函数

//-------------------------------------------------------------------

void main()

{

uchar Current_Operation= 1;

LCD_Initialise();

IE=0x82;

TMOD=0x01;

TH0=-1000/256;

TL0=-1000%256;

TR0=0;

HI_LED=0;

LO_LED=0;

Set_Alarm_Temp_Value();

Read_Temperature();

Delay(50000) ;

Delay(50000);

while(1)

{

if(K1==0) Current_Operation= 1;

if(K2==0) Current_Operation= 2;

if(K3==0) Current_Operation= 3;

switch(Current_Operation)

{

case 1: // 正常显示当前温度,越界时报警

Read_Temperature();

if(DS18B20_IS_OK)

{

if(HI_Alarm==1|| LO_Alarm ==1) TR0=1;

else TR0=0;

Display_Temperature();

}

DelayXus(100);

break;

case 2: //显示报警温度上下限

Read_Temperature();

Disp_Alarm_Temperature();

DelayXus(100);

break;

case 3: //显示DS18B20 ROM CODE

Display_Rom_Code();

DelayXus(100);

break;

}

}

}

基于51单片机的温度控制系统

创作编号: GB8878185555334563BT9125XW 创作者:凤呜大王*

毕业论文设计 基于51单片机的温度控制系统

摘要 在日常生活中温度在我们身边无时不在,温度的控制和应用在各个领域都有重要的作用。很多行业中都有大量的用电加热设备,和温度控制设备,如用于报警的温度自动报警系统,热处理的加热炉,用于融化金属的坩锅电阻炉及各种不同用途的温度箱等,这些都采用单片机技术,利用单片机语言程序对它们进行控制。而单片机技术具有控制和操作使用方便、结构简单便于修改和维护、灵活性大且具有一定的智能性等特 点,可以精确的控 制技术标准,提高了温控指标,也大大的提高了产品的质量和性能。 由于单片机技术的优点突出,智能化温度控制技术正被广泛地采用。本文介绍了基于单片机AT89C51 的温度控制系统的设计方案与软硬件实现。采用温度传感器DS18B20 采集温度数据,7段数码管显示温度数据,按键设置温度上下限,当温度低于设定的下限时,点亮绿色发光二极管,当温度高于设定的上限时,点亮红色发光二极管。给出了系统总体框架、程序流程图和Protel 原理图,并在硬件平台上实现了所设计功能。 关键词:单片机温度控制系统温度传感器

Abstract In daily life, the temperature in our side the ever-present, the control of the temperature and the application in various fields all have important role. Many industry there are a large number of electric heating equipment, and the temperature control equipment, such as used for alarm automatic temperature alarm systems, heat treatment furnace, used to melt metal crucible resistance furnace, and all kinds of different USES of temperature box and so on, these using single chip microcomputer, using single chip computer language program to control them. And single-chip microcomputer technology has control and convenient in operation, easy to modify and maintenance of simple structure, flexibility is large and has some of the intelligence and other characteristics, we can accurately control technology standard to improve the temperature control index, also greatly improve the quality of the products and performance. Because of the advantages of the single chip microcomputer intelligent temperature control technology outstanding, is being widely adopted. This paper introduces the temperature control based on single chip microcomputer AT89C51 design scheme of the system and the hardware and software implementation. The temperature sensor DS18B20 collection temperature data, 7 period of digital pipe display, the upper and lower limits of temperature button when temperature below the setting of the lower limit, light green leds, when the temperature is higher than the set on the limit, light red leds. Given the system framework and program flow chart and principle chart, and in Protel hardware platform to realize the function of the design. Keywords:SCM Temperature control system Temperature sensors

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

基于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范

单片机课程设计(温度控制器)

基于单片机的温度控制器设计 内容摘要:该温度报警系统以AT89C51单片机为核心控制芯片,实现温度检测报警功能的方案。该系统能实时采集周围的温度信息,程序内部设定有报警上下限,根据应用环境不同可设定不同的报警上下限。该系统实现了对温度的自动监测和自动调温功能。 关键词:AT89C51ADC0808 温度检测报警自动调温 Abstract:The temperature alarm system AT89C51 control chip, realize temperature detection alarm function scheme. The system can collect real-time temperature information around that internal procedures set alarm equipped, according to different application environment can be set different alarm upper. The system realizes the automatic monitoring of temperature. The instrument can achieve the automatic thermostat function. Keywords:AT89C51 ADC0808Temperature detectingalarmautomatic thermostat 引言:本课题是基于单片机的温度控制器设计,经过对对相关书籍资料的查阅确定应用单片机为主控模块通过外围设备来实现对温度的控制。实现高低温报警、指示和低温自加热功能(加热功能未在仿真中体现)。 1.设计方案及原理 1.1设计任务 基于单片机设计温度检测报警,可以实时采集周围的温度信息进行显示,并且可以根据应用环境不同设定不同的报警上下限。 1.2设计要求 (1)实时温度检测。 (2)具有温度报警功能。 (3)可以设报警置温度上下限。 (4)低于下限时启动加热装置。 1.3总体设计方案及论证

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

基于51单片机的温度测量系统 来源:微计算机信息作者:赵娜赵刚于珍珠郭守清 摘要: 单片机在检测和控制系统中得到广泛的应用, 温度则是系统常需要测量、控制和保持的一个量。本文从硬件和软件两方面介绍了AT89C2051单片机温度控制系统的设计,对硬件原理图和程序框图作了简洁的描述。 关键词: 单片机AT89C2051;温度传感器DS18B20;温度;测量 引言 单片机在电子产品中的应用已经越来越广泛,并且在很多电子产品中也将其用到温度检测和温度控制。为此在本文中作者设计了基于atmel公司的AT89C2051的温度测量系统。这是一种低成本的利用单片机多余I/O口实现的温度检测电路, 该电路非常简单, 易于实现, 并且适用于几乎所有类型的单片机。 一.系统硬件设计 系统的硬件结构如图1所示。 数据采集 数据采集电路如图2所示, 由温度传感器DS18B20采集被控对象的实时温度, 提供给AT89C2051的口作为数据输入。在本次设计中我们所控的对象为所处室温。当然作为改进我们可以把传感器与电路板分离,由数据线相连进行通讯,便于测量多种对象。 DS18B20是DALLAS公司生产的一线式数字温度传感器,具有3引脚TO-92小体积封装形式;温度测量范围为-55℃~+125℃,可编程为9位~12位A/D转换精度,测温分辨率可达℃,被测温度用符号扩展的16位数字量方式串行输出,支持3V~的电压范围,使系统设计更灵活、方便;其工作电源既可在远端引入,也可采用寄生电源方式产生;多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以上特点使DS18B20非常适用于远距离多点温度检测系统。分辨率设定,及用户设定的报警温度存储在EEPROM中,掉电后依然保存。DS18B20使电压、特性有更多的选择,让我们可以构建适合自己的经济的测温系统。如图2所示DS18B20的2脚DQ为数字信号输入/输出端;1脚GND为电源地;3脚VDD为外接供电电源输入端。 AT89C2051(以下简称2051)是一枚8051兼容的单片机微控器,与Intel的MCS-51完全兼容,内藏2K的可程序化Flash存储体,内部有128B字节的数据存储器空间,可直接推动LED,与8051完全相同,有15个可程序化的I/O点,分别是P1端口与P3端口(少了)。 接口电路 图2 单片机2051与温度传感器DS18B20的连接图 接口电路由ATMEL公司的2051单片机、ULN2003达林顿芯片、4511BCD译码器、串行EEPROM24C16(保存系统参数)、MAX232、数码管及外围电路构成, 单片机以并行通信方式从~口输出控制信号,通过4511BCD译码器译码,用2个共阴极LED静态显示温度的十位、

基于单片机的温控器

天津理工大学 课程设计报告 题目:基于单片机的温控器设计 学生姓名李天辉学号 20101009 届 2013 班级电气4班 指导教师专业电气工程及其自动化

说明 1. 课程设计文本材料包括设计报告、任务书、指导书三部分,其中 任务书、指导书由教师完成。按设计报告、任务书、指导书顺序装订成册。 2. 学生根据指导教师下达的任务书、指导书完成课程设计工作。 3. 设计报告内容建议主要包括:概述、系统工作原理、系统组成、设计内容、小结和参考资料。 4. 设计报告字数应在3000-4000字,采用电子绘图、采用小四号宋 体、1.25倍行距。 5.课程设计成绩由平时表现(30%)、设计报告(30%)和提问成绩(40%) 组成。

课程设计任务书、指导书 课程设计题目: Ⅰ.课程设计任务书 一、课程设计的内容和要求(包括原始数据、技术要求、工作量) 当今社会,温控器已经广泛应用于电冰箱、空调和电热毯等领域中。其优点是控制精度高,稳定性好,速度快自动化程度高,温度和风速全自动控制,操作简单可靠,对执行器要求低,故障率低,效果好。目前国内外生产厂家正在研究开发第三代智能型室温空调温控器,应用新型控制模型和数控芯片实现智能控制。现在已有国内厂家生产出了智能型室温空调温控器,并已应用于实际工程。 本课程设计要求设计温度控制系统,主要由温度数据采集、温度控制、按键和显示、通讯等部分组成。温度采集采用NTC或PTC热敏电阻(或由电位器模拟)或集成温度传感器、集成运算放大器构成的信号调理电路、AD转换器组成。温控部分采用交流开关BT136通过改变导通角进行调压限流达到控制加热丝温度的目的。 温度控制算法采用PID控制,可以采用普通PID或模糊PID。对控制PID参数进行整定,进行MATLAB仿真,说明控制效果。进行程序编制。 设计通讯协议,并能够通过RS485总线将数据传回上位机。2.课程设计的要求 1、选择相应元器件设计温度控制系统原理图并绘制PCB版图。 2、进行PID控制算法仿真,设计PID参数,或模糊PID规则。 3、系统功能要求:a要能够显示实时温度;b能够进行温度设置;c 能够进行PID参数设定;d能够把数据传回上位机;e可以设定本机地址。F温度控制范围0~99.9度。 4、编制程序并调试通过,并有程序流程图。

单片机温度检测记录系统

物理与电子信息学院题目:单片机温度检测记录系统 行政班级: 成员分组名单 学号:姓名: 选课班级:任课教师:成绩:

目录 1 设计任务与要求 (2) 设计任务 (2) 技术指标 (2) 题目评析 (2) 2 方案比较与论证 ........................................................................................ 错误!未定义书签。 各种方案比较与选择........................................................................... 错误!未定义书签。 3 系统硬件设计 ............................................................................................ 错误!未定义书签。 系统的总体设计 .................................................................................. 错误!未定义书签。 图3-2 总体原理图 ................................................................................ 错误!未定义书签。 功能模块设计及工作原理的分析....................................................... 错误!未定义书签。 时钟显示模块..................................................................... 错误!未定义书签。 温度传感器模块................................................................. 错误!未定义书签。 LCD显示数据模块 ............................................................. 错误!未定义书签。 串口数据传输显示模块..................................................... 错误!未定义书签。 发挥部分的设计与实现....................................................................... 错误!未定义书签。 年月日时分秒,温度报警上限设置功能......................... 错误!未定义书签。 硬件按钮部分................................................................... 错误!未定义书签。 红外遥控设置模块............................................................. 错误!未定义书签。 按键传输串口数据............................................................. 错误!未定义书签。 4 系统软件设计 ............................................................................................ 错误!未定义书签。 5 测试结果 .................................................................................................... 错误!未定义书签。 6 系统电路存在的不足和改进的方向......................................................... 错误!未定义书签。 7 参考文献 .................................................................................................... 错误!未定义书签。 8 附录: ............................................................................................................. 错误!未定义书签。

单片机课程设计(温度控制系统)

温度控制系统设计 题目: 基于51单片机的温度控制系统设计姓名: 学院: 电气工程与自动化学院 专业: 电气工程及其自动化 班级: 学号: 指导教师:

2015年5月31日 摘要: (3) 一、系统设计 (3) 1.1 项目概要 (3) 1.2设计任务和要求: (4) 二、硬件设计 (4) 2.1 硬件设计概要 (4) 2.2 信息处理模块 (4) 2.3 温度采集模块 (5) 2.3.1传感器DS18b20简介 (5) 2.3.2实验模拟电路图 (7) 2.3.3程序流程图 (6) 2.4控制调节模块 (9) 2.4.1升温调节系统 (9) 2.4.2温度上下限调节系统 (8) 2.43报警电路系统 (9) 2.5显示模块 (12) 三、两周实习总结 (13) 四、参考文献 (13) 五、附录 (15)

5.1原理图 (15) 摘要: 在现代工业生产中,温度是常用的测量被控因素。本设计是基于51单片机控制,将DS18B20温度传感器实时温度转化,并通过1602液晶对温度实行实时显示,并通过加热片(PWM波,改变其占空比)加热与步进电机降温逐次逼近的方式,将温度保持在设定温度,通过按键调节温度报警区域,实现对温度在0℃-99℃控制的自动化。实验结果表明此结构完全可行,温度偏差可达0.1℃以内。 关键字:AT89C51单片机;温控;DS18b20 一、系统设计 1.1 项目概要 温度控制系统无论是工业生产过程,还是日常生活都起着非常重要的作用,过低或过高的温度环境不仅是一种资源的浪费,同时也会对机器和工作人员的寿命产生严重影响,极有可能造成严重的经济财产损失,给生活生产带来许多利的因素,基于AT89C51的单片机温度控制系统与传统的温度控制相比具有操作方便、价价格便宜、精确度高和开展容易等优点,因此市场前景好。

(完整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口线的前提下选用方案一的静态显示。

基于单片机水温控制系统

基于单片机水温控制系统 摘要:随着微机测量和控制技术的迅速发展与广泛应用,以单片机为核心的温度采集与控制系统的研发与应用在很大程度上提高了生产生活中对温度的控制水平。本设计以保质、节能、安全和方便为基准设计了一套电热壶水温控制系统,能实现在40℃~90℃X围内设定控制温度,且95℃时高温报警,十进制数码管显示温度,在PC机上显示温度曲线等功能,并具有较快响应与较小的超调。整个系统核心为SPCE061A,前向通道包括传感器及信号放大电路,按键输入电路;后向通道包括三部分:LED显示电路,上位机通信电路以及控制加热器的继电器驱动电路。利用SPCE061A的8路10位精度的A/D转换器,完成对水温的实时采样与模数转换,通过数字滤波消除系统干扰,并对温度值进行PID运算处理,以调节加热功率大小。同时在下位机上通过数码管显示当前温度,通过USB接口传送信息至上位机,可以直接在PC端观察温度的变化曲线,并根据需要进行相应的数据分析和处理,由此完成对水温的采样和控制。通过验证取得了较满意的结果。

关键词:码分多址、walsh扩频、pn扩频、电路设计、程序设计、仿真 目录 1 引言1 1.1水温控制系统概述1 1.2本设计任务和主要内容2 2 基于单片机水温控制系统设计过程2 2.1水温控制系统总体框图2 2.2总体方案论证3 2.3 各部分电路方案论证4 2.4键盘及数字显示结合5 2.5温度设定和传送电路6 3硬件电路设计与计算6 3.1 温度采样和转换电路6 3.2 温度控制电路8 3.3 单片机控制部分9 3.4键盘及数字显示部分9 参考文献9

水温控制在工业及日常生活中应用广泛,分类较多,不同水温控制系统的控制方法也不尽相同,其中以PID控制法最为常见。单片机控制部分采用AT89C51单片机为核心,采用软件编程,实现用PID算法来控制PWM波的产生,进而控制电炉的加热来实现温度控制。然而,单纯的PID算法无法适应不同的温度环境,在某个特定场合运行性能非常良好的温度控制器,到了新环境往往无法很好胜任,甚至使系统变得不稳定,需要重新改变PID 调节参数值以取得佳性能。 本文首先用PID算法来控制PWM波的产生,进而控制电炉的加热来实现温度控制。然后在模型参考自适应算法MRAC基础上,用单片机实现了自适应控制,弥补了传统PID控制结构在特定场合下性能下降的不足,设计了一套实用的温度测控系统,使它在不同时间常数下均可以达到技术指标。此外还有效减少了输出继电器的开关次数,适用于环境参数经常变化的小型水温控制系统。

基于单片机的温度控制系统设计

基于单片机的温度控制系统设计 摘要:这次综合设计,主要是设计一个温度控制系统,用STC89C52单片机控制,用智能温度传感器DS18B20对温度进行采集,用LCD1602液晶显示屏将采集到的温度显示出来。系统可以有效的将温度控制在设定的范围内。如果实际温度超出了控制范围,则系统会有自动的提示信号,并且相应的继电器会动作。我们的实际生活离不开对温度的控制,在很多情况下我们都要对我们所处的环境进行温度检测,然后通过一定的措施进行调节,从而达到我们自己想要的温度,使我们的生活环境更加适宜。 关键字:单片机;液晶显示屏;温度传感器;继电器;提示信号 Abstract:This integrated design is the design of a temperature control system. A smart temperature sensor DS18B20 is used to collect temperature and a LCD1602 Liquid Screen is used to display the collected temperature. The system controlled by STC89C52 can effectively control the temperature within the setting limits. If the actual temperature exceeds the setting range, the system will automatically give signal, and the corresponding Relay will take related actions. It is necessary for us to control the temperature because in many situations the temperature around us is not proper for us. So we need to detect it and take some actions to adjust it to the temperature we want to make the environment around us better. Key Words:DS18B20;LCD1602;STC89C52;Relay;Signal 引言

基于51单片机的温度控制系统的设计

基于单片机的温度控制系统设计 1.设计要求 要求设计一个温度测量系统,在超过限制值的时候能进行声光报警。具体设计要求如下: ①数码管或液晶显示屏显示室内当前的温度; ②在不超过最高温度的情况下,能够通过按键设置想要的温度并显示;设有四个按键,分别是设置键、加1键、减1键和启动/复位键; ③DS18B20温度采集; ④超过设置值的±5℃时发出超限报警,采用声光报警,上限报警用红灯指示,下限报警用黄灯指示,正常用绿灯指示。 2.方案论证 根据设计要求,本次设计是基于单片机的课程设计,由于实现功能比较简单,我们学习中接触到的51系列单片机完全可以实现上述功能,因此可以选用AT89C51单片机。温度采集直接可以用设计要求中所要求的DS18B20。报警和指示模块中,可以选用3种不同颜色的LED灯作为指示灯,报警鸣笛采用蜂鸣器。显示模块有两种方案可供选择。 方案一:使用LED数码管显示采集温度和设定温度; 方案二:使用LCD液晶显示屏来显示采集温度和设定温度。 LED数码管结构简单,使用方便,但在使用时,若用动态显示则需要不断更改位选和段选信号,且显示时数码管不断闪动,使人眼容易疲劳;若采用静态显示则又需要更多硬件支持。LCD显示屏可识别性较好,背光亮度可调,而且比LED 数码管显示更多字符,但是编程要求比LED数码管要高。综合考虑之后,我选用了LCD显示屏作为温度显示器件,由于显示字符多,在进行上下限警戒值设定时同样可以采集并显示当前温度,可以直观的看到实际温度与警戒温度的对比。LCD 显示模块可以选用RT1602C。

3.硬件设计 根据设计要求,硬件系统主要包含6个部分,即单片机时钟电路、复位电路、键盘接口模块、温度采集模块、LCD 显示模块、报警与指示模块。其相互联系如下图1所示: 图1 硬件电路设计框图 单片机时钟电路 形成单片机时钟信号的方式有内部时钟方式和外部时钟方式。本次设计采用内部时钟方式,如图2所示。 单片机内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别为此放大器的输入端和输出端,其频率范围为~12MHz ,经由片外晶体振荡器或陶瓷振荡器与两个匹配电容一 起形成了一个自激振荡电路,为单片机提供时钟源。 复位电路 复位是单片机的初始化操作,其作用是使CPU 和系统中的其他部件都处于一个确定的初始状态,并从这个状态开始工作,以防止电源系统不稳定造成CPU 工作不正常。在系统中,有时会出现工作不正常的情况,为了从异常状态中恢复,同时也为了系统调试方便,需要设计一个复位电路。 单片机的复位电路有上电复位和按键复位两种形式,因为本次设计要求需要有启动/复位键,因此本次设计采用按键复位,如图3。复位电路主要完成系统 图2 单片机内部时钟方式电路 图3 单片机按键复位电路

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

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

基于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 Pt1000 temperature 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

单片机温度测控系统

单片机课程设计报告 题目:单片机温度测控系统 设计要求 系统要求实现温度的测量控制 转换精度:8位 转换范围:0℃——+128℃ 转换误差:≤1摄氏度 设计目的 通过采用单片机实现系统功能的设计实习,要达到理论上巩固既学知识,实践上丰富设计经验,并通过设计过程中暴露出来的一些问题,达到优化知识结构、丰富动手思维能力。同时,通过对设计中遇到的各种未知知识及设计技巧的学习和解决,更好的培养学生的自学能力。通过以分组的形式,来培养学生的团结互助,相互学习补充。这样,不仅在学习上达到的学生间、知识间的融合,更增进了学生的融洽,为即将步入社会的大四学生打下良好的基础。 设计思想 框图:

说明:该测量系统由单片机实现烧水锅炉各功能的控制。 锅炉具有自动加水,沸水控制,加热控制等功能。初始化单片机时系统进入锅炉加水功能,当水位达到上限水位时,锅炉产生一个中断脉冲中断单片机,跳出加水,进入单片机控制锅炉加热功能,当锅炉中水的温度达到80度时,降低加热电压,并允许使用锅炉中的水。当锅炉中的水用至低于下限水位时,锅炉同样会产生一个中断脉冲中断单片机,回复前面过程,再次进行加水控制,如此达到单片机控制热水锅炉的温度测控功能。其中,系统还设置有温度的三级加热控制。当温度高于80度时,控制由全电压加热转到半电压加热;当温度高于100度时,又会控制停止加热,即割断加热线路;当温度由高温再次降到90度以下时,系统又会重新启动半电压加热,如此反复控制。 各电路的设计 锅炉示意电路:

器时表高电平,水未淹没水位传感器时取低电平,这样当高水位有效时传感器产生的是上升沿,为了产生下降沿,在它的输出端接入了一个反相器。三级加热则是会产生三个级别的加热,分别是全压加热、半压加热和不加热,如图,D1和D2是控制加热电源的双向晶闸管,它们的功能如下:

基于单片机的温度控制系统设计

湖南科技大学潇湘学院 毕业设计(论文) 题目单片机温度控制系统 作者 系部信息与电气工程系 专业电气工程及其自动化 学号 指导教师 二〇一年月日

湖南科技大学学院 毕业设计(论文)任务书 信息与电气工程系电气工程及其自动化教研室 教研室主任:(签名)年月日 学生姓名: 学号: 专业: 电气工程及其自动化 1 设计(论文)题目及专题:单片机温度控制系统 2 学生设计(论文)时间:自年月日开始至年月日止 3 设计(论文)所用资源和参考资料: (1)单片机温度控制系统流程图(2)单片机程序设计基础 (3) protel se 99软件(4) 单片机使用接口技术 (5) 单片机程序设计基础(6)网上有关技术资料 4 设计(论文)应完成的主要内容: (1) 基于单片机温度控制系统的发展及应用 (2) 单片机温度控制系统设计包含的基本内容 (3) 单片机温度控制系统技术 (4) 单片机温度控制系统实现 (5) 全文总结 5 提交设计(论文)形式(设计说明与图纸或论文等)及要求: (1) 程序。要求:编译通过,基本能运行。 (2) 毕业论文。要求:正确,规范,通顺。 (3) 可供发表的研究论文(可选)。要求:规范,新意 均需提交电子版和纸质版。 6 发题时间:年月日 指导教师:(签名) 学生:(签名)

湖南科技大学学院 毕业设计(论文)指导人评语 指导人:(签名) 年月日指导人评定成绩:

湖南科技大学学院 毕业设计(论文)评阅人评语 评阅人:(签名) 年月日评阅人评定成绩:

湖南科技大学学院 毕业设计(论文)答辩记录 日期: 学生:学号:班级: 题目: 提交毕业设计(论文)答辩委员会下列材料: 1 设计(论文)说明书共页 2 设计(论文)图纸共页 3 指导人、评阅人评语共页 毕业设计(论文)答辩委员会评语: 答辩委员会主任:(签名) 委员:(签名) (签名) (签名) (签名)答辩成绩: 总评成绩:

单片机温度能检测记录系统

毕业设计(报告)课题:单片机温度能检测记录系统 学生: 陈奇伟系部: 电子信息系班级: 微电子091班学号: 2009000987 指导教师: 伊洪剑 装订交卷日期: 2012.3.16

毕业设计(报告)成绩评定记录表

郑重申明 本人呈交的毕业实习报告(设计),是在伊洪剑导师的指导下,独立进行实习和研究工作所取得的成果,所有数据、图片资料真实可靠。尽我所知,除文中已经注明引用的内容外,本毕业实习报告(设计)的成果不包含他人享有著作权的内容。对本毕业实习报告(设计)所涉及的实习和研究工作做出贡献的其他个人和集体,均已在文中以明确的方式标明。本毕业实习报告(设计)的知识产权归属于作者与培养单位。 学生签名[签字盖章] 陈奇伟 日期2012.03.16

摘要 在现代工业生产和科学实验中,温度是最普遍、重要的参数之一。温度的变化会直接影响产品的质量和实验结果,与我们的生活息息相关。 本文以AT89C51为核心,组成一个包括温度采集、数据处理、报警系统、液晶显示和人机界面等子系统的温度监视记录系统,其中以数字温度传感器DS18B20 为数据采集端,DS1302为时钟芯片,采用LCD1602实时显示时间与温度信息、采用蜂鸣器及液晶显示屏闪烁进行报警,并且通过串口进行数据记录、制表以及生成温度变化曲线。 实验表明,采用AT89C51控制的温度监测记录系统具有反应速度快,精度高等优点。人机交互界面有利于记录温度数据和预测温度变化的实现。 关键词:温度采集;单片机;LCD1602;DS18B20;报警

目录1 前言 1.1研究背景 (7) 1.2研究现状 (7) 1.3本文研究内容及流程图 (7) 1.4毕业设计中用到的硬件及软件工具 (9) 1.5实验成果展示 (9) 2AT89C51单片机 (12) 2.1 AT89C51 单片机简介 (12) 2.1.1 AT89C51 单片机的管脚介绍 (13) 2.2 主要特性 (14) 2.3 单片机最小系统 (14) 3 温度采集模块 (15) 3.1温度传感器DS18B20简介 (15) 3.1.1DS18B20特征 (15) 3.2DS18B20时序 (16) 3.2.1 DBS18B20初始化时序 (16) 3.2.2 DBS18B20 写时序 (16) 3.3DS18B20电路 (16) 4计时模块 (18) 4.1DS1302简介 (18) 4.2实验中DS1302的读写地址 (18) 4.3DS1302电路 (18) 5 显示模块 (20) 5.1LCD1602简介 (20)

单片机温度控制系统电路原理图

引言 在现代化的工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。例如:在冶金工业、化工生产、电力工程、造纸行业、机械制造和食品加工等诸多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。采用MCS-51单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。因此,单片机对温度的控制问题是一个工业生产中经常会遇到的问题。本文以它为例进行介绍,希望能收到举一反三和触类旁通的效果。 1硬件电路设计 以热电偶为检测元件的单片机温度控制系统电路原理图如图1所示。 1.1 温度检测和变送器 温度检测元件和变送器的类型选择与被控温度的范围和精度等级有关。镍铬/镍铝热电偶适用于0℃-1000℃的温度检测范围,相应输出电压为0mV-41.32mV。 变送器由毫伏变送器和电流/电压变送器组成:毫伏变送器用于把热电偶输出的0mV-41.32mV变换成4mA-20mA的电流;电流/电压变送器用于把毫伏变送器输出的4mA-20mA电流变换成0-5V的电压。 为了提高测量精度,变送器可以进行零点迁移。例如:若温度测量范围为500℃-1000℃,则热电偶输出为20.6mV-41.32mV,毫伏变送器零点迁移后输出4mA-20mA范围电流。这样,采用8位A/D转换器就可使量化温度达到1.96℃以内。 1.2接口电路 接口电路采用MCS-51系列单片机8031,外围扩展并行接口8155,程序存储器EPROM2764,模数转换器ADC0809等芯片。 由图1可见,在P2.0=0和P2.1=0时,8155选中它内部的RAM工作;在P2.0=1和P2.1=0时,8155选中它内部的三个I/O端口工作。相应的地址分配为: 0000H - 00FFH 8155内部RAM 0100H 命令/状态口 0101H A 口 0102H B 口 0103H C 口 0104H 定时器低8位口 0105H 定时器高8位口 8155用作键盘/LED显示器接口电路。图2中键盘有30个按键,分成六行(L0-L5)五列(R0-R4),只要某键被按下,相应的行线和列线才会接通。图中30个按键分三类:一是数字键0-9,共10个;二是功能键18个;三是剩余两个键,可定义或设置成复位键等。为了减少硬件开销,提高系统可靠性和降低成本,采用动态扫描显示。A口和所有LED的八段引线相连,各LED的控制端G和8155C口相连,故A口为字形口,C口为字位口,8031可以通过C口控制LED是否点亮,通过A口显示字符。 图1 单片机温度控制系统电路原理图

相关主题
文本预览
相关文档 最新文档