標(biāo)題:
基于單片機(jī)的多功能電子時(shí)鐘的仿真
[打印本頁(yè)]
作者:
瞬間移動(dòng)
時(shí)間:
2018-3-14 21:12
標(biāo)題:
基于單片機(jī)的多功能電子時(shí)鐘的仿真
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png
(13.62 KB, 下載次數(shù): 18)
下載附件
2018-3-15 03:30 上傳
單片機(jī)源程序:
#include<reg51.h>
#define uchar unsigned char
void xianshi(int bianma,int adr);
int key(void);
uchar table1[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0xc7,0x39,0x5e,0x79,0x71};
uchar table2[]={0x88,0x90,0xa0,0xc0};
sbit key1=P3^6;
sbit key2=P3^7;
int flag2=0,t=0,i=0,j=0,m=0,k=0,b=0,c=0,a=0;
int anjian1();
int anjian2();
void delay(uchar z)
{
uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void main()
{
int kk=16;
int set_flag=0;
TMOD=0x11;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
ET0=1;
ET1=1;
EA=1;
EX0=1;
IT0=1;
TR1=1;
while(1)
{
if(anjian1())
{
flag2=1;
}
if(flag2)
{
if(anjian2())
{ a++;
while(anjian2()==1);
}
while(a>0)
{
xianshi(b%10,3);
xianshi(b/10,2);
xianshi(c%10,1);
xianshi(c/10,0);
if(anjian2())
{ a++;
while(anjian2()==1);
}
if(a==2)
{
TR0=1;
}
if(a==3)
{
TR0=0;
}
if(a==4)
{
a=0;
b=0,c=0;
}
}
xianshi(m,3);
xianshi(k,2);
xianshi(j,1);
xianshi(i,0);
}
else
{
P2=0Xff;
P0=0;
t=0;
m=0,k=0,j=0,i=0;
}
kk=key();
if(kk!=16)
{
if(kk==15)
{
TR1=0;set_flag=0;
}
if(kk==14)
{
TR1=1;set_flag=0;//退出模式
}
if(kk==13)
{
set_flag=3;//設(shè)置分的個(gè)位
}
if(kk==12)
{
set_flag=4;//設(shè)置分的十位
}
if(kk==11)
{
set_flag=5;//設(shè)置時(shí)的個(gè)位
}
if(kk==10)
{
set_flag=6;//設(shè)置時(shí)的十位
}
if((kk<10)&&(set_flag!=0))
{
switch(set_flag)
{
case 3:
m=kk;
break;
case 4:
if(kk<6)
k=kk;
break;
case 5:
j=kk;
break;
case 6:
if(kk<6)
i=kk;
break;
}
}
}
kk=16;
}
}
void xianshi(int bianma,int adr)
{
P2=0xff;
P0=0;
P2=~table1[bianma];
delay(1);
P0=table2[adr];
delay(1);
delay(30);
}
void dingshiqi1() interrupt 3
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
t++;
if(t==20)
{
t=0;
m++;
if(m==10)
{
k++;
m=0;
}
if(k==6)
{
j++;
k=0;
}
if(j==10)
{
i++;
j=0;
}
if(i==6)
{
i=0;
}
}
}
void dingshiqi0() interrupt 1
{
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
b++;
if(b==100)
{b=0;
c++;
}
if(c==60)
{
c=0;
}
}
int anjian1()
{
int key;
key=key1;
if(key==0)
{
delay(20);
key=key1;
if(key==0)
{
delay(200);
return 1;
}
}
return 0;
}
int anjian2()
{
int keyy;
keyy=key2;
if(keyy==0)
{
delay(20);
keyy=key2;
if(keyy==0)
{
delay(200);
return 1;
}
}
return 0;
}
void INT0_() interrupt 0
{
flag2=0;
}
int key(void)
{
int k=16;
int temp=0;
P1=0xfe;
temp=P1;
if(temp!=0xfe)
{
delay(25);
if(temp!=0xfe)
{
if(temp==0xee)
{
k=0;
}
if(temp==0xde)
{
k=1;
}
if(temp==0xbe)
{
k=2;
}
if(temp==0x7e)
{
k=3;
}
}
delay(1000);
}
P1=0xfd;
temp=P1;
if(temp!=0xfd)
{
delay(25);
if(temp!=0xfd)
{
if(temp==0xed)
{
k=4;
}
if(temp==0xdd)
{
k=5;
}
if(temp==0xbd)
{
k=6;
}
if(temp==0x7d)
{
k=7;
}
}
delay(1000);
}
P1=0xfb;
temp=P1;
if(temp!=0xfb)
{
delay(25);
if(temp!=0xfb)
{
if(temp==0xeb)
{
k=8;
}
if(temp==0xdb)
{
k=9;
}
……………………
…………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼
所有資料51hei提供下載:
基于單片機(jī)的多功能電子時(shí)鐘.rar
(65.65 KB, 下載次數(shù): 25)
2018-3-14 21:08 上傳
點(diǎn)擊文件名下載附件
有時(shí)鐘和秒表的功能
下載積分: 黑幣 -5
作者:
小小肚皮
時(shí)間:
2019-12-19 19:39
沒(méi)有晶振是怎么運(yùn)行的...
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1