无线遥控的电子时钟带温度显示

更新时间:2023-03-11 08:43:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

JIU JIANG UNIVERSITY

毕 业 论 文(设 计)

题 目 无线遥控的电子时钟带温度显

院 系 电子工程学院

专 业 电子信息工程技术 姓 名 年 级 学 号 指导教师

无线遥控的电子时钟带温度显示

无线遥控的电子时钟带温度显示

摘要

本文介绍了一款基于AT89S51单片机控制的带有温度显示的电子钟的设计,通过多功能数字钟带有温度的设计思路,详细叙述了系统硬件、软件的具体实现过程。论文重点阐述了数字钟硬件中MCU模块、温度模块、时钟模块、显示模块和相关控制模块等的模块化设计与制作;软件同样采用模块化的设计,包括中断模块、温度模块、时间调整模块设计,并采用简单流通性强的C语言编写实现。本设计实现了时间的修改功能和年、月、日和星期的显示和温度显示功能。

关键词: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 design 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 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 Temperature

:AT89S51

Microcontroller; Digital Clock; the Display of

II

九江学院学士学位论文

目 录

摘 要 .................................................................................................................................. Ⅱ Abstract ................................................................................................................................. Ⅱ 第一章 绪论 ......................................................................................... 错误!未定义书签。

1.1 设计研究的背景及意义 ....................................................... 错误!未定义书签。 1.2 电子时钟带温度显示的发展趋势 ......................................................................... 1 1.3 设计的具体要求及任务 ......................................................................................... 1

1.3.1 设计任务 ..................................................................................................... 1 1.3.2 基本要求 ..................................................................................................... 2 1.3.3 需解决的问题 ............................................................................................. 2

第2章 红外遥控电子时钟带温度显示总体设计方案 ....................................................... 2

2.1 任务分析与实现 ..................................................................................................... 2 2.2 红外通信基本原理 ................................................................................................. 3

2.2.1 红外遥控锁硬件方案设计 ......................................................................... 4 2.2.2 红外遥感电子时钟的总体框图 ................................................................. 4 2.2.3 电子时钟及带温度在液晶屏显示的功能实现 ......................................... 5 2.2.4 红外遥控电子时钟和温度软件方案设计 ................................................. 5

第3章 红外遥控电子时钟及温度显示电路设计方法及原理 ........................................... 6

3.1 红外遥控系统 ......................................................................................................... 8 3.2 单片机的原理及应用 ............................................................................................. 9 3.3 单元模块的分析 ................................................................................................... 10

3.3.1 时钟模块 ................................................................................................... 12 3.3.2 温度显示模块 ........................................................................................... 14 3.4 系统原理图 ........................................................................................................... 19 第4章 软件设计流程 ......................................................................................................... 20

4.1 发射模块编码 ....................................................................................................... 20

4.1.1 红外遥控编码思想 ................................................................................... 21 4.1.2 软件程序资源分配 ................................................................................... 22 4.2 程序设计子模块分析 ........................................................................................... 23

III

无线遥控的电子时钟带温度显示

4.2.1 红外编码模块 ........................................................................................... 24 4.2.2时间和温度显示模块 ................................................................................ 25 4.3 Keil程序设计 ...................................................................................................... 28

4.3.1 概述 ........................................................................... 错误!未定义书签。 4.3.2 C源程序的特点结构 ................................................ 错误!未定义书签。 4.4.3 软件的开发过程 ....................................................... 错误!未定义书签。 4.4.4 软件的开发环境 ....................................................... 错误!未定义书签。

第5章 综合仿真调试 ......................................................................... 错误!未定义书签。 总 结 ................................................................................................................................... 31 参考文献 ............................................................................................................................... 31 附录IV: 主程序 ................................................................................................................ 32

九江学院学士学位论文

第一章 绪论

1.1 设计研究的背景及意义

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

1.2 电子时钟带温度显示的发展趋势

电子时钟带温度显示的发展趋势具有:体积小,重量轻,能耗低,价格便宜,可靠性好,抗干扰能力强,和携带方便,时间计数精确和温度测量准。

1.3 设计的具体要求及任务

1.3.1 设计任务

就是在LCD1602显示器上显示年月日,以及环境周围的温度情况,通过遥控器来调节时间的参数,以及基本的复位操作,并且通过指示灯来观察按键是否起了作用,在按键的作用下实现所需的所有功能,避免了很多调节的麻烦,还有预留了网络控制的接口。

1.3.2 基本要求

本设计准备的基本要求: (1) 万年历 (2) 无线遥控

(3) 可每次增减一进行时间调节 (4) 按键指示灯提示 (5) 温度显示

1

无线遥控的电子时钟带温度显示

1.3.3 需解决的问题

待解决的问题是实现红外遥控的准确,尽管市面上已经有AT203红外发射管和AT138RV3红外接收管,但是本次设计要求有单独制作的红外遥控模块。我们采用了NPN三级管、键盘矩阵和红外发光二极管及单片机STC89C52共同制作了自己的红外遥控器。最难得问题是NEC红外遥控编码协议中的调制波38KHZ不好产生。只能使用示波器进行观察、计数、调整,最终获得所需频率载波。普通的8051系列单片机都是12时钟周期/机器周期,而我们使用的作为发射控制的单片机是6时钟周期/机器周期,这样产生13us的中断延时即可。AT138RV3红外接收管不好购买。最重要的问题是PROTUS元器件库里没有此种器件,况且发射的红外线是实质性的光,只好用红外发射接收一体化的装置IRLINK来进行模拟仿真。至于存储密码,我们没有外加存储芯片,而是使用单片机内部EEPROM,以此节省不必要的花销。在红外遥感电路板进行调试也遇到了挺多问题,最终通过组员的共同努力得以解决。

