基于ds12c887的多功能时钟设计.docx

上传人:b****3 文档编号:2980982 上传时间:2022-11-16 格式:DOCX 页数:21 大小:438.52KB
下载 相关 举报
基于ds12c887的多功能时钟设计.docx_第1页
第1页 / 共21页
基于ds12c887的多功能时钟设计.docx_第2页
第2页 / 共21页
基于ds12c887的多功能时钟设计.docx_第3页
第3页 / 共21页
基于ds12c887的多功能时钟设计.docx_第4页
第4页 / 共21页
基于ds12c887的多功能时钟设计.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

基于ds12c887的多功能时钟设计.docx

《基于ds12c887的多功能时钟设计.docx》由会员分享,可在线阅读,更多相关《基于ds12c887的多功能时钟设计.docx(21页珍藏版)》请在冰豆网上搜索。

基于ds12c887的多功能时钟设计.docx

基于ds12c887的多功能时钟设计

中北大学大学生电子设计竞赛

项目总结技术报告

负责人:

学号:

学院、系:

信息与通信工程学院

专业:

光电信息工程

联系电话:

E_mail:

1677882726@

项目名称:

基于DS12C887时钟芯片的多功能时钟设计

指导教师:

 

小组成员:

赵策、高洁、黄康

 

2013年03月01日

目录

1、设计背景.........................................3

2、主要研究内容.....................................3

3、总体思路与研究方案

1、LCD1602模块.................................4

2、DS18B20模块.................................6

3、蜂鸣器.......................................9

4、独立键盘模块.................................9

5、时钟芯片DS12C887模块........................15

四、主要研究成果.....................................17

五、存在问题即以后努力方向...........................18

附件:

设计原理图

一、项目背景

在本次全国大学生电子设计大赛人员选拨之际,我小组准备设计出一个多功能高精度时钟。

众所周知,电子时钟在日常生活中十分常见,本实验原利用单片机定时器中断系统来实现时钟设计,但考虑到走时不够精确,又不具有掉电保护功能,偶尔的掉电和晶振的误差都会造成时间的错乱,并且完全用程序计时也会占用大量的系统资源,影响其他系统的正常运行,与正常的时钟相比相去甚远,所以我们改用新的方案加以实现。

本方案采用时钟芯片DS12C887与单品机实验板相连,DS12C887芯片相比一些如DS1302等表贴式芯片体积较大,内部集成了可充电锂电池,同时内部还集成了32.768KHz的标准晶振,一旦设定好时间,即使系统主电源掉电,该芯片仍然可以靠内部电源正常运行,当系统重新上电后,可继续给锂电池充电,这样可有效的保证了时间的延续性,并且精度高,运行稳定,使用方便,广泛应用于各种高精度的实时时钟系统中。

该芯片与晶振和电池集成在了一起,能自动产生世纪、年、月、日、时、分、秒等时间信息,少于31天的月份,月末日期自动调整,具有闰年补偿功能,有效期至2100年,对于一天的时间可有12小时制和24小时制两种模式,在12小时制中利用AM和PM来提示上午还是下午。

该时钟芯片内部有一个精密的温度补偿电路,用来监视Vcc的状态,如果主电源有故障,会自动切换到备用电源。

支持多路复用的单字节接口访问内部数据,该接口支持Intel和Motorola两种模式。

芯片内部储存方式也存在两种:

二进制和BCD码。

此外具有闹钟设置功能,可设置每秒一次至每星期一次。

工作电压是5V或3.3V。

选用数字温度传感器DS18B20,省却了采样/保持电路、运放、数/模转换电路以及进行长距离传输时的串/并转换电路,简化了电路,缩短了系统的工作时间,降低了系统的硬件成本。

2、主要研究内容

本系统以AT89C52单片机为主控中心,由LCD1602显示屏、DS12c887数字时钟芯片、温度传感器DS18B20、蜂鸣器、功能键盘、复位电路、晶振构成,其结构框图如下:

 

多功能时钟设计主要为实现以下功能:

时间显示:

在LCD1602上显示年、月、日、时、分、秒和星期。

温度显示:

利用温度传感器DS18B20检测系统所在环境温度,并在LCD1602上显示出来。

时间调整:

利用独立键盘可进行进行时间的调节,包括时间数值上调键、数值下调键,闹钟查看键以及闹钟设置键。

报警功能:

当温度超过某一温度时蜂鸣器会发声,闹钟时间到也会产生提示。

闹钟设定功能:

可利用按键自行设置闹钟时间,时间到蜂鸣器鸣叫以提示。

三、总体思路与研究方案

1.总体思路

程序主要实现了从DS12C887各时间单元中读出数据和DS18B20传感器中读取数据,并送到LCD1602中显示的功能,同时检测有没有按键按下,如果有键被按下,则执行按键处理子程序。

首先进行DS12C887时钟芯片、DS18B20芯片和LCD1602的初始化函数,然后进行按键扫描,不断地检测按键是否按下,读取DS12C887时钟芯片、DS18B20检测环境温度的数据,并且送到液晶显示器显示;当数据发生变化时候,重新进行扫描写入。

总体设计流程图:

 

 

2.实施方案

1、LCD1602模块:

本设计采用1602字符型LCD,带背光,可显示两行,每行16个字符,不能显示汉字,内置含128个字符的ASCII字符集字库,只有并行接口,无串行接口。

