收藏 分享(赏)

简易温度闭环控制系统设计论文.doc

上传人:微传9988 文档编号:2515550 上传时间:2018-09-20 格式:DOC 页数:31 大小:606.50KB
下载 相关 举报
简易温度闭环控制系统设计论文.doc_第1页
第1页 / 共31页
简易温度闭环控制系统设计论文.doc_第2页
第2页 / 共31页
简易温度闭环控制系统设计论文.doc_第3页
第3页 / 共31页
简易温度闭环控制系统设计论文.doc_第4页
第4页 / 共31页
简易温度闭环控制系统设计论文.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、摘 要 2第 1 章 绪论 3第 2 章 系统总体方案 42.1 简易温度控制系统的整体设计 .42.2 简易温度控制系统的工作原理 .5第 3 章 系统硬件设计 53.1 主控芯片介绍 53.2 复位电路 83.3 时钟电路 93.4 直接编码输入键盘电路 93.5 显示电路 103.6 电平转换电路 113.7 A/D 转换电路 123.8 测温电路 13第 4 章 系统软件设计 154.1 主程序模块 .164.2 LCD 显示模块 174.3 TLC1543 模数转换模块 20第 5 章 温度闭环控制系统调试 235.1 温度闭环控制系统静态调试 235.2 温度闭环控制系统动态调试

2、.235.3 温度控制系统调试情况 .23结 论 25参考文献 262摘 要设计了一种基于 SST89E516RD 单片机及热敏电阻 TTC101 的温度闭环控制系统。单片机由于其比较高的性价比,在工业控制中的应用非常广泛,而温度的检测与控制是工业生产过程中比较典型的应用之一,随着传感器在生产和生活中的更加广泛的应用,利用温度传感器实现对温度的检测与控制得到更快的开发。该系统硬件方面主要分为测温电路、模数转换电路以及液晶显示电路三部分。利用热敏电阻和运放构成测温电路,通过 TLC1543 进行模数转换,最后用 LCM1602B 作为液晶屏进行温度显示。软件方面运用 C 语言进行编程,程序分为主

3、程序、LCD1602 显示程序、TLC1543 模数转换程序。整个设计过程简单,使用方便,具有一定的开发价值。关键词: SST89E516RD;温度测量;液晶显示3第 1 章 绪论单片机技术作为计算机技术的一个重要分支,广泛应用于工业控制、智能化仪器仪表、家用电器,甚至电子玩具等各个领域,它具有体积小、功能多、价格低廉、使用方便、系统设计灵活等优点,因此具有非常大的应用空间。而作为信息获取的重要手段之一,传感器是将电子系统无法处理的外界物理量或者化学量转换为电信号的主要器件。对于测量与控制系统而言,传感器是构成对外界物理量或者化学量加以检测的前端器件。传感器是实现信息化的基础技术之一,在科学技

4、术领域占有十分重要的地位。目前传感器已经广泛应用于国防、环保、工业、农业、交通运输、日常生活等所有领域,并伴随着现代科学技术的进步而不断发展。本设计介绍了一种基于 SST89E516RD 单片机及热敏电阻 TTC101 的温度闭环控制系统,具有读数方便,测温范围广等优点,其温度通过液晶屏采用十进制数字显示,主要用于测量电路板温度。测温传感器使用热敏电阻 TTC101,A/D 转换电路采用 TLC1543,用LCM1602B 实现温度的显示。4第 2 章 系统总体方案2.1 简易温度控制系统的整体设计温度控制系统是由硬件和软件两部分组成。硬件部分主要由单片机 SST89E516RD,负温度系数热

5、敏电阻 TTC101, TLC1543 模数转换电路,LCM1602B 液晶显示器,按键电路,串行通信电路组成。其硬件总体结构图如图 2-1 所示。热敏电阻(TTC101) 电压放大电路A/D 转换SST89E516RD串行通信接口液晶显示器(LCM1602B)按键电路图 2-1 温度传感器结构图本设计主要由单片机、温度采集模块、温度显示模块和按键设定模块组成。本系统能实现温度实时测量,同时显示在 1602 液晶显示器上;能实现温度的设定;通过串行通信电路,将温度采集数据传送到 PC 机。2.2 简易温度控制系统的工作原理热敏电阻和电压放大电路组成温度采集模块,它通过热敏电阻感应出电路的温度,

