资源描述
淮安职业技术学院毕业论文 编号 淮安信息淮安信息职业职业技技术术学院学院 毕毕业业论论文文 题 目基于单片机的温度控制系统的设计基于单片机的温度控制系统的设计 学生姓名仝鹏 学 号42011710 系 部电气工程 专 业机电一体化 班 级420117 指导教师龚希宾 顾问教师张守峰 二三年十月 摘要 I 摘摘 要要 温度是一种最基本的环境参数,人们生活与环境温度息息相关,在工业生 产过程中需要实时测量温度,在工业生产中也离不开温度的测量,因此研究温 度的测量方法和控制具有重要的意义。 本论文介绍了一种以单片机为主要控制器件,以 DS18B20 为温度传感器的 新型数字温度计。主要包括硬件电路的设计和系统程序的设计。硬件电路主要 包括主控制器,测温控制电路和显示电路等,主控制器采用单片机 AT89C51,温 度传感器采用美国 DALLAS 半导体公司生产的 DS18B20,显示电路采用 8 位共阳 极 LED 数码管,ULN2803A 为驱动的动态扫描直读显示。测温控制电路由温度传 感器和预置温度值比较报警电路组成,当实际测量温度值大于预置温度值时, 发出报警信号,即发光二极管亮。系统程序主要包括主程序,测温子程序和显 示子程序等。DS18B20 新型单总线数字温度传感器是 DALLAS 公司生产的单线数 字温度传感器, 集温度测量和 A /D 转换于一体 ,直接输出数字量,具有接口简 单、精度高、抗干扰能力强、工作稳定可靠等特点。系统程序的设计主要包括 Proteus ISIS 仿真软件及 Keil uVision2 仿真软件的使用。Proteus 软件是一 款强大的单片机仿真软件,对于单片机学习和开发帮助极大。Proteus ISIS 是 英国 Labcenter 公司开发的电路分析与实物仿真软件。它运行于 Windows 操作 系统上,可以仿真、分析(SPICE)各种模拟器件和数字集成电路,包括单片机。 Keil uVision2 是德国 Keil 公司开发的基于 Windows 平台的单片机集成开发环 境,它包含一个高效的编译器、一个项目管理器和一个 MAKE 工具。其中 Keil C51 是一种专门为单片机设计的高效率 C 语言编译器,符合 ANSI 标准,生成的 程序代码运行速度极高,所需要的存储器空间极小,完全可以与汇编语言媲美。 由于采用了改进型智能温度传感器 DS18B20 作为检测元件,与传统的温度 计相比,本数字温度计减少了外部的硬件电路,具有低成本和易使用的特点。 DS18B20 温度计还可以在高温报警、远距离多点测温控制等方面进行应用开发, 具有很好的发展前景。此外,还介绍了系统的调试和性能分析。 关键词:AT89C51, DS18B20 , Proteus ISIS, Keil uVision2 摘要 II 目目 录录 摘摘 要要I I 第一章第一章 绪论绪论1 1 第二章设计任务及方案分析第二章设计任务及方案分析2 2 2.12.1 设计任务及要求设计任务及要求2 2 2.22.2 设计总体方案及方案论证设计总体方案及方案论证2 2 2.32.3 温度测量的方案与分析温度测量的方案与分析2 2 第三章芯片功能及软件简介第三章芯片功能及软件简介4 4 3.13.1 AT89C51AT89C51 芯片简介芯片简介4 4 3.23.2 DS18B20DS18B20 的功能简介的功能简介6 6 3.33.3 KEILKEIL UVISION2UVISION2 的使用的使用6 6 3.43.4 PROTEUSPROTEUS ISISISIS 仿真软件的使用仿真软件的使用6 6 第四章系统硬件电路的设计第四章系统硬件电路的设计1212 4.14.1 主控制电路和测温控制电路原理图主控制电路和测温控制电路原理图1212 4.24.2 驱动电路模块原理图驱动电路模块原理图1212 4.34.3 显示模块原理图显示模块原理图1313 第五章软件编程调试及性能分析第五章软件编程调试及性能分析1515 5.15.1 主程序流程图主程序流程图1515 5.25.2 主程序主程序1515 5.35.3 温度子程序温度子程序1717 5.45.4 显示子程序显示子程序2222 5.55.5 程序调试程序调试2222 5.65.6 调试性能分析和注意事项调试性能分析和注意事项2323 第六章第六章 总结与展望总结与展望2525 致致 谢谢2626 参考文献参考文献2727 附录附录2929 第一章 绪论 1 第一章第一章 绪论绪论 日常生活及工农业生产中经常要用到温度的检测及控制,在冶金、食品加 工、化工等工业生产过程中,广泛使用的各种加热炉、热处理炉、反应炉等, 都要求对温度进行严格控制。在日常生活中,电烤箱、微波炉、电热水器、烘 干箱等电器也需要进行温度检测与控制。传统的测温元件有热电偶和热电阻。 而热电偶和热电阻测出的一般是电压,再转换成对应的温度,需要比较多的外 部硬件支持,硬件电路复杂,软件调试复杂,制作成本高。而采用单片机对温 度进行控制,不仅具有控制方便,简单和灵活等优点,而且可以大幅度提高温 度控制的技术指标。 测量温度的关键是温度传感器,温度传感器正从模拟式向数字式、从集成 化向智能化、网络化的方向发展。在测温电路中,可以使用热敏电阻之类的器 件利用其感温效应,将随被测温度变化的电压或电流采集过来,先进行 A/D 转 换,然后用单片机进行数据的处理,再在显示电路上,将被测温度显示出来。 这种设计需要用到 A/D 转换电路,因此感温电路的设计比较复杂。 进而想到采用智能温度传感器来设计数字温度计。本数字温度计的设计采 用美国 DALLAS 半导体公司继 DS1820 之后推出的一种改进型智能温度传感器 DS18B20 作为检测元件,其温度值可以直接被读出来,通过核心器件单片机 AT89C52 控制温度的读写和显示,用 LED 数码管显示。测温范围为 55125,最大分辨率可达 0.0625。而且采用 3 线制与单片机相连, 减少了外部的硬件电路,具有低成本和易使用的特点。 按照系统设计功能的要求,确定系统有 5 个模块组成:主控制器、温度传 感器 DS18B20、报警电路、按键预置温度值电路及显示电路。控制器使用 AT89C52,温度传感器使用 DS18B20,用 8 位共阳极 LED 数码管以动态扫描法 实现温度显示。系统程序主要包括主程序、温度控制子程序及显示子程序等等。 综上所述,本设计以智能集成温度传感器 DS18B20 为例,介绍基于 DS18B20 传感器的数字温度计的设计,该设计适用于人们的日常生活及工农业 生产中用于温度的检测及控制。 第二章 设计任务与方案分析 2 第二章第二章. .设计任务及方案分析设计任务及方案分析 2.1 设计任务及要求设计任务及要求 设计一个以单片机为核心的温度测量系统,可实现的功能为: (1)测量温度值精度为1。 (2)系统允许的误差范围为 1以内。 (3)系统可由用户预设温度值,测温范围为55125。 (4)超出预置值时系统会自动报警,即发光二极管亮。 (5)系统具有数码显示功能,能实时显示设定温度值和测得的实际温度值。 2.2 设计总体方案及方案论证设计总体方案及方案论证 在日常生活及工农业生产中经常要用到温度的检测及控制,传统的测温元 件有热电偶和热点阻。而热电偶和热电阻测出的一般都是电压,再转换成对应 的温度,需要比较多的外部硬件支持,硬件电路复杂,软件调试复杂,制作成 本高。 本数字温度计设计采用美国 DALLAS 半导体公司继 DS1820 之后推出的一 种改进智能温度传感器 DS18B20 作为检测元件,测温范围为55125, 最大分辨率可达 0.0625。DS18B20 可以直接读出被测量的温度值,而采用 3 线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点。 按照系统设计功能的要求,确定系统由 5 个模块组成:主控制器 AT89C52,温度传感器 DS18B20,报警电路,按键电路及驱动显示电路。数字 温度计总体电路框图如图 1-1 所示。 2.3 温度测量的方案与分析温度测量的方案与分析 1芯片选择 本设计的测温系统采用芯片 DS18B20, DS18B20 是 DALLAS 公司的最 新单线数字温度传感器,它的体积更小、适用电压更宽、更经济,DS18B20 是 世界上第一片支持“一线总线”接口的温度传感器,具有一线总线独特而且经济的 特点。采用智能温度传感器 DS18B20 作为检测元件,测温范围为 55125,最大分辨率可达 0.0625。DS18B20 可以直接读出被测量的 温度值,而且采用 3 线制与单片机相连,减少了外部的硬件电路,具有低成本 和易使用的特点。 2实现方法简介: DS18B20 采用外接电源方式工作,一线测温的一线与 AT89C52 的 P3.7 连 接并加上上拉电阻使其工作,测出的数据存放在寄存器 10H-12H 中,将数据经 过 BCD 码转换后送 LED 显示。具体实现步骤见软件设计章节。 第二章 设计任务与方案分析 3 图 1-1 总体电路框图 3测温流程图: 图 1-2 测温流程图 主控制器 AT89C52 驱动显示电路按键电路 报警电路 DS18B20 初始化跳过 ROM 匹配 数码管显示 温度变换 读暂存器 转换成显示 码 延时 1S 跳过 ROM 匹配 第三章 芯片功能简介 4 第三章第三章. .芯片功能简介芯片功能简介 3.1 AT89C51 芯片简介芯片简介 AT89C51 是美国 ATMEL 公司生产的低电平,高性能 CMOS 8 位单片机, 片内含 8k bytes 的可反复擦写的只读程序存储器(PEROM)和 256 bytes 的随机存 取数据存储器(RAM ),器件采用 ATMEL 公司的高密度、非易失性存储技术生产, 与标准 MCS-51 指令系统及 8052 产品引脚兼容,片内置通用 8 位中央处理器 (CPU)和 Flash 存储单元,32 个可编程 I/O 口线, 3 个 16 位定时/计数器, 低功耗 空闲和掉电模式。功能强大的 AT89C52 单片机适合于许多较为复杂控制应用场 合。 引脚功能说明如下: (1)VCC:电源电压 (2)GND:地 (3) P0 口:P0 口是一组 8 位漏极开路型双向 I/O 口,也即地址/数据总线 复用口。作为输出口用时,每位能吸收电流的方式驱动 8 个 TTL 逻辑门电路, 对端口 P0 写“1”时可作为高阻抗输入端用。 在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低 8 位)和 数据总线复位,在访问期间激活内部上拉电阻。 (4)P1 口:P1 是一个带内部上拉电阻的 8 位双向 I/O 口,P1 的输出缓冲级 可驱动(吸收或输出电流)4 个 TTE 逻辑门电路。对端口写“1” ,通过内部的上拉 电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上 拉电阻,某个引脚被外部信号拉低时会输出一个电流(ILL)。 与 AT89C51 不同之处是,P1.0 和 P1.1 还可分别作为定时/计数器 2 的外部 计数输入(P 1.0/T2)和输入(P 1.1/T2EX ),参见表 2-1。 Flash 编程和程序校验期间,P1 接收低 8 位地址。 表 2-1 P1.0 和 P1.1 的第二功能 引 脚 号 功能特性 P1.0T2(定时/计数器 2 外部计数脉冲输入) ,时钟输出 P1.1T2EX(定时/计数 2 捕获/重装载触发和方向控制) (5)P2 口:P2 是一个带有内部上拉电阻的 8 位双向 I/O 口,P2 的输出缓冲 级可驱动(吸收或输出电流)4 个 TTL 逻辑门电路。对端口 P2 写“1” ,通过内部 的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部 存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(ILL)。 在访问外部程序存储器或 16 位地址的外部数据存储器(例如执行 MOVX DPTR 指令)时,P2 口送出高 8 位地址数据。在访问 8 位地址的外部数据存储 器(如执行 MOVX RI 指令)时,P2 口输出 P2 锁存器的内容。 第三章 芯片功能简介 5 (6)P3 口:P3 口是一组带有内部上拉电阻的 8 位双向 I/O 口。P3 口输出缓 冲级可驱动(吸收或输出电流)4 个 TTL 逻辑门电路。对 P3 口写入“1”时,它们 被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的 P3 口将用上拉电 阻输出电流(ILL)。 P3 口除了作为一般的 I/O 口线外,更重要的用途是它的第二功能,如表 2-2 所示。 (7)RST:复位输入。当振荡器工作时,RST 引脚出现两个机器周期以上高 电平将使单片机复位。 表 2-2 P3 口的第二功能 端口引脚第二功能 P3.0RXD(串行输入口) P3.1TXD(串行输出口) P3.2 (外中断 0)INT0 P3.3 (外中断 1)INT1 P3.4T0(定时/计数 0) P3.5T1(定时/计数 1) P3.6 (外部数据存储器写选通)WR P3.7 (外部数据存储器读选通)RD (8)/VPP:外部访问允许。欲使 CPU 仅访问外部程序存储器(地址为EA 0000H-FFFFH ) 。端必须保持低电平(接地)。需注意的是:如果加密位 LB1EA 被编程,复位时内部会锁存端状态。EA 如端为高电平(接 VCC 端),CPU 则执行内部程序存储器中的指令。EA Flash 存储器编程时,该引脚加上+12V 的编程允许电源 VPP,当然这必须 是该器件是使用 12V 编程电压 VCC 。 (9)XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。 (10)XTAL2:振荡器反相放大器的输出端。 (11)数据存储器: AT89C52 有 256 个字节的内部 RAM,80H-FFH 高 128 个字节与特殊功能寄 存器(SFR)地址是重叠的,也就是高 128。 字节的 RAM 和特殊功能寄存器的地址是相同的,但在物理上它们是分开 的。 当一条指令访问 7FH 以上的内部地址单元时,指令中使用的寻址方式是不 同的,也即寻址方式决定是访问高 128 字节。 RAM 还是访问特殊功能寄存器。如果指令是直接寻址方式则为访问特殊功 能寄存器。 (12)中断: 第三章 芯片功能简介 6 AT89C52 共有 6 个中断向量:两个外中断(INT0 和 INT1) ,3 个定时器中断 (定时器 0, 1, 2)和串行口中断。 (13)时钟振荡器: AT89C52 中有一个用于构成内部振荡器的高增益反相放大器,引脚 XTAL1 和 XTAL2 分别是该放大器的输入端和输出端。 这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振 荡器,振荡电路参见图 2-1(a)图所示。 外接石英晶体(或陶瓷谐振器)及电容 C1、C2 接在放大器的反馈回路中 构成并联振荡电路,对外接电容 C1、C2 虽然没有十分严格的要求,但电容容量 的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程度及 温度稳定性,如果使用石英晶体,我们推荐电容使用 30pF 士 10pF,而如果使用 陶瓷谐振器,建议选择 40pF 士 l0pF。 用户也可以采用外部时钟。采用外部时钟的电路如图 2-1(b)图所示。这 种情况下,外部时钟脉冲接到 XTAL1 端,即内部时钟发生器的输入端,XTAL2 则悬空。 (a)内部振荡电路 (b)外部振荡电路 图 2-1 振荡电路 由于外部时钟信号是通过一个 2 分频触发器后作为内部时钟信号的,所以 对外部时钟信号的占空比没有特殊要求,但最小高电平持续时间和最大的低电 平持续时间应符合产品技术条件的要求。 3.2 DS18B20 的功能简介的功能简介 DS18B20DS18B20 的性能指标的性能指标 (1)只需一根口线与 MCU 连接,无需外部原件。 由总线提供电源,或专线供电。 测温范围为-55 摄氏度至+125 摄氏度。 9 到 12 位温度读数。 第三章 芯片功能简介 7 温度转换时间为 200ms。 用户自行设定温度报警上下限,掉电后数据有效。 可识别并寻址系统中温度超限报警的 DS18B20, DS18B20DS18B20 的电源及工作方式的电源及工作方式 DS18B20 的供电方式,DS18B20 有两种工作方式,一种是外部供电方式即从 VCC 引脚供电,GND 接地,另一种是寄生电源供电方式,直接从 DQ 端上获得 电源,当 DQ 为高电平是为内部电容充电,当 DQ 为低电平是电容为 DS18B20 供电(VCC 端必须接地)已确保芯片的稳定性, DS18B20 的测温原理,DS18B20 通过内部温度寄存器接收一个受温度系数影 响的振荡器输出的脉冲个数直接影响到数字温度数据,温度转化命令执行后, 发送读高速暂存器命令(BEh)可将温度数据经单线总线读出,温度数据传 输时,低位在先。 当收到温度转换命令后,DS18B20 的内部数字化温度转换器讲温度数据以二 进制补吗形式储存到 16 位快速暂存器中,有效数据位可编程设定为 9 位, 10 位,11 位,12 位,分别对应 4 种分辨率 :0.5 摄氏度 0.25 摄氏度 0.125 摄氏度 0.0625 摄氏度。有效数据最高位为符号位,可表示温度的正 负值。高字节的其他高位扩展为符号位;有效数据的第四位表示温度的小数 位,DS18B20 出厂默认状态为 12 位。 表DS18B20温度值格式表 bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0 LSLS ByteByte2 2 3 2 2 2 2 212 2 0 2 2 1 2 2 2 2 2 3 2 2 4 bit15 bit14 bit13 bit12 bit11 bit10 bit9 bit8 MSMS ByteByteS SS SS SS SS S2 2 6 2 2 5 2 2 4 表表 8-28-2 温度与转换数据的关系温度与转换数据的关系 +125+12500000000 01110111 11011101 0000000007D0h07D0h +85+8500000000 01010101 01010101 000000000550h0550h +25.0625+25.062500000000 00010001 10011001 000100010191h0191h +10.125+10.12500000000 00000000 10101010 0010001000A2h00A2h +0.5+0.500000000 00000000 00000000 100010000008h0008h 0000000000 00000000 00000000 00000000 0000h0000h -0.5-0.511111111 11111111 11111111 10001000 FFF8hFFF8h -10.125-10.12511111111 11111111 01010101 11101110 FF5EhFF5Eh -25.0625-25.062511111111 11101110 01100110 11111111 FF6FhFF6Fh -55-5511111111 11001100 10011001 00000000FC90hFC90h /上电复位时温度寄存器的值为上电复位时温度寄存器的值为+85+85(00000000 01010101 01010101 00000000) 报警信号的应用 。DS18B20 每次执行完温度抓换后,温度值将与储存在 TH 和 TL 内的触发值相比较,如果测量的结果大于 TH 的值或小于 TL 的 值,就会置位内部的报警标志位,在连接多片 DS18B20 的应用系统中, 主机发送报警搜索命令(ECh)时,有置位报警标志位的 DS18B20 会响应 总线主机发回标志位,其他没有置位报警标志位的 DS18B20 则保持沉默, 第三章 芯片功能简介 8 这样便于主机立即识别 DS18B20 并读出数据。 16 位的温度寄存器与 8 位 TH 或 TL 寄存器内容进行比较操作时,讲忽略 温度寄存器高字节,而 TH 或 TL 得最高位对应温度数据的符号位。 DS18B20DS18B20 的结构的结构 DS18B20 的外部图及引脚意义。 序号名称引脚功能描述 1 1GNDGND 地信号 2 2DQDQ 数据输入/输出引脚。开漏单总 线接口引脚。当被用着在寄生电 源下,也可以向器件提供电源。 3 3VDDVDD 可选择的 VDD 引脚。当工作于寄 生电源时,此引脚必须接地。 DS18B20 的内部结构如图 8-2 所示。主要由数字器件组成;64 位闪速 ROM,温度传感器,温度寄存器(告诉暂存 RAM 与 E2PR0M) 64bit 闪速 ROM 的结构如图 8-3 所示。每片 DS18B20 都有唯一的 64 位长 的激光 ROM 其中低 8 位是单线产品(DS18B20 代码为 28h) ,后续的 48 位唯一的序列号,高 8 位是前 56 的 CRC(循环冗余校验码) 。64 位的 ROM 及其功能控制部分使 DS18B20 作物 idanxian 总线器件进行操作,只 有满足功能协议后对 DS18B20 的控制功能才能接受,总线主机必须提供 5 个 ROM 命令中的一个且这个名林被成功执行,DS18B20 才可接受总线主 机的指定功能,即后续提供的 6 个存储器操作中的一个命令。 64 位 ROM 和单线 接 口 高速缓存 存储器 存储器和控制器 8 位 CRC 生成器 温度传感器 低温触发器 TL 高温触发器 TH 配置寄存器 电 源 检 测 DS18B20DS18B20 1 2 3 GND DQ VCC 第三章 芯片功能简介 9 8-28-2 8bit8bit 校验校验 CRCCRC48bit48bit 序列号序列号8bit8bit 工厂代码工厂代码 Msb lsb msb lsb msb lsb 8-38-3 DS18B20DS18B20 闪速闪速 ROMROM 的存储结构的存储结构 DS18B20 结构废纸寄存器。第 04 位始终为“1” 。第 7 位始终为“0” 第 5,6 位(R1,R0)决定温度分辨率及时对应的温度转换时间,见表 8-3。 0 0R1R1R0R01 11 11 11 11 1 MSBMSB LSBLSB R1R1R0R0 测温分辨率测温分辨率最大温度转最大温度转 换时间换时间 0 00 09-bit9-bit93.75ms93.75ms 0 01 110-bit10-bit187.5ms187.5ms 1 10 011-bit11-bit375ms375ms 1 11 112bit12bit750ms750ms 表 8-3 存储器。DS18B20 的存储器由一个告诉暂存器 RAM 和一个永久性电可擦除 E2PR0M 组成,后则存储高,低温度触发器 TH TL 和结构配置寄存器的内容。 暂存器有助于确保单线通信数据的完整性。数据首先用写暂存器命令 (4Eh)读回进行校验;校验之后,再用复制暂存器;写入的数据可以被读, 暂存器命令(BEh)读回进行校验;校验之后,再用复制暂存器命令(48h) 把数据传送到永久性 E2PROM 中,这一过程确保了更改存储器是数据的完整 性。 高速暂存器由 8 字节存储器组成,如图 8-4 所示。前两个字节妇女别是测 量温度数据的低字节(LSB) ,高字节(MSB) ;第 3,4 字节是 TH TL 的复制值, 第 5 字节是结构配置寄存器的复制值,这三个字节数据虽会因普通 RAM 掉电而 失去信息,但每次上电时都会 自动从永久性 E2PROM 中复制数 据进行刷新,第 6-8 字节保留 作内部运算用,第 9 字节是前 面 8 个字节的循环冗余校验码 (CRC) ; 循环冗余校验码 CRC 产生。 DS18B20 内部 64 位 ROM 最高有 效字节,是循环冗余校验码 CRC,主机可以读出 64 位 ROM 的前 56 位,计算出 CRC 的值, 高速暂存器高速暂存器字节字节 温度低字节温度低字节 LBLB 0 0 温度高字节温度高字节 HBHB 1 1 温度触发高字节温度触发高字节 THTH 2 2 温度触发低字节温度触发低字节 TLTL 3 3 结构配置结构配置 CONFIGCONFIG 4 4 保留保留 5 5 保留保留 6 6 保留保留 7 7 循环冗余校验码(循环冗余校验码(CRCCRC) 8 8 第三章 芯片功能简介 10 并把它与存储器在 DS18B20 内的 CRC 值进行比较,以决定 ROM 的数据是否已被 主机正确地接收,计算 CRC 的等效多项式函数为, CRC=X8+X5+X4+1 DS18B20 也利用与上述相同的多项式函数产生一个 8 位 CRC 值,并把此值提供 给总线主机以证实数据字节的传送。在使用 CRC 来证实数据传送的每一种情况 中,总线主机必须用上述多现实计算出 CRC 的值,并把计算机所得的值与存储 在 DS18B20 的 64 位 ROM 中的最高字节 CRC 值(ROM 读数) ,或者 DS18B20 中计算 得到 CRC 值(读暂存器操作时读出的第 9 字节)进行比较。总线主机根据 CRC 值的比较来决定是否继续操作。当以上 CRC 值比较不相符合,DS18B20 内部没有 电路来阻止命令序列的继续执行。寄存器的所有为被初始化为零。然后从产品 系列编码的最低有效位开始,每次一位。当产品系列编码的 8 位移入后,接着 移入序列号。在序列号的第 48 位进入之后,移位寄存器便包含了 CRC 值。移入 CRC 的 8 位应该使移位寄存器返回为零。 DS18B20DDS18B20D 的操作命令的操作命令 DS18B20 经单线接口协议进行存取操作的顺序是: 初始化(发复位脉冲)ROM 功能命令操作存储器功能命令操作数据处 理操作。 初始化。单线总线上的所有传输操作均从初始化序列开始,如图 8-6。初始 化序列包括总线主机发出复位脉冲,接着由从属器件送出存在脉冲。存在脉 冲使总线主机知道 DS18B20 挂在总线上并准备进行操作。 主机发送复位脉冲主机发送复位脉冲 主主 机机 接接 收收 480us480us 4801us1us 15us15us DS18B20DS18B20 采样采样 45us45us 15us15us DS18B20DS18B20 采样采样 45us45us DS18B20 在 DQ 数据线变低后 15-60us 之间采样数据线,DQ 数据线为高电平既是 数据“1” ,DQ 数据线为低电平既是数据“0:” 。 主机发送写“1”时际拉低数据线至少 1us,再拉高数据线,也也已在 15us 后拉 高数据线然后释放;发送写“0”时际拉低数据线后一直保持低电平 60us 在释 第三章 芯片功能简介 12 放。 读时际。读时际是主机使数据线从逻辑高电平大地为逻辑低电平,持续至少 1us 后释放数据线,再接收从 DS18B20 传来的数据位的过陈塘关,读时际的 持续时间必须大于 60us,且两个读时际操作的回复时间间隔必须大于 1us, 如图 8-8 所示。 主机读主机读 0 0 时际时际 1us1us 主机读主机读 1 1 时际时际 1us1us 15us15us 主机采样主机采样 45us45us 15us15us 主机主机 采样采样 45us45us DS18B20 在读时际数据线下降沿之后 15us 开始输出有效数据, ,此时主机必须释 放数据线(转为输入状态) 。读时际技术后数据线由外部上拉电阻拉回至高电平。 5.1k5.1k VCCVCC GNDGND GNDGND MCS51 P1.7 100 DS18B20DS18B20 DQDQ 第三章 芯片功能简介 13 3.3Keil uVision2 仿真软件的使用 Keil uVision2 的使用 Keil uVision2 是目前使用广泛的单片机开发软件, 它集成了源程序编辑和程序调试于一体,支持汇编、C、PL/M语言。这里我仅仅 介绍 Keil uVision2 的简单使用, 创建项目实例创建项目实例 Vision2 包括一个项目管理器,它可以使 8x51 应用系统的设计变得简单。要创建一个 应用,需要按下列步骤进行操作: 启动 Vision2,新建一个项目文件并从器件库中选择一个器件。 新建一个源文件并把它加入到项目中。 增加并设置选择的器件的启动代码 针对目标硬件设置工具选项。 编译项目并生成可编程 PROM 的 HEX 文件。 下面将逐步地进行描述,从而指引读者创建一个简单的 Vision2 项目。 1) 选择【Project】/【New Project】选项,如图 1-2 所示。 图 1-2 Project 菜单 2) 在弹出的“Create New Project”对话框中选择要保存项目文件的路径,比如保存到 Exercise 目录里,在“文件名”文本框中输入项目名为 example,如图 1-3 所示,然后单击 “保存”按钮。 第三章 芯片功能简介 14 图 1-3 Create New Project 对话框 3) 时会弹出一个对话框,要求选择单片机的型号。读者可以根据使用的单片机型号来 选择,Keil C51 几乎支持所有的 51 核的单片机,这里只是以常用的 AT89C51 为例来说明, 如图 1-4 所示。选择 89C51 之后,右边 Description 栏中即显示单片机的基本说明,然后单 击“确定”按钮。 图 14 选择单片机的型号对话框 4)这时需要新建一个源程序文件。建立一个汇编或 C 文件,如果已经有源程序文件, 可以忽略这一步。选择【File】/【New】选项,如图 1-5 所示。 5)在弹出的程序文本框中输入一个简单的程序,如图 1-6 所示。 第三章 芯片功能简介 15 图 1-5 新建源程序文件对话框图 图 1-6 程序文本框 6) 选择【File】/【Save】选项,或者单击工具栏按钮,保存文件。 在弹出的如图 1-7 所示的对话框中选择要保存的路径,在“文件名”文本框中输入文件 名。注意一定要输入扩展名,如果是 C 程序文件,扩展名为.c;如果是汇编文件,扩展名为. asm;如果 ini 文件,扩展名为. ini。这里需要存储 ASM 源程序文件,所以输入.asm 扩展名 (也可以保存为其他名字,比如 new.asm 等) ,单击“保存”按钮。 图 1-7 “Save As”对话框图 7) 单击 Target1 前面的+号,展开里面的内容 Source Group1,如图 1-8 所示。 图 1-8 Target 展开图 8) 用右键单击 Source Group1,在弹出的快捷菜单中选择 Add File to GroupSource Group1选项,如图 1-9 所示。 第三章 芯片功能简介 16 图 19 Add Files to Group Source Group1菜单 9) 选择刚才的文件 example.asm,文件类型选择 Asm Source file(*.C) 。如果是 C 文 件,则选择 C Source file;如果是目标文件,则选择 Object file;如果是库文件,则选择 Library file。最后单击“Add”按钮,如果要添加多个文件,可以不断添加。添加完毕后单 击“Close”按钮,关闭该窗口,如图 1-10 所示 第三章 芯片功能简介 17 图 1-10 Add Files to Group Source Group1对话框 设置 Output 选项卡(如图 1-17 所示) 第三章 芯片功能简介 18 图 1-17 设置 Output 卡 Select Folder for Objects:单击该按钮可以选择编译后目标文件的存储目录,如果不 设置,就存储在项目文件的目录里。 Name of Executable:设置生成的目标文件的名字,缺省情况下和项目的名字一样。 目标文件可以生成库或者 obj、HEX 的格式。 Create Executable:如果要生成 OMF 以及 HEX 文件,一般选中 Debug Information 和 Browse Information。选中这两项,才有调试所需的详细信息,比如要调试 C 语言程序, 如果不选中,调试时将无法看到高级语言写的程序。 Create HEX File:要生成 HEX 文件,一定要选中该选项,如果编译之后没有生成 HEX 文件,就是因为这个选项没有被选中。默认是不选中的。 Create Library:选中该项时将生成 lib 库文件。根据需要决定是否要生成库文件, 一般应用是不生成库文件的。 After Make:栏中有以下几个设置。 Beep when complete:编译完成之后发出咚的声音。 Start Debugging:马上启动调试(软件仿真或硬件仿真) ,根据需要来设置,一般是 不选中。 Run User Program #1,Run User Program #2:这个选项可以设置编译完之后所要运 行的其他应用程序(比如有些用户自己编写了烧写芯片的程序,编译完便执行该程序,将 HEX 文件写入芯片) ,或者调用外部的仿真器程序。根据自己的需要设置。 图 1-21 Rebuild all target files 或者单击工具栏中的按钮,如图 1-22 所示,开始编译程序。 图 1-22 工具栏中的按钮 如果编译成功,开发环境下面会显示编译成功的信息,如图 1-23 所示。 图 1-23 编译成功信息 第三章 芯片功能简介 19 14)编译完毕之后,选择【Debug】/【Start/Stop Debug Session】选项,即就进入仿真 环境,如图 1-24 所示。 图 1-24 仿真 或者单击工具栏中的铵钮,如图 1-25 所示。 图 1-25 工具栏仿真按钮 15)装载代码之后,开发环境下面显示如图 1-26 所示的信息。 图 1-26 装载代码 3.4Proteus ISIS 仿真软件的使用 Proteus 软件是一款强大的单片机仿真软件,对于单片机学习和开发帮助极大。 Proteus ISIS 是英国 Labcenter 公司开发的电路分析与实物仿真软件。它运行于 Windows 操作系统上,可以仿真、分析(SPICE)各种模拟器件和数字集成电路,包括单片机。在国内 由广州的风标电子技术有限公司代理。 在单片机课程中我们主要利用它实现下列功能: 1、绘制硬件原理图,并设置元件参数。 2、仿真单片机及其程序以及外部接口电路,验证设计的可行性与合理性,为实际的硬 件实验做好准备。 3、如有必要可以利用它来设计电路板。 第三章 芯片功能简介 20 总之,该软件是一款集单片机和 SPICE 分析于一身的仿真软件,可以实现从构想到实 际项目完成全部功能。 双击桌面上的 ISIS 7 Professional 图标或者单击屏幕左下方的“开始”“程序” “Proteus 7 Professional” “ISIS 7 Professional” ,出现如图 2-1 所示屏幕,表明进入 Proteus ISIS 集成环境。 图 2-1 Proteus ISIS 集成环境 图中已经标注各个部分的作用,我们现在就使用软件提供的功能进行工作。 第三章 芯片功能简介 21 图 2-2 ISIS 主窗口 端子模式 引脚模式 图形模式 录音机模式 信号源模式 电压探测模式 电流探测模式 虚拟仪器模式 选择模式 元件模式 连接点模式 线标号模式 文本描述模式 总线模式 子电路模式 图 1-6 元件选择区 顺时针旋转 逆时针旋转 旋转度数 水平镜像 垂直镜像 第三章 芯片功能简介 22 调入元件 在新设计窗口中,点击对象选择器上方的按钮 P(如图 2-5 所示) ,即可进入元件拾取 对话框,如图 2-6 所示。 图 2-5 调入元件 3-1 放置元件 在对象选择器中的元件列表中,单击所用元件,再在设计窗口单击,出现所用元件的 轮廓,并随鼠标移动,找到合适位置,单击,元件被放到当前位置。至此,一个元件放置 好了。继续放置要用的其他元件。 第三章 芯片功能简介 23 3-4 连线 就是把元件的引脚按照需要用导线连接起来。方法是,在开始连线的元件引脚处点击左键 (光标接近引脚端点附近会出现红色小方框,这时就可以了) ,移动光标到另一个元件引脚 的端点,单击即可。移动过程中会有一根线跟随光标延长,直到单击才停住 电阻电容等元件的参数可以根据需要修改。比如限流电阻的阻值应该在 200 到 500 欧姆左 右,上拉电阻应该在几千欧姆 3-6 添加电源和地 在左边工具栏点击终端图标,即可出现可用的终端,图 2-11-a 所示。在对象选择器 中的对象列表中,单击 POWER,图 2-11-b 所示,在预览窗口出现电源符号,在需要放置电 源的地方单击,即可放置电源符号,如图 2-11-c 所示。放置之后,就可以连线了。 放置接地符号(地线)的方法与放置电源类似,在对象选择列表中单击 GROUND , 然后在需要接地符号的地方单击,就可以了。 注意注意:放置电源和地之后,如果又需要放置元件,应该先点击左边工具栏元件图标, 就会在对象列表中出现我们从元件库中调出来的元件。 图 2-11-a 选择端口 图 2-11-啊选择电源符号 图 2-11-不 放置电源符号图 添加程序添加程序 单片机应用系统的原理图设计完成之后,还要设计和添加程序,否则无法仿真运行。 实际的单片机也是这样。编译源程序我们使用的是Keil uVision2 仿真软件进行调试。 只要编译产生的机器码文件是.HEX 格式就可以。 方法如下:在原理图中点击单片机以选中,再次点击打开元件编辑对话框, 如图 2-19 所示。 图 2-19 编辑单片机添加机器码程序 在图中看到: 在 Program File:后边的方框里显示 P1P2.HEX,说明机器码已经装入。 如果没有装入,这里将是空白。这时可以点击其右边的打开文件图标,查找并选中机器 码文件即可。这样,就可以在仿真时执行程序。 这样装入的机器码程序有个缺点,只能执行,不好调试。因为没有源代码,也无法打 开源代码窗口,无法单步执行。解决的方法是,在其他编辑编译软件通过之后,再将源程 序添加到项目,如 4-2 节所述。然后再用本节开始 5-1 所述方法添加源程序并编译一次,这 时不会出现错误。一般也不用再给单片机添加机器码程序,除非你途中改换了源程序。 第三章 芯片功能简介 24 在图 2-19 中还有一个时钟频率(Clock Frequency)可以改变。一般情况下,单片机的 时钟频率由此设定,而不是来自时钟电路,这就是为什么在仿真时可以省略时钟电路和复 位电路的原因。 6、仿真执行 Program 软件可以仿真模拟电路和数字电路,还可以仿真若干型号的单片机。我们使用 的目的主要就是仿真单片机和外围的接口电路。这里简要介绍 MCS-51 单片机和部分接口 电路的仿真过程,其他方面的内容请自行查找资料。 6-1 一般仿真 在原理图编辑窗口下面有一排按钮,利用它可以控制仿真的过 程。点击按钮开始仿真,开始以后按钮的小三角变成绿色,点击按钮单步仿真, 点击按钮暂停和继续仿真切换,点击按钮停止仿真。 第四章 系统硬件电路的设计 25 第四章第四章. .系统硬件电路的设计系统硬件电路的设计 4.1 主控制电路和测温控制电路原理图主控制电路和测温控制电路原理图 主控制电路由 AT89C51 及外围元件构成,测温电路由 DS18B20、预置数 电路和报警电路组成。AT89C51 是此硬件电路设计的核心,通过 AT89C51 的管 脚 P3.7 与 DS18B20 相连,控制温度的读出和显示。预置数电路由两个按键和两 个数码管组成,两个按键分别与 AT89C51 的管脚 P3.2 和 P3.6 相连。报警电路 很简单,只有一个发光二极管,与 AT89C51 的 P3.0 管脚相连,若实际测量的温 度值大于预置温度值,则发光二极管亮,即为报警标志。硬件电路的功能都是 与软件编程相结合而实现的。具体电路原理图如下图 3-1 所示。 图3-1主控制电路和测温控制电路原理图 4.3 显示模块原理图显示模块原理图 采用动态显示方案,设计中使用八个共阴极数码管作为显示载体,通过八 路并口传输,共使用了十六个I/O口。显示时采用循环移位法,即八位数码管依 次循环点亮,利用人眼睛的视觉暂留效果达到连续显示,主程序每运行一遍便 调用一次显示子程序,将数据显示出来。 显示电路由八位共阴极的数码管组成,通过网络标号 A、B、C、D、E、F、G、DP等与AT89C51的P0口相连,由八个350欧的电阻驱 动,实现段控制功能。通过网络标号C0-C7与驱动芯片ULN2803A相连,以此为 桥梁与AT89C51相连,实现位控制功能。 第五章 软件编程调试及性能分析 26 第五章第五章. .软件编程调试及性能分析软件编程调试及性能分析 5.1 主程序流程图主程序流程图 图 4-1 主程序流程图 5.2 主程序主程序 ORG 0000H LJMP START START: MOV DISBUF4,#00H ;开始,初始化 MOV DISBUF5, #00H MAIN: ;主程序 LCAAL KEY ;调按键预置数子程序 开始 调复位子程序 发 SKIP ROM 命令 CCH 调 WRITE DS18B20 子程序 发出温度转换命令 调 WRITE DS18B20 子程序 调复位子程序 调 READ DS18B20 子程序 调 WRITE DS18B20 子程序 发命令 BEH 读暂存器内容 调 WRITE DS18B20 子程序发 SKIP ROM 命令 CCH 对读出的温度值进行转换 转换后的数存于缓冲区 调用比较报警子程序 调显示子程序调按键子程序 第五章 软件编程调试及性能分析 27 CLR RS1 CLR RS0 LCALL RESET ;调复位子程序 MOV A,#0CCH ;跳过 ROM 匹配-0CCH LCALL WRITE ;调 DS18B20 写子程序 MOV A,#44H ;发出温度转换命令 LCALL WRITE ;调 DS18B20 写子程序 LCALL RESET ;调复位子程序 MOV A,#0CCH ;跳过 ROM 匹配 LCALL WRITE ;调 DS18B20 写子程序 MOV A,#0BEH ;发出读取温度值命令 LCALL WRITE ;调 DS18B20 写子程序 LCALL READ ;调 DS18B20 读子程序 MOV A, 3DH MOV 29H,A LCALL READ MOV A, 3DH MOV 28H, A MOV R0, #34H MOV A, 28H RLC A MOV 47H, C JNB 47H, BTOD1 ;28H 中的最高位是否为 1(温度0) ;小于 0 的温度值不处理,大于 0 顺序执行 BTOD1: MOV A, 28H RRC A MOV 40H, C RRC A MOV 41H, C RRC A MOV 42H, C RRC A MOV 43H, C MOV A, 29H MOV 27H, A MOV C,40H ;将 28H 中的最低位移入 C,40H41H42H ;43H 为 28H 中的位地址 RRC A ;将 28H 中的低 4 位移到 A 的高 4 位 第五章 软件编程调试及性能分析 28 MOV C, 41H RRC A MOV C, 42H RRC A MOV C, 43H RRC A MOV 29H,A ;将 28H 中的低 4 位放入 29H 中 MOV A, 29H ;将 29H 中的十六进制数转换成 10 进制 MOV B, #100 DIV AB MOV R0, A ;百位存于 34H MOV R0, #11H ;百位不显示 DEC R0 MOV A, #10 XCH A, B DIV AB MOV R0, A ;十位存于 33H DEC R0 MOV R0, B ;个位存于 32H DEC R0 ANL 27H, #0FH ;小数点后一位进制转换 MOV A, 27H MOV B, #06H MUL AB MOV B, #10 DIV AB MOV R0, A ;小数点后一位存于 31H MOV DISBUF0,33H ;十位 MOV DISBUF1,32H ;个位 MOV DISBUF2,31H ;小数位 MOV DISBUF3, #0H ;置 0 MOV DISBUF6, #0H MOV DISBUF7, #0H LCALL CMP ;调比较报警子程序 LCALL DISPLAY ;调用显示子程序 LJMP MAIN ;转到 MAIN 5.3 温度子程序温度子程序 由于 DS18B20 单线通信功能是分时完成的,它有严格的时隙概念,因此读 写时序很重要。系统对 DS18B20 的各种操作都是按时序进行的。DS18B20 的一 线工作协议流程是:初始化ROM 操作指令存储器操作指令数据传输。 第五章 软件编程调试及性能分析 29 1. DS18B20 复位子程序 DS18B20 复位时序图参看后面芯片功能部分有详细的介绍。在这一部分只 给出程序流程图,然后给出根据流程图所编写的 DS18B20 复位子程序。 Y 开始 拉低数据线 P3.7=0 发 600us 复位脉冲 P3.7 送给 CY 延时 500us DS18B20 等待 60us 主机释放数据线 P3.7=1 DS18B20 的 P3.7=1? 延时 1us 以上 返回 DS18B20 的 P3.7=1? Y N 延时 240us Y N 图 4-2 DS18B20 复位子程序流程图 第五章 软件编程调试及性能分析 30 1. 程序如下: RESET: NOP L0: CLR P3.7 ;拉低数据线 MOV R2,#200 ;发出 600us 的复位脉冲 L1: NOP DJNZ R2, L1 SETB P3.7 ;主机释放数据线 MOV R2,#30 ;DS18B20 等待 60us L4: DJNZ R2, L4 CLR C ORL C,P3.7 ;DS18B20 数据变低(存在脉冲)吗? JC L3 ;DS1
展开阅读全文