《毕业设计(论文)基于51单片机的万历设计.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)基于51单片机的万历设计.doc(40页珍藏版)》请在三一办公上搜索。
1、目 录第一章 绪论3第二章 设计要求及设计框图42.1 设计要求42.2 设计框图4第三章 知识要点43.1 LMO16L液晶模块43.1.1 LM016L引脚说明53.1.2 控制指令53.1.3 基于Proteus ISIS 7的液晶模块仿真63.2 单片机AT89C5183.2.1 主要特性83.2.2 管脚说明93.2.3 振荡器特性113.2.4 芯片擦除113.3 时钟芯片DS1302113.3.1 DS1302的控制字节123.3.2 数据输入输出(I/O)123.3.3 DS1302的寄存器123.4 DS18B20数字温度传感器133.4.1技术性能描述133.4.2 DS1
2、8B20主要的数据部件143.4.3 DS18B20温度处理过程153.4.4 DS18B20的主要特性173.4.5 DS18B20的外形和内部结构173.4.6 DS18B20工作原理183.4.7 DS18B20的应用电路213.4.8 DS18B20使用中注意事项23第四章 硬件设计244.1 Proteus软件244.1.1 Proteus软件介绍244.1.2 功能特点244.1.3 革命性的特点244.1.4 基本操作254.1.5 选择要使用的元件254.1.6 功能模块264.2 基于89C51的万年历与温度显示器的硬件设计284.2.1 设计框图294.2.2 电路原理图2
3、94.3 元件清单30第五章 软件设计305.1 Keil软件305.1.1 Keil软件介绍305.1.2Keil C51单片机软件开发系统的整体结构315.1.3 使用独立的Keil仿真器时的注意事项315.1.4 Keil的优点315.2 程序流程325.3 程序清单32第六章 系统仿真及调试38第七章 设计心得体会39参考文献40第一章 绪论目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能IC卡,民用豪华轿车的安全保障系统,录像机、摄像机、全
4、自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械以及各种智能机械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。 单片机是一种集成在电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的计算机系统。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领
5、域,大致可分如下几个范畴:在智能仪器仪表上的应用在工业控制中的应用在家用电器中的应用在计算机网络和通信领域中的应用单片机在医用设备领域中的应用在各种大型电器中的模块化应用单片机在汽车设备领域中的应用基于单片机在现实生活中的广泛应用,及人们对于万年历、温度显示的需求度,现设计出一款基于89C51的万年历及温度显示系统。此设计是数据采集及处理,显示系统及与单片机有效结合。此设计是通过在“单片机原理及应用”课堂上学习的知识的综合应用。本系统设计以单片机89C51为控制器,辅以时钟芯片Ds1302、温度传感器Ds18b20、液晶显示器LM016L 。基于89C51的万年历及温度显示系统,主要由单片机8
6、9C51、时钟芯片Ds1302、温度传感器Ds18b20、液晶显示器LM016L等构成,具有显示当前时间、年月日及温度的功能。第二章 设计要求及设计框图2.1 设计要求 具有年、月、日、星期、时、分、秒等功能; 具有温度显示功能; 2.2 设计框图AT89C51主控模块LM016L液晶显示Ds1302时钟电路Ds18b20实时环境温度采集电路 第三章 知识要点3.1 LMO16L液晶模块LM016L液晶模块采用HD44780控制器。HD44780具有简单而功能较强的指令集,可以实现字符移动、闪烁等功能。LM016L与单片机 MCU(Microcontroller Unit)通讯可采用 8位或者
7、 4位并行传输两种方式。HD44780控制器由两个8位寄存器、指令寄存器(IR)和数据寄存器(DR)、忙标志(BF)、显示数据 RAM(DDRAM)、字符发生器ROM(CGROM)、字符发生器RAM(CGRAM)、地址计数器(AC)。IR用于寄存指令码,只能写入不能读出;DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和 CGRAM读出的数据。BF为1时,液晶模块处于内部处理模式,不响应外部操作指令和接受数据。DDRAM用来存储显示的字符,能存储80个字符码。CGROM由8位字符码生成5*7点阵字符160种和 5*10点阵字符32种,8位字符编码和字符的对应
8、关系,可以查看相关文献。CGRAM是为用户编写特殊字符留用的,它的容量仅64字节。可以自定义8个 5*7点阵字符或者4个 5*10点阵字符。AC可以存储DDRAM和 CGRAM的地址,如果地址码随指令写入 IR,则IR自动把地址码装入AC,同时选择DDRAM或者CGRAM单元。 3.1.1 LM016L引脚说明管脚号名称电平功能描述 1 VSS 0V 2 VDD 5.0V 3 RS H/L H:数据线上为数据信号;L:数据线上为指令信号 4 RW H/L H:读数据模式;L:写数据模式 5 E H/L 使能信号端 6 DB0DB7 H/L 数据线3.1.2 控制指令控制指令通过对HD44780
9、写入控制指令,HD44780产生显示驱动信号来驱动LM016L。HD44780的控制指令主要有:清除显示(Clear Display)、地址归位( Return Home)、输入模式设定(Entry Mode Set)、显示开/关控制(Display On/Off Control)、功能设定(Function Set)、设定CGRAM的地址(Set CGRAM Address)、设定DDRAM的地址(Set DDRAM Address)、写DDRAM/CGRAM(Write Date to DDRAM/CGRAM)、读忙标志和地址(Read Busy Flagand Address)以及从DD
10、RAM和CGRAM中读数据(Read Date from DDRAM/CGRAM)。3.1.3 基于Proteus ISIS 7的液晶模块仿真 1、接口设计运行Proteus ISIS 7进入设计界面,依照图所示在元件库中选择需要的元件。80C51的P0口作为8位数据的输出端,P2.0、P2.1、P2.2作为控制信号的输出端。2、软件设计电路图绘制好之后,就可以编写LM016L的驱动程序。 LM016L的操作有两大类:读操作和写操作。一般情况下不需要从液晶中读取数据,所以对液晶操作主要是写指令和写数据两个写操作,对于忙标志(BF),采用延时的方法,保证液晶模块有足够时间进行内部数据处理。在写源
11、程序时,需要根据液晶模块的时序图编写程序。 (1)写指令子程序RSR/WE DB0 - DB7WRITE_COMMAND:;写指令子程序CLR4 LCDE;清使能信号 CLR RS;RS=0,RW=0写指令 CLR RWMOV P0, A ;送指令字(2)写数据子程序 WRITE_DATA入口参数:数据放在累加器A中 WRITE_DATA:;写数据子程序 CLR LCDE;清使能信号 SETB RS ;RS=1,RW=0写数据 CLR RW MOV P0, A ;送数据RS BIT P2.0; RW BIT P2.1;LCDE BIT P2.2下面是写指令和写数据的源代码:写指令子程序WRIT
12、E_COMMAND入口参数:指令字放在累加器A中有效数据T2 T3 T1 T4 SETB LCDE LCALL DELAY CLR LCDE RETSETB LCDE LCALL DELAY CLR LCDE RET ;设置使能信号;延时;设置使能信号;延时液晶模块初始化主要包括:功能设定(Function Set)、显示开/关控制(Display On/OffControl)、清除显示(Clear Display)、进入点设定(Entry Mode Set)。INITIAL_LCD:;液晶模块初始化 MOV A,#06H ;输入方式设置;8位接口,两行显示,5*7点阵字符 LCALL WRI
13、TE_COMMAND MOV A,#38H MOV A,#01H ;清屏指令 LCALL WRITE_COMMAND LCALL WRITE_COMMANDMOV A,#0EH ;显示开关设置 RET LCALL WRITE_COMMAND3.3自定义字符及其显示CGRAM是用户编写特殊字符用的,它的容量仅64字节,地址为003FH。定义一个5*7点阵字符需要8个字节,这8个字节由CGRAM地址的高3位确定,相同的为一组。 3.2 单片机AT89C51AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROMFalsh Programmable and Erasable Read
14、Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。3.2.1 主要特性与MCS-51 兼容 4K字节可编程闪烁存储器 寿命:1000写/擦循环数据保留时间:
15、10年全静态工作:0Hz-24Hz三级程序存储器锁定128*8位内部RAM32可编程I/O线两个16位定时器/计数器5个中断源 可编程串行通道低功耗的闲置和掉电模式片内振荡器和时钟电路 3.2.2 管脚说明 VCC:供电电压。 GND:接地。 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓
16、冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口
17、输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 P3口也可作为AT89C51的一些特殊功能口,如下表所示:P3口管脚 备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入) P3.5 T1(记时器1外部输入) P
18、3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通)P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,ALE只有在执行MOV
19、X,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 /PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。 /EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。
20、XTAL2:来自反向振荡器的输出。3.2.3 振荡器特性XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。3.2.4 芯片擦除功能整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。 此外,AT89C51设有稳态逻辑,可以在低到
21、零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。 3.3 时钟芯片DS1302 DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置 “0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如下图3.3.1所示。DS1302的控制字,此控制字的位7必须置1,若为0则不能把对DS1302进行读写数据。对于位6,若对程序进行读/写时RAM=1,对时间进行读/写时,CK=0。位1至位5指操作单元的地址。位
22、0是读/写操作位,进行读操作时,该位为1;该位为0则表示进行的是写操作。控制字节总是从最低位开始输入/输出的。DS1302的日历、时间寄存器内容:“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,WP必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。3.3.1 DS1302的控制字节DS1302的控制字节的高有效位(位7)必须是逻辑1,如果它为0,则不能把数据写入DS1302中;位6如果0,则表示存取日历时钟数据,为1表示存取RAM数据;位5至位1指示操作单元的地址
23、;最低有效位(位0)如为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。3.3.2 数据输入输出(I/O)在控制指令字输入后的下一个SCLK时钟的上升沿时,数据被写入DS1302,数据输入从低位即位0开始。同样,在紧跟8位的控制指令字后的下一个SCLK脉冲的下降沿读出DS1302的数据,读出数据时从低位0位到高位7。如下图3.3所示 图3.3.1 DS1302读/写时序图3.3.3 DS1302的寄存器DS1302有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字见表3.3.2。 表3.3.2 DS1302的日历、时
24、间寄存器 此外,DS1302 还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共31个,每个单元组态为一个8位的字节,其命令控制字为C0HFDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的RAM寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。3.4 DS18B20数字温度传感器3.4.1技术性能描述 1、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处
25、理器与DS18B20的双向通讯。 2、测温范围 55+125,固有测温分辨率0.5。 3、支持多点组网功能,多个DS18B20可以并联在唯一的三线上,最多只能并联8个,实现多点测温,如果数量过多,会使供电电源电压过低,从而造成信号传输的不稳定。 4、工作电源: 35V/DC。 5、在使用中不需要任何外围元件。 6、测量结果以912位数字量方式串行传送。 应用范围该产品适用于冷冻库、粮仓、储罐、电讯机房、电力机房、电缆线槽等测温和控制领域。 接线说明特点:独特的一线接口,只需要一条口线通信多点能力,简化了分布式温度传感应用无需外部元件可用数据总线供电,电压范围为3.0 V至5.5 V,无需备用电
26、源测量温度范围为-55 至+125 。3.4.2 DS18B20主要的数据部件 光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。 DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符
27、号位。 DS18B20内部结构主要由四部分组成:64位光刻ROM,温度传感器,温度报警触发器TH和TL,配置寄存器。 1、存储器 DS18B20的存储器包括高速暂存器RAM和可电擦除RAM,可电擦除RAM又包括温度触发器TH和TL,以及一个配置寄存器。存储器能完整的确定一线端口的通讯,数字开始用写寄存器的命令写进寄存器,接着也可以用读寄存器的命令来确认这些数字。当确认以后就可以用复制寄存器的命令来将这些数字转移到可电擦除RAM中。当修改过寄存器中的数时,这个过程能确保数字的完整性。 高速暂存器RAM是由8个字节的存储器组成;第一和第二个字节是温度的显示位。第三和第四个字节是复制TH和TL,同时
28、第三和第四个字节的数字可以更新;第五个字节是复制配置寄存器,同时第五个字节的数字可以更新;六、七、八三个字节是计算机自身使用。用读寄存器的命令能读出第九个字节,这个字节是对前面的八个字节进行校验。 2、64-位光刻ROM 64位光刻ROM的前8位是DS18B20的自身代码,接下来的48位为连续的数字代码,最后的8位是对前56位的CRC校验。64-位的光刻ROM又包括5个ROM的功能命令:读ROM,匹配ROM,跳跃ROM,查找ROM和报警查找。 3、DS18B20外部电源的连接方式 DS18B20可以使用外部电源VDD,也可以使用内部的寄生电源。当VDD端口接3.0V5.5V的电压时是使用外部电
29、源;当VDD端口接地时使用了内部的寄生电源。无论是内部寄生电源还是外部供电,I/O口线要接5K左右的上拉电阻。4、配置寄存器 配置寄存器是配置不同的位数来确定温度和数字的转化。R1,R0是温度的决定位,由R1,R0的不同组合可以配置为9位,10位,11位,12位的温度显示。这样就可以知道不同的温度转化位所对应的转化时间,四种配置的分辨率分别为0.5,0.25,0.125和0.0625,出厂时以配置为12位3.4.3 DS18B20温度处理过程 1、温度的读取 DS18B20在出厂时以配置为12位,读取温度时共读取16位,所以把后11位的2进制转化为10进制后在乘以0.0625便为所测的温度,还
30、需要判断正负。前5个数字为符号位,当前5位为1时,读取的温度为负数;当前5位为0时,读取的温度为正数。 2、DS18B20控制方法 指令约定代码操作说明 (1)温度转换44H启动DS18B20进行温度转换(2)读暂存器BEH读暂存器9位二进制数字 (3)写暂存器4EH将数据写入暂存器的TH、TL字节 (4)复制暂存器48H把暂存器的TH、TL字节写到E2RAM中 (5)重新调E2RAM B8H把E2RAM中的TH、TL字节写到暂存器TH、TL字节 (6)读电源供电方式B4H启动DS18B20发送电源供电方式的信号给主CPU 3、DS18B20的初始化 (1)先将数据线置高电平“1”。 (2)延
31、时(该时间要求的不是很严格,但是尽可能的短一点) (3)数据线拉到低电平“0”。 (4)延时750微秒(该时间的时间范围可以从480到960微秒)。 (5)数据线拉到高电平“1”。 (6)延时等待(如果初始化成功则在15到60毫秒时间之内产生一个由DS18B20所返回的低电平“0”。据该状态可以来确定它的存在,但是应注意不能无限的进行等待,不然会使程序进入死循环,所以要进行超时控制)。 (7)若CPU读到了数据线上的低电平“0”后,还要做延时,其延时的时间从发出的高电平算起(第(5)步的时间算起)最少要480微秒。 (8)将数据线再次拉高到高电平“1”后结束。4、DS18B20的写操作 (1)
32、数据线先置低电平“0”。 (2)延时确定的时间为15微秒。 (3)按从低位到高位的顺序发送字节(一次只发送一位)。 (4)延时时间为45微秒。 (5)将数据线拉到高电平。 (6)重复上(1)到(6)的操作直到所有的字节全部发送完为止。 (7)最后将数据线拉高。 5、DS18B20的读操作 (1)将数据线拉高“1”。 (2)延时2微秒。 (3)将数据线拉低“0”。 (4)延时3微秒。 (5)将数据线拉高“1”。 (6)延时5微秒。 (7)读数据线的状态得到1个状态位,并进行数据处理。 (8)延时60微秒。 3.4.4 DS18B20的主要特性 1、适应电压范围更宽,电压范围:3.05.5V,在寄
33、生电源方式下可由数据线供电。 2、独特的单线接口方式,DS18B20在与微处理器连接时仅需要一条口线即可实现微处理器与DS18B20的双向通讯。 3、DS18B20支持多点组网功能,多个DS18B20可以并联在唯一的三线上,实现组网多点测温。 4、DS18B20在使用中不需要任何外围元件,全部传感元件及转换电路集成在形如一只三极管的集成电路内。 5、温范围55+125,在-10+85时精度为0.5。 6、可编程的分辨率为912位,对应的可分辨温度分别为0.5、0.25、0.125和0.0625,可实现高精度测温。 7、在9位分辨率时最多在93.75ms内把温度转换为数字,12位分辨率时最多在7
34、50ms内把温度值转换为数字,速度更快。 8、测量结果直接输出数字温度信号,以一 线总线串行传送给CPU,同时可传送CRC校验码,具有极强的抗干扰纠错能力。 9、负压特性:电源极性接反时,芯片不会因发热而烧毁,但不能正常工作。 3.4.5 DS18B20的外形和内部结构 DS18B20内部结构主要由四部分组成:64位光刻ROM 、温度传感器、非挥发的温度报警触发器TH和TL、配置寄存器。 DS18B20的外形及管脚排列如下图3.4.1: 图3.4.1DS18B20引脚定义: (1)DQ为数字信号输入/输出端; (2)GND为电源地; (3)VDD为外接供电电源输入端(在寄生电源接线方式时接地)
35、。 3.4.6 DS18B20工作原理 DS18B20的读写时序和测温原理与DS1820相同,只是得到的温度值的位数因分辨率不同而不同,且温度转换时的延时时间由2s 减为750ms。DS18B20测温原理如图3.4.2所示。图中低温度系数晶振的振荡频率受温度影响很小,用于产生固定频率的脉冲信号送给计数器1。高温度系数晶振 随温度变化其振荡率明显改变,所产生的信号作为计数器2的脉冲输入。计数器1和温度寄存器被预置在55所对应的一个基数值。计数器1对低温度系数晶振产生的脉冲信号进行减法计数,当计数器1的预置值减到0时,温度寄存器的值将加1,计数器1的预置将重新被装入,计数器1重新开始对低温度系数晶
36、振产生的脉冲信号进行计数,如此循环直到计数器2计数到0时,停止温度寄存器值的累加,此时温度寄存器中的数值即为所测温度。图3.4.2中的斜率累加器用于补偿和修正测温过程中的非线性,其输出用于修正计数器1的预置值。 DS18B20测温原理框图 图3.4.2DS18B20的4个主要的数据部件: (1)光刻ROM中的64位序列号是出厂前被光刻好的,它可以看作是该DS18B20的地址序列码。64位光刻ROM的排列是:开始8位(28H)是产品类型标号,接着的48位是该DS18B20自身的序列号,最后8位是前面56位的循环冗余校验码(CRC=X8+X5+X4+1)。光刻ROM的作用是使每一个DS18B20都
37、各不相同,这样就可以实现一根总线上挂接多个DS18B20的目的。 (2)DS18B20中的温度传感器可完成对温度的测量,以12位转化为例:用16位符号扩展的二进制补码读数形式提供,以0.0625/LSB形式表达,其中S为符号位。 DS18B20温度值格式表 这是12位转化后得到的12位数据,存储在18B20的两个8比特的RAM中,二进制中的前面5位是符号位,如果测得的温度大于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际 温度。 例如+125的数字输出为07D0H,+25.0625的数字输出为0
38、191H,-25.0625的数字输出为FE6FH,-55的数字输出为FC90H 。 DS18B20温度数据表 (3)DS18B20温度传感器的存储器DS18B20温度传感器的内部存储器包括一个高速暂存RAM和一个非易失性的可电擦除的EEPRAM,后者存放高温度和低温度触发器TH、TL和结构寄存器。 (4)配置寄存器 该字节各位的意义如下:低五位一直都是1,TM是测试模式位,用于设置DS18B20在工作模式还是在测试模式。在DS18B20出厂时该位被设置为0,用户不要去改动。R1和R0用来设置分辨率。高速暂存存储器由9个字节组成。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在 高
39、速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,数据格式如表1所示。对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变为原码,再计算十进制值。 根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后释放,当DS18B20收到信号后等待1660微秒左右,后发出60240微秒的存在低脉冲,主CPU收到此信号
40、表示复位成功。 3.4.7 DS18B20的应用电路DS18B20测温系统具有测温系统简单、测温精度高、连接方便、占用口线少等优点。下面就是DS18B20几个不同应用方式下的测温电路图: 1、DS18B20寄生电源供电方式电路图如下面图3.4.3所示,在寄生电源供电方式下,DS18B20从单线信号线上汲取能量:在信号线DQ处于高电平期间把能量储存在内部 电容里,在信号线处于低电平期间消耗电容上的电能工作,直到高电平到来再给寄生电源(电容)充电。 独特的寄生电源方式有三个好处: (1)进行远距离测温时,无需本地电源 (2)可以在没有常规电源的条件下读取ROM (3)电路更加简洁,仅用一根I/O口
41、实现测温 要想使DS18B20进行精确的温度转换,I/O线必须保证在温度转换期间提供足够的能量,由于每个DS18B20在温度转换期间工作电流达到1mA,当几个温度传感器挂在同一根I/O线上进行多点测温时,只靠4.7K上拉电阻就无法提供足够的能量,会造成无法转换温度或温度误差极大。 因此,图3.4.3电路只适应于单一温度传感器测温情况下使用,不适宜采用电池供电系统中。并且工作电源VCC必须保证在5V,当电源电压下降时,寄生电源能够汲取的能量也降低,会使温度误差变大。 图3.4.32、DS18B20寄生电源强上拉供电方式电路图改进的寄生电源供电方式如下面图3.4.4所示,为了使DS18B20在动态
42、转换周期中获得足够的电流供应,当进行温度转换或拷贝到E2存储器操作时,用MOSFET把I/O线直接拉到VCC就可提供足够的电流,在发出任何涉及到拷贝到E2存储器或启动温度转换的指令后,必须在最多10S内把I/O线转换到强上拉状态。在强上拉方式下可以解决电流供应不走的问题,因此也适合于多点测温应用,缺点就是要多占用一根I/O口线进行强上拉切换。 图3.4.4 注意:在图3.4.3和图3.4.4寄生电源供电方式中,DS18B20的VDD引脚必须接地 3、DS18B20的外部电源供电方式 在外部电源供电方式下,DS18B20工作电源由VDD引脚接入,此时I/O线不需要强上拉,不存在电源电流不足的问题
43、,可以保证转换精度,同时在总线上理论可以挂接任意多个DS18B20传感器,组成多点测温系统。注意:在外部供电的方式下,DS18B20的GND引脚不能悬空 ,否则不能转换温度,读取的温度总是85。 图3.4.5:外部供电方式单点测温电路 图3.4.6:外部供电方式的多点测温电路图 外部电源供电方式是DS18B20最佳的工作方式,工作稳定可靠,抗干扰能力强,而且电路也比较简单,可以开发出稳定可靠的多点温度监控系统。3.4.8 DS18B20使用中注意事项 DS18B20虽然具有测温系统简单、测温精度高、连接方便、占用口线少等优点,但在实际应用中也应注意以下几方面的问题: 1、较小的硬件开销需要相对
44、复杂的软件进行补偿,由于DS18B20与微处理器间采用串行数据传送,因此,在对DS18B20进行读写编程时,必须严格的保证读写时序,否则将无法读取测温结果。在使用PL/M、C等高级语言进行系统程序设计时,对DS18B20操作部分最好采用汇编语言实现。 2、在DS18B20的有关资料中均未提及单总线上所挂DS18B20数量问题,容易使人误认为可以挂任意多个DS18B20,在实际应用中并非如此。当单总线上所挂DS18B20超过8个时,就需要解决微处理器的总线驱动问题,这一点在进行多点测温系统设计时要加以注意。 3、连接DS18B20的总线电缆是有长度限制的。试验中,当采用普通信号电缆传输长度超过5
45、0m时,读取的测温数据将发生错误。当将总线电缆改为双绞线带屏蔽电缆时,正常通讯距离可达150m,当采用每米绞合次数更多的双绞线带屏蔽电缆时,正常通讯距离进一步加长。这种情况主要是由总线分布电容使信号波形产生畸变造成的。因此,在用DS1820进行长距离测温系统设计时要充分考虑总线分布电容和阻抗匹配问题。 4、在DS18B20测温程序设计中,向DS18B20发出温度转换命令后,程序总要等待DS18B20的返回信号,一旦某个DS18B20接触不好或断线,当程序读该DS18B20时,将没有返回信号,程序进入死循环。这一点在进行DS18B20硬件连接和软件设计时也要给予一定的重视。测温电缆线建议采用屏蔽
46、4芯双绞线,其中一对线接地线与信号线,另一组接VCC和地线,屏蔽层在源端单点接地。 第四章 硬件设计4.1 Proteus软件4.1.1 Proteus软件介绍Proteus软件是英国Labcenter electronics公司出版的EDA工具软件。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。 4.1.2 功能特点Proteus软件具有其它EDA工具软件(例:multisim)的功能。这些功能是: 1原理布图 2PCB自动或人工布线 3SPICE电路仿真 4.1.3 革命性的特点 1互动的电路