77范文网 - 专业文章范例文档资料分享平台

基于单片机的时钟日历设计(3)

来源:网络收集 时间:2020-04-13 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

6 7 8 E D0 D1 使能信号 DATA I/O DATA I/O 14 15 16 D7 BLA BLK DATA I/O 背光正极 背光负极 (3)基本操作时序:

读状态:RS=L,RW=H,E=H

写指令:RS=L,RW=L,D0~D7=指令码,E=高脉冲 读数据:RS=H,RW=H,E=H

写数据:RS=H,RW=L,D0~D7=数据,E=高脉冲

(4) LCM1602与AT89C51的接口电路:如图4所示:

图4 LCM1602与单片机接口电路

LCD的D0~D7分别接单片机的的P0口,作为数据线,因为P0口内部没有上拉电阻,所以外部另外加上10K的上拉电阻;P2.0—P2.2分别接LCD的RS、RW、E三个控制管脚;RV1用来调节LCD的显示灰度;BLK、BLA为背光的阴极和阳极,接上相应电平即点亮背光灯(图中未画出)。 2、时钟芯片DS1302接口设计模块 (1)方案选择:

方案一:直接采用单片机定时计数器提供秒信号,使用程序实现年、月、日、星期、时、分、秒计数。采用此种方案虽然减少芯片的使用,节约成本,但是液晶显示不连续,实现的时间误差较大。

方案二:采用DS1302时钟芯片实现时钟,DS1302芯片是一种高性能的时钟芯片,可自动对秒、分、时、日、周、月、年以及闰年补偿的年进行计数,而且精度高,位的RAM作为数据暂存区,工作电压2.5V~5.5V范围内,功耗电小。

综合考虑制作难度及精度,故采用方案二。

7

(2)DS1302接口说明:如表2 表2 接口说明 X1,X2 GND RST I/O SCLK VCC1 VCC2 32.768kHz晶振引脚 地线 复位端 数据输入/输出端口 串行时钟端口 慢速充电引脚 电源引脚 (3)DS1302与AT89C51的接口电路:如图5所示

DS1302时钟芯片内主要包括控制逻辑电路、振荡器、移位寄存器。DS1302与单片机系统的数据通信依靠SCLK,RST,I/O,三根线即可完成。其工作过程可概括为:首先给系统RST引脚一个高电平 1,然后在SCLK时钟脉冲的作用下,通过I/O引脚向DS1302输入命令或地址字节,随后再在SCLK时钟脉冲的配合下,从I/O引脚写入或读出相应的数据字节。因此,其与单片机之间的数据传送是非常容易实现的。

图5 DS1302设计

DS1302在每次进行读、写程序前都必须初始化,先把SCLK端置 “0”,接着把RST端置“1”,最后才给予SCLK脉冲;读/写时序如图5所示。DS1302的控制字:控制字的位7必须置1,若为0则不能对DS1302进行读写数据。对于位6,若对时间进行读/写时,CK=0,对程序进行读/写时RAM=1。位1至位5指操作单元的地址。位0是读/写操作位,进行读操作时,该位为1;进行写操作时,该位为0。控制字节总是从最低位开始输入/输出的。DS1302的日历、时间寄存器内容:“CH”是时钟暂停标志位,当该位为1时,时钟振荡器停止,DS1302处于低功耗状态;当该位为0时,时钟开始运行。“WP”是写保护位,在任何的对时钟和RAM的写操作之前,“WP”必须为0。当“WP”为1时,写保护位防止对任一寄存器的写操作。

8

3、温度传感器DS18B20设计模块 (1)方案选择

方案一:采用热敏电阻或AD590,再经AD转换得到数字信号,精度较准,但价格昂贵,电路较复杂。

方案二:采用数字式温度传感器DS18B20,它能通过单片机直接读出被测温度,并且可根据实际要求通过简单的编程实现9-12位的数字值读数方式,但准确度不高。

综合考虑,采用方案二,用DS18B20温度芯片,采用单总线访问,降低成本、降低制作难度且可节省单片机宝贵的I/O口资源。 (2)DS18B20与AT89C51的接口电路:如图6所示

图6 DS18B20接口电路

该系统中采用数字式温度传感器DS18B20,具有测量精度高,电路连接简单特点,此类传感器仅需要一条数据线进行数据传输,用P2.3与DS18B20的DQ口连接,Vcc接电源,GND接地。 4、按键控制模块

按键及按键提醒接口电路如图7所示

图7 按键控制模块

SET键:按下SET键进入时间校准状态,按一下进入秒调整,两下分调整,依此类推可进行各年月日,时分秒以及星期的校准

UP键:当SET键按下时,UP进行SET选定项(如:小时)的加操作; DOWN键:当SET键按下时,DOWN进行SET选定项(如:小时)的减操作;

9

按键蜂鸣器提示(第一次按动设置键长鸣一响;后面按动设置键或上调键、下调键都是短鸣一响) (四)完整系统原理图

见附录一。

四、 软件设计

整个软件系统采用C语言编程,主要实现以下功能: 1) LCD的驱动 2) 时间数据的采集 3) 温度的采集 4) 按键的识别处理

程序从main()函数开始运行,随后对LCD、DS18B20、DS1302等器件进行初始化操作并对标志位赋初值,随后进入while(1)循环中运行按键扫描程序。等待中断产生。 (一)万年历显示程序 1、流程图 如图8

初始化 开始 读日期、时间 写日期、时间 显示子程序 开关控制子程序 日期修改子程序 时间修改子程序 显示结果 图8 万年历显示控制

返回 10

2、源程序代码 参考附录二。 (二)温度转换程序

为方便程序编写,本程序把温度转换子程序编在DS18B20_3.H文件中。头文件DS18B20_3.H,来源于网网络,十进制温度最后返回到函数ReadTemperature()中,使用时主函数用flag=ReadTemperature()就可将18b2头文件运行返回的函数结果送到变量FLAG中,用于显示。

根据单总线操作协议,首先要对DS18B20进行初始化,而初始化有严格的时序控制,如图9所示,即总线控制器(TX)发出一个复位脉冲(至少480us的低电平),然后释放总线进入接收状态,总线由5.1K上拉电阻上拉为高电平,探测到I/O引脚上的上升沿后,DS18B20等待15us~60us后,然后发出一个存在脉冲(60us~240us的低电平信号)。 1、流程图 如图9.

开始

初始化DS18B20 发跳过读系列号命令 启动温度转换 初始化DS18B20 发跳过读系列号命令 读取温度寄存器 读取温度值 结束 图9 温度转换流程图

2、源程序代码 见附录三

11

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库基于单片机的时钟日历设计(3)在线全文阅读。

基于单片机的时钟日历设计(3).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/936556.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: