发布时间 : 星期五 文章基于单片机的通用电子计数器的设计更新完毕开始阅读
} }
//============================================================
//*********数据转换函数开始******* 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