基于单片机的频率计设计和C语言源代码_第1页
基于单片机的频率计设计和C语言源代码_第2页
基于单片机的频率计设计和C语言源代码_第3页
基于单片机的频率计设计和C语言源代码_第4页
基于单片机的频率计设计和C语言源代码_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文是基于AT89C51单片机的频率计的C源程序。该频率计主要实现的功能有如下几个:1. 测试功能它表明数字频率计所具备的全部测试功能,一般包括测频,周期,累计脉冲数,频率比,时间间隔及自较等功能。2. 测量范围它说明不同功能的有效测量范围。如测频率时,测量范围是数字频率计处于正常工作条件下,被测信号的频率范围,一般用频率的上,下限值表示,低端大部分从10HZ开始;高端因不同的频率计而异。因此高端频率是确定低,中,高速计数器的依据。在测量周期时,测量范围常用周期的最大值,最小值表示。3. 输入特性数字频率计一般有23个输入通道,测试不同项目时,被测信号可经不同的通道输入仪器。输入特性是表明数字式频率计于被测信号源相连的一组特性参数,通常包括以下几个方面。(1)输入灵敏度。通常指仪器能正常工作的最小输入电压的有效值。常用的数字频率计的灵敏度在100mV左右。(2)最大输入电压。指仪器所能允许的最大输入电压值,被测信号超过该值,则仪器不能保证正常工作,甚至会损坏。(3)输入耦合方式。仪器设置AC和DC两种耦合方式。AC耦合时,被测信号经隔直电容输入,DC耦合时,被测信号直接进入输入电路。AC耦合时适用于测量带有直流电平的信号,DC耦合适用于低频脉冲或阶跃方波信号的测量。(4)输入阻抗。为了减轻信号源的负载,数字式频率计一般采用高频输入阻抗。输入阻抗由输入电阻和输入电容两部分组成。4. 显示及工作方式它表明可显示的内容,显示数字的位数,所用的显示器件以及一次测量完毕显示测量结果的持续时间。有的还说明电子计数器是“不记忆”显示方式或“记忆”显示方式。5. 输出仪器可以直接输出的标准频率信号有几种,而且可以表明输出测量数据的编码方式和输出电平等。#include#include #define uchar unsigned char#define uint unsigned intuchar temp8=0,0,0,0,0,0,0,0;uchar temp18=0,0,0,0,0,0,0,0;uchar T1count,timecount,T1count1,timer,yushu,yushu1;long fre,frx;float zhou;bit flag;bit flag1;void delay(uchar);bit result;sbit ird=P11;sbit id=P10;sbit clr=P12;sbit en=P15;sbit rw=P16;sbit rs=P17;sbit rd=P37;sbit kb=P13;sbit kx=P14;sbit A0=P36;sbit A1=P37;bit start;uchar code tab1=fre: ;uchar code tab2=frx: ;void delay(uchar z) uchar x,y; for(x=z;x0;x-) for(y=110;y0;y-);panduan_bz() rs = 0; rw = 1; en = 1; result = (bit)(P2&0x80); en = 0; return(result);void write_com(uchar com) while(panduan_bz(); rs = 0; rw = 0; en = 0; P2=com; delay(5); en = 1; delay(5); en = 0;void write_dat(uchar dat) while(panduan_bz(); rs = 1; rw = 0; en = 0; P2=dat; delay(5); en = 1; delay(5); en = 0;void init()uchar num;en = 0;write_com(0x38);write_com(0x0c);write_com(0x06);write_com(0x01);write_com(0x80);for(num=0;num16;num+) write_dat(tab1num); delay(5); write_com(0x80+0x40);for(num=0;num16;num+) write_dat(tab2num); delay(5); void init1()ird=1;id=1;TMOD=0x55; TH1=0;TL1=0; /初值为0TH0=0;TL0=0;TR0=1;TR1=1;IE=0x8a;RCAP2H=(65536-47850)/256; /重装载计数器赋初值RCAP2L=(65536-47850)%256;ET2=1; /开定时器2中断EA=1; /开总中断TR2=1;void display()uchar i; fre=(T1count*65536+TH1*256+TL1); /频率计算 temp0=fre/; temp1=fre%/; temp2=fre%/; temp3=fre%/10000; temp4=fre%10000/1000; temp5=fre%10000%1000/100; temp6=fre%10000%1000%100/10; temp7=fre%10000%1000%100%10; if(fre=999) write_com(0x80+4); for(i=0;i=1000) write_com(0x80+4); for(i=0;i8;i+) write_dat(0x30+tempi); /保存要显示的数到显示缓冲区 if(i=4) write_dat(.); write_dat(K); write_dat(H); write_dat(z); T1count=0; timecount=0; TH1=0; TL1=0; TH0=0; TL0=0; /定时器0重新装值,保证精确(不加的话只是最多差0.001s,0.1%)void display1() uchar j; float zhou; zhou=(T1count1*65536+TH0*256+TL0)*1.0549); frx=(long)(zhou)*256); temp10=frx/; temp11=frx%/; temp12=frx%/; temp13=frx%/10000; temp14=frx%10000/1000; temp15=frx%10000%1000/100; temp16=frx%10000%1000%100/10; temp17=frx%10000%1000%100%10; if(frx=999) write_com(0x80+0x40+4); for(j=0;j=1000) / frx=frx/1000; write_com(0x80+0x40+4); for(j=0;j8;j+) write_dat(0x30+temp1j); /保存要显示的数到显示缓冲区 if(j=4) write_dat(.); write_dat(K); write_dat(H); write_dat(z); void main(void)init();init1();while(1) rd=0; ird=1; if(flag=1) /标志位为1,表示进行完了一次1S记数 flag=0; kb=0; kx=1; clr=0; ird=0; id=0; display1(); display(); else kb=1; kx=0; void t1(void) interrupt 3 / 记数器中断,加1T1count+;void t0(void) interrupt 1 / 记数器中断,加1T

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论