数字PWM温度控制器设计说明书.docx

上传人:b****7 文档编号:16606960 上传时间:2023-07-15 格式:DOCX 页数:15 大小:119.64KB
下载 相关 举报
数字PWM温度控制器设计说明书.docx_第1页
第1页 / 共15页
数字PWM温度控制器设计说明书.docx_第2页
第2页 / 共15页
数字PWM温度控制器设计说明书.docx_第3页
第3页 / 共15页
数字PWM温度控制器设计说明书.docx_第4页
第4页 / 共15页
数字PWM温度控制器设计说明书.docx_第5页
第5页 / 共15页
数字PWM温度控制器设计说明书.docx_第6页
第6页 / 共15页
数字PWM温度控制器设计说明书.docx_第7页
第7页 / 共15页
数字PWM温度控制器设计说明书.docx_第8页
第8页 / 共15页
数字PWM温度控制器设计说明书.docx_第9页
第9页 / 共15页
数字PWM温度控制器设计说明书.docx_第10页
第10页 / 共15页
数字PWM温度控制器设计说明书.docx_第11页
第11页 / 共15页
数字PWM温度控制器设计说明书.docx_第12页
第12页 / 共15页
数字PWM温度控制器设计说明书.docx_第13页
第13页 / 共15页
数字PWM温度控制器设计说明书.docx_第14页
第14页 / 共15页
数字PWM温度控制器设计说明书.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数字PWM温度控制器设计说明书.docx

《数字PWM温度控制器设计说明书.docx》由会员分享,可在线阅读,更多相关《数字PWM温度控制器设计说明书.docx(15页珍藏版)》请在冰点文库上搜索。

数字PWM温度控制器设计说明书.docx

数字PWM温度控制器设计说明书

数字温度测控仪

设计说明书

1设计任务与要求

1.1设计项目名称

数字温度测控仪

1.2设计要求

①温度测量范围:

室温~99℃.在数码管上显示温度值;温度测量误差<0.5℃。

②能进行当前温度调校:

按键设置温度≥环境温度,加热传感器,PWM输出占空比=(设置温度-t)/(设置温度-室温),直流风机从停止到全速转动。

2总体方案设计

2.1设计方案

本系统采用温度传感器DS18B20,将采集温度CurrTemp送至STC89C52,并通过Nokia5110显示。

同时,三个按键设定温度,分别可控制升温、降温及温度变化步进,通过Nokia5110显示。

风扇转速展示出设定温度与当前温度的温差。

当当前温度与设置温度相等时,风扇停止转动。

2.2系统的总体设计框图

2.2.1设计框图的设计

2.2.2设计框图的工作流程

接通电源后,通过按键KEY3调整合适步进,使用KEY1(减)或KEY2(加)来设定温度SetTemp,并通过Nokia5110显示。

使用温度传感器DS18B20采集室温RoomT,通过Nokia5110显示。

启动电机,通过风扇转速展示出设定温度与当前温度的温差。

3芯片介绍

3.1STC89C52芯片介绍

3.1.1STC89C52芯片简介

STC89C52RC单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,12时钟/机器周期和6时钟/机器周期可以任意选择。

主要特性如下:

1.增强型8051单片机,6时钟/机器周期和12时钟/机器周期可以任意选择,指令代码完全兼容传统8051。

2.工作电压:

5.5V~3.3V(5V单片机)/3.8V~2.0V(3V单片机)。

3.工作频率范围:

0~40MHz,相当于普通8051的0~80MHz,实际工作频率可达48MHz。

4.用户应用程序空间为8K字节。

5.片上集成512字节RAM。

6.通用I/O口(32个),复位后为:

P1/P2/P3/P4是准双向口/弱上拉,P0口是漏极开路输出,作为总线扩展用时,不用加上拉电阻,作为I/O口用时,需加上拉电阻。

7.ISP(在系统可编程)/IAP(在应用可编程),无需专用编程器,无需专用仿真器,可通过串口(RxD/P3.0,TxD/P3.1)直接下载用户程序,数秒即可完成。