6、然后由运放电路将热敏电阻两端的电压进行放大,放大后的电压模拟信号经模数转换后把十位二进制信号输入单片机,然后由单片机进行处理,最后送入 1602 液晶屏进行显示。同时由单片机控制温度的设定。5第 3 章 系统硬件设计3.1 主控芯片介绍本设计选用的主芯片为 SST89E516RD,是 SST 公司生产的超高性价比、超高灵活性的一款单片机内核芯片,其主要特性如下:(1)兼容 80C51 系列,内置超级 FLASH 存储器。(2)工作电压 ,5V 工作电压时频率范围为 040MHz.VD5.4(3)与现行的 80C52 系列单片机硬件 PIN-TO-PIN 完全兼容,软件、开发工具也完全兼容。(4

7、)1K*8 的内部 RAM,可放心使用 C 语言编程。(5)两块超级 FLASH EEPROM,分别为 64K*8 的基本存储块和 8K*8 的二级存储块(扇区大小为 128 字节) 。(6)独立的块加密。(7)IAP 下的并行操作。(8)块地址重映射。(9)最大片外程序/数据地址空间为 64K*8(也可以通过 I/O 口进行切换,实现超 64K扩展) 。(10)三个搞电流驱动引脚(每个 16mA,可直接驱动 LED) 。(11)三个 16 位定时器/计数器。(12)全双工增强型 UART,具有帧错误检测及自动地址识别。(13)9 个中断源,4 个中断优先级。(14)看门狗定时器。且看门狗溢出

8、时间可调(15)可编程计数阵列(PCA),标准为每个机器周期 12 个时钟周期,器件可选择在每个机器周期为 6 个时钟周期上加倍,掉电检测(Brow-out 缺省为产生复位,也可以设置成产生中断) 。(16)降低 EMI 模式(通过 AUXR SFR 部允许 ALE 输出时钟) 。(17)四个 8 位 I/O 口(32 根输入输出线) 。(18)双 DPTR 指针(查表,寻址更方便) 。(19)SPI 串行接口。(20)兼容 TTL 和 CMOS(21)扩展省电模式。包括以下三种:Idle 模式、由外部中断唤醒的省电模式、Standly 模式。(22)温度范围:商业级为 070 摄氏度,工业级

9、为-40+85 摄氏度。SST89E516RD 的芯片封装有 DIP 和 PLCC 两种形式,在本设计中采用的是 DIP 双列直插式,其引脚排列图如图 3-1 所示6图 3-1 SST89E516RD 芯片引脚排列其引脚功能如下:Port 0:P0 是一个漏极开路的 8 位双向 I/O 口。作为输出口,每位能驱动多个 LS 型TTL 负载。P0 浮空,锁存器为“1” ,可作为高阻抗输入。在访问外部存储器时,P0 口作为低 8 位地址和数据总线时分复用。在这种应用中,当转为高电平是,它用了强大的内部上拉。在外部主模式编程状态下,P0 接收代码字节,在外部主模式校验过程中输出代码字节。在程序校验过

10、程中需要外部上拉。Port 1:P1 是一个带内部上拉电阻的 8 位准双向 I/O 口。每位能驱动 LS 型 TTL 负载。当 P1 口作为输入口用时,向内部锁存器写入“1” ,P1 引脚被内部上拉电阻拉为高电平。由于内部上拉电阻,被拉低的 P1 引脚能向外部提供电流。P15,6,7有 16mA 的高电流驱动能力。当外部主模式在编程和测试时,P1 也接收低 8 位地址。P1 口的每个单独的引脚除了可作为 I/O 引脚外,还具有第二 I/O 功能,但是在本设计中,仅作为一般 I/O 引脚使用。Port 2: P2 口是一个带内部上拉电阻的 8 位准双向 I/O 端口,当被作为输入时,向它写入“1