第二章红外遥控电子时钟带温度显示总体设计方案

红外遥控电子时钟和温度显示总体设计方案这章,主要介绍了该设计的任务分析与实现和红外通信原理等内容。

2.1 任务分析与实现

本设计的任务是:以STC89C52单片机为处理核心,用红外接收管接收来自遥控器的红外波形,经过接收管解调后转化成的脉冲送入单片机进行处理。红外波的解码是通过STC89C52单片机对红外接收头产生的信号的脉冲位置进行检测,从而判断接收到多少个0和1,最后合成为4个字节的8位代码。通过软件编码,给该遥控器编写相应的代码,然后通过解码来识别按键,以进行进一步的操作。

本系统总体思路如下:根据遥控器的按键编码值对遥控锁进行编程,当系统启动时,系统进入设正常工作状态,此时,如果用户更改了初始时间,用户输入新的时间。为了使用方便,专门设置了一个按键复位。 2.2 红外通信基本原理

红外遥控是单工的红外通信方式,本设计的红外遥控采用以通信方式为基础的红外遥控,而且本设计也使用了红外通信技术,故着重分析红外通信的基本原理。

红外通信是利用红外技术实现两点间的近距离保密通信和信息转发。它一般由红外发射和接收系统两部分组成。发射系统对一个红外辐射源进行调制后发射红外信号,而接收系统用光学装置和红外探测器进行接收,就构成红外通信系统。

2

九江学院学士学位论文

红外线是波长在750nm至1mm之间的电磁波,它的频率高于微波而低于可见光,是一种人的眼睛看不到的光线。红外通信一般采用红外波段内的近红外线,波长在0.75um至25um之间。红外数据协会(IrDA)成立后,为了保证不同厂商的红外产品能够获得最佳的通信效果,红外通信协议将红外数据通信所采用的光波波长的范围限定在850至900nm之内。

红外通信的基本原理是发送端将基带二进制信号调制为一系列的脉冲串信号(载波信号),通过红外发射管发射红外信号。常用的有通过脉冲宽度来实现信号调制的脉宽调制(PWM)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(PPM)两种方法。脉时调制(PPM)是红外数据协会(IrDA)和国际电子电工委员会(IEEE)都推荐的调制方式,本设计采用脉时调制方法,即用两个脉冲串之间的时间间隔来表示二进制信息,数据比特的传送仿照不带奇偶校验的RS232通信,首先产生一个同步头,然后接着8位数据比特,如图2-1所示。

图2-1 PPM调制波形图

载波信号的频率 f=38KHz,载波周期T=26.32us,本设计使用单片机软件产生载波,取T=26us,脉冲宽度t1=10T=260us,二进制数0的脉冲串周期t2=500us,二进制数1的脉冲串周期t3=1000us。

普通的红外遥控采用面向指令的帧结构,数据帧由同步码,地址码和指令码组成,指令码长度多为8~16个比特,传送多字节遥控协议时效率偏低,而增加指令码的长度不利于接收器同步,为此本设计选用一种面向字节的帧结构,采用类似于异步串行通信的帧结构,每帧由一个起始位(二进制数0)、8个数据位和2个停止位(二进制数1)构成,如图2-2所示。每帧传送1个字节的数据,帧与帧间隔大于2ms,帧结构不含地址信息,寻址问题由高层协议解决。

3

无线遥控的电子时钟带温度显示

图2-2 数据帧结构示意图

由于红外光存在反射,在全双工的方式下发送的信号也可能会被本身接收,因此,红外通信应采用异步半双工方式,即通信的某一方发送和接收是交替进行的。 2.2.1 红外遥控电子时钟硬件方案设计

硬件主要分发射模块、单片机STC89C52处理模块和接收模块。其中发射模块为4×4键盘矩阵、红外线发射电路,接收模块为红外接收头、LED、LCD显示,DS1302,DS18B20等。

本设计用到的红外接收头来接收、放大和解调接收到的红外波,只要把该接收头的输出引脚连接单片机的外部中断口,就可以搭建简单的红外接收电路。通过对红外接收头输出的正负脉冲进行计时和计数,通过计算就可以得到按键编码对应的二进制数组。通过该数组获得按键值。利用红外接收头来接收红外编码信号,电路简单,很容易操作实现,硬件开销小。

2.2.2 红外遥感电子时钟的总体框图

基于STC89C52单片机系统红外电子时钟和温度显示框图如图2-3所示:

红外接收 按键指示灯 STC89C52 LCD显示 红外发射 时间显示 复位 晶振 温度显示

4

九江学院学士学位论文

图2-3 红外遥感电子密码锁框图

该系统硬件部分由红外发射电路、红外接收电路、键盘矩阵电路、复位电路、晶振电路、液晶显示电路、时间和温度显示电路、指示灯电路组成,系统能完成红外遥控更改时间、遥控复位的功能。

