无线遥控的电子时钟带温度显示_第1页
无线遥控的电子时钟带温度显示_第2页
无线遥控的电子时钟带温度显示_第3页
无线遥控的电子时钟带温度显示_第4页
无线遥控的电子时钟带温度显示_第5页
已阅读5页,还剩35页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、九江学院学士学位论文JIU JIANG UNIVERSITY 毕 业 论 文(设 计)题 目 无线遥控的电子时钟带温度显示 院 系 电子工程学院 专 业 电子信息工程技术 姓 名 年 级 学 号 指导教师 无线遥控的电子时钟带温度显示摘要本文介绍了一款基于AT89S51单片机控制的带有温度显示的电子钟的设计,通过多功能数字钟带有温度的设计思路,详细叙述了系统硬件、软件的具体实现过程。论文重点阐述了数字钟硬件中MCU模块、温度模块、时钟模块、显示模块和相关控制模块等的模块化设计与制作;软件同样采用模块化的设计,包括中断模块、温度模块、时间调整模块设计,并采用简单流通性强的C语言编写实现。本设计实

2、现了时间的修改功能和年、月、日和星期的显示和温度显示功能。关键词:AT89S51; 单片机; 数字钟; 温度显示Abstract This paper introduced the design of digital clock based on SCM of AT89S51, the specific process of how the system hardware and software achieved were detailed description through the design of multifunction digital clock. The modular d

3、esign and production, which consisted of MCU module, voice module,clock module and the associated control module, were mainly recounted;As well as hardware designing,software design use the same method, consists suspension module,alarm clock module, voice module, time adjust module, and that use the

4、 C language to achieve because of its simple and strong negotiability. In this design the functions of time and alarm clock run and change, voice broadcast,functions of the year, month, day and week display have been achieved. And by comparing the actual clock. Key  words :AT89S51 Microcontroll

5、er; Digital Clock; the Display of Temperature目 录摘 要Abstract第一章 绪论11.1 设计研究的背景及意义11.2 电子时钟带温度显示的发展趋势11.3 设计的具体要求及任务11.3.1 设计任务11.3.2 基本要求21.3.3 需解决的问题2第2章 红外遥控电子时钟带温度显示总体设计方案22.1 任务分析与实现22.2 红外通信基本原理32.2.1 红外遥控锁硬件方案设计42.2.2 红外遥感电子时钟的总体框图42.2.3 电子时钟及带温度在液晶屏显示的功能实现52.2.4 红外遥控电子时钟和温度软件方案设计5第3章 红外遥控电子时钟及

6、温度显示电路设计方法及原理63.1 红外遥控系统83.2 单片机的原理及应用93.3 单元模块的分析103.3.1 时钟模块123.3.2 温度显示模块143.4 系统原理图19第4章 软件设计流程204.1 发射模块编码204.1.1 红外遥控编码思想214.1.2 软件程序资源分配224.2 程序设计子模块分析23III4.2.1 红外编码模块244.2.2时间和温度显示模块254.3 Keil程序设计284.3.1 概述294.3.2 C源程序的特点结构294.4.3 软件的开发过程294.4.4 软件的开发环境30第5章 综合仿真调试31总 结31参考文献31 附录IV: 主程序32第

7、一章 绪论1.1 设计研究的背景及意义单片微型计算机是随着超大规模集成电路技术的发展而诞生的,由于它具有体积小、功能强、性价比高等特点,所以广泛应用于电子仪表、家用电器、节能装置、军事装置、机器人、工业控制等诸多领域,使产品小型化、智能化,既提高了产品的功能和质量,又降低了成本,简化了设计。本文主要介绍由单片机控制的带有温度显示的电子钟的设计。随着人们生活水平的日益提高,人们对生活的要求越来越高,原有的事物已经不能满足人们的生活需求了,一些带有新功能的事物已经在慢慢的取代旧事物。就像电子钟一样,人们用电子钟不仅仅只是看时间了,人们还需要看温度了。越来越多的新功能更贴近人们的生活了,所以也越来越

8、受人们所喜欢。带有温度的的电子钟可以使人们随时都可以了解温度的变化。1.2 电子时钟带温度显示的发展趋势电子时钟带温度显示的发展趋势具有:体积小,重量轻,能耗低,价格便宜,可靠性好,抗干扰能力强,和携带方便,时间计数精确和温度测量准。1.3 设计的具体要求及任务1.3.1 设计任务就是在LCD1602显示器上显示年月日,以及环境周围的温度情况,通过遥控器来调节时间的参数,以及基本的复位操作,并且通过指示灯来观察按键是否起了作用,在按键的作用下实现所需的所有功能,避免了很多调节的麻烦,还有预留了网络控制的接口。1.3.2 基本要求本设计准备的基本要求: (1) 万年历 (2) 无线遥控(3) 可

