基于单片机的家用热水器控制器设计毕业设计论文.docx

上传人:b****1 文档编号:23169020 上传时间:2023-05-15 格式:DOCX 页数:13 大小:17.65KB
下载 相关 举报
基于单片机的家用热水器控制器设计毕业设计论文.docx_第1页
第1页 / 共13页
基于单片机的家用热水器控制器设计毕业设计论文.docx_第2页
第2页 / 共13页
基于单片机的家用热水器控制器设计毕业设计论文.docx_第3页
第3页 / 共13页
基于单片机的家用热水器控制器设计毕业设计论文.docx_第4页
第4页 / 共13页
基于单片机的家用热水器控制器设计毕业设计论文.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

基于单片机的家用热水器控制器设计毕业设计论文.docx

《基于单片机的家用热水器控制器设计毕业设计论文.docx》由会员分享,可在线阅读,更多相关《基于单片机的家用热水器控制器设计毕业设计论文.docx(13页珍藏版)》请在冰豆网上搜索。

基于单片机的家用热水器控制器设计毕业设计论文.docx

基于单片机的家用热水器控制器设计毕业设计论文

优秀论文审核通过

未经允许切勿外传

摘要

我的毕业设计题目是:

基于单片机的家用热水器控制器的设计。

目前热水器已成为日常生活中不可缺少的家用电器,设计制造更实用、更方便、更安全、更节能的热水器是产品设计师和生产厂商不断追求的目标[1]。

家用热水器具有体积小、使用安全、安装方便等优点。

系统硬件电路设计包括加热控制、温度检测等电路的设计。

电热水器是一种可供洗手间、厨房、浴室使用的家用电器,具有无污染、安全、保温时间长、使用方便等优点。

随着人民生活水平的不断提高和我国电力工业的不断发展,电热水器得到不断普及。

本文给出了一种基于51单片机实现的热水器电加热器的设计方案。

本文运用以AT89S51为控制核心的方法,提出了利用DS18B20来实现温度检测,并设计一个由继电器控制的电路,利用继电器来改变小电流控制的电路功率,构建了一个加热控制电路,从而得出了可以实现加热以及保温的结论。

关键字:

热水器,单片机,DS18B20温度检测器,继电器

 

Micro-controllerofwater

Abstract

Mygraduationprojecttopicis:

thedesignofmicrocontroller-basedthedailylifeofandmanufactureofmorepractical,moreconvenient,safer,moreenergy-efficientwaterincludingcircuitdesign.Electricwateravailabletoilet,kitchen,bathroomand,safe,longthispaper,basedon51single-chipdesignoftheauxiliarythispaper,AT89S51asthecontrolcore,DS18B20temperaturedetection,andtodesignarelaycontrolcircuit,usetherelaytochangethesmall-currentcontrolcircuitpowertobuildaordertogetconclusionofwaterbeachievedandthekeepingoftemperature..

Keywords:

Water&Instrumentation,2010(7):

24-27

[10]李章勇,官方勇.太阳能热水器智能控制器研制[J].2008年家用自动控制器技术国际研讨会,2008(11):

[11]苗红蕾.一款新型的智能家用电热水器[J].邢台职业技术学院学报,2005(11):

60-63

[12]郁玉龙,赵宁卢,洪武.用AT89C51单片机设计智能家用电热水器[J].实用电子制作,2007(10):

33-35

[13]蔡满军,吴磊.智能温度控制器的设计[J].自动化仪表,2010(10):

68-75

[14]HuangDinpjin,FeiHan,LiLiang,ZhuYunzhou.DesignforN+IFault-tolerantIntegratedSolarController[J].Automation&Instrumentation,2010(10):

[15]SurachaiPanich.DevelopmentofFuzzyControllerforWaterLevelinStreamBoilerTank[J].JournalofComputerScience,2010(11):

附录一原理图

附录二PCB图

附录三仿真图

附录四程序

*头文件*

#include

bitflag=0;

sbitp15=P1^5;

sbitp16=P1^6;

sbitp30=P3^0;

sbitp31=P3^1;

sbitk0=P1^0;

sbitk1=P1^1;

sbitk2=P1^2;

sbitk3=P1^3;

uchartable1[]="chenbeibei";

uchartable2[]="TEMP:

00.0C";

uchartable3[]="SETTEMP:

";

uchartable4[]="H:

60CL:

40C";

uchartable[];

ucharH=60,L=40;

*1MS为单位的延时程序*

voiddelay_1ms(uintx)

