基于单片机的通用电子计数器的设计 联系客服

发布时间 : 星期五 文章基于单片机的通用电子计数器的设计更新完毕开始阅读

} }

//============================================================

//*********数据转换函数开始******* void trans_count() {

if(key==1) {

z=k*65536+TH0*256+TL0; if(z>=999999) {z=999999;} }

if(key==2) {

z=((count*65536+TH1*256+TL1)*12000)/110592; //11.0592期时间为:12/11.0592 us if(z>=999999) {z=999999;} }

tab_freq[0]=z/100000; //十万位 tab_freq[1]=(z0000)/10000; //万位 tab_freq[2]=(z000)/1000; //千位 tab_freq[3]=(z00)/100; //百位 tab_freq[4]=(z0)/10; //十位 tab_freq[5]=z; //个位 }

每个机器周17

//=============================================================== //*********显示函数开始***********

void disp() {

uchar i,n,a;

n=0x01; //共阳位选 //n=0xfe; //共阴位选 dula=0;

wela=1; // 选中位选 P0=n;

for(i=0;i<6;i++) { wela=0;

dula=1; //选中段选 a=tab_freq[i]; P0=table[a]; dula=0;

wela=1; // 选中位选 P0=n; delay(2);

n=n<<1; //共阳位选 /*n=~n; n=n<<1;

n=~n; */ //共阴数码管 } }

//*********延时函数开始************ void delay(uint a)

18

{

uint i,n; for(i=a;i>0;i--) for(n=110;n>0;n--); }

//============================================================= //*********按键函数开始************* void freq_key() {

if(k5==0) {

delay(10); if(k5==0) {

key++; while(k5==0);

if(key==1) //测频率 { k=0; count=0; TH0=0x00;

TL0=0X00; //T0 TH1=0x4c;

TL1=0X00; //50ms */ TR0=1; TR1=1; }

if(key==2) // {

19

z=0; k=0; count=0; TH0=0xff;

TL0=0Xf5; //T0 TH1=0x00;

TL1=0X00; //T1 TR0=1;

while(TL0==0xf5); //确保当外部时钟信号为下降沿时,T1开始计数 TR1=1; }

if(key>=3) { z=0; key=0; } } }

}

参考文献:

[1]张毅刚,单片机原理及应用,高等教育出版社,2003年

[2]李广弟,朱月秀,冷祖祁. 单片机基础[M]北京:北京航空航天大学出版社,2007年 [3]王建校、杨建国、宁改娣等. 51系列单片机及C51程序设计[M]北京:科学出版社,2002年

[4]马忠梅、马岩、张凯等. 单片机的c语言应用程序设计[M]北京:北京航空航天大学出版社,1997年

[5]林立,张俊亮,曹旭东,刘得军.单片机原理及应用[M],电子工业出版社,2010.5

20