9、每次增减一进行时间调节(4) 按键指示灯提示(5) 温度显示1.3.3 需解决的问题待解决的问题是实现红外遥控的准确,尽管市面上已经有AT203红外发射管和AT138RV3红外接收管,但是本次设计要求有单独制作的红外遥控模块。我们采用了NPN三级管、键盘矩阵和红外发光二极管及单片机STC89C52共同制作了自己的红外遥控器。最难得问题是NEC红外遥控编码协议中的调制波38KHZ不好产生。只能使用示波器进行观察、计数、调整,最终获得所需频率载波。普通的8051系列单片机都是12时钟周期/机器周期,而我们使用的作为发射控制的单片机是6时钟周期/机器周期,这样产生13us的中断延时即可。AT138R

10、V3红外接收管不好购买。最重要的问题是PROTUS元器件库里没有此种器件,况且发射的红外线是实质性的光,只好用红外发射接收一体化的装置IRLINK来进行模拟仿真。至于存储密码,我们没有外加存储芯片,而是使用单片机内部EEPROM,以此节省不必要的花销。在红外遥感电路板进行调试也遇到了挺多问题,最终通过组员的共同努力得以解决。第二章红外遥控电子时钟带温度显示总体设计方案红外遥控电子时钟和温度显示总体设计方案这章,主要介绍了该设计的任务分析与实现和红外通信原理等内容。 2.1 任务分析与实现本设计的任务是:以STC89C52单片机为处理核心,用红外接收管接收来自遥控器的红外波形,经过接收管解调后转

11、化成的脉冲送入单片机进行处理。红外波的解码是通过STC89C52单片机对红外接收头产生的信号的脉冲位置进行检测,从而判断接收到多少个0和1,最后合成为4个字节的8位代码。通过软件编码,给该遥控器编写相应的代码,然后通过解码来识别按键,以进行进一步的操作。本系统总体思路如下:根据遥控器的按键编码值对遥控锁进行编程,当系统启动时,系统进入设正常工作状态,此时,如果用户更改了初始时间,用户输入新的时间。为了使用方便,专门设置了一个按键复位。 2.2 红外通信基本原理红外遥控是单工的红外通信方式,本设计的红外遥控采用以通信方式为基础的红外遥控,而且本设计也使用了红外通信技术,故着重分析红外通信的基本原

12、理。 红外通信是利用红外技术实现两点间的近距离保密通信和信息转发。它一般由红外发射和接收系统两部分组成。发射系统对一个红外辐射源进行调制后发射红外信号,而接收系统用光学装置和红外探测器进行接收,就构成红外通信系统。 红外线是波长在750nm至1mm之间的电磁波,它的频率高于微波而低于可见光,是一种人的眼睛看不到的光线。红外通信一般采用红外波段内的近红外线,波长在0.75um至25um之间。红外数据协会(IrDA)成立后,为了保证不同厂商的红外产品能够获得最佳的通信效果,红外通信协议将红外数据通信所采用的光波波长的范围限定在850至900nm之内。 红外通信的基本原理是发送端将基带二进制信号调制

13、为一系列的脉冲串信号(载波信号),通过红外发射管发射红外信号。常用的有通过脉冲宽度来实现信号调制的脉宽调制(PWM)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(PPM)两种方法。脉时调制(PPM)是红外数据协会(IrDA)和国际电子电工委员会(IEEE)都推荐的调制方式,本设计采用脉时调制方法,即用两个脉冲串之间的时间间隔来表示二进制信息,数据比特的传送仿照不带奇偶校验的RS232通信,首先产生一个同步头,然后接着8位数据比特,如图2-1所示。图2-1 PPM调制波形图载波信号的频率 f=38KHz,载波周期T=26.32us,本设计使用单片机软件产生载波,取T=26us,脉冲宽度t1

