ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:143.50KB ,
资源ID:17531875      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17531875.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于DS18B20的温度采集系统数码管显示的方案设计书Word格式.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于DS18B20的温度采集系统数码管显示的方案设计书Word格式.docx

1、Keywards: SCM control 、temperature measure、temperature sensors temperature alarming 、low cost 、 ease of use 一、设计内容及要求利用DS18B20实现温度采集,并用数码管显示(用proteus实现)。二、芯片资料1、DS18B201.1 DS18B20的工作原理DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s 减为750ms。 DS18B20测温原理如图3所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固

2、定频率的脉冲信号送给计数器1。高温度系数晶振 随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对 低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重 新开始对低温度系数晶振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即 为所测温度。图3中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。 DS18B20有4个主要的数据部件:(1)光刻ROM中的64位序列号

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

4、的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)DS18B20温度传感器的存储器DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。(4)配置寄存器该字节各

5、位的意义如下:TMR1R01 表3: 配置寄存器结构低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率,如下表所示:(DS18B20出厂时被设置为12位)分辨率温度最大转换时间9位93.75ms10位187.5ms11位375ms12位750ms 表4: 温度分辨率设置表序号名称引脚功能描述GND地信号2DQ数据输入/输出引脚。开漏单总线接口引脚。当被用着在寄生电源下,也可以向器件提供电源。3VDD可选择的VDD引脚。当工作于寄生电源时,此引脚必须接地。1.2 DS18B20的使用方

6、法由于DS18B20采用的是1Wire总线协议方式,即在一根数据线实现数据的双向传输,而对AT89S51单片机来说,硬件上并不支持单总线协议,因此,我们必须采用软件的方法来模拟单总线的协议时序来完成对DS18B20芯片的访问。由于DS18B20是在一根I/O线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序

7、完成数据接收。数据和命令的传输都是低位在先。DS18B20的初始化 (1) 先将数据线置高电平“1”。(2) 延时(该时间要求的不是很严格,但是尽可能的短一点) (3) 数据线拉到低电平“0”。(4) 延时750微秒(该时间的时间范围可以从480到960微秒)。(5) 数据线拉到高电平“1”。(6) 延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0”。据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。(7) 若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5

8、)步的时间算起)最少要480微秒。(8) 将数据线再次拉高到高电平“1”后结束。DS18B20的写操作 (1) 数据线先置低电平“0”。(2) 延时确定的时间为15微秒。(3) 按从低位到高位的顺序发送字节(一次只发送一位)。(4) 延时时间为45微秒。(5) 将数据线拉到高电平。(6) 重复上(1)到(6)的操作直到所有的字节全部发送完为止。(7) 最后将数据线拉高。DS18B20的读操作 (1)将数据线拉高“1”。(2)延时2微秒。(3)将数据线拉低“0”。(4)延时3微秒。(5)将数据线拉高“1”。(6)延时5微秒。(7)读数据线的状态得到1个状态位,并进行数据处理。(8)延时60微秒。

9、ROM指令表 指 令 约定代码功 能读ROM33H读DS1820温度传感器ROM中的编码(即64位地址) 符合 ROM 55H发出此命令之后,接着发出 64 位 ROM 编码,访问单总线上与该编码相对应的 DS1820 使之作出响应,为下一步对该 DS1820 的读写作准备。搜索 ROM 0FOH用于确定挂接在同一总线上 DS1820 的个数和识别 64 位 ROM 地址。为操作各器件作好准备。跳过 ROM 0CCH忽略 64 位 ROM 地址,直接向 DS1820 发温度变换命令。适用于单片工作。告警搜索命令 0ECH执行后只有温度超过设定值上限或下限的片子才做出响应。RAM指令表 温度变换

10、44H启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。结果存入内部9字节RAM中。读暂存器 0BEH 读内部RAM中9字节的内容 写暂存器 4EH 发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。复制暂存器 48H 将RAM中第3 、4字节的内容复制到EEPROM中。重调 EEPROM 0B8H 将EEPROM中内容恢复到RAM中的第3 、4字节。读供电方式 0B4H 读DS1820的供电模式。寄生供电时DS1820发送“ 0 ”,外接电源供电 DS1820发送“ 1 ”。2、AT89C512.1 AT89C51简介A

11、T89S51美国ATMEL公司生产的低功耗,高性能CMOS 8位单片机,片内含4K BytesISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及AT89C51引脚结构,芯片内集成了通用8位中央处理器和ISP Flash存储单元。单片机AT89S51强大的功能可为许多嵌入式控制应用系统提供高性价比的解决方案。2.2 AT89C51功能 AT89S51提供以下标准功能:40个引脚、4K Bytes Flash片内程序存储器、128 Bytes的随机存取数据存储器

12、(RAM)、32个外部双向输入/输出(I/O)口、5个中断优先级2层中断嵌套中断、2个数据指针、2个16位可编 程定时/计数器、2个全双工串行通信口、看门狗(WDT)电路、片内振荡器及时钟电路。此外,AT89S51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式,空闲模式,CPU暂停工作,而RAM、定时/计数器、串行通信口、外中断系统可继续工作。掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求2.3 AT89C51引脚P0口:P0口为一个8位漏级开路双向I/O口,也即地址

