基于51单片机的多功能时钟

  • 格式:doc
  • 大小:748.50 KB
  • 文档页数:38

可以实现时钟日期温度实时显示,带源程序基于DS1307的多功能时钟系统摘要:以AT89S52单片机为控制核心,通过实时时钟芯片DS1307和数字温度传感器DS18B20构成了一个多功能的数字时钟系统。

本报告详细介绍了整个系统的硬件组成结构、工作原理和系统的软件程序设计。

系统采用液晶LCD128*64作为显示器,具有实时时间与日历显示、环境温度显示、按键调时、闹铃定时等功能。

软件程序采用均采用C语言编写,便于移植与升级。

关键词:实时时钟日历单片机DS1307 DS18B20 LCD128*64引言目前家用的数字电子钟,多数只能显示小时、分钟等信息,功能单一,而且大都采用LED数码管作为显示器件,功耗大,不能令消费者满意。

为此,我开发了一款多功的数字式电子钟,它可以显示年、月、日、小时、分钟等时间信息,同时可以显示环境的温度信息。

还具有按键调时、设定闹铃等功能,而且通过一块3.18V的备用电池,在单片机断电后让时钟芯片DS1307独立工作,因此每次给单片机上电即可显示当前时间,无需调整。

时钟采用LCD作为显示器,界面友好,功耗低。

一、系统的硬件构成系统以AT89S52单片机作为核心控制器件,外围主要有实时时钟芯片DS1307、温度传感器DS18B20等,均为串行通信器件,使得系统线路简单可靠性高。

系统结构框图1所示。

图1 系统结构框图1.1单片机主控模块系统采用AT89S52单片机作为控制核心。

AT89S52单片机与MCS_51系列单片机产品兼容,采用了Flash存储器结构,可以在线下载程序,易于日后的升级。

它主要负责各个模块的初始化工作;设置定时器、寄存器的初值;读取并处理时间、温度等信息;处理按键响应;控制液晶实时显示等。

硬件电路连接如图2所示。

系统采用12M晶振;P2.0,P2.1,P2.2口为单片机与液晶显示器连接的控制和通信的数据端口;C_RESET和R_RESET组成系统上电复位电路;P2.6和P2.7为单片机与时钟芯片DS1307通信的端口;P2.3为闹铃的控制端口;P1.6为单片机与温度传感器DS18B20的通信端口;P1.0,P1.1为按键模块的接口。

图2 单片机主控电路1.2实时时钟日历模块系统采用DS1307实时时钟芯片。

电路连接如图3。

Y2为32.768kHz的晶振,为时钟芯片提供计时脉冲;Vbat 为DS1307的备用电源,以便在没有主电源的情况下能够保存时间信息和一些重I2总线的上拉电阻。

要的数据;两个电阻为C⑴DS1307是美国DALLAS公司推出的一种高性能、低功耗的实时时钟芯片,I2总线接口的时钟日历芯片,采用两线与CPU进行通信,片内含有8它是一款C个特殊功能寄存器和56bit的SRAM。

主要技术性能指标:具有秒、分、时、日、星期、月、年的计数功能,并且具有12小时制和24小时制的计数模式,可自动调整每月的天数,具有闰年调整的功能,具有自动掉电保护和上电复位的功能。

⑴DS1307的引脚功能DS1307的引脚图如图3所示,采用8引脚双列直插dip封装,芯片内部结构图如图4所示。

各个引脚功能如下:Vcc:主电源;Vbat:备份电源。

当Vbat>Vcc+0.2V时,由Vcc2向DS1307供电,当Vbat< Vcc时,由Vcc向DS1307供电;GND:逻辑地;SCL:CI2总线时钟线;SDA:CI2总线数据线;SQW/OUT:图3 DS1307的引脚分配图4 DS1307的内部结构⑵DS1307的内部寄存器DS1302有关日历、时间的寄存器共有12个,其中有7个寄存器(读时81h~8Dh,写时80h~8Ch),存放的数据格式为BCD码形式,如图5所示。

小时寄存器(85h、84h)的位7用于定义DS1302是运行于12小时模式还是AM/,24小时模式。

当为高时,选择12小时模式。

在12小时模式时,位5是PM当为1时,表示PM。

在24小时模式时,位5是第二个10小时位。

秒寄存器(81h、80h)的位7定义为时钟暂停标志(CH)。

当该位置为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位置为0时,时钟开始运行。

控制寄存器(8Fh、8Eh)的位7是写保护位(WP),其它7位均置为0。

在任何的对时钟和RAM的写操作之前,WP位必须为0。

当WP位为1时,写保护位防止对任一寄存器的写操作。

图5 DS1307的时间寄存器⑶DS1307 硬件电路设计DS1307采用与CPU进行通信,电路连接简单。

DS1307的内部振荡电路结构如图6所示,在芯片内部连接有两个电容,目的是为了使晶振起振,所以在电路设计中就不需要另外再加电容了,电路图如图7所示,其中晶振采用的是32.768kHz,经内部电路分频后可获得一个标准的秒脉冲信号;电阻R_SCL、R_SDA 是CI2总线的上拉电阻。

图6 DS1307的内部振荡电路图7 DS1307的电路连接1.3温度传感器模块系统采用DS18B20作为温度传感器。

它是美国DSLLAS公司推出的单总线数字温度传感器,它具有微型化、低功耗、高性能、抗干扰能力强、易匹配处理器等优点。

处理器与DS18B20通信只需要一根数据线即可,同时该数据线还可以向挂接的DS18B20供电。

