基于MSP430G2553的数字频率计设计.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于MSP430G2553的数字频率计设计

基于MSP430G2553的数字频率计设计 这是经过改进后的程序源码,较上次的设计相比,测频范围提高到3MHz,是因为将上次采用的IO口中断计数,改为两人TIMERB计数,通过TIMERA定时,TIMERB捕获计数,最终实现测频。 相关经验总结 1、测频有两种方法 :侧频法和测周法; 本次设计是采用的timerA定时1S,P1.0口作为被测信号输入口,上升沿捕捉,每来一个上升沿进入IO中断,在中断服务函数里变量i计数一次,当定时1S到时,读取变量i的值,则为被测频率;然后将数据传送到LCD和PC机显示;G2553有两个定时模块timerA和timerB,要特别注意它的寄存器的区别格式,默认的是TIMER A的。 中断向量也有两个,有优先级之分,timer0_A0 (应用于CCR0 优先级最高)timer0_A1(用于CCR1,CCR2和其他寄存器)。 串口通信有UART的异步通信与SPI的同步通信,也有两个通信模块,接收中断和发送中断,对应口位P1.1和P1.2。 MAX232在焊接时,外围的电容可以在0.1UF到10UF,没有影响,9阵的串口接线时也需要特别注意 (见单片机书上179页) 在最后的串口通信中会出现串口调试窗口中不仅显示需要的频率 还会有其他的数据 ,这就需要传进BUFF(8位)中的数据长度不能有其他的 ,因此比如传一个字符串型的DATA 进入BUFF,用到stringlen(),包含头文件sring.h。 5、重点是波特率的配置,特别是当分频系数为小数时: /***msp430g2553_LCD1602_Frequency_Detect**** *grade:2010 *date:2012.7.16 *函数功能:测频率 *管脚:P1.0作为外部频率的入口 *LCD显示:P1.3 P1.5 -- RS EN P2.0-- RW P2.4-2.7 数据端口 */ #include msp430g2553.h #include lcd1602_4.h unsigned long data; int i,j,h,m=0,n=0; char a[15]= ; char *pa=a; double Freq=0; //频率测量结果存放变量 double TA_OverflowCnt=0;//TA溢出次数存放变量 void main(void) { WDTCTL = WDTPW + WDTHOLD; // Stop WDT //端口设置 P1SEL |=BIT0; //允许其第二功能,作为TACLK输入,即待测输入 ----设为1外围模块接口 P2SEL=0x00; //设置P2为通用I/O P1DIR =~BIT0; //P1.0(TACLK)作为输入引脚 P2DIR |= 0xf1; // Set P2 to output direction 1111 0001 P1DIR |= 0x28; //0111 1000 p1.3 1.5 作为LCD使能复位控制端 0010 1000 //initial_lcd(); //LCD初始化 initLCD(); TA1CCR0=65535; //A1定时1s TA1CTL = TASSEL_2 + ID_3 + TACLR + MC_1 + TAIE; // TA1信号作为基准时钟 选择SMCLK作为时钟 选ACLK会不会稳定点? TA0CTL = TASSEL_0 + TACLR + TAIE + MC_2; //外部信号作为A0时钟 ,捕获模式 TACCTL0 = CCIE; //打开A0中断捕获(该句和下一句为中断必要语句) TA1CCTL0 = CCIE; //打开A1中断捕获 _EINT(); //打开全局中断 for (;;) { _enable_interrupts(); data=(int)data; a[0]=data/100000+0x30; a[1]=data/10000%10+0x30; a[2]=data/1000%10+0x30; a[3]=data/100%10+0x30; a[4]=data/10%10+0x30

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档