标题:
51单片机数码管时钟程序仿真
[打印本页]
作者:
liuqq
时间:
2015-5-19 02:22
标题:
51单片机数码管时钟程序仿真
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit s1=P1^0;
sbit s2=P1^1;
sbit s3=P1^2;
sbit fengmingqi=P3^7;
sbit smg1=P2^0;
sbit smg2=P2^1;
sbit smg3=P2^2;
sbit smg4=P2^3;
sbit smg5=P2^4;
sbit smg6=P2^5;
sbit smg7=P2^6;
sbit smg8=P2^7;
uchar qiehuan=0,qhxs,tiaojie;
uchar ns=0,nf=0,nm=0;
uchar shi=23,fen=59,miao=55,jishi=0;
uchar nian1=20,nian2=15,yue=5,ri=9;
uchar code smg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
void yanshi(uchar s)
{
uchar i,j;
for(i=s;i>0;i--)
for(j=120;j>0;j--);
}
void shijianxianshi()
{
smg1=1;
P0=smg[shi/10];
yanshi(5);
smg1=0;
smg2=1;
P0=smg[shi%10];
yanshi(5);
smg2=0;
smg3=1;
P0=0xbf;
yanshi(5);
smg3=0;
smg4=1;
P0=smg[fen/10];
yanshi(5);
smg4=0;
smg5=1;
P0=smg[fen%10];
yanshi(5);
smg5=0;
smg6=1;
P0=0xbf;
yanshi(5);
smg6=0;
smg7=1;
P0=smg[miao/10];
yanshi(5);
smg7=0;
smg8=1;
P0=smg[miao%10];
yanshi(5);
smg8=0;
}
void riqixianshi()
{
smg1=1;
P0=smg[nian1/10];
yanshi(5);
smg1=0;
smg2=1;
P0=smg[nian1%10];
yanshi(5);
smg2=0;
smg3=1;
P0=smg[nian2/10];
yanshi(5);
smg3=0;
smg4=1;
P0=smg[nian2%10];
yanshi(5);
smg4=0;
smg5=1;
P0=smg[yue/10];
yanshi(5);
smg5=0;
smg6=1;
P0=smg[yue%10];
yanshi(5);
smg6=0;
smg7=1;
P0=smg[ri/10];
yanshi(5);
smg7=0;
smg8=1;
P0=smg[ri%10];
yanshi(5);
smg8=0;
}
void naozhong()
{
smg1=1;
P0=smg[ns/10];
yanshi(5);
smg1=0;
smg2=1;
P0=smg[ns%10];
yanshi(5);
smg2=0;
smg3=1;
P0=0xbf;
yanshi(5);
smg3=0;
smg4=1;
P0=smg[nf/10];
yanshi(5);
smg4=0;
smg5=1;
P0=smg[nf%10];
yanshi(5);
smg5=0;
smg6=1;
P0=0xbf;
yanshi(5);
smg6=0;
smg7=1;
P0=smg[nm/10];
yanshi(5);
smg7=0;
smg8=1;
P0=smg[nm%10];
yanshi(5);
smg8=0;
}
void anjian()
{
if(s1==0)
yanshi(10);
if(s1==0)
{
yanshi(10);
tiaojie++;
TR0=0;
ET0=0;
if(tiaojie==10)
{
tiaojie=0;
qiehuan=0;
TR0=1;
ET0=1;
}
while(!s1);
}
if(tiaojie==1)
{
qiehuan=0;
if(s2==0)
{
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
shi=0;
}
}
while(!s2);
}
if(s3==0)
{
yanshi(10);
if(s3==0)
{
miao--;
if(miao==-1)
{
miao=59;
fen--;
if(fen==-1)
{
fen=59;
shi--;
if(shi==-1)
{
shi=23;
}
}
}
while(!s3);
}
}
}
if(tiaojie==2)
{
qiehuan=0;
if(s2==0)
{
yanshi(10);
if(s2==0)
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
shi=0;
}
while(!s2);
}
if(s3==0)
yanshi(10);
if(s3==0)
{
fen--;
if(fen==-1)
{
fen=59;
shi--;
if(shi==-1)
shi=23;
}
while(!s3);
}
}
if(tiaojie==3)
{
qiehuan=0;
if(s2==0)
{
yanshi(10);
if(s2==0)
{
shi++;
if(shi==24)
shi=0;
}
while(!s2);
}
if(s3==0)
{
yanshi(10);
if(s3==0)
{
shi--;
if(shi==-1)
{
shi=23;
}
}
while(!s3);
}
}
if(tiaojie==4)
{
qiehuan=1;
if(s2==0)
{
yanshi(10);
if(s2==0)
{
while(!s2);
ri++;
if(yue==2&&((nian2==0&&nian1%4==0)||(nian2!=0&&nian1%4==0))&&ri==30)
ri=1;
else if(yue==2&&ri==29)
ri=1;
else if((yue==4||yue==6||yue==9||yue==11)&&ri==31)
ri=1;
else if(ri==32)
ri=1;
}
}
if(s3==0)
{
yanshi(10);
if(s3==0)
{
ri--;
if(ri==0)
ri=31;
}
while(!s3);
}
}
if(tiaojie==5)
{
qiehuan=1;
if(s2==0)
{
yanshi(10);
if(s2==0)
{
yue++;
if(yue==13)
{
yue=1;
nian2++;
if(nian2==100)
{
nian2=0;
nian1++;
if(nian1==100)
nian1=0;
}
}
while(!s2);
}
}
if(s3==0)
{
yanshi(10);
if(s3==0)
{
yue--;
if(yue==0)
yue=12;
}
while(!s3);
}
}
if(tiaojie==6)
{
qiehuan=1;
if(s2==0)
{
yanshi(10);
if(s2==0)
{
nian2++;
if(nian2==100)
{
nian2=0;
nian1++;
if(nian1==100)
nian1=0;
}
}
while(!s2);
}
if(s3==0)
{
yanshi(10);
if(s3==0)
{
nian2--;
if(nian2==-1)
nian2=99;
}
while(!s3);
}
}
if(tiaojie==7)
{
qiehuan=1;
if(s2==0)
{
yanshi(10);
if(s2==0)
{
nian1++;
if(nian1==100)
nian1=0;
}
while(!s2);
}
if(s3==0)
{
yanshi(10);
if(s3==0)
{
nian1--;
if(nian1==-1)
nian1=99;
}
while(!s3);
}
}
if(tiaojie==8)
{
qiehuan=3;
if(s2==0)
{
yanshi(10);
if(s2==0)
{
nf++;
if(nf==60)
nf=0;
}
while(!s2);
}
if(s3==0)
{
yanshi(10);
if(s3==0)
{
nf--;
if(nf==-1)
nf=59;
}
while(!s3);
}
}
if(tiaojie==9)
{
qiehuan=3;
if(s2==0)
{
yanshi(10);
if(s2==0)
{
ns++;
if(ns==24)
ns=0;
}
while(!s2);
}
if(s3==0)
{
yanshi(10);
if(s3==0)
{
ns--;
if(ns==-1)
ns=23;
}
while(!s3);
}
}
}
void dingshiqi()
{
TMOD = 0x01;
TH0 = 0x4C;
TL0 = 0x00;
ET0 = 1;
TR0 = 1;
EA = 1;
}
void main()
{
dingshiqi();
tiaojie=0;
qiehuan=0;
fengmingqi=1;
while(1)
{
anjian();
if(qiehuan==3)
naozhong();
if(qiehuan==2)
qiehuan=0;
if(qiehuan==1)
riqixianshi();
if(qiehuan==0)
shijianxianshi();
if(fen==nf&&shi==ns)
{
fengmingqi=0;
yanshi(shijianxianshi);
fengmingqi=1;
}
if((P1&0xff)!=0xff)
{
fengmingqi=0;
yanshi(50);
fengmingqi=1;
}
}
}
void jishu()interrupt 1
{
TR0 = 0;
TH0 = (65536 - 50000 ) / 256;
TL0 = (65536 - 50000 ) % 256;
TR0 = 1;
jishi++;
if(jishi==21)
{
jishi=0;
miao++;
if(miao==60)
{
qiehuan++;
miao=0;
fen++ ;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
{
shi=0;
ri++;
if(yue==2&&((nian2==0&&nian1%4==0)||(nian2!=0&&nian1%4==0))&&yue==30)
ri=1;
else if(yue==2&&ri==29)
ri=1;
else if((yue==4||yue==6||yue==9||yue==11)&&ri==31)
ri=1;
else if(ri==32)ri=1;
if(ri==1)
{
yue++;
if(yue==13)
{
yue=1;
nian2++;
if(nian2==100)
{
nian2=0;
nian1++;
if(nian1==100)
nian1=0;
}
}
}
}
}
}
}
}
复制代码
作者:
lehigh
时间:
2017-6-25 08:41
楼主源文件呢?
作者:
qwertyuiop1230
时间:
2017-12-19 15:52
楼主可以把源文件发给我吗??谢谢
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1