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

付费下载

下载本文档

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

文档简介

基于单片机的智能饮水机的设计 21.1系统设计背景 21.2相关领域的研究现状 21.3设计组织结构 31.4本章小结 3 42.1系统总体方案设计 42.2系统性能原则 42.3模块功能选择 42.4本章小结 5 63.1单片机电路介绍 63.2电源设计 73.3显示模块电路 83.4温度传感器 98.标准安装螺纹M10X1,M12X1.5,G1/2任选。 103.5蜂鸣器模块 113.6水泵驱动电路 113.7定时模块 123.8本章小结 12 134.1软件环境介绍 134.2程序开发语言介绍 134.3系统软件主程序设计 144.4显示子程序设计 144.5温度检测主程序设计 164.6定时子程序设计 194.7本章小结 205系统分析、调试 215.1系统硬件的环境搭建、测试 211.检查每个元件是否有损坏 212.正确的焊接每一个元件 215.2系统的软件环境搭建及其测试 215.3系统的调试 225.4模块的功能测试 225.5系统的调试与分析 255.6本章小结 266总结与期望 26随着科技的不断发展,人们的生活水平也越来越高,生活中一些普通的饮水机已经满足不了大家的需求。所以越来越多的人想要一款更为便捷的饮水机,想让饮水机实现自动定时加热,自己不用动手。单片机成为了机器人以及各种家居设备和各种智能化设备的刚需,在各行各业所产生的影响也越来越大,单片机这一行业的发展提高了人们的生产效率[1]。单机价格便宜,实物制作成本低,且单片机具有较强的计算能力,足以满足人们对饮水机需求的处理能力。在温控显示饮水中应用单片机做主控芯片,具有可观的经济价值。设备的升级改造也可以通过微处理器设计控制系统的改进来实现。本课题产生于饮水机应用广泛,单片机技术成熟的背景之下,通过单片机做中枢处理芯片,不断扫描按键,结合中断处理,完成LCD液晶显示,蜂鸣器鸣叫,电机驱动,水泵驱动等功能。现阶段人们理想中的饮水机与目前的技术任有很大差别,日常使用的饮水机并不能实现人们所想要的智能化的需求,设计一款具有多种功能的饮水机,发展的前景良好。今天,科学发展在不断的进步,各行各业都创造了许多新的发明,发明了各种技术。从1990年开始,电子产品发展尤为突出,中国开始大力与各个国家合作并学习他们的先进技术,以此不断创新,提高自己。而现今中国的多样化的饮水装置成为了各国所追捧的商品。根据查阅前人研究饮水机的相关文献[2],了解到就智能饮水机,人们在使用时最关注的问题是产品的安全性和舒适性,所以在高度集中智能化前提上同时要注意产品的安全问题以及是否舒适。1928年,开利公司制造出了第一代的家用型的饮水机,在科技和物质条件尚不发达的那个年代,当时的饮水机只有一个简单的加热的功能。在科技高度发达的今天,国外在对智能化产品的投入使用程度以及国民认知等方面优势明显。包括饮水机在内的大部产品,国外对某个智能产品进行开发与创新时,会进行一层一层筛选,最后根据价值的不同来进行产品划分。值得注意的是很多智能产品的价格,超出了大部分人所能承受的范围。对国内的一些常用的智能饮水机进行分析。每当国内的智能化技术发展到一定的高度后,相关的技术公司渐渐开始发明相关的智能化设备。从2012年开始,我国的许多互联网公司就开始着手智能化设备的研发[3],实现智能化设备与互联网的有机连接。目前智能家居的影响尤为突出,而智能饮水机也随着智能家居的发展慢慢的走入人们的视野。经过互联网公司的支持和推进,各个地方的政府加大了对智能化设备产业的扶持,带动了国内许多中、小公司对发展智能化设备的积极性,同时也提高了他们对做好这一方面的信心。他们所研发的产品也让用户有着良好的体验感,从而产生了一个从企业到政府到用户都非常满意的良性循环[4]。智能饮水机广泛应用于日常生活前景广阔。1.绪论:分析现在智能化设备的研究状况,了解现阶段智能化设备在世界各地的流行和受欢迎程度,通过对智能饮水设备的工作方式的描述,从侧面突出研究的创新性,相关功能易实现。2.系统的总体设计:先说明本次设计主要的功能,做出设计的需求分析,确定整个系统要进行数据传输的流程,接着确定设计的系统需要的功能模块,最后,对整个系统的所有模块以及所有功能进行阐述。3.系统的硬件设计:详细说明每一个硬件模块电路原理,包括单片机点介绍、电源电路设计介绍、Lcd显示模块电路介绍、温度传感器模块电路介绍、蜂鸣器模块电路介绍、水泵驱动模块电路介绍和定时模块介绍,也包括对相关时序图的说明。4.系统的软件设计:具体阐述了软件设计相关技术,包括软件开发环境介绍和程序开发语言C语言介绍;详细解释了系统软件主程序设计、显示子程序设计、温度检测程序和定时子程序。温度检测程序中详细介绍了温度检测流程图、DS18B20复位子程序和温度转换子程序。5.系统调试:分别调试设计的各个模块,在所有模块功能能够独立正确完成后,对温控显示饮水机做整体测试。6.总结与展望:对开发设计过程中所做的的工作进行总结,展望了温控显示饮水机未来的发展,并指出可以继续改进之处。本章主要分析了饮水机的研究背景,阐述了国内外研究现状,设计了课题研究组织架构。对温控显示饮水机的开发做了初步的设计,理清了设计的思路,对研究开发接下来的步骤有了更加清晰明确地认识。

系统通过51单片机主控芯片来控制智能饮水机的各个模块。以C51单片机为核心,通过温度和水位模块来采集数据,将温度和水位模块所采集到的数据进行模数转换,模数转换后将数据传输给单片机处理,单片机处理后将数据传送到驱动模块,驱动模块控制抽水机的工作,同时单片机将数据进行处理并传递到LCD显示模块,从而实现智能饮水机正常运行的功能。单片机单片机水泵驱动模块温度检测模块蜂鸣器模块显示模块水位检测模块图2-1系统结构设计图系统通过C51单片机采集、分析、处理、传送数据,控制各个模块,完成了整个智能饮水机的所有功能,在C51单片机控制下的系统中各个模块都是相互连接。首先通过温度传感器和湿度传感器采集饮水机温度和水位信息,把采集到的数据传送给单片机并进行模数转换。同时显示模块实时显示饮水机内水的温度,并显示当前日期和时分秒等数据。若水位较低,则单片机驱动蜂鸣器鸣响以提示饮水机内水量不足,并驱动水泵模块自动给饮水机加水。设计的目的是实现系统调控工作自主化、人性化,为体现本系统的优点,系统需要满足以下原则:及时更新采集的数据,这个智能饮水机的设计主要就是为了方便我们的生活,在减少人力物力的同时,可以让我们的生活更加的便捷。如果设计出来的产品不能及时更新数据那么这次的设计就没有任何意义。所以要提高系统的整体性能必须要数据及时更新。经过查阅资料并结合所学知识,有两种显示模块适合我们所设计的智能饮水机:LCD液晶。这个模块的优点在于硬件方面,显示数据的要求低,而且它可以减少许多的IO管脚,从而减少功耗。缺点就是显示频率低,显示的编程代码特别死板,不是特别方便。8*8点阵。这个模块的特点是它是通过控制电压来控制显示数据的不同。它的优点和缺点也特别明显,优点是编程简单容易上手,而且可以选择多种模式的数据显示[5]。缺点是不但提高了显示难度,还牺牲了太多的IO资源。通过文献和书本上的知识,我对这两种交互模块有了一定深度的了解,通过对比这两种交互模块的优缺点,我最后选择了LCD液晶作为本次智能饮水机的交互模块,因为液晶能够更加完美的显示数据,所以它更适合这里的数据采集系统。本章主要阐述系统的构建,具体介绍了系统的总体方案设计,系统性能原则以及模块功能简介,为后面的具体设计奠定了基础。

