基于单片机水温控制系统

摘要

本文介绍了基于AT89S52单片机水温测量及控制系统的设计。系统硬

件部分由单片机电路、温度采集电路、键盘电路、LED 显示电路、继电器控制电路等组成。软件从设计思路、软件系统框图出发,逐一分析各模块程序算法的实现,通过C 语言编写出满足任务需求的程序。本系统采用数字式温度传感器DS18B20作为温度传感器,简易实用,方便拓展。单片机以此对水的温度进行有效检测与报警,并以此进行水温的控制。基于单片机水温控制系统采用多电源供电,降低了系统各个模块间的干扰,还保证了电源能为各部分提供足够的工作电流,提高系统的可靠性。

关键词:水温控制 AT89S52 DS18B20

目录

摘要 . ..................................................... i

第一章 绪论 ............................................... 1

1.1水温控制系统设计的背景 ............................. 1

1.2水温控制系统设计的意义 ............................. 1

1.3水温控制系统完成的功能 ............................. 2

第二章 系统设计方案选择 ................................... 3

2.1单片机及水温控制方案 ............................... 3

2.2水温传感器方案 ..................................... 3

2.3电源设计方案 ....................................... 4

2.4控制系统总体设计 ................................... 4

第三章 硬件设计部分 ....................................... 5

3.1单片机电路 ......................................... 5

3.2温度检测电路 ....................................... 9

3.3其它部分硬件电路 .................................. 13

第四章 软件设计部分 ...................................... 16

4.1程序设计方案 ...................................... 16

4.2各模块子程序设计 .................................. 17

第五章 系统调试部分 ...................................... 21

参考文献 ................................................. 23

附录 . .................................................... 24

第一章 绪论

1.1水温控制系统设计的背景

测量控制的作用是从生产现场中获取各种参数,运用科学计算的方法,综合各种先进技术,使每个生产环节都能够得到有效的控制,不但保证了生产的规范化、提高产品质量、降低成本,还确保了生产安全。所以,测量控制技术已经被广泛应用于炼油、化工、冶金、电力、电子、轻工和纺织等行业。

单片机以其集成度高、运算速度快、体积小、运行可靠、价格低廉等优势,在过程控制、数据采集、机电一体化、智能化仪表、家用电器以及网络技术等方面得到了广泛的应用,特别是单片机技术的开发与应用,标志着计算机发展史上又一个新的里程碑。作为计算机两大发展方向之一的单片机,以面向对象的实时控制为己任,嵌入到如家用电器、汽车、机器人、仪器仪表等设备中,使其智能化。

水温检测控制系统在工业生产、科学研究和人们的生活领域中,得到了广泛应用。在工业生产过程中,很多时候都需要对水温进行严格的监控,以使得生产能够顺利的进行,产品的质量才能够得到充分的保证。使用水温控制系统可以对生产环境的温度进行有效控制,保证生产的自动化、智能化能够顺利、安全进行,从而提高企业的生产效率。水温控制系统应用十分广阔。

1.2水温控制系统设计的意义

随着社会的发展,科技的进步,以及测温仪器在各个领域的应用,智能化已是现代温度控制系统发展的主流方向。温度测试控制系统,控制对象是温度。温度控制在日常生活及工业领域应用相当广泛,比如温室、水池、发酵缸、电源等场所的温度控制。而以往温度控制是由人工完成的而且不够重视,其实在很多场所温度都需要监控以防止发生意外。针对此问题,本系统设计的目的是实现一种可连续高精度调温的温度控制系统,它应用广泛,功能强大,小巧美观,便于携带,是一款既实用又廉价的控制系统。特别是近年来,温度控制系统已应用到人们生活的各个方面,温度

控制的开发与人们工作生活息息相关。水是一种我们赖以生存的重要资源,无论是在工农业生产还是我们的日常生活处处离不开水。控制水的温度可以极大提高生产效率,节约资源,提升我们的生活质量。在水资源日益匮乏的今天,拥有并推广简易完善的水温控制系统对于我们社会的可持续发展,有着极大的实际意义。

1.3水温控制系统完成的功能

本器件以AT89S52单片机系统进行温度采集与控制温度信号由模拟温度传感器DS18B20采集输入AT89S52,主控器能对各温度检测器通过LED 进行显示。

1.3.1本机实现的功能:

(1)利用温度传感器采集到当前的温度,通过AT89S52单片机进行控制,最后通过LED 数码管以串行口传送数据实现温度显示。

(2)可以通过按键任意设定一个恒定的温度。

(3)将水环境数据与所设置的数据进行比较,当水温低于设定值时,开启加热设备,进行加热;当水温高于设定温度时,停止加热,从而实现对水温的自动控制。

(4)当系统出现故障,超出控制温度范围时,自动蜂鸣报警。

1.3.2基本设计参数要求有:

一升水由800W 的电热设备加热,要求水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动调整,以保持设定的温度基本不变。

(1)温度测量范围:30~90℃,最小区分度不大于0.1℃。

(2)控制精度在0.5℃以内,温度控制的静态误差小于1℃。

(3)用十进制数码管显示实际水温。

1.3.3扩展功能:

(1)具有通信能力,可接收其他数据设备发来的命令,或将结果传送到其他数据设备。

(2)采用适当的控制方法实现当设定温度或环境温度突变时,减小系统的调节时间和超调量。

(3)温度控制的静态误差。

第二章 系统设计方案选择

2.1单片机及水温控制方案

建立单片机水温控制系统可以采用8031作为控制核心,以使用最为普遍的器件ADC0804作模数转换,控制上使用对电阻丝加电使其升温。此方案简易可行,器件的价格便宜。但8031内部没有程序存储器,需要扩展,增加了电路的复杂性。但此方案在硬件、软件上的成本都比较高,而且易受外部环境的影响和限制,系统工作相对不稳定。

单片机种类繁多,经过比较。此次设计方案采用AT89S52单片机实现,该单片机软件编程自由度大,可用编程实现各种控制算法和逻辑控制。进行数据转换,控制电路部分采用继电器控制,此方案电路简单并且可以满足题目中的各项要求的数据。

2.2水温传感器方案

水温传感器可以采用极为普遍的晶体管3DG6作为温度传感器,廉价的电压/频率转换器(V/F)LM331与AT89S52单片机组成的温度测量仪。但抗干扰性差,数据处理复杂,数据存放空间大,受市场限制。

设计中广泛采用热电阻传感器,铂电阻温度传感器是利用其电阻和温度成一定函数关系而制成的温度传感器,由于其测量准确度高、测量范围大、稳定性好等特点,被广泛用于中温(-200℃~+650℃)范围的温度测量中。但铂电阻的电阻值与温度成非线性关系,所以需要进行非线性较正。校正分为模拟电路校正和微处理器数字化校正,模拟校正有很多现成的电路,其精度不高且易受温漂等干扰因素影响,数字化校正则需要在微处理系统中使用,将Pt 电阻的电阻值和温度对应起来后存入EEPROM 中,根据电路中实测的AD 值以查表方式计算相应温度值。

采用数字可编程温度传感器DS18B20作为温度检测元件。数字可编

程温度传感器可以直接读出被测温度值。不需要将温度传感器的输出信号接到A/D转换器上,减少了系统的硬件电路的成本和整个系统的体积进行数据转换,控制电路部分采用继电器控制,此方案电路简单并且可以满足题目中的各项要求的数据。由于采用具有一总线特点的温度传感器,所以电路连接简单;而且该传感器拥有强大的通信协议,同过几个简单的操作就可以实现传感器与单片机的交互,包括复位传感器、对传感器读写数据、对传感器写命令。软件、硬件易于调试,制作成本较低。也使得系统所测结果精度大大提高。

综合多方考虑,经过对各种温度传单器的比较,本设计决定采用DS18B20建立温度检测电路。

2.3电源设计方案

采用单一电源供电,各个部分很可能造成干扰,系统无法正确工作,还可能因为负载过大,电源无法提供足够的工作电流。特别是压机启动瞬间电流很大,而且逆变电路负载电流波动较大会造成电压不稳,有毛刺等干扰,严重时可能造成弱电部分电路掉电。

所以采用双电源,即电源负载驱动电路等强电部分用一个电源,数字电路等弱电部分用一个电源。但是电路间还是可能会产生干扰,造成系统不正常,而且还可能会对单片机的工作产生干扰,影响单片机的正常工作。

最终我们采用多电源供电方式,即对数字电路、驱动电路分别供电,这种方案即降低了系统各个模块间的干扰,还保证了电源能为各部分提供足够的工作电流,提高系统的可靠性。

2.4控制系统总体设计

