收藏 分销(赏)

基于单片机测量频率.doc

上传人:仙人****88 文档编号:9463648 上传时间:2025-03-27 格式:DOC 页数:3 大小:23.50KB
下载 相关 举报
基于单片机测量频率.doc_第1页
第1页 / 共3页
基于单片机测量频率.doc_第2页
第2页 / 共3页
点击查看更多>>
资源描述
* 2007年2月 */ /* 目标MCU:MEGA16 晶振:外部8MHZ */ /*基于LCD的频率计,PC0~PC2对E,RS,RW PORTA接DATA的8根线 用PB0口产生5000HZ方波,并二的N次分频 给ICP1输入补捕捉,既练习TC中断又有ICP *****************************************/ #include<iom16v.h> #include"lcd.h" #pragma interrupt_handler Icp_timer1:6 //ICP中断入口地址 #pragma interrupt_handler Timer0:10 //定时器T0中断入口地址 char string[]="The frequency :"; unsigned int oldcount=0;//捕获时新旧T1值 unsigned int newcount=0; unsigned char i=0; //用以分频 void Int_to_Char(unsigned int i,char *p) //整数到ASCII {p[0]=i/1000+48; p[1]=(i/100)%10+48; p[2]=(i%100)/10+48; p[3]=(i%100)%10+48; } //MCU初始化 void Init_Io() {DDRB=0xff; DDRA=0XFF;//液晶输出 DDRD&=~(1<<PD6); //捕捉引脚 处为输入 DDRC=0X0f; //液晶输出 TIMSK=0X21;//使能ICP捕捉中断;使能T/C0溢出中断 TCCR0=0X02;//8分频,溢出中断T0 TCCR1A=0X00; TCCR1B=0XC2;//8分频;捕捉最小单位1us TCNT0=0; ICR1=0; TCNT1=0; } void main(void) {char a ; uint freq=8888; uchar f[5]={0,0,0,0,'\0'}; Init_Io(); Init_LCD(); SREG=0x80; display_string(string); set_xy(10,1); display_char('H'); display_char('Z'); Delay_nms(100); for(;;) { if((newcount&0xfff8)!=(oldcount&0xfff8)) //低三位不一样,频率 { oldcount=newcount; //改变较大,要接受新值 freq=1000000/oldcount; //count每个数代表1us Int_to_Char(freq,f); set_xy(4,1); display_string(f); Delay_nms(100); //不必太快 } } } //捕捉中断处理程序 void Icp_timer1() { newcount=ICR1; ICR1=0; TCNT1=0; TCCR1B=0XC2;//8分频,噪声抑制,使能捕获 } //方波产生中断程序 void Timer0() {TCNT0=156; i++; PORTB=i;//在PA口产生频率不同的方波,从低位到高位2倍递增,便于试验 }
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服