4*4键盘 电源开关 STC89C52 复位 红外发射指示灯 晶振 红外发射电路

图2-4 红外遥控发射框图

根据其功能设计,基于单片机红外遥控电子时钟和温度显示控制系统硬件功能框图如图2-3所示,图2-4为红外发射电路框图。红外发射部分与红外接收部分电路基本相同 ,只是接收部分比发射部分指示电路与LCD显示模块。

2.2.3 电子时钟及带温度在液晶屏显示的功能实现

本次设计是在熟练使用C52系列单片机的基础上,设计出相关的外围电路,并利用所选用的常用芯片设计出电子时钟及带温度显示,基本功能设计如下:

1) 复位:显示设置的初始时间。

2) 时间的调整:根据按下的按键执行相应的时间调整操作。 3) 温度显示:根据当时环境的温度,显示当前的温度值。 2.2.4 红外遥控电子时钟和温度软件方案设计

5

无线遥控的电子时钟带温度显示

读写日期,时间和温度 初始化 开始 分离时间,日期,温度的显示值

显示子程序

结束 日期时间的修改 图2-5.流程图 第3章 红外遥控电子时钟及温度显示电路设计方法及原理

本章重点介绍了红外遥控系统的硬件电路设计及其方法原理,主要从红外遥控系统设计、单片机原理及应用、发射模块单片机端口资源分配等几个方面加以说明。

3.1 红外遥控系统

红外线的光谱位于红色光之外, 波长是0.76~1.5μm,比红光的波长还长。红外遥控是利用红外线进行传递信息的一种控制方式,红外遥控具有抗干扰,电路简单,容易编码和解码,功耗小,成本低的优点。红外遥控几乎适用所有家电的控制。

红外遥控系统的主要部分为调制、发射和接收,如图3-1 所示:

6

九江学院学士学位论文

图3-1 红外遥控系统

图3-2为红外遥控系统框图,其中红外发射使用红外发光二极管,调制部分采用38KHZ的脉冲调制,矩阵键盘使用4×4矩阵。接收部分通过红外接收头来接收、放大和解调接收到的红外波,该接收头内部电路包括红外监测二极管AT24C02,放大器,限副器,带通滤波器,积分电路,比较器等。然后通过内含256×8位存储空间的AT24C02进行密码存储。

红外遥控 一体化红外接收头 键盘 编码和调制 光电放大 解调解码单片机

图3-2 红外遥控系统框图

调制载波频率一般在30khz到60khz之间,大多数使用的是38kHz,占空比1/3的方波,如图3-2所示,这是由发射端所使用的 455kHz晶振决定的。在发射端要对晶振进行整数分频,分频系数一般取12,所以455kHz÷12≈37.9 kHz≈38kHz。

红外线通过红外发光二极管(LED)发射出去,红外发光二极管(红外发射管)内部构造与普通的发光二极管基本相同,材料和普通发光二极管不同,在红外发射管两端施加一定电压时,它发出的是红外线而不是可见光。

7

无线遥控的电子时钟带温度显示

图3-3A 简单驱动电路 图3-3B 射击输出驱动电

如图3-3A和图3-3B是LED的驱动电路,图3-3A是最简单电路, 选用元件时要注意三极管的开关速度要快,还要考虑到LED的正向电流和反向漏电流,一般流过LED的最大正向电流为100mA,电流越大,其发射的波形强度越大。

图3-3A电路有一点缺陷,当电池电压下降时,流过LED的电流会降低,发射波形强度降低,遥控距离就会变小。图3-3B所示的射极输出电路可以解决这个问题,两个二极管把三级管基极电压钳位在1.2V左右,因此三级管发射极电压固定在0.6V左右,发射极电流IE基本不变,根据IE≈IC,所以流过LED的电流也基本不变,这样保证了当电池电压降低时还可以保证一定的遥控距离。

常用的红外发光二极管(如SE303、PH303),其外形和发光二极管了LED相似,发出红外光。管压降约为1.4v,工作电流一般小于20mA。为了适应不同的电压,回路中常常串有限流电阻。

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

用红外发光二极管去控制受控装置时,受控装置中均有相应的红外光电转换元件,如红外接收二极管、光电三极管。使用中已有红外发射和接收配对的发光二极管。

红外发射与接收的方式有两种,其一是直射式,其二是反射式。直射式指发光管和接收管相对安放在发射与受控物的两端,中间相距一定距离;反射式指发光管与接收管并列一起,平时接收管始终无光照,只在发光管发出的红外线遇到反射物时,接收管收

8

九江学院学士学位论文

到反射回来的红外光线才工作。双管红外发射电路,可提高发射功率,增加红外发射的作用距离。

3.2 单片机的原理及应用

单片机是指集成在一个芯片上的微型计算机,也就是把组成微型计算机的各种功能部件,包括CPU、随机存储器RAM、只读存储器ROM、基本输入/输出接口电路。定时器/计数器等部件都制作在一块芯片上,构成一个完整的微型计算机从而实现微型计算机的基本功能。

STC89C52是一种低功耗,高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活,超有效地解决方案。STC89C52是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器, STC89C52单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

STC89C52提供以下标准功能:8K字节Flash闪速存储器,256字节内部RAM,32个I/O口线,3个16位定时/计数器,5个中断源,一个全双工串行通信口,片内具有振荡器及时钟电路。单片机最小系统如图3-4所示

