基于DS12C887时钟芯片的多功能万年历设计_第1页
基于DS12C887时钟芯片的多功能万年历设计_第2页
基于DS12C887时钟芯片的多功能万年历设计_第3页
基于DS12C887时钟芯片的多功能万年历设计_第4页
基于DS12C887时钟芯片的多功能万年历设计_第5页
已阅读5页,还剩7页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、一、系统结构和工作原理1.系统结构此过程是围绕AT89S52单芯片控制器(包括液晶屏、DS12C887时钟芯片、温度传感器DS18B20、蜂鸣器、功能键盘、重置电路、正弦、电源模块等)设计的万有引力。系统结构如图1所示。图1系统方框图2.工作原理主控制器每隔一段时间(小于一秒)读取时钟芯片的内部寄存器值,并将读取的时间、周、温度等值实时显示在液晶屏上。同时,主控制器持续扫描关键电路和温度测量电路,在按下键时识别关键值,调整适当的时间、主值,然后将其记录在时钟芯片内部。温度数据将从测量电路中获得的环境温度值发送到显示电路。二、硬件设计1.主核心at 89s 52微控制器AT89S52是具有8K系

2、统可编程闪存的低功耗高性能Flash8位单芯片计算机。使用ATMEL高密度非挥发性储存技术,与标准MCS-51指令系统和80C51针脚结构相容。2.DS12C887时钟电路DS12C887与计算机常用的时钟芯片MC和DS12887针兼容,并且可直接更换。设计为DS12C887芯片的时钟电路不需要周围的电路或部件,微计算机接口更好。DS12C887芯片具有微功耗、简单的周边接口、高精度、稳定可靠的操作等优点,广泛应用于高精度实时时钟系统。DS12C887的主要功能包括:(1)配备一个锂电池,停电10年以上运行不会丢失数据。(2)秒、分、小时、日、周、日、月、年和闰年的补偿功能;(3)二进制数字或

3、BCD代码表示时间、日历和骚乱。(4)12小时或24小时系统,12小时时钟模式,包括PM和AM指令,包括夏令时功能(5)选择摩托罗拉和英特尔总线计时;(6)具有128字节RAM单元和软件接口,其中14字节是时钟和控制寄存器,114字节。字节是通用RAM,所有RAM设备数据均具有断电保护。(7)可编程方波信号输出;(8)中断信号输出(IRQ)和总线兼容性、固定中断、周期性中断、时钟更新周期、关闭中断可以被软件分别屏蔽,也可以单独测试。DS12C887时钟芯片与单片机的硬件连接如下图2所示。图2 DS12C887和单片机连接3.DS18B20温度传感器使用数字温度传感器DS18B20,只需一根数据

4、传输的数据线,就可以轻松连接到单芯片微计算机,从而消除A/D模块、降低硬件成本并简化系统电路。此外,数字温度传感器具有测量精度高、测量范围广的优点。DS18B20功能包括:(1)独特的单线接口方法:DS18B20在连接到微处理器时,只需一条线就可以实现微处理器处理器和DS18B20之间的双向通信。(2)使用过程中不需要外围部件。(3)可以通过数据线供电。电压范围为3.0至5.5V。(4)温度测量范围:-55 125。固有温度测量分辨率为0.5C。(5)通过编程实现912位数字读数。(6)用户可以设置非易失性警报的上下限值。(7)支持多点联网功能,可以将多个DS18B20并行放置在唯一的三线上,

5、以便进行多点温度测量。(8)声压特性,电源极性反转时,温度计因热而不燃烧,但不能正常工作。DS18B20芯片连接如下图3所示。图3 DS18B20连接电路4.LCD1602显示器该设计使用1602字符液晶屏显示两行,每行16个字符,不能显示汉字,嵌入了128个字符的ASCII字符集字体,只有并行接口,没有串行接口。单片机的P2端口连接到液晶屏上的数据端口,用于读取数字信号,控制端RS、R/W分别连接到单片机的P3.3和P3.1。电路连接如图4所示。图4 1602液晶屏硬件电路5.其他硬件电路蜂鸣器电路:为了报警功能,选择蜂鸣器作为报警。PNP型9015晶体管,发射极E脚连接5V,基座B脚连接1

6、0K电阻后的单芯片P1.6端口,C脚连接蜂鸣器。电路如图5所示。图5蜂鸣器电路功能键盘:本设计使用4个键盘,分别连接万年历日期曹征键、警报设置键、键增加(也用作警报打开键)、键减少到P1.0到P1.3端口。重置电路:89S52的重置输入针RST提供从指定点开始运行程序的初始化方法。MCS-52的时钟电路工作后,只要RST针脚上出现具有两个或多个机器周期的高电平,就可以执行重置操作。只要RST保持高电平,MCS-52循环就重置。电源电路:电路通过电源处理电路进行调整,以获得5V电源供电和稳定的直流电源,从而获得稳定的电压。三、软件设计此系统设计软件部分使用由基本程序、DS12C887子程序、DS