11、” ,P2 引脚被内部上拉电阻拉为高电平。作为输入使用时,被内部上拉电阻下拉为低电平的 P2 会产生电流。当从片外程序存储器取数和访问片外数据存储器时,P2 能提供高 8 位地址。在此应用中,当转为 时,它利用了功能极强的内部上拉电阻。当外部主OHV模式在编程和测试时,它还接收控制信号和部分高 8 位地址。Port 3: P3 口是一个带内部上拉电阻的 8 位准双向 I/O 端口。P3 的输出缓冲功能驱动多个 LS 型 TTL。当被作为输入时,向它写入“1” ,P3 引脚被内不上啦电阻拉为高电平,作为输入使用时,被外部拉为低,能驱动电流。当外部主机在编程和校验时,它还能接收控制信号和部分高 8

12、 位地址。P3 口的每个单独的引脚除了可作为 I/O 引脚外,还具有第二I/O 功能,在此设计中使用的是 P3 口的第二输入/输出功能。具体如下P3.0:RXD,串行数据接收;P3.1:TXD,串行数据发送;P3.2:INT0,外部中断 0 输入;P3.3: INT1,外部中断 1 输入;P3.4:T0,定时/计数器 0 的外部计数输入;P3.5:T1,定时/计数器 1 的外部计数输入;7P3.6:WR,外部数据存储器写选通,低电平有效;P3.6:RD,外部数据存储器读选通,低电平有效;RST:复位输入,当振荡器复位器件时,要保持 RST 脚两个机器周期的高电平时间。ALE/PROG:当访问外

13、部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在 FLASH 编程期间,此引脚用于输入编程脉冲。在平时,ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个 ALE 脉冲。如想禁止 ALE 的输出可在 SFR8EH 地址上置 0。此时, ALE 只有在执行 MOVX, MOVC 指令是 ALE 才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态 ALE 禁止,置位无效。PSEN:低电平有效,外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两

14、次 PSEN 有效。但在访问外部数据存储器时,这两次有效的 PSEN 信号将不出现。:当 EA 保持低电平时,则在此期间外部程序存储器(0000H-FFFFH) ,不管是PVEA/否有内部程序存储器。注意加密方式 1 时,EA 将内部锁定为 RESET;当 EA 端保持高电平时,此间内部程序存储器。在 FLASH 编程期间,此引脚也用于施加 12V 编程电源(VPP) 。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。XTAL2:来自反向振荡器的输出。VDD:供电电压。VSS:接地。SST89E516RD 的程序和数据存储空间分开独立寻址。程序存储器包括两个片内 FLASH 存储块。

15、基本 FLASH 存储块(Block 0)占用 64K 字节,二级 FLASH 存储块(Block 1)占用 8K 字节。因为整个内部程序空间被限制为 64K 字节,SFCF1:0位用于控制存储块的低 8K 之间的切换。当 SFCF1:0为 00 时,由于 Block 1 覆盖了程序空间的低 8K 即 0000H-1FFFH 的地址空间,所以当 PC 下降到 0000H-1FFFH 时,指令将从 Block 1 读取而不是从 Block 0 读取。在 0000H-1FFFH 外,Block 0 可用。Block 0被组织成 512 个扇区,每个扇区有 128 个字节组成。程序存储块切换是在复位

16、后根据 SC0 位的状态来初始化的。SC0 是根据外部主模式或IAP 命令来编程的。一旦退出复位,SFCF0能根据设计需要通过编程动态改变。改变SFCF0将不会改变 SC0。在动态改变 SFCF0时,必须小心谨慎,因为这将导致不同的物理存储器被映射到逻辑程序地址空间。使用者必须避免在空间 0000H-1FFFH 之间执行块切换命令。SST89E516RD 具有 1K 片内数据存储器, 64K 的外部数据存储器。1K 的片内数据存储器包括:1RAM 的低 128 字节(00H7FH)通过直接和间接寻址访问。 2RAM 的高 128 字节(80HFFH)只能通过直接寻址访问。 3特殊功能寄存器(S

17、FRS,80HFFH)只能通过直接寻址访问。4768 字节(00H2FFH)的内部扩展 RAM 通过清零 EXTRAM 和外部传送指令(MOVX)来实现间接寻址。单片机 SST89E516RD 的大部分特性都是由特殊功能寄存器的相应位来控制的。本设计中主要用到的是与中断有关的寄存器。83.2 复位电路为确保两点间温度控制系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般电路正常工作需要供电电源为 5V5%,即4.755.25V。复位是单片机的初始化操作,其目的是使 CPU 及各专用寄存器处于一个确定的初始状态。如:把 PC 的内容初始化为 0000H,使单片

