资源描述
数字温度表设计 刘彩琴(2)
———————————————————————————————— 作者:
———————————————————————————————— 日期:
24
个人收集整理 勿做商业用途
数字温度表设计
摘 要
本设计的主要内容是应用单片机和温度传感器设计一个数字温度表,DS18B20是一种可组网的高精度数字温度传感器,由于其具有单总线的独特优点,可以使用户轻松地组建起传感器网络,并可使多点温度测量电路变得简单、可靠.本设计基于数字温度传感器DS18B20,以AT89S52单片机为核心设计此测试系统,具有结构简单、测温精度高、稳定可靠的优点。可实现温度的实时检测和显示,并可设置温度上下极限,配置报警范围。本文给出了系统的硬件电路详细设计和软件设计方法,完成了实验板的制作,经过调试和实验验证,实现了预期的全部功能.
关键词 单片机 温度传感器 温度
1 硬件电路设计
1.1 设备整机结构及硬件电路框图
根据设计要求与设计思路,设计硬件电路框图如图3—1所示,硬件电路由以下8部分组成,即电源电路,单片机最小系统,时钟电路,复位电路,LED显示器驱动电路,4位LED显示器,蜂鸣电路和温度检测电路。系统中AT89S52完成对DS18B20初始化、温度采集、温度转换、温度送显、超温报警及数码显示。
本装置详细组成部分如下:
(1)主控模块:AT89S52单片机;
(2)传感器电路:DS18B20温度传感器;
(3)供电系统:7805稳压电路;
(4)报警电路:蜂鸣器电路;
(5)显示电路:LED数码管显示。
图3-1 硬件设计电路图
1.2 主控电路中单片机的选型
早期的单片机都是8位或4位的。随着工业控制领域要求的提高,开始出现了16位单片机,但因为性价比不理想并未得到很广泛的应用。90年代后随着消费电子产品大发展,单片机技术得到了巨大的提高。而传统的8位单片机的性能也得到了飞速提高,处理能力比起80年代提高了数百倍。
根据初步设计方案的分析,设计一个应用系统,可以选择带有可编程Flash的低功耗、高性能单片机,应用程序直接存储在片内,不用在外部扩展程序存储器,可以简化电路,且提高产品的可靠性。INTEL公司的8051和8751芯片均可选用,还有其他一些厂家生产与51系列相兼容的芯片,例如ATMEL公司生产的AT89SXX系列单片机。鉴于以上要求和比较,本毕业设计采用AT89S52单片机。
AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash。此外还有1000次擦写周期、32个可编程I/O口线、三个16位定时器/计数器、八个中断源、全双工UART串行通道、低功耗空闲和掉电模式、掉电后中断可唤醒、看门狗定时器、双数据指针、掉电标识符 。
AT89S52具有以下标准功能:8k字节Flash,256字节RAM,32 位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,全双工串行口,片内晶振及时钟电路。另外,AT89S52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作.掉电保护方式下RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止.
本次毕业设计主要用到P0口、P1口和P2口,所以把相关端口及其连接电路做一下说明:
P0口:P0口是一个8位漏极开路的双向I/O口.作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。 在本设计中用P0口连接上拉电阻和限流电阻后,再连接到LED显示电路的各个段的接口,即用做温度数据的输出口。
P1口:P1口是一个具有内部上拉电阻的8 位双向I/O口,P1 输出缓冲器能驱动4 个TTL 逻辑电平.对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在本设计中用P1口连接有电流放大驱动作用的三极管,然后再连接到LED显示电路的各个位的接口,用来作位选的输出口。
P2口:P2口是一个具有内部上拉电阻的8 位双向I/O 口,P2 输出缓冲器能驱动4 个TTL 逻辑电平。对P2 端口写“1"时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在本设计中用到P2口的两个端口,一个用来接温度传感器DS18B20,另一个用来接蜂鸣器.
P3口:P3口是一个具有内部上拉电阻的8 位双向I/O口,P2输出缓冲器能驱动4个TTL 逻辑电平。对P3 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
RST—-复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
无论用户使用哪种类型的单片机,总要涉及到单片机复位电路的设计。而单片机复位电路设计的好坏,直接影响到整个系统工作的可靠性。许多用户在设计完单片机系统,并在实验室调试成功后,在现场却出现了“死机”、“程序走飞"等现象,这主要是单片机的复位电路设计不可靠引起的。
本单片机系统采用的复位电路,这个电路的原理是:当通电瞬间,稳压电源给电容充电,此时,在电容和电阻之间将有一个高电平也就是给单片机一个高电平使其复位。随着电容充电结束,将使电容与电阻之间将呈现低电平, 单片机复位结束。
EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H—FFFFH),EA端必须保持低电平(接地)。需注意的是:如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令.
根据设计要求,本设计选用单片机AT89S52,如图3—2,其引脚接线方案如下:
(1)温度检测器件采用数字式温度传感器DS18B20;
(2)声音报警蜂鸣器通过P2.4引脚接入;
(3)P0口、P1口用来接LED显示电路。
图3-2 单片机小型系统
1。3 测温电路的设计
图3—3 基于DS18B20温度传感器的测温电路
测量温度的关键是温度传感器,随着科学技术的不断进步与发展,数字温度传感器更因适用于各种微处理器接口组成的自动温度控制系统具有可以克服模拟传感器与微处理器接口时需要信号调理电路和A/D转换器的弊端等优点,被广泛应用于工业控制、电子测温计、医疗仪器等各种温度控制系统中。其中,比较有代表性的数字温度传感器有DS18B20。
DS18B20是美国DALLAS半导体公司继DS1820之后最新推出的一种改进型智能温度传感器。具有3引脚TO-92小体积封装形式,测温分辨率可达0。0625℃,被测温度用符号扩展的16位数字量方式串行输出。其工作电源既可在远端引入,也可采用寄生电源方式产生。CPU只需一根端口线就能与诸多DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路.与传统的热敏电阻相比,他能够直接读出被测温度并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。可以分别在93.75 ms和750 ms内完成9位和12位的数字量,并且从DS18B20读出的信息或写入DS18B20的信息仅需要一根口线(单线接口)读写,温度变换功率来源于数据总线,总线本身也可以向所挂接的DS18B20供电,而无需额外电源。
DS18B20支持“一线总线”接口,测量温度范围为 —55°C~+125°C,在-10~+85°C范围内,精度为±0。5°C。现场温度直接以“一线总线”的数字方式传输,大大提高了系统的抗干扰性.适合于恶劣环境的现场温度测量,如:环境控制、设备或过程控制、测温类消费电子产品等。
因而使用DS18B20可使系统结构更趋简单,可靠性更高。他在测温精度、转换时间、传输距离、分辨率等方面较DS1820有了很大的改进,给用户带来了更方便的使用和更令人满意的效果.根据本毕业设计的要求,根据多次比较和选择,决定采用DS18B20温度传感器。
其电路的连接是:单片机的P2。3口接DS18B20的I/O口(输入输出口),DS18B20的GND端接地,VCC端接电源。如图3—3所示。
DS18B20的内部结构框图如图3-4所示。主要由四部分组成:寄生电源、64位激光ROM和单总线接口、存放中间数据的高速暂存器RAM、用于存储用户设定温度上下限值的TH和TL触发器、温度传感器、存储与控制逻辑、8位循环校验码(CRC)发生器等7部分。
在硬件上,DS18B20与单片机的连接有两种方法,一种是Vcc接外部电源,GND接地,I/O与单片机的I/O线相连;另一种是寄生电源供电,此时UDD、GND接地,I/O接单片机I/O。无论寄生电源还是外部供电,I/O口线要接5KΩ左右的上拉电阻。
图3-4 DS18B20内部结构图
1.4 显示电路设计
发光二极管是半导体二极管的一种,可以把电能转化成光能,常简写为LED。发光二极管与普通二极管一样是由一个PN结组成,也具有单向导电性.当给发光二极管加上正向电压后,从P区注入到N区的空穴和由N区注入到P区的电子,在PN结附近数微米内分别与N区的电子和P区的空穴复合,产生自发辐射的荧光。
发光二极管的正向伏安特性曲线很陡,使用时必须串联限流电阻以控制通过管子的电流。发光二极管的特点是:工作电压很低(有的仅一点几伏);工作电流很小(有的仅零点几毫安即可发光);抗冲击和抗震性能好,可靠性高,寿命长;由于有这些特点,发光二极管在一些光电控制设备中用作光源,在许多电子设备中用作信号显示器.把它的管心做成条状,用7条条状的发光管组成7段式半导体数码管,每个数码管可显示0~9十个数目字。其管脚如图3—5。
图3—5 LED引脚图
LED显示器的显示控制方式为静态显示和动态显示两种,因此在选择驱动器时,一定要先确定显示方式.
若选择静态显示,则LED驱动器的选择较为简单,只要驱动的驱动能力与显示器电流相匹配即可。而且只须考虑段的驱动,因为共阳极接+5V,而共阴极接地,所以位的驱动不需要考虑。而动态显示则不同,由于一位数据的显示是由段选和位选信号共同配合完成的.因此,要同时考虑段和位的驱动能力,而且段的驱动能力决定位的驱动能力。综合考虑,本设计决定用动态显示电路。
LED显示器的选择,在应用的系统中,设计要求不同,使用LED显示器的位数也不同,在本设计中,选择4位LED显示器满足两位整数、两位小数的设计要求。
LED显示器一般都需要进行驱动,有系统硬件设计框图3—6可知,显示电路有LED显示器,段驱动电路和位驱动电路组成。由于单片机的并行口不能直接驱动LED显示器,必须采用专用的驱动电路芯片或采用三极管放大,使之产生足够大的电流,否则显示器的亮度就低,因此,本设计中采用三极管放大驱动。
LED驱动电路与单片机的连接及元器件选择,本设计采用单片机的P0口和P1口作为与LED的输出接口,即P0口的作为LED的段码输出信号口,P1口的低四位作为LED位码的输出控制信号.LED硬件电路连接如设计图所示,排电阻是上拉电阻,其作用是保证驱动电路可靠导通与截止,选阻值7*100Ω的排电阻。
P0
单 P2.0
片
机 P2.1
P2.2
P2.3
图3-6 显示电路
该电路的工作原理是:当P0口输出段码信号的BCD码后,由于4-LED的段译码输入引脚是并联在一起的,所以每一位的LED的段译码输入引脚都能获得这个段码信号。若要控制在每一时刻只要一位LED被电亮,必须靠位码信号控制.P1口的低四位输出位码信号,经三极管放大后接到LED的位码控制端。因此P1口的位码信号在每一时刻只有一位是“0”,其它位全为“1",然后按时间顺序改变输出“0”的位置,控制在每一时刻只有一位LED被点亮,达到动态显示的目的.
1.5 电源电路的设计
稳压电源在电子制作中应用十分广泛,本设计采用的7805稳压电源,线路简单,价格低廉、性能稳、使用方便。
图3—7 稳压电路
7805集成稳压器可将不稳定的直流电压变为稳定的直流电压的集成电路.由于集成稳压器具有稳压精度高、工作稳定可靠、外围电路简单、体积小、重量轻等显著优点,在各种电源电路中得到了普遍的应用。在电子制用中应用较多的是三端固定输出稳压器.运用其器件内部电路来实现过压保护、过流保护、过热保护,这使它的性能很稳定.能够实现1A以上的输出电流器件具有良好的温度系数。
7805是三端稳压器件,顾名思义05就是输出电压为5v,还可以微调,7805输出波纹很小。它的样子象是普通的三极管,7805三端固定集成稳压器有三个端子:输入端UI、输出U0和公共端COM。输入端接整流滤波电路,输出端接负载;公共端接输入、输出的公共连接点.其内部由采样、基准、放大、调整和保护等电路组成。保护电路具有过流、过热及短路保护功能。
7805三端集成稳压器可直接用于各种电子设备作电压稳定器,无须外接任何元件,即可达到标准的稳压值,也可在公共端(GND)接分压元件改变输出电压值;由于内部带有过流、过热保护等电路,所以使用非常方便、可靠。因为三端固定集成稳压电路的使用方便,电子制作中经常采用。
1.6 时钟电路的设计
图3-8时钟电路的连接图
本电路选石英晶振作为时钟组件,接至AT89S52的XTAL1,XTAL2引脚组成时钟电路,如设计图3—8所示。
石英晶片所以能做振荡电路(谐振)是基于它的压电效应,从物理学中知道,若在晶片的两个极板间加一电场,会使晶体产生机械变形;反之,若在极板间施加机械力,又会在相应的方向上产生电场,这种现象称为压电效应.如在极板间所加的是交变电压,就会产生机械变形振动,同时机械变形振动又会产生交变电场。一般来说,这种机械振动的振幅是比较小的,其振动频率则是很稳定的。
石英晶体振荡器是利用石英晶体的压电效应来起振,振荡器直接应用于电路中,
单片机的时钟有两种方式,如图3-9所示,一种是片内时钟振荡方式,但需在18和19脚外接石英晶体(2—12MHz)和振荡电容,振荡电容的值一般取10p—30p。另外一种是外部时钟方式,即将XTAL1接地,外部时钟信号从XTAL2脚输入。本设计采用内部时钟方式,选石英晶振作为时钟组件,接至AT89S52的XTAL1,XTAL2引脚组成时钟电路,如设计图3-8所示,其中石英晶振选11.0592MHz,C1、C2为负载电容,选C1=C2=30pF的瓷介电容。本设计采用内部时钟方式,在外面接一晶振。
图3—9 可与单片机组合的两种时钟方式
1。7 蜂鸣器电路的设计
目前,在许多情况下需要对环境的温度进行限定,随着人民生活的改善和工业的发展,安全问题变的就更加的重要.环境温度一旦超过限定值,势必会对所处环境的人或设备造成影响,更甚者将会给个人和社会造成巨大的损失和社会影响.因此,在某些特定环境内安装温度报警器进行监控也成为一种必然的需要.
设计要求到上下限温度限制时有声音提醒信号产生,可选择一只蜂鸣器来实现这一功能。蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于电子产品中作发声器件.电压式蜂鸣器(HA)工作时约需10mA的驱动电流,并设计一个相应的驱动及控制电路。
普通的蜂鸣器外表看上去相同,但实际上有2种类型的:
(1)上电就响的那种,实际上就是有源蜂鸣器,内部已经集成了震荡电路,控制输出一个高电平,实际上就是提供了震荡电路的电源,产生震荡推动蜂鸣器发声。
(2)无源蜂鸣器,这种蜂鸣器内部没有震荡电路,控制电路需要输出高低变化的信号,才能推动蜂鸣器发声的。
通常设备上主要用于声音提示,采用有源蜂鸣器的话控制起来比较方便,因此多使用有源蜂鸣器.
电路设计如图3-10所示,蜂鸣器(HA)作为三极管Q1的集成电极负载,当Q1导通时,蜂鸣器发出鸣叫声.
蜂鸣器电路与单片机的接口:Q1的基极接到单片机的P2口的P2。4引脚作为输出口使用。当P2。4=0时,Q1导通时,使蜂鸣器的两个引脚间获得将近5V的直流电压,蜂鸣器中有电流通过,而蜂鸣音。当P2.4=1时,Q1截止,蜂鸣器的两引脚间的直流电压接近与0V,蜂鸣器不发声。R5为基极电阻,防止V1基极电流过大,取1000Ω。
图3-10 蜂鸣器驱动电路
2 软件设计
数字温度表设计的应用程序由主程序,LED显示子程序,温度检测程序组成。如前所述,进行应用软件设计可采用模块程序设计方法,其优点是:
(1)每个模块的程序结构简单,任务明确,易于编写调试和修改;
(2)程序可读性好,对程序的修改可局部进行,其它部分可以保持不变,便于功能扩充和版本升级;
(3)对于使用频繁的子程序可以建立子程序库,便于多个模块调用;
(4)便于分工合作,多个程序员同时进行程序的编写和调试工作,加快软件研制进度。
2.1 数字式温度计系统软件设计方案及框图
根据设计要求,首先要确定软件设计方案,即确定软件应该完成哪些功能;其次是规划为了完成这些功能需要分成多少个功能模块,以及每一个程序模块的具体任务是什么?模块的划分有很大的灵活性,但也不随意划分。划分模块时应遵循以下原则:
(1)每个模块应具有独立的功能,能产生一个明确的结果;
(2)模块之间的控制参数应尽量简单,数据参数应尽量少.控制参数是指模块进入和推出的条件及方式,数据参数是模块间的信息交换方式,交换量的多少及交换的频率;
(3)模块长度适中,模块语句长度通常在20~100条较合适.模块太长时,分析和调试比较困难,失去了模块化程序结构的优越性;模块太短则信息交换太频繁,也不合适。
根据模块的划分原则,将这个程序划分为5个模块,如图4-1所示。
图4-1 程序模块图
2。2 程序设计流程图
图4-2是数字温度表读温度并显示温度的总流程图,按照设计要求,需要输入上限温度的功能,当温度高于上限时,进行报警。由于本毕业设计即数字温度表设计功能比较简单,只需要通过温度传感器检测温度,然后把检测出的温度传给单片机,然后单片机在输出给LED数码管显示即可,所以此程序的流程图也比较简单。如图4—2所示.
图4—2 程序设计流程图
2。3 测温程序模块的设计
DS18B20子程序是结合它的用户使用资料编写,主要完成的是初始化DS18B20,从DS18B20中读出一个字节的数据,向DS18B20中写入一个字节的数据,配置DS18B20包括警报温度的上限和下限、温度转换的精度,读出Scrachpad存储器中的九个字节的数据,读出Rom中的64位Code值,对读出的Scrachpad数据进行CRC校验,然后根据读出的数据得到测量出的十进制温度值.
其中,从DS18B20中读出九个字节数据的流程图如图4—3所示。
图4-3 从DS18B20中读数据的流程图
在温度传感器的编程中,时隙和数据存储是一个重要的问题,下面做一下想详细说明(DS18B20详细功能介绍):
温度传感器DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1,2字节.单片机可通过单线接口读到该数据,读取时低位在前,高位在后。温度值格式如图4—4。
图4-4 温度寄存器结构图
以12位转化为例说明温度高低字节存放形式及计算:12位转化后得到的12位数据,存储在18B20的两个高低两个8位的RAM中,二进制中的前面5位是符号位。如果测得的温度大于0,这5位为0,只要将测到的数值乘于0。0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625才能得到实际温度。 对应的温度计算:当符号位S=0时,直接将二进制位转换为十进制;当S=1时,先将补码变换为原码,再计算十进制值.表4—1是对应的一部分温度值。
表4—1 温度和数字量的关系
温度
数字输出(二进制数)
数字输出(十六进制)
+125
0000 0111 1101 0000B
07D0H
+85
0000 0101 0101 0000B
0550H
+25.0625
0000 0001 1001 0001B
0191H
+10.125
0000 0000 1010 0010B
00A2H
+0。5
0000 0000 0000 1000B
0008H
0
0000 0000 0000 0000B
0000H
—0.5
1111 1111 1111 1000B
FFF8H
—10。125
1111 1111 0101 1110B
FF5EH
—25。0625
1111 1110 0110 1111B
FE6FH
—55
1111 1100 1001 0000B
FC90H
64位只读存储器ROM ROM由64位二进制数字组成,共分为8个字节,字节0的内容是该产品的厂家代号28H,字节1-6的内容是48位器件序列号,字节7是ROM前56位的CRC校验码.由于64位ROM码具有唯一性,在使用时作为该器件的地址,通过读ROM命令可以将它读出来。DS18B20内部存储器有ROM,RAM的E2PROM组成,见表4-2.
表4-2 DS18B20内部存储器结构图
字节
ROM
RAM
E2PROM
0
产品代号(28H)
温度低8位
1
48位
温度高8位
2
器件序列号
TH
TH
3
TL
TL
DS18B20高速暂存器RAM RAM是由9个字节的高速暂存器和非易失电擦写E2PROM组成,其中字节0,1存储当前温度,字节3存储上下限报警温度TH和TL,字节4是配置寄存器.RAM中的E2PROM用于存储TH、TL和配置寄存器的值。数据先写入RAM,经校验后再传给E2PROM用于存储TH,TL和配置寄存器的值。通过DS18B20功能命令对RAM进行操作。表4-3列出了温度存储格式与配置寄存器控制字的格式。由表中可知,检测温度由两个字节组成,字节1的高5位S代表符号位,字节0的低4位是小数部分,中间7位是整数部分;当主机发出温度转换命令(44H)时,启动温度转换过程,转换时间最长750ms。主机通过读暂存器功能命令(BEH),将温度值读出。通过写暂存器功能命令,改变分辨率的设置。
表4—3 温度存储格式与配置寄存器控制字格式
Bit7
Bit6
Bit5
Bit4
Bit3
Bit2
Bit1
Bit0
字节0
23
22
21
20
2-1
2-2
2—3
2-4
字节1
S
S
S
S
S
26
25
24
字节4
0
R1
R0
1
1
1
1
1
ROM操作命令集 ROM操作命令见表4—4。
表4-4 ROM操作命令
指令
说明
读ROM命令(33H)
读DS18B20的序列号
搜索ROM命令(FOH)
识别总线上各器件的编码
匹配ROM命令(55H)
用于多个DS18B20的定位
跳过ROM命令(CCH)
命令执行后,存储操将针对总线上的所有器件
报警搜索ROM命令(ECH)
仅温度超限的器件对此命令做出响应
RAM操作命令集 RAM操作命令见表4-5.
表4—5 RAM操作命令
指 令
操 作 说 明
温度转换 (44H)
启动DS18B20进行温度转换
读暂存器 (BEH)
读全部暂存器内容 ,包括CRC字节
写暂存器 (4EH)
写暂存器第2、3和4个字节的数据
复制暂存器 (48EH)
把暂存器的TH、TL和配置寄存器内容复制到E2PROM中
读E2PROM(B8H)
将TH、TL和配置寄存器内容从E2PROM中回读至暂存器
DS18B20的通信协议
数字式温度传感器和模拟传感器最大的区别是将温度信号直接转化成数字信号,然后通过串行通信的方式输出。因此掌握DS18B20的通信协议是使用该器件的关键。所有的DS18B20器件要求采用严格的通信协议,以保证数据的完整性。该协议定义了几种信号类型:复位脉冲,应答脉冲时序;写“0”、写“1”时序;读“0"、读“1"时序。与DS18B20的通信,是通过操作时序完成单总线上的数据传输。发送所有的命令和数据时,都是字节的低位在前,高位在后。
a) 复位和应答脉冲时序
每个通信周期起始于微控制器发出的复位脉冲,其后紧跟DS18B20发出的应答脉冲,在写时序期间,主机向DS18B20器件写入数据,而在读时序期间,主机读入来自DS18B20的数据。在每一个时序,总线只能传输一位数据。时序图见4—5。
图4-5 复位和应答脉冲时序
b) 写时序
当主机将单总线DQ从逻辑高拉到逻辑低时,即启动一个写时序,所有的写时序必须在60~120us完成,且在每个循环之间至少需要1us的恢复时间.写0和写1时序如图所示.在写0时序期间,微控制器在整个时序中将总线拉低;而写1时序期间,微控制器将总线拉低,然后在时序起始后15us之释放总线.时序图见图4—6。
图4—6 写“0"和写“1”时序
c) 读时序
DS18B20器件仅在主机发出读时序时,才向主机传输数据。所以在主机发出读数据命令后,必须马上产生读时序,以便DS18B20能够传输数据。所有的读时序至少需要60us,且在两次独立的读时序之间,至少需要1us的恢复时间。每个读时序都由主机发起,至少拉低总线1us。在主机发起读时序之后,DS18B20器件才开始在总线上发送0或1,若DS18B20发送1,则保持总线为高电平。若发送为0,则拉低总线当发送0时,DS18B20在该时序结束后,释放总线,由上拉电阻将总线拉回至高电平状态。DS18B20发出的数据,在起始时序之后保持有效时间为15us。因而主机在读时序期间,必须释放总线。并且在时序起始后的15us之内采样总线的状态.时序图见图4-7.
图4-7 读“0"和读“1”时序
在测温的编程中,时序问题是最重要的问题,因为温度传感器是单总线器件,必须把握好各自的时序,才能更好的完成温度测量,否则就会出现错误,若出现错误,往往就是出现在时序问题的把握上,对以上做简单总结.
时序包括初始化时序、读时序、写时序.所有时序都是将主机(单片机)作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。
初始化:检测总线控制器发出的复位脉冲和DS18b20的任何通讯都要从初始化开始,初始化序列包括一个由总线控制器发出的复位脉冲和跟在其后由从机发出的存在脉冲.
存在脉冲:让主机(总线)知道从机(DS18B20)已经做好了准备。只有存在脉冲信号是从DS18B20(从机)发出的,其它信号都是由主机发出的。
主机(单片机)控制DS18B20完成温度转换要经过三个步骤:
(1)每一次读写之前都要DS18B20进行复位操作,复位要求主CPU将数据线下拉
500us,然后释放,当DS18B20受到信号后等待16~60us,后发出60~240us的存在低脉冲,主CPU收到此信号表示复位成功;
(2)复位成功后发送一条ROM指令;
(3)最后发送RAM指令,这样才能对DS18B20进行预定的操作。
2。4 显示程序模块的设计
考虑到本设计的硬件设计,选择采用动态扫描方式,要使得LED显示的比较均匀,又有足够的高度,需要设置适当的扫描频率。当扫描频率在50~100Hz左右时,能够产生足够的图形和较好的显示效果。一般可以采用间隔10ms对LED进行动态扫描一次,每一次LED的显示时间为1ms.
LED静态驱动与动态驱动的区别在于:
(1)静态驱动只需在显示数据更新时刷新,动态驱动需要以一定的频率刷新显示而不管显示数据是否更新;
(2)静态驱动一般占用较多的硬件资源,而动态驱动占用较多的软件资源;
(3)静态驱动清晰明亮,功耗较大,不易受位数限制;动态驱动因为存在单位LED的显示占空比,功耗较小,但易受位数限制(除非使用扩展芯片).
在单片机中,定时功能既可以由硬件实现,也可以通过软件定时程序实现。软件延时程序占用CPU的时间,因此,它降低了CPU的使用效率;硬件定时是利用单片机内定时器定时,启动以后定时器可于CPU并行工作,不占用CPU的时间,使CPU有较高的工作效率.
在这次的设计中,采用软件定时的方式,通过软件延时程序实现延时程序的功能.
从显示缓冲去分别取出4位LED显示器显示数据的位码和段码,送到P1口、P0口,依次显示每一位,LED显示器每一位的显示时间是1ms,延时1ms子程序是典型的软件定时程序.
参考文献
[1]睢丙东.单片机应用技术与实例[M].北京:电子工业出版社,1998.7.
[2]薛栋梁.CS—51/151/251单片机原理与应用[M].北京:中国水利水电出版社,2001.
[3] 李华. MCS—51系列单片机实用接口技术[M].北京:北京航空航天大学出版社,1993。5.
[4]李光飞.单片机课程设计实例指导[M].北京:北京航空航天大学出版社,2004.
[5]胡祝才.单片机原理及接日技术[M].北京:清华大学出版社,1996年7月第一版.
[6]康华光.模拟电子技术基础[M].北京:高等教育出版社,1988.
[7]王海军, 张秋红.数字温度传感器和控制器电路DS18B20[J].电子技术,1997年第一期.
[8]高仕勇,王照平.利用DSl8b20实现高精度温度测量[J].电子技术,2000(3),42—43.
[9]梁明理,周建平,邓仁清,等电子线路[M].北京:高等教育出版社,1993.
[10]张福学.传感器应用及其电路精选[M].北京:电子工业出版社,1992.
[11]杨兴易.温度测量仪表[J].温度工业仪表与自动化装置,1997(2).
[12]徐建军.MCS51系列单片机应用及其接口技术[M].北京:人民邮电出版社,2003.
[13]DALLAS Application Note Book. 1996—1997.
[14]DALLAS System Extentian Data Book. 1996-1997.
[15]DALLAS SEMICONDUCTOR.DS1620 Digital Thermometer.
[16]Micro—controlle r(8·bit).FUJlTSU SEMlCONDUCTORDATA BOOK.1998.
[17]Dallas Inc.Application Note[EB/OL].www.dalsemi.com.
[18]何立民.单片机应用技术选编[M].北京:北京航空航天大学出版社,2000.
[19]沙占友,王彦朋,孟志永.新型专用数字仪表原理与应用[M].北京:机械工业出版社,2006。4.
展开阅读全文