基于51单片机的频率计设计-c语言程序

发布时间:2017-12-18 13:57:17   来源:文档文库   
字号:

基于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

《基于51单片机的频率计设计-c语言程序.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式