本次设计采用采样值和键盘设定值进行比较运算的方法来简单精确地控制温度。先通过键盘输入设定温度,保存在AT89S52单片机的指定单元中,再利用温度传感器DS18B20进行信号的采集,送入单片机中,保存在采样值单元。然后把采样值与设定值进行比较运算,得出控制量,从而调节继电器触发端的通断,来实现将水温控制在一定的范围内。当水温超出单片机预存温度时,蜂鸣器进行报警。单片机控制系统是一个完整的智能化的集数据采集、显示、处理、控制于一体的系统。由传感器、LED 显

示单片机及执行机构控制部分等组成。系统结构框图如图2.1所示:

图2.1系统结构框图

第三章 硬件设计部分

3.1单片机电路

本设计采用的AT89S52是一种低功耗、高性能CMOS8位微控制器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上8K 字节Flash 允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU 和在系统可编程Flash ,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

AT89S52单片机主要功能特点有:与MCS-51单片机产品兼容;8K 字节在系统可编程Flash 存储器;256字节RAM ;1000次擦写周期;全静态操作:三级加密程序存储器;32位可编程I/O口线;双数据指针;三个16位定时器/计数器;八个中断源(一个6向量2级中断结构);全双工UART 串行通道;片内晶振及时钟电路;看门狗定时器;掉电标识符;0Hz~33Hz,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM 、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止,掉电后中断可唤醒。

3.1.1 AT89S52引脚功能

图3.1 AT89S52单片机引脚结构示意图

VCC :电源(+5V)。

GND :地。

P0口:本次设计中P0口与P2口共同实现LED 显示功能。P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL 逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash 编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。

P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL 逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL )。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。

在flash 编程和校验时,P2口也接收高8位地址字节和一些控制信号。

P1口:本次设计P1口中P1.0将用于控制继电器;P1.1和P1.4用于报警系统。P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL 逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL )。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX)。在flash 编程和校验时,P1口接收低8位地址字节。P1口第二功能有:

P1.0:T2(定时器/计数器T2的外部计数输入,时钟输出)

P1.1:T2EX (定时器/计数器T2的捕捉/重载触发信号和方向控制) P1.5:MOSI (在系统编程用)

P1.6:MISO (在系统编程用)

P1.7:SCK (在系统编程用)

P3口:本设计中P3口将用于接收水温信号和按键信息。P3口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL 逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL )。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。在flash 编程和校验时,P3口也接收一些控制信号。本次设计P3口中P3.4将用于接收发送温度型号。P3引脚号第二功能有:

P3.0:RXD (串行输入)

P3.1:TXD (串行输出)

P3.2:INT0(外部中断0)

P3.3:INT0(外部中断0)

P3.4:T0(定时器0外部输入)

P3.5:T1(定时器1外部输入)

P3.6:WR (外部数据存储器写选通)

P3.7:RD (外部数据存储器写选通)

RESET :复位输入。晶振工作时,RST 脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH) 上的DISRTO 位可以使此功能无效。DISRTO 默认状态下,复位高电平有效。

ALE/PROG:地址锁存控制信号(ALE )是访问外部程序存储器时,锁存低8位地址的输出脉冲。在flash 编程时,此引脚(PROG )也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE 脉冲将会跳过。如果需要,通过将地址为8EH 的SFR 的第0位置“1”,ALE 操作将无效。这一位置“1”,ALE 仅在执行MOVX 或MOVC 指令时有效。否则,ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH 的SFR 的第0位)的设置对微控制器处于外部执行模式下无效。

PSEN :外部程序存储器选通信号(PSEN )是外部程序存储器选通信号。AT89S52从外部程序存储器执行外部代码时,PSEN 在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN 将不被激活。

EA/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH 的外部程序存储器读取指令,EA 必须接GND 。为了执行内部程序指令,EA 应该接Vcc 。在flash 编程期间,EA 也接收12伏Vpp 电压。

XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。

XTAL2:振荡器反相放大器的输出端。

3.1.2时钟电路

时钟电路是用来产生AT89S52单片机工作时所必须的时钟信号,AT89S52本身就是一个复杂的同步时序电路,为保证工作方式的实现,AT89S52在唯一的时钟信号的控制下严格的按时序执行指令进行工作,时钟的频率影响单片机的速度和稳定性。通常时钟由于两种形式:内部时钟和外部时钟。

我们系统采用内部时钟方式来为系统提供时钟信号。AT89S52内部有一个用于构成振荡器的高增益反向放大器,该放大器的输入输出引脚为XTAL1和XTAL2,它们跨接在晶体振荡器和用于微调的电容,便构成了一

3.2.1 DS18B20数字温度计

本次设计所采用的温度传感器为达拉斯DS18B20半导体可编程分辨率的单总线数字温度计。DS18B20无需外部器件。它的测温范围为-55~+125℃,并且在-10~+85℃精度为±0.5℃。DS18B20数字温度计提供9-12位摄氏温度测量。最多在750ms 内将温度转换为12位数字。报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件DS18B20有一个由高低电平触发的可编程的不因电源消失而改变的报警功能。DS18B20通过一个单线接口发送或接受信息,因此在中央处理器和DS18B20之间仅需一条连接线(加上地线)。除此之外,DS18B20能直接从单线通讯线上汲取能量,除去了对外部电源的需求,供电范围为3.0V 到5.5V 。DS18B20与DS1822兼容的软件。每个DS18B20都有一个独特的64位序列号,从而允许多只DS18B20同时连在一根单线总线上。因此,很简单就可以用一个微控制器去控制很多覆盖在一大片区域的DS18B20。这一特性在HVAC 环境控制、探测建筑物、仪器或机器的温度以及过程监测和控制等方面非常有用。DS18B20应用包括温度控制、工业系统、消费品、温度计或任何热感测系统。

本设计采用的TO -92封装的DS18B20引脚功能描述见表3.1:

表3.1 DS18B20详细引脚功能描述

序号 1 2 3

名称 GND DQ VDD

引脚功能描述

地信号

数据输入/输出引脚。开漏单总线接口引脚。当被用着在

寄生电源下,也可以向器件提供电源。

可选择的VDD 引脚。当工作于寄生电源时,此引脚必须

接地。

3.2.2 DS18B20操作原理

DS18B20 的核心功能是它的直接读数字的温度传感器。温度传感器的精度为用户可编程的9,10,11或12位,分别以0.5℃,0.25℃,0.125℃和0.0625℃增量递增。在上电状态下默认的精度为12位。DS18B20启动后保持低功耗等待状态;当需要执行温度测量和AD 转换时,总线控制器

必须发出[44h]命令。在那之后,产生的温度数据以两个字节的形式被存储到高速暂存器的温度寄存器中,DS18B20继续保持等待状态。当DS18B20由外部电源供电时,总线控制器在温度转换指令之后发起“读时序”,DS18B20正在温度转换中返回0, 转换结束返回1。

DS18B20中的温度传感器完成对温度的测量,用16位二进制形式提供,形式表达,其中头五位S 为符号位。如:+25.0625℃的数字输出为0000 0001 1110 0001(正温度直接把二进制数转成十进制乘以单位温度即得到温度值,对于负温度则取反加1后把二进制数转成十进制)。

DS18B20的存储器有一个暂存SRAM 和一个存储高低报警触发值TH 和TL 的非易失性电可擦除EEPROM 组成。注意当报警功能不使用时,TH 和TL 寄存器可以被当作普通寄存器使用。所有的存储器指令被详述于DS18B20功能指令节。位0和位1为测得温度信息的LSB 和MSB 。这两个字节是只读的。第2和第3字节是TH 和TL 的拷贝。位4包含配置寄存器数据,其被详述于配置寄存器节。位5,6和7被器件保留,禁止写入;这些数据在读回时全部表现为逻辑1。EPROM 寄存器中的数据在器件掉电时仍然保存;上电时,数据被载入暂存器。数据也可以通过召回EEPROM 命令从暂存器载入EEPROM 。总线控制器在发出这条命令后发出读时序,DS18B20返回0表示正在召回中,返回1表示操作结束。

存储器的第4位为配置寄存器。上电默认设置位6:R0=1:位5:R1=1。精度和转换时间之间有直接的关系。暂存器的位7(为0)和位0~4(为1)被器件保留,禁止写入。即12位精度时存储器状态为0111 1111在读回数据时,它们全部表现为逻辑1。

