毕业设计-基于AT89C51单片机的实时时钟设计

上传人:鲁** 文档编号:496480607 上传时间:2022-12-20 格式:DOCX 页数:43 大小:359.89KB
返回 下载 相关 举报
毕业设计-基于AT89C51单片机的实时时钟设计_第1页
第1页 / 共43页
毕业设计-基于AT89C51单片机的实时时钟设计_第2页
第2页 / 共43页
毕业设计-基于AT89C51单片机的实时时钟设计_第3页
第3页 / 共43页
毕业设计-基于AT89C51单片机的实时时钟设计_第4页
第4页 / 共43页
毕业设计-基于AT89C51单片机的实时时钟设计_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《毕业设计-基于AT89C51单片机的实时时钟设计》由会员分享,可在线阅读,更多相关《毕业设计-基于AT89C51单片机的实时时钟设计(43页珍藏版)》请在金锄头文库上搜索。

1、基于AT89C51单片机的实时时钟设计学号姓名一系统分析本电路是由AT89C51单片机为控制核心,具有在线编程功能,低功耗,能在4.5V超低压工作;显示局部用LCD1602实现,能够同时显示16x02即32个字符;闹钟局部由蜂鸣器构成,蜂鸣器是一种一体化结构的电子讯响器;时钟电路由DS1302提供,它是一种高性能、低功耗、带RAM的实时时钟电路,可以对年、月、日、星期、时、分、秒进行计时,具有闰年补偿功能,工作电压为2.5V5.5V.采用三线接口与单片机进行同步通信,并可采用突发方式一次传送多个字节的时钟信号或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM 存放器。可产生

2、年、月、日、周日、时、分、秒,具有使用寿命长,精度高和低功耗等特点,同时具有掉电自动保存功能,本设计中为DS1302增加了备用电池,当主电源掉电时,备用电池自动为其供电;温度的采集由DS18B20构成;当闹铃时间到时,通过蜂鸣器播放闹铃铃声。二.系统功能框图的设计三.系统硬件设计 本设计采用的元器件如下:单片机AT89C51LM016LDS1302晶振CRYSTAL DS18B2024C02C电容CAP电解电容CAP-ELEC电阻RES排阻RESPACK-8按键BUTTON四.系统软件设计流程图和软件设计 主程序流程图时间调整程序流程图定时闹铃程序流程图C程序:#include #includ

3、e 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,1

4、6,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,

5、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;/定义IOsbi

6、t DQ = P10; /ds18b20温度传送数据IO口sbit ds1302_rst = P11; /1302复位sbit ds1302_io = P12; /数据输入输出sbit ds1302_sclk= P13; /串行时钟sbit alarm_out = P36;sbit lcd1602_rs = P20; / 1602命令、数据选择sbit lcd1602_rw = P21; / 1602写sbit lcd1602_e = P22; / 1602使能sbit set = P24;/选择按键sbit up = P25;/加sbit down= P26;/减sbit nao = P27

7、;sbit ACC0=ACC0;sbit ACC7=ACC7;sbit MODE=P32;/延时void delay(uchar x) uchar y,z; for(z=x;z0;z-) for(y=110;y0;y-);void delay1() _nop_(); _nop_();void delay2(uint ms) uint i,j; for (j=0;jms;j+) for (i=0;i0;i-) DQ=0; if(dat&0x01=0x01) DQ=1; else DQ=0; ds18b20_delay(5); DQ=1; ds18b20_delay(1); dat=1; ucha

8、r read_onechar()/读一字节uchar value=0,i;for(i=8;i0;i-) value=1; DQ=0; ds18b20_delay(1); DQ=1; if(DQ=1) value|=0x80; else value&=0x7f; ds18b20_delay(4); return value;uint read_wendu() /DS18B20读温度 uchar a=0,b=0; uint wen=0x0000; ds18b20_init();/初始化 write_onechar(0xcc);/ 跳过读序号列号的操作 write_onechar(0x44);/ 启

9、动温度转换 ds18b20_delay(150); ds18b20_init();/初始化 write_onechar(0xcc);/跳过读序号列号的操作 write_onechar(0xbe);/读取温度存放器等共可读9个存放器 前两个就是温度 ds18b20_delay(150); b=read_onechar();/读取温度值低位 a=read_onechar();/读取温度值高位 wen=a; wen=(wen0;k-) ds1302_io=ACC0; ds1302_sclk=0; /拉低sclk ds1302_sclk=1; /拉高sclk ACC=1; uchar read_byt

10、e() uchar k; for(k=8;k0;k-) ACC7=ds1302_io; ds1302_sclk=1; /拉高sclk ds1302_sclk=0; /拉低sclk ACC=1; return ACC; void ds1302_write(uchar add,uchar date) ds1302_rst=0; ds1302_sclk=0; /在rst没拉高之前先把sclk置0 ds1302_rst=1; write_byte(add); write_byte(date); ds1302_sclk=1; ds1302_rst=0;uchar ds1302_read(uchar add) uchar temp; ds1302_rst=0; ds1302_sclk=0; /在rst没拉高之前先把sclk置0 ds1302_rst=1; write_byte(add); temp=read_byte(); ds1302_sclk=1; ds1302_rst=0;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 商业计划书

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号