单片机接口技术实验报告

上传人:第*** 文档编号:31908328 上传时间:2018-02-09 格式:DOCX 页数:21 大小:219.14KB
返回 下载 相关 举报
单片机接口技术实验报告_第1页
第1页 / 共21页
单片机接口技术实验报告_第2页
第2页 / 共21页
单片机接口技术实验报告_第3页
第3页 / 共21页
单片机接口技术实验报告_第4页
第4页 / 共21页
单片机接口技术实验报告_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《单片机接口技术实验报告》由会员分享,可在线阅读,更多相关《单片机接口技术实验报告(21页珍藏版)》请在金锄头文库上搜索。

1、单片机接口与控制技术实验指导书姓 名:张 千班 级:机械 1305 班学 号:0204130121指导老师:张友旺中南大学机电工程学院实验一 DS18B20 温度传感器实验一、实验目的1. 了解温度传感器电路的工作原理2. 了解温度控制的基本原理3. 掌握一线总线接口的使用二、实验说明这是一个综合硬件实验,分两大功能:温度的测量和温度的控制。1.DALLAS 最新单线数字温度传感器 DS18B20 简介Dallas 半导体公司的数字化温度传感器 DS1820 是世界上第一片支持 “一线总线”接口的温度传感器。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性。适合于恶劣环境的现

2、场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。与前一代产品不同,新的产品支持 3V5.5V 的电压范围,使系统设计更灵活、方便。DS18B20 测量温度范围为 -55C+125C,在-10+85C 范围内,精度为0.5C。DS18B20 可以程序设定 912 位的分辨率,及用户设定的报警温度存储在 EEPROM 中,掉电后依然保存。DS18B20 内部结构DS18B20 内部结构主要由四部分组成:64 位光刻 ROM、温度传感器、非挥发的温度报警触发器 TH 和 TL、配置寄存器。DS18B20 的管脚排列如下:DQ 为数字信号输入/输出端;GND 为电源地;VDD 为外接供

3、电电源输入端(在寄生电源接线方式时接地) 。光刻 ROM 中的 64 位序列号是出厂前被光刻好的,它可以看作是该 DS18B20 的地址序列码。64 位光刻 ROM 的排列是:开始 8 位(28H)是产品类型标号,接着的 48 位是该DS18B20 自身的序列号,最后 8 位是前面 56 位的循环冗余校验码(CRC=X8+X5+X4+1) 。光刻 ROM 的作用是使每一个 DS18B20 都各不相同,这样就可以实现一根总线上挂接多个DS18B20 的目的。DS18B20 中的温度传感器可完成对温度的测量,以 12 位转化为例:用 16 位符号扩展的二进制补码读数形式提供,以 0.0625/LS

4、B 形式表达,其中 S 为符号位。LS Byte:Bit7 Bit6 Bit5 Bit4 Bit3 Bit2 Bit1 Bit023 22 21 20 2-1 2-2 2-3 2-4MS Byte:Bit15 Bit14 Bit13 Bit12 Bit11 Bit10 Bit9 Bit8S S S S S 26 25 24这是 12 位转化后得到的 12 位数据,存储在 18B20 的两个 8 比特的 RAM 中,二进制中的前面 5 位是符号位,如果测得的温度大于 0,这 5 位为 0,只要将测到的数值乘以0.0625 即可得到实际温度;如果温度小于 0,这 5 位为 1,测到的数值需要取反加

5、 1 再乘以 0.0625 即可得到实际温度。例如+125的数字输出为 07D0H,+25.0625的数字输出为 0191H,-25.0625的数字输出为 FF6FH,-55的数字输出为 FC90H。温度 数据输出(二进制) 数据输出(十六进制)+125 0000 0111 1101 0000 07D0h+85 0000 0101 0101 0000 0550h+25.0625 0000 0001 1001 0001 0191h+10.125 0000 0000 1010 0010 00A2h+0.5 0000 0000 0000 1000 0008h0 0000 0000 0000 0000

