毕业设计(论文)-基于单片机温度自动控制设计.doc_第1页
毕业设计(论文)-基于单片机温度自动控制设计.doc_第2页
毕业设计(论文)-基于单片机温度自动控制设计.doc_第3页
毕业设计(论文)-基于单片机温度自动控制设计.doc_第4页
毕业设计(论文)-基于单片机温度自动控制设计.doc_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

济源职业技术学院设计任务书设计题目:基于单片机温度自动控制设计要求:基本范围 099,精度误差小于 1,LED数码直读显示,有自动控制、温度报警指示灯设计进度要求:指导教师(签名): 摘 要自动控制系统在各个领域尤其是工业领域中有着及其广泛的应用,温度控制是控制系统中最为常见的控制类型之一。随着单片机技术的飞速发展,通过单片机对被控对象进行控制日益成为今后自动控制领域的一个重要发展方向,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。例如:在冶金工业、化工生产、电力工程、造纸行业、机械制造和食品加工等诸多领域中,人们都需要对工业及日常生活中的温度进行检测和控制。采用MCS-51单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量。因此,单片机对温度的控制问题是一个工业生产中经常会遇到的问题。我们利用温度控制来更好的为我们的生活工作所服务,提高我们的生活质量。当然本次温度控制的设计也有不足之处,相信在不久的以后,随着单片机行业的迅速发展,将会有更好的温度控制仪的出现。关键字:MCS-51单片机;温度;软硬件;硬件原理图;程序框35目 录摘 要II目 录III一、单片机的发展1二、设计思路及总体框图321设计思路322系统总体框图电路总体原理框图3三、硬件系统的设计531单片机系统5311单片机的选择5312存储器芯片的选择7313单片机IO口扩展及外部存储器电路73.2温度采集电路的设计8321、温度检测传感器8322、温度采集电路9323、DS18B20温度传感器与单片机的接口电路163.3、温度传感器信号采集放大电路163.4、A/D的选择173.5、D/A转换电路1836、温度检测和变送器1837、键盘和显示的设计1938、报警及指示灯电路的设计20四、软件系统的设计2241、主程序22411主程序模块22412读出温度子程序24413、温度转换命令子程序25414、计算温度子程序26415、显示数据刷新子程序2742、功能实现模块2743、运算控制模块2844、系统程序29致 谢36参考文献37一、单片机的发展单片微型计算机是微型计算机的一个重要分支,也是一种非常活跃和颇具有生命力的机种。单片微型计算机简称单片机,特别适用于工业控制领域,因此又称为微控器。1971年微处理器研制成功不久,就出现了单片微型计算机即单片机,但最早的单片机是1位的,处理能力有限。单片机的发展分为4个阶段:第一阶段(197476年):单片机初级阶段。因为受工艺限制,单片机采用单片的形式而且功能比较简单。例如美国仙童公司生产的F8单片机,实际上只包括了8位CPU,64个字节的RAM和2个并行接口。第二阶段(197678年):低性能单片机阶段。以Intel公司生产的MCS48系列单片机为代表,该系列单片机片内集成有8位CPU,8位定时器/计数器,并行I/O接口,RAM和ROM等,但是最大的缺点就是无串行接口,中断处理比较简单而且片内RAM和ROM容量较小,且寻址范围不大与4KB。第三阶段(197883)高性能单片阶段这个阶段推出的单片机普遍带有串行接口。多级中断系统,16位定时器/计数器,片内ROM,RAM容量加大,且寻址范围可达64KB,有的片内还带有A/D转换器。第四阶段(1983年至今)8位单片机巩固发展以及16位单片机,32 位单片机推出阶段。此阶段的主要特征是:一方面发展16位单片机,32位单片机及专用型单片机;另一方面不断完善高档8位单片机,改善其结构,增加片内器件,以满足不同的客户要求。 单片机的应用单片机的应用很广,分别在以下领域中得到了广泛的应用。工业自动化:在自动化技术中,无论是过程控制技术、数据采集技术还是测控技术,都离不开单片机。在工业自动化的领域中,机电一体化技术将发挥愈来愈重要的作用,在这种机械、微电子和计算机技术为一体的综合技术(例如机器人技术、数控技术)中,单片机将发挥非常重要的作用特别是近些年来,随着计算机技术的发展,工业自动化也发展到了一个新的高度,出现了无人工厂、机器人作业、网络化工厂等,不仅将人从繁重、重复和危险的工业现场解放出来,还大大提高了生产效率,降低了生产成本。仪器仪表:目前对仪器仪表的自动化和智能化要求越来越高。在自动化测量仪器中,单片机应用十分普及。单片机的使用有助于提高仪器仪表的精度和准确度,简化结构,减小体积,易于携带和使用,加速仪器仪表向数字化、智能化和多功能化方向发展。消费类电子产品:该应用主要反映在家电领域。目前家电产品的一个重要发展趋势是不断提高其智能化程度。例如,电子游戏、照相机、洗衣机、电冰箱、空调、电视机、微波炉、手机、IC卡、汽车电子设备等。在这些设备中使用了单片机后,其功能和性能大大提高,并实现了智能化、最优化控制。通信方面:较高档的单片机都具有通信接口,因而为单片机在通信设备中的应用创造了很好的条件。例如,在微波通信、短波通信、载波通信、光纤通信、程控交换等通信设备和仪器中都能找到单片机的应用。武器装备:在现代化的武器装备中, 如飞机、军舰、坦克、导单、鱼雷制导、智能武器设备、航天飞机导航系统,都有单片机在其中发挥重要作用。终端及外部设备控制:计算机网络终端设备,如银行终端,以及计算机外部设备如打印机、硬盘驱动器、绘图机、传真机、复印机等,在这些设备中都使用了单片机。近年来随着科技的飞速发展,同时带动自动控制系统日新月异更新,单片机的应用正在不断地走向深入。二、设计思路及总体框图21设计思路本设计是以AT89C52单片机伯为主机,相当于一般用于数据采集系统中的数据采集卡。的温度测量及以AT89c52单片机为核心部件,外加温度采集电路、键盘及显示电路、加热控制电路和越限报警等电路。采用单总线型数字式的温度传感器DS18B20,及行列式键盘和动态显示的方式,以容易控制的固态继电器作加热控制的开关器件。该设计既可以对当前温度进行实时显示又可以对温度进行控制,以使达到用户需要的温度,并使其恒定在这一温度。两位整数一位小数的显示方式具有更高的显示精度。通过对系统软件和硬件设计的合理规划,发挥单片机自身集成众多系统级功能单元的优势,在不减少功能的前提下有效降低了硬件成本,系统操控简便。22系统总体框图电路总体原理框图温度测量及的总体结构如图1所示。系统主要包括现场温度采集、实时温度显示、加热控制参数设置、与报警装置和系统核心AT89S52单片机作为微处理器。数字式温度传感器加热器控制器单 片 机显示器超限 报警键盘图1-1 图1-2,硬件系统的设计三、硬件系统的设计31单片机系统311单片机的选择在系统的设计中,选择合适的系统核心器件就成为能否成功完成设计任务的关键,而作为控制系统核心的单片机的选择更是重中之重。目前各半导体公司、电气商都向市场上推出了形形色色的单片机,并提供了良好的开发环境。选择好合适的单片机可以最大地简化单片机应用系统,而且功能优异,可靠性好,成本低廉,具有较强的竞争力。目前,市面上的单片机不仅种类繁多,而且在性能方面也各有所长。一般来说,选择单片机需要考虑以下几个方面:(1)单片机的基本性能参数。例如指令执行速度,程序存储器容量,I/O引脚数量等。(2)单片机的增强功能。例如看门狗、多指针、双串口等。(3)单片机的存储介质。对于程序存储器来说,Flash存储器和OTP(一次性可编程)存储器相比较,最好是Flash存储器。(4)芯片的封装形式。如DIP(双列直插)封装,PLCC(PLCC有对应插座)封装及表面贴附等。(5)芯片工作温度范围符合工业级、军用级还是商业级。如果设计户外产品,必须选用工业级。(6)芯片的功耗。比如设计并口加密狗时,信号线取电只能提供几微安的电流,选用STC单片机就是因为它能满足低功耗的要求。(7)供货渠道是否畅通、价格是否低廉。(8)技术支持网站的速度如何,资料是否丰富。包括芯片手册,应用指南,设计方案,范例程序等。(9)芯片保密性能好、单片机的抗干扰性能好。STC89系列单片机是MCS-51系列单片机的派生产品。它在指令系统、硬件结构和片内资源上与标准8052单片机完全兼容,DIP40封装系列与8051为pin-to-pin兼容。STC89系列单片机高速(最高时钟频率90MHz),低功耗,在系统/在应用可编程(ISP,IAP),不占用户资源。根据本系统的实际情况,选择STC89C52单片机,引脚见图1-3。图1-3, STC89C52芯片引脚及功能312存储器芯片的选择本系统需要的存储容量不大,且要求存储器要具有掉电不丢失的特点,增加外部存储器既增加系统的体积,又增大系统的功耗,所以最好能用一片高速的串行存储器来存储数据。综合以上因素,对比国内市场土的非易失性存储器,而24C08EEPROM存储器芯片以其优越的表现进入我们的视线。24C08存储器具有容量较大、功耗低、体积小的突出优点,而且其性价很高,因此我们决定选用24C08 EEPROM存储器芯片作为系统的数据存储器。313单片机IO口扩展及外部存储器电路由于液晶显示和USB芯片需要大量的IO口,所以采用一片8255来进行IO口扩展。8255是单片机应用系统中广泛采用的可编程外部IO口,扩展芯片。它有3个8位并行IO口,每个口可以有3种工作方式。其中的WR是写信号输入端,RD是读信号输入端,A1A0用于决定端口的地址。单片机系统及外部存储器电路如图1-4所示19。 图1-4 单片机系统电路图 3.2温度采集电路的设计DS18B20介绍单总线器件具有微型化,低功耗,高性能,抗干拢能力强,易配微处理器等优点,特别适于构成多点温度测量系统,DS18B20就是这样一个单总线器件,它是新一代产品,适应性更强,性价比更强。DS18B20提供912位温度读数,温度测量范围为负55125。构成多点温度检测系统而无需任何外围硬件。DS18B20的信号线是VDD,GND,DQ。DQ是开漏输出的,为了保证有足够负载驱动能力驱动该总线,系统采用电源直接供电方式,单线总线上加1个4.7K欧的上拉电阻完成对DS18B20的上拉。DS18B20单总线温度传感器的功能特点:1. 采用单总线技术,与单片机通讯只要一根IO线2. 通过比较系列号可以在一根线上挂多个DS18B203. 低压供电,电源范围从3V5V,也可以直接从数据线上窃取电源4. 测温范围-55125摄氏度,在-1085摄氏度范围内误差为0.5度5. 数据位可编程912位,转换12位温度时间为750ms(最大)6. 用户可自设定预警上下限温度7. 报警搜索命令可识别和寻址那个器件的温度至超出预定值DS18B20内部结构主要由四部分组成:64位刻ROM、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。其中DQ为数字信号输入/输出端;GND为电源地;VDD为外接供电电源输入端。温度采集电路DS18B20内部结构存储器与控制逻辑温度传感器高温触发器TH低温触发器TL配置寄存器8位CRC发生器高 速 缓 存 64位ROM和单线接口VDDI/O64位ROM的结构开始8位是产品类型的编号,接着是每个器件的惟一的序号,共有48位,最后8位是前面56位的CRC检验码,这也是多个DS18B20可以采用一线进行通信的原因。温度报警触发器TH和TL,可通过软件写入户报警上下限。DS18B20温度传感器的内部存储器还包括一个高速暂存RAM和一个非易失性的可电擦除的EERAM。高速暂存RAM的结构为8字节的存储器,结构如图3所示。头个字节包含测得的温度信息,第3和第4字节TH和TL的拷贝,是易失的,每次上电复位时被刷新。第5个字节,为配置寄存器,它的内容用于确定温度值的数字转换分辨率。DS18B20工作时寄存器中的分辨率转换为相应精度的温度数值。该字节各位的定义如图3所示。低5位一直为,TM是工作模式位,用于设置DS18B20在工作模式还是在测试模式,DS18B20出厂时该位被设置为0,用户要去改动,R1和R0决定温度转换的精度位数,来设置分率。DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。 这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。温度LSB温度MSBTH用户字节能TL用户字节奏配置寄存器保留保留保留CRCTMR1R011111DS18B20字节定义表1DS18B20温度转换时间表R1R0分辩率/位温度最大转向时间/ms00993750110187510113751112750由表1可见,DS18B20温度转换的时间比较长,而且分辨率越高,所需要的温度数据转换时间越长。因此,在实际应用中要将分辨率和转换时间权衡考虑。高速暂存RAM的第6、7、8字节保留未用,表现为全逻辑1。第9字节读出前面所有8字节的CRC码,可用来检验数据,从而保证通信数据的正确性。当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625LSB形式表示。当符号位S0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位S时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。表2是一部分温度值对应的二进制温度数据。18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较。若TTH或TTL,则将该器件内的报警标志位置位,并对主机发出的报警搜索命令做出响应。因此,可用多只DS18B20同时测量温度并进行搜索。在64位ROM的最高有效字节中存储有循环冗余检验码(CRC)。主机ROM的前56位来计算CRC值,并和存入DS18B20的CRC值作比较,以判断主机收到的ROM数据是否正确。DS18B20的测温原理是这样的,器件中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器;高温度系数晶振温度变化其振荡频率明显改变,所产生的信号作为减法计数器的脉冲输入。器件中还有一个计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数进而完成温度测量。计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将55所对应的一个基数分别置入减法计数器、温度寄存器中,计数器和温度寄存器被预置在-55所对应的一个基数值。减法计数器对低温度系数晶振的脉冲信号进行减法计数,当减法计数器的预置减到时,温度寄存器的值将加,减法计数器的预置将重新被装入,减法计数器重新开始对低温度系数晶振的脉冲信号进行计数,如此循环直到减法计数器计数到时,停止温度寄存器的累加,此时温度寄存器中的数值就是所测温度值。其输出用于修正减法计数器的预置值,只要计数器门仍关闭就重复上述过程,直到温度寄存器值大于被测温度值。温度/二进制表示十六进制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 0001 1001 00000191H+10.1250000 0000 1010 000100A2H+0.50000 0000 0000 00100008H00000 0000 0000 10000000H-0.51111 1111 1111 0000FFF8H10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H另外,由于DS18B20单线通信功能是分时完成的,它有严格的时隙概念,因此读写时序很重要。系统对DS18B20的各种操作按协议进行。操作协议为:初始化DS18B20(发复位脉冲)发ROM功能命令发存储器操作命令处理数据。323、DS18B20温度传感器与单片机的接口电路单总线即只有一根数据线,系统中的数据交换,控制都由这根线完成,因此DS18B20和微处理器之间的通信要通过严格的时序控制来完成,所以精确的定时是接口设计中一个关键问题,所有的单总线命令序列都是由复位脉冲,应答脉冲,写0,读0,读1时序等几种基本类型的信号类型组成的。在这些信号中,除了应答脉冲外,其它均由主机发出同步信号,并且发送的所有命令和数据都是字节的低位在前。微处理器和单总线器件之间的通信可通过3个步骤完成,分别为初始化1WIRE器件,识别1WIRE器件和交换数据,DS18B20接入多路温度测量系统之前,根据读取序列号的操作流程,先分别从激光ROM中读出其序列号,如本系统中使用的两个DS18B20的序列号为:28 42 F3 EE 00 00 00 B1 28 AE 2F EF 00 00 00 15取得DS18B20序列号后,分别放在被测环境中。根据基本的操作流程,首先单片机发出复位脉冲,使信号线上所有DS18B20芯片都复位,然后从器件DS18B20回送存在脉冲,告知主机己准备好。主机检测到存在脉冲就发出跳过读序列号和温度转换命令,使所有的器件完成温度转换,延时,复位,发送64位ROM,使序列号与ROM匹配的DS18B20被激活,发送读取命令并即刻产生读脉冲以便从内存中读取数据,读取的前两个字节即为温度的高低字节。循环复位,发送第二个ROM编码,读取第二个温度值。DS18B20可以采用两种方式供电,一种是采用电源供电方式,此时DS18B20的1脚接地,2脚作为信号线,3脚接电源。另一种是寄生电源供电方式, 单片机端口接单线总线,为保证在有DS18B20时钟周期内提供足够的电流,可用一个MOSFET管完成对总线的上拉。当DS18B20处于写存储器操作和温度A/D转换操作时,总线上必须有强的上拉,上拉开启时间最大为10us。采用寄生电源供电方式时VDD端接地。由于单线制只有一根线,因此发送接口必须是三态的。DS18B20与单片机的接口电路3.3、温度传感器信号采集放大电路当受控对象温度发生变化时,铂电阻的阻值随之发生变化。在电路中表现为铂电阻两端的电压发生变化。因此,我们只需采集铂电阻两端的电压变化情况即可推算出温度的变化。但由于铂电阻的温度系数比较小,铂电阻两端的电压变化情况不会很明显。所以在电路中我们使用放大电路铂电阻两端电压放大后进行处理。温度传感器信号采集放大电路如1-10所示。图1-10 信号放大电路图电路中,铂电阻两端的电压 (3-2)把公式(2-7)代入得:3.4、A/D的选择ADC0809与单片机接口模块 此系统中,利用74LS165将ADC0809输出的并行数据转换为串行数据,然后经单片机的串口输入。这样节省了单片机有限的端口资源,方便今后的扩展。ADC0809有11条数字量输出及控制线:ST为转换启动信号,当ST上跳沿时,所有内部寄存器清零,下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。EOC为转换结束信号,当EOC为高电平时,表明转换结束;否则,表明正在过行A/D转换。OE为输出允许信号。当OE=1时,输出转换得到的数据;OE=0时,输出数据线呈高阻态。D7至D0为数字量输出线。CLK为时钟多输入信号。因ADC0809的内部没有时钟电路,所需时钟信号必须外界提供,通常使用频率为500KHZ。这个脉冲既可以通过中断实现,也可以通过硬件进行分频得到。为了简化程序,设计中采用了硬件分频的方法,使用双D触发器对单片机的ALE端进行两次分频得到。具体电路如下:CLRDCLKQQDCLKCLR/QQPREPRE500KHZ2MHZADC0809的内部逻辑结构八路模拟量开关IN0IN1IN2IN3IN4IN5IN6IN8地址锁存器与译码器ABCALE三态输出锁存器八路A/D转换器STCLKVREF(+)VREF()OED0D7EOC由上图可知,ADC0809由一个8路模拟开关、一个地址锁存与译码器、一个A/D转换器和一个三态输出锁存器组成。多路开关可选通8个模拟通道,允许8路模拟量分时输入,共用A/D转换器进行转换。三态输出锁器用于锁存A/D转换完的数字量,当OE端为高电平时,才可以从三态输出锁存器取走转换完的数据。ADC0809的A/D采样部分电路图ADC0809与单片机AT89C52的接口电路理论计算与分析由于ADC0809的参考电压VREF=5.00V,所以转换后要经过数据处理,在数码管上显示电压值。实际显示的电压值为D/256VREF=D/51。当输入为5.00V时,ADC0809输出为255(FFH);因此单片机最高分辩为0.01965V。测量时一般以0.02V的幅度变化。若需要精度则12、13位的A/D转换。37、键盘和显示的设计显示模块:此设计中采用四位共阳数码管。显示时字型端输出低电平,位选端输出高电平。由于是低电平点亮数码管,易于驱动。显示过程中,由于单片机输出的高电平较低,导致位选端电平不够,即使加上上拉电阻,高电平也只有3.03.5V左右,仍达不到要求。所以,本系统采用非门来转换电平,需要选通时,位选端输出低电平,经非门后转换为高电平。通过这种方法得到的高电平可达到4.5V,很好满足了要求。图1-14 显示接口电路38、报警及指示灯电路的设计当用户设定的目标温度达到时需用声音的形式提醒用户,此时蜂鸣器为三声断续的地叫声。在本系统中我设计越限报警系统,当温度低于用户设置的目标温度10度或高于10度时蜂鸣器为连续不断的报警声叫声。当单片机P1.7输出高电平时,三极管导通,蜂鸣器工作发出报警声。P1.7为低电平时三极管关断,蜂鸣器不工作。D1为电热杯加热指示灯,P1.5低电平有效;D0为检测到DS18B20的指示,高电平有效;D10为降温指示灯,低电平有效。报警及指示灯电路如下图报警及指示灯电路四、软件系统的设计系统的软件由三大模块组成:主程序模块、功能实现模块和运算控制模块。41、主程序411主程序模块主程序主要完成加热控制系统各部件的初始化和实现各功能子程序的调用,以及实际测量中各个功能模块的协调在无外部中断申请时,单片机通过循环对外部温度进行实时显示。把设置键作为外部中断0,以便能对数字按键进行相应处理。主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s进行一次。这样以在一秒之内测量一次被测温度,其程序流程见图2-2所示。 初始化调用显示子程序1S到?初次上电?读出温度值计数处理数据刷新发温度转换开始命令NYYN图2-2,主程序流程图412读出温度子程序读出温度子程序的主要功能是读出RAM中的9字节,在读出时需进行CRC校验,校验有错时不进温度数据的改写。其程序流程图如图2-3示发DS18B20复位命令发CCH SKIP ROM命令发44H开始转换延时复位发CCH SKIP ROM命令连续读出两个字节数据(温度)结束发读存器命令DS18B20读温度流程图DIN EQU P1.0TEMP EQU 30HTEMP1 EQU 31HTEMP2 EQU 32HORG 0000HSJMP MAINORG 0030HMAIN: LCALL RDTEMSJMP $RDTEM: LCALL RESET MOV A, #0CCHLCALL WRITEMOV A, #44HLCALL WRITELCALLL DEL1000LCALL RESETMOV A, #0CCHLCALL WRITEMOV A, #0BEHLCALL WRITELCALL READMOV TEMP1, TEMPLCALL READMOV TEMP2, TEMPRETRESET: NOPL0: CLR DINMOV R2, #200L1: NOPDJNZ R2, L1SETB DINMOV R2, #30L4: DJNZ R2, L4CLR CORL C, DINJC L3MOV R6, #80L5: ORL C, DINJC L3DJNZ R6, L5SJMP L0L3: MOV R2, #250L2: DJNZ R2, L2RETWRITE: MOV R3, #8WR1: SETB DINMOV R4, #8CLR DINWR2: DJNZ R4, WR2MOV DIN, CMOV R4, #20WR3: DJNZ R4, WR3DJNZ R3, WR1SETB DINRETREAD: MOV R6, #8RE1: CLR DINMOV R4, #6NOPSETB DINRE2: DJNZ R4, RE2MOV C, DINRRC AMOV R5, #30RE3: DJNZ R5, RE3DJNZ R6, RE1MOV TEMP, ASETB DINRETDEL1000: MOV 40H, #18DEL100: MOV 41H, #0FFHDEL10: MOV 42H, #0FFHDEL1: DJNZ 42H, DEL1DJNZ 41H, DEL10DJNZ 40H, DEL100RET413、温度转换命令子程序温度转换命令子程序主要是发温度转换开始命令,当采用12位分辨率时转换时间约为750ms,在本程序设计中采用1s显示程序延时法等待转换的完成。温度转换命令子程序流程图如上图,图2-4所示发DS18B20复位命令发跳过ROM命令发温度转换开始命令 结束图2-4,温度转换流程图414、计算温度子程序计算温度子程序将RAM中读取值进行BCD码的转换运算,并进行温度值正负的判定,其程序流程图如图2-5所示。开始温度零下?温度值取补码置“-”标志计算小数位温度BCD值计算整数位温度BCD值结束置“+”标志NY 图2-5,计算温度流程图415、显示数据刷新子程序显示数据刷新子程序主要是对显示缓冲器中的显示数据进行刷新操作,最高显示为0时将符号显示位移入下一位。程序流程图如图2-6。温度数据移入显示寄存器十位数为0?百们数为0?十们数显示百位数不显示百位显示数据(不显示符号)结束NYNY图2-6,显示数据刷新流程图42、功能实现模块以用来执行对固态继电器及电热杯的控制。功能实现模块主要由中断处理子程序、温度比较处理子程序、键盘处理子程序、显示子程序、报警子程序等部分组成。键盘显示及中断程序流程图如下图2-7: 中断开始保护寄存器内容调用键扫子程序有键按下?调用键处理子程序是YES键?是NO键?调显示子程序温度设置完?调用温度处理子程序调用比较子程序恢复寄存器内容返回NYYNYN图2-7 键盘、显示、中断 子程序流程图43、运算控制模块该模块由标度转换、模糊控制算法,及其中用到的乘法子程序。标度转换 式中 为二进制的温度值, 为DS18B20的数字信号线送回来的温度数据。单片机在处理标度转换时是通过把DS18B20的信号线送回的16位数据右移4位得到二进制的温度值。其小数部分通过查小数表的形式获取。程序流程图如下图2-8: 开始将28H低4位与29H高4位组合成一个字节将合成的字节(整数部分)送29H单元29H单元低4位送A给DPTR赋常数表格2首地址将查到的数值(即小数部分)送30H单元结束图2-8,标度转换子程序流程图硬件平台结构一旦确定,大的功能框架即形成。软件在硬件平台上构筑,完成各部分硬件的控制和协调。系统功能是由软硬件共同实现的,由于软件的可伸缩性,最终实现的系统功能可强可弱,差别可能很大。因此,软件是本系统的灵魂。软件采用模块化设计方法,不仅易于编程和调试,也可减小软件故障率和提高软件的可靠性。同时,对软件进行全面测试也是检验错误排除故障的重要手段。由于编程多涉及到数值运算,比较复杂,还有LCD的菜单界面设计都是需要多重选择判断,用我们平时常用的汇编语言编程是很难实现的,这里我们选用了移值性好、结构清晰、我使用汇编语言来实现编程。44、系统程序本设计使用的单片机程序如下:温度控制器程序温度传感器用单总线DS18B20CPU为AT89S52,一个按键复位温度测量上限99度,下限为0度,超过设置温度为30度时,二极管亮,自动控制用P3.7作为数据线发送与接收串口P1数据输出P2位选,P2.5个位,P2.4十位FLAG1 BIT F0 ;DS18B20存在标志位 DQ BIT P3.7 TEMPER_L EQU 29H TEMPER_H EQU 28H A_BIT EQU 35H B_BIT EQU 36H ;*程序起始* ORG 0000H AJMP MAIN ORG 0100H;*主程序开始*MAIN: LCALL INIT_18B20 LCALL RE_CONFIG LCALL GET_TEMPER AJMP CHANGE ;*DS18B20复位程序*INIT_18B20: SETB DQ NOP CLR DQ MOV R0, #0FBH TSR1: DJNZ R0,TSR1 ;延时 SETB DQ MOV R0, #25H TSR2: JNB DQ, TSR3 DJNZ R0, TSR2 TSR3: SETB FLAG1 ;置标志位,表明DS18B20存在 CLR P2.0 ;二极管指示 AJMP TSR5 TSR4: CLR FLAG1 LJMP TSR7 TSR5: MOV R0, #06BH TSR6: DJNZ R0, TSR6 TSR7: SETB DQ ;表明不存在 RET;*设定DS18B20暂存器设定值*RE_CONFIG: JB FLAG1, RE_CONFIG1 RET;RE_CONFIG1: MOV A,#0CCH ;放跳过ROM命令 LCALL WRITE_18B20 MOV A,#4EH LCALL WRITE_18B20 ;写暂存器命令 MOV A,#00H ;报警上限中写入00H LCALL WRITE_18B20 MOV A,#00H ;报警下限中写入00H LCALL WRITE_18B20 MOV A,#1FH ;选择九位温度分辨率 LCALL WRITE_18B20 RET;*读转换后的温度值*GET_TEMPER: SETB DQ LCALL INIT_18B20 JB FLAG1, TSS2 RET ;若不存在则返回 TSS2: MOV A,#0CCH ;跳过ROM LCALL WRITE_18B20 MOV A,#44H ;发出温度转换命令 LCALL WRITE_18B20 LCALL DISPLAY ;延时 LCALL INIT_18B20 MOV A,#0CCH ;跳过ROM LCALL WRITE_18B20 MOV A,#0BEH ;发出读温度换命令 LCALL WRITE_18B20 LCALL READ2_18B20 ;读两个字节的温度 RET ;*写DS18B20程序* WRITE_18B20: MOV R2, #8 CLR C WR1: CLR DQMOV R3, #6 DJNZ R3, $ RRC A MOV DQ, C MOV R3, #23 DJNZ R3, $ SETB DQ NOP DJNZ R2, WR1 SETB DQ RET*读18B20程序,读出两个字节的温度* READ2_18B20: MOV R4,#2 ;低位存在29 H,高位存在28HMOV R1, #29H RE00: MOV R2, #8 RE01: CLR C SETB C NOP NOPCLR DQ NOP NOP NOP SETB DQ MOV R3, #7 DJNZ R3, $ MOV C, DQ MOV R3, #23 DJNZ R3, $ RRC A DJNZ R2, RE01 MOV R1, A DEC R1 DJNZ R4, RE00 RET ;*读出的温度进行数据转换*CHANGE: MOV A, 29H MOV C, 28H.0 ;将28H中的最低位移入C RRC A MOV C, 28H.1 RRC A MOV C, 28H.2 RRC A

温馨提示

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

评论

0/150

提交评论