电子设计大赛作品51单片机的实时时钟制作.doc_第1页
电子设计大赛作品51单片机的实时时钟制作.doc_第2页
电子设计大赛作品51单片机的实时时钟制作.doc_第3页
电子设计大赛作品51单片机的实时时钟制作.doc_第4页
电子设计大赛作品51单片机的实时时钟制作.doc_第5页
已阅读5页,还剩25页未读 继续免费阅读

下载本文档

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

文档简介

1、河北大学工商学院装订线 电子设计竞赛报告题目:使用DS12C887时钟芯片设计高精度时钟学 部 信息科学与工程学部专 业 电气一类学 号 2009480102姓 名 田海茂2011年3月12日 目录 一 摘要 3二 系统组成与功能说明 3三 硬件电路设计与分析 2四 程序流程说明 3附录1 . 摘要本系统利用单片机(STC89C52)和DS12C887时钟芯片实现对时间的控制。在1602液晶上显示年,月,日,星期,时,分,秒,并且按秒实时更新显示;具有闹铃报警功能;具有更改功能,能任意更改时间;利用DS12C887自身掉电可继续走时的特性,实现断电时间不停,再次上电时时间仍准确显示在液晶上的功

2、能。以上各种功能依据一定的联系,组成一个比较完整的系统。一 系统组成与功能说明系统可划分为几个功能模块,如图1所示。单 片机STC89C52液晶屏 DS12C887 蜂鸣器 按 键 图1通过STC89C52单片机按键的扫描函数实现对更改时间功能的控制。在外部断电情况下DS12C887仍能继续走时,再次上电时将准确时间传给单片机,从而实现时间不停的功能,当闹钟时间到时,DS12C887发出中断申请,单片机控制液晶停止走时,通过蜂鸣器发出闹铃声,并且按键与蜂鸣器相连,按下按键的同时蜂鸣器会发出响声。采用个性化的液晶显示,当开始供电时以屏幕的平移为起始,时间信息从右往左平移至中央。二 硬件电路设计与

3、分析硬件电路原理图如下所示 最小系统图1602液晶与单片机连接图DS12C887与单片机连接图以STC89C52为核心制作出单片机最小系统。1602液晶为5V电压驱动,带背光,可显示两行,每行16个字符,符合本作品需要。DS12C887具有闹铃以及外部掉电自身继续走时功能,为理想的时钟芯片。选择蜂鸣器,通过用三极管对其放大,实现所想要的功能。选择RS232,使得计算机的9.6V的电压能够与该系统5V得以匹配,与此同时也实现了我们直接用电脑直接对其系统直接拷贝程序。三 程序流程说明初始化 按键检查 从DS12C887读取数据 液晶显示数据 图 主程序流程图 附件1#include#define

4、uchar unsigned char #define uint unsigned intsbit rs=P35;sbit lcden=P34;sbit s1=P36;/功能键sbit s2=P31;/增大键sbit s3=P32;/减小键sbit beep=P23;/蜂鸣器sbit dscs=P14;sbit dsas=P15;sbit dsrw=P16;sbit dsds=P17;sbit dsirq=P33;uchar count,s1num,flag;bit flag1;char miao,shi,fen,nian,yue,ri,week;uchar code table= 20 -

5、- ;/液晶固定显示uchar code table1= : : ;uchar code table2= Hello everyone!;uchar code table3=Nice to meet you!;void write_ds(uchar,uchar);void set_alarm(uchar,uchar,uchar);uchar read_ds(uchar);void set_time();uchar amiao,ashi,afen;void delay(uint z)/延时函数uint x,y;for(x=z;x0;x-)for(y=110;y0;y-);void di()/按键

6、时蜂鸣器发音 beep=0; delay(100); beep=1;void didi() /闹钟时蜂鸣器发音beep=0;delay(50);beep=1;delay(100);beep=0;delay(50);beep=1;void write_com(uchar com)/写液晶命令函数rs=0;lcden=0;P0=com;delay(5);lcden=1;delay(5);lcden=0;void write_date(uchar date)/写液晶具体数据函数rs=1;lcden=0;P0=date;delay(5);lcden=1;delay(5);lcden=0;void in

7、it()/程序初始化uchar num;EA=1;/打开总中断EX1=1;/开外部中断1IT1=1;/设置负跳变沿触发方式lcden=0;week=1;/set_time();/给DS12C887设置时间函数set_alarm(2,2,10);/设置闹铃函数write_ds(0x0B,0x26);/设置DS12C887 24小时模式write_com(0x38);/1602液晶初始化write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);for(num=0;num16;num+)/写入液晶平移内容write_date(ta

8、ble2num);delay(5);write_com(0x80+0x40);for(num=0;num16;num+)write_date(table3num);delay(5); write_com(0x80+0x10);/写入液晶固定内容for(num=0;num16;num+)write_date(tablenum);delay(5);write_com(0x80+0x50);for(num=0;num16;num+)write_date(table1num);delay(5);void write_sfm(uchar add,uchar date)/在液晶上写入时分秒uchar sh