DS18B20完成一次温度转换后,就拿温度值与和存储在TH 和TL 中一个字节的用户自定义的报警预置值进行比较。标志位(S )指出温度值的正负:正数S=0,负数S=1。TH 和TL 寄存器是非易失性的,所以它们在掉电时仍然保存数据。当TH 和TL 为8位寄存器时,4位温度寄存器中的11个位用来和TH 、TL 进行比较。如果测得的温度高于TH 或低于TL ,报警条件成立,DS18B20内部就会置位一个报警标识。每进行一次测温就对这个标识进行一次更新;因此,如果报警条件不成立了,在下一次温度转换后

报警标识将被移去。总线控制器通过发出报警搜索命令[ECh]检测总线上所有的DS18B20报警标识。任何置位报警标识的DS18B20将响应这条命令,所以总线控制器能精确定位每一个满足报警条件的DS18B20。如果报警条件成立,而TH 或TL 的设置已经改变,另一个温度转换将重新确认报警条件。

其内部结构如图3.3:

图3.3 DS18B20内部结构示意图

因为一线通信接口,必须在先完成ROM 设定,否则记忆和控制功能将无法使用。主要首先DS18B20提供以下功能命令之一:读ROM ,ROM 匹配,搜索ROM ,跳过ROM ,报警检查。若指令成功地使DS18B20完成温度测量,数据存储在DS18B20的存储器。一个控制功能指挥指示DS18B20的演出测温。测量结果将被放置在DS18B20内存中,并可以让阅读发出记忆功能的指挥,阅读内容的片上存储器。温度报警触发器TH 和TL 都有一字节EEPROM 的数据。如果DS18B20不使用报警检查指令,这些寄存器可作为一般的用户记忆用途。在片上还载有配置字节以理想的解决温度数字转换。写TH ,TL 指令以及配置字节利用一个记忆功能的指令完成。所有的数据的读、写

管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳极数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳极数码管在应用时应将公共极COM 接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。

动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp" 的同名

端连在一起,另外为每个数码管的公共极COM 增加位选通控制电路,通过由各自独立的I/O线控制,当单片机的P0口输出字形码时,所有数码管

时,三极管导通,控制继电器开始加热,当P10为高电平时,三极管截止,继电器断开,停止加热,绿灯亮。

光电耦合器以光为媒介来传输电信号的器件,受光器接受光线之后就产生光电流,从输出端流出,从而实现了“电—光—电”转换。本设计采

本部分详细介绍了基于AT89S52单片机的多路温度采集控制系统的软件设计。根据系统功能,可以将系统设计分为若干个子程序进行设计,如温度采集子程序,数据处理子程序、显示子程序、执行子程序。采用Keil uVision3集成编译环境和C 语言来进行系统软件的设计。本章从设计思路、软件系统框图出发,先介绍整体的思路后,再逐一分析各模块程序算法的实现,最终编写出满足任务需求的程序。

采集到当前的温度,通过LED 数码管实现温度显示。通过按键任意设定一个恒定的温度将水环境数据与所设置的数据进行比较。当水温低于设定值时,开启加热设备,进行加热;当水温高于设定温度时,停止加热。当系统出现故障,超出控制温度范围时,自动蜂鸣报警并对温度进行实时显示。采用C 语言编写代码,鉴于篇幅限制及DS18B20的应用已经规范和成熟,本文仅就主程序流程图和显示子程序流程图及其代码进行说明。通过定时器T0 P3.4口的定时来实现,在此不再赘述。有关DS18B20的读写程序,编程时序分析等请见附录三。功能主程序流程图主程序通过调用温度采集子程序完成温度数据采集,然后调用温度转换子程序转换读取温度数据,调用显示子程序进行温度显示和判断温度数据。

主程序(见附录二)调用四个子程序,分别是温度采集程序、数码管显示程序、温度处理程序和数据存储程序。

温度采集程序:对温度芯片送过来的数据进行处理,进行判断和显示。 数码管显示程序:向数码的显示送数,控制系统的显示部分。 温度处理程序:对采集到的温度和设置的上、下限进行比较,做出判断,向继电器输出关断或闭合指令。

数据存储程序:对键盘的设置的数据进行存储。 其总程序流图如图4.1。

4.2各模块子程序设计

4.2.1主程序设计

主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s 进行一次。这样可以在一秒之内测量一

次被测温度,其程序流程见图4.2所示。

通过调用读温度子程序把存入内存储中的整数部分与小数部分分开存放在不同的两个单元中,然后通过调用显示子程序显示出来。

图4.1 系统总流程图

图4.2 主程序流程图

4.2.2读出温度子程序

读出温度子程序的主要功能是读出RAM 中的9字节,在读出时需进行CRC 校验,校验有错时不进行温度数据的改写。DS18B20的各个命令对时序的要求特别严格,所以必须按照所要求的时序才能达到预期的目的,同时,要注意读进来的是高位在后低位在前,共有12位数,小数4位,整数7位,还有一位符号位。

DS18B20的数据读写是通过时序处理位来确认信息交换的。当总线控制器发起读时序时,DS18B20仅被用来传输数据给控制器。因此,总线控制器在发出读暂存器指令[BEh]或读电源模式指令[B4H]后必须立刻开始读时序,DS18B20可以提供请求信息。所有读时序必须最少60us, 包括两个读周期间至少1us 的恢复时间。当总线控制器把数据线从高电平拉到低电平时,读时序开始,数据线必须至少保持1us, 然后总线被释放在总线控制器发出读时序后,DS18B20通过拉高或拉低总线上来传输1或0。当传输逻辑0结束后,总线将被释放,通过上拉电阻回到上升沿状态。从DS18B20输出的数据在读时序的下降沿出现后15us 内有效。因此,总线控制器在读时序开始后必须停止把I/O脚驱动为低电平15us, 以读取I/O脚状态。

其子程序流程图如图4.3。 4.2.3数码管显示模块

本系统采用八位共阳极数码管,用模拟串口的动态显示数据。其流程图如图4.4所示。 4.2.4温度处理程序

基于单片机水温控制系统通过DS18B20温度传感器采集到的温度和设置的温度上、下限进行比较得出结果。如果低于下限温度或是高于上限温度,则报警器进行进行报警。

图4.3 读出温度子程序

图4.4 数码管显示流程图

第五章 系统调试部分

5.1测试环境:测试时如不能外设小型制冷设备,则室温不应超过30℃。测试初始时水温以30℃以下为宜。 5.2测试注意事项:

(1)应保证DS18B20传感器位于容器内水的中央部位且不能与加热器接触,否则会造成温度测量不准确甚至元器件的损害。

(2)系统复位初始设定写入温度为上限H30℃,下限L10℃。 (3)测试不同温度时,所测试温度应由低到高。

5.3测试温度范围:30~90℃之间(模拟设计要求范围内的不同温度值环境)。

5.4测试仪器:数字万用表、温度计(可测量0.0~100.0℃)、盛有清水的器皿、220V 电源,秒表等。

5、测试方法:

(1)使系统运行,观察系统硬件检测是否正常(包括单片机控制系统,键盘电路,显示电路,温度测试电路等)。

(2)接通电后,系统可实时显示当前水温温度。可分别通过按键设定系统上限温度为30℃、35℃、40℃、45℃、50℃、55℃,60℃、65℃、70℃、75℃等不同温度,测试下限温度时方法同上。

(3)利用测试表格数据,观察显示数据是否相符合即可。采用温度传感器和温度计同时测量水温变化情况,目测显示电路是否正常。 (4)待温度稳定后,在单位时间内采样记录显示屏温度值,与温度计实际温度值比较,计算出选定度数的误差百分比精确度,得出系统的温度指标。

6、测试结果分析:系统自检正常,温度显示正常。因为芯片是塑料封装,所以对温度的感应灵敏度不是相当高,需要一个很短的时间达到稳定。经反复测试验证,本系统满足要求。用单片机控制水温可以在一定范围内设定,并能在环境温度变化时保持温度不变。

湖南科技大学本科生课程设计

参考文献

[1]张迎新等. 单片机初级教程. 北京:北京航空航天大学出版社.2006.8

[2]李小坚, 赵山林, 冯晓军, 龙怀冰.Protel DXP 电路设计与制版实用教程(第2版). 北京:人民邮电出版社.2009

[3]全国大学生电子设计竞赛组委会. 全国大学生电子设计竞赛获奖作品选编(第一届-第五届). 北京: 北京理工大学出版社.2004

[4]张琳娜, 刘武发. 传感检测技术及应用. 北京:中国计量出版社.1999

[5]沈德金, 陈粤初. MCS-51系列单片机接口电路与应用程序实例. 北京:北京航空航天大学出版社.1990

[6]周立功等. 增强型80C51单片机速成与实战. 北京:北京航空航天大学出版社.2003.7