7、18B20子程序和LCD1602子程序组成的模块化结构。模块编程方法的主要优点是单个模块比完整的程序更容易编写和调试。模块可以共存,一个模块可以由多个任务徐璐在不同的条件下调用。模块程序使设计者能够分割工作,利用现有程序为设计者提供方便。1.主要程序说明和流程图主程序主要在DS12C887每个时间单元中读取数据,并实现从DS18B20传感器读取数据的功能,将其发送到LCD1602中显示的功能,检测是否按下了键,如果按下了键,则执行密钥处理子程序。首先执行DS12C887时钟芯片、DS18B20芯片、LCD1602的初始化函数,然后执行密钥扫描,读取按键、DS12C887时钟芯片、DS18B20

8、检测环境温度数据,并将其发送到液晶显示器。数据更改时,重新执行扫描写入。主程序流程图如图6所示。图6基本程序流程图2.DS12C887流程图和初始化过程进入主程序后,DS12C887首先初始化,如果串行端口有数据,最后调用函数从日历时钟芯片获取日历时钟信息,调用显示函数显示和重复日历时钟信息。本节包含DS12C887单位写入、DS12C887单位内容读取和DS12C887设置时间。DS12C887的流程图如图7所示。开始初始化DS12C887调用函数以获取时钟信息发送数据显示图7 DS12C887的流程图DS12C887的子例程:#ifndef DS12C887_H#define DS12C8

9、87_H#include#include#define uchar unsigned char#define uint unsigned intsbit FM=P1 4;s bitds _ as=P3 5;s bitds _ wr=P3 6;sbit ds _ ds=P3 7;s bitds _ cs=p2 0;s bitds _ IRQ=P3 2;Char second、minute、hour、asecond、aminute、ahour、day、week、month、year将数据写入Void ds _ write (ucharadd,uchardate)/DS12C887的函数ds _ c

10、s=0;ds _ as=1;ds _ ds=1;ds _ wr=1;P0=addds _ as=0;ds _ wr=0;P0=dateds _ wr=1;ds _ as=1;ds _ cs=1;从uchar ds _ read(uchar add)/ds 12c 887读取数据的函数Uchar ds _ dateds _ as=1;ds _ ds=1;ds _ wr=1;ds _ cs=0;P0=addds _ as=0;ds _ ds=0;P0=0xffDs _ date=P0ds _ ds=1;ds _ as=1;ds _ cs=1;Return ds _ dateVoid settime

11、() /设置时间初始值的函数可以在第一次通电后遮罩Ds_write(0x0b,0x26);/24小时模式设置,数据二进制格式Ds_write(0x0a,0x20);/打开振荡器Ds_write(0,55);Ds_write(1,0);Ds_write(2,59);Ds_write(3,0);Ds_write(4,23);Ds_write(5,0);Ds_write(6,5);Ds_write(7,1);Ds_write(8,1);Ds_write(9,9);Void setalarm() /将设置的闹铃时间写入DS12C887函数Ds_write(1,ase cond);Ds_write(3,

12、aminute);Ds_write(5,ahour);Void beep() /闹钟声音函数FM=0;delay(100);FM=1;delay(20);FM=0;delay(100);FM=1;#endif3.DS18B20流程图和初始化步骤进入主程序后,DS18B20将首先设置初始化,然后检测环境温度,调用显示函数以显示温度信息并重复。DS18B20的流程图如图8所示。开始初始化DS18B20获取环境温度检测信息发送数据显示图8 DS18B20的流程图DS18B20的子例程:#ifndef DS18B20_H#define DS18B20_H#include#include#define

13、uchar unsigned char#define uint unsigned intsbit ds18b 20=P1 6;Uchar flag2/*零下标志位元*/;Void delay 1(单位z)/ds18b 20延迟函数uint I;While(z)I=200While(i0)I-;z-;Void dsreset() /重置和初始化传输uint I;ds 18 b20=0;I=103While(i0)I-;ds 18 b20=1;I=4;While(i0)I-;Bit tmpread_bit() /读取数据的人员uint I;Bit datds 18 b20=0;I;ds 18 b2

14、0=1;I;I;Dat=ds18b20I=8;While(i0)I-;Return datUchar tmpread_byte() /单字节读取Uchar i、j、datdat=0;for(I=1);I=8;I)j=tmpread _ bit();dat=(j7)|(dat 1);Return datVoid tmpwrite(uchar dat) /单字节写入uint I;uchar j;Bit testbfor(j=1);j=8;j)Testb=dat0x01Dat=dat1If(testb) /写“1”ds 18 b20=0;I;I;ds 18 b20=1;I=8;While(i0)I-

15、;Else/写入“0”ds 18 b20=0;I=8;While(i0)I-;ds 18 b20=1;I;I;启动Void tmpchange() /DS18B20转换ds reset();delay 1(1);Tmpwrite(0xcc):Tmpwrite(0x44):Uint read_tmp() /读取温度Uchar a、b;uint t;Float TTds reset();delay 1(1);Tmpwrite(0xcc):Tmpwrite(0xbe):a=tmpread _ byte();b=tmpread _ byte();t=b;t=8;t=t | a;If(t0x0fff)flag 2=0;Elseflag 2=1;t=-t;Tt=t * 0.0625T=tt * 10 0.5return t;/*void rom

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论