1、毕业设计论文作者 学号 系部 专业 题目 恒温控制电路的设计 指导教师 评阅教师 完成时间: 年 月 日 题目:恒温控制电路的设计摘要:本设计采用AT89C51单片机为核心部件,采用单总线型数字式的温度传感器DS18B20作为温度采集设计制作了带键盘输入控制,动态显示和越限报警功能的恒温控制系统。该系统既可以对当前温度进行实时显示,又可以对温度进行控制,并使其恒定在某一温度范围。控制按键设计时设置温度简单快捷,两位整数一位小数的显示方式具有更高的显示精度。通过对系统软件的合理规划,发挥单片机自身集成多系统功能单元的优势,在不减少功能的前提下有效降低了成本,系统操作简单。关键词: AT89C51
2、 单片机 恒温控制 DS18B20 精度 毕业论文外文摘要2毕业论文外文摘要Title:The constant temperature control circuit design Abstract: This design uses an AT89C51 microcontroller as the core components, the use of single-bus digital temperature sensor DS18B20 which uses keyboard input control as a temperature collections device. It
3、s an thermostat controlling system that has the ability to dynamically display temperature and function as off-limit alarm. The system can not only display real-time temperature but also keep the temperature staying in a constant region. Its very easy and fast to use the button to set the system tem
4、perature. Displaying two integer and a decimal makes the system even accurate.Through wise system software usage, we can bring the microcontrollers integration of multi-system functional units into full play, reduce system cost effectively without losing useful functions. The system is easy to opera
5、te.Keyword: AT89C51 MCU Microcomputer temperature control DS18B20 Precision目录1 引言11.1 课题背景11.2 国内外恒温控制技术发展及趋势11.3 设计任务21.3.1设计目的21.3.2 系统设计技术指标21.3.3 系统功能22 恒温控制系统总体方案设计32.1 PID算法控制方案32.2 恒温控制系统工作原理43 恒温控制系统硬件设计43.1 主控模块53.1.1 AT89C51单片机简介53.1.2 晶振电路与复位电路的设计53.2 温度采集模块63.2.1 DS18B20的特点63.2.2 DS18B2O
6、内部结构63.3 按键输入电路73.4 继电器模块83.4.1 固态继电器SSR工作原理83.5 显示模块94 恒温控制系统软件设计94.1 工作流程104.2 程序模块104.2.1 主程序104.2.2 温度传感器驱动子程序104.2.3 键盘扫描处理程序124.2.4 温度检测与控制子程序124.2.5 温度显示子程序124.3 软件调试124.4 软硬调试14结束语15致谢16参考文献17附录一 硬件电路18附录二 软件程序191 引言1.1 课题背景温度是表征物体冷热程度的物理量。在很多生产过程中,特别是在冶金、化工、建材、食品、机械、石油等工业中,温度的测量和控制都直接和安全生产、
7、提高生产效率、保证产品质量、节约能源等重大技术经济指标相联系。因此,温度的测量与控制在国民经济各个领域中均受到了相当程度的重视。而恒温控制系统被广泛用于加热炉、热处理炉、反应炉等。在一些温控系统电路中,广泛采用的是通过热电偶、热电阻或PN结测温电路经过相应的信号调理电路,转换成A/D转换器能接收的模拟量,在经过采样/保持电路进行A/D转换,最终送入单片机及其相应的外围电路,完成监控。但是由于传统的信号调理电路实现复杂、易受干扰、不易控制且精度不高。本文介绍单片机通过数字温度传感器检测外部温度对恒温箱进行恒温控制的设计,采用PID算法来控制PWM波形的产生,进而控制电炉的加热来实现恒温控制。因此
8、,本系统采用一种可编程温度传感器(DS18B20),不需复杂的信号处理电路和A/D转换电路就能直接与单片机完成数据采集和处理,实现方便、精度高,可根据不同需要用于各种场合。在日常生活中,也经常用到电烤箱、微波炉、电热水器、烘干箱等需要进行温度检测与控制的家用电器。采用单片机实现温度控制不仅具有控制方便、简单、灵活等优点,而且可以大幅度地提高被控温度的技术指标,从而大大提高产品的质量,现以恒温控制系统的设计进行介绍。1.2 国内外恒温控制技术发展及趋势随着计算机控制技术的发展,恒温控制已经在工业生产领域中得到了广泛应用,并取得了巨大的经济和社会效益。在不同领域内,由于控制环境、目标、成本等因素,
9、需要针对具体情况来设计系统结构和功能,已取得最佳的控制效果。其中,恒温环境的自动化控制技术在工业、商业运营中是一个重要的研究课题。 1 1.3 设计任务1.3.1设计目的设计一个恒温自动调节控制系统,温度可以在一定范围内由人工设定,并能在环境温度降低时实现自动调节,以保持与设定的温度基本不变。利用单片机AT89C51实现温度的智能控制,使温度能够在设定温度实现恒定温度调节,利用数字温度传感器读出实际温度,并在此基础上实现温度调节到通过键盘设定的温度(其方式是加热或降温),并通过数码显示器实现当前温度与设定温度显示。1.3.2 系统设计技术指标设计的恒温控制系统的技术指标:(1)预置时显示设定温
10、度,达到设定温度时显示实时温度,显示精确到1;(2)恒温箱温度可预置,在误差范围内恒温控制,温度控制误差1;(3)恒温系统由1KW电炉加热;(4)启动后有运行指示,温度低于预置温度5时进行220V全加热;(5)具有相应的保护功能。1.3.3 系统功能(1)可以对温度进行自由设定,但必须在0100内,设定时可以实时显示出设定的温度值。(2)加热由1台1KW电炉来实现,如果温度不在设定温度时,根据设定的温度值与实际检测的温度值之差来采取不同的加热方式。(3)能够保持实时显示温度,显示位数4位,分别为百位、十位、个位和小数位。(但由于规定不超过90度,所以百位也就没有实现,默认的百位是不显示的。)2
11、 恒温控制系统总体方案设计2.1 PID算法控制方案 此方案采用单片机为控制核心的控制系统,尤其对温度控制,它可达到核心的控制作用,并且可方便实现数码显示、键盘设定及利用PID算法来控制PWM波形的产生,进而控制电炉的加热来实现恒温控制,其所测结果精度也大大的得到了提高,在利用PID算法来控制PWM波形的产生,是有效的控制数字脉冲的输出宽度,使固态继电器得到有效和有序的逻辑控制,不会使固态继电器产生误动作。因此利用PWM技术进行脉宽调制的优点是:(1)从处理器到被控系统信号都是数字形式的,无需进行数模转换。(2)让信号保持为数字形式可将噪声影响降到最小,并且噪声只有在强到足以将逻辑“1”改变为
12、逻辑“0”或将逻辑“O ”改变为逻辑“1”时,才能对数字信号产生影响。(3)对噪声抵抗能力的增强也是PWM相对于模拟控制的另外一个优点,而且这也是在某些时候将PWM用于通信的主要原因。(4) PWM经济、节约空间、抗噪性能强,是一种值得广大工程师在许多设计应用中使用的有效技术。再加上单片机的软件编程灵活、自由度大,可用软件编程实现各种控制算法和逻辑控制。它可以通过用数字温度传感器采集到的实际水温温度直接进行数码管显示,还能用键盘输入设定值,并且内部含有4KB的EEPROM,不需要外扩展存储器,可使系统整体结构更为简单。其方案框图如图2.1所示。 单片机键盘设定复位电路 LED数码显示加热装置固
13、态继电器数字PID调整数据采集电源电路路图2.1 单片机控制的方框图PID算法控制方案是采用单片机为控制核心的控制系统,利用PID控制原理和PWM技术实现对温度的控制。基于这样的控制原理和PWM技术的优越性,在对温度控制的系统中,它可达到采用其他控制系统所达不到的控制效果,并且可方便实现数码实时显示、键盘设定、直接可以驱动固态继电器,其测量结果的准确性和精度是非常高的,利用单片机按增量式的PID控制算法对采集的温度数据进行处理,得到控制量,利用增量式的PID控制算法来控制PWM波形的产生进行控制固态继电器,从而达到控制电炉的功率进行加热,实现对温度的恒温控制。2.2 恒温控制系统工作原理现对该
14、方案的具体原理进行详细介绍,其具体控制图如图2.2所示。驱动电路按键输入LED显示继电器控制电路 电炉AT89C51数字PID智能温度传感器DS18B20图 2.2 恒温控制原理图 系统通过数字温度传感器检测温度,把采集到的数据直接送到单片机进行处理,由于数字式温度传感器能在极短时间内把采集到的模拟量转换成数字量,这样被它处理的数据直接送到数字PID模块进行调整。然后,把检测到的数据与预先设定的温度值进行比较,根据不同的差值去控制固态继电器的通断,以采取不同的加热方式进行加热升温。另外,还设置了温度实时显示的装置,可以同时显示预先设定的温度值和实际检测到的温度值。3 恒温控制系统硬件设计 恒温
15、控制系统主要由六部分组成:主控制模块、键盘处理模块、温度采集模块、继电器控制模块及LED显示模块。3.1 主控模块 主控制模块采用AT89C51芯片,把数字温度传感器采集到的温度信号与原预先设定值进行比较,然后根据其差值通过PID调节整定,控制继电器的通断进行不同加热方式,能用键盘进行输入数据的处理以及温度信号的实时显示。3.1.1 AT89C51单片机简介 AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,俗称单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输
16、出管脚相兼容。由于将多功能8位CPU和闪速存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。3.1.2 晶振电路与复位电路的设计 单片机内部带有时钟电路,只需要在片外通过XTAL1和XTAL2引脚接入定时控制单元(晶体振荡和电容),即可构成一个稳定的自激振荡器。振荡器的工作频率一般在1.212MHz之间,当然在一般情况下频率越快越好,可以保证程序运行速度即保证了控制的实时性。一般采用石英晶振作定时控制元件,在不需要高精度参考时钟时,也可以用电感代替晶振,有时也可以引入外部时钟脉冲信号。接在晶振上的电容虽
17、然没有严格要求,但电容的大小会影响振荡器的稳定性和起振的快速性。因此,通常选择在1030pF左右,在此次设计时钟电路时,晶振频率选用(12MHz),电容选用(20pF),并且它们应尽可能靠近芯片,以减小分布电容,保证振荡器振荡的稳定性。 复位电路采用按键电平复位,它通过复位端经电阻与+5V电源实现,只要能保证复位信号高电平持续时间大于2个机器周期就可实现复位,其时钟电路和复位电路如图3.1所示。 图3.1 时钟电路和复位电路3.2 温度采集模块 由于在传统的模拟信号远距离温度测量系统中,需要很好的解决引线误差补偿问题、多点测量切换误差问题和放大电路零点漂移误差问题等技术问题,才能够达到较高的测
18、量精度。而且一般监控现场的电磁环境都非常恶劣,各种干扰信号较强,模拟温度信号容易受到干扰而产生测量误差,影响测量精度。因此,在本设计中的温度测量系统中,采用DS18B20温度芯片对测量温度进行采集温度数据,并且由于它抗干扰能力强,是解决这些问题的最有效方案。3.2.1 DS18B20的特点 美国Dallas半导体公司的数字化温度传感器DS1820是世界上第一片支持“一线总线”接口的温度传感器,在其内部使用了在板(ON-BOARD)专利技术。在传统的模拟信号远距离温度测量系统中,需要很好的解决引线误差补偿问题、多点测量切换误差问题和放人电路零点漂移误差问题等技术问题,才能够达到较高的测量精度。另
19、外一般监控现场的电磁环境都非常恶劣,各种干扰信号较强,模拟温度信号容易受到干扰而产生测量误差,影响测量精度。因此,在温度测量系统中,采用抗干扰能力强的DS18B20是解决这些问题的最有效方案。3.2.2 DS18B2O内部结构 主要由4部分组成:64位光刻ROM,温度传感器、非易失性的温度报警触发器TH和TL、配置寄存器,DS18B2O的内部结构图如图3.2所示。64位ROM和单线接口电源检测存储器和控制器高速缓存存储器8位CRC生成器温度灵敏元件低温触发器TL高温触发器TH配置寄存器图3.2 DS18B20内部结构图3.3 按键输入电路 按键电路运行分析: 当系统通电正常运行时,系统每一秒钟
20、就对按键电路扫描一次,扫描结束后,将扫描的结果送至系统中进行校验,如果有按键按下,在进行其相关操作。开始是是否K1键按下否是上调子程序 是否K2键按下否下调子程序 数码显示 返回主程序同时,在DS18B20里面的存储数据也会改变,进行温度的调整。其流程图如3.3所示: 图3.3 键盘扫描处理流程图3.4 继电器模块3.4.1 固态继电器SSR工作原理 本系统采用固态继电器进行控制,它的控制原理是:固态继电器只有两个输入端(“+”和“-”)及两个输出端,是一种四端器件。工作时只要在“+”、“-”上加上一定的控制信号,就可以控制输出两端之间的“通”和“断”,实现“开关”的功能,其中耦合电路的功能是
21、为“+”、“-”端输入的控制信号提供一个输入/输出端之间的通道,但又在电气上断开SSR中输入端和输出端之间的(电)联系,以防止输出端对输入端的影响,耦合电路用的元件是“光耦合器”,它动作灵敏、响应速度高、输入/输出端间的绝缘(耐压)等级高;由于输入端的负载是发光二极管,这使固态继电器的输入端很容易做到与输入信号电平相匹配,在使用可直接与计算机输出接口相接,即受“1”与“0”的逻辑电平控制。触发电路的功能是产生合乎要求的触发信号,驱动开关电路工作,但由于开关电路在不加特殊控制电路时,将产生射频干扰并以高次谐波或尖峰等污染电网,为此特设“过零控制电路”。所谓“过零”是指,当加入控制信号,交流电压过
22、零时,固态继电器即为通态;而当断开控制信号后,固态继电器要等待交流电的正半周与负半周的交界点(零电位)时,固态继电器才为断态。这种设计能防止高次谐波的干扰和对电网的污染。吸收电路是为防止从电源中传来的尖峰、浪涌(电压)对开关器件双向可控硅管的冲击和干扰(甚至误动作)而设计的,一般是用“R-C”串联吸收电路或非线性电阻(压敏电阻器)。其内部结构图如图3.4所示。图3.4 继电器内部结构图3.5 显示模块 用单片机驱动LED数码管有很多方法,按显示方式分,有静态显示和动态(扫描)显示,按译码方式可分硬件译码和软件译码之分。静态显示数据稳定,使用的硬件较多。动态显示需要CPU时刻对显示器件进行数据刷
23、新,显示数据有闪烁感,占用的CPU时间多。这两种显示方式各有利弊:静态显示虽然数据稳定,占用很少的CPU时间,但每个显示单元都需要单独的显示驱动电路,动态显示虽然有闪烁感,占用的CPU时间多,但使用的硬件少,能节省线路板空间。使用单片机系统串行输出,利用其串/并转换功能,送入数码管显示。基本的半导体数码管是有7个条状发光二极管芯片排列而成的,也称为七段数码显示器,可实现09, AF以及H、P的显示。从各发光电极连接方式分为共阳极和共阴极两种。共阳极是指笔画显示器各段发光管的阳极(即P区)是公共的,而阴极互相隔离。共阴极型是笔画显示器各段发光管的阴极(即N区)是公共的,而阳极是互相隔离的,共阴极
24、LED数码管的ag及小数点位dp八个发光二极管加阳极加高电平(“1”)发亮,加低电平(“0”)发暗,而共阳极的LED的数码管的a及小数点位dp八个发光二极管正好相反。 本电路采用共阳极数码管LG5641A进行动态显示,LG5641A具有四位数码管,这四个数码管的段选a, b, c, d, e, f, g分别接在一起,每一个都拥有一个共阳的位选端,通过动态显示可轮流显示设置温度与测量温度,这有利于节省I/O口。用P2. OP2.7口作为位选控制,P0.0PO. 7口传输要显示的数据,数据线和位选线直接接AT89C51单片机的I/O口即可,因为I/O口输出电流很小并且加上了上拉电阻,这样可以对LE
25、D进行驱动,它的电压值足以驱动LED。4 恒温控制系统软件设计 对单片机控制的软件设计是系统设计任务中的重点和难点。因此,本章在建立系统各部分软件流程的基础上,设计了各部分的软件控制流程。由于系统的操作过程和工作过程在程序设计的过程中起着很重要的指导作用,因此在软件设计之前应分析加热炉的工作流程。4.1 工作流程 当上电复位后电阻丝处于停止加热状态,但也可以直接启动运行。运行过程中,系统不断检测当前温度,并送往显示器显示,达到预定值后停止加热;当温度下降到下限(比预定值低)时再启动加热。这样不断地重复上述过程,使温度保持在预定温度范围之内。运行过程中也可以随时改变设定温度,温度设定好后随即生效
26、,系统按新的设定温度运行。4.2 程序模块 系统软件由主程序、键盘输入子程序、设定温度子程序、温度检测子程序、温度控制子程序和显示子程序组成。4.2.1 主程序主程序完成系统的初始化,调用温度模块程序,对其预置值及其合法性进行检查,预置温度的显示,调用键盘扫描模块等。若正常执行完三个子程序,则返回初始化进入到其它的状态,主程序的流程图如图4.1所示。4.2.2 温度传感器驱动子程序 根据DS18B20的通讯协议,单片机控制DS18B20完成温度转换必须经过三个步骤:每次读写之前都要对DS18B20进行复位,复位成功后再发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操
27、作。复位要求单片机将数据线下拉500us,然后释放,DS18B20收到信号后等待1660us左右,再发出60240us的存在低脉冲,CPU收到此信号表示复位成功。 ROM命令完成单片机与总线上的某一DS18B20建立联系,有搜寻ROM、读ROM,匹配ROM、忽略ROM、报警查找等命令。这里,单片机只连接1个DS18B20,因此只使用读ROM命令来读取DS18B20的48位ID号。所以,本系统对DS18B20进行的操作主要包括两个子过程:(1) 读取DS18B20的序列号。主机首先发一复位脉冲,等收到返回的存在脉冲后,发出搜索器件的序列号命令,读取DS18B20的序列号;(2) 启动DS18B2
28、O作温度转换并读取温度值。主机在收到返回的存在脉冲后发出跳过器件的序列号命令,跟着发出温度转换命令,再次复位并收到返回的存在脉冲后,发送DS18B20的序列号,读出数据,如图4.2所示。开始RAM初始化开中断中断初始化关中断调用温度子程序对采集的温度进行数据处理调用数码管显示子程序有中断产生吗是否设置了温度图4.1 主程序流程图开始返回初始化读取48位ID号启动温度转换发送读暂存器命令读取温度值图4.2 温度传感器终端服务程序流程图4.2.3 键盘扫描处理程序 键盘模块的处理是通过对K1、K2进行操作的。K1是温度上调按钮,K2是温度下调按钮。程序流程图如图4.3所示:开始是是否K1键按下否
29、是否K2键按下调用中断服务程序是 数码显示调用中断服务程序用中断服务程序调用中断服务序 返回主程序 否图4.3 健盘扫描处理流程图4.2.4 温度检测与控制子程序读取DS18B20的实时数据与设定值的比较,开始进行加热,在加热的过程中需要进行每1秒一次的跟踪检测,并把检测到的实时数据与设定值比较,根据比较结果进行不同方式的加热,其具体流程如图4.4所示。4.2.5 温度显示子程序 该模块首先判断系统是否处于设定状态,如果处于设定状态则显示设定温度,否则显示当前实际温度。显示子程序的功能是将显示缓冲区内的二进制数据先转化成对应的BCD码,分别存入十位和个位显示区,然后通过串行通信口送出显示。4.
30、3 软件调试 软件调试的测试平台:Proteus仿真软件,系统软件采用c语言编写。 由于控制系统的控制质量与被控制对象的特性、干扰信号的形式和幅值、控制方案及控制器的参数等因素有着密切的关系。对象的特性和干扰情况是受工艺操作和设备的特性限制的,对象各通道的特性就成定局,这时控制系统的控制质量就只取决于控制器的参数。因此,参数的整定是过程控制系统设计的核心内容。开始初始化读18B20,调显示子程序调用按键设定温度值并进行开始加热每隔1秒检测1次检测实温=设温?PID调整加热图4.4 温度检测与控制流程图 调节器参数整定方法很多,概括起来可以分为两大类:一是理论计算整定法。它主要是依据系统的数学模
31、型,采用控制理论中的根轨迹法,频率特性法,经过理论计算确定调节器参数的数值。二是工程整定方法,它主要依靠工程经验,直接在过程控制系统的实验中进行。由于本系统有别于工业实际系统因此对于参数整定来说,使用工程参数整定法效果不是很好,该系统参数整定采用经验凑试法。 所谓“满意”的调节效果,是随不同的对象和控制要求而异的。此外PID调节器的参数对控制质量的影响不十分敏感,因而在整定中参数的先定并不是唯一的。事实上,在比例、积分、微分三部分产生的控制作用中,某部分的减小往往可由其它部分的增大来补偿。因此,用不同的整定参数完全有可能得到同样的控制效果。从应用的角度看,要被控过程主要指标己达到设计要求,那么
32、即可选定相应的调节器参数为有效的控制参数。4.4 软硬调试 通过对系统的硬件、软件调试,基本上达到了该控制系统原设定的要求,数字温度传感器能在1秒内读一次温度并进行数码显示。能够在10分钟之内通过控制继电器的通断进行加热达到预定温度值。当温度差大于5时,通过PID调整控制数字脉冲的宽度使继电器产生有效的动作,进行220V交流电加热以达到预定温度,如果温度差小于5时,则进行PID调整加热达到原预定温度。经验凑试法是通过模拟或闭环运行观察系统的响应曲线,然后根据各调节参数对系统响应的大致影响,反复凑试参数,以达到满意的响应,从而确定PID调节参数。 增大比例系数,一般将加快系统的响应,在有静差的情
33、况下有利于减小静差。但过大的比例系数会使系统有较大的超调,并产生振荡,使稳定性变坏。 增大积分时间,有利于减小超调,减小振荡,使系统更加稳定,但系统静差的消除将随之减慢。 增大微分时间,亦有利于加快系统响应,使用权超调减小,稳定性增加,但系统对扰动的抑制能力减弱,对扰动有较敏感的响应。结束语 经过一个多月的毕业设计终于可以划上一个句号了,但是现在回想起来做毕业设计的整个过程,颇有心得,其中有苦也有甜,不过乐趣尽在其中。通过白己动手实现了恒温控制系统的设计,其功能基本符合设计要求。虽然然己经完成了此次毕业设计,但是我要感谢在整个毕业设计过程中帮助过我的老师,同学。 该系统既可以对当前温度进行实时
34、显示,又可以对温度进行控制,并使其恒定在某一温度范围。控制键盘设计使设置温度简单快捷,两位整数一位小数的显示方式具有更高的显示精度。通过对系统软件和硬件的合理规划,发挥单片机自身集成多系统功能单元的优势,在不减少功能的前提下有效降低了成本,系统操作简便。致谢感谢高老师和电子信息学院其他老师的悉心指导。高老师平易近人,工作严谨认真,一丝不苟,同时给予我很大的帮助。我从高老师身上学到了很多专业知识和本行业所必备的素质,还有高老师对工作热爱的热情和工作非常积极的工作态度。感谢高老师在毕业设计这段时间内给予我的指导、帮助和启迪!有了您的细心指导和大量的帮助,我才能够顺利完成毕业设计。我也要感谢班主任李
35、老师,是他在这三年的大学生活中给予我的关怀与教诲,使我的大学生活多姿多彩,这对我以后的工作和生活都起到了很重要的推动和激励作用。我还要感谢同班同学在毕业设计期间对我的帮助和支持。最后,感谢百忙中审阅我论文的老师们,谢谢老师对我的教诲与鼓励!谢谢!参考文献1 吴炳胜,王桂梅.80C51单片机原理与应用M.北京:冶金工业出版20012 张俊漠.单片机中级教程原理与应用M.北京:北京航空航天大学出版社.2000.63 李华.电子线路设计指导M.北京:北京航空航天大学出版社.2005.64 卢结成.电子电路实验及应用课题设计M.合肥:中国科学技术大学出版社,2002.5 黄贤武,郑筱霞.传感器原理与应
36、用M.成都:电子科技大学出版社,高等教育出版社,2005:76一108.6 杨宝清,宋文贵.实用电路手册Ml.北京:机械工业出版社,2002.7 张萌,和湘,姜斌.单片机应用系统开发综合实例M.北京:清华大学出版社,2007:146一150.8 蔡锦福.运算放大器原理与应用M.北京:科学出版社,2005.9 康华光.模拟电子技术M.北京:高等教育出版社,1999.10 张培仁.墓于c语言编程McS51单片机原理与应用M.北京:清华大学出版社,2002. 11 王守中.51单片机开发入门与典型实例M.北京:人民邮电出版社,2007:68一69.12 康华光,陈大钦.模拟电子电路M.北京:高教育出
37、版社,2 004:335一336.13 清源计算机工作室.Protcl99原理图与 PCB及仿真M.北京:机械工业出版社,2005:113一122. 14 李广弟,朱月秀,王秀山.单片机基础M.北京:北京航空航天大学出版社,2006.15赖寿宏.微型计算机控制技术M.北京:机械工业出版社,2006.附录一 电路原理图 附录二 软件程序#include#define uchar unsigned char#define uint unsigned intUchar codetab10=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;float
38、f;uchar sg,ss,bai,shi,ge,xs1,xs2,tt,ii;sbit ds=P11;sbit weed=P3O;sbit dued=P3l;sbit xeed=P34;sbit hh=P32;sbit hh1=P33;sbit pp=P12;sbit pp1=P20;void disPlay();void dely(uint a);bit chul8b20() /初始化DS18B20#include #include #include /void PIDInit(PID *PP);#define N 8/*定义结构体和公用体*/typedef struct PIDunsign
39、ed int setpoint; /*设定值*/unsigned int proportion; /*比例系数*/unsigned int integral; /*积分系数*/unsigned int derivative; /*微分系数 */unsigned int lasterror; /*前一拍误差*/unsigned int preerror; /*前两拍误差*/ PID; union stuunsigned int value;unsigned char num2; laser;union dat unsigned char dd2; unsigned int number; col
40、lect;unsigned int PIDcal(PID *pp,int thiserror);/*函数声明部分*/ void PIDInit(PID *PP); void PortInit(void); unsigned int get_ad(void); unsigned int filter_valve(void); void Delayms(void); void main(void)/*主函数部分*/ PID vPID; /*定义结构体变量名*/unsigned int verror;unsigned int Error;unsigned int tempi;unsigned cha
41、r LASERH,LASERL; /*误差的高低字节变量*/ WDTCN=0xde; WDTCN=0xad;/portinit();PIDInit(&vPID);vPID.proportion=10; /*设置PID比例系数为10*/ vPID.integral=10; /*设定PID积分系数 为10*/vPID.derivative=10; /*设定PID微分系数为10*/vPID.setpoint=50; /*根据实际情况设定*/IE= 0x80;while(1)verror=filter_valve(); /*得到AD的滤波输出值 */Error=vPID.setpoint-verror
42、; /*得到误差值*/tempi=PIDcal(&vPID,Error); /*调用PID算法函数 得到误差增量*/laser.value+=tempi; LASERH=laser.num0; /*value与num2为共同体,变量名为laser*/LASERL=laser.num1; /*存放高低字节*/ void display( ) /显示程序 chuli( ); weed=l; P0=0xfe; weed=0; dued=l P0=tabxs1; /显示实际温度的小数 dued=0; dely(l); dued=1;P0=0x00;dued=0;weed=1;P0=0Xfd;weed=
43、0;dued=1;P0=tabge|0x80; /显示实际温度的个位dued=0;dely(1);dued=1;P0=0X00;dued=0;weed=1;P0=0xfb;weed=0;dued=l;P0=tabshi; /显示实际温度的十位dued=0;dely(1);dued=1;P0=0X00; dued=0; weed=1; P0=0xef; weed=0; dued=1;void display(uint a) /延时子程序 unit x,y; for(x=a;x0;x-) for(y=122;y0;y-); void timer0(void)interrupt1 /中断t0 TH0=0X3C; TL0=0XB0; tt+; if(tt=20) tt=0; redtemp( ); display( ); qidong18b20( ); /启动 Void anjian( ) /按键去抖子程序 if(hh=0) for(11=O:ii12;ii+) disPay( ): if(hh=0) sg=sg+1; if(sg=10) sg=0; if
版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。
Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1
陕公网安备 61072602000132号 违法和不良信息举报:0916-4228922