6、 0000h-0.5 1111 1111 1111 1000 FFF8h-10.125 1111 1111 0101 1110 FF5Eh-25.0625 1111 1110 0110 1111 FE6Fh-55 1111 1100 1001 0000 FC90hDS18B20 温度传感器的存储器DS18B20 温度传感器的内部存储器包括一个高速暂存 RAM 和一个非易失性的可电擦除的 E2RAM,后者存放高温度和低温度触发器 TH、TL 和结构寄存器。暂存存储器包含了 8 个连续字节,前两个字节是测得的温度信息,第一个字节的内容是温度的低八位,第二个字节是温度的高八位。第三个和第四个字节是

7、TH、TL 的易失性拷贝,第五个字节是结构寄存器的易失性拷贝,这三个字节的内容在每一次上电复位时被刷新。第六、七、八个字节用于内部计算。第九个字节是冗余检验字节。该字节各位的意义如下: TM R1 R0 1 1 1 1 1低五位一直都是 1 ,TM 是测试模式位,用于设置 DS18B20 在工作模式还是在测试模式。在 DS18B20 出厂时该位被设置为 0,用户不要去改动。R1 和 R0 用来设置分辨率,如下表所示:(DS18B20 出厂时被设置为 12 位)分辨率设置表: R1 R0 分辨率 温度最大转换时间0 0 9 位 93.75ms0 1 10 位 187.5ms1 0 11 位 37

8、5ms1 1 12 位 750ms根据 DS18B20 的通讯协议,主机控制 DS18B20 完成温度转换必须经过三个步骤:每一次读写之前都要对 DS18B20 进行复位,复位成功后发送一条 ROM 指令,最后发送 RAM 指令,这样才能对 DS18B20 进行预定的操作。复位要求主 CPU 将数据线下拉 500 微秒,然后释放,DS18B20 收到信号后等待 1660 微秒左右,后发出 60240 微秒的存在低脉冲,主 CPU 收到此信号表示复位成功。2.本实验在读取温度的基础上,完成类似空调恒温控制的实验。用加热电阻代替加热电机。温度值通过 LED 静态显示电路以十进制形式显示出来,制冷采

9、用自然冷却。三、实验内容及步骤本实验需要用到单片机最小应用系统(F1 区) 、串行静态显示(I3 区)和温度传感器模块(C3 区) 。1.DS18B20 的 CONTROL 接最小应用系统 P1.4,OUT 接最小应用系统 P2.0,最小系统的P1.0,P1.1 接串行静态显示的 DIN,CLK 端。2.用串行数据通信线连接计算机与仿真器,然后将仿真器插到模块的锁紧插座中,请注意仿真器的方向:缺口朝上。3.打开 Keil uVision2 仿真软件,首先建立本实验的项目文件,接着添加 TH44_ DS18B20.ASM 源程序,进行编译,直到编译无误。4.编译无误后,全速运行程序。程序正常运行

10、后,按下自锁开关控制SIC。LED 数显为 “XX”为十进制温度测量值, “XX”为十进制温度设定值,按下自锁开关“控制”SIC 则加热源开始加热,温度也随着变化,当加热到设定的控制温度时如 40 度时,停止加热。5.也可以把源程序编译成可执行文件,用 ISP 烧录器烧录到 89S52/89S51 芯片中。(ISP 烧录器的使用查看附录二)四、源程序;单片机内存分配申明!TEMPER_L EQU 29H ;用于保存读出温度的低 8 位TEMPER_H EQU 28H ;用于保存读出温度的高 8 位FLAG1 EQU 38H ;是否检测到 DS18B20 标志位A_BIT EQU 20H ;数码

