基于AT89C2051单片机的温度控制系统的设计
收藏
资源目录
压缩包内文档预览:
编号:26850840
类型:共享资源
大小:293.41KB
格式:RAR
上传时间:2019-11-26
上传人:遗****
认证信息
个人认证
刘**(实名认证)
湖北
IP属地:湖北
15
积分
- 关 键 词:
-
基于
AT89C2051
单片机
温度
控制系统
设计
- 资源描述:
-
基于AT89C2051单片机的温度控制系统的设计,基于,AT89C2051,单片机,温度,控制系统,设计
- 内容简介:
-
毕 业 设 计 任 务 书 2008年2月19日 毕业设计题目基于AT89C2051单片机的温度控制系统的设计指导教师曾文萱职称讲师专业名称机电一体化技术班级机电50532学生姓名刘龙朝学号5020053213设计要求1.完成资料翻译一份(3000字以上);2.完成毕业设计调研报告一份;3.完成基于AT89C2051单片机的温度控制系统的设计;4.完成系统程序设计;5.完成毕业设计说明书一份;6.完成相关图纸。完成毕业课题的计划安排序号内容时间安排1外文资料翻译2008.2.20至2008.2.292搜集相关资料并调研,完成调研报告2008.3.1至2008.3.53进行硬件电路的设计,并完成相关程序的编写,编写说明书,绘制相关图纸。2008.3.6至2008.4.84整理毕业设计说明书并定稿,准备答辩2008.4.9至2008.4.105答辩2008.4.11答辩提交资料外文资料翻译,毕业设计调研报告,毕业设计说明书,相关图纸。计划答辩时间2008.4.11 无锡职业技术学院机电技术学院 2008 年 2 月 19日无锡职业技术学院毕业设计说明书1第一章第一章 绪绪 论论温度控制,在工业自动化控制中占有非常重要的地位。单片机系统的开发应用给现代工业测控领域带来了一次新的技术革命,自动化、智能化均离不开单片机的应用。将单片机控制方法运用到温度控制系统中,可以克服温度控制系统中存在的严重滞后现象,同时在提高采样频率的基础上可以很大程度的提高控制效果和控制精度。现代自动控制越来越朝着智能化发展,在很多自动控制系统中都用到了工控机,小型机、甚至是巨型机处理机等,当然这些处理机有一个很大的特点,那就是很高的运行速度,很大的内存,大量的数据存储器。但随之而来的是巨额的成本。在很多的小型系统中,处理机的成本占系统成本的比例高达 20%,而对于这些小型的系统来说,配置一个如此高速的处理机没有任何必要,因为这些小系统追求经济效益,而不是最在乎系统的快速性,所以用成本低廉的单片机控制小型的,而又不是很复杂,不需要大量复杂运算的系统中是非常适合的。温度控制,在工业自动化控制中占有非常重要的地位,如在钢铁冶炼过程中要对出炉的钢铁进行热处理,才能达到性能指标,塑料的定型过程中也要保持一定的温度。随着科学技术的迅猛发展,各个领域对自动控制系统控制精度、响应速度、系统稳定性与自适应能力的要求越来越高,被控对象或过程的非线性、时变性、多参数点的强烈耦合、较大的随机扰动、各种不确定性以及现场测试手段不完善等,使难以按数学方法建立被控对象的精确模型的情况。随着电子技术以及应用需求的发展,单片机技术得到了迅速的发展,在高集成度,高速度,低功耗以及高性能方面取得了很大的进展。伴随着科学技术的发展,电子技术有了更高的飞跃,我们现在完全可以运用单片机和电子温度传感器对某处进行温度检测,而且我们可以很容易地做到多点的温度检测,如果对此原理图稍加改进,我们还可以进行不同地点的实时温度检测和控制。1.11.1 设计指标设计指标设计一个温度控制系统具体化技术指标如下。1. 被控对象可以是电炉或燃烧炉,温度控制在 0100,误差为0.5;2. 恒温控制;3. LED 实时显示系统温度,用键盘输入温度;1.21.2 本文的工作本文的工作无锡职业技术学院毕业设计说明书2详细分析课题任务,设计了电源电路,键盘电路,单片机系统,显示电路,执行器电路,报警电路,复位电路,时钟电路,A/D 转换电路等系统。然后根据课题任务的要求设计出实现控制任务的硬件原理图和软件,并进行访真调试。无锡职业技术学院毕业设计说明书3第二章第二章 设计思想设计思想实现温度控制的方法有多种,可以用工控机作为控制器,用热电阻测量温度;也可以用单片机作为控制器,用热电偶进行温度测量。当然每一种方案都有其各自的优点。本章详细列举、说明了基于 89C2051 单片机的温度控制的方案、并画出了其原理方框图,对方案的优缺点进行了分析。2.12.1 设计思想设计思想方案 (1) 硬件组成:单片机、A/D 转换器、LED 显示器、集成的热电偶温度变送器、固态继电器、大功率发热器。(2) 工作原理:由集成的热电偶变送器对系统温度进行检测,并完成信号标准化、变送功能。单片机执行控制功能、由固态继电器控制大功率发热器电源的导通与断开,从而达到控制温度的目的。(3) 系统原理框图 2.22.2 论证分析论证分析最终方案论述:很显然,方案较其它相比无论在经济上和实现容易程度上都要好。方案在实行控制的时候不像其它采用 D/A 转换后再控制调节阀的方法,而是直接外接一个固态继电器,通过内部改变定时器的中断时间来调节一个周期内电子开关的导通和断开时间。这样既节省了材料也可以很大程度上减少硬件电路的结构。综上所述方案有如下的特点:(1) 在完成所要求的任务的基础之上还有着结构简单、明了的特点,很容易实现,而且在一定的程度上节约成本。TL255189C2051固态继电器LED 显示DDZ热电偶温度变送器键 盘电炉温度图图 2-1 方案的原理框图方案的原理框图无锡职业技术学院毕业设计说明书4(2) 由于采用了离线的方法,很大程度上的减少了编程的麻烦,实现起来较容易。(3) 采用了无污染能源,保护环境。同时也省去了为建造燃料供应子系统的费用,节约了成本。采用了模拟的 PWM 变换,和固态继电器。可以将采样频率提高到很多的水平,使控制结果更准确,实时性、控制效果更好。无锡职业技术学院毕业设计说明书5第三章第三章 系统设计系统设计整个系统由软件和硬件两部分组成。本章详细介绍了系统的硬件和软件设计,并对硬件和软件的每一个部分进行了分析,在后半部分还对系统模型进行了访真与程序调试。硬件和软件的每一个坏节都是深思熟虑而成,各自完成相应的功能并组成一个统一的整体。3.13.1 硬件设计硬件设计系统硬件由电源电路,温度检测变送电路、模数接口转换电路、单片机系统和人机接口等部分组成。系统电源为整个系统提供电能;温度检测变送电路将检测到的温度信号转换成标准的电压信号输入到模数接口转换电路;模数接口转换电路输出的数字信号进入单片机系统;单片机系统根据输入的数字信号以模糊控制算法为基础求出控制值,控制执行器的运行及温度的显示。原理框图见图 2-1。3.1.1 电源电路由于整个系统都是用单片机和各类芯片及电阻、电容组成的,其工作电压为5V,不需要负电压,可采用三端固定正电压集成稳压器 7805 系列的芯片6。其输出电压 5V,按输出电流不同可分为 78M05、78L05,输出电流分别为 0.5A 和 1.0A,转换成功率分别为2.5W 和 5W。从整个系统的设计来看,其中有几块集成芯片和多个电阻、电容等器件,其功率总和应在 2W 左右,所以考虑整个系统的功率裕量,采用 78M05 作为整个系统的供电芯片。其主要电路如附图中的电源电路图所示。其中输入电压为交流 220V,经过变压器其输出为 9.5V,再进行整流。整流可通过四个二极管进行全波整流,也可以利用集成整流堆来进行(同原理) 。后面接电容 C1、C2为滤波电容进行滤波,注意电解电容应该要有一定裕量,否则不能起到很好的滤波效果。本电路中使用的电容大小为 470uf,耐压为 25 伏。78L05 的输出级接入两个滤波电容,用于减小因为电源波动对系统造成的影响和滤波。其不需要采用大容量的电解电容器,容量大小为 100uf耐压为 25 伏,再接入 0.1F 的电容器,便可减少因为电源波动的影响和滤去纹波,很好地改善负载的瞬态响应。然而,随之产生一个弊端,即一旦 78M05 的输入出现短路时,输出端大电容上存储的电荷,将通过集成稳压器内部放电,可能会造成内部电路的损坏,故在其间跨接一个二极管,为放电提供放泄通路,对集成稳压器起到了分流保护作用。3.1.2 温度检测与变送环节无锡职业技术学院毕业设计说明书6信号的检测变送包含两个方面,一是检测环节,另一个是变送环节。检测环节至关重要,检测元件的选型关系到检测的精度和变送环节中信号变送的容易程度。在温度的检测过程中一般用热电阻和热电偶完成,热电阻一般用在检测精度要求不是很高的地方,而热电偶则在灵敏度上比热电偶更好,检测精度能比热电阻有一个数位的差异检测与变送设备主要根据被检测参数的性质与系统设计的总体考虑来决定。被检测参数性质的不同,准确度要求、响应速度要求的不同以及对控制性能要求的不同都影响检测、变送器的选择,要从工艺的合理性、经济性加以综合考虑。应遵循以下原则:1. 可能选择测量误差小的测量元件。2. 尽可能选择快速响应的测量元件与变送设备。3. 对测量信号作必要的处理。a 测量信号校正。 b 测量信号噪声(扰动)的抑制。对测量信号进行曲线线性化处理。温度是工业生产过程中最常见、最基本的参数之一。所以,温度的检测与控制是自动控制工程的重要任务之一。测量温度的方法有两种,一种是接触式、另一种是非接触式。接触式测量的主要特点是:方法简单、可靠,测量精度高。但是由于测温元件要与被测介质接触进行热交换,才能达到平衡,因而产生了滞后现象。同时测量体可能与被测介质产生化学。此外测量体还受到耐温材料的限制,不能应用于很高温度的测量。非接触式测温是通过接收被测介质发出的辐射热来判断的。其主要特点是:测温原则上不爱限制;速度较快,可以对运动休进行测量。但是它受到物体的辐射率、距离、烟尘和水汽等因素影响,测温误差较大。由于本系统中测量的对象为电炉,测量温度在 0100左右,且介质为水,不易与测量体发生化学反应。所以理所当然选择接触式的温度测量方式更为理想。目前工业生产过程中常用的接触式温度测温原理、与使用场合如表 3-1:无锡职业技术学院毕业设计说明书7测温原理温度计名称测温范围主要特点固体热膨胀双金属温度计气体热膨胀玻璃液体温度计液体热膨胀压力式温度计-200600结构简单,价格便宜,适用于就上测量,传送距离不很远铂、铜、镍、铑、铁热敏电阻利用尸体或半导体的电阻值随温度变化的性质锗、碳、金属氧化物热敏电阻准确度高,能远传,适用于低、中温测量普通金属热电阻贵重金属热电阻难熔金属热电阻非金属热电阻测量范围广,精度高,能远传,适用于中、高温测量从表中所列的各种温度测量仪表中,机械式大多用于就地指示;辐射式的精度较差,只有电的测温仪表精度较高,信号又便于传送。所以热电偶和热敏电阻温度计在工业生产和科学研究领域中得到了广泛地应用。热电偶温度计在工业生产过程中极为广泛。它具有测温精度高,在小范围内热电动势与温度基本呈单值、线性关系,稳定性和复现性较好,测温范围宽,响应时间较快等特点。其使用时一定要注意冷端温度补偿,在一般情况下采用补偿电桥的方法较多。其具体实现过程见下面的分析过程。热电阻温度计是利用导体或半导体的电阻值随温度而变化的性质来测量温度的。常用的有铂电阻、铜电阻、半导体热敏电阻等,但与热电偶相比较,在精度上,热-200700体积变化电阻变化-270900热电效应利用金属的热电效应-2001800表表 3-13-1 各类传感元件的特点和使用场合各类传感元件的特点和使用场合无锡职业技术学院毕业设计说明书8电偶精度比热电阻高。变送器在数据采集过程中担任了把传感器检测到的信号变成统一标准信号(DC 420mA 或 DC 15V) ,从而使处理器能够识别数据的级别,便于在自运控制过程中进行运算和做出相应的处理决策。DDZ- 热电偶温度变送器可以把温度转换成统一的标准信号(DC420mA 或 DC15V) ,其输出送显示仪表或调节器,调节器实现对温度的显示或自动控制。DDZ- 热电偶温度变送器具有热电偶冷端温度补偿、零点调整、零点迁移、量程调整以及线性化等重功能。其具有以下几个特点:(1) 采用了线性集成电路,提高了仪表的可靠性、稳定性及各项技术性能。(2) 热电偶温度变送器中采用了线性化电路,使变送器的输出电流。或电压信号和被测温度(输入信号)成线性关系。(3) 线路中采用了安全火花防爆措施,帮可用于危险场所中的温度测量变送。由以上分析,我们可以得出结论,DDZ- 热电偶温度变送器是一种集成的自动化温度传感变送器,在量程和精度上都完全满足设计中温度测量、变送的要求。3.1.3 模数转换接口电路因为单片机不能直接处理模拟信号,所以必须将热电偶检测到的温度模拟信号变化成数字信号,单片机才能做出相应的处理。按照设计指标,精度要求在0.5。采用 8 位 A/D 转换器如果设定其成比例关系,即0255,0100。则其精确度为 0.39,完全满足要求,但考虑要留有一定的裕量,即100不能为 255,虽然这个问题可以用调整变送器的方法来解决。但这其中又隐含了另外一个问题即将温度的检测值到十进制温度转换的计算,A/D 转换结果每增加一个单位值,十进制温度增加 0.39 度,这需要用二进字浮点数运算。意味着在有限的存储空间里面要存储浮点数的加、减、乘、除和二进制数与十进制数的转换程序等;并且因为温度是通过键盘输入到存储器中的所以输入的温度值也要经过转换,这就大大的加长了程序运行的时间同时也就减短了 A/D 转换所占用的时间和温度的采样点数,直接影响了其控制精度。同时很大程度上加大了编程的难度,其在逻辑思维上、程序转换上都有较大的难度。要满足精度要求,而且还要在运算上、数值转换上不困难,可以通过调整变送器的量程和 A/D 转换器的分辨率来解决。用 12 位 A/D 器,其输入电压为 05V 时对应的输出为 04096,设计要求温度控制在无锡职业技术学院毕业设计说明书90100。我们可以将 100时 A/D 输出为 1000,这样其精度可以达到 0.1,完全满足设计的要求。前面已经说明变送器的输出为 15V,所以可以调节送器的量程,0时变送器输出为 1.22V,而 A/D 转换的输出为 1000;100时输出 2.44V,A/D 输出为 2000。通过以上设定,在保证了很大的裕量的同时又减小了其计算的复杂性。其输出值=温度10,运算的时候根本不用采用浮点数运算,只要一个双字节无符号数减法、除法即可以完成,且在显示的时候也可以精确显示到小数点后面一位。TLC2551/2541 是 TI 公司生产的串行 12 位 A/D 转换器8,其采用 DIP-8 封装,简单的微处理器接口,单通道差分输入,转换时间在 Flock=400KHz 时为 3.2us,5V 供电时输入范围:05V,输入输出完全兼容 TTL 和 CMOS 电路,全部非校准误差:1LSB。单 5V 供电,工作温度范围:070;其接口电路如图 3-2。3.1.4 单片机最小系统1 单片机选型整个系统采用最小化设计,其外部所接组件大多采用了串行通信,所以在单片机选型时不需要很多的并行口,有一定的程序存储器和定时器、外部中断即可。由 ATMEL 公司生产的 AT89C2051,除了在外部引脚上少了两个并行口外,其它内部资CS1IN+2IN_3GND4REF5DO6CLK7VCC8U7TLC2551VCCCSVCCDDZOUTC110.1UFC120.1UFDOCLK图图 3-3-2模数转换电模数转换电路路图图 3-38989c2051 及其引脚与网标及其引脚与网标RST1P3.0(RXD)2P3.1(TXD)3X24X15P3.26P3.37P3.48P3.59VSS10P3.711P1.012P1.113P1.214P1.315P1.416P1.517P1.618P1.719VCC20U889C2051RXDTXDGNDVCCRESETX2X1OPECSLOCKline1line2disselecSCLSADDOCLK无锡职业技术学院毕业设计说明书10源与 AT89C51 完全相同,且其内部的 2KFLASH ROM 能够很方便的进行擦写,汇编指令与80C51 完全兼容的特点,成为了首选。其基本特征如下:(1) 具有适于控制的 8 位 CPU 和指令系统;(2) 128 字节的片内 RAM;2KB 片内 ROM;(3) 15 线并行 I/O 口;(4) 两个 16 位定时/计数器;(5) 一个全双工串行口;(6) 6 个中断源,两个中断优先级的中断结构;2 晶振电路的设计单片机内部带有时钟电路,因此,只需要在片外通过 X1、X2 引脚接入定时控制单元(晶体振荡和电容) ,即可构成一个稳定的自激振荡器。振荡器的工作频率一般在 1.212MHz 之间,当然在一般情况下频率越快越好。可以保证程序运行速度即保证了控制的实时性。一般采用石英晶振作定时控制元件;在不需要高精度参考时钟时,也可以用电感代替晶振,有时也可以引入外部时钟脉冲信号。C9、C10 虽然没有严格要求,但电容的大小影响振荡器的振荡的稳定性和起振的快速性,通常选择在 1030PF 左右。在设计电路板时,晶振,电容等均应尽可能靠近芯片,以减小分布电容,保证振荡器振荡的稳定性。3.1.5 片外数据辅助存储器在系统的设计过程中,考虑到加热器在加热过程中出现断电的情况。当这种情况发生时,系统应该继续加热到断电前设定的温度。而设定的温度存储在单片机的数据在存储器中,单C920PC1020PY112Mx2x1+5VS1SW-PBC70.1uR22kRESETVCC图图 3-4复位电路和时钟电路复位电路和时钟电路无锡职业技术学院毕业设计说明书11片机断电重启动后存储的设定温度已经消失。为了达到此功能,在单片机外部加入了一个基于 I2C 总线的 E2PROM,完成对设定温度的存储。I2C 总线简介:I2C 总线由 PHILIPS 提出,是一种用于 IC 器件之间连接的二线制总线。它通过 SDA(串行数据线)及 SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,并根据地址识别每个器件:不管是单片机、存储器、LCD 驱动器还是键盘接口。采用I2C 总线标准的单片机或 IC 器件,其内部不仅有 I2C 接口电路,而且将内部各单元电路按功能划分为若干相对独立的模块,通过软件寻址实现片选,减少了器件片选线的连接 。其协议定义的数据格式如下: AT24C01 是美国 ATMEL 公司的低功耗 CMOS 串行 E2PROM,它是内含 1288 位存储空间,具有工作电压宽(2.55.5V) 、擦写次数多(大于 10000 次) 、写入速度快(小于10ms)等特点。在系统中,用 AT24C01 存储用户设定的保持温度,上限温度和下限温度。当系统断电再得电以后,系统将自动的读出 AT24C01 中的保存值,并根据其内容进行加热,直到设定的温度。从而达到了断电后再加热的目的。其实际电路连接图如图 3-5,电阻R7、R8 为 I2C 协议的上拉电阻。3.1.6 人机交互接口开始7/10 器件地址R/WACKSUBADDACKDATAACK停止图图 3-5 AT24C01AT24C01 接口接口GNDVCCLOCKSADSCLR75.1KR85.1KVCCA01A12A23GND4SDA5SCL6WAP7VCC8u10AT24C01无锡职业技术学院毕业设计说明书121 显示电路显示部分用于显示用户设定的温度、上限温度、下限温度和当前温度值等。当然,从理论上而言,如果要很明了的显示各种数值的话,应该加上汉字显示模块,这样就可以一目了然的识别出各种设定值。从这一方面来说 LCD 显示器就占有很大的优势。但 LCD 显示器也存在着很大的不足,如 LCD 显示器一般都有 8 根数据线和 5 根控制线,即使是用串行的情况下也要占用单片机的 8 个 I/O 口,或者 6 根线和几个逻辑门。使用 LED 显示器可以很容易解决 I/O 口的问题,采用 51 单片机的串行方式 0,只要两根线(数据与时钟)就能完成显示功能,而且串行口还可以跟其它芯片共用,只要加上一个逻辑门电路形成线选就可以了。但其有一个明显的弱点就是显示的时候只能看到一个值,让人有一种不直观的感觉,并且在键盘上设定好一个显示管理键,要显示什么值只有按这个键就可以达到循环显示的目的。本显示电路共设了四位,分别用于显示温度的百、十、个、小数位。所以显示的温度可以精确到小数点后一位,即 0.1。但温度的设定值只能输入两位,即十位百位。Disselec 用于选通显示。其具体电路图 3-6 所示:2 信号输入电路键盘作为人机接口之一,在系统的功能实现过程中起着不可或缺的作用。在硬件的实现图图 3-6 显示电显示电路路abfcgdeDPY1234567abcdefg8dpdppower9DS1abfcgdeDPY1234567abcdefg8dpdppower9DS2SER INA1SER IN B2Q03Q14Q25Q36CLK IN8CLR9Q410Q511Q612Q713U374HC164RXDTXDC50.1UFC60.1UFSER INA1SER IN B2Q03Q14Q25Q36CLK IN8CLR9Q410Q511Q612Q713U474HC164123U2ANDdisselecVCCSER INA1SER IN B2Q03Q14Q25Q36CLK IN8CLR9Q410Q511Q612Q713U574HC164SER INA1SER IN B2Q03Q14Q25Q36CLK IN8CLR9Q410Q511Q612Q713U674HC164abfcgdeDPY1234567abcdefg8dpdppower9A1abfcgdeDPY1234567abcdefg8dpdppower9A212345678161514131211109RP2200*812345678161514131211109RP4200*812345678161514131211109RP3200*812345678161514131211109RP1200*8无锡职业技术学院毕业设计说明书13上,采用串行接口,由一个 74HC164,其 8 个输出口作为矩阵键盘的列线,再由 89C2051的 P1.1、P1.2 作为行线组成,每根线上都加一个上拉电阻,用于减小干扰。整个键盘共设16 个键,见图 3-7。其键名和功能如表 3-2。键 名个数(标号)功 能数字键10(09)输入 0100的温度数值,不设小数,但可显示。下限温度1(15)设定上限温度,正常显示时输入有限,数据输入时无效,且报错上限温度1(14)设定下限温度,正常显示时输入有限,数据输入时无效,且报错设定恒温1(13)设定恒温温度,正常显示时输入有限,数据输入时无效,且报错停机键1(11)使其停止加热,正常显示时有限,停机时停止显示,停止测量。确认键1(10确定输入的数据,输入数据时有效,其它情况下报警。表表 3-23-2键盘设置与功能设定键盘设置与功能设定图图 3-73-7 键盘电路键盘电路无锡职业技术学院毕业设计说明书14)下翻1(12)循环显示设定、上限、下限温度,按下显示 2 秒,不按则显示温度3 报警电路 为使系统的人机交互界面更好,设置了两路报警信号,分别为两路红色的发光二极管,用于显示越限报警和误输入报警。当电炉中水温高于工作人员所设定的上限温度或者低于设定的下限温度时,则认为发生了越限,越限报警灯(LED1)点亮,提示操作出现了越限报警,提醒工作人员注意是否有意外情况发生。值得一提的是,当系统从低温开始加热,到下限温度以前系统都会出现越限报警。当出现越限报警时,工作人员应该注意是不是此种情况,此情况可以忽略。误输入报警(LED2)主要用于键盘管理中,当用键盘进行恒温设定、上、下限温度设定时工作人员如果没有按说明中所要求的步骤进行操作的话就是所谓的误操作。当出现误操作时误输入报警灯点亮,此时工作人员应进行输入检查,查看说明并更正。越限报警和误输入报警分别由 P1.0 和 P1.5 口引出,其上接的电阻为限流电阻,用于防止电流过大而引起的发光二极管烧毁。3.1.7 执行机构执行机构为一个固态继电器,程序中采用了模拟的 PWM 变换方法。通过控制固态继电器的导通与关断达到控制电炉的通电和断电的目的。图图 3-8 报警电路报警电路R9200R10200LED1 LED2P1.0P1.5无锡职业技术学院毕业设计说明书153.23.2 软件设计软件设计系统的软件部分以主程序为入口,在初始化之后调用键盘管理程序,完成对键盘的扫描,读入键值,并根据相应的键值进行各类操作。温度采样频率由定时器控制,在每一次采样完成之后进行控制时间的计算和显示刷新。3.2.1 主程序主程序作为程序的入口,控制各类程序的调用。在系统中其主要的任务是调用键盘管理程序。然后其它的功能都由键盘管理程序和中断程序完成。可以说主程序起到了重启动后读入 E2PROM 中的设计温度和上、下限温度;设计各类定时器和开中断的,并调用键盘管理图图 3-9 执行器电路图执行器电路图R12RES1220VAC1122S3DDZOUTM2DDZ-2DS6OPTOTRIAC4R13100OPE125xp2C140.1UF无锡职业技术学院毕业设计说明书16程序的功能。但这样处理主程序起到了分散功能的作用,即主程序会变得很容易编写,而具体的功能都由功能子程序完成。主程序流程如图 3-10 所示。具体程序如下:ORG 50HSTART: MOV SP,#70H ;置堆栈,如堆栈超出会造成处理器复位。 LCALL RDNBYT ;读入 E2PROM 中的初使会标志、各类设定温度。 MOV R1,#SETTEMP LCALL VALUDISP MOV R1,#TEMPHIGH LCALL VALUDISP MOV R1,#TEMPLOW LCALL VALUDISP ;单片机复位后,会分别显示各类设定温度 2 秒 MOV TMOD,#11H ;定时器 0、1 都为 16 位定时器 MOV TH0,#3CH MOV TL0,#0B0H MOV TH1,#3CH开始初始化,开中断移入设定值并显示调用键盘管理子程序结束图 3-10 主程序流程无锡职业技术学院毕业设计说明书17 MOV TL1,#0B0H ;两定时器第一周期内的定时时间为 0.05 秒(12M) SETB PT1 ;定时器 1 优先,定时器 1 用于控制加热器的运行 SETB EA SETB ET0 SETB ET1 SETB TR0 SETB TR1 ;开定时中断和总中断,两个定时器开始定时 LCALL KEYOPT ;调用键盘管理程序,完成各类操作用于显示设定;温度、上、下限温度、和变换的子程序3.2.2 串行 A/D 转换芯片的驱动和其输出值的量化1 TLC2551 的驱动前面已经说明系统中采用的 A/D 转换芯片是串行的,所以我们在使用其时必须按照其时序一步步的完成,其时序图如图 3-11 所示。从图上可以看出 A/D 转换的最高位数据在 CS 变低以后的第二个脉冲开始出现,而TLC2551 为 12 位,即其转换结果在第 14 脉冲时完全从 TLC2551 出来进入到单片机内部。其使用过程为先置 CS 为低,将其选通,然后一直发 14 个脉冲,从第 2 个到第 5 个脉冲后将 A/D 转换值存储于转换结果的高字节,从第 6 个到 13 个时将其值存入到转换结果的低字图图 3-11 TLC2551TLC2551 的时序图的时序图无锡职业技术学院毕业设计说明书18节。具体程序如下:ADC:PUSH A CLR CS ;选通 ADC NOP SETB CLK NOP NOP CLR C ;清 C 标志 CLR CLK MOV R3,#12 ;时序要求 CLR A ; 清 ACC NOPADCLK:SETB CLK NOP NOP CLR CLK MOV C,DO ;移入 ADC 值 RLC A ;左移 CJNE R3,#8,NEXT MOV ADCDATAH,A ;存储 ADC 高位值 NEXT:DJNZ R3,ADCLK MOV ADCDATAL,A ;存储 ADC 低位值 POP A SETB CS ;关 A/D RET 2 A/D 转换值到温度的量化子程序无锡职业技术学院毕业设计说明书19由前面硬件部分的说明可以得出,设计要求的 A/D 转换结果跟温度值的关系是:A/D值=温度10。正如前面说所,由于变送器的限制,我们只能将 0时所对应的变送器输出为1.22V,而 100时对应的变送器输出是 1.44V。而将这些值通过 A/D 转换后结果刚好为 1000和 2000。要达到上面所述的关系,只要将 A/D 转换值减去 1000 即可满足。其量化顺序为:读入 A/D 转换值、用二进制无符号除法将转换值减去 1000,再将其结果用二进制无符号数除法除以 10,取商和余数。分别作为温度的整数部分和小数部分,用于四位温度显示。 流程图如图 3-12 所示。具体程序如下:NUMDATA DB C0H,F9H,D8H,B0H,99H,92H,82H F8H,80H,98H ;09 的字形码 DISPLAY:SETB DISSELEC ;选取通显示 MOV SCON,#00H ;串口方式 0 MOV R1,#04H ;显示四位 MOV R3,#0 ;用于判断是否应加入小数位 MOV DPTR,#NUMDATA ;数字字型码地 MOV R0,#DISPTEMP ;移入显示数据的地址 LOOPDIS:MOV A,R0 ;移入 A图图 3-12A/DA/D 转换和量化流程图转换和量化流程图 入口启动 A/D,读入数值A/D 值1000计算出温度值返回无锡职业技术学院毕业设计说明书20 MOVC A,A+DPTR ;取值 MOV 24H,A ;加入一寄存器用于缓冲MOV A,R3CJNE A,#2,NOT2MOV A,24HSETB ACC.7 ;判断是否为个位,如是则点亮小数点AJMP DD NOT2:MOV A,24HDD:MOV SBUF ,A ;发送 WAITDIS:JNB TI,WAITDIS ;等待发送 CLR TI DEC R0 ;地址减 1 DJNZ R1,LOOPDIS ;发送完毕否? OUTDIS: CLR DISSELEC ;不选通显示 RET3.2.3 片外 I2C E2PROM 驱动子程序和空间分布 E2PROM 的作用已在前面说明,其内部用连续的 7 个字节分别用于存储首次开机标志、设定温度、上限温度和下限温度。其中标志占一个字节,其余各占 2 个字节。其时序图如图3-13 从上图我们很容易看出 I2C 总线的时序。使用时最开始发起始位,然后是器件地址,接图图 3-13 I I2 2C C 总线的时序图总线的时序图9 9无锡职业技术学院毕业设计说明书21着是从地址、数据最后是结束位,中间还夹着应答位。AT2401 在电路中的器件地址为1010000(前 4 位为 I2C 协议规定的 E2PROM 的地址,后 3 位为其类地址,由图 3-6 可知其类地址为 000) 。因为只用到了其中的 10H16H 单元,其余单元空闲,所以 SUBADD(图中的第二个 ADDESS)为 00000010。3.2.4 温度及设定值的显示子程序要显示的数据存储于连续的四个数据存储器之中。由图 3-6 可知其采用了串行口方式0,所以要用时只要将串行口设置为方式 0,然后在脉冲的配合下从高位到低位一个个的移入SUBF 寄存器中即可。其要显示的数据共四位位于从 TEMPDATA 开始的四个连续存储空间中。流程如图 3-14,具体程序如下:ORG 00H LJMP START ;程序开始 ORG 03H RETI ;软件抗干扰 ORG 0BH图图 3-143-14 显示程序流程显示程序流程无锡职业技术学院毕业设计说明书22 LJMP INTT0 ;定时器 0 的中断服务程序 ORG 13H RETI ;软件抗干扰 ORG 1BH LJMP INTT1 ;定时器 1 的中断服务程序ORG 23HRETI ;软件抗干扰SDA BIT P3.0 ;I2C 协议定义的两跟线 SCL BIT P3.1 ;SDA(数据),SCL(时钟) CS BIT P3.4 ;A/D 转换器的选通线 LOCK BIT P3.5 ;E2PROM 的写允许线 OPE BIT P3.7 ;执行器的输入(控制) LINE1 BIT P1.3 LINE2 BIT P1.2 ;键盘的两跟行线LINEFLAG BIT 05H ;(1)行线标志,为第 1 行 LED1 BIT P1.0 ;(1)越限报警指示灯 LED2 BIT P1.4 ;(1)误输入报警指示灯 DO BIT P3.3 ;串行 A/D 的输出 CLK BIT P3.2 ;串行 A/D 的时钟线 INITIAL EQU 30H ;用于判断是否为第一次开机SETTEMP EQU 31H ;用户设定的温度TEMPHIGH EQU 32H ;用户设定的上限温度,如超过则有越限报警TEMPLOW EQU 33H ;用户设定的下限温度,如低于则有越限报警KEYTEMP EQU 34H ;由键盘输入的设定、上、下温度,共三位。分别为;34H,35H,36H。KEYBOARD EQU 37H ;用于缓冲存储用户从键盘输入的值。无锡职业技术学院毕业设计说明书23ADCHIGH EQU 38H ;ADC-1000 后的高位暂存值ADCLOW EQU 39H ;ADC-1000 后的低位暂存值 ADCDATAH EQU 3AH ;A/D 转换的高位 ADCDATAL EQU 3BH ;A/D 转换的低位DISPTEMP EQU 3CH ;显示温度的暂存区,共四位 3C3F。分别;为小数、个、;十、百位。MTD EQU INITIAL ;I2C 中发送数据的首址MRD EQU INITIAL ;接收区的首址,同 INITIALNUMBYT EQU 04H ;I2C 传递数据的个数SWA EQU A0H ;I2C 写地址SRA EQU A1H ;I2C 读地址SUBDAA EQU 02H ;I2C 的二级地址码TIMEHEAT EQU 40H ;加热时间的存储地址TIUNHEAT EQU 41H ;不加热的时间存储地址TRAN EQU 42H ;模糊量化结果的存储地址DISPFLAG EQU 43H ;显示标志,用于识别设定、上、下限温度;的显示3.2.5 键盘管理子程序键盘管理程序包括键盘扫描程序(用于将输入的键值读入到数据存储器中) 、键值判断转移程序(判断输入的数值并根据数值的异同做出相应的处理) 。1 键盘扫描子程序由图 3-7 可知同显示接口一样,键盘接口同样使用了串行口的方式 0。当检测到有键按下时,程序将检测是在第 0 行或者是在第 1 行,然后通过串行输出不同的列值来扫描按下的键在哪一列。最后将键值读入到 keyboard 存储器中。键值=行值8+列值。具体程序如下: KEYSCAN:MOV SCON,#00H ; 选择串行模式无锡职业技术学院毕业设计说明书24 NOKEY:SETB LINE1 SETB LINE2 MOV SBUF,#0 ; 检查重点已被选择 SERIAL:JNB TI,SERIAL ;等待发送串行时钟 CLR TI JNB LINE1,KEYIN JNB LINE2,KEYIN ; 或更关键的被选择 AJMP NOKEY ; 没有关键 KEYIN:LCALL DELAY_10MS; 延迟 10MS JNB LINE1,KEYLINE1 JNB LINE2,KEYLINE2 AJMP NOKEY KEYLINE1:MOV R3,#0 SETB LINEFLAG ;LINEFLAG 是第一线 AJMP LIESCAN ; 谎言扫描 KEYLINE2:MOV R3,#1 LIESCAN:MOV R5,#8 ; 八谎言 MOV R4,#0 MOV A,#0FEH ; 初步 LIESCAN MOV SBUF,A SERIAL2:JNB TI,SERIAL2 ; 谎言扫描开始 CLR TIJB LINEFLAG LINE1IN SETB LINE2 JNB LINE2,OKKEY ; 寻找谎言 LINE1IN:SETB LINE1无锡职业技术学院毕业设计说明书25 JNB LINE1,OKKEY REVOTE:SETB C RLC A INC R4 DJNZ R5,LIESCAN AJMP NOKEY ; 系统 ERORR OKKEY:MOV A,R3 MOV B,#8 MUL AB ADD A,R4 MOV KEYBOART A ;STORT 关键 CLR KEYFLAG ; 明确 THE KEYFLAG RET 2 键值判断转移子程序由硬件部分可知键盘中除了几个数字键外,还有几个功能键。此程序用于判断输入的键是功能键还是数字键,如果是功能键则选择相应的功能或者在误输入的情况下报警,提醒操作者。其流程图见图 3-15,键盘管理程序见附录。具体程序如下:图图 3-15 键盘管理程序流程键盘管理程序流程无锡职业技术学院毕业设计说明书26KEYOPT:CLR C LCALL KEYSCAN ;调用用键盘扫描程序 CLR 00H MOV A,KEYBOARD CJNE A,#10,WRONG ;09 为数字键,10 为确认键,此是按下则报警 WRONG:SETB LED2 LCALL DELAY_2S CLR LED2 AJMP KEYOPTN10:JC WRONG ;为 09 CLR C CJNE A,#11,XIAFANG AJMP SHUTUPXIAFANG:CJNE A,#12,TEMPIN ;为输入各类温度 MOV A,DISFLAG CJNE A,#2,NO2 MOV DISPFLAG,#0 AJMP DISP NO2:ADD DISPFLAG,#1 ;DISPFLAG 加一 DISP:MOV A,DISPFLAG MOV B,#31H ADD A,B ;A+B=ADDRES MOV R1,A ; 显示温度 LCALL VALUDISP AJMP KEYOPT TEMPIN:CJNE A,#13,HIGHIN无锡职业技术学院毕业设计说明书27 SETB 00H LCALL DATA AJMP KEYOPTHIGHIN:CJNE A,#14,LOWIN SETB 01H LCALL DATA AJMP KEYOPT LOWIN:SETB 02H LCALL DATA AJMP KEYOPT RETSHUTUP:CPL 03H JB 03H,TURNOFF SETB EA ; 关掉中断 AJMP KEYOPTTURNOFF:CLR OPT CLR EA AJMP KEYOPT ; 关掉中断3.2.6 定时中断应答子程序1 定时中断 0 中断服务子程序无锡职业技术学院毕业设计说明书28定时中断 0 用于等周期的进行 A/D 转换(即温度的采样点数固定) ,并将采样后的值作为输入量,再由控制程序实现由输入量到输出量的计算,再将计算出的控制量存储在fuzztime 寄存器中。并调用显示程序刷新当前系统的温度。整个程序为顺序执行。流程图如图 3-16,具体程序如下:INTT0:PUSH PSWCLR TR0 ;关中断 SETB RS0 SETB RS1 ;选寄存器组MOV TH0,#3CH MOV TL0,#0B0H ;重置初值 DJNZ TIME QUICKT0 MOV TIME,#10 ;采样周期为 5 秒 LCALL ADC ;调用 A/D 转换程序 LCALL FUZZY ;调用程序算出定时常数无锡职业技术学院毕业设计说明书29 JB 05H,QUICKT0 ;05H=1,为正在显示数值时,不能显示当前温度 LCALL DISPLAY ;显示刷新QUICKT0:SETB TR0 ;开中断 POP PSWRETI2 定时器 1 中断服务子程序同定时器 0 类似,定时器实现了模拟的 PWM 变换。即定时器 1 中存在一个周期时间(为 20MS) 。在这个时间内定时器 1 在 fuzztime 个周期的时间内将执行器通电,使加热器加热,其余的周期时间(20-fuzztime)执行器不通电。整个程序采用顺序执行,流程图如图 3-17。具体程序如下:INTT1:PUSH PSW SETB RS0 ;中断 1 中全部用了通用寄存器 1CLR TR1 MOV TH1,#3CH MOV TL1,#0B0H无锡职业技术学院毕业设计说明书30 MOV A,TIMEHEAT CJNE A,TIMEHEAT,NOHEATJB 06H, UNHEAT ;用于判断加热是否完毕 DJNZ R3,QUICKT1 NOHEAT: MOV R3,TIMEHEAT ;移入加热的时间 SETB 06H AJMP QUICKT1UNHEAT:DJNZ R4, QUICKT1 MOV R4,TIUNHEAT ;移入不加热的时间 CLR 06HQUICKT1:POP PSWSETB TR1 RETI3.2.7 运算子程序运算程序实现了由 A/D 转换值到控制值的运算。其中包含了求差量化和查表等子程序。偏差=现行温度值设定温度值,其集合可以表示为负大(NB) 、负小(NS) 、零e(Z0) 、正小(PS) 、正大(PB)并将其大小量化为九个等级:-4,-3,-2,-1,0,+1,+2,+3,+4。其论域 E 为 E=-4,-3,-2,-1,0,+1,+2,+3,+4。为简化运算,可将控制量 U 的大小也量化成上述九个等级若根据专家经验,这些集的隶属度量化为如表 3-3: 无锡职业技术学院毕业设计说明书31-4-3-2-10+1+2+3+4PB000000.40.711PS0000.40.710.70.40ZO000.40.710.70.400NS00.40.710.70000NB110.70.400000根据熟练操作人员手工控制经验,控制规则如下:1)IF E=NB THEN U=PB2)IF E=NS THEN U=PS3)IF E=ZO THEN U=ZO4)IF E=PS THEN U=NS5)IF E=PB THEN U=NB上述控制规则为一多重条件语句,可用误差论域 E 到控制量论域 U 的关系 R 表示为: NBuPBeNSePSeZOeZOePSuNSePBuNBeR接下来再由讲法法则和上述计算关系进行矩阵运算,结果如表 3-4e-4-3-2-10+1+2+3+4U+4+3+2+10-1-2-3-4差值与实际温度的量化关系如表 3-5e量化等级-4-3-2-10+1+2+3+4表表 3-3 集的隶属度量集的隶属度量表表 3-4 差值与控制量的等级对应表差值与控制量的等级对应表表表 3-5 量化等级与实际温度的对应表量化等级与实际温度的对应表语言变量量化等级无锡职业技术学院毕业设计说明书32实际温差-5-3-2-10+1+2+3+5控制 U 与实际输出的量化关系如表 3-6量化等级-4-3-2-10+1+2+3+4实际输出20105321000注:数值为每 20 个周期内的导通周期数实际运用过程中,可以将-44 量化为 08,减少符号数的运算。另外为了减少程序,可由差值量化后直接求出控制量,而不必要对控制量进行反量化。e实际温差-5-0.5-0.2-0.10+0.1+0.2+0.5+5e012345678实际输出20105321000 注:数值为每 20 个周期内的导通周期数分析可知,可以通过查表程序来求得其控制值。程序流程图如图 3-18。具体程序如下所;示:表表 3-63-6 控制量的量化等级与实际输出之间的关系控制量的量化等级与实际输出之间的关系表表 3-73-7 简化后的实际温差与实际输出的关系表简化后的实际温差与实际输出的关系表无锡职业技术学院毕业设计说明书33VALUE DB 0H,1H,02H,03H,04H,05H,06HTIME DB 0H,0H,1H,2H,3H,5H,14H FUZZY:PUSH PSW PUSH A LCALL 2BYTESUB ;调用 2 进制无符号数减法 LCALL 2BYTEDIV ;调用 2 进制无符号数除法 LCALL TRANSMIT ;调用求差并量化子程序 MOV DPTR,#TIME ;模糊时间入地址 DPTR MOV A,TRAN ;量化等级入 A MOVC A,A+DPTR ;模糊时间入 A MOV TIMEHEAT,A ;将所得时间放入加热时间中 CLR C ;清 C,马上要用减法 MOV A,#20 ;总共为 20 个周期 SUBB A,TIMEHEAT MOV TIUNHEAT,A ;求出不加执热时间 POP A入口求差值并量化由差值量化值求 fuzztime返回保存图图 3-18 运算子程序的流程图运算子程序的流程图无锡职业技术学院毕业设计说明书34 POP PSW RET求差量化子程序流程图如图 3-19,具体程序如下:TRANSMIT:MOV R0,#DISTEMP INC R0 MOV 22H,R0 ;移入个位 INC R0 MOV A,R0 ;移入十位 MOV B,#10 MUL AB ;十位值*10 ADD A,22H ;再加上个位 MOV 22H,A INC R0 MOV A,R0入口差值为正?直接量化负数求原码去符号返回A/D 值图图 3-19.求差量化子程序图求差量化子程序图无锡职业技术学院毕业设计说明书35 MOV B,#100 MUL AB ADD A,22H ;百位*100+十位*10+个位 CLR CLR C CJNZ A,TEMPHIGH,HIGH ;如上越限有报警 HIGH:JNC OUTSETB LED1 LCALL DELAY_2S CLR LED1 OUT1:CJNE A,TEMPLOW,LOW ;如上越限有报警 LOW:JC OUT2 SETB LED1 LCALL DELAY_2S CLR LED1OUT2:SUBB A,SETTEMP ACALL LIANGHUA RET3.33.3 抗干扰设计抗干扰设计与软件调试与软件调试在系统的运行过程中可能出现各种干扰,如信号不稳定、电路板搞干扰能力差、程序跑飞等,也可能在搬运或者使用过程中对电路板或者原器件的磨损等。所以在设计过程中应做好搞干扰设计,以求将干扰对系统产生的影响降到最低。3.3.1 硬件抗干扰设计在硬件设计过程中为了减少外部信号对系统的影响采用了以下几种抗干扰措施。1I/O 口外接滤波电容和上拉电阻,减小信号干扰。无锡职业技术学院毕业设计说明书362 制作 PCB 板时对重点信号线实行地线包络,并于导线集中的地方和过孔处补上泪滴,加强连接。3. PCB 板的双面分别填充电源层与地线层,并对没有并线的地方进行覆铜2.PCB 板布局实行模块化分离,模块之间进行信号隔离,对电源变压器进行隔离。3.3.2 软件抗干扰措施软件抗干扰就有投资低的优点,本文采用的软件抗干扰措施如下:(1) 指令冗余当 CUP 受到干扰后,往往将一些操作数当作指令码来执行,引起程序的混乱,我们首先要尽快将程序纳入正轨,也就是让程序弹飞到某一个单字节指令 NOP,这就是指令冗余,自此,常在一些对程序的流向起决定作用的指令之前插入两条 NOP 指令,以保证弹飞的程序迅速纳入正确的控制轨道。在某些对系统工作状态至关重要的指令前也可插入两条 NOP指令,以保证被正确执行。(2) 软件陷阱当弹飞的程序落到非程序区(如 ROM 中未使用的空闲和程序中的数据表格区)时,就形成了死循环,解决的办法就是用一条引导指令强行将捕获的程序印象到一个指定的地址,为了加强捕获的效果,一般还在其前面加两条 NOP 指令。因此,软件陷阱由三条指令组成:NOPNOPLJIMP STARTa. 未使用的中断向量区当干扰未使用的中断开放,并激活这些中断时,就会进一步引起混乱,如果我们在这些地方布上陷阱,就能及时捕获到中断。可在中断入口处加入 RETI 指令。b. 未使用的大片 ROM 空间对于剩下的 ROM 空间,一般在每隔一段设置一个陷阱(02H 00H 00H)从头开始,此时前两个 00H 即是设置陷阱的地址,又是 NOP 指令,起到双重的作用。3.3.3 软件调试无锡职业技术学院毕业设计说明书371. 模糊表的求取在软件设计部分中已经说明,运算中由于单片机的运算能力有限,所以将矩阵的运算部分采用了离线的方式,进行求取。其体的求取过程如下:(1) 将熟练操作人员得出的关系得出关系 R。如图 3-20。(2)运行编好的程序,求出控制量。依次输入各种情况下的隶属度,并进行解求出控制表。如 E=NS 时有,U=0.4 0.4 0.7 0.7 0.7 1 0.7 0.7 0.7。图图 3-20 系统的模糊关系系统的模糊关系 R(3)求出控制将上述结果进行解模糊即0.70.7432101234u 按照隶属度最大原则,应先取控制量为“+1”级。同理均可从 R 中确定一个相应的值,列成控制表如表 3-5。2 . 软件的调试软件的调试部分包括各类程序的调试,如主程序、键盘管理子程序、定时中断程序。当然最重要的是运算程序,它可以检测运算的正确性,和在此运算方式下的控制效果及精度等。接好调试电路,输入程序并进行查错、编译,运得程序观察结果,并绘制曲线如下。(1)当输入温度为 95时,理想曲线、 最终调试曲线及最初测试曲线对照如 3-21。图 3-20 系统的模糊关系 R无锡职业技术学院毕业设计说明书38 ()选中最终参数后,输入温度为 50时,理想曲线测试曲线对照如图 3-22。图图 3-21 输入温度为输入温度为 95时的系统响应曲线时的系统响应曲线图图 3-22 输入温度为输入温度为 50时的系统响应曲线时的系统响应曲线无锡职业技术学院毕业设计说明书39分析:(1) 我们可以看出当第一次测试时,由于参数不准,所以出现了误差较大,达不到系统指标。而经过不断调整参数,系统达到了预期的控制效果。(2) 当参数调好后,重新设置输入温度。可以看出在 t1 以前系统全速加热,但由于自然散热,曲线并不是直线。而温度上升到 48时上升斜率减小,到相差 0.5时更小,最终系统误差在 0.5以内。综上所述,在控制精度上完全达到了设计任务的要求。 无锡职业技术学院毕业设计说明书40第第四四章章 程序清单程序清单;*;程序名:模糊温度控制系统;功能:实现了模糊控制的温度控制,温度的显示和设定;* ORG 00H LJMP START ;程序开始 ORG 03H RETI ;软件抗干扰 ORG 0BH LJMP INTT0 ;定时器 0 的中断服务程序 ORG 13H RETI ;软件抗干扰 ORG 1BH LJMP INTT1 ;定时器 1 的中断服务程序ORG 23HRETI ;软件抗干扰SDA BIT P3.0 ;I2C 协议定义的两跟线 SCL BIT P3.1 ;SDA(数据),SCL(时钟) CS BIT P3.4 ;A/D 转换器的选通线 LOCK BIT P3.5 ;E2PROM 的写允许线 OPE BIT P3.7 ;执行器的输入(控制) LINE1 BIT P1.3 LINE2 BIT P1.2 ;键盘的两跟行线LINEFLAG BIT 05H ;(1)行线标志,为第 1 行 无锡职业技术学院毕业设计说明书41 LED1 BIT P1.0 ;(1)越限报警指示灯 LED2 BIT P1.4 ;(1)误输入报警指示灯 DO BIT P3.3 ;串行 A/D 的输出 CLK BIT P3.2 ;串行 A/D 的时钟线 INITIAL EQU 30H ;用于判断是否为第一次开机SETTEMP EQU 31H ;用户设定的温度TEMPHIGH EQU 32H ;用户设定的上限温度,如超过则有越限报警TEMPLOW EQU 33H ;用户设定的下限温度,如低于则有越限报警KEYTEMP EQU 34H ;由键盘输入的设定、上、下温度,共三位。分别为;34H,35H,36H。KEYBOARD EQU 37H ;用于缓冲存储用户从键盘输入的值。ADCHIGH EQU 38H ;ADC-1000 后的高位暂存值ADCLOW EQU 39H ;ADC-1000 后的低位暂存值 ADCDATAH EQU 3AH ;A/D 转换的高位 ADCDATAL EQU 3BH ;A/D 转换的低位DISPTEMP EQU 3CH ;显示温度的暂存区,共四位 3C3F。分别;为小数、个、;十、百位。MTD EQU INITIAL ;I2C 中发送数据的首址MRD EQU INITIAL ;接收区的首址,同 INITIALNUMBYT EQU 04H ;I2C 传递数据的个数SWA EQU A0H ;I2C 写地址SRA EQU A1H ;I2C 读地址SUBDAA EQU 02H ;I2C 的二级地址码TIMEHEAT EQU 40H ;加热时间的存储地址TIUNHEAT EQU 41H ;不加热的时间存储地址TRAN EQU 42H ;模糊量化结果的存储地址无锡职业技术学院毕业设计说明书42DISPFLAG EQU 43H ;显示标志,用于识别设定、上、下限温度;的显示;*;函数名:主函数;功能:实现了开机显示和调用键盘管理程序;* ORG 50HSTART: MOV SP,#70H ;置堆栈,如堆栈超出会造成处理器复位。 LCALL RDNBYT ;读入 E2PROM 中的初使会标志、各类设定温度。 MOV R1,#SETTEMP LCALL VALUDISP MOV R1,#TEMPHIGH LCALL VALUDISP MOV R1,#TEMPLOW LCALL VALUDISP ;单片机复位后,会分别显示各类设定温度 2 秒 MOV TMOD,#11H ;定时器 0、1 都为 16 位定时器 MOV TH0,#3CH MOV TL0,#0B0H MOV TH1,#3CH MOV TL1,#0B0H ;两定时器第一周期内的定时时间为 0.05 秒(12M) SETB PT1 ;定时器 1 优先,定时器 1 用于控制加热器的运行 SETB EA SETB ET0 SETB ET1无锡职业技术学院毕业设计说明书43 SETB TR0 SETB TR1 ;开定时中断和总中断,两个定时器开始定时 LCALL KEYOPT ;调用键盘管理程序,完成各类操作用于显示设定;温度、上、下限温度、和变换的子程序;*;函数名:数值显示程序;功能:将要显示的各类温度量化并调用显示程序;入口:R1(要显示数据的地址);*VALUDISP:PUSH PSW PUSH A ;存储断点 SETB 05H ;为正在显示设定、上、下限值,此是不中断显示温度MOV R0,#DISPTEMP ;温度存储低地址 MOV R0,#0 ;设定温度中没有小数位,为 0 INC R0 MOV A,R1 ;移入数据 MOV B,#10 DIV AB ;除以 10 再取余 MOV R0,B ;余数作为显示的个位数 INC R0 DIV AB MOV R0,B ;十位入地址 MOV R0,A ;设定的百位入地址 LCALL DISPLAY ;显示刷新 LCALL DELAY_2S ;延时 2 秒无锡职业技术学院毕业设计说明书44 CLR 05H ;可以显示当前温度了 POP A POP PSWRET;*;函数名:A/D 转换程序;功能:进行 A/D 串行转换;转换结果高 4 位存于 ADCDATAH 中,低 8 位存储于 ADCDATAL 中;* ADC:PUSH A CLR CS ;选通 ADC NOP SETB CLK NOP NOP CLR C ;清 C 标志 CLR CLK MOV R3,#12 ;时序要求 CLR A ; 清 ACC NOPADCLK:SETB CLK NOP NOP CLR CLK MOV C,DO ;移入 ADC 值 RLC A ;左移无锡职业技术学院毕业设计说明书45 CJNE R3,#8,NEXT MOV ADCDATAH,A ;存储 ADC 高位值 NEXT:DJNZ R3,ADCLK MOV ADCDATAL,A ;存储 ADC 低位值 POP A SETB CS ;关 A/D RET ;*;函数名:显示程序;功能:串行显示温度;R0 为显示数据低字节地址;* NUMDATA DB C0H,F9H,D8H,B0H,99H,92H,82H F8H,80H,98H ;09 的字形码 DISPLAY:SETB DISSELEC ;选取通显示 MOV SCON,#00H ;串口方式 0 MOV R1,#04H ;显示四位 MOV R3,#0 ;用于判断是否应加入小数位 MOV DPTR,#NUMDATA ;数字字型码地 MOV R0,#DISPTEMP ;移入显示数据的地址 LOOPDIS:MOV A,R0 ;移入 A MOVC A,A+DPTR ;取值 MOV 24H,A ;加入一寄存器用于缓冲MOV A,R3CJNE A,#2,NOT2MOV A,24H无锡职业技术学院毕业设计说明书46SETB ACC.7 ;判断是否为个位,如是则点亮小数点AJMP DD NOT2:MOV A,24HDD:MOV SBUF ,A ;发送 WAITDIS:JNB TI,WAITDIS ;等待发送 CLR TI DEC R0 ;地址减 1 DJNZ R1,LOOPDIS ;发送完毕否? OUTDIS: CLR DISSELEC ;不选通显示 RET;*;函数名: 双字节的无符号数减法;功能:用于双字节的无符号数减法;减数固定为 1000,化为 16 进制后为 3E8H,即高位为 3,低为为 E8;* 2BYTESUB:PUSH A PUSH PSW CLR C ;借位标志清 0 MOV A ,ADCDATAL SUBB A ,#0E8H ;减去低位 MOV ADCLOW,A MOV A ,ADCDATAH SUBB A ,#3 ;减去高位 MOV ADCHIGH ,A ;存储结果 POP PSW POP A无锡职业技术学院毕业设计说明书47 RET;*;函数名: 双字节的无符号数除法;功能:用于双字节的无符号数减除法,分别求出温度的小数,个,十,百位;被除数: 双字节的无符号数减法的剩余值;*2BYTEDIV:MOV R5,ADCHIGH MOV R4,ADCLOW ;被除数的高低位 MOV R3,#0 MOV R2#10 MOV R0,#DISTEMP LCALL SUBDIV MOV R0,R6 ;小数位进入 INC R0 LCALL SUBDIV ;其被除数地址不变 MOV R0,R6 INC R0 LCALL SUBDIV ;每次的除数都相同为 10 MOV R0,R6 INC R0 MOV R0,R4 ;个、十、百位分别进入相应的内存单元中 RET;*;(1)入口:R5(高)、R4(低),被除数;R3(高)、R2(低),非零除数。;(2)出口:R5(高)、R4(低),商;R7(高)、R6(低),余数。;*无锡职业技术学院毕业设计说明书48SUBDIV:POP PSW SETB RS1 ;存储前面的通用寄存器组,并重新选择为 2CLR A ;部分余数单元清零 MOV R7 ,A MOV R6 ,A MOV R0 ,#10 ;除法移位次数 LP:CLR C ;移位 MOV A ,R4 RLC A MOV R4 ,A MOV A ,R5 RLC A MOV R5 ,A MOV A ,R6 RLC A MOV R6 ,A MOV A ,R7 RLC A MOV R7 ,A LP1:MOV A ,R6 ;部分余数减法 SUBB A ,R2 MOV R1 ,A MOV A ,R7 SUBB A ,R3 JC SMALL MOV R7 ,A无锡职业技术学院毕业设计说明书49 MOV A ,R1 MOV R6 ,A INC R4 ;商加 1 SJMP LP1 SMALL:DJNZ R0,LP MOV 20H,R7 ;四舍五入 JB 07H,ADD1 CLR C MOV A ,R6 RLC A MOV R6 ,A MOV A ,R7 RLC A SUBB A ,R3 JC RETURN JNZ ADD1 MOV A ,R6 SUBB A ,R2 JC RETURN ADD1:MOV A ,R4 ;商加 1 ADD A ,#01H MOV R4 ,A MOV A ,R5 ADDC A ,#00H MOV R5 ,A RETURN:POP PSW无锡职业技术学院毕业设计说明书50RET;*;函数名:定时器 0 服务程序;功能:用于定时中断扫描,采样温度,计算模糊时间;*INTT0:PUSH PSWCLR TR0 ;关中断 SETB RS0 SETB RS1 ;选寄存器组MOV TH0,#3CH MOV TL0,#0B0H ;重置初值 DJNZ TIME QUICKT0 MOV TIME,#10 ;采样周期为 5 秒 LCALL ADC ;调用 A/D 转换程序 LCALL FUZZY ;调用模糊算法程序算出定时常数 JB 05H,QUICKT0 ;05H=1,为正在显示数值时,不能显示当前温度 LCALL DISPLAY ;显示刷新QUICKT0:SETB TR0 ;开中断 POP PSWRETI;*;函数名:定时器 1 服务程序;用于定时器 1 的定时中断控制执行器;*INTT1:PUSH PSW SETB RS0 ;中断 1 中全部用了通用寄存器 1无锡职业技术学院毕业设计说明书51CLR TR1 MOV TH1,#3CH MOV TL1,#0B0H MOV A,TIMEHEAT CJNE A,TIMEHEAT,NOHEATJB 06H, UNHEAT ;用于判断加热是否完毕 DJNZ R3,QUICKT1 NOHEAT: MOV R3,TIMEHEAT ;移入加热的时间 SETB 06H AJMP QUICKT1UNHEAT:DJNZ R4, QUICKT1 MOV R4,TIUNHEAT ;移入不加热的时间 CLR 06HQUICKT1:POP PSWSETB TR1 RETI;*;函数名:键盘扫描程序;功能:扫描按键;出口:键值位于 KEYBOARD 中;键值=行*8+列;* KEYSCAN:MOV SCON,#00H ; 选择串行模式 NOKEY:SETB LINE1 SETB LINE2 MOV SBUF,#0 ; 检查重点已被选择无锡职业技术学院毕业设计说明书52 SERIAL:JNB TI,SERIAL ;等待发送串行时钟 CLR TI JNB LINE1,KEYIN JNB LINE2,KEYIN ; 或更关键的被选择 AJMP NOKEY ; 没有关键 KEYIN:LCALL DELAY_10MS; 延迟 10MS JNB LINE1,KEYLINE1 JNB LINE2,KEYLINE2 AJMP NOKEY KEYLINE1:MOV R3,#0 SETB LINEFLAG ;LINEFLAG 是第一线 AJMP LIESCAN ; 谎言扫描 KEYLINE2:MOV R3,#1 LIESCAN:MOV R5,#8 ; 八谎言 MOV R4,#0 MOV A,#0FEH ; 初步 LIESCAN MOV SBUF,A SERIAL2:JNB TI,SERIAL2 ; 谎言扫描开始 CLR TIJB LINEFLAG LINE1IN SETB LINE2 JNB LINE2,OKKEY ; 寻找谎言 LINE1IN:SETB LINE1 JNB LINE1,OKKEY REVOTE:SETB C RLC A无锡职业技术学院毕业设计说明书53 INC R4 DJNZ R5,LIESCAN AJMP NOKEY ; 系统 ERORR OKKEY:MOV A,R3 MOV B,#8 MUL AB ADD A,R4 MOV KEYBOART A ;STORT 关键 CLR KEYFLAG ; 明确 THE KEYFLAG RET ;*;程序名:I2C 程序包;功能:I2C 总线的读写;包含:STA、STOP、MACK、MNACK 和通用子程序 CACK ;WRBYT、WRNBYT、RDNBYT、RDBYT;P1.6 为 SCL,P1.7 为 SDA; 软件占用资源,R0(18H),R1(19H),F0,C;符号单元:MTD 发送区首址,MRD 接收区首址,NUMBYT 传送字节的个数;* STA:SETB SDA ;I2C 总线的开始 SETB SCL ; 开始 I2C NOP NOP CLR SAD NOP NOP无锡职业技术学院毕业设计说明书54 CLR SCL RET STOP:CLR SDA ;I2C 停止 SETB SCL NOP NOP SETB SDA NOP NOP CLR SCL RET MACK:CLR SDA ;I2CS MACK SETB SCL NOP NOP CLR SCL SETB SDA RET MNACK:SETB SDA ;I2CS NOMACK SETB SCL NOP NOP CLR SCL CLR SDA RET CACK:SETB SDA ;I2CS 总线检查 无锡职业技术学院毕业设计说明书55 SETB SCL CLR F0 MOV A,P1 JNB ACC.7,CEND SETB F0CEND:CLR SCL NOP RETWRBYT:MOV R0,#08 ; 发送字节 WLP:RLC A JC WR1 AJMP WR0 WLP1:DJNZ R0,WLP RET WR1:SETB SDA SETB SCL NOP NOP CLR SCL CLR SDA AJMP WLP1 WR0:CLR SDA SETB SCL NOP NOP CLR SCL无锡职业技术学院毕业设计说明书56 AJMP WLR1RDBYT:MOV R0,#08 RLP:SETB SDA SETB SCL MOV A,P1 JNB ACC.7,RD0 AJMP RD1 RLP1:DJNZ R0,RLP RET RD0:CLR C ;RESEIVE 位清 0 MOV A,R2 RLC A MOV R2,A CLR SCL AJMP RLP1 RD1:SETB C MOV A,R2 RLC A MOV R2,A CLR SCL AJMP RLP1WRNBYT:CLR LOCK ;去掉保护PUSH PSW ; 写 n 字节 MOV PSW,#18H LCALL STA MOV A, #SWA 无锡职业技术学院毕业设计说明书57 LCALL WRBYT LCALL CACK JB F0,WRNBYT MOV A,#SUBADD LCALL WRBYT LCALL CACK JB F0,WRNBYT MOV R1,#MTD ;数据地址 WRDA:MOV A,R1 LCALL WRBYT LCALL CACK JB F0,WRNBYT INC R1 DJNZ NUMBYT,WRDA ; 数据数量 LCALL STOP POP PSW SETB LOCK ;开保护 RETRDNBYT: CLR LOCKPUSH PSW MOV PSW,#18H ; LCALL STA MOV A,#SRA ; 发送地址 LCALL WRBYT LCALL CACK JB F0,RDNBYT 无锡职业技术学院毕业设计说明书58 MOV A,#SUBADD LCALL WRBYT LCALL CACK JB F0,WRNBYT RDN:MOV R1,#MRD RDN1:LCALL RDBYT MOV R1,A DJNZ NUMBYT,ACK LCALL MNACK LCALL STOP POP PSW SETB LOCK RET ACK:LCALL MACK INC R1 SJMP RDN1;*;函数名:模糊运算;功能:根据输入运用模糊算法求出控制量;*VALUE DB 0H,1H,02H,03H,04H,05H,06HTIME DB 0H,0H,1H,2H,3H,5H,14H FUZZY:PUSH PSW PUSH A LCALL 2BYTESUB ;调用 2 进制无符号数减法 LCALL 2BYTEDIV ;调用 2 进制无符号数除法无锡职业技术学院毕业设计说明书59 LCALL TRANSMIT ;调用求差并量化子程序 MOV DPTR,#TIME ;模糊时间入地址 DPTR MOV A,TRAN ;量化等级入 A MOVC A,A+DPTR ;模糊时间入 A MOV TIMEHEAT,A ;将所得时间放入加热时间中 CLR C ;清 C,马上要用减法 MOV A,#20 ;总共为 20 个周期 SUBB A,TIMEHEAT MOV TIUNHEAT,A ;求出不加执热时间 POP A POP PSW RET;*;函数名:求差量化程序;功能:用于将所得的温度值进行求差并最化其等级,;*TRANSMIT:MOV R0,#DISTEMP INC R0 MOV 22H,R0 ;移入个位 INC R0 MOV A,R0 ;移入十位 MOV B,#10 MUL AB ;十位值*10 ADD A,22H ;再加上个位 MOV 22H,A INC R0无锡职业技术学院毕业设计说明书60 MOV A,R0 MOV B,#100 MUL AB ADD A,22H ;百位*100+十位*10+个位 CLR CLR C CJNZ A,TEMPHIGH,HIGH ;如上越限有报警 HIGH:JNC OUTSETB LED1 LCALL DELAY_2S CLR LED1 OUT1:CJNE A,TEMPLOW,LOW ;如上越限有报警 LOW:JC OUT2 SETB LED1 LCALL DELAY_2S CLR LED1OUT2:SUBB A,SETTEMP ACALL LIANGHUA RET;* ;此程序用于模糊量化,为上一个程序的功能子程序;*LIANGHUA:JNC ZHENG ;差值为正 SUBB A,#0 ;差值差 1 CLR C CPL A ;负数为补码存放的,到这一步已经求一求反 无锡职业技术学院毕业设计说明书61 CJNE A,#5,ABOUTF5 ABOUTF5:JC LESS5 MOV TRAN,#6 ;差值温度小于负 5 度,全速加热OUTLIANG:RET LESS5:CLR C CJNE A,#3,ABOUTF3ABOUTF3:JC LESS3 MOV TRAN,#5 ;差值大于负 0.5,但小于负 3 AJMP OUTLIANG LESS3:CLR C CJNE A,#2,ABOUTF2ABOUTF2:JC LESS2 MOV TRAN,#4 ;差值大于负 0.2,但小于负 1 AJMP OUTLIANG LESS2:MOV TRAN,#3 ;差值大于负 0.2,但小于负 1 AJMP OUTLIANGZHENG:CJNE A,#0,ZHENGHUA MOV TRAN,#2 ;差值相当,适当加热维持热量丢失 AJMP OUTLIANG ZHENGHUA:CJNE A,#1,ABOUTZ MOV TRAN,#1 ;差值为 00.1 时加热为 1 个周期 AJMP OUTLIANG ABOUT2:MOV TRAN,#0 ;差值大于 0.2 时不加热 AJMP OUTLIANG;*;函数名:键盘管理程序无锡职业技术学院毕业设计说明书62;功能:用于控制键盘的输入,和由输入的功能键所完成的一系列操作;*KEYOPT:CLR C LCALL KEYSCAN ;调用用键盘扫描程序 CLR 00H MOV A,KEYBOARD CJNE A,#10,WRONG ;09 为数字键,10 为确认键,此是按下则报警 WRONG:SETB LED2 LCALL DELAY_2S CLR LED2 AJMP KEYOPTN10:JC WRONG ;为 09 CLR C CJNE A,#11,XIAFANG AJMP SHUTUPXIAFANG:CJNE A,#12,TEMPIN ;为输入各类温度 MOV A,DISFLAG CJNE A,#2,NO2 MOV DISPFLAG,#0 AJMP DISP NO2:ADD DISPFLAG,#1 ;DISPFLAG 加一 DISP:MOV A,DISPFLAG MOV B,#31H ADD A,B ;A+B=ADDRES MOV R1,A ; 显示温度 LCALL VALUDISP 无锡职业技术学院毕业设计说明书63 AJMP KEYOPT TEMPIN:CJNE A,#13,HIGHIN SETB 00H LCALL DATA AJMP KEYOPTHIGHIN:CJNE A,#14,LOWIN SETB 01H LCALL DATA AJMP KEYOPT LOWIN:SETB 02H LCALL DATA AJMP KEYOPT RETSHUTUP:CPL 03H JB 03H,TURNOFF SETB EA ; 关掉中断 AJMP KEYOPTTURNOFF:CLR OPT CLR EA AJMP KEYOPT ; 关掉中断;*;函数名:数据输入量化程序;功能:完成数据的输入,并存储;*DATATAB AB 0,1,10,100 DATA1:MOV 34H,#0 ; 输入第一个数据无锡职业技术学院毕业设计说明书64 MOV 35H,#0 MOV 36H,#0 MOV R3,#0 MOV R1,#KEYTEMP ; 地址 LCALL KEYSCAN CLR C MOV A,KEYBOARD ;把 DATA 放入 A CJNE A,#9,NO_1 ; NO_1:JNC DACUO1 ;IF C=1 然后告诉错误 MOV R1,KEYBOARD ; 储存数据 DEC R1 INC R3 DATA2:LCALL KEYSCAN ; 输
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。