[7]马忠梅等. 单片机的C 语言应用程序设计. 北京:北京航空航天大学出版社社.1998.10

[8]胡汉才. 单片机原理及接口技术. 北京:清华大学出版社社.1996 [9]李志全等. 智能仪表设计原理及应用. 北京:国防工业出版社.1998.6 [10]何立民.MCS-51系列单片机应用系统设计. 北京:北京航空航天大学出版社.1990.1

[11]姜威. 实用电子系统设计基础. 北京:北京理工大学出版社.2004

[12]李海滨, 片春媛, 许瑞雪. 单片机技术课程设计与项目实例. 北京:中国电力出版社.2009.10

[13]周润景, 徐宏伟, 丁莉. 单片机电路设计分析与制作. 北京:机械工业出版社.2010.8

[14]谭浩强.C 程序设计. 北京:清华大学出版社.2005

[15]陈杰, 黄鸿 .传感器与检测技术. 北京:高等教育出版社.2006

[16]高吉祥. 全国大学生电子设计竞培训系列教程. 北京:电子工业出版社.2007 [17]何小艇. 电子系统设计(第三版). 杭州:浙江大学出版社.2004

[18]张怀武. 现代印制电路原理与工艺(第二版). 北京:机械工业出版社.2010.1 [19] 刘同法,肖志刚,彭继卫.C51单片机C 程序模板与应用工程实践. 北京: 北京航空航天大学出版社.2010.8

[20]王辛之等.AT89系列单片机原理与接口技术. 北京:北京航空航天大学出版社.2004.5

[21]郭天祥.51单片机C 语言教程——入门、提高、开发、拓展全攻略. 北京:电子工业出版社.2009

[22]周向红.51单片机课程设计. 武汉:华中科技大学出版社.2011.1

附录

附录一:系统原理图

附录二:仿真图

附录三:系统程序

#include #include

#define uchar unsigned char #define uint unsigned int sbit ds=P3^4; sbit dula=P2^6; sbit beep=P1^4; uint temp,t,w; uchar flag; float f_temp; //uint low;

uint high=100; sbit jdq=P1^0; sbit led=P1^1;

sbit s1=P3^5; sbit s2=P3^6; sbit s3=P3^7;

uchar flag1,flag2,flag3,flag4,s1num;

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc6}; //共阳数码管段码表

uchar code table1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//带小数点的编码 void delay(uchar z) {

uchar a,b; for(a=z;a>0;a--) for(b=100;b>0;b--); } void init() { /*EA=1; ET1=1; TR1=1; TMOD=0x10;

//52系列头文件

//定义蜂鸣器

//定义整型的温度数据

//定义浮点型的温度数据 //定义温度的上限值

//控制发光二极管 //控制发光二极管

//定义温度下限值 是温度乘以10后的结果

//延时函数

TH1=(65536-4000)/256; TL1=(65536-4000)%256;*/ flag=0; high=100; jdq=1; }

void didi() { beep=0; led=0; delay(500); beep=1; led=1; delay(500); }

void dsreset(void) { uint i; ds=0; i=103; while(i>0) i--;

ds=1;

i=4;

while(i>0) i--; }

bit tempreadbit(void) { uint i; bit dat; ds=0;i++; ds=1;i++;i++; dat=ds; i=8;

while(i>0)i--; return(dat); }

//DS18b20复位, 初始化函数

//延时最短480us //等待16-60us ,收到低电平一个约60-240us 则复位成功 //读1位数据函数

//i++起到延时作用

uchar tempread(void) {

uint i,j,dat; dat=0;

for(i=1;i

j=tempreadbit(); dat=(j>1);

//读出的数据最低位在最前面,这样刚好一个字节在dat 里 }

return(dat); }

void tempwritebyte(uchar dat) //向DS18B20写一个字节的数据函数 { uint i; uchar j; bit testb; for(j=1;j

testb=dat&0x01; dat=dat>>1; if(testb) else {

//读1字节的数据函数

//写1

{ ds=0;

i++;i++; ds=1; i=8; while(i>0) i--;

}

//写0

ds=0;

i=8;

while(i>0) i--;

ds=1;

i++;i++;

}

}

}

void tempchange(void)

{

dsreset();

delay(1);

tempwritebyte(0xcc);

tempwritebyte(0x44);

}

uint get_temp()

{

uchar a,b;

dsreset();

delay(1);

tempwritebyte(0xcc);

tempwritebyte(0xbe);

a=tempread();

b=tempread();

temp=256*b+a;

f_temp=temp*0.0625;

temp=f_temp*10+0.5;

return temp;

}

void keyscan()