11、管个位数存放内存位置B_BIT EQU 21H ;数码管十位数存放内存位置LEDBUF EQU 30HTEMP EQU 55HDIN BIT P1.0CLK BIT P1.1ORG 0000HLJMP STARTORG 0100HSTART: SETB P1.4MAIN:LCALL GET_TEMPER ;调用读温度子程序;进行温度显示,这里我们考虑用网站提供的两位数码管来显示温度;显示范围 00 到 99 度,显示精度为 1 度;因为 12 位转化时每一位的精度为 0.0625 度,我们不要求显示小数所以可以抛弃 29H 的低4 位;将 28H 中的低 4 位移入 29H 中的高 4 位,这

12、样获得一个新字节,这个字节就是实际测量获得的温度;这个转化温度的方法可是我想出来的哦非常简洁无需乘于 0.0625 系数MOV A,29HMOV C,40H;将 28H 中的最低位移入 CRRC AMOV C,41HRRC AMOV C,42HRRC AMOV C,43HRRC AMOV 29H,ALCALL DISPLAYRESULTLCALL DISPLAYLED;调用数码管显示子程序LCALL DELAY1 AJMP MAIN; 这是 DS18B20 复位初始化子程序INIT_1820:SETB P2.0NOPCLR P2.0;主机发出延时 537 微秒的复位低脉冲MOV R1,#3TS

13、R1:MOV R0,#107DJNZ R0,$DJNZ R1,TSR1SETB P2.0;然后拉高数据线NOPNOPNOPMOV R0,#25HTSR2:JNB P2.0,TSR3 ;等待 DS18B20 回应DJNZ R0,TSR2LJMP TSR4 ; 延时TSR3:SETB FLAG1 ; 置标志位,表示 DS1820 存在LJMP TSR5TSR4:CLR FLAG1 ; 清标志位,表示 DS1820 不存在LJMP TSR7TSR5:MOV R0,#117TSR6:DJNZ R0,TSR6 ; 时序要求延时一段时间TSR7:SETB P2.0RET; 读出转换后的温度值GET_TEM

14、PER:SETB P2.0LCALL INIT_1820;先复位 DS18B20JB FLAG1,TSS2RET ; 判断 DS1820 是否存在?若 DS18B20 不存在则返回TSS2:MOV A,#0CCH ; 跳过 ROM 匹配LCALL WRITE_1820MOV A,#44H ; 发出温度转换命令LCALL WRITE_1820;这里通过调用显示子程序实现延时一段时间,等待 AD 转换结束,12 位的话 750 微秒LCALL DELAY1LCALL INIT_1820;准备读温度前先复位MOV A,#0CCH ; 跳过 ROM 匹配LCALL WRITE_1820MOV A,#0

15、BEH ; 发出读温度命令LCALL WRITE_1820LCALL READ_18200; 将读出的温度数据保存到 35H/36HRET;写 DS18B20 的子程序(有具体的时序要求)WRITE_1820:MOV R2,#8;一共 8 位数据CLR CWR1:CLR P2.0MOV R3,#6DJNZ R3,$RRC AMOV P2.0,CMOV R3,#23DJNZ R3,$SETB P2.0NOPDJNZ R2,WR1SETB P2.0RET; 读 DS18B20 的程序,从 DS18B20 中读出两个字节的温度数据READ_18200:MOV R4,#2 ; 将温度高位和低位从 DS

16、18B20 中读出MOV R1,#29H ; 低位存入 29H(TEMPER_L),高位存入 28H(TEMPER_H)RE00:MOV R2,#8;数据一共有 8 位RE01:CLR CSETB P2.0NOPNOPCLR P2.0NOPNOPNOPSETB P2.0MOV R3,#9RE10:DJNZ R3,RE10MOV C,P2.0MOV R3,#23RE20:DJNZ R3,RE20RRC ADJNZ R2,RE01MOV R1,A DEC R1DJNZ R4,RE00RETDISPLAYLED: ;-显示子程序-MOV LEDBUF+5,#10HMOV LEDBUF+6,#10HMOV LEDBUF+7,#10HM

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 工业设计

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号