8.具有EEPROM功能。

9.具有看门狗功能。

10.共3个16位定时器/计数器。

即定时器T0、T1、T2。

11.外部中断4路,下降沿中断或低电平触发电路,PowerDown模式可由外部中断低电平触发中断方式唤醒。

12.通用异步串行口(UART),还可用定时器软件实现多个UART。

13.工作温度范围:

-40~+85℃(工业级)/0~75℃(商业级)。

14.PDIP封装。

STC89C52RC单片机的工作模式

掉电模式:

典型功耗<0.1μA,可由外部中断唤醒,中断返回后,继续执行原程序;

空闲模式:

典型功耗2mA;

正常工作模式:

典型功耗4Ma~7mA;

掉电模式可由外部中断唤醒,适用于水表、气表等电池供电系统及便携设备。

3.1.2STC89C52芯片引脚

1~8脚:

通用I/O接口P1.0~P1.7;

9脚:

RST复位键;

10,11脚:

RXD串口输入,TXD串口输出;

12~19脚:

P3接口(12:

INT0外部中断0,13脚:

INT1中断外部中断1);

14,15脚:

计数脉冲T0、T1;

16,17脚:

WR写控制输出端,RD读控制输出端;

18,19脚:

晶振谐振器;

20脚:

地线;

21~28脚:

P2接口,高8位地址总线;

29脚:

PSEN片外ROM选通端,单片机对片外ROM操作时,29脚(PSEN)输出低电平;

30脚:

ALE/PROG地址锁存器;

31脚:

EAROM取指令控制器,高电平片内取,低电平片外取;

32~39脚:

P0.7~P0.0;

40:

电源+5V。

4单元电路的设计

4.1电路

4.1.1振荡电路

单片机的振荡电路如图4-1所示,单片机内时钟振荡方式需在单片机的XTAL1和XTAL2引脚上接上一个石英晶振和振荡电容,因为单片机时钟兼容1.2MHZ~12MHZ的晶振,为了软件定时的简便和精确,这里选用了11.05926MHZ的晶振,在参考STC89C52芯片资料后,振荡电容选用两个30pF的瓷片电容。

图4-1

4.1.2复位电路的工作原理

系统复位电路如图4-2所示,复位操作有上电自动和按键手动复位两种方式。

上电复位时通过外部复位电路的电容充电来实现的。

按键复位时通过复位端经电阻与VCC电源接通来实现的。

本设计选前者,两种复位电路都是输入单片机的RST引脚的且有效时间应持续24个振荡脉冲周期(即两个机器周期以上),经调试和验证,确定了一个22uF的电容和1K的电阻组成上电自动复位电路。

图4-2

4.1.3按键电路

键盘作为人机对话的基本窗口,我们可以利用它对外设进行各种不同的控制,按键的分类有独立式按键与行列式按键,由于本设计输入设备简单且要求方便,故选用独立式按键。

电路如图4-3所示,单片机的P2.5-P2.7口接VCC,用户可以通过软件来采集所接口线的状态,当口线为0时表示有按键按下,反之没有按键按下。

图4-3

4.1.4显示电路

显示是用来反映设定温度和实际测量温度的。

Nokia5110液晶显示屏接至P1口的P1.3~P1.7,电路如图4-4所示。

图4-4

4.1.5温度采集电路

通过温度传感器DS18B20采集实时温度CurrTemp,传送给单片机。

DS18B20接至P0口的P0.5。

电路如图4-5所示。

图4-5

4.1.6驱动电路

驱动电路由5V直流电源供电,通过单片机产生的PWM控制电机转动速率。

图4-6

5系统软件介绍

5.1按键程序流程图

5.2液晶显示程序流程图

5.3驱动程序流程图

5.4温度采集程序流程图

6.PCB图制作

走线如图6-1所示,器件放置如图6-2所示

图6-1

图6-2

附录(源代码)

#include"at89x52.h"

#include"Nokia5110.h"