{

if(s1==0)

{P2=0xff;

delay(5);

if(s1==0)

{

//DS18B20开始获取温度并转换 //写跳过读ROM 指令 //写温度转换指令 //读取寄存器中存储的温度数据 //写跳过读ROM 指令 //写温度转换指令 //读低8位 //读高8位 //温度在寄存器中为12位,分辨率为0.0625 //乘以10表示小数点后面只取一位 //temp是整型 - 29 -

while(!s1);

s1num++;

if(s1num==1)

{

flag=1;

}

if(s1num==2)

{

s1num=0;

flag=0;

}

}

}

if(s1num==1)

{

flag=1;

if(s2==0)

{

delay(5);

if(s2==0)

{

while(!s2);

high+=10;

if(high==1000)

high=100;

}

}

if(s3==0)

{

delay(5);

if(s3==0)

{

while(!s3);

high-=10;

if(high==0)

- 30 -

}

void display(uint tem)

{

uchar i;

keyscan();

for(i=0;i

{

t++;

if(flag==0)

{

if(t==4) t=0;

switch(t)

{

case 0:P0=table[tem/100]; P2=0x01;break; case 1:P0=table1[tem%100/10];P2=0x02;break; case 2:P0=table[tem%10]; P2=0x04;break; }

delay(30);

}

if(flag==1)

{

if(t==4) t=0;

switch(t)

{

case 1:P0=table[high/100]; P2=0x01;break; case 2:P0=table[high%100/10];P2=0x02;break; case 3:P0=table[high%10]; P2=0x04;break; }

delay(30);

}

P2=0;

}

- 31 -

} } high=100; }

}

void main()

{

uint tp;

init();

while(1)

{

tempchange();

tp=get_temp();

display(tp);

if(tp

{

jdq=0;

didi();

}

if((tp>=high-10)&&(temp

jdq=0;

beep=1;

}

display(tp);

if((tp>high)&&(tp

{

jdq=1;

beep=1;

}

if(tp>high+10)

{

jdq=1;

}

}

- 32 -

//主函数 //温度转换函数 didi(); }

- 33 -

摘要

本文介绍了基于AT89S52单片机水温测量及控制系统的设计。系统硬

件部分由单片机电路、温度采集电路、键盘电路、LED 显示电路、继电器控制电路等组成。软件从设计思路、软件系统框图出发,逐一分析各模块程序算法的实现,通过C 语言编写出满足任务需求的程序。本系统采用数字式温度传感器DS18B20作为温度传感器,简易实用,方便拓展。单片机以此对水的温度进行有效检测与报警,并以此进行水温的控制。基于单片机水温控制系统采用多电源供电,降低了系统各个模块间的干扰,还保证了电源能为各部分提供足够的工作电流,提高系统的可靠性。

关键词:水温控制 AT89S52 DS18B20

目录

摘要 . ..................................................... i

第一章 绪论 ............................................... 1

1.1水温控制系统设计的背景 ............................. 1

1.2水温控制系统设计的意义 ............................. 1

1.3水温控制系统完成的功能 ............................. 2

第二章 系统设计方案选择 ................................... 3

2.1单片机及水温控制方案 ............................... 3

2.2水温传感器方案 ..................................... 3

2.3电源设计方案 ....................................... 4

2.4控制系统总体设计 ................................... 4

第三章 硬件设计部分 ....................................... 5

3.1单片机电路 ......................................... 5

3.2温度检测电路 ....................................... 9

3.3其它部分硬件电路 .................................. 13

第四章 软件设计部分 ...................................... 16

4.1程序设计方案 ...................................... 16

4.2各模块子程序设计 .................................. 17

第五章 系统调试部分 ...................................... 21

参考文献 ................................................. 23

附录 . .................................................... 24

第一章 绪论

1.1水温控制系统设计的背景

测量控制的作用是从生产现场中获取各种参数,运用科学计算的方法,综合各种先进技术,使每个生产环节都能够得到有效的控制,不但保证了生产的规范化、提高产品质量、降低成本,还确保了生产安全。所以,测量控制技术已经被广泛应用于炼油、化工、冶金、电力、电子、轻工和纺织等行业。

单片机以其集成度高、运算速度快、体积小、运行可靠、价格低廉等优势,在过程控制、数据采集、机电一体化、智能化仪表、家用电器以及网络技术等方面得到了广泛的应用,特别是单片机技术的开发与应用,标志着计算机发展史上又一个新的里程碑。作为计算机两大发展方向之一的单片机,以面向对象的实时控制为己任,嵌入到如家用电器、汽车、机器人、仪器仪表等设备中,使其智能化。

水温检测控制系统在工业生产、科学研究和人们的生活领域中,得到了广泛应用。在工业生产过程中,很多时候都需要对水温进行严格的监控,以使得生产能够顺利的进行,产品的质量才能够得到充分的保证。使用水温控制系统可以对生产环境的温度进行有效控制,保证生产的自动化、智能化能够顺利、安全进行,从而提高企业的生产效率。水温控制系统应用十分广阔。

1.2水温控制系统设计的意义

随着社会的发展,科技的进步,以及测温仪器在各个领域的应用,智能化已是现代温度控制系统发展的主流方向。温度测试控制系统,控制对象是温度。温度控制在日常生活及工业领域应用相当广泛,比如温室、水池、发酵缸、电源等场所的温度控制。而以往温度控制是由人工完成的而且不够重视,其实在很多场所温度都需要监控以防止发生意外。针对此问题,本系统设计的目的是实现一种可连续高精度调温的温度控制系统,它应用广泛,功能强大,小巧美观,便于携带,是一款既实用又廉价的控制系统。特别是近年来,温度控制系统已应用到人们生活的各个方面,温度

控制的开发与人们工作生活息息相关。水是一种我们赖以生存的重要资源,无论是在工农业生产还是我们的日常生活处处离不开水。控制水的温度可以极大提高生产效率,节约资源,提升我们的生活质量。在水资源日益匮乏的今天,拥有并推广简易完善的水温控制系统对于我们社会的可持续发展,有着极大的实际意义。

1.3水温控制系统完成的功能

本器件以AT89S52单片机系统进行温度采集与控制温度信号由模拟温度传感器DS18B20采集输入AT89S52,主控器能对各温度检测器通过LED 进行显示。

1.3.1本机实现的功能:

(1)利用温度传感器采集到当前的温度,通过AT89S52单片机进行控制,最后通过LED 数码管以串行口传送数据实现温度显示。

(2)可以通过按键任意设定一个恒定的温度。

(3)将水环境数据与所设置的数据进行比较,当水温低于设定值时,开启加热设备,进行加热;当水温高于设定温度时,停止加热,从而实现对水温的自动控制。

(4)当系统出现故障,超出控制温度范围时,自动蜂鸣报警。

1.3.2基本设计参数要求有:

一升水由800W 的电热设备加热,要求水温可以在一定范围内由人工设定,并能在环境温度降低时实现自动调整,以保持设定的温度基本不变。

(1)温度测量范围:30~90℃,最小区分度不大于0.1℃。

(2)控制精度在0.5℃以内,温度控制的静态误差小于1℃。

(3)用十进制数码管显示实际水温。

1.3.3扩展功能:

(1)具有通信能力,可接收其他数据设备发来的命令,或将结果传送到其他数据设备。

(2)采用适当的控制方法实现当设定温度或环境温度突变时,减小系统的调节时间和超调量。

(3)温度控制的静态误差。

第二章 系统设计方案选择

2.1单片机及水温控制方案

建立单片机水温控制系统可以采用8031作为控制核心,以使用最为普遍的器件ADC0804作模数转换,控制上使用对电阻丝加电使其升温。此方案简易可行,器件的价格便宜。但8031内部没有程序存储器,需要扩展,增加了电路的复杂性。但此方案在硬件、软件上的成本都比较高,而且易受外部环境的影响和限制,系统工作相对不稳定。

单片机种类繁多,经过比较。此次设计方案采用AT89S52单片机实现,该单片机软件编程自由度大,可用编程实现各种控制算法和逻辑控制。进行数据转换,控制电路部分采用继电器控制,此方案电路简单并且可以满足题目中的各项要求的数据。

2.2水温传感器方案

水温传感器可以采用极为普遍的晶体管3DG6作为温度传感器,廉价的电压/频率转换器(V/F)LM331与AT89S52单片机组成的温度测量仪。但抗干扰性差,数据处理复杂,数据存放空间大,受市场限制。

设计中广泛采用热电阻传感器,铂电阻温度传感器是利用其电阻和温度成一定函数关系而制成的温度传感器,由于其测量准确度高、测量范围大、稳定性好等特点,被广泛用于中温(-200℃~+650℃)范围的温度测量中。但铂电阻的电阻值与温度成非线性关系,所以需要进行非线性较正。校正分为模拟电路校正和微处理器数字化校正,模拟校正有很多现成的电路,其精度不高且易受温漂等干扰因素影响,数字化校正则需要在微处理系统中使用,将Pt 电阻的电阻值和温度对应起来后存入EEPROM 中,根据电路中实测的AD 值以查表方式计算相应温度值。

采用数字可编程温度传感器DS18B20作为温度检测元件。数字可编

程温度传感器可以直接读出被测温度值。不需要将温度传感器的输出信号接到A/D转换器上,减少了系统的硬件电路的成本和整个系统的体积进行数据转换,控制电路部分采用继电器控制,此方案电路简单并且可以满足题目中的各项要求的数据。由于采用具有一总线特点的温度传感器,所以电路连接简单;而且该传感器拥有强大的通信协议,同过几个简单的操作就可以实现传感器与单片机的交互,包括复位传感器、对传感器读写数据、对传感器写命令。软件、硬件易于调试,制作成本较低。也使得系统所测结果精度大大提高。

综合多方考虑,经过对各种温度传单器的比较,本设计决定采用DS18B20建立温度检测电路。

2.3电源设计方案

采用单一电源供电,各个部分很可能造成干扰,系统无法正确工作,还可能因为负载过大,电源无法提供足够的工作电流。特别是压机启动瞬间电流很大,而且逆变电路负载电流波动较大会造成电压不稳,有毛刺等干扰,严重时可能造成弱电部分电路掉电。

所以采用双电源,即电源负载驱动电路等强电部分用一个电源,数字电路等弱电部分用一个电源。但是电路间还是可能会产生干扰,造成系统不正常,而且还可能会对单片机的工作产生干扰,影响单片机的正常工作。

最终我们采用多电源供电方式,即对数字电路、驱动电路分别供电,这种方案即降低了系统各个模块间的干扰,还保证了电源能为各部分提供足够的工作电流,提高系统的可靠性。

2.4控制系统总体设计

本次设计采用采样值和键盘设定值进行比较运算的方法来简单精确地控制温度。先通过键盘输入设定温度,保存在AT89S52单片机的指定单元中,再利用温度传感器DS18B20进行信号的采集,送入单片机中,保存在采样值单元。然后把采样值与设定值进行比较运算,得出控制量,从而调节继电器触发端的通断,来实现将水温控制在一定的范围内。当水温超出单片机预存温度时,蜂鸣器进行报警。单片机控制系统是一个完整的智能化的集数据采集、显示、处理、控制于一体的系统。由传感器、LED 显

示单片机及执行机构控制部分等组成。系统结构框图如图2.1所示:

图2.1系统结构框图

第三章 硬件设计部分

3.1单片机电路

本设计采用的AT89S52是一种低功耗、高性能CMOS8位微控制器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上8K 字节Flash 允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU 和在系统可编程Flash ,使得AT89S52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。

AT89S52单片机主要功能特点有:与MCS-51单片机产品兼容;8K 字节在系统可编程Flash 存储器;256字节RAM ;1000次擦写周期;全静态操作:三级加密程序存储器;32位可编程I/O口线;双数据指针;三个16位定时器/计数器;八个中断源(一个6向量2级中断结构);全双工UART 串行通道;片内晶振及时钟电路;看门狗定时器;掉电标识符;0Hz~33Hz,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU 停止工作,允许RAM 、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM 内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止,掉电后中断可唤醒。

3.1.1 AT89S52引脚功能

图3.1 AT89S52单片机引脚结构示意图

VCC :电源(+5V)。

GND :地。

P0口:本次设计中P0口与P2口共同实现LED 显示功能。P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL 逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在flash 编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻。

P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL 逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL )。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX @DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVX @RI)访问外部数据存储器时,P2口输出P2锁存器的内容。

在flash 编程和校验时,P2口也接收高8位地址字节和一些控制信号。

P1口:本次设计P1口中P1.0将用于控制继电器;P1.1和P1.4用于报警系统。P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL 逻辑电平。对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL )。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX)。在flash 编程和校验时,P1口接收低8位地址字节。P1口第二功能有:

P1.0:T2(定时器/计数器T2的外部计数输入,时钟输出)

P1.1:T2EX (定时器/计数器T2的捕捉/重载触发信号和方向控制) P1.5:MOSI (在系统编程用)

P1.6:MISO (在系统编程用)

P1.7:SCK (在系统编程用)

P3口:本设计中P3口将用于接收水温信号和按键信息。P3口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL 逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL )。P3口亦作为AT89S52特殊功能(第二功能)使用,如下表所示。在flash 编程和校验时,P3口也接收一些控制信号。本次设计P3口中P3.4将用于接收发送温度型号。P3引脚号第二功能有:

P3.0:RXD (串行输入)

P3.1:TXD (串行输出)

P3.2:INT0(外部中断0)

P3.3:INT0(外部中断0)

P3.4:T0(定时器0外部输入)

P3.5:T1(定时器1外部输入)

P3.6:WR (外部数据存储器写选通)

P3.7:RD (外部数据存储器写选通)

RESET :复位输入。晶振工作时,RST 脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96个晶振周期的高电平。特殊寄存器AUXR(地址8EH) 上的DISRTO 位可以使此功能无效。DISRTO 默认状态下,复位高电平有效。

ALE/PROG:地址锁存控制信号(ALE )是访问外部程序存储器时,锁存低8位地址的输出脉冲。在flash 编程时,此引脚(PROG )也用作编程输入脉冲。在一般情况下,ALE 以晶振六分之一的固定频率输出脉冲,可用来作为外部定时器或时钟使用。然而,特别强调,在每次访问外部数据存储器时,ALE 脉冲将会跳过。如果需要,通过将地址为8EH 的SFR 的第0位置“1”,ALE 操作将无效。这一位置“1”,ALE 仅在执行MOVX 或MOVC 指令时有效。否则,ALE 将被微弱拉高。这个ALE 使能标志位(地址为8EH 的SFR 的第0位)的设置对微控制器处于外部执行模式下无效。

PSEN :外部程序存储器选通信号(PSEN )是外部程序存储器选通信号。AT89S52从外部程序存储器执行外部代码时,PSEN 在每个机器周期被激活两次,而在访问外部数据存储器时,PSEN 将不被激活。

EA/VPP:访问外部程序存储器控制信号。为使能从0000H 到FFFFH 的外部程序存储器读取指令,EA 必须接GND 。为了执行内部程序指令,EA 应该接Vcc 。在flash 编程期间,EA 也接收12伏Vpp 电压。

XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。

XTAL2:振荡器反相放大器的输出端。

3.1.2时钟电路

时钟电路是用来产生AT89S52单片机工作时所必须的时钟信号,AT89S52本身就是一个复杂的同步时序电路,为保证工作方式的实现,AT89S52在唯一的时钟信号的控制下严格的按时序执行指令进行工作,时钟的频率影响单片机的速度和稳定性。通常时钟由于两种形式:内部时钟和外部时钟。

我们系统采用内部时钟方式来为系统提供时钟信号。AT89S52内部有一个用于构成振荡器的高增益反向放大器,该放大器的输入输出引脚为XTAL1和XTAL2,它们跨接在晶体振荡器和用于微调的电容,便构成了一

3.2.1 DS18B20数字温度计

本次设计所采用的温度传感器为达拉斯DS18B20半导体可编程分辨率的单总线数字温度计。DS18B20无需外部器件。它的测温范围为-55~+125℃,并且在-10~+85℃精度为±0.5℃。DS18B20数字温度计提供9-12位摄氏温度测量。最多在750ms 内将温度转换为12位数字。报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件DS18B20有一个由高低电平触发的可编程的不因电源消失而改变的报警功能。DS18B20通过一个单线接口发送或接受信息,因此在中央处理器和DS18B20之间仅需一条连接线(加上地线)。除此之外,DS18B20能直接从单线通讯线上汲取能量,除去了对外部电源的需求,供电范围为3.0V 到5.5V 。DS18B20与DS1822兼容的软件。每个DS18B20都有一个独特的64位序列号,从而允许多只DS18B20同时连在一根单线总线上。因此,很简单就可以用一个微控制器去控制很多覆盖在一大片区域的DS18B20。这一特性在HVAC 环境控制、探测建筑物、仪器或机器的温度以及过程监测和控制等方面非常有用。DS18B20应用包括温度控制、工业系统、消费品、温度计或任何热感测系统。

本设计采用的TO -92封装的DS18B20引脚功能描述见表3.1:

表3.1 DS18B20详细引脚功能描述

序号 1 2 3

名称 GND DQ VDD

引脚功能描述

地信号

数据输入/输出引脚。开漏单总线接口引脚。当被用着在

寄生电源下,也可以向器件提供电源。

可选择的VDD 引脚。当工作于寄生电源时,此引脚必须

接地。

3.2.2 DS18B20操作原理

DS18B20 的核心功能是它的直接读数字的温度传感器。温度传感器的精度为用户可编程的9,10,11或12位,分别以0.5℃,0.25℃,0.125℃和0.0625℃增量递增。在上电状态下默认的精度为12位。DS18B20启动后保持低功耗等待状态;当需要执行温度测量和AD 转换时,总线控制器

必须发出[44h]命令。在那之后,产生的温度数据以两个字节的形式被存储到高速暂存器的温度寄存器中,DS18B20继续保持等待状态。当DS18B20由外部电源供电时,总线控制器在温度转换指令之后发起“读时序”,DS18B20正在温度转换中返回0, 转换结束返回1。

DS18B20中的温度传感器完成对温度的测量,用16位二进制形式提供,形式表达,其中头五位S 为符号位。如:+25.0625℃的数字输出为0000 0001 1110 0001(正温度直接把二进制数转成十进制乘以单位温度即得到温度值,对于负温度则取反加1后把二进制数转成十进制)。

DS18B20的存储器有一个暂存SRAM 和一个存储高低报警触发值TH 和TL 的非易失性电可擦除EEPROM 组成。注意当报警功能不使用时,TH 和TL 寄存器可以被当作普通寄存器使用。所有的存储器指令被详述于DS18B20功能指令节。位0和位1为测得温度信息的LSB 和MSB 。这两个字节是只读的。第2和第3字节是TH 和TL 的拷贝。位4包含配置寄存器数据,其被详述于配置寄存器节。位5,6和7被器件保留,禁止写入;这些数据在读回时全部表现为逻辑1。EPROM 寄存器中的数据在器件掉电时仍然保存;上电时,数据被载入暂存器。数据也可以通过召回EEPROM 命令从暂存器载入EEPROM 。总线控制器在发出这条命令后发出读时序,DS18B20返回0表示正在召回中,返回1表示操作结束。

存储器的第4位为配置寄存器。上电默认设置位6:R0=1:位5:R1=1。精度和转换时间之间有直接的关系。暂存器的位7(为0)和位0~4(为1)被器件保留,禁止写入。即12位精度时存储器状态为0111 1111在读回数据时,它们全部表现为逻辑1。

DS18B20完成一次温度转换后,就拿温度值与和存储在TH 和TL 中一个字节的用户自定义的报警预置值进行比较。标志位(S )指出温度值的正负:正数S=0,负数S=1。TH 和TL 寄存器是非易失性的,所以它们在掉电时仍然保存数据。当TH 和TL 为8位寄存器时,4位温度寄存器中的11个位用来和TH 、TL 进行比较。如果测得的温度高于TH 或低于TL ,报警条件成立,DS18B20内部就会置位一个报警标识。每进行一次测温就对这个标识进行一次更新;因此,如果报警条件不成立了,在下一次温度转换后

报警标识将被移去。总线控制器通过发出报警搜索命令[ECh]检测总线上所有的DS18B20报警标识。任何置位报警标识的DS18B20将响应这条命令,所以总线控制器能精确定位每一个满足报警条件的DS18B20。如果报警条件成立,而TH 或TL 的设置已经改变,另一个温度转换将重新确认报警条件。

其内部结构如图3.3:

图3.3 DS18B20内部结构示意图

因为一线通信接口,必须在先完成ROM 设定,否则记忆和控制功能将无法使用。主要首先DS18B20提供以下功能命令之一:读ROM ,ROM 匹配,搜索ROM ,跳过ROM ,报警检查。若指令成功地使DS18B20完成温度测量,数据存储在DS18B20的存储器。一个控制功能指挥指示DS18B20的演出测温。测量结果将被放置在DS18B20内存中,并可以让阅读发出记忆功能的指挥,阅读内容的片上存储器。温度报警触发器TH 和TL 都有一字节EEPROM 的数据。如果DS18B20不使用报警检查指令,这些寄存器可作为一般的用户记忆用途。在片上还载有配置字节以理想的解决温度数字转换。写TH ,TL 指令以及配置字节利用一个记忆功能的指令完成。所有的数据的读、写

管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳极数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳极数码管在应用时应将公共极COM 接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。

动态驱动是将所有数码管的8个显示笔划"a,b,c,d,e,f,g,dp" 的同名

端连在一起,另外为每个数码管的公共极COM 增加位选通控制电路,通过由各自独立的I/O线控制,当单片机的P0口输出字形码时,所有数码管

时,三极管导通,控制继电器开始加热,当P10为高电平时,三极管截止,继电器断开,停止加热,绿灯亮。

光电耦合器以光为媒介来传输电信号的器件,受光器接受光线之后就产生光电流,从输出端流出,从而实现了“电—光—电”转换。本设计采

本部分详细介绍了基于AT89S52单片机的多路温度采集控制系统的软件设计。根据系统功能,可以将系统设计分为若干个子程序进行设计,如温度采集子程序,数据处理子程序、显示子程序、执行子程序。采用Keil uVision3集成编译环境和C 语言来进行系统软件的设计。本章从设计思路、软件系统框图出发,先介绍整体的思路后,再逐一分析各模块程序算法的实现,最终编写出满足任务需求的程序。

采集到当前的温度,通过LED 数码管实现温度显示。通过按键任意设定一个恒定的温度将水环境数据与所设置的数据进行比较。当水温低于设定值时,开启加热设备,进行加热;当水温高于设定温度时,停止加热。当系统出现故障,超出控制温度范围时,自动蜂鸣报警并对温度进行实时显示。采用C 语言编写代码,鉴于篇幅限制及DS18B20的应用已经规范和成熟,本文仅就主程序流程图和显示子程序流程图及其代码进行说明。通过定时器T0 P3.4口的定时来实现,在此不再赘述。有关DS18B20的读写程序,编程时序分析等请见附录三。功能主程序流程图主程序通过调用温度采集子程序完成温度数据采集,然后调用温度转换子程序转换读取温度数据,调用显示子程序进行温度显示和判断温度数据。

主程序(见附录二)调用四个子程序,分别是温度采集程序、数码管显示程序、温度处理程序和数据存储程序。

温度采集程序:对温度芯片送过来的数据进行处理,进行判断和显示。 数码管显示程序:向数码的显示送数,控制系统的显示部分。 温度处理程序:对采集到的温度和设置的上、下限进行比较,做出判断,向继电器输出关断或闭合指令。

数据存储程序:对键盘的设置的数据进行存储。 其总程序流图如图4.1。

4.2各模块子程序设计

4.2.1主程序设计

主程序的主要功能是负责温度的实时显示、读出并处理DS18B20的测量的当前温度值,温度测量每1s 进行一次。这样可以在一秒之内测量一

次被测温度,其程序流程见图4.2所示。

通过调用读温度子程序把存入内存储中的整数部分与小数部分分开存放在不同的两个单元中,然后通过调用显示子程序显示出来。

图4.1 系统总流程图

图4.2 主程序流程图

4.2.2读出温度子程序

读出温度子程序的主要功能是读出RAM 中的9字节,在读出时需进行CRC 校验,校验有错时不进行温度数据的改写。DS18B20的各个命令对时序的要求特别严格,所以必须按照所要求的时序才能达到预期的目的,同时,要注意读进来的是高位在后低位在前,共有12位数,小数4位,整数7位,还有一位符号位。

DS18B20的数据读写是通过时序处理位来确认信息交换的。当总线控制器发起读时序时,DS18B20仅被用来传输数据给控制器。因此,总线控制器在发出读暂存器指令[BEh]或读电源模式指令[B4H]后必须立刻开始读时序,DS18B20可以提供请求信息。所有读时序必须最少60us, 包括两个读周期间至少1us 的恢复时间。当总线控制器把数据线从高电平拉到低电平时,读时序开始,数据线必须至少保持1us, 然后总线被释放在总线控制器发出读时序后,DS18B20通过拉高或拉低总线上来传输1或0。当传输逻辑0结束后,总线将被释放,通过上拉电阻回到上升沿状态。从DS18B20输出的数据在读时序的下降沿出现后15us 内有效。因此,总线控制器在读时序开始后必须停止把I/O脚驱动为低电平15us, 以读取I/O脚状态。

其子程序流程图如图4.3。 4.2.3数码管显示模块

本系统采用八位共阳极数码管,用模拟串口的动态显示数据。其流程图如图4.4所示。 4.2.4温度处理程序

基于单片机水温控制系统通过DS18B20温度传感器采集到的温度和设置的温度上、下限进行比较得出结果。如果低于下限温度或是高于上限温度,则报警器进行进行报警。

图4.3 读出温度子程序

图4.4 数码管显示流程图

第五章 系统调试部分

5.1测试环境:测试时如不能外设小型制冷设备,则室温不应超过30℃。测试初始时水温以30℃以下为宜。 5.2测试注意事项:

(1)应保证DS18B20传感器位于容器内水的中央部位且不能与加热器接触,否则会造成温度测量不准确甚至元器件的损害。

(2)系统复位初始设定写入温度为上限H30℃,下限L10℃。 (3)测试不同温度时,所测试温度应由低到高。

5.3测试温度范围:30~90℃之间(模拟设计要求范围内的不同温度值环境)。

5.4测试仪器:数字万用表、温度计(可测量0.0~100.0℃)、盛有清水的器皿、220V 电源,秒表等。

5、测试方法:

(1)使系统运行,观察系统硬件检测是否正常(包括单片机控制系统,键盘电路,显示电路,温度测试电路等)。

(2)接通电后,系统可实时显示当前水温温度。可分别通过按键设定系统上限温度为30℃、35℃、40℃、45℃、50℃、55℃,60℃、65℃、70℃、75℃等不同温度,测试下限温度时方法同上。

(3)利用测试表格数据,观察显示数据是否相符合即可。采用温度传感器和温度计同时测量水温变化情况,目测显示电路是否正常。 (4)待温度稳定后,在单位时间内采样记录显示屏温度值,与温度计实际温度值比较,计算出选定度数的误差百分比精确度,得出系统的温度指标。

6、测试结果分析:系统自检正常,温度显示正常。因为芯片是塑料封装,所以对温度的感应灵敏度不是相当高,需要一个很短的时间达到稳定。经反复测试验证,本系统满足要求。用单片机控制水温可以在一定范围内设定,并能在环境温度变化时保持温度不变。

湖南科技大学本科生课程设计

参考文献

[1]张迎新等. 单片机初级教程. 北京:北京航空航天大学出版社.2006.8

[2]李小坚, 赵山林, 冯晓军, 龙怀冰.Protel DXP 电路设计与制版实用教程(第2版). 北京:人民邮电出版社.2009

[3]全国大学生电子设计竞赛组委会. 全国大学生电子设计竞赛获奖作品选编(第一届-第五届). 北京: 北京理工大学出版社.2004

[4]张琳娜, 刘武发. 传感检测技术及应用. 北京:中国计量出版社.1999

[5]沈德金, 陈粤初. MCS-51系列单片机接口电路与应用程序实例. 北京:北京航空航天大学出版社.1990

[6]周立功等. 增强型80C51单片机速成与实战. 北京:北京航空航天大学出版社.2003.7

[7]马忠梅等. 单片机的C 语言应用程序设计. 北京:北京航空航天大学出版社社.1998.10

[8]胡汉才. 单片机原理及接口技术. 北京:清华大学出版社社.1996 [9]李志全等. 智能仪表设计原理及应用. 北京:国防工业出版社.1998.6 [10]何立民.MCS-51系列单片机应用系统设计. 北京:北京航空航天大学出版社.1990.1

[11]姜威. 实用电子系统设计基础. 北京:北京理工大学出版社.2004

[12]李海滨, 片春媛, 许瑞雪. 单片机技术课程设计与项目实例. 北京:中国电力出版社.2009.10

[13]周润景, 徐宏伟, 丁莉. 单片机电路设计分析与制作. 北京:机械工业出版社.2010.8

[14]谭浩强.C 程序设计. 北京:清华大学出版社.2005

[15]陈杰, 黄鸿 .传感器与检测技术. 北京:高等教育出版社.2006

[16]高吉祥. 全国大学生电子设计竞培训系列教程. 北京:电子工业出版社.2007 [17]何小艇. 电子系统设计(第三版). 杭州:浙江大学出版社.2004

[18]张怀武. 现代印制电路原理与工艺(第二版). 北京:机械工业出版社.2010.1 [19] 刘同法,肖志刚,彭继卫.C51单片机C 程序模板与应用工程实践. 北京: 北京航空航天大学出版社.2010.8

[20]王辛之等.AT89系列单片机原理与接口技术. 北京:北京航空航天大学出版社.2004.5

[21]郭天祥.51单片机C 语言教程——入门、提高、开发、拓展全攻略. 北京:电子工业出版社.2009

[22]周向红.51单片机课程设计. 武汉:华中科技大学出版社.2011.1

附录

附录一:系统原理图

附录二:仿真图

附录三:系统程序

#include #include

#define uchar unsigned char #define uint unsigned int sbit ds=P3^4; sbit dula=P2^6; sbit beep=P1^4; uint temp,t,w; uchar flag; float f_temp; //uint low;

uint high=100; sbit jdq=P1^0; sbit led=P1^1;

sbit s1=P3^5; sbit s2=P3^6; sbit s3=P3^7;

uchar flag1,flag2,flag3,flag4,s1num;

uchar code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xc6}; //共阳数码管段码表