9

无线遥控的电子时钟带温度显示

图 3-4

3.3 单元模块的分析

3.3.1 时钟模块

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

DS1302封装图

X2

GND RST I/O X1,

32.768kHz晶振引脚

地 复位 数据输入/输出

串行时钟 电池引脚 主电源引脚

SCLK VCC1 VCC2

图1-4 DS1302的外部引脚功能说明图

DS1302的内部结构如图1-5所示,主要组成部分为:移位寄存器、控制逻辑、振荡器、实时时钟以及RAM。虽然数据分成两种,但是对单片机的程序而言,其实是一样的,就是对特定的地址进行读写操作。

10

九江学院学士学位论文

图1-5 DS1302的内部结构图

DS1302含充电电路,可以对作为后备电源的可充电电池充电,并可选择充电使能和串入的二极管数目,以调节电池充电电压。不过对我们目前而言,最需要熟悉的是和时钟相关部分的功能,对于其它参数请参阅数据手册。

2、DS1302的工作原理

DS1302工作时为了对任何数据传送进行初始化,需要将复位脚(RST)置为高电平且将8位地址和命令信息装入移位寄存器。数据在时钟(SCLK)的上升沿串行输入,前8位指定访问地址,命令字装入移位寄存器后,在之后的时钟周期,读操作时输出数据,写操作时输出数据。时钟脉冲的个数在单字节方式下为8+8(8位地址+8位数据),在多字节方式下为8加最多可达248的数据。

3、DS1302的寄存器和控制命令

对DS1302的操作就是对其内部寄存器的操作,DS1302内部共有12个寄存器,其中有7个寄存器与日历、时钟相关,存放的数据位为BCD码形式。此外,DS1302还有年份寄存器、控制寄存器、充电寄存器、时钟突发寄存器及与RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器以外的寄存器。日历、时间寄存器及控制字如表1-2所示。

表1-2 日历、时钟寄存器与控制字对照表

7 寄存器名称 秒寄存器 分寄存器 小时寄存器 日寄存器 月寄存器 星期寄存器 年寄存器 写保护寄存器

6 RAM/4 0 0 0 0 0 0 0 0 5 A3 0 0 0 0 0 0 0 0 4 A2 0 0 0 0 0 0 0 0 11

3 A1 0 0 0 0 1 1 1 1 2 A0 0 0 1 1 0 0 1 1 1 AW 0 1 0 1 0 1 0 1 0 RD/ 1 CK 1 1 1 1 1 1 1 1

无线遥控的电子时钟带温度显示

慢充电寄存器 时钟突发寄存器 1 1 0 0 0 1 1 1 0 1 0 1 0 1 最后一位RD/W为“0”时表示进行写操作,为“1”时表示读操作。 DS1302内部寄存器列表如表1-3所示 表1-3 DS14302内部主要寄存器分布表 寄存器名称 秒寄存器 0H 分寄存器 2H 小时寄存器 日期寄存器 月份寄存器 周寄存器 AH 年份寄存器 CH 8DH 8H 8BH 800-99 10YEAR YEAR 6H 89H 801-07 0 4H 87H 885H 883H 801-1200-23 01-28,29,30,31 01-12 0 或12/24 0 E 0 0 10M 0 0 0 0DAY MONTH 0 A HR 0 10DATDATE HR 命令字 写 81H 800-59 读 800-59 H 0 10MIN MIN 取值范围 各位内容 7 C6 5 4 10SEC 3210SEC DS1302内部的RAM分为两类,一类是单个RAM单元,共31个,每个单元为一个8位的字节,其命令控制字为COH~FDH,其中奇数为读操作,偶数为写操作;再一类为突发方式下的RAM,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。

我们现在已经知道了控制寄存器和RAM的逻辑地址,接着就需要知道如何通过外部接口来访问这些资源。单片机是通过简单的同步串行通讯与DS1302通讯的,每次通讯都必须由单片机发起,无论是读还是写操作,单片机都必须先向DS1302写入一个命令帧,这个帧的格式如表1所示,最高位BIT7固定为1,BIT6决定操作是针对RAM还是

12

九江学院学士学位论文

时钟寄存器,接着的5个BIT是RAM或时钟寄存器在DS1302的内部地址,最后一个BIT表示这次操作是读操作抑或是写操作。

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

图1-6 DS1302的命令字结构 模块原理图

13

无线遥控的电子时钟带温度显示

3.3.2 温度显示模块

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

1、DS18B20外形及引脚说明

图1-2 DS18B20外形及引脚图

在TO-92和SO-8的封装中引脚有所不同,具体差别请查阅PDF手册,在TO-92封装中引脚分配如下:

(1)GND:地;

(2)DQ:单线运用的数据输入输出引脚;

14

九江学院学士学位论文

(3)VDD:可选的电源引脚。 2、DS18B20工作过程及时序

DS18B20内部的低温度系数振荡器是一个振荡频率随温度变化很小的振荡器,为计数器1提供一频率稳定的计数脉冲。

高温度系数振荡器是一个振荡频率对温度很敏感的振荡器,为计数器2提供一个频率随温度变化的计数脉冲。