工作电压4.5V—5.5V,工作温度范围0-50摄氏度。

有8条数据线和3条控制线,与单片机引脚相连即可输入数据和指令,进行操作。

LCD的控制方式:

共有两种,一种是指令寄存器,一种是数据寄存器,有RS引脚来控制,当RS为低电平时,并且做写入操作时,可以写入命令指令寄存器。

如果RS为低且读操作,可读取地址寄存器的内容。

当RS为高时,可用于读写数据寄存器。

部分引脚功能说明:

RW:

读写控制线,RW为1时,进行读取操作,反之,进行写入动作。

E:

使能信号控制端,高电平有效。

V0:

LCD驱动电源,V0为液晶显示器对比度调整端,接正电源时对比度较弱,接地时对比度强烈。

D0-D7:

数据输入输出的引脚。

和单片机P0口相连。

具体电路原理图如下:

LCD的写时序图

2、部分程序代码如下:

voidmain()

{

e=0;

rw=0;

write_com(0x01);

write_com(0x38);

write_com(0x0c);

write_com(0x06);

write_com(0x80);

voidwrite_date(uintdate)

{

rs=1;

e=0;

P0=date;

delay(3);

e=1;

delay(5);

e=0;

delay(5);

}

voidwrite_com(ucharcom)//写指令

{

rs=0;

e=0;

P0=com;

delay(5);

e=1;

delay(5);

e=0;

}

2、DS18B20模块:

温度传感器是传感器中最常见的一种,随着现代科学技术的提高,微型化、集成化、数字化程度越来越高,美国DASLLS半导体公司推出的数字化温度传感器DS18B20采用单总线协议,即与单片机接口仅需要占用一个I\O口,无需任何外部元件,全部传感元件及转换电路都集成在其内部,直接将温度转化为数字信号,以数字码方式串行输出,从而大大简化了传感器与单片机的接口。

具有微型化、低消耗、高性能、抗干扰性强等优点。

该传感器的工作特性:

独特的单线接口方式仅需要一个端口引脚进行通信。

工作电压:

3.0—5.5V。

寄生供电下可由数据线供电。

支持多点组网功能,多个传感器可同时连接到一条口线上即可与微处理器实现双向通信。

温度范围:

-55—+125摄氏度,在-10—+85摄氏度时精度为正负0.5摄氏度。

可编程分辨率为9—12位,对应的分辨温度分别为0.5,0.25,0.125,0.0625。

可实现精确测温。

转换速度:

在9位分辨率时,最多在93.75ms内把温度信号转化成数字信号,12位分辨率时最快在750ms内转换完成。

负压特性:

电源极性反接时,芯片不会因发热而烧毁,但不能正常工作。

仅对一个温度传感器进行操作的工作原理:

高速暂存器RAM由3个字节存储器组成:

寄存器内容

字节地址

温度值低位

0

温度值高位

1

高温限制(TH)

2

低温限制(TL)

3

配置寄存器

4

保留

5-7

CRC校验值

8

 

1、44H—温度转换:

启动温度转换,结果存入内部九个字节的RAM中。

2、BEH—读暂存器,读出内部RAM中九字节的温度数据。

3、高速暂存器RAM由九个字节的存储器组成,第0至1位是包含测得的温度信息,2、3是复制的温度的上下限,是易失的,每次上电复位时被刷新。

配置寄存器,它的内容用于确定温度值的数字转换分辨率。

DS18B20在出厂时默认为12位,其最高位是符号位,即温度值共11位,单片机每次读取温度时一次会读取2个字节共16位,转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1,2字节。

单片机可通过单线接口读到该数据,读取时低位在前,高位在后,再乘以0.0625变为所测得的实际温度。

另外温度还有正负,当前五位全为1时,温度为负值,所测得的数据需要取反加一之后再乘以0.0625,即为实际温度值。

DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较,若T>TH或T

因此,可用多只DS18B20同时测量温度并进行告警搜索。

部分程序代码如下:

uintdcwdsj()//读出转化后的温度数据

{

ucharthemh=0;

uchartheml=0;

uinttem=0;

init1();

if(baizhi==0)//检测传感器是否存在

{

write_date1(0xcc);//跳过ROM匹配

write_date1(0x44);//发出温度转换命令

delay1(100);//*

}

init1();

if(baizhi==0)

{

write_date1(0xcc);//跳过ROM匹配

write_date1(0xbe);//发出温度转换命令

theml=read_date();//读出温度放在theml和themh中

themh=read_date();

}

tem=(themh*256+theml)*25;

tem=tem>>2;

returntem;

}

voidwrite_wendu(ucharadd,uintdate)//显示时分秒

{

ucharshi,ge,baifenwei,shifenwei;

baifenwei=date%1000%100%10;

shifenwei=date%1000%100/10;

shi=date/1000;

ge=date%1000/100;

write_com(0x80+0x40+add);

write_date(0x30+shi);//先写小时,然后光标自动后移一位

delay1(100);

write_date(0x30+ge);

delay1(100);

write_com(0x80+0x40+12);

write_date(0x2E);

write_date(0x30+shifenwei);

delay1(100);

write_date(0x30+baifenwei);

delay1(100);

write_com(0x80+0x40+15);

write_date(0xdf);

}

 

3、蜂鸣器模块:

为了实现闹钟功能,选择蜂鸣器作为闹铃。

采用

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1