1
绪 论.................................................................................................................................. 1 1.1 选题的现状及背景意义 ............................................................................................. 1 1.2 研究内容及创新点..................................................................................................... 1 系统方案的选择与论证 ....................................................................................................... 3 2.1 2.2 2.3
设计要求 .................................................................................................................. 3 系统基本方案 ........................................................................................................... 3 各模块方案选择 ....................................................................................................... 3 2.3.1 单片机的选择 ................................................................................................ 3 2.3.2 温度传感器的选择 ......................................................................................... 4 2.3.3 显示模块的选择 ............................................................................................. 5 2.3.4 键盘模块的选择 ............................................................................................. 6 系统的硬件设计 .................................................................................................................. 7 3.1 3.2
电源电路模块 ........................................................................................................... 7 温度测量模块 ........................................................................................................... 7 3.2.1 DS18B20的测温原理 ..................................................................................... 8 3.2.2 DS18B20的性能特点 ..................................................................................... 8
2
3
3.2.3 DS18B20的引脚功能 ..................................................................................... 9 3.2.4 DS18B20的内部存储器.................................................................................. 9 3.2.5 DS18B20的工作时序 .................................................................................... 11 3.3 单片机最小系统电路 ...............................................................................................12
3.3.1 单片机的时钟电路 ........................................................................................12 3.3.2 AT89S51介绍及引脚功能说明 .......................................................................13 3.4 键盘接口 .................................................................................................................15
3.4.1 按键开关去抖动问题 .....................................................................................15 3.4.2 查询式按键及其接口 .....................................................................................17 3.4.3 矩阵式键盘及其接口 .....................................................................................17 3.4.4 键盘扫描控制方式 ........................................................................................17 3.5 LED数码管显示接口...............................................................................................19
3.5.1 LED数码管 ..................................................................................................19 3.5.2 LED数码管编码方式 ....................................................................................19 3.5.3 LED数码管显示方式和典型应用电路............................................................20 3.6 继电器控制电路 ......................................................................................................22 3.7 温度过程控制 ..........................................................................................................22 系统软件设计 ....................................................................................................................23 4.1
温度采集控制系统设计 ............................................................................................23 4.1.1 主程序方案 ...................................................................................................23 4.1.2 主要模块程序的介绍 .....................................................................................23 结 论.................................................................................................................................27
4
5
参考文献 ..................................................................................................................................28 致 谢........................................................................................................................................29 附 录1 .....................................................................................................................................30 附 录2 .....................................................................................................................................31
1 绪 论
1.1 选题的现状及背景意义
在现代化的工业生产中,电流、电压、温度、压力、流量、流速和开关量都是常用的主要被控参数。例如:在冶金工业、化工生产、电力工程、造纸行业、机械制造和食品加工等诸多领域中,人们都需要对各类加热炉、热处理炉、反应炉和锅炉中的温度进行检测和控制。采用MCS-51单片机来对温度进行控制,不仅具有控制方便、组态简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大提高产品的质量和数量[1]。因此,单片机对温度的控制问题是一个工业生产中经常会遇到的问题,以单片机为主要核心的应用技术已成为一项新的工程应用技术。单片机以其集成度高、运算速度快、体积小、运行可靠、价格低廉等优势,在过程控制系统、数据采集、机电一体化、智能化仪表、家用电器以及网络技术等方面得到了广泛的应用。
温度控制系统是比较常见的和典型的过程系统,温度是工业生产过程中重要的被控参数之一,在冶金、机械、食品、化工等各类工业生产过程中广泛使用的各种加热炉、热处理炉、反应炉,对工件的处理温度等均需要对温度严格控制。利用单片机、温度传感器实现对温度的控制,具有体积小、编程简单、价格低的优点,在发电厂、纺织、食品、医药、仓库等许多领域得到了很快的应用。因此具有很好的发展前景和可靠的使用价值。
1.2 研究内容及创新点
本设计是针对MCS—51型89S51系列单片机在检测和控制方面的应用,首先介绍了一下在设计中用到的一些重要芯片,如AT89S51、DS18B20等,使读者在阅读过程中,对各个芯片的具体功能更加清晰;在温度过程控制系统设计中,详细的介绍了控制要求及键盘接口有关知识,也将设计的流程图、源程序及电路图有序的列出,同样清晰大方。
本设计是将温度通过DS18B20进行采样并转换为0-5V的电压信号进入AT89S51单片机,从I/O口输出到八段数码管LED静态显示部分显示其温度。同时显示电路显
1
示设定的恒温值,恒温值在0℃~50℃范围内可调。当实际温度低于设定的恒定温度2℃时,单片机发出指令信号,继电器吸合,红色LED点亮,加热电阻开始加热。当温度超过设定的恒温值2℃时,单片机发出指令信号,继电器断开,红色LED熄灭,加热电阻停止加热,制冷采用自然冷却。采用独立式查询键盘设定和改变初始值、比较设定值与输入温度值来控制继电器的加热,从而实现对温度的控制。
本次设计主要分为硬件设计和软件设计。硬件设计分为电源电路,测温电路,单片机最小系统,键盘接口电路,LED显示电路,继电器控制电路。软件设计分为温度采集程序,键值处理子程序,显示子程序,采集信号转换子程序等。
在硬件电路的设计中系统采用220V/50Hz交流电供电,电源电路负责提供5V、+12V和-12V直流电源,主要用到了集成稳压块7805、7812和7912。测温电路负责将现场温度近似线性的转换为0—5V的直流电压信号,信号送至单片机。单片机将测温电路送过来的电压信号进行显示和计算,并通过相应的程序完成相应的动作。单片机最小系统是单片机以及整个系统能够正常工作的前提,包括晶振电路,复位电路等。
2
2 系统方案的选择与论证
2.1 设计要求
本系统的设计要求是:DS18B20数字量温度采集、五位数码管静态温度显示、键盘设定温度、继电器开关量温度控制。
2.2 系统基本方案
根据技术指标,该系统为一个温度采集控制系统。该系统主要由控制部分和执行部分组成。控制部分包括单片机最小系统模块、键盘模块、DS18B20、显示模块、电源模块等。执行部分主要由加热和自然冷却装置组成。整个系统实现对数据的采集运算,对温度参数的设置,对采集数据的显示和加热装置的控制。整个系统图框如图2-1所示。
单 片 机 键盘模块 显示模块 最小系统外围电路 电源模块 测控对象 DS18B20
继电器模块 图2-1 基本模块方案图
2.3 各模块方案选择
2.3.1 单片机的选择
方案一:采用传统的89C51作为电机的控制核心。单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制,并且由于其功耗低、体积小、技术成熟和成本低等优点,使其在各个领域应用广泛。
方案二:AT89S51是一种低功耗/低电压、高性能的8位单片机。片内带有一个4KB的Flash可编程、可擦除只读存储器(EPROM)。它采用了CMOS工艺和ATMEL
3
公司的高密度非易失性存储器(NURAM)技术,而且其输出引脚和指令系统都与MSC-51兼容。片内的Flash存储器允许在系统内改编程序或用常规的非易失性存储器编程器来编程。因此AT89S51是一种功能强、灵活性高,且价格合理的单片机,可方便地应用在各种控制领域。同时支持ISP在线下载。
由于本系统对CPU运算速度要求很高,需要执行很复杂的运算,相比之下方案二要好一些,所以采用方案二。
2.3.2 温度传感器的选择
方案一:模拟式温度传感器
常见的模拟式温度传感器有热电偶、热敏电阻、LM3911、LM335、LM45、AD22103电压输出型、AD590电流输出型。
(1) 负温度系数热敏电阻
负温度系数热敏电阻是以金属氧化物为主要原料,采用陶瓷工艺制造而成。有灵敏度高、稳定性好、响应快、寿命长、价格低等优点,广泛应用于需要定点测温的温度自动控制电路。
(2) AD590温度传感器
AD590是美国模拟器件公司的电流输出型温度传感器,供电电压范围为3-30V,输出电流223μA(-50ºC)~423μA(+150ºC),灵敏度为1μA/ºC。适用于多点温度测量和远距离温度测量的控制。
3.LM135/235/335温度传感器
LM135/235/335系列是美国国家半导体公司(NS)生产的一种高精度易校正的集成温度传感器。该系列器件广泛应用于温度测量、温差测量以及温度补偿系统中。
方案二:逻辑输出型温度传感器
在许多应用中,我们并不需要严格测量温度值,只关心温度是否超出了一个设定范围。此时可选用逻辑输出式温度传感器。LM56、MAX6501-MAX6504是其典型代表。
(1) LM56温度开关
LM56是NS公司生产的高精度低压温度开关,内置1.25V参考电压输出端。最大只能带50μA的负载。
(2) MAX6501/02/03/04温度监控开关
4
MAX6501/02/03/04是具有逻辑输出和SOT-23封装的温度监视器件开关,它的设计非常简单:用户选择一种接近于自己需要的控制的温度门限直接将其接入电路即可使用,无需任何外部元件。这类器件的工作电压范围为2.7V到5.5V,典型工作电流30μA。
方案三:数字式温度传感器 (1) MAX6575/76/77数字温度传感器
如果采用数字式接口的温度传感器,设计将得到简化。同样,当A/D和微处理器的I/O管脚短缺时,采用时间或频率输出的温度传感器也能解决上述测量问题。该器件通过一条I/O口与微处理器相连,利用微处理器内部的计数器测出周期后就可计算出温度。
(2) 可多点检测、直接输出数字量的数字温度传感器DS1621
DS1621是美国达拉斯半导体公司生产的CMOS数字式温度传感器。内含两个不挥发性存储器,可以在存储器中任意的设定上限和下限温度值进行恒温器的温度控制,由于这些存储器具有不挥发性,因而一次写入后,即使不用CPU也仍然可以独立作用。
方案四:DS18B20数字温度计
DS18B20数字温度计是DALLAS公司生产的1-Wire,即单总线器件,具有线路简单,体积小的特点。因此用它来组成一个测温系统,具有线路简单,在一根通信线,可以挂很多这样的数字温度计,十分方便。
DS18B20产品的特点:
(1) 只要求一个端口即可实现通信。
(2) 在DS18B20中的每个器件上都有独一无二的序列号。 (3) 实际应用中不需要外部任何元器件即可实现测温。 (4) 测量温度范围在-55°C到+125°C之间。
(5) 数字温度计的分辨率用户可以从9位到12位选择。 (6) 内部有温度上、下限告警设置[2]。
由于本系统要求灵敏度高、线性度好、实际尺寸小、使用方便、热响应快而且价格便宜等优点。所以采用方案四中的DS18B20。
2.3.3 显示模块的选择
方案一:使用液晶显示屏显示物体中画笔所在位置的坐标。 液晶显示屏(LCD)
5
具有轻薄短小、低耗电量、无辐射危险,平面直角显示以及影象稳定不闪烁等优势,可视面积大,画面效果好,分辨率高,抗干扰能力强等特点。但由于只需显示位置坐标这样的数字,信息量比较少,且由于液晶是以点阵的模式显示各种符号,需要利用控制芯片创建字符库,编程工作量大,控制器的资源占用较多,其成本也偏高。在使用时,不能有静电干扰,否则易烧坏液晶的显示芯片,不易维护。
方案二:使用传统的数码管显示。 数码管具有:低能耗、低损耗、低压、寿命长、耐老化、防晒、防潮、防火、防高(低)温,对外界环境要求低,易于维护,同时其精度比较高,称重轻,精确可靠,操作简单。数码管采用BCD编码显示数字,程序编译容易,资源占用较少[3]。
根据以上的论述,采用方案二。在本系统中,我们采用了数码管串口的静态显示,节省单片机的内部资源。
2.3.4 键盘模块的选择
在温度过程控制中,系统需要对环境的温度进行设定,因此需要用按键。 方案一:使用独立式键盘。独立式键盘是指直接用I/O口线构成的单个按键电路。优点是电路配置灵活,软件实现简单。但缺点也很明显,每个按键需要占用一根口线,若按键数量较多,资源浪费将比较严重,电路结构也变得复杂。因此本方法主要用于按键较少或对操作速度要求较高的场合。软件实现时,可以采用中断方式,也可以采用查询方式。
方案二:使用矩阵式键盘。矩阵式键盘是由行线和列线组成,按键位于行、列的交叉点上,行线、列线分别连接到按键开关的两端。其特点是简单且不增加成本,这种键盘适合按键数量较多的场合[4]。
根据以上的论述,因本系统需要的按键不多,要求简单。所以采用方案一独立式
键盘。
6
3 系统的硬件设计
系统的硬件主要包括电源模块、DS18B20、单片机最小系统模块、键盘接口模块、LED数码管显示模块、继电器控制模块,实现对温度的采集及运算,对温度参数的设置,对采集数据的显示和对继电器的控制。
3.1 电源电路模块
电源电路负责提供5V、+12V和-12V直流电源,主要用到了集成稳压块7805、7812和7912。设计电源电路如图3-1 所示。
D-U17812+12VOUT3D-D1D-C10.33uVD1-VD4D-D3220/15D-C20.33u1GND1IND-T1D-C40.1uD-U379122GNDINOUT2-12VD-C50.1uD-R12KD-R22KD-R31KVD9-VD12D-U27805GND1D-T2D-D23INOUT3+5VD-C60.1uD-D4LEDD-D5LEDD-D6LEDD-C30.33u220/11.5VD5-VD82
图3-1 电源电路
3.2 温度测量模块
DS18B20是一种单端通信的数字式温度传感器,这就大大减小了温度测量电路的复杂程度,我们将单片机的一条I/O分配给温度传感器,即可完成温度采集的的硬件需求[5]。单片机通过对温度传感器的初始化,发出温度转换命令,写入和读出数据的命令来实现温度值的测量。
另外,也考虑过用模拟式的温度传感器,但由于数据采集部分需要A/D转换,还需要设计相应的放大电路,电路设计较为复杂,并且在可靠性和抗干扰能力上都不如数字式温度传感器,所以最终选择了用数字式传感器DS18B20进行温度测量的较简单的温度测量模块。
7
3.2.1 DS18B20的测温原理
本系统在温度采集中使用的DS18B20测温原理图如图3-2所示:图中低温度系数晶振的振荡频率受温度的影响很小,用于产生固定频率的脉冲信号送给减法计数器1;高温度系数晶振随温度变化其振荡频率明显改变,所产生的信号作为减法计数器2的脉冲输入。图中还隐含着计数门,当计数门打开时,DS18B20就对低温度系数振荡器产生的时钟脉冲进行计数,进而完成温度测量,计数门的开启时间由高温度系数振荡器来决定,每次测量前,首先将-55℃所对应的一个基数分别置入减法计数器1、温度寄存器中[6]。
图3-2 DS18B20测温原理图
3.2.2 DS18B20的性能特点
DS18B20是一种使用方便的温度传感器,其性能特点如下: (1) 具有独特的单线接口方式,只要求一个端口即可实现通信 (2) 内含64位经过激光修正的只读存储器ROM (3) 在DS18B20中的每个器件上都有独一无二的序列号 (4) 实际应用中不需要外部任何元器件即可实现测温
(5) 测量温度范围在-55℃到+125℃之间,测量分辨率为0.0625℃ (6) 数字温度计的分辨率用户可以从9位到12位选择
(7) 内部有温度上、下限告警设置,用户可分别设定各路温度的上、下限 (8) 支持多接点
(9) 可用数据线供电,电压范围:3.0~5.5V
(10) 负压特性:电源极性接反时,温度计不会因发热而烧毁,但不能正常工作[7]。
8
3.2.3 DS18B20的引脚功能
图3-3 底视图
系统所选的是3脚的PR-35封装DS18B20数字温度传感器,引脚功能如下表所示:
表3-1 DS18B20的引脚功能描述 序号 1 2 3 名称 GND DQ 引脚功能描述 接地信号 数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下 可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地,也可以VDD 向 器件提供电源 3.2.4 DS18B20的内部存储器
DS18B20的内部有一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL。高速暂存存储器由9个字节组成,其分配如表3-2所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。表中对应的一部分温度值。第3和第4字节是TH 和TL的拷贝,是易失性的,每次上电复位时被刷新,第5字节为配置寄存器,它主要用来确定温度值的数字转换分辨率[8]。低5位一直为1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在出厂时该位被设置为0,用户不要去改动。
表3-2 DS18B20暂存寄存器分布
寄存器内容 温度值低位 温度值高位 高温限值TH 低温限值TL 配置寄存器 保留 保留 保留 CRC检验
9
字节地址 0 1 2 3 4 5 6 7 8
单片机可通过单线接口读到该数据,读时低位在前,高位在后,数据格式如下表:
表3-3 温度值和数据量之间的关系 数字输出(二进制输出) 数字输出(十六进制) 00000000 11111010 00000000 00110010 00000000 00000001 00000000 00000000 11111111 11111111 11111111 11001110 11111111 10010010 00 FAH 00 32H 00 01H 00 00H FF FFH FF CEH FF 92H 温度 +125℃ +25℃ +0.5℃ 0℃ -0.5℃ -25℃ -125℃ R1和R0决定温度转换的精度位数,用来设置分辨率如表3-4所示,默认为12位,分辨率为0.0625℃。6,7,8字节保留未用,为全逻辑1,第9字节是冗余检验字节[9]。
表3-4 配置存储器与分辨率关系
R0 0 0 1 1 R1 0 1 0 1 温度计分辨率/bit 9 10 11 12 最大转换时间/ms 93.75 187.5 375 750 温度算法(分辨率为0.0625℃):
(1)当SSSSS=11111b ,D=-1;当SSSSS=00000b,D=1 (2)当D=1时,温度值T=[(高字节×256+低字节)×0.0625 (3)当D=-1时,温度值T=-[(256-高字节)×256-低字节]×0.0625[10] 温度采集过程如图3-4所示:
图3-4温度采集过程图
10
3.2.5 DS18B20的工作时序
DS18B20的工作时序主要包括:初始化时序、写时序、读时序。 (1) 初始化时序
初始化时序见图3-5主机总线在t0时刻发送一个最短为480μs的低电平复位脉冲信号,接着在t1时刻释放总线并进入接收状态,DSl8B20在检测到总线的上升沿之后,等待15μs~60μs,接着在t2时刻发出低脉冲(60μs~240μs),如图中虚线所示,18B20响应之后又恢复为高电平,t2~t4称为18B20的响应时间,最少为480μs。
图3-5 初始化时序
(2) 写时序
当主机总线t0时刻从高拉至低电平时,就产生写时序,见图3-6,从t0时刻开始15μs之内应将所需写的位送到总线上,DSl8B20在t0后15μs~60μs间对总线采样。若为低电平,写入的位是0;若为高电平,写入的位是1。连续写2位间的时序应大于1μs。
图3-6 写时序
(3)读时序
见图3-7主机总线t0时刻从高拉至低电平时总线只须保持低电平1μs之后在t1时刻将总线拉高,产生读时序,读时序在t1时刻后t2时刻前有效。t2距t0为15μs,也就是说,t2时刻前主机必须完成读位,并在t0后的60μs~120μs内释放总线。
图3-7 读时序
11
3.3 单片机最小系统电路
单片计算机应该是一个最小的应用系统,但由于应用系统中有一些功能器件无法集成到芯内部,如晶振、复位电路等,需要在片外加接相应的电路。
3.3.1 单片机的时钟电路
MCS-51单片机内部的振荡电路是一个高增益反相放大器,引线XTAL1和XTAL2分别是放大器的输入端和输出端。单片机内部虽然有振荡电路,但要形成时钟,外部还需附加电路。MCS-51单片机的时钟产生方式有两种: XTAL 1 2 XTAL VCC 晶振 外部时钟信号 TTL XTAL2 XTAL1 图3-3使用片内振荡电路的时钟电路 图3-4 HMOS型单片机的外部时钟电路
(1) 内部时钟方式:
利用其内部的振荡电路在XTAL1和XTAL2引线上外接定时元件,内部振荡电路便产生自激振荡,用示波器可以观察到XTAL2输出的时钟信号。最常用的是在XTAL1
和XTAL2之间连接晶体振荡器与电容构成稳定的自激震荡器,如图3-8所示。
晶体可在1.2~12MHz之间选择。MCS-51单片机在通常应用情况下,使用振荡频率为6MHz的石英晶体,而12MHz频率的晶体主要是在高速串行通信情况下才使用。对电容值无严格要求,但它的取值对振荡频率输出的稳定性、大小及振荡电路起振速度有少许影响。C1和C2可在20~100pF之间取值,一般取30pF左右。
(2) 外部时钟方式
在有些系统中,为了各单片机之间时钟信号的同步,应当引入惟一的合用外部振荡脉冲作为各单自片机的时钟。外部时钟方式中是把外部振荡信号源直接接入XTAL1或XTAL2。由于HMOS和CHMOS单片机外部时钟进入的引线不同,其外部振荡信号源接入的方式也不同。HMOS型单片机由XTAL2进入,外部振荡信号接至XTAL2,而内部反相放大器的输入端XTAL1应接地[11],如图3-9所示。由于XTAL2端的逻辑电平不是TTL的,故还要接一上拉电阻。CHMOS型单片机由XTAL1进入,外部振荡信号接至XTAL1,而XTAL2可不接地,如图3-10所示:
12
不接 外部时钟 XTAL2 XTAL1 图3-10 CHMOS型单片机的外部时钟电路
3.3.2 AT89S51介绍及引脚功能说明
AT89S51是一种低功耗/低电压、高性能的8位单片机。片内带有一个4KB的Flash可编程、可擦除只读存储器(EPROM)。它采用了CMOS工艺和ATMEL公司的高密度非易失性存储器(NURAM)技术,而且其输出引脚和指令系统都与MSC-51兼容。片内的Flash存储器允许在系统内改编程序或用常规的非易失性存储器编程器来编程。因此AT89S51是一种功能强、灵活性高,且价格合理的单片机,可方便地应用在各种控制领域。
另外,AT89S51是用静态逻辑来设计的,其工作频率可下降到0Hz,并提供两种可用软件来选择的省电方式—空闲方式(Idle Mode)和掉电方式(Power Down Mode)。在这空闲方式中,CPU停止工作,而RAM、定时器/计数器、串行口和中断系统都继续工作。在掉电方式中,片内振荡器停止工作,由于时钟被“冻结”,使一切功能都暂停,故只保存片内RAM中的内容,直到下一次硬件复位为止。
以下是对其引脚及其功能的简要说明: (1) 主电源引脚:接电源。 (2) 外接晶体引脚XTAL1和XTAL2
XTAL1:接外部晶体的一个引脚。在单片机内部,它是构成片内振荡器的反放大器的输入端。当采用外部振荡器时,该引脚接收振荡器的信号,即把此信号直接接到内部时钟发生器的输入端。
XTAL2:接外部晶体的另一个引脚。在单片机内部,它是上述振荡器的反相放大器的输出端。采用外部振荡器时,此引脚应悬浮不连接。
(3) 控制或与其他电源复用引脚RST,ALE/PROG,EA/Vpp
RST:复位输入端。当振荡器运行时,在该引脚上出现两个机器周期的高电平将
13
使单片机复位。
ALE/PROG:当访问外部存储器时,ALE(地址锁存允许)的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍以不变的频率(此频率为振荡器频率的1/6)周期性地出现正脉冲信号。因此,它可用作对外输出的时钟,或用于定时目的。然而要注意的是:每当访问外部数据存储器时,将跳过一个ALE脉冲。
PSEN:程序存储允许(PSEN)输出是外部程序存储器的读选通信号。当
AT89S51/LV51由外部程序存储器取指令(或常数)时,每个机器周期两次PSEN有效(即输出2个脉冲)。但在此期间内,每当访问外部数据存储器时,这两次有效的PSEN信号将不出现。
EA/Vpp:外部访问允许端。要使CPU只访问外部程序存储器(地址为0000H~
FFFFH),则EA端必须保持低电平(接到GND端)。然而要注意的是,如果保密位LB1被编程,复位时在内部会锁存EA端的状态。当EA端保持高电平(接Vcc端)时,CPU则执行内部程序存储器中的程序。
(4) 输入/输出引脚P0.0~P0.7,P1.0~P1.7,P2.0~P2.7和P3.0~P3.7 P0端口(P0.0~P0.7):P0是一个8位漏极开路型双向I/O端口。作为输出口用时,每位能以吸收电流的方式驱动8个TTL输入,对端口写1时,又可作高阻抗输入端用。在Flash编程时,P0端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。
P1端口(P1.0~P1.7):P1是一个带有内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可驱动(吸收或输出电流方式)4个输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流(IIL)。在对Flash编程和程序校验时,P1接收低8位地址。
P2端口(P2.0~P2.7):P2是一个带有内部上拉电阻的8位双向I/O端口。P2的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位,这时可用作输入口。P2作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流(IIL)。在对Flash编程和程序校难期间,P2也接收高位地址和一些控制信号。
14
P3端口(P3.0~P3.7):P3是一个带内部上拉电阻的8位双向I/O端口。P3的输出缓冲器可驱动(吸收或输出电流方式)4个TTL输入。对端口写1时,通过内部的上拉电阻把端口拉到高电位[12],这时可用作输入口。P3作输入口使用时,因为有内部的上拉电阻,那些被外部信号拉低的引脚会输出一个电流(IIL)。在AT89S51中,P3端口还用于一些复用功能,在对Flash编程或程序校验地,P3还接收一些控制信号。复用功能如表3-5所列:
表3-5 P3各端口引脚与复用功能表 端口引脚 复用功能 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 P3.6 P3.7 RXD(串行输入口) TXD(串行输出口) INTO(外部中断0) INT1(外部中断1) T0(定时器0的外部输入) T1(定时器1的外部输入) WR(外部数据存储器写选通) RD(外部数据存储器读选通) 3.4 键盘接口
键盘在单片机系统中是一个很重要的部件。输入数据、查询和控制系统的工作状态,都要用到键盘,键盘是人工干预计算机的主要手段[13]。
键盘可分为编码和非编码键盘两种。编码键盘采用硬件线线路来实现键盘编码,每按下一个键,键盘能自动生成按键代码,键数较多,而且还具有去抖动功能。这种键盘使用方便,但硬件较复杂,PC机所用的键盘就属于这种。非编码键盘仅提供按键开关工作状态,其他工作由软件完成,这种键盘键数较少,硬件简单,一般在单片机应用系统中广泛使用。此处主要介绍该类非编码键盘及其与MCS—51型单片机的接口。
3.4.1 按键开关去抖动问题
15
按键开关在电路中的连接如图3-11a所示。按键未按下时,A点电位为高电平5V;按键按下时,A点电位为低电平。A点电位就用于向CPU传递按键的开关状态。但是由于按键的结构为机械弹性开关,在按键按下和断开时,触点在闭合和断开瞬间还会接触不稳定,引起A点电平不稳定,如图3-11b所示,键盘的抖动时间一般为5~10ms,抖动现象会引起CPU对一次键操作进行多次处理,从而可能产生错误。因此必须设法消除抖动的不良后果
图3-11键输入和键抖动
消除抖动的不良后果的方法有硬、软件两种: 硬件去抖如图3-12。
a b 图3-12硬件消抖电路
其中:a为利用双稳态电路的去抖动电路
c
b是利用单稳态电路的去抖动电路 c为利用RC积分电路的去抖动电路
除硬件去抖外,还可采用软件去抖。根据抖动特性,在第一次检测到按键按下后,执行一段延时10ms子程序后再确认该键是否确实按下,从而消除抖动的影响。
16
3.4.2 查询式按键及其接口
按照键盘与CPU的连接方式可以分为查询按键和矩阵式键盘。查询式按键是各按键相互独立,每个按键占用一根I/O口线,每根I/O口线上的按键工作状态不会影响其他I/O口线上按键的工作状态。查询式按键电路配置灵活,软件结构简单,但每个按键必须占用一根I/O口线,在按键数量较多时,I/O口线浪费较大,且电路结构显得繁杂[14]。故这种形式适用于按键数量较少的场合。
3.4.3 矩阵式键盘及其接口
矩阵式键盘又称行列式键盘,其结构如图3-13所示,图中有4根行线和4根列线,经限流电阻接+5V电源上,按键跨接在行线和列线上,4×4行列结构可构成16个按键,组成一个键盘。与独立式按键相比,16个按键只占用8根I/O口线,因此适用于按键较多的场合。
当无键闭合时,P1.0~P1.3与相应的P1.4~P1.7之间开路。当有键闭合时,与闭合键相连接的两条I/O口线之间短路。判断有无键按下的方法是:第一步,置列线P1.4~P1.7为输入态,从行线P1.0~P1.3输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。第二步,置行线P1.0~P1.3输出低电平,读入列线数据,若某一列线为低电平,则该列线上有键闭合。综合一二两步的结果,可确定按键编号。但是键闭合一次只能进行一次键功能操作,因此须等待按键释放后,再进行键功能操作,否则按一次键,有可能会连续多次进行同样的键操作。
图3-13行列式键盘的结构
3.4.4 键盘扫描控制方式
在单片机应用系统中,对键盘的处理工作仅是CPU工作内容的一部分,CPU还
17
要进行数据处理、显示和其他输入输出操作,因此键盘处理工作既不能占用CPU太多时间,又需要CPU对键盘操作及时作出响应。CPU对键盘处理控制的工作方式有以下几种:
(1) 程序控制扫描方式
程序控制扫描方式是在CPU工作空余,调用键盘扫描子程序,响应键输入信号要求。
(2) 定时控制扫描方式
定时控制扫描方式是利用定时/计数器每隔一段时间发生定时中断,CPU响应中断后对键盘进行扫描,并在有键闭合时转入该键的功能子程序。 (3) 中断控制扫描方式
中断控制扫描方式是利用外部中断源,响应输入信号。当无按键按下时,CPU执行正常工作程序。当有按键按下时,CPU立即产生中断。在中断服务子程序中扫描键盘,判断是哪一个键被按下,然后执行该键的功能子程序。这种控制方式克服了前两种控制方式可能产生的空扫描和不能及时响应键输入的缺点,既能及时处理键输入,又能提高CPU运行效率,但要占用一个宝贵的中断资源。图3-14即工作于中断方式的矩阵式键盘接口电路。在初始化时P1.4~P1.7置输出0,P1.0~P1.3置为输入态,P1.0~P1.3分别接至与门各输入端。当有键闭合时INTO=0,CPU中断后,在中断服务子程序中,再完成键识别和键功能处理。
本设计提供了解2个按钮的小键盘,向P1口输出低电平,如果有键盘按下,则相应输出为低,如果没有键按下,则输出为高。通过这样可以判断按下什么键。
在有键按下后有一定的延时,防止键盘抖动。具体设计见源程序及主电路图。
图3-14 工作于中断方式的矩阵式键盘接口电路
18
3.5 LED数码管显示接口
在单片机应用系统中,如果需要显示的内容只有数码和某些字母,使用LED数码管是一种较好的选择。LED数码管显示清晰、成本低廉、配置灵活,与单片机接口简单易行。
3.5.1 LED数码管
LED数码管是由发光二极管做为显示字段的数码型显示器件。图2-15a为0.5inLED数码管的外形和引脚图,其中七只发光二极管分别对应a~g笔段构成“日”字形另一只发光二极管D p作为小数点。因此这种LED显示器称为七段数码管或八段数数码[15]。
LED数码管按电路中的连接方式可以分为共阴型和共阳型两大类,如图3-15中b、c所示。共阳型是将各段发光二极管的正极连在一起,作为公共端COM,公共端COM接高电平,a~g、D p各笔段通过限流电阻接控制端。某笔段控制端低电平时,该笔段发光,高电平时不发光。控制几段笔段发光,就能显示出某个数码或字符。共阴型是将各数码发光二极管的负极连在一起,作为公共端COM接地,某笔段通过限流电阻接高电平时发光。本设计选用共阳极结构。
图3-15 LED数码管
LED数码管按其外形尺寸有多种形式,使用较多的是0.5in和0.8in;按显示颜色也有多种形式,主要有红色和绿色;按亮度强弱可分为高亮和普亮,指通过同样的电流显示亮度不一样,这是因发光二极管的材料不一样而引起的[16]。
3.5.2 LED数码管编码方式
19
当LED数码管与单片机相联时,一般将LED数码管的各笔段引脚a、b、„、g、Dp按某一顺序接到MCS-51型单片机某一个并行I/O口D0、D1、„、D7,当该I/O口输出某一特定数据时,就能使LED数码管显示出某个字符。例如要使共阳极LED数码管显示“0”,则a、b、c、d、e、f各笔段引脚为低电平,g和Dp为高电平,如表3-6所示:
表3-6 共阳极LED数码管显示数字“0”时各管段编码
D7 Dp 1
D6 g 1 D5 f 0 D4 e 0 D3 d 0 D2 c 0 D1 b 0 D0 a 0 字段码 显示数 C0H 0 C0H称为共阳LED数码管显示“0”的字段码,不计小数点的字段码称为七段码,包括小数点的字段称为八段码。
LED数码管编码方式有多种,按小数点计否可分为七段码和八段码;按共阴共阳可分为共阴字段码和共阳字段码,不计小数点的共阴字段码与共阳字段码互为反码;按a、b、„、g、Dp编码顺序是高位在前,还是低位在前,又可分为顺序字段码和逆序字段码。甚至在某些特殊情况下将a、b、„、g、Dp顺序打乱编码。
3.5.3 LED数码管显示方式和典型应用电路
LED数码管显示电路在单片机应用系统中可分为静态显示方式和动态显示方式。 (1) 静态显示方式
在静态显示方式下,每一位显示器的字段需要一个8位I/O口控制,而且该I/O口须有锁存功能,N位显示器就需要N个8位I/O口,公共端可直接接+5V(共阳)或接地(共阴)。显示时,每一位字段码分别从I/O控制口输出,保持不变直至CPU刷新显示为止。也就是各字段的亮灭状态不变。静态显示方式编程较简单,但占用I/O口线多,即软件简单、硬件成本高,一般适用显示位数较少的场合[17]。
(2) 动态扫描显示方式
当要求显示位数较多时,为了简化电路、降低硬件成本,采用动态扫描电路。 本设计为静态显示,电路如图3-16所示。显示电路由5个LED数码管组成。输入只有两个信号,它们是串行数据线DIN和移位信号CLK。
20
图3-16 静态显示电路
21
3.6 继电器控制电路
当实际温度低于设定的恒定温度2℃时,单片机发出指令信号,继电器吸合,红色LED点亮,加热电阻开始加热。当温度超过设定的恒温值2℃时,单片机发出指令信号,继电器断开,红色LED熄灭,加热电阻停止加热,制冷采用自然冷却。如图3-17所示:
图3-17 继电器控制电路
3.7 温度过程控制
温度过程控制的电路图见附录一
22
4 系统软件设计
4.1 温度采集控制系统设计
4.1.1 主程序方案
主程序调用五个子程序,分别是温度采集程序、键盘处理程序、数码管显示程序、温度处理程序和数据存储程序。
(1) 键盘扫描电路及按键处理程序:实现键盘的输入按键的识别及相关处理。 (2) 温度采集程序:对温度芯片送过来的数据进行处理,进行判断和显示。 (3) 数码管显示程序:向数码的显示送数,控制系统的显示部分。
(4) 温度处理程序:对采集到的温度和设置的上、下限进行比较,作出判断,并有二极管和喇叭输出。
(5) 数据存储程序:对键盘的设置的数据进行存储。 (6) 系统框图见附录二。
4.1.2 主要模块程序的介绍
(1) 温度采集程序
温度采集子程序流程图.其具体程序如下:
//初始化函数
Init_DS18B20(void) { unsigned char x=0;
DQ = 1; // DQ复位 delay(8); // 稍做延时
DQ = 0; // 单片机将DQ拉低 delay(80); // 精确延时 大于 480us DQ = 1; // 拉高总线 delay(14);
x=DQ; //稍做延时后 如果x=0则初始化成功 x=1则初始化失败 delay(20); }
//读一个字节
ReadOneChar(void) { unsigned char i=0;
unsigned char dat = 0; for (i=8;i>0;i--) {
23
DQ = 0; // 给脉冲信号 dat>>=1;
DQ = 1; // 给脉冲信号 if(DQ) dat|=0x80; delay(4); }
return(dat); }
//写一个字节
WriteOneChar(unsigned char dat) { unsigned char i=0; for (i=8; i>0; i--) { DQ = 0;
DQ = dat&0x01; delay(5); DQ = 1; dat>>=1; }
delay(4); }
//读取温度
ReadTemperature(void) { unsigned char a=0; unsigned char b=0; unsigned char t=0; Init_DS18B20();
WriteOneChar(0xCC); // 跳过读序号列号的操作 WriteOneChar(0x44); // 启动温度转换 Init_DS18B20();
WriteOneChar(0xCC); //跳过读序号列号的操作
WriteOneChar(0xBE); //读取温度寄存器等(共可读9个寄存器)度
a=ReadOneChar(); //读取温度值低位 b=ReadOneChar(); //读取温度值高位
a=a>>4; //低位右移4位,舍弃小数部分 t=b<<4; //高位左移4位,舍弃符号位 t=t|a; return(t); } (2) 键盘处理程序
sbit jjxkey=P3^2;加一设置程序 sbit jxkey=P3^3; 减一设置程序 sbit setkey=P3^4;设置键 sbit qdjkey=P3^7;确定键
24
前两个就是温
在这里我要说明一点,我们在按键处理的时候采用了两键同时按下时来执行上限和下限的温度设定。具体实现程序如下:
void setlowkey ()
{ unsigned int lowtemp; DQ=1; delayms();
start1: display_tempmain(lowtemp);
if(jjxkey==0) { delayms();
lowtemp=lowtemp+1;
if (lowtemp==99) { lowtemp=00;} }
if(jxkey==0) { delayms();
lowtemp=lowtemp-1; if (lowtemp==00) { lowtemp=99;} } if(qdjkey==0) {
lt=lowtemp; goto end; } //将下限温度送lt else goto start1; end:; }
void sethighkey ()
{ unsigned int higtemp ; DQ=1; delayms(); start1:
display_tempmain(higtemp); if(jjxkey==0) {
delayms();
higtemp=higtemp+1; if (higtemp==99){ higtemp=00;} } if(jxkey==0) {
delayms();
higtemp=higtemp-1;
if (higtemp==00){ higtemp=99;} } if(qdjkey==0){
ht=higtemp; goto end;
} //将上限温度送ht else goto start1;
25
end; }
(3)数码管显示模块
本系统采用共阳数码管,用模拟串口的静态显示数据。 void display_tempmain(unsigned char i) //主程序温度显示函数 {
P0=tab[i%10]; shi=1; ge=0; delay(95); P0=tab[i/10]; shi=0; ge=1; } (4)温度处理程序
系统通过DS18B20采集到温度和设置的上、下限进行比较得出结果(大于上ht时候我们才用了二极管电亮和喇叭蜂鸣来报警,当小于ht时候只有二极管点亮,而在正常的时候二极管是熄灭的喇叭也不会响。具体是实现程序如下所示:
void wenkong() { unsigned int n;
n=ReadTemperature(); if(n>=ht) { P1=31;//二极管熄灭 delay(100);
P1=0;//点亮二极管 bj1=1;//开报警 delay(100);
bj1=0;//启动报警 } if(n<=ht) { P1=31;//二极管熄灭 delay(100);
P1=0;//点亮二极管 bj1=1;//开报警 } else {
display_tempmain(n); P1=31;//二极管熄灭 bj1=1;//开报警 }
26
5 结 论
温度过程控制是工业过程控制中一个重要参数,在冶金、机械、食品、化工等各类工业生产过程中广泛使用的各种加热炉、热处理炉、反应炉,对工件的处理温度等均需要对温度严格控制。当今计算机控制技术在这方面的应用,已使温度控制系统达到自动化、智能化,广泛应用于需要定点测温的温度自动控制电路,如冰箱、空调、温室等的温控系统。
本设计中,是以温度采集及控制过程设计为总目标,以AT89S51单片机最小应用系统为总控制中心,辅助设计有温度采样模块、加热电路、5个LED数码管静态串行显示、独立式查询键盘等。在设计过程中,遇到了许多问题,如设计初重点不明确,思绪混乱,经过认真思考和指导老师的指导,才使自己思路明确,抓住重点,在很短的时间内系统有序的完成。
了解到温度控制的重要性,使自己在设计过程中,更加有兴趣和动力,在设计软件方面,遇到了一些实际问题,比如,键盘程序、温度采集程序编程思路不够明确,在老师和同学的帮助下都能一一解决,使自己学到了更多新的知识和经验。
本次毕业设计的开发与设计全部过程,对于我的的重要意义在于能在进一步层次了解单片机的工作原理,内部结构和工作状态。理解单片机的接口技术,中断技术,时钟方式和控制方式以及温度控制的原理和意义,这样才能更好的利用单片机来做更有效和实用的设计。
在设计的过程中尽管是以最大努力去完成本毕业设计任务的研究,但是所做的工作仍有许多不足,PCB制电路板和实际的调试由于时间和了解知识面有限,没有完成,还有待于进一步的探索和研究,其他部分也还有许多内容需要完善,由于水平有限,本论文还有许多部分未能详细分析,不足的部分恳请各位老师对不足或疏漏之处给予指正,我将无比的感谢!
27
参考文献
1 周立功等. 增强型80C51单片机速成与实战.北京: 北京航空航天大学出版社, 2003.7 2 dallas semiconductor inc.ds18b20 programmable resolution 1-wiredigital thermometer.2001. 3 马忠梅, 籍顺心, 张凯,马岩. 单片机的C语言应用程序设计(修订版). 北京: 北京航空航天大学出版社, 1998.10
4 胡汉才. 单片机原理及接口技术. 北京: 清华大学出版社, 2004.2
5 余瑾, 姚燕. 基于DS18B20测温的单片机温度控制系统. 微计算机信息, 2009,(8)105~106 6 储海兵, 谭功全, 曹亢, 任善荣. 单片机温度控制实验系统. 仪表技术, 2007,(12)20~22 7 易丽华. 基于AT89C51单片机与DS18B20的温度测量系统.电子与封装,2009,(5):39~43 8 叶香美.基于单片机的柴油发动机冷却水温控制系统的研究.华中农业大学,2006(3):22~23 9 江太辉,邓展威.DS18B20数字式传感器的特性与应用.电子技术,2003(12): 46~49 10 吴晓明.基于单片机的沼气反应器温控系统研究.西北农林科技大学,2008(5):22~23 11 冉彦中.基于单片机的军需仓库温湿度测控系统研究.吉林大学,2007(10): 50~54
12 黄凤娟.基于单片机的温度测控系统在温室大棚中的设计与实现.安徽大学,2006 (10): 30~33 13 胡欣.DS18B20及其在温度巡回检测中的应用.电子技术,2002(5):45~47
14 黄莉,李铁鹰.基于DS18B20的数字式温度测量装置[J].科技情报开发与经济,2008 (4):26~28 15 兰建军,陈立军,王建国.DS18B20在单总线多测量系统中的应用技巧.仪表技术,2003(4):6~9 16 黄维翼,居平.由DS18B20构成的多路测温系统.传感器世界,2004 (10):35~37
17 张鹏,熊磊,姚东苹.分辨率可编程的一线总线数字温度计DS18B20及其应用.电子产品世
界,2002(2):111~114
28
致 谢
在大学的学习和生活中,我得到老师们和同学们的关心和帮助,正是这样,使我学到了许多有用的知识。在这期间,老师和院领导的帮助使我克服了学习上和生活上的一个又一个困难,让我能够顺利地完成学业。在此由衷地感谢老师们和领导们的关心和帮助!
本文由老师指导,在指导过程中,提出了不少宝贵的意见和建议, 在选题时得到了大力的支持,使我在理论上进一步充实了自己,在经验上得到进一步的提高,在此表示衷心的感谢!
随着论文的定稿,我大学生活亦即将告一段落。在大学的这几年对我来说意味深长。进校时踌躇满志、理想和目标远大,临近毕业才明白人一次只能踏上一条征途,大学时光在人生路上何其短暂,但于我,这几年来的努力付出所换来的收获却是如此地丰盛,每一段经历,无论失败或是成功,都给了我坚韧和智慧,它们将是我一生的财富。这宝贵的财富都是学校给予我的,院里的老师、同学给予我的,感谢你们!感谢平顶山学院的一草一木!正是由于这美丽的校园,我才能够成为一名优秀的毕业生!
29
附 录1
温度过程控制电路图
30
附 录2
系统框图
31
因篇幅问题不能全部显示,请点此查看更多更全内容