文档详情

数字频率计12864显示.doc

发布:2018-03-07约3.73千字共10页下载文档
文本预览下载声明
#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 描述:
显示全部
相似文档