14、=10T=260us,二进制数0的脉冲串周期t2=500us,二进制数1的脉冲串周期t3=1000us。 普通的红外遥控采用面向指令的帧结构,数据帧由同步码,地址码和指令码组成,指令码长度多为816个比特,传送多字节遥控协议时效率偏低,而增加指令码的长度不利于接收器同步,为此本设计选用一种面向字节的帧结构,采用类似于异步串行通信的帧结构,每帧由一个起始位(二进制数0)、8个数据位和2个停止位(二进制数1)构成,如图2-2所示。每帧传送1个字节的数据,帧与帧间隔大于2ms,帧结构不含地址信息,寻址问题由高层协议解决。 图2-2 数据帧结构示意图由于红外光存在反射,在全双工的方式下发送的信号也可能

15、会被本身接收,因此,红外通信应采用异步半双工方式,即通信的某一方发送和接收是交替进行的。 2.2.1 红外遥控电子时钟硬件方案设计 硬件主要分发射模块、单片机STC89C52处理模块和接收模块。其中发射模块为4×4键盘矩阵、红外线发射电路,接收模块为红外接收头、LED、LCD显示,DS1302,DS18B20等。本设计用到的红外接收头来接收、放大和解调接收到的红外波,只要把该接收头的输出引脚连接单片机的外部中断口,就可以搭建简单的红外接收电路。通过对红外接收头输出的正负脉冲进行计时和计数,通过计算就可以得到按键编码对应的二进制数组。通过该数组获得按键值。利用红外接收头来接收红外编码信

16、号,电路简单,很容易操作实现,硬件开销小。 2.2.2 红外遥感电子时钟的总体框图 基于STC89C52单片机系统红外电子时钟和温度显示框图如图2-3所示:红外发射红外接收LCD显示复位晶振STC89C52按键指示灯时间显示温度显示图2-3 红外遥感电子密码锁框图该系统硬件部分由红外发射电路、红外接收电路、键盘矩阵电路、复位电路、晶振电路、液晶显示电路、时间和温度显示电路、指示灯电路组成,系统能完成红外遥控更改时间、遥控复位的功能。4*4键盘复位晶振STC89C52电源开关红外发射指示灯红外发射电路图2-4 红外遥控发射框图根据其功能设计,基于单片机红外遥控电子时钟和温度显示控制系统硬件功能框

17、图如图2-3所示,图2-4为红外发射电路框图。红外发射部分与红外接收部分电路基本相同 ,只是接收部分比发射部分指示电路与LCD显示模块。 2.2.3 电子时钟及带温度在液晶屏显示的功能实现 本次设计是在熟练使用C52系列单片机的基础上,设计出相关的外围电路,并利用所选用的常用芯片设计出电子时钟及带温度显示,基本功能设计如下:1) 复位:显示设置的初始时间。2) 时间的调整:根据按下的按键执行相应的时间调整操作。 3) 温度显示:根据当时环境的温度,显示当前的温度值。 2.2.4 红外遥控电子时钟和温度软件方案设计开始初始化读写日期,时间和温度分离时间,日期,温度的显示值显示子程序结束日期时间的

18、修改 图2-5.流程图第3章 红外遥控电子时钟及温度显示电路设计方法及原理本章重点介绍了红外遥控系统的硬件电路设计及其方法原理,主要从红外遥控系统设计、单片机原理及应用、发射模块单片机端口资源分配等几个方面加以说明。3.1 红外遥控系统红外线的光谱位于红色光之外, 波长是0.761.5m,比红光的波长还长。红外遥控是利用红外线进行传递信息的一种控制方式,红外遥控具有抗干扰,电路简单,容易编码和解码,功耗小,成本低的优点。红外遥控几乎适用所有家电的控制。 红外遥控系统的主要部分为调制、发射和接收,如图3-1 所示: 图3-1 红外遥控系统图3-2为红外遥控系统框图,其中红外发射使用红外发光二极管

19、,调制部分采用38KHZ的脉冲调制,矩阵键盘使用4×4矩阵。接收部分通过红外接收头来接收、放大和解调接收到的红外波,该接收头内部电路包括红外监测二极管AT24C02,放大器,限副器,带通滤波器,积分电路,比较器等。然后通过内含256×8位存储空间的AT24C02进行密码存储。键盘编码和调制光电放大解调解码单片机红外遥控一体化红外接收头图3-2 红外遥控系统框图调制载波频率一般在30khz到60khz之间,大多数使用的是38kHz,占空比1/3的方波,如图3-2所示,这是由发射端所使用的 455kHz晶振决定的。在发射端要对晶振进行整数分频,分频系数一般取12,所以455kH