18、机从 0000H 单元开始执行程序。除了进入系统的正常初始化之外,当单片机系统在运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需要复位以使其恢复正常工作状态。RST 端的外部复位电路有两种操作方式:上电自动复位和按键手动复位。按键手动复位有电平方式和脉冲方式两种,本系统设计采用脉冲式按键手动复位,如图 3-2 所示。图 3-2 复位电路按键手动复位电路中,未按下复位按钮时,5V 电源对电容进行充电,芯片的 RESET 为低电平;当按下按钮时,电容进行放电,放电结束后,芯片的 RESET 引脚变成高电平;松开按键时,电容再次进行充电,使得芯片复位引脚缓慢变为低电平。3.3 时钟电路单片机

19、的时钟信号用来提供单片机内各种微操作的时间基准,时钟电路用于产生单片机工作所需要的时钟信号。单片机的时钟信号用来提供单片机片内各种微操作的时间基准,时钟信号通常用内部振荡或者外部振荡这两种电路形式得到:。本设计采用内部振荡方式,如图 3-3 所示。9图 3-3 时钟振荡电路引脚 XTALl 和 XTAL2 分别是系统时钟信号的输入端和输出端,由于采用内部方式时,电路简单,所得的时钟信号比较稳定,实际使用中常采用这种方式。因为选用的是石英晶体振荡器,所以电容 选择电容值为 22pF 的无极性电容。21,C3.4 直接编码输入键盘电路通过检测单片机 I/O 口引脚电平状态来判别有无按键输入就构成直

20、接输入键盘,如图 3-4 所示。之所以采用这种键盘电路形式,是因为在此设计中只有少量需要控制的系统。而直接编码输入键盘的接口电路简单,采用它可以简化电路。图 3-4 键盘电路在本设计中,主芯片的 P1 口的四个引脚 P1.0,P1.1,P1.2,P1.3 分别与四个按键K1,K2,K3,K4 相连接,且分别外接了 10K 的上拉电阻。四个按键在设计中作为设定闭环控制系统的温度时的控制按键,由于本次设计只需要通过按键进行数字加减,故实际应用是只用到 K1,K2 两个按键,按键 K1 作为加的按键,K2 作为减的按键。103.5 显示电路在单片机应用系统中,对于系统的运行状态和运行结果,通常都需要

21、直观交互显示出来。单片机应用系统中最常用的显示器有 LED 和 LCD 两种。这两种显示器都可以显示数字、字符及系统的状态,本设计采用的是更为环保的 LCD 显示器。字符型液晶显示模块是一种专门用于显示字母,数字,字符等点阵式 LCD,目前常用的有 16x1,16x2,20x2,40x2 等模块,本设计采用的是 LCM1602B,即最多可显示 1602 即32 个字符。 1602 字符型 LCD 通常有 14 条引脚线或 16 条引脚线的 LCD,多 出 来 的 2 条线 是 背 光 电 源 线 。 该模块也可以只用 D4-D7 作为四位数据分两次传送,这样的话可以节省 CPU 的 I/O 口

22、资源。LCM1602B 引 脚 图 如 图 3-5 所 示图 3-5 1602 引脚图其详细引脚功能如附录 1 所示。VSS,VCC 分别接地和 5V 电源。V0 为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影” ,使用时可以通过一个 10K 的电位器调整对比度) 。RS 为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。R/W 为读写信号线,高电平时进行读操作,低电平时进行写操作。E( 或 EN)端为使能(enable) 端,下降沿使能。DB0DB7 为双向数据总线。BLA为背光电源正极,BLK 为背光电源负极。另外 1602 内置

