哈理工荣 单片机课设基于DS1302的实时时钟显示Word文档格式.docx
- 文档编号:13895433
- 上传时间:2022-10-14
- 格式:DOCX
- 页数:33
- 大小:122.98KB
哈理工荣 单片机课设基于DS1302的实时时钟显示Word文档格式.docx
《哈理工荣 单片机课设基于DS1302的实时时钟显示Word文档格式.docx》由会员分享,可在线阅读,更多相关《哈理工荣 单片机课设基于DS1302的实时时钟显示Word文档格式.docx(33页珍藏版)》请在冰豆网上搜索。
按照系统设计功能的要求,初步确定设计系统由主控模块,时钟模块,存储模块,键盘接口模块,显示模块和闹铃模块共6个模块组成。
主控芯片使用52系列STC89S52单片机,时钟芯片使用美国DALLAS公司推出的一种高性能,地功耗,带RAM的时钟芯片DS1302作为主要计时芯片,可以做到计时准确。
更重要的是,DS1302可以在很小电流的后备下继续计时,并可编程选择多种充电电流来对后备电源进行慢速充电,可以保证后备电源基本不耗电。
二、系统核心部分---闪电存储器件STC89C51
1、STC89C51具有下列主要性能:
8KB可编程序Flash存储器
全静态工作:
0HZ—24MHZ
三级程序存储器保密
128X8字节内部RAM
32条可编程序I/O线
2个16位定时器/计数器
6个中断源
可编程序串行口
片内时钟振荡器
2、AT89C51的引脚及其功能
AT89C51的管脚
(1)主要电源引脚
(a)VCC电源端
(b)GND接地线
(2)外接晶体引脚XTAL1和XTAL2
(a)XTAL1:
在单片机内部,它是构成片内振荡器的反相放大器的输入端。
当采用外部振荡器时,该引脚接收振荡器的信号,即把此信号直接接到内部时钟发生器的输入端。
(b)XTAL2:
它是上诉振荡器的反相放大器的输出端。
采用外部振荡器时,此引脚悬浮不连接。
(3)控制或与其它电源复用引脚RST、ALE/PROG/PSEN/EA/VPP
(a)RST:
复位输入端
(b)ALE/PROG:
当访问外部存储器时,ALE(地址锁存允许)的输出用于锁存地址的低位字节。
(c)PSEN:
程序存储允许输出是外部程序存储器的读选通信号。
(d)EA/VPP:
外部访问允许端。
(4)输入/输出引脚P0.0–P0.7,P1.0–P1.7,P2.0–P2.7和P3.0–P3.7
(a)PO端口(P0.0–P0.7)
(b)P1端口(P1.0–P1.7)
(c)P2端口(P2.0–P2.7)
(d)P3端口(P3.0–P3.7)
3、DS1302时钟电路
(1)DS1302的性能特征
a、实时时钟,可对秒、分、时、日、周、月以及带闰年补偿的年进行比较。
b、用于高速数据暂存的31X8位RAM。
c、最少引脚的串行I/O。
d、2.5-5.5V电压工作范围。
e、2.5V时耗小于300mA。
f、用于时钟或RAM数据读写的单字节或多字节数据传输方式。
g、简单的3线接口。
h、可选的慢速充电(至VCC1)的能力。
(2)DS1302数据操作原理
DS1302在任何数据传送时必须先初始化,把RST脚置为高电平,然后把8位地址和命令字装入移位寄存器,数据在SCLK的上升沿被输入。
无论是读周期还是写周期,开始8位指令40个寄存器中哪个被访问到。
在开始8个时钟周期,把命令字节装入移位寄存器之后,另外的时钟周期在读操作时输出数据,在写操作时写入数据。
时钟脉冲的个数在单字节方式下为8加8,再多字节方式下为8加字节数,最大可达248字节数。
软件流程图
一、时间程序的设计流程图
二、时间程序的设计流程图
三、闹钟程序程序设计流程图
五.软件设计源程序
#include<
reg51.h>
intrins.h>
#defineucharunsignedchar
#defineuintunsignedint
#defineLCDIOP0
sbitled=P3^6;
sbitge=P2^3;
sbitshi=P2^4;
sbitbai=P3^5;
sbitqian=P3^4;
sbitrs=P2^5;
sbitrd=P2^6;
sbitlcden=P2^7;
sbitBEEP=P3^7;
sbitmenu=P2^0;
//菜单
sbitadd=P2^2;
//加一
sbitdec=P2^1;
//减一
ucharsecond,minute,hour,day,month,year,week,count=0;
ucharsecond1,minute1,hour1;
ucharReadValue,num,time;
ucharshi1;
ucharfen1;
ucharmiao1;
ucharshi2;
ucharfen2;
ucharmiao2;
ucharcodetable[]={"
2013-12-01MON"
};
ucharcodetable1[]={"
12:
00:
00"
ucharcodetable2[]="
THUFRISATSUNMONTUEWED"
;
ucharcodetable3[]={"
clock"
ucharcodetable4[]={"
00:
sbitDATA=P1^5;
sbitRST=P1^6;
sbitSCLK=P1^3;
voiddelay(uintz)
{
uintx,y;
for(x=z;
x>
0;
x--)
for(y=110;
y>
y--);
}
voiddelay1(uintz)
for(;
z>
z--);
voiddelay2(uintz)
for(y=50;
//蜂鸣器程序
voiddi()
uchari;
for(i=0;
i<
20;
i++)
{
BEEP=0;
delay2(10);
BEEP=1;
}
voidwrite_com(ucharcom)
rs=0;
rd=0;
lcden=0;
LCDIO=com;
delay(5);
lcden=1;
voidwrite_date(uchardate)
rs=1;
LCDIO=date;
voidinit()
ucharnum;
qian=0;
bai=0;
shi=0;
ge=0;
led=0;
write_com(0x38);
write_com(0x0c);
write_com(0x06);
write_com(0x01);
write_com(0x80);
for(num=0;
num<
15;
num++)
write_date(table[num]);
delay(5);
}
write_com(0x80+0x40);
10;
write_date(table1[num]);
}
voidWrite1302(uchardat)
SCLK=0;
//拉低SCLK,为脉冲上升沿写入数据做好准备
delay1
(2);
//等待一会,
8;
i++)//连续写8个二进制位数据
DATA=dat&
0x01;
//取出dat的第0位数据写入1302
delay
(2);
//等待一会,是硬件做好准备
SCLK=1;
//上升沿写入数据
delay1
(2);
SCLK=0;
//重新拉低SCLK,形成脉冲
dat>
>
=1;
//将dat的各位数据位右移一位,准备写入下一个数据位
voidWriteSet1302(ucharCmd,uchardat)
RST=0;
//禁止数据传递
//确保写数据前SCLK被拉低
RST=1;
//启动数据传输
//等一会做好硬件准备
Write1302(Cmd);
//写入命令字
Write1302(dat);
//写数据
SCLK=1;
//将时钟电平置于已知状态
//禁止数据传输
ucharRead1302(void)
uchari,dat;
delay
(2);
i++)//连续读8个二进制位数据
//将dat的各数据位右移1位,因为先读出的字节的最低位
if(DATA==1)//如果读出的数据是1
dat|=0x80;
//将1取出,写在dat的最高位
//将SCLK置于高电平,为下降沿读出
//稍微等待
//拉低SCLK,形成下降沿
}
returndat;
//将读出的数据返回
ucharReadSet1302(ucharCmd)
uchardat;
//拉低RST
dat=Read1302();
//读出数据
voidInit_DS1302(void)
{
WriteSet1302(0x8E,0x00);
//根据写状态寄存器命令字,写入不保护指令
WriteSet1302(0x80,((0/10)<
<
4|(0%10)));
//根据写秒寄存器命令字,写入秒的初始值
WriteSet1302(0x82,((0/10)<
4|(20%10)));
//根据写分寄存器命令字,写入分的初始值
WriteSet1302(0x84,((12/10)<
4|(12%10)));
///根据写小时寄存器命令字,写入小时
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 哈理工荣 单片机课设 基于DS1302的实时时钟显示 理工 单片机 基于 DS1302 实时 时钟 显示