{

ucharj;

while(x--){

for(j=0;j<125;j++)

{;}

}

}

*1602函数*

voidwrite_com(uintcom)

{

lcdrs=0;

rw=0;

P0=com;

delay_1ms

(1);

lcden=1;

delay_1ms

(1);

lcden=0;

}

voidwrite_date(uintdate)

{

lcdrs=1;

rw=0;

P0=date;

delay_1ms

(1);

lcden=1;

delay_1ms

(1);

lcden=0;

}

voidlcd_init()

{

lcden=0;

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x01);

write_com(0x80);

}

voidset(ucharadd,uchardat)

{

ucharshi,ge;

shi=dat10;

ge=dat%10;

write_com(0x80+0x40+add);

write_date(0x30+shi);

write_date(0x30+ge);

}

延时函数

voiddelay(unsignedinti)

{

while(i--);

}

voidkeyscan()

{

uchari,j;

write_com(0x80);

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

{

write_date(table3[i]);

delay_1ms

(2);

}

write_com(0x80+0x40);

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

{

write_date(table4[i]);

delay_1ms

(2);

}

while

(1)

{

if(k0==0)

{

delay_1ms

(2);

if(k0==0)

{

while(!

k0);

while

(1)

{

if(k0==0)

{

delay_1ms

(2);

if(k0==0)

{

j++;

}

while(!

k0);

}

if((j%2)==0)

{

if(k1==0)

{

delay_1ms

(2);

if(k1==0)

{

H++;

}

while(!

k1);

}

if(k2==0)

{

delay_1ms

(2);

if(k2==0)

{

H--;

}

while(!

k2);

}

}

if((j%2)==1)

{

if(k1==0)

{

delay_1ms

(2);

if(k1==0)

{

L++;

}

while(!

k1);

}

if(k2==0)

{

delay_1ms

(2);

if(k2==0)

{

L--;

}

while(!

k2);

}

}

set(2,H);

set(12,L);

if(k3==0)

{

delay_1ms

(2);

if(k3==0)

{

gotoreti;

}

while(!

k3);

}

}

}

}

}

reti:

;

}

初始化函数

Init_DS18B20(void)

{

unsignedcharx=0;

DQ=1;DQ复位

delay(8);稍做延时

DQ=0;单片机将DQ拉低

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

DQ=1;拉高总线

delay(14);

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

delay(20);

}

读一个字节

ReadOneChar(void)

{

unsignedchari=0;

unsignedchardat=0;

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

DQ=0;给脉冲信号

dat>>=1;

DQ=1;给脉冲信号

if(DQ)dat|=0x80;

delay(4);

}

return(dat);

}

写一个字节

WriteOneChar(unsignedchardat)

{

unsignedchari=0;

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

DQ=0;

DQ=dat&0x01;

delay(5);

DQ=1;

dat>>=1;

}

}

读取温度

ReadTemperature(void)

{

unsignedchara=0;

unsignedcharb=0;

unsignedintt=0;

floattt=0;

Init_DS18B20();

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

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

Init_DS18B20();

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

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

a=ReadOneChar();

b=ReadOneChar();

t=b;

t<<=8;

t=t|a;

tt=t*0.0625;将温度的高位与低位合并

t=tt*10+0.5;对结果进行4舍5入

return(t);

}

voidwrite_sfm(ucharadd,uintdate)

{

ucharbai,shi,ge,dat;

dat=date10;

bai=date100;

shi=date%10010;

ge=date%10;

write_com(0x80+0x40+add);

write_date(0x30+bai);

write_date(0x30+shi);

write_com(0x80+0x40+3+add);

write_date(0x30+ge);

if(L

{

p15=1;

p16=1;

p30=0;

p31=0;

}

if(dat>H)

{

p15=0;

p30=1;

p31=0;

}

if(dat

{

p16=0;

p30=0;

p31=1;

}

}

voidmain()

{

uinttemp_buff;

uchari;

p15=1;

p16=1;

p30=0;

p31=0;

lcd_init();

Init_DS18B20();

keyscan();

write_com(0x80);

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

{

write_date(table1[i]);

delay_1ms

(2);

}

write_com(0x80+0x40);

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

{

write_date(table2[i]);

delay_1ms

(2);

}

while

(1)

{

temp_buff=ReadTemperature();*读取当前温度*

write_sfm(7,temp_buff);

delay_1ms(500);

}

}

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

当前位置:首页 > IT计算机 > 电脑基础知识

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

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