初始时,温度寄存器被预置成-55℃,每当计数器1从预置数开始减计数到0时,温度寄存器中寄存的温度值就增加1℃,这个过程重复进行,直到计数器2计数到0时便停止。

初始时,计数器1预置的是与-55℃相对应的一个预置值。以后计数器1每一个循环的预置数都由斜率累加器提供。为了补偿振荡器温度特性的非线性性,斜率累加器提供的预置数也随温度相应变化。计数器1的预置数也就是在给定温度处使温度寄存器寄存值增加1℃计数器所需要的计数个数。

DS18B20内部的比较器以四舍五入的量化方式确定温度寄存器的最低有效位。在计数器2停止计数后,比较器将计数器1中的计数剩余值转换为温度值后与0.25℃进行比较,若低于0.25℃,温度寄存器的最低位就置0;若高于0.25℃,最低位就置1;若高于0.75℃时,温度寄存器的最低位就进位然后置0。这样,经过比较后所得的温度寄存器的值就是最终读取的温度值了,其最后位代表0.5℃,四舍五入最大量化误差为±1/2LSB,即0.25℃。

温度寄存器中的温度值以9位数据格式表示,最高位为符号位,其余8位以二进制补码形式表示温度值。测温结束时,这9位数据转存到暂存存储器的前两个字节中,符号位占用第一字节,8位温度数据占据第二字节。

DS18B20测量温度时使用特有的温度测量技术。DS18B20内部的低温度系数振荡器能产生稳定的频率信号;同样的,高温度系数振荡器则将被测温度转换成频率信号。当计数门打开时,DS18B20进行计数,计数门开通时间由高温度系数振荡器决定。芯片内部还有斜率累加器,可对频率的非线性度加以补偿。测量结果存入温度寄存器中。一般情况下的温度值应该为9位,但因符号位扩展成高8位,所以最后以16位补码形式读出。

DS18B20工作过程一般遵循以下协议:初始化——ROM操作命令——存储器操作命令——处理数据。

(1)初始化

15

无线遥控的电子时钟带温度显示

单总线上的所有处理均从初始化序列开始。初始化序列包括总线主机发出一复位脉冲,接着由从属器件送出存在脉冲。存在脉冲让总线控制器知道DS1820 在总线上且已准备好操作。

(2) ROM操作命令

一旦总线主机检测到从属器件的存在,它便可以发出器件ROM操作命令之一。所有ROM操作命令均为8位长。这些命令介绍如下:

Read ROM(读ROM)[33h] 此命令允许总线主机读DS18B20的8位产品系列编码,唯一的48位序列号,以及8位的CRC。此命令只能在总线上仅有一个DS18B20的情况下可以使用。如果总线上存在多于一个的从属器件,那么当所有从片企图同时发送时将发生数据冲突的现象(漏极开路会产生线与的结果)。

Match ROM( 符合ROM)[55h] 此命令后继以64位的ROM数据序列,允许总线主机对多点总线上特定的DS18B20寻址。只有与64位ROM序列严格相符的DS18B20才能对后继的存贮器操作命令作出响应。所有与64位ROM序列不符的从片将等待复位脉冲。此命令在总线上有单个或多个器件的情况下均可使用。

Skip ROM( 跳过ROM )[CCh] 在单点总线系统中,此命令通过允许总线主机不提供64位ROM编码而访问存储器操作来节省时间。如果在总线上存在多于一个的从属器件而且在Skip ROM命令之后发出读命令,那么由于多个从片同时发送数据,会在总线上发生数据冲突(漏极开路下拉会产生线与的效果)。

Search ROM( 搜索ROM)[F0h] 当系统开始工作时,总线主机可能不知道单线总线上的器件个数或者不知道其64位ROM编码。搜索ROM命令允许总线控制器用排除法识别总线上的所有从机的64位编码。

Alarm Search(告警搜索)[ECh] 此命令的流程与搜索ROM命令相同。但是,仅在最近一次温度测量出现告警的情况下,DS18B20才对此命令作出响应。告警的条件定义为温度高于TH 或低于TL。只要DS18B20一上电,告警条件就保持在设置状态,直到另一次温度测量显示出非告警值或者改变TH或TL的设置,使得测量值再一次位于允许的范围之内。贮存在EEPROM内的触发器值用于告警。

(3) 存储器操作命令

Write Scratchpad(写暂存存储器)[4Eh] 这个命令向DS18B20的暂存器中写入数据,开始位置在地址2。接下来写入的两个字节将被存到暂存器中的地址位置2和3。可以在任何时刻发出复位命令来中止写入。

Read Scratchpad(读暂存存储器)[BEh] 这个命令读取暂存器的内容。读取将从字节0开始,一直进行下去,直到第9(字节8,CRC)字节读完。如果不想读完所有字节,控制器可以在任何时间发出复位命令来中止读取。

16

九江学院学士学位论文

Copy Scratchpad(复制暂存存储器)[48h] 这条命令把暂存器的内容拷贝到DS18B20的E2存储器里,即把温度报警触发字节存入非易失性存储器里。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又正在忙于把暂存器拷贝到E2存储器,DS18B20就会输出一个“0”,如果拷贝结束的话,DS18B20 则输出“1”。如果使用寄生电源,总线控制器必须在这条命令发出后立即起动强上拉并最少保持10ms。

