文档详情

基于51单片机的温度控制器.doc

发布:2025-05-27约1.13万字共15页下载文档
文本预览下载声明

温度控制器

本设计要求温度控制器实现以下基本功能:

(1).数码管准确显示温度值,测量精度为0.5;

(2).五个按键操作(设置温度,加键、复位);

(3).可以温度设置,超过设定温度,继电器吸合(且蜂鸣器发出报警声)。

Proteus仿真图

程序清单

仅供学习参考

Main.c

/*==========================================================

说明:基于DS18b20的温度控制报警程序

作者:kks

创建时间:2013-03-18

修改时间:

============================================================*/

#includeconfig.h

#includetype.h

#includeDS18B20.h

/*===================全局定义===============================*/

staticuint8uKeyValue=0; //键值

staticuint16unTemp=0; //读取的温度值

staticuint8uCnt=0; //定时器计数值

bitb2msflag=0; //2ms时间标志位

bitb2mskeyflag=0; //2ms标志,用于按键扫描

bitb50msflag=0;

uint8uKeyCnt=0; //按键延时计数

uint8codeSegTable[]={0XC0,0XF9,0XA4,0XB0,0X99,

0X92,0X82,0XF8,0X80,0X90, /*不带小数点的断码表*/

0x40,0x79,0x24,0x30,0x19,

0x12,0x02,0x78,0x00,0x10, /*带小数点的断码表*/

0xbf,0xff,0x86,0x88}; //-,不显示,E,R

uint8codeBitTable[]={0xfe,0xfd,0xfb,0xf7}; //位码

uint8DisBuff[]={0,0,0,0}; //显示缓存区

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

*函数名:Delay250us

*输入:无

*输出:无

*功能:蜂鸣器延时函数

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

voidDelay250us(void)

{

uint8j;

for(j=28;j0;j--) //250us基准延时程序

{

;

}

}

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

*函数名:Init

*输入:无

*输出:无

*功能:程序初始化

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

voidInit(void)

{

P0=P1=P2=P3=0XFF; //IO口初始化

TMOD=0x01; //定时器0方式1

TH0=0xf8; //定时2ms

TL0=0x30;

ET0=1;

EX0=1;

EA=1;

TR0=1;

}

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

*函数名:KeyHandle

*输入:tem

*输出:返回温度上下限设置值,上限最大值为90,下限为0

*功能:按键处理程序

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

uint8KeyHandle(uint8tem)

{

if(KEYUP==0)

{

uKeyCnt++;

if(uKeyCnt=2) //消抖

{

uKeyCnt=0;

if(KEYUP==0)

{

tem++;

if(tem99)

tem=0;

while(!KEYUP);

}

}

}

if(KEYDOWN==0)

{

uKeyCnt++;

if(uKeyCnt=2)

{

uKeyCnt=0;

if(KEYDOWN==0)

{

tem--;

if(tem==-1)

{

显示全部
相似文档