STC—前缀,表示芯片为STC公司生成的产品。8—表示该芯片为8051内核的芯片。9—表示内部含FLASH存储器,还有如80C51中的0表示内部含MaskROM(掩模ROM)存储器;如87C51中7表示内部焊EPROM存储器(紫外线可擦除ROM)。C—表示该器件为CMOS产品。还有如89LV52和89LE58中的LV和LE都表示该芯片为低电压产品(通常为3.3V电压供电);而89S52表示该芯片含有可串行下载功能的FLASH存储器,即具有ISP可在线编程功能。5—固定不变。16—表示该芯片内部程序存储空间的大小。16为63KB,还有如1为4KB,2为8KB,3为13KB,4为16KB,8为32KB。[6]程序空间大小决定了一个芯片所能装入执行代码的多少。一般来说,程序存储空间越大芯片价格也越高,所以我们在选择芯片时要根据自己需要对单片机型号进行选择。只要程序能装的下,同类芯片的不同型号不会影响其功能。RD+—表示单片机内部RAM的代销,RD+表示内部RAM为1280B,还有如RC为512B。图3-1整体电路原理图STC89C51的管脚说明: VCC:提供电压。GND:接地。P0口:P0口为一个8位双向I/O口,每个管脚可吸收8个TTL门电流。因为P0口没有上拉电阻,不能进行数据传输,所以要在LCD1602液晶外加一个上拉电阻。P1口:P1口是一个8位双向I/O口,每个管脚能接收输出4个TTL门电流。因为P1口内部有上拉电阻,所以在P1口管脚输入1后,就会被拉为高电平,作为输入,P1口被外部下拉为低电平时,将输出电流。P2口:P2口为一个8位双向I/O口,P2口缓冲器可接收输出4个TTL门电流。因为P2口内部有上拉电阻,当P2口被写“1”时,其管脚被上拉电阻拉高,作为输入。P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。RST:复位端。PSEN:外部程序存储器的选通信号。只有在低电平时才有效/EA:/EA功能为内外程序存储器选择控制端。当/EA低电平时,单片机读取外部程序存储器;当/EA端高电平时,单片机读取内部程序存储器。XTAL1、XTAL2:为时钟引脚。XTAL1为反向振荡器的输入端;XTAL2为反向振荡器的输出端[7]。电源模块是整个系统最重要的部分,它是整个系统的正常运行的不可或缺条件之一。如图3-2所示,设计选取5V的电压,本设计采用充电宝提供单边机所需的稳定5V直流电源,以减少电源线的多次拔插导致接触不良。电源电路里面三极管的两个主要作用是:放大和倒相。如要把三极管做成开关,需要三极管工作在击穿状态,与外接电路配合才能实现[8]。图3-2电源模块原理图显示模块这里主要是采用了液晶显示器,它的型号是LCD1602。主要技术参数如下:显示容量:16×2个字符。芯片工作电压:4.5—5.5V。工作电流:2.0mA(5.0V)。模块最佳工作电压:5.0V。字符尺寸:2.95×4.35(W×H)mm。图3-3显示模块电路原理图如图,LCD1602显示模块电路是并不是独立的,LCD1602的8位数据口DB0-DB7与单片机的P00-P07管脚连接,LCD1602的RS、RW、E脚与单片机的P26、P25、P27管脚连接。RJ1是一个电位器,用来调节LCD1602对比度即显示亮度。注意:这里原理图是使用的8位LCD1602接口设计,如果使用4位LCD1602则需要使用转接板。在出厂配套LCD1602时,有的是8位的,有的是4位的。出厂的4位LCD1602已带有转接板,仅仅将8位LCD1602引脚的高四位用于4位LCD1602。也就是说在传输数据的时候需要将8位的数据截成两段,先发送高四位,在发送低四位。其它引脚操作方法不变。引脚功能说明如下:引脚1:VSS为地电源。引脚2:VDD接5V正电源。引脚3:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。引脚4:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。引脚5:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。引脚6:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。引脚7~14:D0~D7为8位双向数据线。引脚15:背光源正极。引脚16:背光源负极。图3-4显示模块时序图当要写命令字节的时候,时间由左往右,RS变为低电平,R/W变为低电平,注意是RS的状态先变化完成。然后这时,DB0~DB7上数据进入有效阶段,接着E引脚有一个整脉冲的跳变,接着要维持时间最小值为tpw=400ns的E脉冲宽度。然后E引脚负跳变,RS电平变化,R/W电平变化。这样便是一个完整的LCD1602写命令的时序。使用LCD1602,首先需要LCD1602初始化,通过写入一些特定的指令实现。选择要在LCD1602的特定位置显示,并将所要显示的数据发送到LCD的DDRAM。LCD1602操作步骤如下:初始化;写命令(RS=L),设置显示坐标;写数据(RS=H)。此时,不需要读出它的数据的状态或者数据本身,所以只需要看两个写时序:当要写指令字,设置LCD1602的工作方式时:需要把RS置为低电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。当要写入数据字,在1602上实现显示时:需要把RS置为高电平,RW置为低电平,然后将数据送到数据口D0~D7,最后E引脚一个高脉冲将数据写入。写指令和写数据,差别在于RS的电平不一样。DS18B20温度传感器是美国Dallas半导体公司推出的一种改进型智能温度传感器,测温范围为-55~125℃,最大分辨率可达0.0625℃。DS18B20可以直接读出被测温度值,而且采用了一线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点[9]。测温电路图3-5所示。技术性能描述:独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。2.测温范围-55℃~+125℃,固有测温分辨率0.5℃。3.工作电源:3~5V/DC。4.在使用中不需要任何外围元件。5.测量结果以9~12位数字量方式串行传送。6.不锈钢保护管直径Φ6。7.适用于DN15~25,DN40~DN250各种介质工业管道和狭小空间设备测温。8.标准安装螺纹M10X1,M12X1.5,G1/2任选。9.PVC电缆直接出线或德式球型接线盒出线,便于与其它电器设备连接。图3-5温度传感器模块电路原理图它的工作原理就是低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号发送给计数器1。高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为计数器2的脉冲输入。得到的温度值脉冲信号经过AD转换成电压值,之后再经过计算,可以得出所检测的温度。图3-6温度传感器模块时序图温度传感器模块时序:在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位(位0)开始。同样,在紧8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。CE(RST):复位时序,即在RST引脚产生一个正脉冲,在整个读写器件,RST要保持高电平,一次字节读写完毕之后,要注意把RST返回低电平准备下次读写周期。单字节读时序:注意读之前还是要先对寄存器写命令,从最低位开始写;可以看到,写数据是在SCLK的上升沿实现,而读数据在SCLK的下降沿实现。所以,在单字节读时序中,写命令的第八个上升沿结束后紧接着的第八个下降沿就将要读寄存器的第一位数据读到数据线上了!这个就是DS1302操作中最特别的地方。单字节写时序:两个字节的数据配合16个上升沿将数据写入即可。如图3-7所示蜂鸣器电路,提示设备选用压电式蜂鸣器,它约需要10mA的驱动电流,只需在其两条引线上加3-15V的直流电压,即可产生3KHz左右的蜂鸣声音,图中蜂鸣器的一端接在高电平+5V,另一端接在单片机的P2.6口,在初始状态P2.6始终输出高电平1,当需要报警时,程序对其端口清零即可,声音的长短可用延时程序控制实现。图3-7蜂鸣器模块电路原理图继电器是一种电子控制器件。继电器由控制系统和被控制系统两个部分组成。从本质上来说它就是用较小的电流去控制较大的电流。它的主要作用是自动、保护、转换电路[10]。继电器的控制线圈与电源相接,另一端与水泵相接,通过水位传感器探测到的信号,使继电器控制线圈两端形成电势差并构成电流回路而产生电磁力。在电磁力和继电器弹簧片的作用下,使继电器触点接通或断开电路,从而控制水泵的运行和停转。图3-8水泵驱动电路原理图本设计通过使用DS1302定时器以实现定时功能。操作DS1302的大致过程,首先将各种数据写入DS1302的寄存器,以设置它当前的时间的格式。然后使DS1302开始运作,DS1302时钟会按照设置情况运转,再用单片机将其寄存器内的数据读出。图3-9定时模块原理图工作原理:ds1302时钟芯片工作时为了对任何数据传送进行初始化,需要将复位脚(RST)置为高电平且将8位地址和命令信息装入移位寄存器。数据在时钟(SCLK)的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,进行读操作时单片机输出数据,进行写操作时单片机输出数据[11]。时钟脉冲的个数在单字节方式下为8+8(8位地址+8位数据),在多字节方式下为8位数据,最多可达248位的数据。图3-10定时模块时序图定时模块时序说明:在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位(位0)开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。本章主要阐述温控显示饮水机设计的硬件电路,介绍系统的电源电路、显示模块电路、温度传感器电路、蜂鸣器电路、水泵驱动电路和定时模块电路,具体说明它们的型号、性能参数、工作原理和相关时序图等。编程软件采用的是keil4编程。Keil4软件特别适用于单片机等一系列的硬件编程,它可以将系统所需要的多种功能代码快速编译。可以用Keil4完成编辑(Translate)、汇编(Build)、连接(Rebuild)、调试(Debug)功能,以完成整个开发过程。在Keil4里设置Output输出16进制hex文件。编写代码后,通过STC-ISP烧写软件下载到单片机上。STC-ISP烧写软件会识别串口号,将电脑端和单片机端联通,为保证单片机能够正常执行电脑端Keil4编写的程序,最低波特率选择4800,最高波特率选择115200。经过Keil4进行代码的编写后,使用Proteus了进行仿真,加入proteus仿真设计以此实现设备调试并降低成本。程序开发语言为C语言。C语言于上世纪70年代初问世,早期在UNIX系统中广泛应用。由于C语言的强大功能和各方面的优点逐渐为人们认识,到了八十年代,C开始进入其它操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用,成为当代最优秀的程序设计语言之一。在实际工程应用中,51单片机的程序设计一般都是采用C语言编写,通过相应的编译器,得到可执行代码,以提高程序开发效率。但由于单片机的内部资源有限,并结合单片机的特点(如位操作),与标准C语言相比有所不同,称为C51程序。C语言的特点:语言简洁、紧凑,使用方便、灵活。运算符丰富。数据结构丰富。具有现代化语言的各种数据结构。可进行结构化程序设计。可以直接对计算机硬件进行操作。生成的目标代码质量高,程序执行效率高。可移植性好。用C语言编写的51单片机应用程序,则不用像汇编语言那样须具体组织、分配存储器资源和处理端口数据,但在C语言编程中,对数据类型与变量的定义,必须要与单片机的存储结构相关联,否则编译器不能正确地映射定位。用C语言编写单片机应用程序与标准的C语言程序也有相应的区别:C语言编写单片机应用程序时,需根据单片机存储结构及内部资源定义相应的数据类型和变量,而标准的C语言程序不需要考虑这些问题。C51包含的数据类型、变量存储模式、输入输出处理、函数等方面与标准的C语言有一定的区别。其它的语法规则、程序结构及程序设计方法等与标准的C语言程序设计相同。C语言具有许多数据类型,本课题使用到了char、int、sbit、bit等。系统软件程序设计中,主要是设计单片机控制各个模块的程序,使得模块完成相应功能,系统正常工作。本设计可以完整运行的前提是每一个模块的功能正确执行,数据信息在各个模块之间准确传递,同时要硬件部分连接正确,当某一个模块软件设计出现问题时及时找到出现问题并解决。当模块子程序编写问题解决后,通过传感器获得准确的数据并通过C51单片机做出逻辑判断,把所得到的温度、时间等数据通过显示模块显示,体现智能饮水机的智能化。开始开始初始化读取水位读取按键读取温度处理按键调用显示子程序图4-1主程序流程图在整个系统的设计中都是分模块进行的,在软件的设计中分为主程序、显示子程序、温度子程序、水位子程序、定时子程序。主程序流程图如图4-1所示。主程序工作过程为:首先给系统上电,对系统初始化操作,紧接着读取水位信息,再判断按键是否被按下并读取按键信息,读取按键信息后再读取温度信息。温度传感器、湿度传感器和按键模块的信息读取完后,开始处理按键,根据不用的按键信息,执行相应的功能函数。最后,调用显示子函数,将温度、时间等信息显示在LCD屏幕上。整个程序在初始化后不断循环,直至系统断电。给显示模块上电后,模块子程序首先设置显示屏光标和输入方式,再清屏,紧接着初始化显示位置和内容。下一步判断程序执行过程中是否调用显示子程序,若调用,则单片机对传输给显示子程序的数据做处理,显示温度、时间等信息,完成显示刷新;若未调用显示子程序,则在继续循环函数中等待调用。NNY开始设置光标调用显示子程序?初始化显示位置和内容设置输入方式清屏结束数据处理显示温度显示时间图4-2显示子程序设计流程图对于写指令时序,需要将rs置0,写入数据e置1,保持150ms左右,再将其拉低,延迟25ms左右,其子程序为:voidwrite_com(ucharcom) { rw=0; delay1(5); rs=0; delay1(5); e=1; delay1(5); P0=com; delay1(5); e=0; delay1(5); }对于写数据时序,需要将rs置1,写入数据e置1,保持150ms左右,再将其拉低,延迟25ms左右,其子程序为:voidwrite_date(uchardate) { rw=0;delay1(5);rs=1;delay1(5);e=1;delay1(5);P0=date;delay1(5);e=0;delay1(5); }4.5.1主程序流程图开始开始DS18B20复位子程序温度转换子程序读温度子程序按键扫描子程序温度计算子程序显示子程序温度比较子程序图4-3主程序流程图主程序首先进行初始化,首先调用DS18B20复位子程序检测DS18B20数据,当检测到DS18B20数据后,调用温度转换子程序进行温度转换,调用读温度子程序读取当前饮水机内水温,调用温度计算子程序将DS18B20检测到的数据转换成显示函数能够直接显示的数据,并通过调用显示子程序将温度信息显示出来。调用温度比较子程序比较环境温度和饮水机内水的温度。紧接着调用按键扫描子程序,判断是否有按键被按下,是否执行按键被按下后的程序。最后在主程序main()中不断循环。4.5.2DS18B20复位子程序流程图为避免上一次温度检测数据影响当前温度检测数据,主程序进行初始化后,要进行DS18B20复位,清除上一次温度检测数据,为后续进行的温度转换子程序等程序准备新的数据。YYN开始延时537us复位低脉冲SETBDQCLRDQ100US内DQ=0FLAG1=1时序延时216usSETBDQ返回FLAG1=0图4-4DS18B20复位检测子程序主机控制DS18B20完成任何操作之前必须先初始化,即主机发一复位脉冲(最短为480us的低电平),接着主机释放总线进入接收状态,DS18B20在检测到I/O引脚上的上升沿之后,等待15-60us然后发出存在脉冲(60-240us的低电平)。如图4-5所示。图4-5初始化程序单总线上的所有通信都是以初始化序列开始。主机输出低电平,保持低电平时间至少480us(该时间的时间范围可以从480到960微妙),以产生复位脉冲。接着主机释放总线,外部的上拉电阻将单总线拉高,延时15~60us,并进入接收模式。接着DS18B20拉低总线60~240us,以产生低电平应答脉冲,若为低电平,还要做延时,其延时的时间从外部上拉电阻将单总线拉高算起最少要480微妙。4.5.3温度转换子程序图当检测到DS18B20数据后,调用温度转换子程序进行温度转换,采用12位分辨率时转换时间约为750ms,流程图如图4-6:开始开始发跳过rom命令写入子程序发温度转换命令返回图4-6温度转换子程序调用温度转换子程序时,程序首先发跳过rom命令,将DS18B20温度传感器采集到的数据写入子程序,子程序预执行将采集到的数据转换为温度读取子程序可以直接调用的数据功能后,程序发温度转换命令,允许将采集到的数据转换为可以直接调用的数据。最后温度转换子程序返回数据转换后的温度数据。DS1302芯片与单片机之间采用同步串行的方式进行通信,仅需复位(RST)、I/O数据线、串行时钟(SCLK)这三个接口。时钟/RAM的读/写数据以一字节到31字节的字符组方式进行通信。软件设计流程图如图4-7所示。开始开始结束DS1302初始化读取DS1302时间显示时、分、秒图4-7定时模块设计流程图根据时序图和命名格式,可写出DS1302的读数据和写数据函数。DS1302读数据函数:ucharread_ds1302(ucharadd){ uchari,value; rst=0; _nop_();//CPU原地踏步 sck=0; _nop_(); rst=1; _nop_(); write_ds1302_byte(add); for(i=0;i<8;i++) { value=value>>1; sck=0; if(io) value=value|0x80; sck=1; } rst=0; _nop_(); sck=0; _nop_(); sck=1; io=1; returnvalue;}DS1302写数据函数:voidwrite_ds1302(ucharadd,uchardat){ rst=0; _nop_(); sck=0; _nop_(); rst=1; _nop_(); write_ds1302_byte(add); write_ds1302_byte(dat); rst=0; _nop_(); io=1; sck=1;}本章主要阐述了系统软件的设计,介绍了软件环境、程序开发语言,对系统软件主程序设计做了详细介绍,详细阐述了显示子程序、温度检测主程序和定时主程序,温度检测主程序内包括了流程图、复位检测和温度转换的介绍。

5系统分析、调试硬件调试需要根据图纸将相关电路图焊接成功,这个步骤必须要在软件测试之前。为了保证电路不出现短路、开路等问题,我们要使用万能表对电路的每一个焊接电进行检测。同时我们也要确保各个元器件排列正确,特别是电容器的极性,因为它可能会导致电路短路和损伤。调试后,我们需要进一步的测试,我们要对每一个测试点的电压值进行测量,因为电源是保证系统电路正常工作的前提,特别是在没有软件的基础下系统的测试就只能依靠电源电路的输入和输出已经各个模块的检测结果是否正常。对于硬件调试,可以利用电学上的检测来检查系统硬件中存在的故障,在硬件调试中,又分为静态调试和动态调试两种方式。静态调试,实际上就是对电路在为工作之前的一种调试,首先要用眼睛观察,仔细地观察外部的各个元件或单元电路在未接电源时是否出现断点或者元件是否符合标准;其次再利用万用表检测,应当用它反复的检查上步骤中有疑惑的接点,然后再去测试各个电源线与地线之间是否有短路的现象发生。上述步骤完成后方可进行通电源检测,让需要被检查的电路通电,观察硬件指标是否符合我们所需要的值;在通电测试时,如发现万用表在某一部分数值出现异常,应立即断电,检查该部分电路是否存在损坏,如元件无损坏或无发热等现象出现,可再次接通电源,使用示波器等精密仪器对关键节点进行检测,直至发现故障并修复。当所有的硬件电路的各项指标达到我们所需要的值,连接所有模块,最后对整个系统进行检查。检查每个元件是否有损坏分析电路图上面所需要的每一个元件,从网上购买回来后用万能表检测每一个元件是否正常,如果有损坏的元件必须马上换掉。必须要确定每一个元件都是正常的,如果等焊接后才发现元件有损坏那么就会特别麻烦。正确的焊接每一个元件按照电路图所规定的方向安装好每一个元件,在焊接元件的时候要特别注意要先焊接比较容易的元件,像一些焊接难度比较高和一些比较容易损坏的元件一定要在后面焊接;在焊接的时候还要注意集成芯片焊接的时间不能太长以免损坏芯片,还有就是要特别注意焊接方向别弄反了。用STC89C51微控制器建立一个工程文件然后在这个文件中再建立一个C文件,接着我们就可以在这个软件中编写程序,写完程序的同时我们就可以用这个软件进行编译,如果有错误我们就可以在这个文件里面直接修改,直到我们成功的output出一个HEX文件就代表这阶段的任务完成了。如图5-1所示就是在output设置输出Hex文件:图5-1勾选输出hex文件完成上述的步骤后就要开始对这个系统进行调试看系统是否满足实验的需要。而系统的调试分为三个方面分别是硬件方面的调试和软件方面的调试以及硬件和软件联合起来的调试因为我们这个系统硬件方面是分为许多模块进行的,所以我们需要把每一个模块都分开调试一次,然后在把所有模块一起进行一个整体的调试才能确定硬件调试的完成。对于软件的调试,我们要采用单片机仿真器和keil对我们所编写的代码进行调试,先把每一个模块分开进行调试观看语法是否存在错误是否能通过测试,当每一个子程序都准确无误时再把主程序进行调试,有错误就要修改直到通过调试。当硬件和软件的调试都完成后,我们要把硬件和软件连接起来一起做一个整体的调试,观看每一个实验的结果都是否符合标准。在这一阶段我们必须反复的不停的进行实验,不断地调试每一个硬件元件和模块的程序,以此来让整个系统得到所需求的结果。焊接完单片机主控芯片电路、电源电路、显示模块电路、温度传感器电路、蜂鸣器模块电路、水泵驱动电路和定时模块电路后,用万用表和示波器观察电路连接是否正确,是否出现漏焊、错焊、虚焊等现象。确认各模块硬件电路连接正确后,对每一个模块进行软件测试。5.4.1时间显示与设置功能测试给系统上电后,LCD模块显示当前的时间,包括年、月、日、时、分、表。默认设置的时间为2022年5月5日,06点00分00秒,开机后时间逐渐改变,功能测试图拍摄时间为开机后24秒,显示的时间为2022年05月05日,06点00分24秒。图5-2时间显示功能测试图时间显示功能测试结果:LCD屏亮,日期显示正常,时间变化显示正常。确定时间显示功能正常后,按下设置键进入设置模式。开始设置时间,时间设置功能测试a图如下:图5-3时间设置功能测试a图在时间设置模式内,不改变年、月、日、时

温馨提示

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

评论

0/150

提交评论