课程设计(论文)基于DS18B20的温度采集系统(数码管显示)的设计.doc

上传人:文库蛋蛋多 文档编号:4150621 上传时间:2023-04-07 格式:DOC 页数:20 大小:157KB
返回 下载 相关 举报
课程设计(论文)基于DS18B20的温度采集系统(数码管显示)的设计.doc_第1页
第1页 / 共20页
课程设计(论文)基于DS18B20的温度采集系统(数码管显示)的设计.doc_第2页
第2页 / 共20页
课程设计(论文)基于DS18B20的温度采集系统(数码管显示)的设计.doc_第3页
第3页 / 共20页
课程设计(论文)基于DS18B20的温度采集系统(数码管显示)的设计.doc_第4页
第4页 / 共20页
课程设计(论文)基于DS18B20的温度采集系统(数码管显示)的设计.doc_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《课程设计(论文)基于DS18B20的温度采集系统(数码管显示)的设计.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)基于DS18B20的温度采集系统(数码管显示)的设计.doc(20页珍藏版)》请在三一办公上搜索。

1、 课 程 设 计 任 务 书题 目 基于DS18B20的温度采集系统(数码管显示)的设计系 (部) 信息科学与电气工程学院 专 业 电子信息工程 班 级 电信091 学生姓名 学 号 12 月 26 日至 12 月 30 日 共 1 周指导教师(签字) 系 主 任(签字) 年 月 日 目录摘要2一、设计任务和要求4二、芯片资料41、DS18B2041.1 DS18B20的工作原理41.2 DS18B20的使用方法62、AT89C5182.1 AT89C51简介82.2 AT89C51功能82.3 AT89C51引脚9三、系统流程101、读转换温度子程序102、读、写DS18B20的子程序11四

2、、电路与程序设计121、程序122、电路图17五、系统调试与分析19六、设计体会及参考文献19 摘要随着人们生活水平的不断提高,单片机技术已经普及到我们生活,工作,科研等各个领域。单片机控制无疑是人们追求的目标之一,它所给人带来的方便是不可否定的,其中数字温度计就是一个典型的例子,但人们对它的要求越来越高,要为现代人工作、科研、生活提供更好的更方便的设施就需要从数单片机技术入手,一切向着数字化控制,智能化控制方向发展。本文利用单片机结合传感器技术开发设计,把传感器理论与单片机实际应用有机结合,详细地讲述了利用温度传感器DS18B20测量环境温度,设置上下报警温度,当温度不在设置范围内是,可以报

3、警。同时51单片机在现代电子产品中广泛应用以及其技术已经非常成熟,DS18B20可以直接读出被测温度值,而且采用一线制与单片机相连,减少了外部的硬件电路,具有低成本和易使用的特点 关键词: 单片机控制、温度检测、温度传感器、温度报警、低成本、易使用 Abstract With the continuous improvement of living standard, single chip technology has spread to our lives, work, research and other fields.SCM is undoubtedly one of the goal

4、s people pursue, the convenience it brings is not negative, in which digital thermometer is a typical example, but it requires more and more people to work for the modern man, research, provide a better life, more convenient facilities need to start from a few microcontroller technology, all toward

5、the digital control, intelligent control direction.In this paper, combined with sensor technology development and design of single chip, the sensor application of theory and practical combination of SCM in detail about the use of temperature sensors measure the ambient temperature DS18B20, set the u

6、pper and lower alarm temperature range when the temperature is not set is for the police. 51 Micro also widely used in modern electronic products and its technology is well established. DS18B20 can directly read the measured temperature, and the use of front-line system is connected with the microco

7、ntroller, reducing the external hardware circuit, the characteristics of low cost and ease of use.Keywards: SCM control 、temperature measure、temperature sensors temperature alarming 、low cost 、 ease of use 一、设计内容及要求利用DS18B20实现温度采集,并用数码管显示(用proteus实现)。二、芯片资料1、DS18B201.1 DS18B20的工作原理DS18B20的读写时序和测温原理与

8、DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s 减为750ms。 DS18B20测温原理如图3所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振 随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对 低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重 新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累

