MSPG频率计设计.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数字式频率计 一、设计 在电子技术中,频率是最基本的参数之一,数字频率计具有精度高、使用方便、测量迅速、以及便于实现测量过程自动化等优点,是近代电子技术领域的重要工具之一,在许多领域得到广泛应用。本系统以超低功耗MSP430G2553单片机为核心处理芯片来测量信号的频率,通过定时器A采用计数法完成信号频率测量,并将被测频率值通过LCD12864液晶串行显示。频率可测量范围在1Hz到999MHz之间。如需要,范围可继续扩宽,频率计的误差在1%以内。 二、原理图 三、引脚说明 表1 MSP430G2553引脚功能说明表 LCD12864接口说明 引脚序号 引脚名称 功能说明 备注 1 VSS 模块的电源地 2 VDD 模块的电源正端 4 RS(CS) 并行指令/数据选择信号;串行片选信号 5 R/W(SID) 并行读写选择信号;串行的数据口 6 E(CLK) 并行使能信号;串行的同步时钟 15 PSB PSB并/串行接口选择:H-并行,L-串行 19 LED_A 背光源正极 20 LED_K 背光源负极(0V) 四、软件设计流程图 主函数流程图如图2所示。在主程序中,主要对单片机配置进行初始化和屏幕初始化,以及频率信号数据的处理并实时显示。 (二)单片机初始化函数 单片机初始化函数包括对看门狗定时器模式的设置、I/O口输入/输出功能的配置。定时器A所需时钟源、分频系数的选择,并将总中断打开。函数流程图如图3所示。 (三)中断函数 中断函数流程图如图4所示。当定时器A溢出后就进入中断,count就加上65535。 (四)频率显示函数 频率显示流程图如图5所示。频率显示函数包含对定时器A相关内容的操作,将定时器A计数寄存器内容清零后,设置定时器A的工作模式,产生 1s 计数闸门,关闭定时器A,记下count的值即为所测得频率的大小。最后根据数据的大小,按不同的单位将数据通过12864液晶显示屏串行显示出来。 五、程序源代码 /*************************************************************** 基于定时器A,采用计数法完成信号频率测量 使用片内时钟DOC,时钟频率默认值 采用12864串行显示 频率测量范围:1Hz -- MHz(只要需要,范围可以继续扩宽,误差在1%以内) 被测信号输入管脚P1.0 WR数据引脚 P1.4 SCLK模拟时钟引脚 P1.5 PSB串行/并行选择引脚 接GND *****************************************************************/ #includemsp430g2553.h #define uint unsigned int #define uchar unsigned char #define ulint unsigned long int ulint count=0; void delay(uint t); void delay1(void); void int_430(void); void sendbyte(uchar zdata); void write_com(uchar cmdcode); void write_data(uchar Dispdata); void lcdinit(); void print_string( char *s); void display(void); /*************主函数************/ void main() { int_430(); lcdinit(); while(1) { display(); count=0; } } /*************延时函数************/ void delay(uint t) { uint i,j; for(i=0;it;i++) for(j=0;j10;j++); } //1s延时的计数闸门 void delay1(void) { unsigned long i; for(i=0;i119000;i++) { _NOP(); // 该函数用来产生一个 MSP430 系统时钟周期的延时 } } /*************430初始化函数************/ void int_430(void) { WDTCTL=WDTPW+WDTHOLD; // 关闭看门狗 P1SEL=~BIT4; P1DIR|= BIT4; P1OUT=~BIT4; P1SEL=~BIT5; P1DIR|= BIT5; P1OU

文档评论(0)

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

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

1亿VIP精品文档

相关文档