#include"Ds18b20.h"

#defineucharunsignedchar

#defineuintunsignedint

intStep;/*步进*/

intSetTemp;/*设定温度*/

intCurrTemp;/*当前温度*/

intRoomT;/*室温*/

intzkb;/*占空比*/

intTimer;/*定时计数变量,为定时中断间隔时间的整数倍*/

intshi;/*数字转换为字符保存的十位*/

intge;/*数字转换为字符保存的个位*/

intshifen;/*数字转换为字符保存的十分位*/

intbaifen;/*数字转换为字符保存的百分位*/

charstr[5]={0};/*保存字符串*/

ucharcKey;/*初始键值*/

ucharcKeyCode;/*键值*/

uintnDelayKey;/*键盘延时变量,为定时中断间隔时间的整数倍*/

uintnDelay100uS;/*18B20复位延时变量*/

sbitPWM=P0^0;

/****************函数申明**********************/

voidKeyScan(void);

voidDisposeKey(void);

char*convert(intTemp);

/****************主函数**********************/

voidmain(void)

{

intk=0;//保存室温标志,k=0时,保存的当前温度即为室温

TMOD=0x20;//定时器工作在方式二

TL1=-92;//定时器中断一次为100us

TH1=-92;

TR1=1;//启动定时器1

ET1=1;//启动定时器1中断

IP=0x04;//将定时器1中断设为最高优先级

EA=1;//开总中断

LCD_init();//液晶初始化

LCD_Clear();//清屏

while

(1)

{

CurrTemp=ReadTemperature();//读取当前温度

if(k==0)

{

RoomT=CurrTemp;

k++;

LCD_write_english_string(0,0,convert(SetTemp));

}

if(cKeyCode)

{

DisposeKey();

LCD_write_english_string(0,0,convert(SetTemp));

}

LCD_write_english_string(20,20,convert(CurrTemp));

zkb=(int)100*(SetTemp-CurrTemp)/(SetTemp-RoomT);

if(SetTemp-CurrTemp<0)

{

zkb=0;

}

}

}

/****************数字转换为字符函数**********************/

char*convert(intTemp)

{

shi=Temp/1000;

ge=Temp/100%10;

shifen=Temp/10%10;

baifen=Temp%10;

str[0]=shi+48;

str[1]=ge+48;

str[2]='.';

str[3]=shifen+48;

str[4]=baifen+48;

returnstr;

}

/****************按键扫描函数**********************/

voidKeyScan(void)

{

cKey=P2&0xE0;//取键值P27,P26,P25

if(cKey!

=0xE0)

{

nDelayKey=100;//按键延时消颤

}

}

/****************按键处理函数**********************/

voidDisposeKey(void)

{

switch(cKeyCode)

{

case0x60:

//与P27相连的按键按下,实现步进加

Step=Step+30;

nDelayKey=2000;//按住按键不动,可连续产生键值

break;

case0xA0:

//与P26相连的按键按下,实现设置温度加

SetTemp=SetTemp+Step;

nDelayKey=2000;

break;

case0xC0:

//与P25相连的按键按下,实现温度减

SetTemp=SetTemp-Step;

nDelayKey=2000;

break;

default:

break;

}

cKeyCode=0;//键值清零

}

/****************多任务时序控制时钟中断**********************/

voidIntT1(void)interrupt3

{

/****************PWM产生计时******************/

Timer++;

if(Timer>=zkb)

{

PWM=1;

}

else

{

PWM=0;

}

if(Timer==100)

{

Timer=0;

}

/****************按键延时消颤*****************/

if(nDelayKey==0)

{

KeyScan();

}

else

{

nDelayKey--;

if(nDelayKey==0)

{

cKeyCode=P2&0xE0;//取键值P27、P26、P25

if(cKeyCode!

=cKey)//确认按键是否按下

{

cKeyCode=0;

}

}

}

/****************DS18B20复位延时******************/

if(nDelay100uS)

{

nDelay100uS--;

}

}

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2