9、加,此时温度寄存器中的数值即 为所测温度。图3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。 DS18B20有4个主要的数据部件: (1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。(2)DS18B20中的温度传感器可完成对温度的测量,以12

10、位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。表1: 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的数字输出为FF6FH,-55的数字输出为FC90H。表2: DS18B20温度数据表(3)DS18

11、B20温度传感器的存储器DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。(4)配置寄存器该字节各位的意义如下:TMR1R011111 表3: 配置寄存器结构低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下表所示:(DS18B20出厂时被设置为12位)R1R0分辨率温度最大转换时间009位93.75ms0110位187.5ms1011位375ms1112位750ms 表4: 温

12、度分辨率设置表序号名称引脚功能描述1GND地信号2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。1.2 DS18B20的使用方法由于DS18B20采用的是1Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。 由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确

13、性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。 DS18B20的初始化 (1) 先将数据线置高电平“1”。 (2) 延时(该时间要求的不是很严格,但是尽可能的短一点) (3) 数据线拉到低电平“0”。 (4) 延时750微秒(该时间的时间范围可以从480到960微秒)。 (5) 数据线拉到高电平“1”。 (6) 延时等待(如果初始化成功则在15到60毫秒时间之内产生

14、一个由DS18B20所返回的低电平“0”。据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。 (7) 若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。 (8) 将数据线再次拉高到高电平“1”后结束。 DS18B20的写操作 (1) 数据线先置低电平“0”。 (2) 延时确定的时间为15微秒。 (3) 按从低位到高位的顺序发送字节(一次只发送一位)。 (4) 延时时间为45微秒。 (5) 将数据线拉到高电平。 (6) 重复上(1)到(6)的操作直到所有的字节全部发送完

15、为止。 (7) 最后将数据线拉高。 DS18B20的读操作 (1)将数据线拉高“1”。 (2)延时2微秒。 (3)将数据线拉低“0”。 (4)延时3微秒。 (5)将数据线拉高“1”。 (6)延时5微秒。 (7)读数据线的状态得到1个状态位,并进行数据处理。 (8)延时60微秒。 ROM指令表 指 令 约定代码功 能读ROM33H读DS1820温度传感器ROM中的编码(即64位地址) 符合 ROM 55H发出此命令之后,接着发出 64 位 ROM 编码,访问单总线上与该编码相对应的 DS1820 使之作出响应,为下一步对该 DS1820 的读写作准备。 搜索 ROM 0FOH用于确定挂接在同一总

16、线上 DS1820 的个数和识别 64 位 ROM 地址。为操作各器件作好准备。 跳过 ROM 0CCH忽略 64 位 ROM 地址,直接向 DS1820 发温度变换命令。适用于单片工作。 告警搜索命令 0ECH执行后只有温度超过设定值上限或下限的片子才做出响应。 RAM指令表 指 令 约定代码功 能温度变换44H启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。结果存入内部9字节RAM中。 读暂存器 0BEH 读内部RAM中9字节的内容 写暂存器 4EH 发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。 复制暂存器 4

17、8H 将RAM中第3 、4字节的内容复制到EEPROM中。 重调 EEPROM 0B8H 将EEPROM中内容恢复到RAM中的第3 、4字节。 读供电方式 0B4H 读DS1820的供电模式。寄生供电时DS1820发送“ 0 ”,外接电源供电 DS1820发送“ 1 ”。 2、AT89C512.1 AT89C51简介AT89S51美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含4K BytesISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统

18、及AT89C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元。单片机AT89S51强大的功能可为许多嵌入式控制应用系统提供高性价比的解决方案。2.2 AT89C51功能 AT89S51提供以下标准功能:40个引脚、4K Bytes Flash片内程序存储器、128 Bytes的随机存取数据存储器(RAM)、32个外部双向输入/输出(I/O)口、5个中断优先级2层中断嵌套中断、2个数据指针、2个16位可编 程定时/计数器、2个全双工串行通信口、看门狗(WDT)电路、片内振荡器及时钟电路。此外,AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式,空闲

19、模式,CPU暂停工作,而RAM、定时/计数器、串行通信口、外中断系统可继续工作。掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求2.3 AT89C51引脚P0口:P0口为一个8位漏级开路双向I/O口,也即地址/数据总线复用口。作为输出口用时,能驱动8个TTL逻辑门电路。对端口写“1”时,被定义为高阻输入。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校

20、验时,要求外接上拉电阻。P1口:P1口是一个带内部上拉电阻的8位双向I/O口,P1口的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(I)。P2口:P2口是一个带有内部上拉电阻的8位双向I/O口, P2口的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(I)。在访问外部程序存储器或16位地址

21、的外部数据存储器(例如执行MOVXDPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据寄存器(例如执行MOVXRi指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中P2寄存器的内容),在整个访问期间不改变。P3口: P3口是一个带有内部上拉电阻的双向8位I/O口, P3口的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对P3口写“1”时,它们被内部的上拉电阻拉高并可作为输入端口。作输入口使用时,被外部信号拉低的P3口将用上拉电阻输出电流(I)。RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上的高电平时间将使单片机复位。WDT溢出将使该引脚输出

22、高电平,设置SFR AUXR的DISRTO位(地址8EH)可打开或关闭该功能。 DISRTO位缺省为RESET输出高电平打开状态。 ALE/:当访问外部存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部寄存器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。值得注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只要一条MOVX和MOVC指令才

23、会激活ALE。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。:程序存储允许()输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次有效,即输出两个脉冲。当访问外部数据存储器时,没有两次有效的信号。EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需要注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端保持高电平(接VCC端),CPU则执行内部程序存储器中的指令。三、系统流程1、读DS18B20的子程序 2、读转换温度子程序Y发DS18B

24、20复位命令发跳过ROM命令发读取温度命令读取操作,CRC校验9字节完?结束CRC校验正确?移入温度暂存器NYN3、写DS18B20的子程序复位延时16us以上把一个字节DATA 分成8个BIT环移给C 写入一个BIT等待100微妙重新释放总线置R2为8写入下一个BIT写完8 BIT重新释放总线返回四、电路与程序设计 1、程序设计TEMP1 EQU 5AH ;符号位和耗电量位公用的存放单元 TEMP2 EQU 5BH ;十位存放单元 TEMP3 EQU 5CH ;个位存放单元 TEMP4 EQU 5DH TEMP5 EQU 5EH ;数据临时存放单元 TEMP6 EQU 5FH TEMP7 E

25、QU 60H TEMP8 EQU 61H ORG 0000H AJMP MAIN ORG 0030HMAIN: MOV SP,#70H LCALL INT ;调用DS18B20初始化函数MAIN1: LCALL GETTEMP ;调用温度转换函数 LCALL CHULI ;调用温度计算函数 LCALL DISP ;调用温度显示函数 AJMP MAIN1 ;循环INT:L0: SETB P3. 6 ;先释放DQ总线 MOV R2,#250 ;给R2赋延时初值,同时可让DQ保持高电平2USL1: CLR P3.6 ;给DQ一个复位低电平 DJNZ R2,L1 ;保持低电平的时间至少为480US S

26、ETB P3.6 ;再次拉高DQ释放总线 MOV R2,#25L2: DJNZ R2,L2 ;保持15US-60US CLR C ORL C,P3.6 ;判断是否收到低脉冲 JC L0 MOV R6,#100L3: ORL C,P3.6 DJNZ R6,L3 ;存在低脉冲保持60US-240US ;JC L0 ;否则继续从头开始,继续判断 SETB P3.6 RET ;调用温度转换函数GETTEMP: CLR PSW.4 SETB PSW.3 ;设置工作寄存器当前所在的区域 CLR EA ;使用DS18B20前一定要禁止任何中断 LCALL INT ;初始化DS18B20 MOV A,#0CC

27、H ;送入跳过ROM命令 LCALL WRITE MOV A,#44H ;送入温度转换命令 LCALL WRITE NOP LCALL DELAY LCALL INT ;温度转换完成,再次初始化 MOV A,#0CCH ;送入跳过ROM命令 LCALL WRITE MOV A,#0BEH ;送入读温度暂存器命令 LCALL WRITE LCALL READ MOV TEMP4,A ;读出温度的低字节存在TEMP4 LCALL READ MOV TEMP5,A ;读出温度的高字节存在TEMP5 SETB EA RETCHULI: MOV A, TEMP5 ;将温度的高字节取出 JNB ACC.7

28、,ZHENG ;判断最高们是否为0,为则表示温度为正,则转到ZHENG否则温度为负,将温度的低字节取出 MOV A, TEMP4 CPL A ;求反 INC A ;加工厂 MOV TEMP8,A ;存到TEMP8 ANL A,#0FH ;保留低四位 LCALL MULD ;调用乘以625子程序 LCALL HB2 ;调用双字节16进制数转成BCD码子程序 MOV A,R4 ;将结果的千位百位取出 ANL A,#0F0H ;保留千位 SWAP A MOV TEMP7,A ;把小数结果保存在TEMP7中 MOV A,TEMP4 ;再次取出温度低字节 ANL A,#0FFH ;判断是否为0 JZ X

29、X ;为何则转到XX执行 MOV A,TEMP5 CPL A ;不为则直接将温度的高字节取反 SJMP YYXX: MOV A,TEMP5 ;为0则求补码 CPL A INC AYY: ANL A,#0F0H ;保留高字节的低四位 SWAP A ;将其换到高4位 MOV R5,A ;暂时保存于R5中 MOV A,TEMP8 ;取出求反后的低位字节 ANL A,#0F0H ;取其高四位 SWAP A ;将其换到低四位 ORL A,R5 ;合并成温度的整数部分 MOV TEMP6,A ;将整数部分存到TEMP6中 LCALL HBCD ;调用一字节的16进制转换BCD数的子程序 MOV TEMP1

30、,#0BH ;将号的段选值存到符号位 MOV A,TEMP2 ;取出十位 CJNE A,#00H,NEXT MOV TEMP2,#0CH ;十位为0不显示 RETZHENG: MOV A,TEMP4 ;将温度的低字节取出 ANL A,#0FH ;保留低四位 LCALL MULD ;调用乘以625子程序 LCALL HB2 ;调用双字节16进制数转换成BCD码子程序 MOV A,R4 ;将结果的千位百位取出 ANL A,#0F0H ;保留千位 SWAP A MOV TEMP7,A ;把小数结果保存在TEMP7中 MOV A,TEMP4 ;再次取出温度的低字节 ANL A,#0F0H SWAP A

31、 ;换到低4位 MOV R5,A ;暂时保存于R5中 MOV A,TEMP5 ;取出温度的高字节 ANL A,#0FH ;保留低4位 SWAP A ;换到高4位 ORL A,R5 ;合并成温度的整数部分 MOV TEMP6,A ;整数部分存到TEMP6中 LCALL HBCD ;单字节的16进制转换成BCD码 MOV A,TEMP1 ;取出百位 CJNE A,#00H,NEXT ;百位不为0则转NEXT MOV TEMP1,#0CH ;为0则不显 MOV A,TEMP2 ;取出十位 CJNE A,#00H,NEXT MOV TEMP2,#0CH ;十位为0也不是NEXT: RETMULD: M

32、OV R3,A MOV B,#71H MUL AB MOV R7,A MOV R6,B MOV B,#02H MOV A,R3 MUL AB ADD A,R6 MOV R6,A RETWRITE: MOV R3,#8 ;一个字节共8位WR1: SETB P3.6 ;先释放总线 MOV R4,#8 RRC A ;把要写的字节的最低位右环移到C中 CLR P3.6 ;把C中的位写到DQ总线中WR3: DJNZ R4,WR3 ;保持低电平0-15US MOV P3.6, C; MOV R4 ,#20 DJNZ R4,$ DJNZ R3,WR1 SETB P3.6 RETREAD: MOV R6,#8

33、RE1: SETB P3.6 ;先释放总线 NOP CLR P3.6 ;把要写的字节的最低位右环移到C中 NOP ;写开始 MOV R4,#4 ;保持低电平0-15US SETB P3.6 ;将C中的位写到DQ总线上RE2: DJNZ R4,RE2 ;产生读时间 MOV C,P3.6 ;将总线上的位读到C MOV R5,#30 DJNZ R5,$ ;持续60US RRC A ;将C里的位右环移到A里 DJNZ R6,RE1 ;读下一位 SETB P3.6 RET HBCD: MOV A,TEMP6 MOV B,#10 DIV AB MOV TEMP3,B ;将个位存到TEMP3 MOV B,#

34、10 DIV AB MOV TEMP2,B ;将十位存到TEMP2 MOV TEMP1,A ;将百位存到TEMP1 RET HB2: CLR A MOV R3,A MOV R4,A MOV R5,A MOV R2,#10H HB3: MOV A,R7 RLC A MOV R7,A MOV A,R6 RLC A MOV R6,A MOV A,R5 ADDC A,R5 DA A MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A MOV A,R3 ADDC A,R3 MOV R3,A DJNZ R2,HB3 RETDISP: MOV DPTR,#DISPTAB MOV R0,#4DP1: MOV R1,#140LOOP: MOV A,TEMP7 ;取出小数部分 MOVC A,A+DPTR ;取出相应的字型码 MOV P0,A ;显示在数码管上 SETB P2.5 ;数码管位选 ACALL DELAY100 ;延时 CLR P2.5 ;清数码管位选 MOV A,TEMP3 ;取个位

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号