Convert T(温度变换)[44h] 这条命令启动一次温度转换而无需其他数据。温度转换命令被执行,而后DS18B20保持等待状态。如果总线控制器在这条命令之后跟着发出读时间隙,而DS18B20又忙于做时间转换的话,DS18B20将在总线上输出“0”,若温度转换完成,则输出“1”。如果使用寄生电源,总线控制器必须在发出这条命令后立即起动强上拉,并保持500ms。

Recall E2(重新调整E2)[B8h] 这条命令把贮存在E2中温度触发器的值重新调至暂存存储器。这种重新调出的操作在对DS18B20上电时也自动发生,因此只要器件一上电,暂存存储器内就有了有效的数据。在这条命令发出之后,对于所发出的第一个读数据时间片,器件会输出温度转换忙的标识:“0”=忙,“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位是符号位,如果测得的温度大于或等于0,这5位为0,只要将测到的数值乘于0.0625即可得到实际温度;如果温度小于0,这5位为1,测到的数值需要取反加1再乘于0.0625即可得到实际温度。温度转换计算方法举例:

例如,当DS18B20采集到+125℃的实际温度后,输出为07D0H,则:

实际温度=07D0H╳0.0625=2000╳0.0625=1250C。例如当DS18B20采集到-55℃的实际温度后,输出为FC90H,则应先将11位据位取反加1得370H(符号位不变,也不作为计算),则:

实际温度=370H╳0.0625=880╳0.0625=550C。

17

无线遥控的电子时钟带温度显示

表1-1 DS18B20温度数据表 温度/C +125 +25.0625 +10.125 +0.5 0 -0.5 -10.125 -25.625 -55 模块原理图

0二进制表示 符号位(5位) 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 数据位(11位) 十六进制表示 07D0H 0191H 00A2H 0008H 0000H FFF8H FF5EH FE6FH FC90H

18

九江学院学士学位论文

3. 4 系统原理图

第4章 软件设计流程

在软件设计过程中,采用模块化设计思想,利用“化整为零”、“化零为整”的方法,分别设计各个子模块的流程图,然后按照流程图去编写对应程序,并在此过程中,分模块进行编译与调试。

4.1 发射模块编码

在发射模块编码过程中,一定要严格按照NEC协议的标准进行设计。因此,在变吗之前,必须理解并掌握NEC编解码的定义。

4.1.1 红外遥控编码思想

19

无线遥控的电子时钟带温度显示

遥控发射器专用芯片很多,根据编码格式可以分成两大类,这里我们以运用比较广泛,解码比较容易的一类来加以说明,现以日本NEC的uPD6121G 组成发射电路为例说明编码原理, 我们使用的超薄型红外线遥控器使用的就是6121 编码。当发射器按键按下后,即有遥控码发出,所按的键不同遥控编码也不同。这种遥控码具有以下特征: 采用脉宽调制的串行码,以脉宽为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 位为用户识别码,能区别不同的电器设备,防止不同机种遥控码互相干扰,如我们可以同时使用电视机、机顶盒、功放等遥控器,但它们不会产生误触发。该芯片的用户识别码固定为十六进制01H;后16位为8 位操作码(功能码)及其反码。UPD6121G 最多额128 种不同组合的编码。

遥控器在按键按下后,周期性地发出同一种32 位二进制码,周期约为108ms。一组码本身的持续时间随它包含的二进制“0”和“1”的个数不同而不同,大约在45~63ms 之间。如下图4-2所示:

图4-2 遥控编码波形

当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms编码脉冲,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8 位地址码(9ms~18ms),高8

20

九江学院学士学位论文

位地址码(9ms~18ms),8 位数据码(9ms~18ms)和这8 位数据的反码(9ms~18ms)组成。如果键按下超过108ms 仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。代码格式(以接收代码为准,接收代码与发射代码反向。

1)位定义 如图4-3

图4-3 “0”码编码波形

2)单发代码格式 如图4-4

图4-4 32位码编码波形

3)连发代码格式 如图4-5

图4-5 重复码编码波形

由于本设计中,我们需要自己设计并制作红外遥控系统,并在编码中使用NEC协议。

4.1.2 软件程序资源分配

在程序开始以前,首先要根据电路及设计的需要进行必要的位定义变量、无符号变量、符号变量以及数据表格变量。

(1)位定义变量

21

无线遥控的电子时钟带温度显示

本设计中位定义变量共有多个,包括按键、红外发射端口、红外指示灯的位定义变量以及各种功能标志位。

特殊定义函数,如键盘扫描函数uchar key(),红外发射函数void send_hw(uchar c),发射引导码函数void send_star(),数据编码函数void send_char(uchar c)等。

(2)无字符局部变量及全局变量

根据在程序中设计到的全局变量,都会在.h头文件里予以声明,可以同时赋初值,若没有赋初值则程序自动赋0。本程序中设计到的全局变量包括时间变量、按键标志变量、地址变量、显示标志变量、红外收发标志变量等。

bit key_bit; //按键重复标记 bit hw; //红外发射标志位

sbit led=P3^7; //这是红外指示灯的位定义 sbit out=P3^6; ////这是红外数据发射端口的位定义 #define port P2 //这是键盘按键的接口定义 Sbit IN=P3^4; //红外接收端口的位定义

4.2 程序设计子模块分析

4.2.1 红外编码模块

