导航:首页 > 编程语言 > 51测试程序

51测试程序

发布时间:2025-09-05 02:10:54

⑴ 求51单片机测量正弦波(20~100hz)的频率的c程序,最好是已经通过测试过的

首先使用电压比较器电路将正弦波转化成方波,以方便单片机接收,参考下图(该电路可接收峰峰值正负12V的正弦波),如果你的正弦波电路和单片机电路使用了不同的电源,则还需进行隔离处理

#include<AT89X51.H>

//********数码管位代码表(P0口)**********//

unsignedcharcodedispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};

//********数码管段代码表(P2口,共阴且高位接a,低位接h笔段)**********//

unsignedcharcodedispcode[]={0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,

0xFE,0xF6,0xEE,0x3E,0x9C,0x7A,0x9E,0x8E,0x00};

//********8位数据缓冲器**********//

unsignedchardispbuf[8];

unsignedchartemp[8];

unsignedchardispcount;

unsignedcharT0count;

unsignedchartimecount;

bitflag;

unsignedlongx;

//*********初始化模块**********//

voidinitial(void){

TMOD=0x15;

TH0=0;

TL0=0;

TH1=(65536-4000)/256;

TL1=(65536-4000)%256;

TR1=0;

TR0=0;

ET0=1;

ET1=1;

EA=1;

}

//******************************************************//

//*********显示模块**********//

voiddataDisplay(){

unsignedchari;

for(i=0;i<8;i++){

temp[i]=0;

}

i=0;

while(x/10){

temp[i]=x%10;

x=x/10;

i++;

}

temp[i]=x;

for(i=0;i<8;i++){

dispbuf[i]=temp[i];

}

P2=dispcode[dispbuf[dispcount]];

P0=dispbit[dispcount];

dispcount++;

if(dispcount==8){

dispcount=0;

}

}

//******************************************************//

//*********信号频率测量模块**********//

floatfrequency(floatfreq){

initial();

TR0=1;TR1=1;

if(timecount==250){

TR0=0;

freq=T0count*65536+TH0*256+TL0;

return(freq);

}

}

//******************************************************//

//*********信号周期测量模块**********//

floatcycle(floatcount){

initial();

if(P3_4==1){

TR0=1;TR1=1;

if(P3_4==0){

TR0=0;

count=1000000/(timecount*4000+TH1*256+TL1-61536);

}

}

return(count);

}

//******************************************************//

//*********定时中断服务程序1**********//

voidt1(void)interrupt3using0{

//initial();

//TR0=1;

//TR1=1;

TH1=(65536-4000)/256;

TL1=(65536-4000)%256;

timecount++;

}

//******************************************************//

//*********定时中断服务程序2**********//

voidt0(void)interrupt1using0{

//initial();

//TR0=1;

//TR1=1;

T0count++;

}

//******************************************************//

//*********主函数**********//

voidmain(void){

while(1){

x=frequency(x);

if(x<100){

x=cycle(x);

}

dataDisplay();

}

}

//******************************************************//

阅读全文

与51测试程序相关的资料

热点内容
安装移动网络电视要哪些设备 浏览:24
苹果和平精英怎么删除游戏数据 浏览:180
怎么找到网站的照片和视频 浏览:217
手机里存图片的文件 浏览:382
请选择正确的文件夹什么意思 浏览:35
电脑和iphone共享文件夹 浏览:3
可爱的文件夹 浏览:102
数据流有哪些特征 浏览:645
pc机网络安全检查 浏览:894
51测试程序 浏览:861
安卓手机如何打开daf文件 浏览:534
西部数据用的是哪里的固态颗粒 浏览:597
安卓开发app如何不显示 浏览:48
买家秀哪些网站可以看 浏览:286
怎么找论文中的统计数据 浏览:730
java获取字符串的字节数 浏览:883
老人下载戏曲用什么网站 浏览:537
什么app可以查奢侈品 浏览:222
dfm文件 浏览:541
重庆房东直租app哪个靠谱 浏览:847

友情链接