仿真图形是对的,我自己本身实际实物也是做出来了,所以上传的资料没问题
但实际中proteus仿真并不精准,可能也会出现仿不出来的情况
有兴趣的网友可以试着做实物,这个是一定成功的。
数字钟仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- #include <reg52.h>
- unsigned char code wsk[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,
- 0xff};
- void mDelay(unsigned int Delay);
- void biu();
- void DSQ();
- unsigned char ket();
- sbit k0=P3^0;
- sbit k1=P3^1;
- sbit k2=P3^2;
- sbit k3=P3^3;
- int m=0,s=0,f=0,x=0,j=0,n=17,y=5,r=4,ns=0,nf=0,nx=1,i=0;
- unsigned char num=0,mun=0;
- void main()
- {
- unsigned char key1;
- DSQ();
- while(1)
- {
- biu ();
- key1=ket();
- if(s==ns&&f==nf&&x==nx)
- {
- for(i=0;i<10;i++)
- {
- P1=0;
- mDelay(1000);
- P1=1;
- mDelay(1000);}
- }
- switch(key1)
- {
- case 1:TR0=0;num++;if(num==4){TR0=1;num=0;}break;
- case 2:if(j==0)
- {
- if(num==1)
- {
- s++;
- if(s==60)
- s=0;
- }
- if(num==2)
- {
- f++;
- if(f==60)
- f=0;}
- if(num==3)
- {
- x++;
- if(x==24)
- x=0;
- }
- }
- if(j==1)
- {
- if(num==1)
- {
- r++;
- if(y==1||y==3||y==5||y==7||y==8||y==10||y==12)
- {
- if(r==32)
- r=1;
- }
- if(y==4||y==6||y==9||y==11)
- {
- if(r==31)
- r=1;
- }
- if(n%4==0&&y==2)
- {
- if(r==30)
- r=1;
- }
- if(n%4!=0&&y==2)
- {
- if(r==29)
- r=1;
- }
-
- }
- if(num==2)
- {
- y++;
- if(y==13)
- y=1;}
- if(num==3)
- n++;
- }
- if(j==2)
- {
- if(num==1)
- {
- ns++;
- if(ns==60)
- ns=0;
- }
- if(num==2)
- {
- nf++;
- if(nf==60)
- nf=0;
- }
- if(num==3)
- {
- nx++;
- if(nx==24)
- nx=0;
- }
- }
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
数字钟.zip
(10.27 MB, 下载次数: 61)
|