1、基于ds12c887的多功能时钟设计中北大学大学生电子设计竞赛项目总结技术报告负责人:学 号:学 院、系: 信息与通信工程学院专 业:光电信息工程 联系电话:Email:1677882726项目名称:基于DS12C887时钟芯片的多功能时钟设计指导教师: 小组成员:赵策、高洁、黄康 2013年 03 月 01 日目录1、设计背景.32、主要研究内容.33、总体思路与研究方案1、LCD1602模块.42、DS18B20模块.63、蜂鸣器.94、独立键盘模块.95、时钟芯片DS12C887模块.15四、主要研究成果.17五、存在问题即以后努力方向.18附件:设计原理图一、项目背景 在本次全国大学生
2、电子设计大赛人员选拨之际,我小组准备设计出一个多功能高精度时钟。众所周知,电子时钟在日常生活中十分常见,本实验原利用单片机定时器中断系统来实现时钟设计,但考虑到走时不够精确,又不具有掉电保护功能,偶尔的掉电和晶振的误差都会造成时间的错乱,并且完全用程序计时也会占用大量的系统资源,影响其他系统的正常运行,与正常的时钟相比相去甚远,所以我们改用新的方案加以实现。本方案采用时钟芯片DS12C887与单品机实验板相连,DS12C887芯片相比一些如DS1302等表贴式芯片体积较大,内部集成了可充电锂电池,同时内部还集成了32.768KHz的标准晶振,一旦设定好时间,即使系统主电源掉电,该芯片仍然可以靠
3、内部电源正常运行,当系统重新上电后,可继续给锂电池充电,这样可有效的保证了时间的延续性,并且精度高,运行稳定,使用方便,广泛应用于各种高精度的实时时钟系统中。该芯片与晶振和电池集成在了一起,能自动产生世纪、年、月、日、时、分、秒等时间信息,少于31天的月份,月末日期自动调整,具有闰年补偿功能,有效期至2100年,对于一天的时间可有12小时制和24小时制两种模式,在12小时制中利用AM和PM来提示上午还是下午。该时钟芯片内部有一个精密的温度补偿电路,用来监视Vcc的状态,如果主电源有故障,会自动切换到备用电源。支持多路复用的单字节接口访问内部数据,该接口支持Intel和Motorola两种模式。
4、芯片内部储存方式也存在两种:二进制和BCD码。此外具有闹钟设置功能,可设置每秒一次至每星期一次。工作电压是5V或3.3V。选用数字温度传感器DS18B20,省却了采样/保持电路、运放、数/模转换电路以及进行长距离传输时的串/并转换电路,简化了电路,缩短了系统的工作时间,降低了系统的硬件成本。2、主要研究内容本系统以AT89C52单片机为主控中心,由LCD1602显示屏、DS12c887数字时钟芯片、温度传感器DS18B20、蜂鸣器、功能键盘、复位电路、晶振构成,其结构框图如下:多功能时钟设计主要为实现以下功能:时间显示:在LCD1602上显示年、月、日、时、分、秒和星期。温度显示:利用温度传感
5、器DS18B20检测系统所在环境温度,并在LCD1602上显示出来。时间调整:利用独立键盘可进行进行时间的调节,包括时间数值上调键、数值下调键,闹钟查看键以及闹钟设置键。报警功能:当温度超过某一温度时蜂鸣器会发声,闹钟时间到也会产生提示。闹钟设定功能:可利用按键自行设置闹钟时间,时间到蜂鸣器鸣叫以提示。三、总体思路与研究方案1. 总体思路程序主要实现了从DS12C887各时间单元中读出数据和DS18B20传感器中读取数据,并送到LCD1602中显示的功能,同时检测有没有按键按下,如果有键被按下,则执行按键处理子程序。首先进行DS12C887时钟芯片、DS18B20芯片和LCD1602的初始化函
6、数,然后进行按键扫描,不断地检测按键是否按下,读取DS12C887时钟芯片、DS18B20检测环境温度的数据,并且送到液晶显示器显示;当数据发生变化时候,重新进行扫描写入。总体设计流程图:2. 实施方案1、LCD1602模块:本设计采用1602字符型LCD,带背光,可显示两行,每行16个字符,不能显示汉字,内置含128个字符的ASCII字符集字库,只有并行接口,无串行接口。工作电压4.5V5.5V,工作温度范围0-50摄氏度。有8条数据线和3条控制线,与单片机引脚相连即可输入数据和指令,进行操作。的控制方式:共有两种,一种是指令寄存器,一种是数据寄存器,有引脚来控制,当为低电平时,并且做写入操
7、作时,可以写入命令指令寄存器。如果为低且读操作,可读取地址寄存器的内容。当为高时,可用于读写数据寄存器。部分引脚功能说明:读写控制线,为时,进行读取操作,反之,进行写入动作。:使能信号控制端,高电平有效。:驱动电源,为液晶显示器对比度调整端,接正电源时对比度较弱,接地时对比度强烈。:数据输入输出的引脚。和单片机口相连。具体电路原理图如下:LCD的写时序图2、部分程序代码如下:void main() e=0; rw=0; write_com(0x01); write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x80);void
8、 write_date(uint date) rs=1; e=0; P0=date; delay(3); e=1; delay(5); e=0; delay(5); void write_com(uchar com) /写指令 rs=0; e=0; P0=com; delay(5); e=1; delay(5); e=0; 2、DS18B20模块:温度传感器是传感器中最常见的一种,随着现代科学技术的提高,微型化、集成化、数字化程度越来越高,美国DASLLS半导体公司推出的数字化温度传感器DS18B20采用单总线协议,即与单片机接口仅需要占用一个IO口,无需任何外部元件,全部传感元件及转换电路都
9、集成在其内部,直接将温度转化为数字信号,以数字码方式串行输出,从而大大简化了传感器与单片机的接口。具有微型化、低消耗、高性能、抗干扰性强等优点。该传感器的工作特性:独特的单线接口方式仅需要一个端口引脚进行通信。工作电压:3.05.5V。寄生供电下可由数据线供电。支持多点组网功能,多个传感器可同时连接到一条口线上即可与微处理器实现双向通信。温度范围:-55+125摄氏度,在-10+85摄氏度时精度为正负0.5摄氏度。可编程分辨率为912位,对应的分辨温度分别为0.5,0.25,0.125,0.0625。可实现精确测温。转换速度:在9位分辨率时,最多在93.75ms内把温度信号转化成数字信号,12
10、位分辨率时最快在750ms内转换完成。负压特性:电源极性反接时,芯片不会因发热而烧毁,但不能正常工作。仅对一个温度传感器进行操作的工作原理:高速暂存器RAM由3个字节存储器组成: 寄存器内容字节地址温度值低位0温度值高位1高温限制(TH)2低温限制(TL)3配置寄存器4保留5-7CRC校验值81、44H温度转换:启动温度转换,结果存入内部九个字节的RAM中。2、BEH读暂存器,读出内部RAM中九字节的温度数据。3、高速暂存器RAM由九个字节的存储器组成,第0至1位是包含测得的温度信息,2、3是复制的温度的上下限,是易失的,每次上电复位时被刷新。配置寄存器,它的内容用于确定温度值的数字转换分辨率
11、。DS18B20在出厂时默认为12位,其最高位是符号位,即温度值共11位,单片机每次读取温度时一次会读取2个字节共16位,转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1,2字节。单片机可通过单线接口读到该数据,读取时低位在前,高位在后,再乘以0.0625变为所测得的实际温度。另外温度还有正负,当前五位全为1时,温度为负值,所测得的数据需要取反加一之后再乘以0.0625,即为实际温度值。DS18B20完成温度转换后,就把测得的温度值与RAM中的TH、TL字节内容作比较,若TTH或T2; return tem;void write_wendu(uchar add,
12、uint date) /显示时分秒 uchar shi,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