它可以直接将温度转化成串行数字信号处理,与模拟温度传感器相比,DS18B20省去了信号调理、A/D转换等前向通道处理电路,从而使得系统线路简单,成本低廉。

它的主要技术性能指标:(1) 电压范围:+3.0~+5.5V(可用数据线供电)(2) 测温范围:-55℃~+125℃(3) 通过编程可实现9~12位的数字读数方式,测温分辨率可达0.0625℃(4) 可自设定非易失性的报警上下限值。

电路连接如图8所示。

其中DQ为数据输入/输出端口,R_Up 为数据线的上拉电阻,确保数据传输的可靠性。

图8 温度传感器电路1.4闹铃模块系统采用蜂鸣器作为闹铃输出。

电路连接如图9所示。

电路中采用PNP管9012来控制蜂鸣器的开关,由图可以看出当Bell引脚为高电平时,PNP管截止,蜂鸣器不工作;当Bell引脚为低电平时,PNP管导通,蜂鸣器工作。

其中R2为限流电阻。

图9 闹铃电路1.5键盘模块键盘模块设置了两个按键:KEY1,KEY2。

其中用KEY1长按来控制菜单的主模式,短按为使设定值上升;用KEY2短按来使设定值减小。

电路连接如图2所示。

2个上拉电阻可以保证在没有按键输入时,进入单片机四个I/O口的按键状态均为高电平,防止干扰产生;当有按键按下时,相应的口线被拉低。

软件上采用查询的方式,用定时器定时对按键状态进行扫描,确保系统的实时性。

1.6液晶显示模块系统中采用LCD128*64作为显示器件输出信息。

与传统的LED数码管显示器件相比,液晶显示模块具有体积小、功耗低、显示内容丰富等优点,而且不需要外加驱动电路,现在液晶显示模块已经是单片机应用设计中最常用的显示器件了。

LCD128*64可以显示4行8个汉字,并行工作时具有8位数据总线D0-D7,和RS、R/W、E三个控制端口,串行工作时只有CS,SID,CLK三个通信口,本次设计就是采用串行通信,可以节省单片机IO口的使用,工作电压为5V,并且带有字符对比度调节和背光设置。

管脚功能简介:引脚号引脚名称方向功能说明1 VSS 模块的电源地2 VDD 模块的电源正端3 V0 LCD 驱动电压输入端4 RS(CS) H/L 并行的指令/数据选择信号;串行的片选信号5 R/W(SID) H/L 并行的读写选择信号;串行的数据口6 E(CLK) H/L 并行的使能信号;串行的同步时钟7 DB0 H/L 数据08 DB1 H/L 数据19 DB2 H/L 数据210 DB3 H/L 数据311 DB4 H/L 数据412 DB5 H/L 数据513 DB6 H/L 数据614 DB7 H/L 数据715 PSB H/L 并/串行接口选择:H-并行;L-串行16 NC 空脚17 /RET H/L 复位低电平有效18 NC 空脚19 LED_A - 背光源正极(LED+5V)20 LED_K - 背光源负极(LED-OV)电路连接如图10。

图10 液晶显示电路总的硬件电路如下图:二、系统的软件设计系统的软件设计可以分为几个部分,首先是各个模块的底层驱动程序编写,而后是系统联机调试,编写上层系统程序。

本系统软件程序主要包括:液晶LCD128*64的底层驱动模块、时钟芯片DS1307的底层驱动模块、传感器DS18B20的底层驱动模块、键盘扫描模块,闹钟模块等。

系统的软件流程图如图11。

图11 系统软件流程图(1)DS1307 软件程序设计DS1307 是基于C I 2总线接口的时钟芯片,软件上完全与C I 2总线完全兼容。

a) C I 2总线的驱动程序C I 2总线在传送数据时,必须确认传送数据的开始和结束。

而且每传送一个字节,要发送一个应答位(0);在一个周期发送结束后,要发送一个应答位(1)。

具体如图12所示,三种信号的格式如下:启动信号:当时钟总线SCL 为高电平时,数据线SDA 由高电平跳变为低电平定义为“启动”信号。

停止信号:当时钟总线SCL为高电平时,数据线SDA由低电平跳变为高电平定义为“结束”信号。

应答位:当主器件发送完一字节的数据后,后面必须跟一个应答位(ACK)。

在时钟高电平期间,如果数据线SDA为低电平代表一个字节的传送结束,并准备下一个要传送的字节;在时钟高电平期间,如果数据线SDA为低电平代表一个传送周期结束,准备下一个传送周期。

I2总线的数据传送格式图12Cb) DS1307的读写控制DS1307的写控制图13是DS1307的写控制格式,首先发送启动信号,然后发送的第一个字节是用来控制芯片的地址以及读写控制为(D0:0 –写),之后是应答位,然后发送其它字节数据,在最后发送一个结束标志的应答位,紧跟着是停止信号。

图13CPU写数据模式DS1307的读控制图14是DS1307的读控制格式,首先发送启动信号,然后发送的第一个字节是用来控制芯片的地址以及读写控制为(D0:1 –读),之后是应答位,然后发送其它字节数据,在最后发送一个结束标志的应答位,紧跟着是停止信号。

图14CPU读数据模式(2)DS18B20 是One-wire总线接口的芯片,软件上对时序的要求特别高。

根据DS18B20的通讯协议,主机控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行复位,复位成功后发送一条ROM 指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。

复位要求主CPU将数据线下拉500微秒,然后释放,DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。