【《基于AT89S52单片机的智能饮水机设计》12000字(论文)】_第1页
【《基于AT89S52单片机的智能饮水机设计》12000字(论文)】_第2页
【《基于AT89S52单片机的智能饮水机设计》12000字(论文)】_第3页
【《基于AT89S52单片机的智能饮水机设计》12000字(论文)】_第4页
【《基于AT89S52单片机的智能饮水机设计》12000字(论文)】_第5页
已阅读5页,还剩32页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

--[10]。为了完成所要求的任务,软件设计中通常把软件设计的整个过程分成几个部分,每个部分就是一个模块,每一个模块都是一个具有相对独立的一定功能的程序段,这样的程序设计方法就是模块程序设计法。模块程序设计法的主要优点如下:(1)将程序分为多个模块比完整的程序更容易进行编写和调试。(2)模块可以共同存在,一个模块可以在不同条件下被多个工作调用。(3)模块程序允许设计者区分任务,利用现有的模块程序为设计者制造便利。主程序设计程序初始化主要包含三个方面:(1)实现堆栈指针、计时器/计数器0初始化、开中断及计时器/计数器运行的各种设置。(2)LED显示目前水温和预设水温。(3)通过连续扫描按钮来判断是否有按下按键。如果没有按下,则返回显示。如果有按键按下,就执行相应的操作。主程序如下:voidint18b20(void){unsignedcharx=0;doio=1;//doio复位delay_18b20(8);//稍做延时doio=0;//单片机将doio拉低delay_18b20(80);//精确延时,大于480usdoio=1;//拉高总线delay_18b20(14);x=doio;//稍做延时后,如果x=0则初始化成功,x=1则初始化失败delay_18b20(20);}图4-1软件设计整体流程图各模块程序设计读取温度程序设计温度检测读取采用DS18B20芯片,其功能全面、精密度高,充分满足设计要求,将读取到的水温输送到单片机,单片机输出到显示电路,将水温实时表示。温度检测程序段如下:/*****读取温度*****/unsignedintReadTemperature(void){unsignedchara=0;unsignedcharb=0;unsignedintt=0;floattt=0;int18b20();writont(0xCC);//跳过读序号列号的操作writont(0x44);//启动温度转换int18b20();writont(0xCC);//跳过读序号列号的操作writont(0xBE);//读取温度寄存器a=radt();//读低8位b=radt();//读高8位t=b;t<<=8;t=t|a;tt=t*0.0625;t=tt*10+0.5;//放大10倍输出并四舍五入return(t);}/*****读取温度*****/voidcheck_wendu(void){ uinta,b,c; c=ReadTemperature()-5; //获取温度值并减去DS18B20的温漂误差 a=c/100; //计算得到十位数字 b=c/10-a*10; //计算得到个位数字 m=(c/10)+1; //计算得到整数位 n=c-a*100-b*10; //计算得到小数位 if(m<0){m=0;n=0;} //设置温度显示上限 if(m>99){m=99;n=9;} //设置温度显示上限}显示程序设计显示程序是根据单片机发送的数据及时更新显示的数据显示程序段如下:voiddisplay(){if((kk==0)&(xianshiflag==0)) { check_wendu(); //检测温度 delay(50); write_com(0x80,0); write_com(table[shi/10],1);//显示小时 write_com(table[shi%10],1); write_com(':',1); write_com(table[fen/10],1);//显示分钟 write_com(table[fen%10],1); write_com(':',1); write_com(table[miao/10],1);//显示秒 write_com(table[miao%10],1); write_com(0x80+0x0a,0); write_com(table[m/10],1);//显示小时 write_com(table[m%10],1); write_com('C',1); } if((kk==1)&(xianshiflag==0)) { write_com(0x80,0); //显示温度上限 write_com('H',1); write_com(':',1); write_com(table[hh/10],1); write_com(table[hh%10],1); } if((kk==2)&(xianshiflag==0))//定时开机显示界面 { write_com(0x80+0x05,0); write_com('O',1); write_com('P',1); write_com('E',1); write_com('N',1); write_com(0x80+0x43,0); write_com(table[shi1/10],1);//显示小时 write_com(table[shi1%10],1); write_com(':',1); write_com(table[fen1/10],1);//显示分钟 write_com(table[fen1%10],1); write_com(':',1); write_com(table[miao1/10],1);//显示秒 write_com(table[miao1%10],1); } if((kk==3)&(xianshiflag==0))//定时关机显示界面 { write_com(0x80+0x04,0); write_com('C',1); write_com('L',1); write_com('O',1); write_com('S',1); write_com('E',1); write_com(0x80+0x43,0); write_com(table[shi2/10],1);//显示小时 write_com(table[shi2%10],1); write_com(':',1); write_com(table[fen2/10],1);//显示分钟 write_com(table[fen2%10],1); write_com(':',1); write_com(table[miao2/10],1);//显示秒 write_com(table[miao2%10],1); } }定时程序设计定时程序是根据用户所需进行定时开关机设计。部分定时程序段如下://=====================定时开机设置==================// if((keyjia==0)&(shezhi==1)&(kk==2)) { write_com(0x0c,0); shi1++; if(shi1>23)shi1=0; write_com(0x80+0x43,0); //显示定时开机时间设置 write_com(table[shi1/10],1); write_com(table[shi1%10],1); SETS(); while(!keyjia); } if((keyjian==0)&(shezhi==1)&(kk==2)) { write_com(0x0c,0); shi1--; if(shi1<0)shi1=23; write_com(0x80+0x43,0); //显示定时开机时间设置 write_com(table[shi1/10],1); write_com(table[shi1%10],1); SETS(); while(!keyjian); }//=====================定时关机设置==================//if((keyjia==0)&(shezhi==1)&(kk==3)) { write_com(0x0c,0); shi2++; if(shi2>23)shi2=0; write_com(0x80+0x43,0); //显示定时关机时间设置 write_com(table[shi2/10],1); write_com(table[shi2%10],1); SETS(); while(!keyjia); } if((keyjian==0)&(shezhi==1)&(kk==3)) { write_com(0x0c,0); shi2--; if(shi2<0)shi2=23; write_com(0x80+0x43,0); //显示定时关机时间设置 write_com(table[shi2/10],1); write_com(table[shi2%10],1);SETS(); while(!keyjian); }LCD显示LCD1602程序编写步骤如下:(1)定义LCD1602管脚,包括RS,R/W,E;(2)显示初始化:延时、清理缓存等;(3)设置显示地址;(4)写显示字符的数据。程序流程图如图4-2所示:图4-2液晶显示子程序温度数据采集单片机对DS18B20的访问流程是:将DS18B20初始化,操作ROM,最后操作内存和数据。DS18B20的所有工作都要按照严格的工作顺序和通信协议进行,如主机在DS18B20的温度下控制转换过程,根据DS18B20的通信协议,需要经过三个程序。每次读取前,需复位DS18B20,复位成功后,发出ROM命令,最后发出RAM命令,才能对DS18B20进行操作。如图4-3。图4-3温度采集流程图调试系统仿真在这一次的设计当中,用到了KeiluVsion4和Proteus来模拟和调试硬件和软件。keilc51是一个51系列兼容的单片c语言软件开发系统,由美国的keil软件开发。Keil提供了一套完整的开发解决方案,包括模拟调试器、宏汇编器、c编译器、库管理、链接器等,通过uvsion组合而成。Proteus是世界上最常用的EDA工具,从布局原理图,调试器到微控制器和外部电路的仿真,PCB设计,从理论到完整的产品设计。Proteus提供了最好的动态模拟和视觉感知,强大而全面的数据库,易于理解和强大。电源电路的仿真净水器通电时电源指示灯亮,这时各模块都通电,使净水器正常运转。本设计还采用7805进行稳压,使设计更加方便生活。如图5-1所示。图5-1电源电路的仿真出水电路模块的仿真在运行状态下按出水按钮,发动机运转,意味着净水器开始出水。如图5-2所示图5-2出水模块的仿真加热模块电路的仿真接通电源后,按下加热按钮,打开饮用水加热,加热指示灯亮起,再次按下加热按钮,停止加热,指示灯熄灭,如图5-3所示。图5-3加热模块的仿真防干烧电路的仿真防干烧保护采用双金属片开关,基本原理就是把两片膨胀系数不同的金属片铆合在一起,当温度超过限定温度时,指示灯亮起,两片金属片发生膨胀形变,从而断开接触点切断加热器供电。如图5-4所示。图5-4防干烧模块的仿真24C04电路的仿真用于存储我们设定好的信息,如:存储所需加热温度的信息,存储加热开始时间信息等。如图5-5所示。图5-524C04模块的仿真整体仿真本系统仿真主要有以下几个步骤:(1)将这次设计写好的程序编入Keil中,并形成hex文件。(2)通过编译,我们可以看到程序没有来自下面状态栏的写入错误。然后我们就可以打开设计软件来模拟电路模拟。(3)根据设计需要,结合现有的功能,选择合适的元件,(4)整个电路主要由89S52单片机超声波传感器、LCD1602液晶显示器、LED灯及各种电子元件组成。根据合适的位置,将整个电路布置成一个简单、实用、高效的整体电路图。(5)双击89S52单片机元件,弹出对话框;(6)点击菜单“ProgramFile”,选择完成的hex文件;(7)现在整个系统都属于短路状态,只有点击左下角的运行按钮,才会使电路激活,仿真才会开始。通过系统测试仿真,看到了系统确实能按照正常的工作来运行,也基本实现了设计的功能。整体仿真图如图5-6所示。图5-6系统仿真图系统调试系统调试不仅是一个发现错误的过程,也是系统产生和处理错误的过程,第一阶段就是进行测试,是通过焊接电路的具体步骤来测量整个电路。确保每个器件都可以正常工作,我们知道,实物制作过程中很关键的一部分就是电路的检查,如果硬件电路出现问题,那整个系统都无法进行调试了,还会损毁元器件,所以我们要保证硬件电路的正常。如果出现问题,就要进行调整,就是对电路中某些有问题的参数进行修正,使设计更完美。对每一项改动都要做好记录,让人一目了然,这样才能使整个设计做成功。不完成硬件的检测,确保无误,那其他工作将进行不了,所以确保硬件电路的正常工作很重要。我完成这次毕业设计的关键一步就是在于系统硬件与软件的调试。调试在设计中是不可缺失的一个重要的步骤,在大部分工作完成后,硬件电路的设计和代码的编写是一个难题。我们要不断试验,并且在调试试验板上面验证可行性。制作电路板后,通过电路腐蚀制作PCB板,焊接元器件,将程序连接到单片机上进行调连。因此在焊接前要认真阅读规格和设计要求,仔细检查元器件的型号是否正确。具体步骤如下:(1)硬件焊接1)先检测所有核心元件,确保质量完好无损。2)将要焊接的元器件清点一遍,以保证不会有漏焊的情况,将PCB板和所用到的元器件擦拭干净,干净以便焊接,并且保持元器件的方向尽可能一致,从而达到整体美观的效果。3)当烙铁达到所需温度时,将焊锡丝放到摆放好的元器件引脚上,然后用烙铁加热锡丝使之熔化。4)将焊好的元器件上的引脚剪去。(2)硬件调试所有的分单元电路完全没有问题并不代表由它们组成的系统就没问题。所以还应该最后做一次系统调试。其目的是为了观察和测量动态性能,把测试结果与之前的指标再对比一次,发现问题并解决问题,直到完整的电路完全没有问题为止。在测试过程中,会因为实际环境参数,验证设备和测试步骤等其他因素都会影响最终的测试结果的。在一定的程度上采集数据值与真实实际值之间存在一定的误差。如本设计中,在数据采集中会因为系统设备存在一定的延时,导致采集信号不准确。为了降低实验中的误差,控制系统一般采用修正的方法来降低实际实验中的误差。其中修正的方法一般是在实验前或者实验中,通过其他某类系统误差的修正值来弥补该类误差值。其中在实验中采集数据和处理过程采取合适的修正值很重要。本次运用的芯片可以通过查找技术手册获取误差修正值,在系统程序中,通过一定的子程序,提高精确度。在对硬件电路调试过程中。按照检测的步骤检查几乎每一步都有可大可小的问题,有些小问题本不该错的却因为粗心大意导致出现错误。所以说,做任何事情都要谨慎小心,不能出现任何的错误,否则要浪费很多的时间和精力。(3)软件调试是在开发功能的时候使用开发板进行功能测试,最后把程序移植到制作的实物中,我们需要对单片机引脚进行修改。代码编写的时候也出现了很多问题,有时候写着就忘了把符号输进去,然后在纠错的时候就会出现很多提醒,还有就是语法不太对,在出现这种情况下,我通过查询资料求助同学慢慢的都解决了。软件调试是建立硬件的基础之上的,要求百分百无误才行,在确定整个硬件电路都是正常工作的,没有短接的情况下,就可以进行完整的代码测试,所以要对硬件部分进行仔细检测,确保功能都实现。编码为了降低复杂度,在硬件部分的软件开发上,采用的是模块化开发的方式进行,先使用开发板,对所需要使用到的模块单独进行编码工作,先独立编译,再把他们包含入主程序统一编译。这样分模块单独实现某一部分的功能,通过测试后,再把所有部分整合起来联合调试,检查错误,对编译中产生的错误进行修改,没问题后编译生成可执行程序。在确定整个硬件电路正常的情况下,把执行程序下载到单片机进行综合调试,整个过程需要反复调试和修改程序才能实现所需要的功能。在调试的时候,我们可以先准备一组实验数据来检测代码,运行程序,如果测试的数据和正确的结果相差不大,那么说明程序调试成功了;如果和正确的数据相差很大,则说明程序有错误。然后确定程序中出现错误的地方,找出错误的原因。如果是一些简单代码、指令的错误,那么直接修改设计代码就行;如果是算法错误,这样的一些根本性问题,我们需要重新编码,检查逻辑是否有误,再进行测试。用C语言编写代码,并编写到Keil软件中,然后进行调试。将调试后没有错误的代码规整并录入到开发板上,从而完成本设计的任务。调试结果及分析(1)调试结果硬件焊接完成后使用了万用表等测试工具对焊接好的电路板进行了进一步的检查,主要检查是否有短路。如果检测发现有短路,就要再检查一下器件的正负极是不是焊接反了。经过测试后,系统正常。(2)结果分析在进行完所有调试之后,原本所预设的功能基本都实现了。当测量数值不在预设数值范围内时,自动加热或停止加热,液晶显示屏能显示各个参数,控制电路能准确控制,按键电路也能对预设数值进行调整。在测试过程中会因为实际环境参数,验证设备和测试步骤等其他因素都会影响最终的测试结果的。在本设计中,在数据采集中会因为系统设备存在一定的延时,导致采集信号不准确。为了降低实验中的误差,控制系统一般是采用修正的方法来降低实际实验中的误差。其中修正的方法一般是在实验前或者实验中,通过其它某类系统误差的修正值来弥补该类误差值。本次运用的芯片可以通过查找技术手册获取误差修正值,在系统程序中,通过一定的子程序,提高数据采集的准确性总结以DS18B20单片机为核心控制的智能饮水机系统,通过软件程序设计,基本上实现了所需要的各种要求。虽然该系统的温度测量等方面还不是很准确,尝试了多种方法进行改善,仍然不是特别理想,但大体设计仍然可以表明设计的目的和要求,与最初设想的结果相差不大。该智能饮水机可以根据不同用户的需要设定开始加热的时间以及想要加热的温度,还有防干烧功能,不会造成电力能源浪费。通过近两个月的学习努力,从确定系统设计的主题开始,到逐渐的寻找资料,学习理论,实验程序设计测试等,这个过程都大大提高了我的理论知识和实践能力。了解了单片机的硬件结构和软件程序设计方法,对单片机的操作模式有了较好的了解,同时我也对传感器、液晶屏幕、键盘、蜂鸣器等一些周边设备有所了解。我学会了如何设计一个项目。第一,要知道系统应该实现什么样的功能,要分析需要什么样的设备。第二,根据相应的系统设计选择和购买所需硬件。硬件种类繁多,选择不同种类的硬件时不仅要求经济实惠,注意如何更准确、更方便地完成系统的要求更为重要。第三,要明确如何协调好各个硬件,通过主控制器如何更好好实现硬件功能,最后进行系统的测试和调试,使设计能够很好地完成系统的要求。由于我的水平有限,本次设计也略有欠缺,例如温度下限设置和控制应用应该更加具体而且广泛。温度调节已经成为21世纪的热点之一,无论是生产还是生活都与人类有着密切的关系。智能饮水机已成为必然趋势,随着世界经济的发展和科技的进步,人民的生活水平不断提高。社会不断发展,我们不能总是固守陈规,以前我们无法用人力调节温度和湿度,巨大的人力和财力资源浪费,控制系统也比较单一。利用自动控制,不仅节约了人力资源,还体现了与时代一起发展的思想,科技在发

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论