采用脉宽调制的串行码,设计过程中,按照NEC协议严格进行编码。其流程图如图4-7所示:

开始 键值扫描 发射引导码发射地址码 发射键值 返回

22

九江学院学士学位论文

图4-7 编码流程图

该编码严格按照NEC协议中的规则,用0.56ms的低电平与0.56ms的高电平组合表示“0”,用0.56ms的低电平和1.68ms的高电平组合表示“1”。当一个键按下超过36ms,振荡器使芯片激活,将发射一组108ms编码脉冲,这108ms发射代码由一个起始码(9ms),一个结果码(4.5ms),低8 位地址码(9ms~18ms),高8 位地址码(9ms~18ms),8 位数据码(9ms~18ms)和这8 位数据的反码(9ms~18ms)组成。如果键按下超过108ms 仍未松开,接下来发射的代码(连发代码)将仅由起始码(9ms)和结束码(2.5ms)组成。代码格式(以接收代码为准,接收代码与发射代码反向)。

发射部分与接收的软件功能几乎相同,不同之处就是一个发射一个是接收。发射部分的功能实际就是接收部分的无线键盘。 4.2.2时间和温度显示模块

main初始化设置:慢速充电,开始计时读取时间显示缓冲区←时分秒动态显示

时间显示流程图

DS1302的写入时序

23

无线遥控的电子时钟带温度显示

DS1302的读取时序

24

九江学院学士学位论文

开始初始化DS18B20跳过读序列号启动温度转换延时初始化DS18B20跳过读序列号读取温度值结束

温度显示流程图

DS18B20 初始化

25

无线遥控的电子时钟带温度显示

DS18B20 数据读写

写时隙

写时隙由DQ引脚的下降沿引起。18B20有写1和写0两种写时隙。所有写时隙必须持续至少60μs,两个时隙之间至少有1μs的恢复时间。DS18B20在DQ下降沿后15μs~60μs间采样DQ引脚,若此时DQ为高电平,则写入一位1,若此时DQ为低电平,则写入一位0,即写入的数据要在下降沿后15us之内准备好。

读时隙

读时隙由DQ下降沿引起,持续至少1μs的低电平后释放总线(DQ置1)DS18B20的输出数据将在下降沿15μs后输出,此时单片机可读取1位数据。读时隙结束时要将DQ置1。所有读时隙必须持续至少60μs,两个时隙之间至少有1μs的恢复时间。

26

九江学院学士学位论文

4.3 Keil程序设计

汇编语言是面向硬件的低级语言,更容易被计算机识别,且汇编执行速度快,但是功能少。相对于面向对象的C语言等高级语言来说,汇编的数据存储方式、寻址方式比较复杂,而且C语言功能强大,编译也方便。所以本次红外遥控电子密码锁软件设计采用C语言编写程序。 4.3.1 概述

C语言是一种编译型语言,兼顾了多种高级语言的特点,并且具备了汇编语言的功能书写格式比较自由,具有较高的移植性,有丰富的运算符和数据类型,极大地方便了程序设计。同时它具有丰富的功能函数,运算速度快、编译效率高,能直接对系统硬件控制。目前C语言已经成为单片机及嵌入式系统设计的主流设计语言。此次红外遥感电子密码锁软件设计采用的是C语言程序设计。 4.3.2 C源程序的特点结构

C源程序的结构特点包括:

(1)一个C语言源程序可以由一个或多个源文件组成。 (2)每个可以由一个或多个源文件组成。

(3)一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。

(4)源程序中可以有预处理命令(include命令仅为其中的一种),预处理命令通常应放在源文件或者源程序的最前面。

(5)每一个说明、每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。

(6)标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可以不再加空格来间隔。 4.3.3 软件的开发过程

软件开发大体需要经过以下几个过程:

(1) 划分功能模块,安排程序结构。根据任务要求,将程序大致划分成数据采集、数据处理、非线性补偿、报警处理、标度更换、数字控制计算、控制输出、故障诊断等各个模块,并规定各个模块的任务及其相互之间的联系。

(2)建立数学模型,正确描述出系统中输入与输出之间的数学关系。 (3)画出各程序模块的详细流程图。

(4)选择合适的语言(如汇编语言或者C语言等高级语言)编写程序。编写时应尽量采用现有的子程序,以节省程序设计时间。

27

无线遥控的电子时钟带温度显示

(5)将各个模块连接成一个完整的程序。应用系统在设计软件时,通过编辑软件编辑出的程序,必须用编译程序汇编后生成目标代码。如果源程序有语法错误则返回编辑过程,修改源文件后再继续编译,直到无语法错误为止。然后就是利用目标码进行程序调试,在运行中发现设计上的错误时再重新修改源代码,如此反复,直至成功。 4. 3. 5 软件开发环境

单片机应用系统的开发调试环境主要包括:软件开发环境和硬件调试系统。软件开发环境包括:编译器、仿真器、编程器的基本概念和使用指南及使用范围。

(1)编译器:主要指通过集成开发环境编译、连接,将用户程序转换为单片机可执行机器语言的程序。目前使用的主流编译器是美国Keil Software公司出品的Keil uVision。本次设计就是应用Keil uVision3进行程序编译。

(2)仿真器:仿真器是在单片机应用开发中常用的硬件设备之一,它的作用是在一定的开发环境下,将普通微机仿真成一个特定的单片机。但是现在多数的单片机都支持在线编程,不用仿真器也能进行调试。

