资源描述
学号: 常 州 大 学单 片 机 硬 件 实 习 报 告题 目: 学 生: 学院(系): 专 业 班 级: 指导教师: 单片机硬件实习任务书一、设计题目 温度测控与显示设计二、设计背景 利用单片机实现温度实时控制,数字显示及信息存贮,对于提高效率和产品质量,节约能源有着积极意义。生产过程对控制器要求并不复杂,以51系列为核心组成控制器完全可以满足要求。三、设计内容及目标设计内容:1)查相关资料,了解温度控制、检测方法;2)设计一种温度检测和控制电路;并用Protel绘制硬件电路原理图。3)软件设计,并画出程序流程图及写出程序清单。4)对开发关键技术、主要芯片(特别是检测芯片器件等)加以介绍。5)按要求写硬件实习报告。温度值设定可利用键盘也可直接在软件中设定,显示设定值和实际温度值可利用8255控制。设计目标:设定温度值,当系统采集的温度值低于设定值时,开通加热系统;反之,当温度高于设定值时,关闭加热系统,使加热系统降温。四、进度安排第十七周 星期一:题目安排;图书馆查相关资料; 星期二至星期四:进实验室,硬件设计及软件设计; 星期四下午:设计过程检查及指导; 星期五:完善硬件及软件设计;开始准备实习报告初稿。第十八周 星期一星期四:进实验室,完成实习任务;完善实习报告。 星期五上午在实验现场进行结果演示及答辩。星期五下午交实习报告。五、设计时间:2014 年 6 月 16 日到 2014 年 6 月27日 通信工程 教研室 指导教师: 屈霞 _温度测控与显示设计摘要: 该温度测控与显示系统采用单片机进行温度实时采集与控制。温度信号由“一线总线”数字化温度传感器DS18B20提供,DS18B20在-10+85C范围内, 固有测温分辨率为0.5 。温度实时控制采用继电器控制电热丝和风扇进行升温、降温控制。系统具备较高的测量精度和控制精度,能完成升温和降温控制。目 录1. 系统方案选择和论证21.1 题目要求21.1.1基本要求21.1.2发挥部分21.1.3说明21.2系统基本方案21.2.1各模块电路的方案选择及论证21.2.2系统各模块的最终方案52. 硬件设计与实现62.1系统硬件模块关系62.2主要单元电路的设计62.2.1温度采集部分设计62.2.2加热控制部分82.2.3键盘、显示、控制器部分83. 系统软件设计103.1 读取DS18B20温度模块子程序103.2数据处理子程序103.3键盘扫描子程序123.4主程序流程图134. 系统测试144.1 静态温度测试144.2动态温控测量144.3结果分析14附录1:产品使用说明15附录2:元件清单15附录3:系统硬件原理图16附录4:软件程序清单17参考文献261.系统方案选择和论证1.2系统基本方案根据题目要求系统模块分可以划分为:温度测量模块,显示电路模块,加热模块,控制模块,系统的框图如图1.2.1所示。为实现各模块的功能,分别做了几种不同的设计方案并进行了论证。1.2.1各模块电路的方案选择及论证(1)控制器模块根据题目要求,控制器主要用于对温度测量信号的接受和处理、控制电热丝和风扇使控制对象满足设计要求、控制显示电路对温度值实时显示以及控制键盘实现对温度值的设定等。对控制器的选择有以下三种方案:Output显示电路加热装置测温部分键盘输入控制部分Input图1.2.1 系统基本模块方框图方案一:采用FPGA作为系统控制器。FPGA功能强大,可以实现各种复杂的逻辑功能,规模大,密度高,它将所有器件集成在一块芯片上,减少了体积,提高了稳定性,并且可应用EDA软件仿真、调试,易于进行功能扩展。FPGA采用并行的I/O口方式,提高了系统的处理速度,适合作为大规模实时系统控制核心。由温度传感器送来的温度信号,经FPGA程序对其进行处理,控制加热装置动作。但由于本设计对数据处理的速度要求不高,FPGA的高速处理的优势得不到充分体现,并且其成本偏高,引脚较多,硬件电路布线复杂。方案二:采用模拟运算放大器组成PID控制系统。对于水温控制是足够的。但要附加显示、温度设定等功能,要附加许多电路,稍显麻烦。方案三:采用ATMEL公司的AT89C52作为系统控制器。单片机算术运算功能强,软件编程灵活、自由度大,可用软件编程实现各种算法和逻辑控制,并且其功耗低、体积小、技术成熟和成本低等优点。基于以上分析拟订方案二,由AT89C52作为控制核心,对温度采集和实时显示以及加热装置进行控制。(2)加热装置有效功率控制模块根据题目,可以使用电热炉进行加热,控制电热炉的功率即可以控制加热的速度。当水温过高时,关掉电热炉进行降温处理,让其自然冷却。在制作中,我们装设一个小电风扇,当水温超高时关闭电炉开启风扇散热,当需要加热时开启电炉关闭风扇。由于加热的功率较大,考虑到简化电路的设计,我们直接采用220V电源。对加热装置控制模块有以下两种方案:方案一:采用可控硅来控制加热器有效功率。可控硅是一种半控器件,应用于交流电的功率控制有两种形式:控制导通的交流周期数达到控制功率的目的;控制导通角的方式控制交流功率。由交流过零检测电路输出方波经适当延时控制双向可控硅的导通角,延时时间即移相偏移量由温度误差计算得到。可以实现对交流电单个周期有效值周期性控制,保证系统的动态性能指标。该方案电路稍复杂,需使用光耦合驱动芯片以及变压器等器件。但该方案可以实现功率的连续调节,因此响应速度快,控制精度也高。方案二:采用继电器控制。使用继电器可以很容易实现地通过较高的电压和电流,在正常条件下,工作十分可靠。继电器无需外加光耦,自身即可实现电气隔离。这种电路无法精确实现电热丝功率控制,电热丝只能工作在最大功率或零功率,对控制精度将造成影响。但可以由多路加热丝组成功率控制,由单片机对温差的处理实现分级功率控制提高系统动态性能。基于以上分析以及现有器件限制选择方案二,采用继电器控制省去光耦和交流过零检测电路,在软件上选用适当的控制算法,同样可以达到较好的效果。(3)温度采集模块题目要求温度静态误差小于等于0.2,温度信号为模拟信号,本设计要对温度进行控制和显示,所以要把模拟量转换为数字量。该温度采集模块有以下三种方案:方案一:利用热电阻传感器作为感温元件,热电阻随温度变化而变化,用仪表测量出热电阻的阻值变化,从而得到与电阻值相应的温度值。最常用的的是铂电阻传感器,铂电阻在氧化介质中,甚至在高温的条件下其物理,化学性质不变。由铂电阻阻值的变化经小信号变送器XTR101将铂电阻随温度变化的转换为420mA线形变化电路,再将电流信号转化为电压信号,送到A/D转换器ADC0809.即将模拟信号转换为数字信号。该方案线性度优于0.01。方案二:采用温度传感器AD590K。AD590K具有较高精度和重复性,良好的非线性保证0.1的测量精度。加上软件非线性补偿可以实现高精度测量。AD590将温度转化为电流信号,因此要加相应的调理电路,将电流信号转化为电压信号。送入8为A/D转换器,可以获得255级的精度,基本满足题目要求。 方案三:采用数字温度传感器DS18B20。DS18B20为数字式温度传感器,无需其他外加电路,直接输出数字量。可直接与单片机通信,读取测温数据,电路简单。如图1.2.2 所示 。图1.2.2 DS18B20测温电路基于以上分析和现有器件所限,温度采集模块选用方案三。DS18B20与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现912位的数字值读数方式。并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,因而使用DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面带来了令人满意的效果。(4)键盘与显示模块根据题目要求,水温要由人工设定,并能实时显示温度值。对键盘和显示模块有下面两种方案: 方案一:采用液晶显示屏和通用矩阵键盘。液晶显示屏(LCD)具有功耗小、轻薄短小无辐射危险,平面直角显示以及影象稳定不闪烁,可视面积大,画面效果好,抗干扰能力强等特点。但由于只需显示三位温度值,信息量比较少,且由于液晶是以点阵的模式显示各种符号,需要利用控制芯片创建字符库,编程工作量大,控制器资源占用较多,其成本也偏高。方案二:采用三位LED七段数码管分别显示温度的十位、个位和小数位。按键采用单列3按键进行温度设定。数码管具有:低能耗、低损耗、低压、寿命长、耐老化,对外界环境要求较低。同时数码管采用BCD编码显示数字,程序编译容易,资源占用较少。根据以上论述,采用方案二。本系统中,采用了数码管的动态显示,节省单片机的内部资源。1.2.2系统各模块的最终方案根据以上分析,结合器件和设备等因素,确定如下方案: 1. 采用AT89C52单片机作为控制器,分别对温度采集、LED显示、温度设定、加热装置功率控制。2. 温度测量模块采用数字温度传感器DS18B20。此器件经软件设置可以实现高分辨率测量。 3. 电热丝有效功率控制采用继电器控制,实现电路简单实用,加上温度变化缓慢可以满足设计要求。4. 显示用LED数码管显示实时温度值,用ENTER、UP、DOWN三个单键实现温度值的设定。 OutputLED数码管继电器DS18B20键盘输入AT89C52Input图1.2.3 系统基本框图系统的基本框图如图1.2.3 所示。CPU(AT 89C52)首先写入命令给DS18B20,然后DS18B20开始转换数据,转换后通过89S52来处理数据。数据处理后的结果就显示到数码管上。另外由键盘设定温度值送到单片机,单片机通过数据处理发出温度控制信息到继电器。DS18B20可以被编程,所以箭头是双向的。2.硬件设计与实现2.1 系统硬件模块关系本系统的执行方法是循环查询执行的,键盘扫描也是用循环查询的办法,由于本系统对实时性要求不是很高,所以没有用到中断方式来处理。各模块关系图如图2.1.1所示。单片机初始话模块继电器控制模块温度调整模块DS18B20得到温度值,存放到Buffer中处理温度值,换算成BCD码温度显示模块图2.1.1 统硬件模块关系图2.2主要单元电路的设计2.2.1温度采集部分设计本系统采用半导体温度传感器作为敏感元件。传感器我们采用了DS18B20单总线可编程温度传感器,来实现对温度的采集和转换,直接输出数字量,可以直接和单片机进行通讯,大大简化了电路的复杂度。DS18B20应用广泛,性能可以满足题目的设计要求。DS18B20的测温电路如图2.2.1所示。图2.2.1 DS18B20测温电路(1)DSI8B20的测温功能的实现:其测温电路的实现是依靠单片机软件的编程上。 当DSI8B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的0,1字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式以0062 5LSB形式表示。温度值格式如表2.2.1所示,其中“S”为标志位,对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变换为原码,再计算十进制值。DSI8B20完成温度转换后,就把测得的温度值与 TH做比较,若TTH或T RoM操作命令 - 存储器操作命令- 处理数据 初始化 单总线上的所有处理均从初始化开始 ROM操作命令 总线主机检测到DSl820的存在便可以发出ROM操作命令之一这些命令如表2.2.2所示表2.2.2 ROM操作命令表指令代码Read ROM(读ROM)33HMatch ROM(匹配ROM)55HSkip ROM(跳过ROMCCHSearch ROM(搜索ROM)F0HAlarm search(告警搜索)ECH 存储器操作命令如表2.2.3所示表2.2.3 存储器操作命令表指令代码Write Scratchpad(写暂存存储器)4EHRead Scratchpad(读暂存存储器)BEHCopy Scratchpad(复制暂存存储器)48HConvert Temperature(温度变换)44HRecall EPROM(重新调出)B8HRead Power supply(读电源)B4H(3)温度转换算法及分析由于DS18B20转换后的代码并不是实际的温度值,所以要进行计算转换。温度高字节(MS Byte)高5位是用来保存温度的正负(标志为S的bit11bit15),高字节(MS Byte)低3位和低字节来保存温度值(bit0 bit10)。其中低字节(LS Byte)的低4位来保存温度的小数位(bit0 bit 3)。由于本程序采用的是0.0625的精度,小数部分的值,可以用后四位代表的实际数值乘以0.0625,得到真正的数值,数值可能带几个小数位,所以采取小数舍入,保留一位小数即可。也就说,本系统的温度精确到了0.1度。算法核心:首先程序判断温度是否是零下,如果是,则DS18B20保存的是温度的补码值,需要对其低8位(LS Byte)取反加一变成原码。处理过后把DS18B20的温度Copy到单片机的RAM中,里面已经是温度值的Hex码了,然后转换Hex码到BCD码,分别把小数位,个位,十位的BCD码存入RAM中。2.2.2加热控制部分由于本系统要控制电热丝加热,功率较大,因此要借助功率电路。在器件选择上留足余量,增加安全性。加热部分采用继电器控制,电路简单可靠。电路如图2.2.2所示。当实测温度低于设定值时,由单片机输出高电平信号。三极管9014导通,继电器开始工作对水加温。为了防止继电器频繁动作。在软件中对水温测量精确到0.1,而在温度设定时只取整数。可以有1的余量。当设定温度低于实测温度时为了加快系统动态响应速度,设置一个小功率电扇,加速水温的降低。使系统整体性能得以提高。原理图如图2.2.3所示。2.2.3键盘、显示、控制器部分本设计中采用动态显示方式驱动3个七段数码管,分别显示温度的十位、个位和小数位。数码管采用共阴极,由于AT89C52单片机每个I/O的拉电流只有12mA。所以在位码和段码都加上了同相驱动器。单片机XTAL2、XTAL1接12MHZj晶振,提供系统时钟基值。另RESET接复位按键。原理图如图2.2.4所示。图2.2.2 继电器控制图2.2.3 风扇控制图图2.2.4 显示、控制器部分原理图3.系统软件设计系统的软件设计采用汇编语言,对单片机进行变成实现各项功能。主程序对模块进行初始化,而后调用读温度、处理温度、显示、键盘、和继电器各模块。用的是循环查询方式,来显示和控制温度。3.1 读取DS18B20温度模块子程序每次对DA18B20操作时多要按造DS18B20工作过程中的协议进行。初始化- RoM操作命令- 存储器操作命令- 处理数据 程序流程图如图3.1.1所示。3.2数据处理子程序由于DS18B20转换后的代码并不是实际的温度值,所以要进行数据处理。由于本程序采用的是0.0625的精度,小数部分的值,可以用后四位代表的实际数值乘以0.0625,得到真正的数值,数值可能带几个小数位,所以采取四舍五入,保留一位小数即可。也就说,本系统的温度精确到了0.1度。首先程序判断温度是否是零下,如果是,则DS18B20保存的是温度的补码值,需要对其低8位(LS Byte)取反加一变成原码。处理过后把DS18B20的温度Copy到单片机的RAM中,里面已经是温度值的Hex码了,然后转换Hex码到BCD码,分别把小数位,个位,十位的BCD码存入RAM中。数据处理子程序流程图如图3.2.1所示。开始开始初始化DS18B20存在?ROM操作命令存储操作命令读取温度值返回是否图3.1.1读取DS18B20温度子程序流程图返回数据传递温度是否为负?BCD码转换求补运算图3.2.1数据处理子程序流程图3.4主程序流程图总模块流程图如图3.1.1所示。本软件设计采用循环查询来处理各个模块,温度是缓慢变化量所以可以满足性能要求。图3.1.1所示为系统主程序流程图否初始化开始调用A/D转换子程序DS18B20存在?数据处理子程序显示子程序键盘扫描子程序继电器控制子程序错误处理显示888是图3.1.1主程序流程图4. 系统测试4.1 静态温度测试测试方式:由于种种条件的限制,采用模拟加热方式进行测试。利用继电器的指示灯来显示继电器的动作。红灯表示加热,绿灯表示降温。测量仪器:空调温度显示屏测试结果如表4.1.1所示:表4.1.1 测试结果数据标准温度/2022252728测量温度/19.822.124.726.827.6误差/0.20.10.30.20.44.2动态温控测量测试方式:加热方式用体温对传感器DS18B20进行加热。设定控制温度,记录超调温度,稳态误差。超调温度与加热的功率有关,这里不再测量。测量仪器:空调温度显示屏测量结果如表4.2.1所示:表4.2.1 测试结果数据设定温度/29303335超调温度/1.30.91.10.6稳态误差/0.20.40.20.44.3结果分析有以上的测量结果可见,系统基本上达到了所要求的指标,静态测温的精度主要由DS18B20来决定。在控温指标中,影响系统的性能的因素很多。最关键的是加热系统本身的物理性质及控制算法。由于条件的限制,在本设计中采用体温进行测试。 附录1: 产品使用说明本温度控制系统能在099范围内设定任意温度值,超出此范围将有出错显示888,之后返回到99或0。通过按ENTER键确认开始温度设定;P1.1的UP键为加1键,每按一次使设定温度值加1P1.2的DOWN键为减1键,每按下一次设定温度值减1。设置完温度要在按ERTER键确认温度设定完成,之后显示实测温度值。当温度传感器没有接入时也将有出错提示显示888。附录2: 元件清单 元 件 单价 数 量(个) 单价AT89S52 8.0 1 DS18B20 7.0 17404 1.5 612MHZ晶振 1.2 1继电器 5.0 1数码管 3.0 39014 3.0 21N4007 1.0 2发光二极管 1.0 21K8排阻 1.0 1100电阻 1.0 33K 1.0 44.5K 1.0 1500 1.0 1200 1.0 1 电解电容10F 2.5 130pF 2.5 2插槽0.54面包板3.02 23附录3 : 系统硬件原理图 附录4:软件程序清单TMPLEQU29HTMPHEQU 28HFLAG1 EQU 38HDATAINBITP3.7ORG 00HLJMPMAIN1ORG03HLJMP ZINT0ORG 13HLJMP ZINT1ORG30HMAIN1:SETB IT0SETBEASETBEX0SETBIT1SETBEX1SETBP3.6SETBP3.2MOV74H,#0MOV75H,#0MOV76H,#9MOV77H,#0MAIN:LCALL GET_TEMPERLCALL CVTTMPLCALL DISP1AJMP MAININIT_1820:SETB DATAINNOPCLR DATAINMOV R1,#3TSR1: MOV R0,#107DJNZ R0,$DJNZ R1,TSR1SETB DATAINNOPNOPNOPMOV R0,#25HTSR2: JNBDATAIN,TSR3DJNZ R0,TSR2CLR FLAG1SJMP TSR7TSR3:SETBFLAG1CLRP1.7MOV R0,#117TSR6:DJNZR0,$TSR7:SETB DATAINRETGET_TEMPER:SETBDATAINLCALLINIT_1820JBFLAG1,TSS2NOPRETTSS2:MOVA,#0CCHLCALL WRITE_1820MOVA,#44HLCALLWRITE_1820ACALLDISP1LCALLINIT_1820MOVA,#0CCHLCALLWRITE_1820MOVA,#0BEHLCALL WRITE_1820LCALL READ_1820RETWRITE_1820:MOVR2,#8CLRCWR1:CLRDATAINMOVR3,#6DJNZR3,$RRCAMOVDATAIN,CMOVR3,#23DJNZR3,$SETBDATAINNOPDJNZR2,WR1SETBDATAINRETREAD_1820:MOVR4,#4MOVR1,#29HRE00:MOVR2,#8RE01:CLRCSETBDATAINNOPNOPCLRDATAINNOPNOPNOPSETBDATAINMOVR3,#9RE10:DJNZR3,RE10MOVC,DATAINMOV R3,#23RE20:DJNZR3,RE20RRCADJNZR2,RE01MOVR1,ADECR1DJNZR4,RE00RETCVTTMP:MOVA,TMPHANLA,#80HJZTMPC1CLRCMOVA,TMPLCPLAADDA,#1MOVTMPL,AMOVA,TMPHCPLAADDCA,#0MOVTMPH,AMOV73H,#0BHSJMPTMPC11TMPC1:MOV73H,#0AHTMPC11:MOVA,TMPLANLA,#0FHMOVDPTR,#TMPTABMOVCA,A+DPTRMOV70H,AMOVA,TMPLANLA,#0F0HSWAPAMOVTMPL,AMOVA,TMPHANLA,#0FHSWAPAORLA,TMPLH2BCD:MOVB,#100DIVABJZB2BCD1MOV73H,AB2BCD1:MOVA,#10XCHA,BDIVABMOV72H,AMOV71H,BTMPC12:NOPDISBCD:MOVA,73HANLA,#0FHCJNEA,#1,DISBCD0SJMPDISBCD1DISBCD0:MOVA,72HANLA,#0FHJNZDISBCD1MOVA,73HMOV72H,AMOV73H,#0AHDISBCD1:RETTMPTAB:DB0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9DISP1:MOVR1,#70HMOVR0,#74HMOVR5,#0FEHPLAY:MOVP1,#0FFHMOVA,R5MOVP2,AMOVA,R1MOVDPTR,#TABMOVCA,A+DPTRMOVP1,AMOVA,R0MOVCA,A+DPTRMOVP0,AMOVA,R5JBACC.1,LOOP1CLRP1.7CLRP0.7LOOP1:LCALLDL1MSINCR1INCR0MOVA,R5JNBACC.3,ENDOUTRLAMOVR5,AMOVA,73HCJNEA,#1,DD2SJMPLEDHDD2:MOVA,72HCJNEA,#0AH,DD3MOV72H,#0DD3:MOVA,76HCJNEA,72H,DDHSJMPDDLDDH:JNCPLAY1SJMPLEDHDDL:MOVA,75HCJNEA,71H,DDL1SJMPLEDHDDL1:JNCPLAY1LEDH:CLRP3.6SJMPPLAYPLAY1: SETB P3.6 SJMP PLAYENDOUT:MOVP1,#0FFHMOVP2,#0FFHRETTAB:DB0C0H,0F9H,0A4H,0B0H,99HDB92H,82H,0F8H,80H,90H,0FFH,0BFHDL1MS:MOVR6,#50DL1:MOVR7,#100DJNZR7,$DJNZR6,DL1RETZINT0:PUSHACCINC75HMOVA,75HCJNEA,#10,ZINT01MOV75H,#0ZINT01:POPACCRETIZINT1:PUSHACCINC76HMOVA,76HCJNEA,#10,ZINT11MOV76H,#0ZINT11:POPACCRETIZZZ1:MOVDPTR,#TABMOVCA,A+DPTRMOVP0,ARETIEND参考文献:1. 单片机应用开发实用子程序. 边春元等 编著. 人民邮电出版社. 20052. DS18B20官方英文文档 . DS18B20官方英文站点下载3.全国大学生电子设计大赛培训系列教程. 高吉祥 主编.电子工业出版社.20074. 单片微型计算机原理及应用. 张毅坤等 编著. 西安电子科技大学出版社.19985.微型计算机接口技术 . 王兆月等 编著. 机械工业出版社 .2006
展开阅读全文