標(biāo)題:
數(shù)字時(shí)鐘電路設(shè)計(jì)(proteus仿真電路 C源程序)
[打印本頁]
作者:
79778584
時(shí)間:
2018-3-11 13:12
標(biāo)題:
數(shù)字時(shí)鐘電路設(shè)計(jì)(proteus仿真電路 C源程序)
相互學(xué)習(xí),有錯(cuò)誤請指出 沒事~分享數(shù)字時(shí)鐘電路設(shè)計(jì)!~
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.jpg
(142.81 KB, 下載次數(shù): 50)
下載附件
2018-3-11 18:23 上傳
單片機(jī)源程序如下:
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^0;
sbit wela=P2^1;
sbit s1=P1^0;
sbit s2=P1^1;
sbit s3=P1^2;
sbit s4=P1^3;
sbit g_56=P2^5;
sbit g_34=P2^6;
sbit g_12=P2^7;
uchar nian,yue,ri,shi,fen,miao,leap,flag,num;
uint t;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x00
};
uchar code table1[2][13]=
{
{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}
};
void delay(uint z);
void time0_init(void);
void display_sfm(uchar shi_,uchar fen_,uchar miao_);
void init_time();
void display_nyr();
void keyscan();
void main()
{
dula=0;
wela=0;
init_time();
time0_init();
while(1)
{
if(nian%4==0)
leap=1;
else
leap=0;
if(num==1)
{ g_56=~g_56;
g_34=0;
g_12=0;
delay(10);
}
if(num==2)
{
g_56=0;
g_34=~g_34;
g_12=0;
delay(10);
}
if(num==3)
{
g_56=0;
g_34=0;
g_12=~g_12;
delay(10);
}
if(num==0)
{
g_56=0;
g_34=0;
g_12=0;
}
if(t>=3120)
{
t=0;
miao++;
if(miao==60)
{
miao=0;
fen++;
if(fen==60)
{
fen=0;
shi++;
if(shi==24)
{
shi=0;
ri++;
if(ri==(table1[leap][yue]+1))
{
ri=1;
yue++;
if(yue==13)
{
yue=1;
nian++;
if(nian==100)
{
nian=0;
}
}
}
}
}
}
}
if(flag==0)
display_sfm(shi,fen,miao);
else
//display_nyr();
display_sfm(nian,yue,ri);
keyscan();
}
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void time0_init(void)
{
TMOD=0x02;
TH0=0;
TL0=0;
//TH0=(65536-50000)/256;
//TL0=(65536-50000)%256;
ET0=1;
EA=1;
TR0=1;
}
void init_time()
{
t=0;
flag=0;
num=0;
g_56=0;
g_34=0;
g_12=0;
shi=0;
fen=0;
miao=0;
nian=11;
yue=6;
ri=3;
}
void time0() interrupt 1
{
//TH0=(65535-50000)/256;
//TL0=(65535-50000)%256;
t++;
}
void display_sfm(uchar shi_,uchar fen_,uchar miao_)
{
wela=1;
P0=0xfe;
wela=0;
dula=1;
P0=table[shi_/10];
dula=0;
delay(1);
wela=1;
P0=0xfd;
wela=0;
dula=1;
P0=table[shi_%10];
dula=0;
delay(1);
wela=1;
P0=0xfb;
wela=0;
dula=1;
P0=table[fen_/10];
dula=0;
delay(1);
wela=1;
P0=0xf7;
wela=0;
dula=1;
P0=table[fen_%10];
dula=0;
delay(1);
wela=1;
P0=0xef;
wela=0;
dula=1;
P0=table[miao_/10];
dula=0;
delay(1);
wela=1;
P0=0xdf;
wela=0;
dula=1;
P0=table[miao_%10];
dula=0;
delay(1);
}
void display_nyr()
{
wela=1;
P0=0xfe;
wela=0;
dula=1;
P0=table[nian/10];
dula=0;
delay(1);
wela=1;
P0=0xfd;
wela=0;
dula=1;
P0=table[nian%10];
dula=0;
delay(1);
wela=1;
P0=0xfb;
wela=0;
dula=1;
P0=table[yue/10];
dula=0;
delay(1);
wela=1;
P0=0xf7;
wela=0;
dula=1;
P0=table[yue%10];
dula=0;
delay(1);
wela=1;
P0=0xef;
wela=0;
dula=1;
P0=table[ri/10];
dula=0;
delay(1);
wela=1;
P0=0xdf;
wela=0;
dula=1;
P0=table[ri%10];
dula=0;
delay(1);
}
void keyscan()
{
if(s1==0)
{
delay(5);
if(s1==0)
{
while(!s1);
flag=~flag;
}
}
if(s2==0)
{
delay(5);
if(s2==0)
{
while(!s2);
num++;
if(num==1)
{
TR0=0;
}
if(num==4)
{
TR0=1;
num=0;
}
}
}
if(s3==0)
{
delay(5);
if(s3==0)
{
while(!s3);
if(num==1&&flag==0)
{
shi++;
if(shi==24)
shi=0;
}
if(num==1&&flag!=0)
{
nian++;
if(nian==100)
nian=0;
}
if(num==2&&flag==0)
{
fen++;
if(fen==60)
fen=0;
}
if(num==2&&flag!=0)
{
yue++;
if(yue==13)
yue=1;
}
if(num==3&&flag==0)
{
miao++;
if(miao==60)
miao=0;
}
if(num==3&&flag!=0)
{
ri++;
if(ri==(table1[leap][yue]+1))
ri=1;
}
}
}
if(s4==0)
{
delay(5);
if(s4==0)
{
while(!s4);
if(num==1&&flag==0)
{
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
數(shù)字時(shí)鐘電路設(shè)計(jì)(proteus仿真電路 C源程序).zip
(390.61 KB, 下載次數(shù): 43)
2018-3-11 13:11 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1