单片机简易位数码管频率计c语言程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

#include

#define uchar unsigned char

#define uint unsigned int

#define ulong unsigned long

unsigned char code duan[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //段码控制

unsigned char code wei[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdF}; //位选控制查表的方法控制//0xfe,0xfd,0xfb,0xf7,0xef,0xdF

void display(uchar,uchar,uchar,uchar,uchar,uchar);

void delay(uint);

uchar flag,n,a,b,c,d,e,f;

ulong m;

uint num;

void main()

{

TMOD=0x25; //设置定时器t1方式2,计数器t0方式0

TH0=0;

TL0=0;

TH1=6;

TL1=6;

EA=1;

ET0=1;

ET1=1;

TR0=1;

TR1=1;

while(1)

{

if(flag)

{

m=n*65536+256*TH0+TL0;

m=256*TH0+TL0;

a=m/100000;

b=m%100000/10000;

c=m%100000%10000/1000;

d=m%100000%10000%1000/100;

e=m%100000%10000%1000%100/10;

f=m%100000%10000%1000%100%10;

}

display(a,b,c,d,e,f);

}

void display(uchar a,uchar b,uchar c,uchar d,uchar e,uchar f) //数码管显示子程序{

P0=wei[0];

P2=duan[a];

delay(1);

P0=wei[1];

P2=duan[b];

delay(1);

P0=wei[2];

P2=duan[c];

delay(1);

P0=wei[3];

P2=duan[d];

delay(1);

P0=wei[4];

P2=duan[e];

delay(1);

P0=wei[5];

P2=duan[f];

delay(1);

}

void delay(uint xms) //延时子程序

{

uint i,j;

for(i=xms;i>0;i--)

for(j=110;j>0;j--);

}

void t0() interrupt 1 //计数器t0服务子程序

{

n++;

}

void T1_time()interrupt 3 //定时器t1服务子程序

num++;

if(num==4000) {

TR0=0;

TR1=0;

flag=1;

}

}

相关文档
最新文档