23、了 DDRAM 和 CGROM。DDRAM 就是显示数据 RAM,用来寄存待显示的代码,共 80 个字节,其地址和屏幕的对应关系如表 3-1表 3-1 DDRAM 地址与显示位置的对应关系显示位置 1 2 3 4 5 6 7 40DDRAM 地址第一行 00H 01H 02H 03H 04H 05H 06H 27HDDRAM 地址第二行 40H 41H 42H 43H 44H 45H 46H 67H就是说想要在 LCD1602 屏幕的第一行第一列显示一个“A”字,就要向 DDRAM 的 00H 地址写入“A”字的代码 41H 就行了。但具体的写入是要按 LCD 模块的指令格式进行的。而 41H

24、 这一个字符的代码要在屏幕的阵点上显示“A”字,就需要用到 LCD 模块的固化了的字模存储器,这就是 CGROM,1602 内置了 192 个常用字符的字模,存于 CGROM 中。本设计中 1602 用来显示当前温度和所设定的温度。其中第一行用来显示当前温度,第二行用来显示想要设定的温度。它与主芯片的连接如图 3-611图 3-6 1602 与 SST89E516RD 的连接图 此设计中将 1602 的 RS,R/W,E 分别与主芯片的 P2.0,P2.1,P2.2 相接,则可以通过控制 P2 口这三个引脚的高低电平来控制 1602 的状态。而 DB0-DB7 与主芯片的 P0 口相连接,在主

25、芯片对 1602 进行写入时,DB0-DB7 先作为地址总线进行地址的传送,控制 1602 的被写入的位置,然后再作为数据线,传送需要显示的数据的相应的字符代码。3.6 电平转换电路当单片机与 PC 机进行串行通信时,一般都需要一个电平转换电路,因为 PC 机所采用的是 EIA 电平,与 PC 机相连的串口 RS232 也是采用 EIA 电平,即传送数字 “1”时,传输线上的电平在-3V-15V 之间;传送数字“0”时,传输线上的电平在+3V+15V 之间。但是单片机串行口采用正逻辑的 TTL 电平,其高电平为+5V,低电平为 0V。这样就存在 TTL 电平与 EIA 电平之间的转换问题。通常

26、这个电路都选择专用的 RS232 接口电平转换集成电路进行设计,如 MAX232、HIN232 等。MAX232 芯片集成度高,单 +5V 电源工作,只需要外接四个小容量的电容即可完成两路 RS232 与 TTL 电平之间的转换。故在本设计中采用 MAX232 与计算机串口 RS232 相连接,作为电平转换电路。MAX232 有两个接收器和两个发送器, 每一个接收器将 EIA 电平转换成 5V 的 TTL 电平,每一个发送器将 TTL 电平转换成 EIA 电平,在本设计中只用到了接收器 2 和收发器 2,其具体电路如图 3-7 所示12图 3-7 电平转换电路其中 TXD 为主芯片 SST89

27、E516RD 的串行数据发送端,与 MAX232 的 T2IN 连接,当主芯片发送出来的 TTL 电平的数据由 T2IN 进入,经过 MAX232 的作用,从 T2OUT 输出相应的EIA 电平的数据,此数据再经过计算机串口 RS232 到达 PC 机,从而完成由单片机到 PC 机的数据传送。而 RXD 为 SST89E516RD 的串行数据接收端,与 MAX232 的 R2OUT 相连,当由PC 机发送过来的 EIA 电平的数据由串口 RS232 的 3 脚 R2IN 进入 MAX232,在其内部完成由EIA 到 TTL 电平的转换,最后由 R2OUT 输出相应的 TTL 电平的数据,将数据

28、送入主芯片SST89E516RD 的串行数据接收端 RXD 那里,从而完成了由 PC 机到单片机的数据传送。3.7 A/D 转换电路由于测温电路所输出的信号为电压模拟信号,而主芯片 SST89E516RD 本身只能处理二进制或者十六进制的数字信号,因此,要通过 SST89E516RD 来控制测温系统正常工作,必须先将需要让主芯片进行处理和控制的模拟信号转换为可被主芯片处理的数字信号。因此,在测温电路与主芯片之间,必须增加一个 A/D 转换的电路来进行模数信号的转换。A/D 转换电路种类很多,在选择模数转换器时,主要考虑以下几个技术指标:转换时间、转换频率、误差、分辨率、转换精度、接口形式。目前

