1、1目 录摘要、序言 .11.组员详细分工 .21.1 已知参数和设计要求 .21.2 实现方法 .22.组员详细分工 .23.详细操作说明 .24.设计总体思路 .34.1 设计步骤 .34.2 原理分析 .45.实验结果 .56.源程序清单 .57.设计感想 .67.1 李杰峰感想 .67.2 韩明昆感想 .67.3 陆明感想 .77.4 吴婧楠感想 .8附录1摘要本文是对烤箱温度控制系统进行设计,在烤箱温度控制系统中,利用计算机对烤箱的继电器发出不同的信号,来控制继电器的开断,从而能够实现控制烤箱加热与否的控制。本系统采用了 PID控制,是经典控制理论在实际中成功应用的典型实例。本次采用的
2、计时芯片是 8254,而信号输出芯片则是 8255,同时,利用 8259 芯片对计时、加热等过程进行中断的控制。而温度采集则是用了PT100 感温电阻,将电信号送至 A/D574 中,利用 A/D574 的模数转换功能,将采集的温度模拟信号转换成计算机可以识别的电信号,进而在计算机内对这些电信号进行处理,经过 PID 控制算法来输出控制烤箱的电信号。关键词:PID 控制算法,A/D574 模数转换,计算机控制序言温度控制技术广泛应用于社会生活的各个领域,如家电、汽车、材料、电力电子等,传统的温度控制技术中最常见的是继电器调温,但由于继电器动作频繁,温度控制范围小,精度不高,可能会因触点不良而影
3、响正常工作。最近几年快速发展的有 PID 温控、模糊控制、神经网络 以及遗传算法在温度控制中的应用。烤箱是热处理生产中应用最广的加热设备,它电流通过电热元件产生热量,借助辐射和对流的传递方式,将热量传递给所要加热的物品,使其加热到所要求的温度。本文设计的烤箱温度控制系统,是利用计算机对其温度进行控制,采用 PID 控制算法,以实现对烤箱温度控制,达到控制性能要求的指标。 李杰峰、韩明昆、陆明、吴婧楠-烤箱温度控制系统的设计21. 主要设计内容1.1 已知参数和设计要求1.某烤箱的温度控制要求为:控制烤箱温度从室温上升到目标温度并一直保持在该目标温度,要求控制的精度达3%,调节时间20 秒。2.
4、目标温度应可以通过键盘任意修改。3.完成温度检测、温度变松,温度显示(LED 和 CRT 曲线) 、温度控制、通过键盘设定上、下限温度报警值,温度超限报警(声、光)等功能。1.2 实现方法采用 80X86 计算机、JK 实验系统装置实现(限4 人选做)2. 组员详细分工3. 详细操作说明1.进入程序后显示如下:Please set room temperature:(输入当前室温,2 位数字,以回车结束)Please set desired temperature:(期望达到的温度,3 位数字内,以回车结束)Please set time:(输入期望保持预设温度的时间,分钟为单位,2 位数字)
5、2.设置完之后屏幕上会显示如下文字:Please set room temperature:xxPlease set desired temperature:xxxPlease set time:xxPress R to RESET number. Press Q to EXIT to DOSCurrent Temperature:XXX C3.此时屏幕上的温度值会不断刷新。达到预设温度后会发出 3 声短响,在预设温度范围内保持指定时间之后会发出 4 声长响并返回设定参数部分。姓名 职务 负责的部分李杰峰 组长 控制算法编写,软件数据转换 韩明昆 组员 硬件电路焊接,调试,报告编写陆明 组员
6、发声程序、显示程序编写吴婧楠 组员 程序界面、提示语等编写 李杰峰、韩明昆、陆明、吴婧楠-烤箱温度控制系统的设计34.设计总体思路系统控制框图如图所示我们采用的是传统的 PID 控制策略,其具体过程如下:一开始,给定一个输入信号,即期望温度,此时,PID 控制器还没有起作用,此信号通过变送器送至继电器,继电器导通,使烤箱处于工作状态。这时,温度传感器就把烤箱内的温度转变成电信号送至计算机中。计算机则将此电信号与输入的期望温度进行比较,通过控制器,根据不同的差值,选择不同的控制策略。由于计算机内的电信号都是脉冲信号,因此,可以调节脉冲信号的占空比来调节继电器的断开与导通的时间。期望值与测量值的差
7、距大,就增大占空比,使一个周期内的加热时间增长,反之,则减小占空比。采用上述的控制策略,即可以实现 PID 调节,不同的占空比,相当于 PID 调节中的比例系数改变,因此,利用计算机调节的烤箱温度控制系统是一个变比例系数的调节过程。因此,只要比例系数选定的合适,都会达到控制指标的要求。4.1 设计步骤4.1.1 主程序的设计首先确定主程序所要实现的目标,即:显示提示信息,输入设定温度值,输入温度保持时间,实时刷新当前温度,比较实时温度与设定温度差值并进行 PID 运算,重置参数和结束。然后,确定了主程序所要实现的功能以后,在相应的编写各个子程序模块。同时,要考虑在整个系统实现的过程中,所要运用
8、到的芯片,好进行芯片的初始化。如8255,8259 等4.1.2 温度/时间设定子程序温度/时间设定子程序,即,从键盘上输入一串数字,将其存放在指定的空间区域内,然后将键盘的 ASCII 码转换成 BCD(8421)码,方便后续计算。控制器 烤箱温度采集李杰峰、韩明昆、陆明、吴婧楠-烤箱温度控制系统的设计44.1.3 读取当前温度子程序即 AD574 的使用过程。首先,先将 AD574 初始化,给 R/送负脉冲,启动转换。然后检测 STS 是否为 1,不为 1 则说名转换结束。读取高 8 为数据放入 AH 中,读取低 4为放在屏蔽过低 4 为的 AL 中,然后将 AX 中的内容向右移动 4 位
9、,所得到的结果存放在指定单元中,为当前温度。4.1.4 温度比较以及加热子程序将前一步骤采集到的当前温度转换成十六进制数,然后进行标度变换,比较当前温度和输入的期望温度差,然后做出相应的标记,然后根据不同的标记跳到相应的加热子程序中。其基本原则就是:实际温度和期望温度差距越大,加热子程序中,每个周期的高电平占空比就越大。4.1.5 发声子程序在烤箱开始加热的时候,调用一次;待到达指定温度时,再调用一次;最后结束的时候,再调用一次,总共有 3 次。发声子程序首先是将发声的频率存放到寄存器 AX中,然后利用 8254 定时,再将频率数据写入 42H 口。然后读取 61H 口的控制字信息,其中控制信
10、息为 11B 时,输出,即可发声;为 00B 时,输出,声音停止。4.1.6 绘制坐标轴子程序首先初始化屏幕大小,选择 X,Y 轴所在的位置,选定划线颜色,利用 BIOS 中断,即可在屏幕上绘制出 X,Y 轴。4.1.7CRT 曲线绘制子程序我们将实时保存的温度结果存放在指定的 CTEMP 中,调用 CRT 曲线绘制子程序时,直接读取当前温度值,然后设定起始位置,计算当前坐标位置,就可以在屏幕上描出此时的温度点。然后,将横坐标向右移动 1,带下次读取时,再次在屏幕上描点,多次反复,就形成了多个点组成的温度响应曲线。4.2 原理分析设计控制烤箱温度的系统,我们采用 PID 控制算法。利用计算机控
11、制中的 A/D 转换器,将采集到的模拟信号转换成数字信号,然后送入计算机进行处理。在计算机中,我们编写了 PID 控制算法,将送入的电信号经过该算法,输出一个控制继电器开关的脉冲信号,我们可以通过调节脉冲高电平的占空比,来控制一个信号周期内加热时间的长短。从而实现比例控制。又由于这个占空比是实时变化的,所以,这是一个变比例系数的 P 控制器。利用这个控制器,我们可以使烤箱内的温度保持在我们所设定的期望值。李杰峰、韩明昆、陆明、吴婧楠-烤箱温度控制系统的设计55.实验结果实验结果如下表所示:实验次数 初始温度 设定温度 调节时间 超调量 误差1 35 80 25 秒 4 2.3%2 40 100
12、 27 秒 2 3.3%3 60 160 29 秒 -2 1.5%4 50 200 40 秒 -6 3.5%温度变化过程可大致用如下曲线描述:本次设计总体上还是比较成功,基本上实现了任务要求。只有调节时间的,可能是冗长的程序,或者是电烤箱的功率问题,又或者是自己的 PID 的参数设计不够完善,总之,不能达到要求的 20 秒以内,但是接近 20 秒,此为设计的瑕疵。6.原程序清单见附录 4温度 T/C300200100时间 t/s10 200李杰峰、韩明昆、陆明、吴婧楠-烤箱温度控制系统的设计67.设计感想7.1 李杰峰感想作为我们团队的组长,需要确定合适的电路,对电路进行调试,将变送器调至最合
13、适的范围。同时还要确定与硬件相关的软件主体思想。一个项目的成败,与组长的整体协调能力关系很大。这次的时间比较紧张,而且之前没怎么做过过程控制类的题目,所以可以说是时间短、任务重。热敏电阻 PT100 之前接触过,但是没有和计算机连起来使用,也是一个新的挑战。这次设计我吸取的上次计算机硬件课程设计的教训,学会多利用子程序,而不是要把所有的问题都用一个主程序解决,却很少使用子程序。这样,不但别人读不懂自己的程序,就连自己有时候都读不懂自己的程序。软件部分主要涉及到一些数据的转换和处理,例如 BCD 码转换成 ASCII 码、十六进制数与 BCD 码的相互转换等,虽然很久没用汇编语言编写程序,但是这
14、些算法还是都记在心里,只要稍作熟悉就可以顺利将算法变成一个个子程序。其中,给我带来最大困扰的是 PID 控制器的设计。但是经过老师的讲解,我明白了,原来可以调节输出信号的占空比,控制继电器的开关时间,来调节 PID 调节器的比例系数,从而实现变比例系数的 PID 控制。这次课程设计感觉比以前进步的一点就是程序的模块化思想更加深刻。之前总也用程序段的方式插入的主程序中,而这次则是尽量减少主程序的内容,将所有的处理部分都写成子程序,设计好入口参数,就可以是整个程序思路清晰,一目了然。一个好的程序编写者并不是会把所有的模块都自己写出来,而是可以将自己搜索到的各种模块与自己的项目结合,设计好接口参数,
15、达到事半功倍的效果。这次的程序就用了之前做过的一些设计的模块,如实时显示刷新模块,延时程序,发声子程序等。这些之前积累下来的宝贵资料大大加快了本次课程设计的速度。这次设计的不足是:最开始的一天几乎都浪费掉了,原因是太长时间没有复习汇编语言,感到很生疏,只有拿着课本和实验指导书一点点地找感觉,相信这个问题是大家都存在的,却也是可以解决的。再有类似的课程设计要提前复习即将用到的知识,避免在工作需要时才临时抱佛脚。7.2 韩明昆感想:本次计控课程设计使我对计算机控制技术的相关知识有了新的理解.一来巩固了上课所学的计控知识,二来拓宽了我的视野 ,学到了许多新的东西。在课程设计开始的阶段,我用老师给的硬
16、件连接图将各个部件焊在板子上,很久没有焊东西了,这次忽然又焊起来又费了不少劲。通过以前学习的知识,我知道有的地方李杰峰、韩明昆、陆明、吴婧楠-烤箱温度控制系统的设计7可以从背面连接到一起,这样可以省很多没有必要的线,也少了布线的烦恼。然后我们就按原理图上将各个部件一一焊好,焊好后用万用表测试了各个连接点,没有出现错误短路的地方,也就完成了前期工作。然后我们开始编制程序。由于我的编程能力有限,所以对于编程方面我做的很少。起初,我们觉得电烤箱的思路很简单,就是一个测试温度。看是否达到目标温度,然后送1,送 0 就可以了。但实际编制的时候,才发现其实里面的问题也还是很复杂的。首先,要输入目标温度,但
17、通过板子接 AD574 转化过来的是一个 12 位的二进制数,最大值 FFF是 4000 多,这跟我们输入的三位数之间有个换算关系 ,经过我们计算,应该是三位数*13.6,但这时又不知道小数的乘法该怎么做,后来想到可以先乘 136,然后再除以 10,就可以得到相应的目标数据。然后还碰到了很多问题,都一一化解了。最后通过通力协作,我们按要求实现了基本功能,本次课程设计算是做完了。通过这次课程设计。使我了对计控知识的了解又有了新的认识。最大的收获就是通过团队合作,每人完成相应的程序模块,然后将各个模块合在一起,这是以后进入社会,工作中会遇到的实际问题,这也算是增长了一次实践经验吧。团队合作是这次课
18、程设计让我体会最深的,如果让一个人来完成这么庞大的程序,我估计没几个人做的出来。所以,以后一定要加强这方面的锻炼,还有一点体会就是编程这方面最重要的就是仔细,有时候一个标号弄错了,要费很大的劲去找,所以细心也非常重要。这也是大学最后一次团队合作的课程设计了,我们大家相处的也很融洽,总之这次课程设计让我收获颇丰。7.3 陆明感想这次的课程设计我们小组总算是顺利地完成了。虽然只有短短一个星期,但让我真正见识到了什么是团队的力量。从接到此次课程设计任务开始,大家就分配好了各自的任务,并且经常聚在一起各抒己见地讨论各个方案的可行性,气氛那是十分的热烈。在我们小组中也许有的同学能力强些,有些同学能力没那
19、么强,分工时能力强的同学可能任务就重些,但是大家都没有任何的怨言,全力地专注于自己的那一部分任务,所以团结协作是我们小组能顺利完成此次课程设计的一项非常重要的保证,而这次设计也正好锻炼我们这一点,这也是非常宝贵的。我们这次是设计对烤箱温度控制系统,对于温度的控制系统,我们需要完成温度的采集,温度的控制,能通过键盘,显示接口实现恒温时间设置,系统初始参数设置,报警设置等功能,并能通过不同的声音提示恒温开始和结束时间。我们一起讨论,一起研究,经过几番努力,初步编出的程序,问题很多,也总找不到原因,然后参考书上的例题程序,修改了很多,有些问题是子程序与主程序的连接没弄好,还是很多问题,然后仔细复习书
20、上所学过的知识,对我们的程序再次发现问题,修改问题,后来经过多次的修改最终完成了初步的可行性程序,也算一个进步。在调试过程中又遇到李杰峰、韩明昆、陆明、吴婧楠-烤箱温度控制系统的设计8了烤箱失灵等各种客观问题,但最终在老师的协作以及我们自身的努力下,都将这些困难一一克服并得到了比较理想的结果。在这次设计中,我主要负责的是显示及声音部分,就是程序刚开始的时候有关显示界面,刚开始的时候还是出现很多问题,显示程序的编写,在同学的帮助以及参考书上的一些程序后,初步完成了这段程序,然后经过组长的多次修改,完成了这部分的编写。经过这个部分的编写,让自己明白了很多,课堂上学的东西远远不够,还是需要自己课后的
21、更多的付出和复习,才能让自己所学的东西学以致用,才能让书上的知识变成自己的,也才能让自己变得更加充实,学得更多。最后顺利地完成了课程设计,大家心情都很喜悦,虽然过程有点累,但是看到努力后的成果,还是很欣慰。总的来说,通过历时一个星期的课程设计,发现了自己的很多不足,以及自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理 论联系实际的能力还急需提高。经过这个课程设计,同时也证明一个团队的力量比一个人的力量大得多,完成一个复杂的问题效率也会高很多,我自己也从此次课程设计中学到了很多东西,实在是令我受益匪浅。7.4 吴婧楠感想:这次课程设计让我体会到了团队的温暖。由于我将要参加研究生入学考试,
22、所以精力大都放到复习考研上面去了。但是我的团队给了最大的包容和理解,让我负责了较为轻松的程序界面和提示语程序编写。这已经不是第一次团队合作做课程设计了,但是这次让我最为记忆犹新。本次课程设计我们小组做的是烤箱,我的主要工作是程序界面和提示语程序编写。通过此次课程设计,总的来说收获还是挺大的。我的工作是参与了部分子程序的编写,主要有用 AD574 检测温度的程序、加热程序(分为 100%加热、80%加热、 50%加热、20% 加热)、恒温延时的编写。在编写程序之前我先复习了下硬件书,检测温度的程序主要就是 AD 转换的程序,先选通道,再启动转换并检测转换是否结束,结束后将得到的结果保存起来,在参
23、考了硬件实验书上的程序的情况下,程序很快就正确编完了。加热程序是通过 8255 的A0 口输出 1 或 0 来实现的,如 50%加热就是在前半周期时间内 A0 送 1,后半周期内A0 口送 1。恒温延时程序的主要思想就是先设定一个标志,此标志的值等于设定的恒温时间(以分为单位)乘以 60 除以 2(恒温程序的周期),然后再设定另一个标志,初始值为 0,接着在每次进入恒温程序时自加 1,就可以通过判断是否等于第一个值来判断来判断延时是否完成。就在三四天的时间内,大家就把整个课程设计完成了,虽然大家都有点累,但更多的是兴奋。李杰峰、韩明昆、陆明、吴婧楠-烤箱温度控制系统的设计9总的来说,这次课程设
24、计历时一个星期,通过课程设计,发现自己的很多不足,自己知识的很多漏洞,看到了自己的实践经验还是比较缺乏,理论联系实际的能力还急需提高。经过这个课程设计,也可以证明一个团队的力量比一个人的力量大得多,也可以从中体会到,完成一个复杂的问题效率高很多,我自己也从中学到了很多以前懂的东西,这是实践与理论的结合,也为以后打下基础。1附录1.系统框图2.电路原理图+ 1 2 V- 1 2 V2 0 K 电位器O a b _ 3 p1 K1 0 0 电位器 1 0 0 K5 . 1 K5 . 1 K1 K1 0 KP T 1 0 02 1 2 . 0 2电烤箱8255APt100 Pt100 变送器AD57
25、4JK 实验板PCPCI 总线李杰峰、韩明昆、陆明、吴婧楠-烤箱温度控制系统的设计23.各模块程序流程图3.1 主程序流程图 开始定时中断初始化8255 初始化显示室温设置提示信息设置室温子程序显示温度设置提示信息设置室温度程序显示时间设置提示信息设置时间子程序定时结束否?N读温度子程序实时显示刷新子程序转换当前温度子程序比较温度子程序根据温度选择加热占空比结束音乐子程序Y李杰峰、韩明昆、陆明、吴婧楠-烤箱温度控制系统的设计33.2 设定温度/时间/室温流程图NY输入一个目标温度的三位数值,将其存入 Stemp 单元SI 指向 stemp 单元的第一个数设置循环次数 CX=3将 SI 指向单元
26、的数据转化为 BCD 码(即-30)SI+13 次到否将 BCD 码存入 DI 指向的 STEMPBCD 单元中DI+1RET 返回李杰峰、韩明昆、陆明、吴婧楠-烤箱温度控制系统的设计43.3 读取当前温度子程序开始选择通道0延时给 /RC送负脉冲,启动转换检测 STS 是否为 1读高 8 位,将结果存入AH读低 4 位,屏蔽低 4 位,将结果存入 AL将 AX 右移 4 位并将结果存入 CTEMP,即得到当前温度子程序结束是否李杰峰、韩明昆、陆明、吴婧楠-烤箱温度控制系统的设计53.4 温度比较和标志位改变子程序N NNN开始将设定温度的 BCD 码转换为 16 进制将当前温度采样值除以斜率
27、比较当前温度和设定温度值,得到差值8?3?15?30? 温度标志设为 01温度标志设为 03温度标志设为 04温度标志设为 02温度标志设为 FF结束返回YYYY李杰峰、韩明昆、陆明、吴婧楠-烤箱温度控制系统的设计63.5 加热子程序(以占空比 20%为例)开始启动加热设置 CX=2延时 200msCX 自减 1判断 CX 是否为 0关加热设置 CX=8延时 200msCX 自减 1判断 CX 是否为 0子程序结束NYYN李杰峰、韩明昆、陆明、吴婧楠-烤箱温度控制系统的设计73.6 发声子程序设置发声频率,即 16 位计数初值,存入 AX 中压栈,将 AX 中的数据保护起来8254 定时器 2
28、 为方式 3,先低后高写 16 位计数值弹栈 将 AX 中的数据取出将低八位计数值写入42H将高八位计数值写入42H返回读取 61H 端口的原控制信息D1D0=PB1PB0=11B,其他位不变直接控制发声返回读取 61H 端口的原控制信息D1D0=PB1PB0=00B 其他位不变直接控制闭音返回李杰峰、韩明昆、陆明、吴婧楠-烤箱温度控制系统的设计83.7 屏幕实时显示子程序开始调用 02 号 DOS 中断显示空格指针指向显缓区将 BCD 码转换为 ASCII 码依次调用 02 号 DOS 中断显示显缓区内容显示 CR,将光标移动到显示区首位结束返回李杰峰、韩明昆、陆明、吴婧楠-烤箱温度控制系统
29、的设计94.程序源代码DATA SEGMENTAD574H EQU 200HAD574L EQU 201HAD574S EQU 205HKEEP_CS DW ?KEEP_IP DW ?COUNT_TIME DW 00H ;中断计数器SETTIME DB 4DB 0DB 4 DUP (?)SETTIMEBCD DW ?,?,?x_p dw 10SETROOM DB 4DB 0DB 4 DUP(?)SETROOMBCD DW ?,?,? STEMP DB 4DB 0DB 4 DUP(?)STEMPBCD DW ?,?,? STEMP16 DW ?CTEMP DW ?CTEMP16 DW ?CTEM
30、PBCD DB ?,?,?,27H,C,$ CHAZHI DW ?DELAYLOGO DW ? TIMECOUNT DW 0 HEATFLAG DB ?MUSICFLAG DB 0 MSG1 DB 0AH,0DH,Room temperature:,$ MSG2 DB 0AH,0DH,Desired temperature:,$ MSG3 DB 0AH,0DH,The time:,$ MSG4 DB 0AH,0DH,Current Temperature:,0AH,0DH,$ MSG5 DB 0AH,0DH,Press R to RESET the temperature,0ah,0dh DB
31、 Press Q to EXIT,$ DATA ENDS;-STCK SEGMENT PARA STACK STACKDB 256 DUP(0)STCK ENDS;-CODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATA,SS:STCK START:PUSH DSMOV AX,0 PUSH AXMOV AX,DATA MOV DS,AX CLI ;中断向量的设置及 8259 初始化MOV AL,1CH MOV AH,35H INT 21HMOV KEEP_CS,CS MOV KEEP_IP,BX MOV AL,1CH MOV AH,25H MOV DX,
32、SEG TIMER MOV DS,DX MOV DX,OFFSETTIMER INT 21HMOV AX,DATA MOV DS,AX MOV AL,36H OUT 43H,AL MOV AX,59660D OUT 40H,AL MOV AL,AH李杰峰、韩明昆、陆明、吴婧楠-烤箱温度控制系统的设计1jmp p_1start_1: jmp startp_1: OUT 40H,AL IN AL,21H AND AL,0FCH OUT 21H,AL ;-8255 初始化-MOV DX,20BH MOV AL,80H OUT DX,ALcall tt LEA DX,MSG1 MOV AH,09H I
33、NT 21HCALL SETROMLEA DX,MSG2 MOV AH,09H INT 21H CALL SETEMPLEA DX,MSG3 MOV AH,09H INT 21H CALL SETIMELEA DX,MSG5 MOV AH,09H INT 21HLEA DX,MSG4 mov ah,09h int 21hMAINAGAIN:MOV AH,01H INT 16HJZ GOON2MOV AH,0 INT 16HCMP AL,R JZ START_1 CMP AL,r JZ START_1 CMP AL,Q JZ EXITMAIN_1 CMP AL,q JZ EXITMAIN_1 G
34、OON2: CALL TRANSTIME LEA SI,TIMECOUNT MOV AL,SI MOV BL,AL LEA SI,DELAYLOGOjmp mm_1start_2: jmp startmm_1: MOV AL,SI CMP AL,BL JBE ENDMUSIC CALL TRANSCTEMPCALL DISPcall pointjmp pp_1exitmain_1:jmp exitmainpp_1: CALL READTEMPCALL CMPTEMPMOV AH,01H INT 16HJZ GOON1MOV AH,0 INT 16HCMP AL,R JZ START_2 CMP
35、 AL,r JZ START_2 CMP AL,Q JZ EXITMAINCMP AL,q JZ EXITMAINGOON1: CMP HEATFLAG,01H JZ H100CMP HEATFLAG,02H JZ H80CMP HEATFLAG,03H 李杰峰、韩明昆、陆明、吴婧楠-烤箱温度控制系统的设计2JZ H50CMP HEATFLAG,04H JZ H20CMP HEATFLAG,0FFH JZ HOKH100: CALL HEAT100JMP MAINAGAINH80: CALL HEAT80JMP MAINAGAINH50: CALL HEAT50JMP MAINAGAINH20
36、: CALL HEAT20JMP MAINAGAINHOK: CALL HEATOKJMP MAINAGAINENDMUSIC: MOV AL,00H MOV DX,20AH OUT DX,AL ; MOV CX,4D MUSICEND1:PUSH CXCALL SPEAKONMOV CX,5 SP4: CALL DELAY_1LOOP SP4NOPNOPCALL SPEAKOFFMOV CX,5 SP5: CALL DELAY_1 LOOP SP5POP CXLOOP MUSICEND1 JMP STARTEXITMAIN: RETMAIN ENDP;-SETEMP PROC NEARLEA
37、 DX,STEMP MOV AH,0AH INT 21HLEA SI,STEMP ADD SI,2 LEA DI,STEMPBCD MOV CX,3 TRANSBCD:MOV AL,SI XOR AH,AH SUB AX,30H MOV DI,AX INC SIINC DIINC DILOOP TRANSBCDRETSETEMP ENDP;-SET TIME-SETIME PROC NEARLEA DX,SETTIME MOV AH,0AH INT 21HLEA SI,SETTIME ADD SI,2 LEA DI,SETTIMEBCD MOV CX,3 TRANSBCD2:MOV AL,SI
38、 XOR AH,AH SUB AX,30H MOV DI,AX INC SIINC DIINC DILOOP TRANSBCD2RETSETIME ENDP;-SET ROOM TEMPERATURE-SETROM PROC NEARLEA DX,SETROOM 李杰峰、韩明昆、陆明、吴婧楠-烤箱温度控制系统的设计3MOV AH,0AH INT 21HLEA SI,SETROOM ADD SI,2 LEA DI,SETROOMBCD MOV CX,3 TRANSBCD3:MOV AL,SI XOR AH,AH SUB AX,30H MOV DI,AX INC SIINC DIINC DILOO
39、P TRANSBCD3RETSETROM ENDP;-读取当前温度 -READTEMP PROC NEARMOV DX,AD574S MOV AL,40H OUT DX,AL MOV CX,100H LP1: LOOP LP1MOV AL,00H OUT DX,AL MOV CX,10 LP2: LOOP LP2MOV AL,40H OUT DX,AL MOV DX,AD574L LP3: IN AL,DX TEST AL,01H JNZ LP3MOV DX,AD574H IN AL,DX MOV AH,AL INC DXIN AL,DX AND AL,0F0H ROR AX,4 MOV CT
40、EMP,AX RETREADTEMP ENDP;-比较当前温度和设定温度子程序-CMPTEMP PROC NEAR;-BCD16-LEA SI,STEMPBCD MOV AX,0000H ADD AX,SI MOV BX,0AH MUL BXADD AX,SI+2 MUL BXADD AX,SI+4 MOV STEMP16,AX ;-CTEMP TRANS-MOV AX,CTEMP MOV BX,0AH MUL BXMOV BX,88H DIV BXMOV CTEMP16,AX ;-COMPARE-MOV BX,STEMP16 SUB BX,AX MOV CHAZHI,BX ;-根据差值设定加
41、热标志-CMP CHAZHI,50D JG SETFLAG1CMP CHAZHI,30D JG SETFLAG2CMP CHAZHI,15D JG SETFLAG3CMP CHAZHI,4D JG SETFLAG4JMP SETFLAGOKSETFLAG1: MOV HEATFLAG,01H JMP CMPEXITSETFLAG2: MOV HEATFLAG,02H JMP CMPEXITSETFLAG3: MOV HEATFLAG,03H 李杰峰、韩明昆、陆明、吴婧楠-烤箱温度控制系统的设计4JMP CMPEXITSETFLAG4: MOV HEATFLAG,04H JMP CMPEXITS
42、ETFLAGOK:MOV HEATFLAG,0FFH CMPEXIT: RETCMPTEMP ENDP;-加热子程序-HEAT100 PROC NEARMOV DX,20AH MOV AL,01H OUT DX,AL MOV CX,10 NEXT1:CALL DELAY_1LOOP NEXT1RETHEAT100 ENDPHEAT80 PROC NEARMOV DX,20AH MOV AL,01H OUT DX,AL MOV CX,8 NEXT2:CALL DELAY_1LOOP NEXT2MOV AL,00H OUT DX,AL MOV CX,2 NEXT3: CALL DELAY_1LOO
43、P NEXT3RETHEAT80 ENDPHEAT50 PROC NEARMOV DX,20AH MOV AL,01H OUT DX,AL MOV CX,5 NEXT4: CALL DELAY_1LOOP NEXT4MOV AL,00H OUT DX,AL MOV CX,5 NEXT5: CALL DELAY_1LOOP NEXT5RETHEAT50 ENDPHEAT20 PROC NEARMOV DX,20AH MOV AL,01H OUT DX,AL MOV CX,2 NEXT6: CALL DELAY_1LOOP NEXT6MOV AL,00H OUT DX,AL MOV CX,8 NE
44、XT7: CALL DELAY_1LOOP NEXT7RETHEAT20 ENDPHEATOK PROC NEARLEA SI,TIMECOUNT MOV AX,SI INC AXMOV SI,AX CMP MUSICFLAG,01H JZ SPK1MOV MUSICFLAG,01H CALL SPEAKERMOV CX,3D SP1:CALL SPEAKONPUSH CXMOV CX,3D SP2: CALL DELAY_1LOOP SP2NOPNOPMOV CX,3D CALL SPEAKOFF李杰峰、韩明昆、陆明、吴婧楠-烤箱温度控制系统的设计5SP3: CALL DELAY_1LOOP
45、 SP3POP CXLOOP SP1SPK1: MOV DX,20AH MOV AL,00H OUT DX,AL MOV CX,10 NEXT8: CALL DELAY_1LOOP NEXT8RETHEATOK ENDPSPEAKER PROC NEARMOV AX,1208D PUSH AXMOV AL,0B6H OUT 43H,AL POP AXOUT 42H,AL MOV AL,AH OUT 42H,AL RETSPEAKER ENDPSPEAKON PROC NEARPUSH AXIN AL,61H OR AL,03H OUT 61H,AL POP AXRETSPEAKON ENDPS
46、PEAKOFF PROC NEARPUSH AXIN AL,61H AND AL,0FCH OUT 61H,AL POP AXRETSPEAKOFF ENDP;-延时程序-DELAY_1 proc nearMOV COUNT_TIME,0D STIDL1: CMP COUNT_TIME,1D JL DL1CLIRETDELAY_1 endp ;-显示-DISP PROC NEARPUSH BXPUSH SIPUSH DIL1: MOV DL,20H MOV AH,02H INT 21HLEA SI,CTEMPBCD MOV BL,SI ADD BL,30H MOV DL,BL MOV AH,0
47、2H INT 21HINC SIMOV BL,SI ADD BL,30H MOV DL,BL MOV AH,02H INT 21HINC SIMOV BL,SI ADD BL,30H MOV DL,BL MOV AH,02H INT 21HMOV DL,43H 李杰峰、韩明昆、陆明、吴婧楠-烤箱温度控制系统的设计6MOV AH,02H INT 21HMOV DL,0DH MOV AH,02H INT 21HPOP DIPOP SIPOP BXRETDISP ENDP;-TRANSCTEMP-TRANSCTEMP PROC NEARMOV AX,CTEMP16 LEA SI,CTEMPBCD MOV BL,100D DIV BLMOV SI,AL INC SIMOV AL,AH XOR AH,AH MOV BL,10D DIV BLMOV SI,AL INC SIMOV SI,AH RETTRANSCTEMP ENDP;-TRANSTIME-TRANSTIME PROC NEARLEA SI,SETTIMEBCD MOV AX,0000H ADD AX,SI MOV BX,0AH MUL BXADD AX,SI+2 MOV BX,30D MUL BXLEA SI,DELAYLOGO MO