基于单片机AT89C51-----实时时钟设计论文.doc

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于单片机AT89C51 ----实时时钟设计 学号 姓名 一.系统分析 本电路是由AT89C51单片机为控制核心,具有在线编程功能,低功耗,能在4.5V超低压工作;显示部分用LCD1602实现,能够同时显示16x02即32个字符;闹钟部分由蜂鸣器构成,蜂鸣器是一种一体化结构的电子讯响器;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,可以对年、月、日、星期、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V~5.5V.采用三线接口与单片机进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个31×8的用于临时性存放数据的RAM 寄存器。可产生年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能,本设计中为DS1302增加了备用电池,当主电源掉电时,备用电池自动为其供电;温度的采集由DS18B20构成;当闹铃时间到时,通过蜂鸣器播放闹铃铃声。 二.系统功能框图的设计 三.系统硬件设计 本设计采用的元器件如下: 单片机AT89C51 LM016L DS1302 晶振CRYSTAL DS18B20 24C02C 电容CAP 电解电容CAP-ELEC 电阻RES 排阻RESPACK-8 按键BUTTON 四.系统软件设计(流程图和软件设计) 主程序流程图 时间调整程序流程图 定时闹铃程序流程图 C程序: #include reg52.h #include intrins.h #include 24c02.h #define uchar unsigned char #define uint unsigned int //闹钟显示缓冲区 code uchar alarm_one[]= Hello,L.W Hou; code uchar alarm_two[]=GOOD MORNING HLW; code uchar w1[]={0x01,0x03,0x1D,0x11,0x1D,0x03,0x01,0x00}; code uint cyc[]={1800,1600,1440,1351,1200,1079,960};//音阶1-7的半周期数 code uchar tone[]={13,15,16,16,15,16,13,12,12,13,15,16,16,15,16,13,13, 13,15,16, 16,15,16,13,12,12,15,13,12,13,12,11,12,6,6,12,15,13,12,6,6,15,13,12,13,12,11, 12,6,5,6,0xff};// 乐曲《康定情歌》的简谱表 code uchar time[]={8,8,8,4,4,8,8,12,4,8,8,8,4,4,8,16,8,8,8,8,4,4,8,8,12,4,8,8,4, 4,4,4,8,24,8,24,8,24,8,16,8,8,8,4,4,4,4,8,16,8,32};// 节拍表 uchar H0,L0,cnt; uchar code tabe1[]=20 - - ; //液晶一直显示的字符 uchar code tabe2[]= : : ; uchar code tabe3[]=Alarm set:; uchar miao,fen,shi,nian,yue,ri,week,wendu_shi,wendu_ge,wendu_shu,variate,alarm_shi,alarm_fen,alarm_miao; uchar flag=1,count=0,flag_up=0,flag_down=0,flag_alarm=0,alarm_on,alarm_count=0,done=0; uint wendu; //定义IO sbit DQ = P1^0; //ds18b20温度传送数据IO口 sbit ds1302_rst = P1^1; //1302复位 sbit ds1302_io = P1^2; //数据输入输出 sbit ds1302_sclk= P1^3; //串行时钟 sbit alarm_out = P3^6; sbit lcd1602_rs = P2^0; // 1602命令、数据选择 sbit lcd1602_rw = P2^1; // 1602写 sbit lcd1602_e = P2^2; // 1

文档评论(0)

文档分享 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档