基于ds12c887的多功能时钟设计.docx
- 文档编号:2980982
- 上传时间:2022-11-16
- 格式:DOCX
- 页数:21
- 大小:438.52KB
基于ds12c887的多功能时钟设计.docx
《基于ds12c887的多功能时钟设计.docx》由会员分享,可在线阅读,更多相关《基于ds12c887的多功能时钟设计.docx(21页珍藏版)》请在冰豆网上搜索。
基于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、蜂鸣器模块: 为了实现闹钟功能,选择蜂鸣器作为闹铃。 采用
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 ds12c887 多功能 时钟 设计