(3)编程器:编程器是将数据写入相应器件的ROM中的硬件设备,一般的编程器还具有读出、校验、测试等功能。在单片机系统的开发中,编程器则是用来将已经编译好的单片机程序写入单片机的ROM中,使之形成一个独立运行的单片机系统。与仿真器类似,编程器是对特定的芯片编程。近十几年来,许多单片机内部集成了在线可编程技术(ISP),通过串口便可以对单片机进行编程。

第5章 综合仿真调试

首先通过在仿真软件上进行硬件的仿真,通过写入程序来达到软硬结合的效果,从而实现功能的仿真,之后的话就是在做好的实验班上来完成对程序的调节,进而完成分毕业设计地任务要求。 总 结

在没有做毕业设计前,我觉得毕业设计只是对所学知识的单纯总结,但是通过这次做毕业设计发现自己的看法有点太片面。毕业设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种提高。通过这次毕业设计使我明白了自己原来知识还比较欠缺。自己要学习的东西还太多,以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。通过这次课程设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。

在这次毕业设计中也使我们的同学关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量,听听不同的看法对我们更好的理解知识。在多人做项目的时候,队员的交流是非常重要的,是很关键的部分。这次的毕业设计也让我看到了团队的力量,

28

九江学院学士学位论文

我认为我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。刚开始的时候,大家就分配好了各自的任务,大家有的绘制原理图,进行仿真实验,有的积极查询相关资料,并且经常聚在一起讨论各个方案的可行性。在毕业设计中只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个工作失败。团结协作是我们成功的一项非常重要的保证。

参考文献

[1] 杨建国. 51系列单片机及C51程序设计. 北京:科学出版社,2002. [2] 李 军. 51单片机实例开发指南[M].北京:北京航空航天大学出版社,2004. [3] 叶启明. 单片机制作的新型安全密码锁[J].家庭电子,2005,(10); [4] 李明喜. 新型电子密码锁的设计[J]. 机电产品开发与创新,2004,(03); [5] 董继成. 一种新型安全的单片机密码锁[J]. 电子技术,2004,(03); [6] 张文峥. 李先亮. IrDA红外通信在导航仪中的应用. 电子技术应用,2000 [7] 邱玉春. 李文俊.单片机系统中的红外通信接口. 电子产品世界,2000 [8] 曹巧媛. 单片机原理及应用. 北京:电子工业出版社,1997:141~147 [9] 潘永雄新编. 单片机原理与应用. 西安:西安电子科技大学出版社,2003.2 [10] 王汝文,宋政湘,杨伟等. 电器智能化原理及应用. 北京:电子工业出版社,2003

29

无线遥控的电子时钟带温度显示

附录Ⅰ:主程序

void main() {

unsigned char i,status=0,num; unsigned int temp; unsigned char zs,xs; unsigned char duan[16]; init(); SPI_RST = 1; ds1302_w_byte(0x8e); ds1302_w_byte(0x00); SPI_RST = 0; SPI_RST = 1; ds1302_w_byte(0x80); ds1302_w_byte(0x00); SPI_RST = 0; SPI_RST = 1; ds1302_w_byte(0x82); ds1302_w_byte(0x00); SPI_RST = 0; SPI_RST = 1; ds1302_w_byte(0x84); ds1302_w_byte(0x00); SPI_RST = 0; while(1) { ds18b20_convert();

write_com(0x80);

for(num=0;num<16;num++) {

write_dat(table2[duan[num]]); }

30

九江学院学士学位论文

temp=get_temp();

zs=temp>>4; xs=temp&0x000f;

sec = ds1302_read(0x81);

min = ds1302_read(0x83); hour = ds1302_read(0x85); {

if(i==1) {status++;if(status==4) status=0;} else if(i==2) {

switch(status) {

case 1:

31

duan[11]=zs0/10; duan[12]=zs; duan[13]=11; duan[14]=xs*10/16; duan[6]=sec/16; duan[7]=sec; duan[5]=10; duan[3]=min/16; duan[4]=min; duan[2]=10; duan[0]=hour/16; duan[1]=hour; duan[8]=12; duan[9]=12; duan[10]=12; write_com(0x80); for(i=0;i<16;i++) write_dat(table2[duan[i]]);

i = keyscan();

if(i!=-1)

无线遥控的电子时钟带温度显示

{ hour++; if(hour>=0x0a) hour=(hour+0x10)&0xf0; } case 2: {

min++; if(min>=0x0a) min=(min+0x10)&0xf0; { sec++;

if(sec>=0x0a) sec=(sec+0x10)&0xf0;

if(sec==0x60) sec=0x00; SPI_RST = 1; ds1302_w_byte(0x80); ds1302_w_byte(sec); SPI_RST = 0;

32

if(hour==0x24) hour=0x00; SPI_RST = 1; ds1302_w_byte(0x84); ds1302_w_byte(hour); SPI_RST = 0; break;

if(min==0x60) min=0x00; SPI_RST = 1; ds1302_w_byte(0x82); ds1302_w_byte(min); SPI_RST = 0; break; }

case 3:

九江学院学士学位论文

break ; }

default: break;

}

}

} } }

33

本文来源:https://www.bwwdw.com/article/feww.html

Top