单片机系统开发与应用工程实习报告-基于AT89S52单片机的水温控制系统.doc_第1页
单片机系统开发与应用工程实习报告-基于AT89S52单片机的水温控制系统.doc_第2页
单片机系统开发与应用工程实习报告-基于AT89S52单片机的水温控制系统.doc_第3页
单片机系统开发与应用工程实习报告-基于AT89S52单片机的水温控制系统.doc_第4页
单片机系统开发与应用工程实习报告-基于AT89S52单片机的水温控制系统.doc_第5页
免费预览已结束,剩余21页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机系统开发与应用工程实习报告单片机系统开发与应用工程实习报告 选题名称选题名称: 基于 at89s52 单片机的水温控制系统 系(院)系(院): 计算机工程学院 专专 业业: 计算机科学与技术(嵌入式系统软件设计) 班班 级级: 姓姓 名名: 学学 号号: 指导教师指导教师: 学年学期学年学期: 2009 2010 学年 第 2 学期 2010年 5 月 30 日 摘要: 温度控制是很多企业常见的控制装置,如机械行业的零件热处理、塑料制品的注塑 机上,粉末冶金行业烧结炉、还原炉等都有温度控制问题,尤以热处理加热炉的温度控 制最为典型。热处理加热炉是工厂热处理和高校热处理实验广泛使用的加热设备。现 在所使用的炉温控制方法很多仍是陈旧的动圈式两位指示调节仪(如 xct101 型动圈 式两位指示调节仪) 。这种炉温控制方法炉温波动范围大,保温时间靠人工计时,加热速 度不能控制,温度不能全程动态跟踪显示。这样的控制和显示方式不能满足日益发展的 工业需求。高校的发展同样要求用现代化手段提升现有的实验设备,为学生提供更多更 好、更现代化的实验条件。因此,我们就学校热处理实验用电阻加热炉进行现代化改革,将 ds18b20 测温传感器和 at89s52 单片机优秀的实时控制功能、灵活的编程能力有机 的结合起来,开发出热处理微机控制系统,实现温度控制的自动化。不但能用于学校的 实验教学及其它一些研究课题的开发,同样能用于工厂热处理、注塑机多点温度的控制,提 高工业企业自动化水平。 关键字:单片机 at89s52;传感器;控温;ds18b20 目目 录录 1 系统设计 .1 1.1 项目概要 1 1.2 项目要求 1 2 硬件设计 .1 2.1 硬件设计概要 1 2.2 单片机最小系统 2 2.3 温度检测电路 4 2.3 报警电路 7 2.4 控制电路及显示电路 7 3 软件设计 .9 3.1 中断控制程序 .10 3.2 显示程序 .11 3.3 温度测量 .12 3.4 温度处理 .18 总 结 20 参考文献 21 单片机系统开发与应用工程实习报告 1 1 系统设计系统设计 1.1 项目概要项目概要 水温控制系统无论是工业生产过程,还是日常生活都起着非常重要的作用,过低 过高的水温都会使水资源失去应有的作用,从而造成水资源的极大浪费,给生活生产 带来许多不利因素。基于 at89s52 的单片机水温控制系统与传统的水温控制器相比具 有操作方便、价格便宜、精确度高和开展容易等优点,因此市场前景看好。 1.2 项目要求项目要求 基于 at89s52 单片机水温控制器晶振采用 12mhz,具体要求如下: (1)初始温度设置为 50 度 (2)越限报警温度为 70 度 (3)控制精度为 1 度 (4)控制范围为环境温度室温到 70 度 2 硬件设计硬件设计 2.1 硬件设计概要硬件设计概要 根据需求,我的系统需要温度采集电路、控制电路、报警电路。当然这些要一起 工作我们就需要一块单片机来协调它们! 温度采集我们使用 18b20,使用它可以是电路简化。控制电路我们用外部中断来 调节温度,为了使操作方便,我们加入了一个显示控制温度值的数码管,来便于使用。 报警电路,这个电路我们用一个三极管这为放大器去驱动一个喇叭。所有电路结构如 下 单片机系统开发与应用工程实习报告 2 图 2-1 总体硬件设计示意图 2.2 单片机最小系统单片机最小系统 at89s52 是美国 atmel 公司生产的低功耗,高性能 cmos8 位单片机,片内含 4k bytes 的可系统编程的 flash 只读程序存储器,器件采用 atmel 公司的高密度、非 易失性存储技术生产,兼容标准 8051 指令系统及引脚。它集 flash 程序存储器既可在 线编程(isp)也可用传统方法进行编程及通用 8 位微处理器于单片芯片中,atmel 公司的功能强大,低价位 at89s52 单片机可为您提供许多高性价比的应用场合,可灵 活应用于各种控制领域。 由于 at89s52 是一个低功耗,高性能 cmos 8 位单片机,片内含 8k bytes isp(in-system programmable)的可反复擦写 1000 次的 flash 只读程序存储器。器件采用 atmel 公司的高密度、非易失性存储技术制造,兼容标准 mcs-51 指令系统及 80c51 引脚结构,芯片内集成了通用 8 位中央处理器和 isp flash 存储单元,功能强大 的微型计算机的 at89s52 可为许多嵌入式控制应用系统提供高性价比的解决方案。因 此,本系统使用 at89s52 单片机作为微处理器, at89s52 引脚图如图 2-2。它主要具有如下特点:40 个引脚,8k bytes flash 片内 程序存储器,256 bytes 的随机存取数据存储器(ram) ,32 个外部双向输入/输出 (i/o)口,5 个中断优先级 2 层中断嵌套中断,2 个 16 位可编程定时计数器,2 个全 双工串行通信口,看门狗(wdt)电路,片内时钟振荡器。 at89s52 设计和配置了振荡频率可为 0hz 并可通过软件设置省电模式。空闲模式 下,cpu 暂停工作,而 ram 定时计数器,串行口,外中断系统可继续工作掉电模式 冻结振荡器,因而可以保存 ram 的数据,停止芯片其它功能直至外中断激活或硬件 单片机系统开发与应用工程实习报告 3 复位。下面列出了 at89s52 的一些性能参数: 与 mcs-51 产品指令系统完全兼容 4k 字节在系统编程(isp)flash 闪速存储器 1000 次擦写周期 4.05.5v 的工作电压范围 全静态工作模式:0hz33mhz 三级程序加密锁 1288 字节内部 ram 32 个可编程 io 口线 2 个 16 位定时计数器 6 个中断源 全双工串行 uart 通道 低功耗空闲和掉电模式 中断可从空闲模唤醒系统 看门狗(wdt)及双数据指针 掉电标识和快速编程特性 灵活的在系统编程(isp 字节或页写模式) 图 2-2 at89s52 引脚图 单片机系统开发与应用工程实习报告 4 xtal1 xtal2 0.1f 0.1f at89s52 p0 p1 p2 p3 8 11.0592 mhz + r 8 8 8 gnd vcc vcc 图 2-3 微处理器电路图 整个单片机系统接口分配情况如下:p0 口复用于传输 led 位数据以及值数据传 输、p2 口的 p2.0-p2.1 作为六位 led 的公共端的控制信号、p1 口分配做键盘接口、 p3.0 和 p3.1 分别用于串口通信的数据的接收端和发送端、p3.2 用于温度数据接口。 2.3 温度检测电路温度检测电路 dallas 最新单线数字温度传感器 ds18b20 简介新的“一线器件”体积更小、适 用电压更宽、更经济 dallas 半导体公司的数字化温度传感器 ds1820 是世界上第一片 支持 “一线总线”接口的温度传感器。一线总线独特而且经济的特点,使用户可轻松地 组建传感器网络,为测量系统的构建引入全新概念。ds18b20、 ds1822 “一线总线” 数字化温度传感器 同 ds1820 一样,ds18b20 也 支持“一线总线”接口,测量温度范 围为 -55c+125c,在-10+85c 范围内,精度为0.5c。ds1822 的精度较差为 2c 。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于 恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。 与前一代产品不同,新的产品支持 3v5.5v 的电压范围,使系统设计更灵活、方便。 而且新一代产品更便宜,体积更小。 ds18b20、 ds1822 的特性 ds18b20 可以程 序设定 912 位的分辨率,精度为0.5c。可选更小的封装方式,更宽的电压适用范 围。分辨率设定,及用户设定的报警温度存储在 eeprom 中,掉电后依然保存。 ds18b20 的性能是新一代产品中最好的!性能价格比也非常出色! ds1822 与 ds18b20 软件兼容,是 ds18b20 的简化版本。省略了存储用户定义报警温度、分辨 率参数的 eeprom,精度降低为2c,适用于对性能要求不高,成本控制严格的应 用,是经济型产品。 继“一线总线”的早期产品后,ds1820 开辟了温度传感器技术的 单片机系统开发与应用工程实习报告 5 新概念。ds18b20 和 ds1822 使电压、特性及封装有更多的选择,让我们可以构建适 合自己的经济的测温系统。 ds18b20 内部结构主要由四部分组成:64 位光刻 rom、温度传感器、非挥发的 温度报警触发器 th 和 tl、配置寄存器。ds18b20 的管脚排列如下: 图 2-4 ds18b20 的管脚排列图 dq 为数字信号输入/输出端;gnd 为电源地;vdd 为外接供电电源输入端(在 寄生电源接线方式时接地) 。 光刻 rom 中的 64 位序列号是出厂前被光刻好的,它可以看作是该 ds18b20 的 地址序列码。64 位光刻 rom 的排列是:开始 8 位(28h)是产品类型标号,接着的 48 位是该 ds18b20 自身的序列号,最后 8 位是前面 56 位的循环冗余校验码 (crc=x8+x5+x4+1) 。光刻 rom 的作用是使每一个 ds18b20 都各不相同,这样就 可以实现一根总线上挂接多个 ds18b20 的目的。 ds18b20 中的温度传感器可完成对温度的测量,以 12 位转化为例:用 16 位符号 扩展的二进制补码读数形式提供,以 0.0625/lsb 形式表达,其中 s 为符号位。 表 2-1 12 位转化后得到的 12 位数据 lsbyte msbyte 232221202-12-22-32-4 bit7bit6bit5bit4bit3bit2bit1bit0 ssss262425s bit15 bit14 bit13 bit12 bit11 bit10 bit9bit8 单片机系统开发与应用工程实习报告 6 这是 12 位转化后得到的 12 位数据,存储在 18b20 的两个 8 比特的 ram 中,二 进制中的前面 5 位是符号位,如果测得的温度大于 0,这 5 位为 0,只要将测到的数 值乘于 0.0625 即可得到实际温度;如果温度小于 0,这 5 位为 1,测到的数值需要取 反加 1 再乘于 0.0625 即可得到实际温度。例如+125的数字输出为 07d0h,+25.0625的数字输出为 0191h,-25.0625的数字输出为 ff6fh,-55的 数字输出为 fc90h。 温度检测控制电路图见图 2-5。 gnd vcc d ds18b20 vcc r 4.7k at89s52 p3.2 图 2-5 温度检测控制电路图 ds1820 虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点, 但在实际应用中也应注意以下几方面的问题: (1)较小的硬件开销需要相对复杂的软件进行补偿,由于 ds1820 与微处理器间采 用串行数据传送,因此,在对 ds1820 进行读写编程时,必须严格的保证读写时序, 否则将无法读取测温结果。在使用 pl/m、c 等高级语言进行系统程序设计时,对 ds1820 操作部分最好采用汇编语言实现。 (2)在 ds1820 的有关资料中均未提及单总线上所挂 ds1820 数量问题,容易使人 误认为可以挂任意多个 ds1820,在实际应用中并非如此。当单总线上所挂 ds1820 超 过 8 个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时 要加以注意。 (3)连接 ds1820 的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输 长度超过 50m 时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆 时,正常通讯距离可达 150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正 常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。 因此,在用 ds1820 进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配 问题。 单片机系统开发与应用工程实习报告 7 (4)在 ds1820 测温程序设计中,向 ds1820 发出温度转换命令后,程序总要等待 ds1820 的返回信号,一旦某个 ds1820 接触不好或断线,当程序读该 ds1820 时,将 没有返回信号,程序进入死循环。这一点在进行 ds1820 硬件连接和软件设计时也要 给予一定的重视。 测温电缆线建议采用屏蔽 4 芯双绞线,其中一对线接地线与信号线,另一组接 vcc 和地线,屏蔽层在源端单点接地。 2.32.3 报警电路报警电路 报警电路我们只需要用一个三极管就可以控制一个喇叭了。我们只要给这个口一 个脉冲电平喇叭就会发出声音了。如图 2-6 图 2-6 报警电路 2.42.4 控制电路及显示电路控制电路及显示电路 我们通过 2 个外部来控制温度,只要在中断口接 2 个开关接地。然后把调节后的 温度显示出来。我们通过数码管了显示。 led 显示器结构与原理: led 显示器由 7 条发光二极管组成显示字段,有的还带有一个小数点 dp 将 7 段 发光二极管阴极连在一起,成为共阴极接法,当某个字段的阳极为高电平时,对应的 字段就点亮。共阳极接法是将 led 的所有阳极并接后就连到+5v 上,当某一字段的 阴极为 0 时,对应的字段就点亮。 静态串行显示器的结构图如 2-7 所示: 单片机系统开发与应用工程实习报告 8 a b c d e f g dp v cc a b c d e f g dp 共阴极 共阳极 图 2-7 静态串行显示器的结构图 点亮 led 显示器有静态和动态两种方法。所谓静态显示,就是显示某一字段时, 相应的发光二极管恒定的导通或截止,这种方式,每一显示位都需要一个 8 位输出口 控制,占用硬件较多,一般仅用于显示器位数较少的场合。 所谓动态显示,就是一位一位地轮流点亮各位显示器。对每为显示器而言,每隔 一段时间显示一次。显示位的亮度既跟导通电流有关,也和点亮时间与间隔时间的比 例有关。动态显示器因硬件成本较低而被采用。 为了显示字符,要为 led 显示器提供显示段码,组成一个“8”字形的 7 段,再加 上 1 个小数点位,共计 8 段,因此提供 led 显示器的显示段码为一个字节。 led 显示器与单片机的接线图: 本设计通过单片机 p0 口并经总线驱动器 74ls245 控制 6 位数码管的段码,通过 位选线 p2.0-2.1 经三极管逐位逐位去控制数码管扫描显示。由于采用动态显示,其优 点是占用硬件资源少,功耗小。但必须注意:扫描周期必须控制在视觉停顿时间内, 一般在 20ms 以内,否则会出现闪烁或跳动现象。如图 2-8 所示为 led 与单片机的接 线图。 单片机系统开发与应用工程实习报告 9 图 2-8 led 与单片机的接线图 显示器有四个 led 数码管组成。输入串行数据线 din 和位移信号 clk,四个串/ 并移位寄存器芯片 74ls245 连。每片的并行输出作为 led 数码管的码段。 采用 74ls245 是为了放大电压,在这边 74ls245 是这为放大电路。74ls245 的电 路如图 2-9 图 2-9 74ls245 电路示意图 3 软件设计软件设计 总体设计:我们的程序是控温,所以我们应该不断测温并控制。如图 3-1 单片机系统开发与应用工程实习报告 10 图 3-1 程序总体设计流程图 3.1 中断控制程序中断控制程序 我们先来设计控温的程序,因为它比较简单: 程序如下: ;外部中断 1 key_1: clr ea ;关闭外部中断 incdis1 ;把个位加一 mova,dis1 cjnea,#10,key ;判断个位是否为十 movdis1,#0 ;是十把它置一 ;显示并打开中断 key: mova,dis2 movb,#10 mulab adda,dis1 ;求出调整后的温度 movtemper_config,a ;保存调整后的温度 lcall display ;显示调整后的温度 setb ex0 setb ex1 setb ea 打开中断 单片机系统开发与应用工程实习报告 11 reti 返回 ;外部中断 2 key_2: clr ea inc dis2 mov a,dis2 cjne a,#10,key mov dis2,#0 ajmp key 其中 dis1,dis2 是定义的变量,用来保存数码管的显示数字。temper_config 也是定义变量用来保存设定温度值。 3.2 显示程序显示程序 根据数码管的显示特点,我们知道要在现实一位后延时一会在显示一位。下面是 数码管显示代码: ;显示 display: mova,dis2 movdptr,#table movc a,a+dptr movp0,a setb p2.1 dsdely1: movr6,#11 djnz r6,$ djnz r7,dsdely1 mova,dis1 movdptr,#table movc a,a+dptr movp0,a 单片机系统开发与应用工程实习报告 12 setb p2.0 movr7,#25 dsdely2: movr6,#11 djnz r6,$ djnz r7,dsdely2 ret 3.3 温度测量温度测量 这里需要对 18b20 要有一个很清楚的了解。 根据 ds18b20 的通讯协议,主机控制 ds18b20 完成温度转换必须经过三个步骤: 每一次读写之前都要对 ds18b20 进行复位,复位成功后发送一条 rom 指令,最后发 送 ram 指令,这样才能对 ds18b20 进行预定的操作。 当主机收到 ds18b20 的响应信号后,便可以发出操作命令,这些命令可以分为 rom 命令和 ram 命令两种。cpu 的操作过程如图 3-2 所示。 由于 ds18b20 与单片机间采用串行数据传送,因此,在对 ds18b20 进行读写编 程时,必须严格的保证读写时序,否则将无法读取测温结果。操作时序主要有初始化 时序、读时序和写 0 时序和写 1 时序四种,如图 3-3 所示。 在温度测量仪表中,对 ds18b20 的操作主要是复位、读数据和写数据三种,而 两种操作又都是按位进行的,所以首先应该按照 ds18b20 的时序要求,编写读、写 时间片的程序,其流程图如图 3-4 所示。 单片机系统开发与应用工程实习报告 13 图 3-2 ds18b20 操作过程 图 3-3 ds18b20 操作时序 单片机系统开发与应用工程实习报告 14 图 3-4 ds18b20 操作程序流程图 根据上面的知识我们可以得到 18b20 的操作的 3 个函数 ;初始化 18b20 init_1820: setbdq nop clrdq movr0,#06bh tsr1: djnzr0,tsr1; 延时 setbdq movr0,#25h tsr2: jnbdq,tsr3 单片机系统开发与应用工程实习报告 15 djnzr0,tsr2 ljmptsr4; 延时 tsr3: setbflag1; 置标志位,表示 ds1820 存在 ljmptsr5 tsr4: clrflag1; 清标志位,表示 ds1820 不存在 ljmptsr7 tsr5: movr0,#06bh tsr6: djnzr0,tsr6; 延时 tsr7: setbdq ret ;把 a 的值写入 18b20 write_1820: movr2,#8 clrc wr1: clrdq movr3,#6 djnzr3,$ rrca movdq,c movr3,#23 djnzr3,$ setbdq nop 单片机系统开发与应用工程实习报告 16 djnzr2,wr1 setbdq ret ;读温度 read_18200: mov r4,#2; 将温度高位和低位从 ds18b20 中读出 mov r1,#77h; 低位存入 77h(temper_l),高位存入 76h(temper_h) re00: mov r2,#8 re01: clr c setb dq nop nop clr dq nop nop nop setb dq mov r3,#7 djnz r3,$ mov c,dq mov r3,#23 djnz r3,$ rrc a djnz r2,re01 mov r1,a dec r1 djnz r4,re00 ret 单片机系统开发与应用工程实习报告 17 应为读出的温度的格式是 12 位,temper_l 位前四位是整数部分后四位是小数, temlper_h 只有低四位是有效的。所以我们要有一个处理温度的函数得到整数的温 度。 ;读出的温度转换成 1 个字节放入 temper_num temper_cov: mov a,#0f0h anl a,temper_l; 舍去温度低位中小数点后的四位温度数值 swap a mov temper_num,a mov a,temper_l jnb acc.3,temper_cov1; 四舍五入去温度值 inc temper_num temper_cov1: mov a,temper_h anl a,#07h swap a orl a,temper_num mov temper_num,a; 保存变换后的温度数据 ret 最后我们写出读温度的过程: ;读温度到 temper_l 和 temper_h read_temp: mov a,#0cch lcall write_1820 mov a,#0beh lcall write_1820 lcall read_18200 lcall init_1820 mov a,#0cch lcall write_1820 mov a,#044h 单片机系统开发与应用工程实习报告 18 lcall write_1820 ret 3.43.4 温度处理温度处理 读出温度后我们要跟据温度做相应的事,根据题目要求我们可以画出对于的流程 图: 温度70 报警 低于设定值 加热 over y y 图 3-5 温度处理流程图 代码: ;温度处理 temper_work: lcall temper_cov mov a,temper_num clr c subb a,#70 jnctemp_over mova,temper_num cjne a,temper_config,tw ret tw: jc open_ha 单片机系统开发与应用工程实习报告 19 setb ha ret ;温度超过 70 响喇叭,并停止加热 temp_over: setb ha movr6,#128 bell: clrwa movr7,#100 djnz r7,$ setb wa djnz r6,bell ret ;加热 open_ha: clr ha ret 单片机系统开发与应用工程实习报告 20 总 结 我的课程设计是单片机的温度控制。当我接到选题通知后,开始着手论文的准备 工作。开始的时候,我不知道要如何写起,要往哪方面着手。这个时候我的老师给我 很大的帮助,给我指明了设计的思路。通过老师的指导与帮助,我就开始了第一步搜 集资料的重要工作。 从搜集文献到硬件电路的完成,到软件程序的实现,到论文的完成。每一次的进 步都让我喜悦,每一次导师的指点都让我收获良多,每一次遇到困难都让我更我得学 会挑战自我。通过这次的设计,我实现了温度控制的硬件连接,了解了芯片的选用, 模块的建立,都会遇到这样那样的问题,而每一次的冲破阻碍就会感到知识得到了升 华。硬件设计我分为了以下模块:显示模块、报警模块、温度控制模块和温度传感器 模块。然后设计软件,编写程序调试硬件电路各个模块的功能。最后对整个系

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论