29、,较为流行的 A/D 转换器件有很多都采用串行接口 ,这使得芯片与单片机的硬件连接非常简单,而软件编程相对要复杂些。综合考虑本设计所需 A/D 转换器的性能要求和价格问题,在本设计中选用了性价比相对较高的 TLC1543 作为模数转换芯片。该芯片有如下特点:10 位精度、11 通道、3 种内建的自测模式、提供 EOC(转换完成)信号等。该芯片与单片机的接口采用串行接口方式,引线很少,与单片机连接简单。其中 A0-A10 是 11 路输入,VCC 和 GND 分别是电源引脚,REF+和 REF-分别是参考电源的正负引脚,使用时一般将 REF-接到系统的地,达到一点接地的要求,以减少干扰,在本设计

30、中,将 REF+设置为电压可调,并通过外接一个三端可调分流基准电压源 TL431 来设置 REF+的电压值。其余的引脚是 TLC1543 与单片机主芯片的接口,其中 CS 为片选端,低电平有效,CLK 是芯片的时钟端,ADD 是地址选择端,DAT 是数据输出端。本设计中这 4 根引脚分别接到主芯片的 P2.3,P2.4,P2.5,P2.6 这四个 I/O 端。EOC接到 P2.7,当它为低电平时,表示一次 A/D 转换已经完成,CPU 可以读取数据了。在程序中 CPU 通过查询该引脚的状态来了解当前的状态。其在本设计中的具体电路如图 3-8 所示13图 3-8 模数转换电路右边电路中是由 TL

31、431 加滑动变阻器构成的稳压基准,温漂小,又有相当的负载能力,且输出电压可调,电路简单,且使得 REF+的设置更加灵活。而 TLC1543 的 A0 脚与测温电路的输出端相连接,测温电路输出的模拟电压信号由 A0 脚进入 TLC1543 进行模数转换,转换出的相应的十位二进制数字信号从 DAT 引脚串行输出,由于 P2.4 与 DAT 引脚相连,故可将输出的数字信号被送入 CPU 进行处理。3.8 测温电路测量温度所采用的元器件主要是热敏电阻,之所以采用热敏电阻是由于它具有一下几个特点:热 敏 电 阻 的 主 要 特 点 是 : ( 1) 灵 敏 度 较 高 , 其 电 阻 温 度 系 数

32、要 比 金 属 大10 100 倍 以 上 ; ( 2) 工 作 温 度 范 围 宽 , 常 温 器 件 适 用 于 -55 315 , 高 温 器 件适 用 温 度 高 于 315 ( 目 前 最 高 可 达 到 2000 ) , 低 温 器 件 适 用 于 -273 55 ;( 3) 体 积 小 ; ( 4) 使 用 方 便 , 电 阻 值 可 在 0.1 100k 间 任 意 选 择 ; ( 5) 稳 定 性好 、 过 载 能 力 强 。在 本 设 计 中 采 用 TTC101,即 负 温 度 系 数 热 敏 电 阻 ( NTC) 进 行 温 度 感 应 , NTC 是指 随 温 度 上