20、z÷1237.9 kHz38kHz。红外线通过红外发光二极管(LED)发射出去,红外发光二极管(红外发射管)内部构造与普通的发光二极管基本相同,材料和普通发光二极管不同,在红外发射管两端施加一定电压时,它发出的是红外线而不是可见光。 图3-3A 简单驱动电路   图3-3B 射击输出驱动电如图3-3A和图3-3B是LED的驱动电路,图3-3A是最简单电路, 选用元件时要注意三极管的开关速度要快,还要考虑到LED的正向电流和反向漏电流,一般流过LED的最大正向电流为100mA,电流越大,其发射的波形强度越大。 图3-3A电路有一点缺陷,当电池电压下降时,流过LED的

21、电流会降低,发射波形强度降低,遥控距离就会变小。图3-3B所示的射极输出电路可以解决这个问题,两个二极管把三级管基极电压钳位在1.2V左右,因此三级管发射极电压固定在0.6V左右,发射极电流IE基本不变,根据IEIC,所以流过LED的电流也基本不变,这样保证了当电池电压降低时还可以保证一定的遥控距离。常用的红外发光二极管(如SE303、PH303),其外形和发光二极管了LED相似,发出红外光。管压降约为1.4v,工作电流一般小于20mA。为了适应不同的电压,回路中常常串有限流电阻。发射红外线去控制相应的受控装置时,其控制的距离与发射功率成正比。为了增加红外线的控制距离,红外发光二极管工作于脉冲

22、状态,因为脉动光(调制光)的有效传送距离与脉冲的峰值电流成正比,只需尽量提高峰值Ip,就能增加红外光的发射距离。提高Ip的方法,是减小脉冲占空比,即压缩脉冲的宽度T,一些彩电红外遥控器,其红外发光管的工作脉冲占空比约为1/31/4;一些电器产品红外遥控器,占空比是1/10。减小脉冲占空比还可使小功率红外发光二极管的发射距离大大增加。常见的红外发光二极管,其功率分为小功率(1mW10mW)、中功率(20mW50mW)和大功率(50mW100mW以上)三大类。要使红外发光二极管产生调制光,只需在驱动管上加上一定功率的脉冲电压。用红外发光二极管去控制受控装置时,受控装置中均有相应的红外光电转换元件,

23、如红外接收二极管、光电三极管。使用中已有红外发射和接收配对的发光二极管。红外发射与接收的方式有两种,其一是直射式,其二是反射式。直射式指发光管和接收管相对安放在发射与受控物的两端,中间相距一定距离;反射式指发光管与接收管并列一起,平时接收管始终无光照,只在发光管发出的红外线遇到反射物时,接收管收到反射回来的红外光线才工作。双管红外发射电路,可提高发射功率,增加红外发射的作用距离。3.2 单片机的原理及应用单片机是指集成在一个芯片上的微型计算机,也就是把组成微型计算机的各种功能部件,包括CPU、随机存储器RAM、只读存储器ROM、基本输入/输出接口电路。定时器/计数器等部件都制作在一块芯片上,构

24、成一个完整的微型计算机从而实现微型计算机的基本功能。STC89C52是一种低功耗,高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活,超有效地解决方案。STC89C52是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标

25、准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器, STC89C52单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 STC89C52提供以下标准功能:8K字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,5个中断源,一个全双工串行通信口,片内具有振荡器及时钟电路。单片机最小系统如图3-4所示 图 3-43.3 单元模块的分析 3.3.1 时钟模块DS1302是DALLAS公司推出的涓流充电时钟芯片,内含一个实时时钟/日历和31字节静态RAM,可以通过串行接

26、口与单片机进行通信。实时时钟/日历电路提供秒、分、时、日、星期、月、年的信息,每个月的天数和闰年的天数可自动调整,时钟操作可通过AM/PM标志位决定采用24或12小时时间格式。DS1302与单片机之间能简单地采用同步串行的方式进行通信,仅需三根I/O线:复位(RST)、I/O数据线、串行时钟(SCLK)。时钟/RAM的读/写数据以一字节或多达31字节的字符组方式通信。DS1302工作时功耗很低,保持数据和时钟信息时,功耗小于1mW。DS1302的外部引脚功能说明如图1-4所示。 DS1302封装图X1,X232.768kHz晶振引脚GND地RST复位I/O数据输入/输出SCLK串行时钟VCC1

