標(biāo)題:
數(shù)碼管顯示數(shù)字鐘設(shè)計(jì)
[打印本頁]
作者:
1696767363
時(shí)間:
2019-1-2 10:24
標(biāo)題:
數(shù)碼管顯示數(shù)字鐘設(shè)計(jì)
程序源如下:
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit dula=P2^6;
sbit wela=P2^7;
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
sbit key4=P1^3;
sbit buzzer=P3^7;
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
uchar code table1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef,0xf7,0xfc,0xb9,0xde,0xf9,0xf1};
uint num,num1,num2,num3,shi1,shi2,fen1,fen2,miao1,miao2,keynum1,keynum4;
uint nnum1,nnum2,nnum3,nshi1,nshi2,nfen1,nfen2,nmiao1,nmiao2;
void delayms(uint xms)
{
uint i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--) ;
}
void display(uchar A,uchar B,uchar C,uchar D,uchar E,uchar F)
{
miao1=num1/10;
miao2=num1%10;
fen1=num2/10;
fen2=num2%10;
shi1=num3/10;
shi2=num3%10;
nmiao1=nnum1/10;
nmiao2=nnum1%10;
nfen1=nnum2/10;
nfen2=nnum2%10;
nshi1=nnum3/10;
nshi2=nnum3%10;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
dula=1;
P0=table[A];
dula=0;
delayms(1);
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
dula=1;
P0=table[B];
dula=0;
delayms(1);
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
dula=1;
P0=table[C];
dula=0;
delayms(1);
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
dula=1;
P0=table[D];
dula=0;
delayms(1);
P0=0xff;
wela=1;
P0=0xef;
wela=0;
dula=1;
P0=table[E];
dula=0;
delayms(1);
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
dula=1;
P0=table[F];
dula=0;
delayms(1);
}
void keyscan()
{
if(key1==0)
{ delayms(10);
if(key1==0)
{
keynum1++;
while(!key1);
}
}
if(keynum1!=0)
{ TR0=0;
if(keynum1==1)
{
if(key2==0)
{
delayms(10);
if(key2==0)
{
num1++;
if(num1==60)
num1=0;
while(!key2);
}
}
if(key3==0)
{
delayms(10);
if(key3==0)
{
if(num1==0)
num1=60;
num1--;
while(!key3);
}
}
}
if(keynum1==2)
{ if(key2==0)
{ delayms(10);
if(key2==0)
{ num2++;
if(num2==60)
num2=0;
while(!key2);
}
}
if(key3==0)
{ delayms(10);
if(key3==0)
{ if(num2==0)
num2=60;
num2--;
while(!key3);
}
}
}
if(keynum1==3)
{ if(key2==0)
{ delayms(10);
if(key2==0)
{ num3++;
if(num3==24)
num3=0;
while(!key2);
}
}
if(key3==0)
{ delayms(10);
if(key3==0)
{
if(num3==0)
num3=24;
num3--;
while(!key3);
}
}
}
if(keynum1==4)
{
keynum1=0;
TR0=1;
}
}
if(key4==0)
{
delayms(10);
if(key4==0)
{ keynum4++;
while(!key4);
}
}
if(keynum4!=0)
{ TR0=0;
if(keynum4==1)
{ if(key2==0)
{ delayms(10);
if(key2==0)
{ nnum1++;
if(nnum1==60)
nnum1=0;
while(!key2);
}
}
if(key3==0)
{ delayms(10);
if(key3==0)
{ if(nnum1==0)
nnum1=60;
nnum1--;
while(!key3);
}
}
}
if(keynum4==2)
{ if(key2==0)
{ delayms(10);
if(key2==0)
{ nnum2++;
if(nnum2==60)
nnum2=0;
while(!key2);
}
}
if(key3==0)
{ delayms(10);
if(key3==0)
{ if(nnum2==0)
nnum2=60;
nnum2--;
while(!key3);
}
}
}
if(keynum4==3)
{ if(key2==0)
{ delayms(10);
if(key2==0)
{ nnum3++;
if(nnum3==24)
nnum3=0;
while(!key2);
}
}
if(key3==0)
{ delayms(10);
if(key3==0)
{ if(nnum3==0)
nnum3=24;
nnum3--;
while(!key3);
}
}
}
if(keynum4==4)
{
keynum4=0;
TR0=1;
}
}
}
void main()
{ num3=15;num2=29;num3=0;
nnum3=15;nnum2=30;nnum3=0;
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536- 50000)%256;
EA=1;
ET0=1;
TR0=1;
while(1)
{ keyscan();
if(keynum4==0)
{
display(shi1,shi2,fen1,fen2,miao1,miao2);
}
if(keynum4!=0)
{ display(nshi1,nshi2,nfen1,nfen2,nmiao1,nmiao2);
}
if(keynum1==0)
if(num1==nnum1&num2==nnum2&num3==nnum3)
{
buzzer=0;
delayms(5000);
buzzer=1;
}
}
}
void T0_time() interrupt 1
{ TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num++;
if(num==20)
{
num=0;
num1++;
if(num1==60)
num1=0;
if(num1==0)
{
num2++;
if(num2==60)
num2=0;
if(num2==0)
{
num3++;
if(num3==24)
num3=0;
}
}
}
}
-446c4dc3b99bd6e1.png
(162.42 KB, 下載次數(shù): 29)
下載附件
2019-1-2 10:22 上傳
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1