数字频率计12864显示.doc
文本预览下载声明
#include reg52.h
#include TM12864.h
unsigned char timercount;
unsigned char disbuf[6]={0,0,0,0,0,10};
unsigned long freq;
unsigned long int zhouqi;
unsigned long b;
unsigned long T0count; //计数器
/*
void freq_pos() //把频率转换成周期值,并把各位拆开
{
unsigned int us=1000000;
zhuoqi=us/freq;
disbuf[5]=zhuoqi%10+48;
b=zhuoqi/10;
disbuf[4]=b%10+48;
b=b/10;
disbuf[3]=b%10+48;
b=b/10;
disbuf[2]=b%10+48;
b=b/10;
disbuf[1]=b%10+48;
disbuf[0]=b/10+48;
} */
void timer_1(void) interrupt 1 //每次中断10MS
{
TH0=0xdc;
TL0=0x00;
timercount++;
if(timercount==100) //等待定时时间
{ //T0为定时器,T1为16位计数器
TR1=0;
timercount=0;
freq=T0count*65536+TH1*256+TL1;
// freq=freq*16;
TH1=0;
TL1=0;
TR1=1;
}
}
void t0(void) interrupt 3
{
T0count++;
}
void freq_f() //拆开频率值
{
/* disbuf[5]=freq%10+48;
b=freq/10;
disbuf[4]=b%10+48;
b=b/10;
disbuf[3]=b%10+48;
b=b/10;
disbuf[2]=b%10+48;
b=b/10;
disbuf[1]=b%10+48;
disbuf[0]=b/10+48; */
disbuf[0]=(freq/100000)+48;
disbuf[1]=((freq%100000)/10000)+48;
disbuf[2]=(((freq%100000)%10000)/1000)+48;
disbuf[3]=((((freq%100000)%10000)%1000)/100)+48;
disbuf[4]=(((((freq%100000)%10000)%1000)%100)/10)+48;
disbuf[5]=(((((freq%100000)%10000)%1000)%100)%10)+48;
}
void disp_freq(void) //频率显示
{
unsigned char i;
write_12864com(0x8a);
for(i=0;i6;i++)
{
write_12864dat(disbuf[i]);
delay_50us(1);
}
}
void main()
{
initinal();
TMOD=0x51; //T0为定时器,T1为16位计数器
EA=1;
ET0=1;
TH0=0xdc;
TL0=0x00;
TH1=0;
TL1=0;
TR0=1;
TR1=1;
display3();
display();
while(1)
{
freq_f();
disp_freq();
}
}
/*******************************************************************************
*TM12864 描述:
显示全部