27、电池引脚VCC2主电源引脚 图1-4 DS1302的外部引脚功能说明图 DS1302的内部结构如图1-5所示,主要组成部分为:移位寄存器、控制逻辑、振荡器、实时时钟以及RAM。虽然数据分成两种,但是对单片机的程序而言,其实是一样的,就是对特定的地址进行读写操作。 图1-5 DS1302的内部结构图 DS1302含充电电路,可以对作为后备电源的可充电电池充电,并可选择充电使能和串入的二极管数目,以调节电池充电电压。不过对我们目前而言,最需要熟悉的是和时钟相关部分的功能,对于其它参数请参阅数据手册。2、DS1302的工作原理DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(R

28、ST)置为高电平且将8位地址和命令信息装入移位寄存器。数据在时钟(SCLK)的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输出数据。时钟脉冲的个数在单字节方式下为8+8(8位地址+8位数据),在多字节方式下为8加最多可达248的数据。 3、DS1302的寄存器和控制命令对DS1302的操作就是对其内部寄存器的操作,DS1302内部共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写

29、除充电寄存器以外的寄存器。日历、时间寄存器及控制字如表1-2所示。表1-2 日历、时钟寄存器与控制字对照表寄存器名称765432101RAM/CKA4A3A2A1A0RD/W秒寄存器1000000分寄存器1000001小时寄存器1000010日寄存器1000011月寄存器1000100星期寄存器1000101年寄存器1000110写保护寄存器1000111慢充电寄存器1001000时钟突发寄存器1011111最后一位RD/W为“0”时表示进行写操作,为“1”时表示读操作。DS1302内部寄存器列表如表1-3所示表1-3 DS14302内部主要寄存器分布表寄存器名称命令字取值范围各位内容写读76

30、543210秒寄存器80H81H00-59CH10SECSEC分寄存器82H83H00-59010MINMIN小时寄存器84H85H01-12或00-2312/240AHRHR日期寄存器86H87H01-28,29,30,310010DATEDATE月份寄存器88H89H01-1200010MMONTH周寄存器8AH8BH01-0700000DAY年份寄存器8CH8DH00-9910YEARYEAR   DS1302内部的RAM分为两类,一类是单个RAM单元,共31个,每个单元为一个8位的字节,其命令控制字为COHFDH,其中奇数为读操作,偶数为写操作;再一类为突

31、发方式下的RAM,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。我们现在已经知道了控制寄存器和RAM的逻辑地址,接着就需要知道如何通过外部接口来访问这些资源。单片机是通过简单的同步串行通讯与DS1302通讯的,每次通讯都必须由单片机发起,无论是读还是写操作,单片机都必须先向DS1302写入一个命令帧,这个帧的格式如表1所示,最高位BIT7固定为1,BIT6决定操作是针对RAM还是时钟寄存器,接着的5个BIT是RAM或时钟寄存器在DS1302的内部地址,最后一个BIT表示这次操作是读操作抑或是写操作。物理上,DS1302的通讯接口由3个口线组成,即RST,

32、SCLK,I/O。其中RST从低电平变成高电平启动一次数据传输过程,SCLK是时钟线,I/O是数据线。具体的读写时序如图1-6,但是请注意,无论是哪种同步通讯类型的串行接口,都是对时钟信号敏感的,而且一般数据写入有效是在上升沿,读出有效是在下降沿(DS1302正是如此的,但是在芯片手册里没有明确说明),如果不是特别确定,则把程序设计成这样:平时SCLK保持低电平,在时钟变动前设置数据,在时钟变动后读取数据,即数据操作总是在SCLK保持为低电平的时候,相邻的操作之间间隔有一个上升沿和一个下降沿。 图1-6 DS1302的命令字结构模块原理图 3.3.2 温度显示模块DS18B20是DALLAS公

33、司生产的单总线式数字温度传感器,它具有微型化、低功耗、高性能、搞干扰能力强、易配处理器等优点,特别适用于构成多点温度测控系统,可直接将温度转化成串行数字信号(提供9位二进制数字)给单片机处理,且在同一总线上可以挂接多个传感器芯片。它具有3引脚TO92小体积封装形式,温度测量范围为55125,可编程为9位12位A/D转换精度,测温分辨率可达0.0625,被测温度用符号扩展的16位数字量方式串行输出,其工作电源既可在远端引入,也可采用寄生电源方式产生,多个DS18B20可以并联到3根或2根线上,CPU只需一根端口线就能与多个DS18B20通信,占用微处理器的端口较少,可节省大量的引线和逻辑电路。以

