- 1、本文档共16页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)