基于51单片机的频率计设计 c语言程序
代码1:
#include
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
sbit dula=P2^6;
sbit wela=P2^7;
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
uchar tt=0,mode;
ulong num,num1;
uchar code shu[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,
0x7c,0x39,0x5e,0x79,0x71};
void delay(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f)
{
dula=1;
P0=shu[a];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay(3);
dula=1;
P0=shu[b];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(3);
dula=1;
P0=shu[c];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay(3);
dula=1;
P0=shu[d];
dula=0;
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
delay(3);
dula=1;
P0=shu[e];
dula=0;
P0=0xff;
wela=1;
P0=0xef;
wela=0;
delay(3);
dula=1;
P0=shu[f];
dula=0;
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
delay(3);
}
ulong read()
{
uchar t1,th1,th2;
uint val;
while(1)
{
th1=TH1;
t1=TL1;
th2=TH1;
if(th1==th2)
break;
}
val=th1*256+t1;
return val;
}
void keyscan()
{
if(key1==0)
{
mode=1;
TMOD=0X90;
TH1=0;
TL1=0;
ET1=1;
TR1=1;
EX1=1;
EA=1;
IT1=1;
ET0=0;
}
if(key2==0)
{
mode=2;
TMOD=0X51;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=0;
TL1=0;
ET0=1;
ET1=1;
TR1=1;
TR0=1;
EX1=0;
EA=1;
}
if(key3==0)
{
mode=3;
TMOD=0X51;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=0;
TL1=0;
ET0=1;
ET1=1;
TR1=1;
TR0=1;
EX1=0;
EA=1;
}
}
void main()
{
uint aa,bb,cc,dd,ee,ff;
while(1)
{
keyscan();
if(mode == 1)
{
aa=num/100000;
bb=num/10000%10;
cc=num/1000%10;
dd=num/100%10;
ee=num/10%10;
ff=num%10;
display(aa,bb,cc,dd,ee,ff);
}
if(mode ==2)
{
num=num1*2;
aa=num/100000;
bb=num/10000%10;
cc=num/1000%10;
dd=num/100%10;
ee=num/10%10;
ff=num%10;
display(aa,bb,cc,dd,ee,ff);
}
if(mode==3)
{
num=500000/num1;
aa=num/100000;
bb=num/10000%10;
cc=num/1000%10;
dd=num/100%10;
ee=num/10%10;
ff=num%10;
display(aa,bb,cc,dd,ee,ff);
}
}
}
void T0_time() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
if(tt>=10)
{
tt=0;
num1=read();
TH1=0;
TL1=0;
}
}
void exter() interrupt 2
{
num=read()+1;
TH1=0;
TL1=0;
}
代码2:
#include
#define uint unsigned int
#define uchar unsigned char
#define ulong unsigned long
sbit dula=P2^6;
sbit wela=P2^7;
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
uchar tt=0,mode;
ulong num,num1;
uchar code shu[]={0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,
0x7c,0x39,0x5e,0x79,0x71};
void delay(uint z)
{
uint i,j;
for(i=z;i>0;i--)
for(j=110;j>0;j--);
}
void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f)
{
dula=1;
P0=shu[a];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay(3);
dula=1;
P0=shu[b];
dula=0;
P0=0xff;
wela=1;
P0=0xfd;
wela=0;
delay(3);
dula=1;
P0=shu[c];
dula=0;
P0=0xff;
wela=1;
P0=0xfb;
wela=0;
delay(3);
dula=1;
P0=shu[d];
dula=0;
P0=0xff;
wela=1;
P0=0xf7;
wela=0;
delay(3);
dula=1;
P0=shu[e];
dula=0;
P0=0xff;
wela=1;
P0=0xef;
wela=0;
delay(3);
dula=1;
P0=shu[f];
dula=0;
P0=0xff;
wela=1;
P0=0xdf;
wela=0;
delay(3);
}
ulong read()
{
uchar t1,th1,th2;
uint val;
while(1)
{
th1=TH1;
t1=TL1;
th2=TH1;
if(th1==th2)
break;
}
val=th1*256+t1;
return val;
}
void keyscan()
{
if(key1==0)
{
mode=1;
TMOD=0X90;
TH1=0;
TL1=0;
ET1=1;
TR1=1;
EX1=1;
EA=1;
IT1=1;
ET0=0;
}
if(key2==0)
{
mode=2;
TMOD=0X51;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=0;
TL1=0;
ET0=1;
ET1=1;
TR1=1;
TR0=1;
EX1=0;
EA=1;
}
if(key3==0)
{
mode=3;
TMOD=0X51;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TH1=0;
TL1=0;
ET0=1;
ET1=1;
TR1=1;
TR0=1;
EX1=0;
EA=1;
}
}
void main()
{
uint aa,bb,cc,dd,ee,ff;
while(1)
{
keyscan();
P1=0xff;
if(mode == 1)
{
key1=0;
aa=num/100000;
bb=num/10000%10;
cc=num/1000%10;
dd=num/100%10;
ee=num/10%10;
ff=num%10;
display(aa,bb,cc,dd,ee,ff);
}
if(mode ==2)
{
key2=0;
num=num1*2+3;
aa=num/100000;
bb=num/10000%10;
cc=num/1000%10;
dd=num/100%10;
ee=num/10%10;
ff=num%10;
display(aa,bb,cc,dd,ee,ff);
}
if(mode==3)
{
key3=0;
num=500000/num1;
aa=num/100000;
bb=num/10000%10;
cc=num/1000%10;
dd=num/100%10;
ee=num/10%10;
ff=num%10;
display(aa,bb,cc,dd,ee,ff);
}
}
}
void T0_time() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
tt++;
if(tt>=10)
{
tt=0;
num1=read();
TH1=0;
TL1=0;
}
}
void exter() interrupt 2
{
num=read()+1;
TH1=0;
TL1=0;
}
本文来源:https://www.2haoxitong.net/k/doc/a96fc9f36aec0975f46527d3240c844769eaa0c5.html
文档为doc格式