34、上特点使DS18B20非常适用于远距离多点温度检测系统。1、DS18B20外形及引脚说明 图1-2 DS18B20外形及引脚图 在TO-92和SO-8的封装中引脚有所不同,具体差别请查阅PDF手册,在TO-92封装中引脚分配如下:(1)GND:地;(2)DQ:单线运用的数据输入输出引脚;(3)VDD:可选的电源引脚。2、DS18B20工作过程及时序 DS18B20内部的低温度系数振荡器是一个振荡频率随温度变化很小的振荡器,为计数器1提供一频率稳定的计数脉冲。 高温度系数振荡器是一个振荡频率对温度很敏感的振荡器,为计数器2提供一个频率随温度变化的计数脉冲。 初始时,温度寄存器被预置成-55,每当

35、计数器1从预置数开始减计数到0时,温度寄存器中寄存的温度值就增加1,这个过程重复进行,直到计数器2计数到0时便停止。 初始时,计数器1预置的是与-55相对应的一个预置值。以后计数器1每一个循环的预置数都由斜率累加器提供。为了补偿振荡器温度特性的非线性性,斜率累加器提供的预置数也随温度相应变化。计数器1的预置数也就是在给定温度处使温度寄存器寄存值增加1计数器所需要的计数个数。 DS18B20内部的比较器以四舍五入的量化方式确定温度寄存器的最低有效位。在计数器2停止计数后,比较器将计数器1中的计数剩余值转换为温度值后与0.25进行比较,若低于0.25,温度寄存器的最低位就置0;若高于0.25,最低

36、位就置1;若高于0.75时,温度寄存器的最低位就进位然后置0。这样,经过比较后所得的温度寄存器的值就是最终读取的温度值了,其最后位代表0.5,四舍五入最大量化误差为±1/2LSB,即0.25。温度寄存器中的温度值以9位数据格式表示,最高位为符号位,其余8位以二进制补码形式表示温度值。测温结束时,这9位数据转存到暂存存储器的前两个字节中,符号位占用第一字节,8位温度数据占据第二字节。 DS18B20测量温度时使用特有的温度测量技术。DS18B20内部的低温度系数振荡器能产生稳定的频率信号;同样的,高温度系数振荡器则将被测温度转换成频率信号。当计数门打开时,DS18B20进行计数,计数门

37、开通时间由高温度系数振荡器决定。芯片内部还有斜率累加器,可对频率的非线性度加以补偿。测量结果存入温度寄存器中。一般情况下的温度值应该为9位,但因符号位扩展成高8位,所以最后以16位补码形式读出。 DS18B20工作过程一般遵循以下协议:初始化ROM操作命令存储器操作命令处理数据。(1)初始化 单总线上的所有处理均从初始化序列开始。初始化序列包括总线主机发出一复位脉冲,接着由从属器件送出存在脉冲。存在脉冲让总线控制器知道DS1820 在总线上且已准备好操作。(2) ROM操作命令 一旦总线主机检测到从属器件的存在,它便可以发出器件ROM操作命令之一。所有ROM操作命令均为8位长。这些命令介绍如下

38、:Read ROM(读ROM)33h 此命令允许总线主机读DS18B20的8位产品系列编码,唯一的48位序列号,以及8位的CRC。此命令只能在总线上仅有一个DS18B20的情况下可以使用。如果总线上存在多于一个的从属器件,那么当所有从片企图同时发送时将发生数据冲突的现象(漏极开路会产生线与的结果)。 Match ROM( 符合ROM)55h 此命令后继以64位的ROM数据序列,允许总线主机对多点总线上特定的DS18B20寻址。只有与64位ROM序列严格相符的DS18B20才能对后继的存贮器操作命令作出响应。所有与64位ROM序列不符的从片将等待复位脉冲。此命令在总线上有单个或多个器件的情况下均

39、可使用。Skip ROM( 跳过ROM )CCh 在单点总线系统中,此命令通过允许总线主机不提供64位ROM编码而访问存储器操作来节省时间。如果在总线上存在多于一个的从属器件而且在Skip ROM命令之后发出读命令,那么由于多个从片同时发送数据,会在总线上发生数据冲突(漏极开路下拉会产生线与的效果)。Search ROM( 搜索ROM)F0h 当系统开始工作时,总线主机可能不知道单线总线上的器件个数或者不知道其64位ROM编码。搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。Alarm Search(告警搜索)ECh 此命令的流程与搜索ROM命令相同。但是,仅在最近一次温

