实验项目名称 _基于Proteus的温度检测_
组长姓名 娄猛__ 学号 _2*01417
手机 159*917
成员姓名 ____ 学号 _ _
成员姓名 ____ 学号 _ _
专 业 电子信息工程_ 班级 _ 09级
指导教师及职称 ____吕常智______
开课学期 至_学年_1_学期
提交时间 年1月日
根据 DS18B20 的 1-wire 的通信原理,利用单片机汇编(或 C)语言实现一个温度测试并显示的电路,在 Proteus 平台上进行电路设计,并且载入单片机程序进行仿真验证。 |
掌握虚拟仿真软件 Proteus 的应用,了解温度传感器 DS18B20 的 1-wire 的通信原理,学会采用 Proteus 虚拟仿真软件工具,利用单片机汇编(或 C)语言实现一个温度测试并显示的电路,并且在 Proteus 软件上仿真测试,进行验证,综合实验系统的使用方法,熟悉创新性实验报告的撰写方法。 |
实验场地: 院实验室318、424 仪器设备: 计算机一台 软件: Proteus软件 |
(1)DS18B20特点: DS18B20采用一线通信接口。因为一线通信接口,必须在先完成ROM设定,否则记忆和控制 功能将无法使用。主要首先提供以下功能命令之一: <1> 读ROM,<2>ROM匹配,<3>搜索ROM,<4>跳过ROM,<5>报警检查。这些指令操作作用在没有一个器件的64位光刻ROM序列号,可以在挂在一线上多个器件选定某一个器件,同时,总线也可以知道总线上挂有有多少,什么样的设备。 若指令成功地使DS18B20完成温度测量,数据存储在DS18B20的存储器。一个控制功能 指挥指示DS18B20的演出测温。测量结果将被放置在DS18B20内存中,并可以让阅读发出记忆功能的指挥,阅读内容的片上存储器。温度报警触发器 TH和TL都有一字节EEPROM 的数据。如果DS18B20不使用报警检查指令,这些寄存器可作为一般的用户记忆用途。在片上还载有配置字节以理想的解决温度数字转换。写TH,TL指令 以及配置字节利用一个记忆功能的指令完成。通过缓存器读寄存器。所有数据的读,写都是从最低位开始。 DS18B20部分命令设置:
DS18B20读写时序图: ![]() ![]() 说明: 主机要生成一个写时间隙,必须把数据线拉到低电平然后释放,在写时间隙开始后的15μs内允许数据线拉到高电平。 主机要生成一个写 0 时间隙,必须把数据线拉到低电平并保持 60μs。 初始化过程“复位和存在脉冲”: ![]() 说明: DS1820 需要严格的协议以确保数据的完整性。协议包括几种单线信号类型:复位脉冲、存在脉冲、写0、写 1、读0 和读1。所有这些信号,除存在脉冲外,都是由总线控制器发出的。 和 DS1820 间的任何通讯都需要以初始化序列开始,一个复位脉冲跟着一个存在脉冲表明 DS1820 已经准备好发送和接收数据(适当的 ROM 命令和存储器操作命令)。 DS18B20温度值格式表: ![]() 说明: 这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面 5位是符号位,如果测得的温度大于0, 这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际 温度。 例如+125℃的数字输出为07D0H,+25.0625℃的数字输出为0191H,-25.0625℃的数字输出为FE6FH,-55℃的数字输出为FC90H 。 (2)数码显示: 采用数码管动态显示,通过位控线选择数码管,同时单片机通过查表送出段选送显示的段码,利用人的视觉暂留特点达到显示的目的。 (3)复位电路: 复位电路采用手动复位,实现单片机系统复位。 (4)震荡电路; 为单片机提供恒定可靠的震荡周期。 (5)驱动电路: 由于单片机的驱动能力有限,考虑到数码管的特点,实际应加上驱动电路,以提供合适的电流。 (6)测温开关 给单片机信号,给予其开始测温,关闭测温指示。 (7)Proteus 虚拟仿真 在keil中编写单片机程序,生成相应的.Hex文件,将文件复制到一个文件夹下,在Proteus里添加单片机并设置程序的路径,找到该文件,仿真时就会调用该程序文件。 | ||||||||||||||||||
2、实验内容 根据设计要求设计硬件电路,根据各项指标选择合适的原件,在Proteus原理图中画出原理图。本设计采用六个八段数码段动态显示,硬件电路主要有单片机,复位电路,数码显示,震荡电路,驱动电路,测温开关电路,传感器电路等组成。开机显示“HELLO”友好界面,测温控制开关开始关闭测温,当开关闭合时,处于测温状态,显示的温度值即为真实温度,开关打开时为关闭状态,数码管组显示“OFF”与最后一次测量值的交替显示,警示测温中断,开关再次合上时又进行正常测温。考虑到成本问题单片机选用AT89C52,该单片机为一8位单片机,详细介绍再次就不过多陈述,具体参数参考技术资料。单片机程序采用汇编语言,在Keil环境下编译。 | ||||||||||||||||||
3、实验步骤 (1)根据功能设计硬件电路 <1>数码管显示及其驱动电路: 本设计采用的是6位8段共阳数码管,如下图所示,ABCDEFG个DP分别是数码管的八个段,123456是对应的六个线选线,由于单片机的灌电流能力也不是很强,直接驱动几个数码管有点困难,因此加上了373锁存器,跟7407同向驱动芯片。373锁存p0(开漏输出)口输出的段选信号,P2口是线选信号输出口。P2口虽然内部有上拉电阻,但是由于7407是集电极开路六组驱动器,没有上拉不能输出高电平所以还要加上拉电阻。7407的驱动能力比较强,高电平时输出最大电流可达41mA,而输入高电平电流只需40uA即可,能够满足该六位数码管正常显示。 ![]() <2>振荡电路 该振荡电路外部由两个电容C1,C2跟晶振X1组成,如下图连接接地,并接到单片机的XTAL1跟XTAL2引脚上。由于51单片机内部有一个用于构成振荡器的可控高增益反向放大器,两个引脚XTAL1,XTAL2分别是该放大器的输入端跟输出端。按下图所示,就可构成一个自激振荡器,匹配电容根据晶振的要求选取,一般选用20~30pF瓷片电容即可。 ![]() <3>复位电路 下图是一个简单手动复位与上电复位的综合复位电路。R2,R3构成手动复位电路,R2一般取1~5KΩ。在实际电路中,当R3=200Ω,R2=800Ω时,按下按键实现可靠复位电压为4V.即Urst=U*R2/(R2+R3)。由于仿真软件的问题,当R2大于1K时,上电后RST引脚不能实现低电平,因此不能满足复位的条件,采用800Ω电阻时能够实现。但实际电路中R2取到1K才能实现可靠的上电复位。(相关公式:Urst=5*e^(-t/τ), τ=R2*C,当复位电压大于等于3V时是可靠复位电压。带入上式,t=τ*ln(5/3) ≈0.15τ,当R2=1KΩ,C=22uF时,t≈11.2ms.即复位时间约为11.2ms。为保证可靠复位,复位时间大于10ms即可。) ![]() <4>测温开关: 测温开关的实现时利用检验其是否存在的原理进而转换显示状态,故可以设置在DS18B20跟单片机相连的路径之间(接在P3.3引脚),开关断开,单片机就会检测不到传感器,转换到关闭测温状态,开关闭合,单片机又能检测到传感器,自动转到测温显示状态。由于DS1820 的单总线端口(I/O 引脚)是漏极开路式的,一个多点总线由一个单线总线和多个挂于其上的从机构成。在发出任何涉及拷贝到 E2存储器或启动温度转换的协议之后,必须在最多 10μs之内把 I/O 线转换到强上拉,因此单线总线需要一个约 5KΩ的上拉电阻。 实际电路如下图所示: ![]() (2)设计单片机程序,画出流程图 通过单线总线端口访问 DS1820 的协议如下: • 初始化 • ROM 操作命令 • 存储器操作命令 • 执行/数据 程序组成: 主程序 子程序: HELLO与OFF开关显示、DS18B20初始化、重写DB18B20、读温度、温度数值转换等。 主程序流程图: ![]() HELLO与OFF开关显示流程图: ![]() DS18B20初始化流程图: ![]() 重写DB18B20流程图: ![]() 读温度流程图: ![]() 温度数值转换流程图: ![]() (3)编写程序 根据硬件电路编写程序,程序见实验结果部分的程序清单。 (4)仿真调试 在Keil编译环境下编译汇编程序,设置晶振12MHz,生成.Hex文件。打开用Proteus画好的原理图,双击单片机,设置震荡频率12MHz,与硬件电路相对应,浏览找到生成的该程序的.Hex文件作为其程序。设置完成,打开仿真按钮,进行仿真调试,打开闭合测温开关观察现象,调节DS18B20的温度调节部分调节温度,观察数码显示温度值。 |
1、实验现象、数据记录 当仿真开始时,显示开机界面“HELLO”: ![]() 测温时,当测试零下温度时显示零下温度值: ![]() 当测试零上温度时显示正的温度值: ![]() 当测温开关打开时,显示“OFF”与最后一次测温值交替显示界面: ![]() 2、对实验现象、数据及观察结果的分析与讨论: 开机时显示“HELLO”问候,采用200次动态扫描显示,显示完之后自动转到下面的初始化及测温程序,传感器存在时,进行正常测温,零上温度入上面图示,显示零上温度,无效位消隐,实现方法是每次遍历存储空间,将无效位的段选置空,有效的位用数据填充,小数点另加到倒数第二个数码管的小数点处。当测试零下温度时,数值转换要取反加1,还要在前面加负号,考虑到负数最多显示两位,故将负号固定在倒数第四位,省去了判断的麻烦。当测温开关断开时,由于检测不到DS18B20的存在,故程序转到显示“OFF”界面,由于要不断地检测存在位,所以要循环检测,循环显示,由于时序的原因,会使OFF与最后一次测温结果交替显示。开关闭合,又能检测到标志位,程序自动进入正常测温序列。 |
3、主要关键和创新点: 在Proteus仿真环境下,使用DS18B20进行一路测温,测温精度达到到0.5摄氏度开机显示友好界面“HELLO”问候,当测温关闭时,会显示“OFF”提醒,闭合开关,又可以进行正常测温。本设计通过检查存在标志位的方法进行了测温开关的控制,避免了使用中断进行控制,从而避免了中断导致的测温时序混乱,测温不准的结果。 |
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |