欢迎来到天天文库
浏览记录
ID:10790633
大小:41.00 KB
页数:11页
时间:2018-07-08
《测量交流信号的频率》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#include#include#defineuintunsignedint#defineucharunsignedcharsfrP1ASF=0X9D;//P1口选择功能寄存器sfrADC_CONTR=0XBC;//ADC控制寄存器sfrADC_RES=0XBD;//ADC转换结果寄存器高sfrADC_RESL=0XBE;//ADC转换结果寄存器低sbitrs=P1^0;sbiten=P1^1;floatresult,max,v=5.00,result1,result2;unsignedlongq=0,fre;ucharr[10],sta,p=0,i;
2、/*延时函数*/voiddelay(uintz){uintx,y;for(x=0;x3、00;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);}voidwrite_com(ucharcom)//写命令函数{rs=0;P0=com;delay(5);en=1;delay(5);en=0;}voidinit_lcd()//初始化液晶{writ4、e_com(0x38);//显示设置模式//delay(5);write_com(0x06);//数据指针加1delay(5);//write_com(0x01);//清屏函数//delay(5);write_com(0x0e);//显示光标//delay(5);write_com(0x80);//delay(5);}voidwrite_rank(floattemp){uintranb;ucharj;temp*=10000;ranb=(uint)temp;r[0]='U';r[1]='p';r[2]=':';r[3]=ranb/10000%10+48;r[4]='.';r[5]=ranb/15、000%10+48;r[6]=ranb/100%10+48;r[7]=ranb/10%10+48;r[8]=ranb%10+48;r[9]='V';write_com(0x80+0x40);for(j=0;j<9;j++){write_data(r[j]);delay(5);}}voidinit_timer0(){ET0=1;//打开定时器0中断TMOD=0x01;;//设置为模式1TH0=(65536-50000)/256;TL0=(65536-50000)%256;//50MSTF0=0;}voidinit_int0(){EA=1;//打开总中断IT0=1;//设置外部中断0为边沿触发方6、式}voidtimer0()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;//50MS++p;}voidint0()interrupt0{++q;//脉冲次数}/*AD设置函数*/voidADC_init()//AD转换初始化{ADC_CONTR7、=0X80;//打开ADC转换电源delay(5);ADC_CONTR=0xef;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}voidmain(){init_lcd();init_timer0();while(1){uintn=508、00;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(ma
3、00;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);}voidwrite_com(ucharcom)//写命令函数{rs=0;P0=com;delay(5);en=1;delay(5);en=0;}voidinit_lcd()//初始化液晶{writ
4、e_com(0x38);//显示设置模式//delay(5);write_com(0x06);//数据指针加1delay(5);//write_com(0x01);//清屏函数//delay(5);write_com(0x0e);//显示光标//delay(5);write_com(0x80);//delay(5);}voidwrite_rank(floattemp){uintranb;ucharj;temp*=10000;ranb=(uint)temp;r[0]='U';r[1]='p';r[2]=':';r[3]=ranb/10000%10+48;r[4]='.';r[5]=ranb/1
5、000%10+48;r[6]=ranb/100%10+48;r[7]=ranb/10%10+48;r[8]=ranb%10+48;r[9]='V';write_com(0x80+0x40);for(j=0;j<9;j++){write_data(r[j]);delay(5);}}voidinit_timer0(){ET0=1;//打开定时器0中断TMOD=0x01;;//设置为模式1TH0=(65536-50000)/256;TL0=(65536-50000)%256;//50MSTF0=0;}voidinit_int0(){EA=1;//打开总中断IT0=1;//设置外部中断0为边沿触发方
6、式}voidtimer0()interrupt1{TH0=(65536-50000)/256;TL0=(65536-50000)%256;//50MS++p;}voidint0()interrupt0{++q;//脉冲次数}/*AD设置函数*/voidADC_init()//AD转换初始化{ADC_CONTR
7、=0X80;//打开ADC转换电源delay(5);ADC_CONTR=0xef;_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}voidmain(){init_lcd();init_timer0();while(1){uintn=50
8、00;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(ma
此文档下载收益归作者所有