13、/数据总线复用口。作为输出口用时,能驱动8个TTL逻辑门电路。对端口写“1”时,被定义为高阻输入。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,在访问期间激活内部上拉电阻。在Flash编程时,P0口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。P1口:P1口是一个带内部上拉电阻的8位双向I/O口,P1口的输出缓冲级可驱动(吸收或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流(I)。P2口:P2口是一个带有内

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

15、电流(IRST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上的高电平时间将使单片机复位。WDT溢出将使该引脚输出高电平,设置SFR AUXR的DISRTO位(地址8EH)可打开或关闭该功能。 DISRTO位缺省为RESET输出高电平打开状态。ALE/:当访问外部存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部寄存器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对外输出时钟或用于定时目的。值得注意的是:每当访问外部数据存储器时将跳过一个ALE脉冲。对Flash存储器编程期间,该引脚还用于输入编程脉冲(PROG)。如有必要,可

16、通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。该位置位后,只要一条MOVX和MOVC指令才会激活ALE。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE无效。:程序存储允许()输出是外部程序存储器的读选通信号,当AT89S51由外部程序存储器取指令(或数据)时,每个机器周期两次有效,即输出两个脉冲。当访问外部数据存储器时,没有两次有效的信号。EA/VPP:外部访问允许。欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。需要注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端保持高电平(接V

17、CC端),CPU则执行内部程序存储器中的指令。三、系统流程1、读DS18B20的子程序 2、读转换温度子程序3、写DS18B20的子程序四、电路与程序设计 1、程序设计TEMP1 EQU 5AH ;符号位和耗电量位公用的存放单元 TEMP2 EQU 5BH ;十位存放单元 TEMP3 EQU 5CH ;个位存放单元 TEMP4 EQU 5DH TEMP5 EQU 5EH ;数据临时存放单元 TEMP6 EQU 5FH TEMP7 EQU 60H TEMP8 EQU 61H ORG 0000H AJMP MAIN ORG 0030HMAIN: MOV SP,#70H LCALL INT ;调用D

18、S18B20初始化函数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 SETB P3.6 ;再次拉高DQ释放总线 MOV R2,#25L2: DJNZ R2,L2 ;保持15US-60US CLR C ORL C,P3.6 ;判断是否收

19、到低脉冲 JC L0 MOV R6,#100L3: ORL C,P3.6 DJNZ R6,L3 ;存在低脉冲保持60US-240US ;JC L0 ;否则继续从头开始,继续判断 SETB P3.6 RETGETTEMP: CLR PSW.4 SETB PSW.3 ;设置工作寄存器当前所在的区域 CLR EA ;使用DS18B20前一定要禁止任何中断初始化DS18B20 MOV A,#0CCH ;送入跳过ROM命令 LCALL WRITE MOV A,#44H ;送入温度转换命令 NOP LCALL DELAY温度转换完成,再次初始化 MOV A,#0BEH ;送入读温度暂存器命令 LCALL

20、READ MOV TEMP4,A ;读出温度的低字节存在TEMP4 MOV TEMP5,A ;读出温度的高字节存在TEMP5 SETB EACHULI: MOV A, TEMP5 ;将温度的高字节取出 JNB ACC.7,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 ;将

21、结果的千位百位取出 ANL A,#0F0H ;保留千位 SWAP A MOV TEMP7,A ;把小数结果保存在TEMP7中 MOV A,TEMP4 ;再次取出温度低字节 ANL A,#0FFH ;判断是否为0 JZ XX ;为何则转到XX执行 MOV A,TEMP5不为则直接将温度的高字节取反 SJMP YYXX: MOV A,TEMP5 ;为0则求补码 CPL A INC AYY:保留高字节的低四位 SWAP A ;将其换到高4位 MOV R5,A ;暂时保存于R5中 MOV A,TEMP8 ;取出求反后的低位字节取其高四位将其换到低四位 ORL A,R5 ;合并成温度的整数部分 MOV

22、TEMP6,A ;将整数部分存到TEMP6中 LCALL HBCD ;调用一字节的16进制转换BCD数的子程序 MOV TEMP1,#0BH ;将号的段选值存到符号位 MOV A,TEMP2 ;取出十位 CJNE A,#00H,NEXT MOV TEMP2,#0CH ;十位为0不显示ZHENG:将温度的低字节取出调用双字节16进制数转换成BCD码子程序再次取出温度的低字节 ANL A,#0F0H 换到低4位取出温度的高字节保留低4位换到高4位整数部分存到TEMP6中单字节的16进制转换成BCD码 MOV A,TEMP1 ;取出百位 CJNE A,#00H,NEXT ;百位不为0则转NEXT MOV TEMP1,#0CH ;为0则不显十位为0也不是NEXT:MULD: MOV R3,A MOV B,#71

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1