测量交流信号的频率.doc_第1页
测量交流信号的频率.doc_第2页
测量交流信号的频率.doc_第3页
测量交流信号的频率.doc_第4页
测量交流信号的频率.doc_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

#include #include #define uint unsigned int#define uchar unsigned charsfr P1ASF = 0X9D; /P1口选择功能寄存器sfr ADC_CONTR= 0XBC; /ADC控制寄存器sfr ADC_RES = 0XBD; /ADC转换结果寄存器高sfr ADC_RESL = 0XBE; /ADC转换结果寄存器低sbit rs=P10;sbit en=P11;float result,max,v=5.00,result1,result2; unsigned long q=0,fre;uchar r10,sta,p=0,i;/*延时函数*/void delay(uint z) uint x,y; for (x=0;xz;x+) for (y=0;y140;y+);void write_data(uchar shuju) /rw=0; rs=1; P0=shuju; delay(5); en=1; delay(5); en=0;void write_fre(unsigned long pin) /写入频率函数 uchar ge ,shi,bai,qian,wan,shiwan; ge=pin%10/1; shi=pin%100/10; bai=pin%1000/100; qian=pin%10000/1000; wan=pin%100000/10000; shiwan=pin%1000000/100000; write_data(shiwan+48); delay(5); write_data(wan+48); delay(5); write_data(qian+48); delay(5); write_data(bai+48); delay(5); write_data(shi+48); delay(5); write_data(ge+48); delay(5); void write_com(uchar com) /写命令函数 rs=0;P0=com;delay(5); en=1; delay(5); en=0; void init_lcd()/初始化液晶 write_com(0x38);/显示设置模式/delay(5); write_com(0x06);/数据指针加1 delay(5); /write_com(0x01);/清屏函数 /delay(5);write_com(0x0e);/显示光标/delay(5); write_com(0x80);/delay(5);void write_rank(float temp) uint ranb; uchar j; temp*=10000; ranb=(uint)temp;r0=U;r1=p;r2=:;r3=ranb/10000%10+48;r4=.;r5=ranb/1000%10+48;r6=ranb/100%10+48;r7=ranb/10%10+48;r8=ranb%10+48;r9=V; write_com(0x80+0x40); for(j=0;j9;j+) write_data(rj); delay(5); void init_timer0() ET0=1; /打开定时器0中断 TMOD=0x01; /设置为模式1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; /50MS TF0=0; void init_int0() EA=1;/打开总中断 IT0=1; /设置外部中断0为边沿触发方式 void timer0() interrupt 1 TH0=(65536-50000)/256; TL0=(65536-50000)%256; /50MS +p; void int0() interrupt 0 +q; /脉冲次数/*AD设置函数*/void ADC_init() /AD转换初始化 ADC_CONTR|=0X80; /打开ADC转换电源 delay(5); ADC_CONTR=0xef; _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); _nop_(); void main() init_lcd();init_timer0(); while(1) uint n=5000; sta=0;max=0;while(n-) /write_com(0x01); ADC_init(); while(!(sta=ADC_CONTR&0x10); /ADC_CONTR&=0x7f;result1=ADC_RES;result2=ADC_RESL; result=(result1*4+result2)*v/1024;/保存A/D转换结果ADC_RES=0;ADC_RESL=0; if(maxresult)/测幅值部分 max=result; write_rank(max); delay(5); init_int0(); EX0=1; /打开外部中断 TR0=1;/打开定时器中断 while(p40); /每一秒计算一次 EA=0; /关闭外部中断 fre=q-1; /计算频率 q=0; p=0;w

温馨提示

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

评论

0/150

提交评论