- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
哈 尔 滨 理 工 大 学 荣 成 学 院
单片机原理
课程设计
题目:基于DS1302的实时时钟显示
班级:
姓名:
学号:
年 月 号
目录
题目简介
实现方案
电路SCH图
软件流程图
软件设计源程序
心得体会
参考文献
一、题目简介
本文采用单片机控制系统的基础上综合应用时钟芯片DSI302和Proteus软件。单片机是一个基本微型计算机,由AT89C52单片机一个芯片通过简单的电路连接,便可组成最小的应用系统,利用集成在单片机内部的接口,实现并行,串行数据传输,定时计数控制,中断等功能,从而完成一定检测控制功能。希望通过研究与设计了解DS1302芯片的内部结构,工作方式,各引脚功能及I/O接口的使用,用LCD显示器代替显示器代替指针显示进而显示时间,减小了计时误差,这种表有时、分、秒显示时间的功能,还可以进行时和分的校时,片选的灵活性好。二、实现方案
基于DS1302的电子万年历设计
系统硬件电路图的设计
按照系统设计功能的要求,初步确定设计系统由主控模块,时钟模块,存储模块,键盘接口模块,显示模块和闹铃模块共6个模块组成。主控芯片使用52系列STC89S52单片机,时钟芯片使用美国DALLAS公司推出的一种高性能,地功耗,带RAM的时钟芯片DS1302作为主要计时芯片,可以做到计时准确。更重要的是,DS1302可以在很小电流的后备下继续计时,并可编程选择多种充电电流来对后备电源进行慢速充电,可以保证后备电源基本不耗电。
系统核心部分---闪电存储器件STC89C51
STC89C51具有下列主要性能:
8KB可编程序Flash存储器
全静态工作:0HZ—24MHZ
三级程序存储器保密
128 X 8 字节内部RAM
32条可编程序I/O线
2个16位定时器/计数器
6个中断源
可编程序串行口
片内时钟振荡器
AT89C51的引脚及其功能
AT89C51的管脚
(1)主要电源引脚
(a)VCC电源端
(b)GND接地线
(2)– P0.7,P1.0 – P1.7,P2.0 – P2.7和 P3.0 – P3.7
(a)PO端口(P0.0 – P0.7)– P1.7)– P2.7)– P3.7)软件流程图
一、时间程序的设计流程图
二、时间程序的设计流程图
闹钟程序程序设计流程图
五.软件设计源程序
#includereg51.h
#includeintrins.h
#define uchar unsigned char
#define uint unsigned int
#define LCDIO P0
sbit led=P3^6;
sbit ge=P2^3;
sbit shi=P2^4;
sbit bai=P3^5;
sbit qian=P3^4;
sbit rs=P2^5;
sbit rd=P2^6;
sbit lcden=P2^7;
sbit BEEP=P3^7;
sbit menu=P2^0; //菜单
sbit add=P2^2; //加一
sbit dec=P2^1; //减一
uchar second,minute,hour,day,month,year,week,count=0;
uchar second1,minute1,hour1;
uchar ReadValue,num,time;
uchar shi1;
uchar fen1;
uchar miao1;
uchar shi2;
uchar fen2;
uchar miao2;
uchar code table[]={ 2013-12-01 MON };
uchar code table1[]={ 12:00:00};
uchar code table2[]= THUFRISATSUNMONTUEWED;
uchar code table3[]={ clock };
uchar code table4[]={ 00:00:00};
sbit DATA=P1^5;
sbit RST=P1^6;
sbit SCLK=P1^3;
void delay(uint z)
{
uint x,y;
for(x=z;x0;x--)
for(y=110;y0;y--);
}
void delay1(uint z)
{
for(;z0;z--);
}
void delay2(uin
文档评论(0)