33、 升 电 阻 呈 指 数 关 系 减 小 、 具 有 负 温 度 系 数 的 热 敏 电 阻 和 材 料 。 热敏电阻的电阻温度特性可近似地用下式表示: ; )1(exp00TBR:温度 时的电阻值;R)(KT:温度 时的电阻值;0014: 值,实际上,热敏电阻的 B 值并非是恒定的,其变化大小因材料构成而异,本B设计中的 TTC101 在 25 摄氏度下阻值为 100 欧姆,B 值为 3200;其中 为热力学温度,单位是 K,而 是摄氏温度,单位是;15.273tTTt具体的测温电路如图 3-9 所示图 3-9 温度闭环控制电路图中 R10 即为负温度系数热敏电阻 TTC101,而 R8 为

34、 15 欧姆的加热电阻,测温电路的输入端与主芯片的 P1.4 口相接,当对 P1.4 写入 0 即写入低电平时,测温电路的三极管 Q1导通,加热电阻 R8 有电流流过,温度升高,而另一支路中 R9、R10 中也有电流流过,热敏电阻 R10 感应到温度的变化,其电阻值相应的发生变化,从而引起其两端电压也发生变化,由于一般传感器感应出来的电量变化都相对较小,不适合直接作为后续电路的输入信号,因此在后面又接上通过运放电路和稳压电路,最终实现了电压的放大和稳定输出。运放电路的放大倍数可以通过滑动变阻器 R12 来进行调节,不过一般 为了计算方便,将 R12 调至1K 阻值,即使 R12 与 R11 电

35、压相同。限流电阻 R13 的后面接 2.5V 的稳压二极管,当稳压管两端电压大于 2.5V 时,输出电压为 2.5V;当稳压管两端电压小于 2.5V 时,输出电压为实际电压值。输出端电压经过 A/D 转换电路最终送入 CPU 进行处理。 当设定好了温度,需要对测温电路的温度进行调节时,可以通过对主芯片的 P1.4 进行高低电平操作来控制发热电阻是否有电流流过,从而控制电路温度的升高或者降低。本设计在后期修改了此图,将 R9 改为 120 欧姆的电阻,同时将热敏电阻两端的电压直接接入 TLC1543 中进行模数转换。且将 REF+设为+5V。其具体推到公式如下(1))1(exp00TBR为热敏电

36、阻温度为 阻值R;5.298.7325,100 )5.273(Tt将上面这些值带入公式(1)中可得 (2))15.298.73(0exp20)( tV15其中 V 为 A/D 转换前的电压即热敏电阻两端的电压;通过推到求的(3)15.273.98320)5(.1lnt后面编程时就是用公式(3)来进行温度与电压间的转换的。第 4 章 系统软件设计整个系统的功能是由硬件电路与软件相结合来实现的,当硬件基本定型的时候软件也基本定下来了,从软件的功能不同,可以分为两大类:一是主程序,它是整个软件的核心,专门用来协调各个执行模块和操作者的联系;二是子程序,它是用来完成各种实质性的工作的,如测量、计算、显

37、示、通讯等。每一个执行软件就是一个小的执行模块,这里将每一个模块一一列出来,并为每个执行模块进行功能定义和接口定义。各执行模块规划好以后,就可以规划监控软件了。首先要根据系统的总体功能选择一种最合适的主程序结构,然后根据实时性的条件,合理安排监控软件和执行软件之间的调度关系。本系统软件设计主要包括主程序以及各个模块程序:温度采集模块、温度显示模块、按键设定模块和通信模块等,以及扩展功能的若干个控制子程序。主程序分别调用这些子程序实现对液晶显示器、A/D 转换和 PC 机通信的操作控制。164.1 主程序模块主程序主要完成硬件初始化,子程序调用等功能,其具体流程图如图 4-1 所示开始初始化数据

38、采集并进行 A/D 转换CPU 计算并得到温度值输入值大于设定值进行温度调节程序启动控制系统结束显示当前温度值NY图 4-1 主程序流程图在实际编程中,由于实力有限,并未编写温度调节程序,因此在主程序中,也没有 PWM 调制的程序,而是直接给 P1.4 口赋值为 0,即给 P1.4 低电平。主程序函数如下#include #include “lcd.h“sbit P1_4=P14;void main (void) double AD_RES, temp;P1_4=0; /使三极管导通,从而使 R8 发热init_LCD( ); /初始化clear_LCD( ); /清屏display_LCD_

39、string(“AD RESULT:“); /第一行固定显示 AD RESULTgotoxy(2,1); / 光标定位到第二行display_LCD_string(“temp:“); / 在第二行固定显示 tempwhile(1) /* 无穷循环 */ 17AD_RES = ADCSelChannel(0);/AD_RES 为经过模数转换后的十位二进制数值gotoxy(1,11);display_LCD_number(AD_RES);/显示热敏电阻的两端的模拟电压值temp = temperature(AD_RES);/temp 为热敏电阻测得的温度值gotoxy(2,6);display_L

40、CD_number1(temp);/显示温度值delay100us(200);delay100us(200);delay100us(200);delay100us(200);delay100us(200);delay100us(200);delay100us(200);delay100us(200);delay100us(200);delay100us(200);delay100us(200);delay100us(200);delay100us(200);delay100us(200);delay100us(200);4.2 LCD 显示模块LCD1602 的显示是编程中非常重要的一部分,其

41、具体流程图如图 4-2 所示18入口初始化 1602延时检测忙信号LCD_BUSY=0?获得显示 RAM 地址延时写入相应的数据数据显示完毕返回主程序NYNY图 4-2 LCD1602 液晶显示流程图LCD 液晶显示子程序如下#include #include #include char code int2charLCD=“;void write_LCD_command(unsigned command) /写指令子程序rw=WRITE; /write 为 0,向 LCD 写入指令rs=COMMAND; /COMMAND 为 0,输入指令enable=ENABLE; /ENABLE 为 1,读

42、取信息P0=command; delay100us(20);19enable=DISABLE; /DISENABLE 为 0,下降沿执行指令rw=1; /从 LCD 读取信息void write_LCD_data(unsigned LCDdata) /写数据子程序rw=WRITE;rs=DATA; /DATA 为 1,输入数据enable=ENABLE; /ENABLE 为 1,读取信息P0=LCDdata;delay100us(20);enable=DISABLE; rw=1;void init_LCD(void) /初始化write_LCD_command(TwoLine_8bit); /

43、 0x38 write_LCD_command(CURSOR_OFF); / 0x0Cwrite_LCD_command(CURSOR_RIGHT); / 0x06void clear_LCD( ) /清屏write_LCD_command(CLEAR);write_LCD_command(CURSOR_HOME);void display_LCD_string(char *p) /显示字符串while(*p)write_LCD_data(*p);p+;void display_LCD_number(double number) /显示 AD 转换前的电压值unsigned char x,y,

44、z;x = (int)(number*5/1024);y = (int)(number*5/1024*10)%10;z = (int)(number*5/1024*100)%10;write_LCD_data(int2charLCDx);display_LCD_string(“.“);write_LCD_data(int2charLCDy);write_LCD_data(int2charLCDz);void gotoxy(unsigned x,unsigned y) /光标定位子程序20if(x=1) write_LCD_command(GOTO_LINE_1+y);elsewrite_LCD

45、_command(GOTO_LINE_2+y);double temperature(double num) /计算温度值double t,v;v = num*5/1024;t = 1 / (1 / 298.15 + log(1.2*v/(5-v)/3200) -273.15;return t;void display_LCD_number1(double number) / 显示温度值unsigned char x,y,z;x=(int)(number/10);y=(int)(number-10*x);z=(int)(number*10/10);write_LCD_data(int2char

46、LCDx);write_LCD_data(int2charLCDy);display_LCD_string(“.“);write_LCD_data(int2charLCDz);4.3 TLC1543 模数转换模块TLC1543 是一个模数转换芯片,它能将输入其中的模拟电压转换成是为二进制数值,本设计中将热敏电阻两端的电压直接作为 TLC1543 的单路输入值,从 0 通道输入,取 REF+为 5V,取 REF-为 0V 接地。具体程序如下#define Wait1us _nop_();#define Wait2us _nop_();_nop_();#define Wait4us Wait2us

47、;Wait2us;#define Wait8us Wait4us;Wait4us;#define Wait10us Wait8us;Wait2us;#include “INTRINS.H“#include /*定义接口总线 */sbit Clock = P26; /时钟口线 CLKsbit DataIn = P25; /数据输入口线 ADDsbit DataOut = P24; /数据输出口线 DATsbit ChipSelect = P23; /片选口线 CS,低电平选通sbit EOC = P27; /转换完成口线/*接口总线定义结束 */21unsigned int ADCSelChan

48、nel(unsigned char Channel) /转换指定通道的模拟量为数字量unsigned int ConvertValue;unsigned char i, Chan;unsigned char ConvertValueL, ConvertValueH;unsigned char delay;ConvertValueL = ConvertValueH = 0; /初始化转换结果delay = 0;if (EOC)Clock = 0;ChipSelect = 1;Wait2us;ChipSelect = 0;Wait2us;Channel = Channel 7;DataIn = (bit)Chan;Wait2us;Clock = 1;Clock = 0;Channel = Channel 1;for (i = 0; i 6;i +) /输入转换时钟Clock = 1;Clock = 0;ChipSelect = 1;/开始检测转换结束标志,或者转换超时出错while (!EOC) delay +;if (delay = 10)return (0xFFFF); /

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 学术论文 > 管理论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报