9、i,ge;shi=date/10;ge=date%10;write_com(0x80+0x50+add);write_date(0x30+shi);write_date(0x30+ge);void write_sfm1(uchar add,uchar date)/在液晶上写入年月日uchar shi,ge;shi=date/10;ge=date%10;write_com(0x80+0x10+add);write_date(0x30+shi);write_date(0x30+ge);void write_week(uchar we)/星期函数 write_com(0x80+0x10+13); s

10、witch(we) case 1: write_date(M);delay(5); write_date(O);delay(5); write_date(N); break; case 2: write_date(T);delay(5); write_date(U);delay(5); write_date(E); break; case 3: write_date(W);delay(5); write_date(E);delay(5); write_date(D); break; case 4: write_date(T);delay(5); write_date(H);delay(5);

11、write_date(U); break; case 5: write_date(F);delay(5); write_date(R);delay(5); write_date(I); break; case 6: write_date(S);delay(5); write_date(A);delay(5); write_date(T); break; case 7: write_date(S);delay(5); write_date(U);delay(5); write_date(N); break; void keyscan()if(flag1=1)/闹铃响if(s2=0)delay(5

12、);if(s2=0)while(!s2);di();flag1=0;/中断闹铃 if(s3=0)delay(5);if(s3=0)while(!s3); di();flag1=0;/中断闹铃 if(s1=0)delay(5);if(s1=0)s1num+;flag=1;flag1=0;while(!s1);di();if(s1num=1) write_com(0x80+0x50+10);write_com(0x0f);/光标停止位置不断闪烁 if(s1num=2) write_com(0x80+0x50+7); if(s1num=3) write_com(0x80+0x50+4); if(s1

13、num=4) write_com(0x80+0x10+13); if(s1num=5) write_com(0x80+0x10+10); if(s1num=6) write_com(0x80+0x10+7);if(s1num=7) write_com(0x80+0x10+4);if(s1num=8)s1num=0;write_com(0x0c);/光标停止闪烁write_ds(0,miao);/将此时时间信息写入DS12C887write_ds(2,fen);write_ds(4,shi);write_ds(6,week);write_ds(7,ri);write_ds(8,yue);writ

14、e_ds(9,nian);flag=0; if(s1num!=0)if(s2=0)delay(1);if(s2=0)while(!s2); di();if(s1num=1)miao+;if(miao=60)miao=0;write_sfm(10,miao);/将变化后的时间写入液晶write_com(0x80+0x50+10);if(s1num=2)fen+;if(fen=60)fen=0;write_sfm(7,fen);write_com(0x80+0x50+7);if(s1num=3)shi+;if(shi=24)shi=0;write_sfm(4,shi);write_com(0x80

15、+0x50+4);if(s1num=4)week+;if(week=8)week=1;write_week(week);write_com(0x80+0x10+13);if(s1num=5)ri+;if(ri=32)ri=1;write_sfm1(10,ri);write_com(0x80+0x10+10);if(s1num=6)yue+;if(yue=13)yue=1;write_sfm1(7,yue);write_com(0x80+0x10+7);if(s1num=7)nian+;if(nian=100)nian=0;write_sfm1(4,nian);write_com(0x80+0x

16、10+4);if(s3=0)delay(1);if(s3=0)while(!s3); di();if(s1num=1)miao-;if(miao=-1)miao=59;write_sfm(10,miao);write_com(0x80+0x50+10);if(s1num=2)fen-;if(fen=-1)fen=59;write_sfm(7,fen);write_com(0x80+0x50+7);if(s1num=3)shi-;if(shi=-1)shi=23;write_sfm(4,shi);write_com(0x80+0x50+4);if(s1num=4)week-;if(week=0)

17、week=7;write_week(week);write_com(0x80+0x10+13);if(s1num=5)ri-;if(ri=0)ri=31;write_sfm1(10,ri);write_com(0x80+0x10+10);if(s1num=6)yue-;if(yue=0)yue=12;write_sfm1(7,yue);write_com(0x80+0x10+7);if(s1num=7)nian-;if(nian=-1)yue=99;write_sfm1(4,nian);write_com(0x80+0x10+4);void write_ds(uchar add,uchar d

18、ate)/ DS12C887写入程序函数dscs=0;dsas=1;dsds=1;dsrw=1;P0=add;dsas=0;dsrw=0;P0=date;dsrw=1;dsas=1;dscs=1;uchar read_ds(uchar add)/从DS12C887中读取数据 uchar ds_date;dsas=1;dsds=1;dsrw=1;dscs=0;P0=add;dsas=0;dsds=0;P0=0xff;ds_date=P0;dsds=1;dsas=1;dscs=1;return ds_date;void set_time()/设置时间write_ds(4,1);write_ds(2,2);write_ds(6,3);write_ds(7,4);write_ds(8,5);write_ds(9,6);void set_alarm(uchar ashi,uchar afen,uchar amiao)/设置闹铃write_ds(1,amiao);write_ds(3,afen);write_ds(5,ashi);void main() uchar num,bo=0;init();delay(4000);for(num=0;num16;num+) write_com(0x18);/1602平移函数 delay(600); keyscan();/按键检测if(

温馨提示

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

评论

0/150

提交评论