uchar code table1[]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10};//带小数点的编码 void delay(uchar z) {

uchar a,b; for(a=z;a>0;a--) for(b=100;b>0;b--); } void init() { /*EA=1; ET1=1; TR1=1; TMOD=0x10;

//52系列头文件

//定义蜂鸣器

//定义整型的温度数据

//定义浮点型的温度数据 //定义温度的上限值

//控制发光二极管 //控制发光二极管

//定义温度下限值 是温度乘以10后的结果

//延时函数

TH1=(65536-4000)/256; TL1=(65536-4000)%256;*/ flag=0; high=100; jdq=1; }

void didi() { beep=0; led=0; delay(500); beep=1; led=1; delay(500); }

void dsreset(void) { uint i; ds=0; i=103; while(i>0) i--;

ds=1;

i=4;

while(i>0) i--; }

bit tempreadbit(void) { uint i; bit dat; ds=0;i++; ds=1;i++;i++; dat=ds; i=8;

while(i>0)i--; return(dat); }

//DS18b20复位, 初始化函数

//延时最短480us //等待16-60us ,收到低电平一个约60-240us 则复位成功 //读1位数据函数

//i++起到延时作用

uchar tempread(void) {

uint i,j,dat; dat=0;

for(i=1;i

j=tempreadbit(); dat=(j>1);

//读出的数据最低位在最前面,这样刚好一个字节在dat 里 }

return(dat); }

void tempwritebyte(uchar dat) //向DS18B20写一个字节的数据函数 { uint i; uchar j; bit testb; for(j=1;j

testb=dat&0x01; dat=dat>>1; if(testb) else {

//读1字节的数据函数

//写1

{ ds=0;

i++;i++; ds=1; i=8; while(i>0) i--;

}

//写0

ds=0;

i=8;

while(i>0) i--;

ds=1;

i++;i++;

}

}

}

