测量交流信号的频率.doc

上传人:壹****1 文档编号:559760917 上传时间:2023-12-09 格式:DOC 页数:11 大小:41.01KB
返回 下载 相关 举报
测量交流信号的频率.doc_第1页
第1页 / 共11页
测量交流信号的频率.doc_第2页
第2页 / 共11页
测量交流信号的频率.doc_第3页
第3页 / 共11页
测量交流信号的频率.doc_第4页
第4页 / 共11页
测量交流信号的频率.doc_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《测量交流信号的频率.doc》由会员分享,可在线阅读,更多相关《测量交流信号的频率.doc(11页珍藏版)》请在金锄头文库上搜索。

1、#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

2、;/*延时函数*/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;

3、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

4、); 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+4

5、8;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; /设置外部中

6、断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_time

7、r0(); 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;write_com(0x80); write_data(f);delay(5);write_data(r);delay(5);write_data(e);delay(5);write_data(:);write_fre(fre);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号