40、度测量出现告警的情况下,DS18B20才对此命令作出响应。告警的条件定义为温度高于TH 或低于TL。只要DS18B20一上电,告警条件就保持在设置状态,直到另一次温度测量显示出非告警值或者改变TH或TL的设置,使得测量值再一次位于允许的范围之内。贮存在EEPROM内的触发器值用于告警。(3) 存储器操作命令Write Scratchpad(写暂存存储器)4Eh 这个命令向DS18B20的暂存器中写入数据,开始位置在地址2。接下来写入的两个字节将被存到暂存器中的地址位置2和3。可以在任何时刻发出复位命令来中止写入。Read Scratchpad(读暂存存储器)BEh 这个命令读取暂存器的内容。读

41、取将从字节0开始,一直进行下去,直到第9(字节8,CRC)字节读完。如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。Copy Scratchpad(复制暂存存储器)48h 这条命令把暂存器的内容拷贝到DS18B20的E2存储器里,即把温度报警触发字节存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又正在忙于把暂存器拷贝到E2存储器,DS18B20就会输出一个“0”,如果拷贝结束的话,DS18B20 则输出“1”。如果使用寄生电源,总线控制器必须在这条命令发出后立即起动强上拉并最少保持10ms。Convert T(温度变换)44h 这条命令启

42、动一次温度转换而无需其他数据。温度转换命令被执行,而后DS18B20保持等待状态。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于做时间转换的话,DS18B20将在总线上输出“0”,若温度转换完成,则输出“1”。如果使用寄生电源,总线控制器必须在发出这条命令后立即起动强上拉,并保持500ms。Recall E2(重新调整E2)B8h 这条命令把贮存在E2中温度触发器的值重新调至暂存存储器。这种重新调出的操作在对DS18B20上电时也自动发生,因此只要器件一上电,暂存存储器内就有了有效的数据。在这条命令发出之后,对于所发出的第一个读数据时间片,器件会输出温度转换忙的标识:“0

43、”=忙,“1”=准备就绪。Read Power Supply(读电源)B4h 对于在此命令发送至DS18B20之后所发出的第一读数据的时间片,器件都会给出其电源方式的信号:“0”=寄生电源供电,“1”=外部电源供电。(4)处理数据DS18B20的高速暂存存储器由9个字节组成,其分配如图1-3所示。当温度转换命令发布后,经转换所得的温度值以二字节补码形式存放在高速暂存存储器的第0和第1个字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后图1-3 高速暂存存储器分配图表1-1是DS18B20温度采集转化后得到的12位数据,存储在DS18B20的两个8比特的RAM中,二进制中的前面5位是

44、符号位,如果测得的温度大于或等于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。温度转换计算方法举例:例如,当DS18B20采集到+125的实际温度后,输出为07D0H,则:实际温度=07D0H0.0625=20000.0625=1250C。例如当DS18B20采集到-55的实际温度后,输出为FC90H,则应先将11位据位取反加1得370H(符号位不变,也不作为计算),则:实际温度=370H0.0625=8800.0625=550C。表1-1 DS18B20温度数据表 温度/0C二进制表示十

45、六进制表示符号位(5位)数据位(11位)+1250 0 0 0 01111101000007D0H+25.06250 0 0 0 0001100100010191H+10.1250 0 0 0 00001010001000A2H+0.50 0 0 0 0000000010000008H00 0 0 0 0000000000000000H-0.51 1 1 1 111111111000FFF8H-10.1251 1 1 1 111101011110FF5EH-25.6251 1 1 1 111001101111FE6FH-551 1 1 1 110010010000FC90H模块原理图 3. 4

46、 系统原理图第4章 软件设计流程在软件设计过程中,采用模块化设计思想,利用“化整为零”、“化零为整”的方法,分别设计各个子模块的流程图,然后按照流程图去编写对应程序,并在此过程中,分模块进行编译与调试。 4.1 发射模块编码在发射模块编码过程中,一定要严格按照NEC协议的标准进行设计。因此,在变吗之前,必须理解并掌握NEC编解码的定义。 4.1.1 红外遥控编码思想遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G 组成发射电路为例说明编码原理, 我们使用的超薄型红外线遥控器使用的就是6121 编码。当发射

47、器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征: 采用脉宽调制的串行码,以脉宽为0.565ms、间隔0.56ms、周期为1.125ms 的组合表示二进制的“0”;以脉宽为0.565ms、间隔1.685ms、周期为2.25ms 的组合表示二进制的“1”, 其波形如图4-1 所示: 图4-1 数据波形编码上述“0”和“1”组成的32 位二进制码经38kHz 的载频进行二次调制以提高发射效率,达到降低电源功耗的目的。然后再通过红外发射二极管产生红外线向空间发射。UPD6121G 产生的遥控编码是连续的32 位二进制码组,其中前16 位为用户识别码,能区别不同的电器设

