基于STC89C51单片机的万年历制作方法.doc

基于STC89C51单片机的万年历制作方法.doc

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
基于51单片机的万年历论文 学校 华侨大学 学院 信息科学与工程学院 班级 10级 集成电路设计与集成系统 摘要 1、 2、74lLS245摘要: 74LS245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器,可双向传输数据。 74LS245还具有双向三态功能,既可以输出,也可以输入数据。#includereg51.h #includeabsacc.h #define uchar unsigned char #define uint unsigned int /*七段共阳管显示定义*/ uchar code dispcode[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40,0x80}; //此表为 LED 的字模, 共阳数码管 0-9 ,_ 和. /*定义并初始化变量*/ uchar seconde=0;//秒 uchar minite=0;//分 uchar hour=12; //时 uchar day=24;//日 uchar month=3;//月 uint year=2012,a=1,b=1,c=1; //年和下降沿变量 uchar mstcnt=0;//定时器计数,定时50ms,mstcnt满20,秒加1 int dateadd1=0; sbit P1_0=P1^0; //时钟秒或日历天调整 sbit P1_1=P1^1; //时钟分或日历月调整 sbit P1_2=P1^2; //时钟时或日历年调整 sbit P1_3=P1^3; //时间与日历间的切换 /*函数声明*/ void delay(uint k ); //延时子程序 void time_pro( ); //时间处理子程序 void display( ); //时间显示调整子程序 void dateadd(int m); //日历处理子程序 void calendar( ); //日历显示调整子程序 /*延时子程序*/ void delay (uint k) { uchar j; while(k--) { for(j=0;j125;j++) {;} } } /*时间处理子程序*/ void time_pro(void) { if(seconde==60) { seconde=0; minite++; if(minite==60) { minite=0; hour++; if(hour==24) { hour=0; dateadd1++; } } } } /*时间显示调整子程序*/ void display(void) { if(P1_3==1) { /*时间调整键盘扫描子程序*/ if(P1_0!=a)//秒位的调整,下降沿有效 { delay(10); if(P1_0==0) { seconde++; if(seconde==60) { seconde=0; } }a=P1_0; } if(P1_1!=b)//分位的调整,下降沿有效 { delay(10); if(P1_1==0) { minite++; if(minite==60) { minite=0; } }b=P1_1; } if(P1_2!=c)//时位的调整,下降沿有效 { delay(10); if(P1_2==0) { hour++; if(hour==24) { hour=0; } }c=P1_2; } /*时间显示子程序*/ P3=0Xfe; P0=dispcode[hour/10];//时十位 delay(2); P3=0Xfd; P0=dispcode[hour%10];//时个位 delay(2); P3=0Xfb; P0=dispcode[10];//间隔符 - delay(2); P3=0Xf7; P0=dispcode[minite/10];//分十位 delay(2); P3=0Xef; P0=dispcode[minite%10];//分个位 delay(2); P3=0Xdf; P0=dispcode[10];//间隔符 - delay(2); P3=0Xbf; P0=dispcode[seconde/10];//秒十位 dela

文档评论(0)

精品天地 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档