void tempchange(void)

{

dsreset();

delay(1);

tempwritebyte(0xcc);

tempwritebyte(0x44);

}

uint get_temp()

{

uchar a,b;

dsreset();

delay(1);

tempwritebyte(0xcc);

tempwritebyte(0xbe);

a=tempread();

b=tempread();

temp=256*b+a;

f_temp=temp*0.0625;

temp=f_temp*10+0.5;

return temp;

}

void keyscan()

{

if(s1==0)

{P2=0xff;

delay(5);

if(s1==0)

{

//DS18B20开始获取温度并转换 //写跳过读ROM 指令 //写温度转换指令 //读取寄存器中存储的温度数据 //写跳过读ROM 指令 //写温度转换指令 //读低8位 //读高8位 //温度在寄存器中为12位,分辨率为0.0625 //乘以10表示小数点后面只取一位 //temp是整型 - 29 -

while(!s1);

s1num++;

if(s1num==1)

{

flag=1;

}

if(s1num==2)

{

s1num=0;

flag=0;

}

}

}

if(s1num==1)

{

flag=1;

if(s2==0)

{

delay(5);

if(s2==0)

{

while(!s2);

high+=10;

if(high==1000)

high=100;

}

}

if(s3==0)

{

delay(5);

if(s3==0)

{

while(!s3);

high-=10;

if(high==0)

- 30 -

}

void display(uint tem)

{

uchar i;

keyscan();

for(i=0;i

{

t++;

if(flag==0)

{

if(t==4) t=0;

switch(t)

{

case 0:P0=table[tem/100]; P2=0x01;break; case 1:P0=table1[tem%100/10];P2=0x02;break; case 2:P0=table[tem%10]; P2=0x04;break; }

delay(30);

}

if(flag==1)

{

if(t==4) t=0;

switch(t)

{

case 1:P0=table[high/100]; P2=0x01;break; case 2:P0=table[high%100/10];P2=0x02;break; case 3:P0=table[high%10]; P2=0x04;break; }

delay(30);

}

P2=0;

}

- 31 -

} } high=100; }

}

void main()

{

uint tp;

init();

while(1)

{

tempchange();

tp=get_temp();

display(tp);

if(tp

{

jdq=0;

didi();

}

if((tp>=high-10)&&(temp

jdq=0;

beep=1;

}

display(tp);

if((tp>high)&&(tp

{

jdq=1;

beep=1;

}

if(tp>high+10)

{

jdq=1;

}

}

- 32 -

//主函数 //温度转换函数 didi(); }

- 33 -


相关内容

  • AT89C51单片机水温控制系统
  • 张鹏:基于AT89C51单片机的水温控制系统设计 正文第 1 页 共 25 页 1 引 言 1.1 单片机 1.1.1 单片机简介 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU 随机存储器RAM .只读存储器ROM .多种I/O口和中断系统.定时器/计时 ...

  • 太阳能热水器论文
  • 摘 要 在能源日益紧张的今天,电热水器,饮水机和电饭煲之类的家用电器在保温时,由于其简单的温控系统,利用温敏电阻来实现温控,因而会造成很大的能源浪费. 但是利用AT89C52 单片机为核心,配合温度传感器,信号处理电路,显示电路, 输出控制电路,故障报警电路等组成的控制系统却能解决这个问题.单片机可 ...

  • 基于单片机的电热水器控制器设计
  • 毕业论文 课程设计题目:基于单片机的电热水器 控制器设计 学 院:机械与电子工程学院 学生姓名:彭晓武 班 级:080621 学 号:08062137 指导教师:付志坚 2011年11月1日 摘 要 本文设计的控制器采用AT89S51单片机作为控制核心来设计智能电热水器.本设计也对单片机控制电热水器 ...

  • 电子工艺与管理专业毕业设计任务书
  • 毕业设计课题:基于51单片机水温控制器设计 学生姓名    银xx 学    号      9 系 名 称       信息工程 专业及班级   电子工艺与管理 电子1203班 指导教师    罗坚 xx信息职业技术学院 电子工艺与管理   专业  XX   届学生毕业设计任务书 学生姓名 银xx  ...

  • 单片机毕业论文题目
  • PLC电路在备用自动投入中 PLC在变电站变压器自动化中的实现 VHDL电路设计 变频恒压供水控制系统的研究 超声波测距模块的设计 车辆牌照图像识别算法研究与实现 城市交通决策支持系统 出租车计费系统的设计 串口通信控制器 串口通讯 – 单片机程序控制语音播放 单片机串行通信发射部分设计 单片机的多 ...

  • 单片机毕业设计题目
  • 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数字气压计的设计与实现 8. 基于MSC1211的温度智能温度传感器 9. 机器视觉系统 ...

  • 自动化毕业设计论文题目
  • 自 动 化 毕 业 设 计 论 文 题 目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数字气压计的设计与实现 8. 基于MSC12 ...

  • 通信工程毕业设计题目精选
  • 不管怎样,生活还是要继续向前走去.有的时候伤害和失败不见得是一件坏事,它会让你变得更好,孤单和失落亦是如此.每件事到最后一定会变成一件好事,只要你能够走到最后. 通信工程毕业设计题目精选 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激 ...

  • 电气自动化设计论文题目大全
  • 机电一体化 毕 业 设 计 论 文 题 目 第1-100个电气自动化毕业设计论文题目 1. 智能压力传感器系统设计 2. 智能定时器 3. 液位控制系统设计 4. 液晶控制模块的制作 5. 嵌入式激光打标机运动控制卡软件系统设计 6. 嵌入式激光打标机运动控制卡硬件系统设计 7. 基于单片机控制的数 ...