基于89C51的等精度频率计LCD1602显示
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
单片机源程序如下:
- /*************************************************************************************************
- * FUNCTION NAME:等精度频率计 *
- * CREATED BY :wu zhi zhong ,ChongQing Institute of Technology *
- * INPUT :frequency *
- * OUTPUT :frequency *
- *
- *************************************************************************************************/
- #include<reg51.h>
- #include<stdio.h>
- #include<lcd.c>
- #include<math.h>
- sbit p32=P3^2;
- main()
- {
- unsigned long int period,k,j,i=0;
- float f,m;
- char buff[30];
- init_LCD();
- P2=0x00;
- while(1)
- {
- TMOD=0X09;
- TH0=0;
- TL0=0;
- while(p32==1);
- TR0=1;
- while(p32==0);
- while(p32==1);
- TR0=0;
- period=TH0*256+TL0;
- while(period<=500) /*判断是否分频及计算分频次数*/
- { P2++;
- i++;
- period=period*10;
- if(i==6)
- {P2=0x00;
- break;
- }
- }
- k=pow(10,i); /* 10的i次方*/
- f=(1000000.0/(2*period))*k;
- if(f<1000)
- sprintf(buff,"f=%5.2fHZ",f);
- ……………………
- …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
基于89C51的等精度频率计LCD1602显示.rar
(147.35 KB, 下载次数: 112)
|