48、备,防止不同机种遥控码互相干扰,如我们可以同时使用电视机、机顶盒、功放等遥控器,但它们不会产生误触发。该芯片的用户识别码固定为十六进制01H;后16位为8 位操作码(功能码)及其反码。UPD6121G 最多额128 种不同组合的编码。 遥控器在按键按下后,周期性地发出同一种32 位二进制码,周期约为108ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在4563ms 之间。如下图4-2所示:图4-2 遥控编码波形当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms编码脉冲,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8 位地

49、址码(9ms18ms),高8 位地址码(9ms18ms),8 位数据码(9ms18ms)和这8 位数据的反码(9ms18ms)组成。如果键按下超过108ms 仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。代码格式(以接收代码为准,接收代码与发射代码反向。)位定义 如图4-3图4-3 “0”码编码波形)单发代码格式 如图4-4图4-4 32位码编码波形)连发代码格式 如图4-5图4-5 重复码编码波形由于本设计中,我们需要自己设计并制作红外遥控系统,并在编码中使用NEC协议。4.1.2 软件程序资源分配在程序开始以前,首先要根据电路及设计的需要进行必要的

50、位定义变量、无符号变量、符号变量以及数据表格变量。(1)位定义变量本设计中位定义变量共有多个,包括按键、红外发射端口、红外指示灯的位定义变量以及各种功能标志位。特殊定义函数,如键盘扫描函数uchar key(),红外发射函数void send_hw(uchar c),发射引导码函数void send_star(),数据编码函数void send_char(uchar c)等。(2)无字符局部变量及全局变量根据在程序中设计到的全局变量,都会在.h头文件里予以声明,可以同时赋初值,若没有赋初值则程序自动赋0。本程序中设计到的全局变量包括时间变量、按键标志变量、地址变量、显示标志变量、红外收发标志变

51、量等。bit key_bit; /按键重复标记bit hw; /红外发射标志位sbit led=P37; /这是红外指示灯的位定义sbit out=P36; /这是红外数据发射端口的位定义#define port P2 /这是键盘按键的接口定义 Sbit IN=P34; /红外接收端口的位定义 4.2 程序设计子模块分析4.2.1 红外编码模块采用脉宽调制的串行码,设计过程中,按照NEC协议严格进行编码。其流程图如图4-7所示:发射引导码码发射地址码开始键值扫描发射键值返回图4-7 编码流程图该编码严格按照NEC协议中的规则,用0.56ms的低电平与0.56ms的高电平组合表示“0”,用0.5

52、6ms的低电平和1.68ms的高电平组合表示“1”。当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms编码脉冲,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8 位地址码(9ms18ms),高8 位地址码(9ms18ms),8 位数据码(9ms18ms)和这8 位数据的反码(9ms18ms)组成。如果键按下超过108ms 仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。代码格式(以接收代码为准,接收代码与发射代码反向)。发射部分与接收的软件功能几乎相同,不同之处就是一个发射一个是接收。发射部分的功能实际就是接收部分

53、的无线键盘。 4.2.2时间和温度显示模块 时间显示流程图DS1302的写入时序DS1302的读取时序 温度显示流程图DS18B20 初始化DS18B20 数据读写写时隙写时隙由DQ引脚的下降沿引起。18B20有写1和写0两种写时隙。所有写时隙必须持续至少60s,两个时隙之间至少有1s的恢复时间。DS18B20在DQ下降沿后15s60s间采样DQ引脚,若此时DQ为高电平,则写入一位1,若此时DQ为低电平,则写入一位0,即写入的数据要在下降沿后15us之内准备好。读时隙 读时隙由DQ下降沿引起,持续至少1s的低电平后释放总线(DQ置1)DS18B20的输出数据将在下降沿15s后输出,此时单片机可读取1位数据。读时隙结束时要将DQ置1。所有读时隙必须持续至少60s,两个时隙之间至少有1s的恢复时间。4.3 Keil程序设计汇编语言是面向硬件的低级语言,更容易被计算机识别,且汇编执行速度快,但是功能少。相对于面向对象的C语言等高级语言来说,汇编的数据存储方式、寻址方式比较复杂,而且C语言功能强大,编译也方便。所以本次红外遥控电子密码锁软件设计采用C语言编写程序。4.3.1 概述C语言是一种编译型语言,兼顾了多种

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论