收藏 分享(赏)

基于MSP430G2553的简易频率计.doc

上传人:精品资料 文档编号:9913140 上传时间:2019-09-18 格式:DOC 页数:24 大小:1.11MB
下载 相关 举报
基于MSP430G2553的简易频率计.doc_第1页
第1页 / 共24页
基于MSP430G2553的简易频率计.doc_第2页
第2页 / 共24页
基于MSP430G2553的简易频率计.doc_第3页
第3页 / 共24页
基于MSP430G2553的简易频率计.doc_第4页
第4页 / 共24页
基于MSP430G2553的简易频率计.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

1、简易频率计1简易频率计学校:天津工业大学简易频率计2目录摘要 31 方案论证与比较 .31.1 测频基本方法和原理比较 31.2 处理器的方案选择论证 .31.3 滞回比较电路放大器的选择 .32 系统设计 .42.1 总体设计 42.2 单元电路设计 42.2.1 MSP430G2553 和 12864 液晶引脚功能说明 42.2.2 滞回比较电路设计 .52.2.3 显示电路设计 73 软件设计 .83.1 总体设计流程图 .83.2 各功能子模块介绍 .83.2.1 初始化模块 83.2.2 中断模块 93.2.3 显示模块 103.2.4 串口模块 104 系统测试 114.1 测试

2、430 单片机自身产生 1KHz 方波的频率 .114.2 测试由信号发生仪产生的频率 .11附录 12附一:参考文献 12附二:元器件及仪器明细表 12附三:整体电路原理图 13附四:实验设计程序 13简易频率计3摘要在电子技术中,频率是最基本的参数之一,数字频率计具有精度高、使用方便、测量迅速、以及便于实现测量过程自动化等优点,是近代电子技术领域的重要工具之一,在许多领域得到广泛应用。本系统以超低功耗 MSP430G2553 单片机为核心处理芯片来测量信号的频率,通过定时器 A 采用计数法完成信号频率测量,并将被测频率值通过 LCD12864液晶串行显示。频率可测量范围在 1Hz 到 60

3、KHz 之间。关键字:频率 430 单片机 液晶显示 串口1 方案论证与比较1.1 测频基本方法和原理比较方案一:使用测频法进行频率测量,测频法即在限定的时间内(如 1s)检测脉冲的个数。当被测频率的范围比较高时,使用测频法比较合适。方案二:使用测周法进行频率测量,测周法即测试限定的脉冲个数之间的时间。当被测频率的范围比较低时,使用测周法比较合适。考虑到较高的测试频率,在此使用方案二,即测频法进行测量。1.2 处理器的方案选择论证本设计使用 TI 公司的 MSP430G2553 低功耗单片机为主控芯片,该单片机的 I/O 接口较少,但内部资源丰富,如含有 10 位 AD 转换、16 位定时器

4、/计数器、USART 接口等,处理功能强大,足以胜任此次设计任务。1.3 滞回比较电路放大器的选择方案一:使用 TI 公司的 OP37 放大器,该放大器对信号转换速率快且稳定,适用于对高频信号的转换,但价格较高。方案二:使用普通的 LM324 放大器,该放大器对信号转换速率慢,适用于对低频信号的转换,价格便宜。考虑到三角波和正弦波在频率较高时转化为方波时对放大器的转化速率要求较高,在此使用方案一,即使用 TI 公司的 OP37 放大器作为滞回比较电路的核心转换芯片。简易频率计42 系统设计2.1 总体设计系统硬件设计方案如图 2.1-1 所示:图 2.1-1 硬件设计方框图电源系统由 LM78

5、05 和 200V 转18V 中心变压器组成,实现对 MSP430G2553 核心处理芯片、LCD12864 液晶显示提供所需电源。显示部分由 12864 液晶对频率值进行实时显示。软件设计部分包括单片机的 I/O 中断和定时中断,以及液晶的驱动和显示。该设计由硬件和软件共同实现了频率计的功能,整体设计过程可概括为:被测信号通过滞回比较电路整形为适合单片机接收的脉冲信号(方波)输入单片机,单片机通过 I/O中断和定时器共同获得被测信号的频率并通过液晶对频率进行实时显示。2.2 单元电路设计2.2.1 MSP430G2553 和 12864 液晶引脚功能说明2.2.1.1 MSP430G2553

6、 引脚功能说明本次设计需要用到 430 单片机的 1 脚电源、16 脚复位端、20 脚接地端、配置 P1.0 口为待测信号输入端,P2.0 为 LCD 片选信号端,P2.1 为 LCD 串行数据输入输出端,P2.2为 LCD 串行时钟输入输出端, P2.3 为 LCD 串并模式选择端,如表 2.2.1.1-1 所示。简易频率计5表 2.2.1.1-1 MSP430G2553 引脚及功能说明引脚序号 引脚名称 功能说明1 VCC 电源正2 P1.0 频率信号输入端3 P1.1 1KHz 方波产生引脚5 P2.0 LCD 片选信号端6 P2.1 LCD 串行数据输入 输出端7 P2.2 LCD 串

7、行时钟输入 输出端8 P2.3 LCD 串并模式选择端16 RST 复位脚20 GND 电源地2.2.1.2 LCD12864 引脚功能说明LCD12864 液晶显示屏用到 1、2 脚,电源接口线,19、20 脚背光电源接口线,15 脚并行/串行接口选择,5 脚串行数据口,6 脚串行的同步时钟。LCD12864 引脚功能如表 2.2.1.2-2所示。表 2.2.1.2-2 LCD12864 引脚功能说明引脚序号 引脚名称 功能说明1 VSS 模块的电源地2 VDD 模块的电源正端4 RS(CS) 并行指令/数据选择信号、串行片选信号5 R/W(SID) 并行读写选择信号、串行的数据口6 E(C

8、LK) 并行使能信号、串行的同步时钟15 PSB PSB 并/串行接口选择: H-并行,L-串行19 LED_A 背光源正极20 LED_K 背光源负极(0V )2.2.2 滞回比较电路设计滞回比较电路将输入信号波形转化为脉冲信号,另外波形变换和波形整形电路实现把正弦波样的正负交替的信号波形变换成可被单片机接收的 TTL 信号,以便单片机对其进行频率测量,最后将测得的数据通过 12864 液晶显示。滞回比较器是一个具有迟滞回环传输特性的比较器。在反相输入单门限电压比较器的基础上引入正反馈网络,就组成了具有双门限值的反相输入滞回比较器。由于反馈的作用简易频率计6这种比较器的门限电压是随输出电压的

9、变化而变化的。它的灵敏度低一些,但抗干扰能力却大大提高。反相滞回比较器的电路组成如图 2.2.2-1 所示,如果把 VI 和 VREF 位置互换,就可以构成同相输入迟滞比较器。图 2.2.2-1 反相滞回比较器电路组成滞回比较器又可理解为加正反馈的单限比较器。对于单限比较器,如果输入信号在门限值附近有微小的干扰,则输出电压就会产生相应的抖动(起伏) ,而在此电路中引入正反馈可以克服这一缺点。整个滞回比较电路原理图如图 2.2.2-2 所示。 NUL1I+2-3VC45OT78P0KREnFDiout信图 2.2.2-2 滞回比较电路图OP37 和 R4、R8 组成滞回比较器,对被测信号转化为脉

10、冲信号,二极管实现对脉冲信号进行整形,滤去负电平部分,变成可被单片机接收的 TTL 信号,输入到单片机,以实现频率测量。简易频率计72.2.3 显示电路设计该频率计采用 12864 液晶进行显示,器件实物如图 2.2.3-1 所示。图 2.2.3-1 12864 液晶显示器实物图12864 液晶显示器是一种具有 4 位/8 位并行、2 线或 3 线串行多种接口方式,内部含有国标一级、二级简体中文字库的点阵图形液晶显示模块;其显示分辨率为 12864, 内置 8192 个 16*16 点汉字,和 128 个 16*8 点 ASCII 字符集。利用该模块灵活的接口方式和简单、方便的操作指令,可构成

11、全中文人机交互图形界面。可以显示 84 行 1616 点阵的汉字。 也可完成图形显示。低电压低功耗是其又一显著特点。由该模块构成的液晶显示方案与同类型的图形点阵液晶显示模块相比,不论硬件电路结构或显示程序都要简洁得多,且该模块的价格也略低于相同点阵的图形液晶模块。液晶的控制管脚与 430 单片机的连接如下图 2.2.3-2 所示。图 2.2.3-2 液晶控制管脚连接图 GND1VCLRSW5E6089TB+-UIKP信简易频率计83 软件设计3.1 总体设计流程图系统软件设计包括测量初始化模块、显示模块、定时器中断服务模块、I/O 中断模块。系统软件整体流程图如图 3.1-1 所示。图 3.1

12、-1 系统软件整体设计流程图3.2 各功能子模块介绍3.2.1 初始化模块设备初始化包括关闭看门狗,I/O 口输入/输出功能的配置,时钟初始化,端口初始化以及液晶初始化,开总中断,其流程图如图 3.2.1-1 所示。简易频率计93.2.1-1 系统初始化流程图3.2.2 中断模块首先开启定时溢出中断和 I/O 中断,再打开总中断,计数器开始计数,当计数溢出时进入溢出中断,且溢出次数加 1,当有上升沿到来时,进入 I/O 中断,计算两次中断之间(一个周期内)的计数值,并转化为频率值。TA 中断流程图如图 3.2.2-1 所示。图 3.2.2-1 TA 中断流程图简易频率计10I/O 中断流程图如

13、图 3.2.2-2 所示。图 3.2.2-2 I/O 中断流程图3.2.3 显示模块首先根据 12864 液晶的时序图写出液晶驱动函数,并调用驱动函数完成在指定位置处显示字符的功能函数,这样通过定时刷新液晶屏就可以显示频率值了,而且显示位置可以根据需要任意指定。3.2.4 串口模块首先将出口进行初始化,然后当定时器达到 1S 时,串口定时向 PC 机发送当前测到的频率值,串口流程图如图 3.2.4-1 所示。图 3.2.4-1 串口流程图简易频率计114 系统测试4.1 测试 430 单片机自身产生 1KHz 方波的频率将模拟开关闭合,使 430 单片机自身产生的 1KHz 的方波接入被测信号

14、接口,测试结果如表 4.1-1。表 4.1-1 430 单片机自身产生方波测试结果次数 实际频率 测试频率 串口发送频率(ASCII 码)1 1KHz 991Hz 39 39 31 2 1KHz 992Hz 39 39 323 1KHz 992Hz 39 39 314.2 测试由信号发生仪产生的频率将模拟开关断开,使信号发生仪产生方波接入被测信号接口,测试结果如表 4.2-1。表 4.2-1 外部接入方波测试结果:次数 实际频率 测试频率 串口发送频率(ASCII 码)1 100Hz 98 Hz 39 382 1KHz 991 Hz 39 39 313 20KHz 19526 Hz 31 39

15、 35 32 364 35 KHz 34125Hz 33 34 31 32 35 5 55 KHz 54655 Hz 35 34 36 35 35将模拟开关断开,使信号发生仪产生正弦波接入被测信号接口,测试结果如表 4.2-2。表 4.2-2 外部接入正弦波测试结果:次数 实际频率 测试频率 串口发送频率(ASCII 码)1 100Hz 97Hz 39 372 1 KHz 992Hz 39 39 323 20 KHz 19498Hz 31 39 34 39 384 35 KHz 34268Hz 33 34 32 36 385 55 KHz 54623Hz 35 34 36 32 33简易频率计

16、12表 4.2-2 外部接入正弦波测试结果将模拟开关断开,使信号发生仪产生三角波接入被测信号接口,测试结果如表 4.2-3。表 4.2-3 外部接入三角波测试结果次数 实际频率 测试频率 串口发送频率(ASCII 码)1 100Hz 97Hz 39 372 1 KHz 991 Hz 39 39 313 20 KHz 19544Hz 31 39 35 34 344 35 KHz 34368Hz 33 34 33 36 385 55 KHz 54645Hz 35 34 36 34 35从以上实测数据看,本设计很好地完成了设计题目中的各项要求,具有优良的性能,且实物做工精美,这说明本设计是比较成功的

17、。附录附一:参考文献1. 胡大可,MSP430 超低功耗 16 位单片机原理与应用,北京航空航天大学出版社.2. 童诗白,华成英,模拟电子技术基础(第四版),清华大学出版社 ,2006.01.3. MSP430G2553DataSheet.4. X2XXUserGuide.5. Op37DataSheet.附二:元器件及仪器明细表LanchPad430 开发板 1 块电源模块 1 个12864 液晶屏 1 个MSP430G2553 处理器 1 个USB 线 1 根焊接板 3 块OP37 放大器 1 个模拟开关 1 个杜邦线 若干简易频率计13电阻 若干电容 若干附三:设计原理图图附三-1 为单

18、片机最小系统。附三-1 单片机最小系统: DVC1P.023456789RSTEMGILKBout_信图附三-2 为 LCD12864 液晶显示电路。附三-2 LCD12864 液晶显示电路:NW+-U简易频率计14图附三-3 为滞回比较电路。附三-3 滞回比较电路 NUL1I+2-3VC45OT678P0KREnFDiout信图附三-4 为模拟开关。附三-4 模拟开关 S?_简易频率计15附四:整体事物图附五:实验设计程序/* 头文件*/#include#include “stdio.h“/* 全局变量的定义和宏定义*/unsigned int start,end;unsigned long

19、 int F = 0;unsigned char TA_overflow;unsigned int TA_i = 0;unsigned int port_i;unsigned char tab=“0123456789“;unsigned char a8;unsigned char int_to_string10;unsigned char int_array10;#define uchar unsigned char简易频率计16#define uint unsigned int#define CS_0 P2OUT LCD_DIR_OUT;for(i = 0;i = 100000)Write_

20、Data(tabF/100000);Write_Data(tabF%100000/10000);Write_Data(tabF%10000/1000);Write_Data(tabF%1000/100);Write_Data(tabF%100/10);Write_Data(tabF%10);_delay_cycles(1000);else if(F = 10000)Write_Data(tabF/10000);Write_Data(tabF%10000/1000);Write_Data(tabF%1000/100);Write_Data(tabF%100/10);Write_Data(tabF

21、%10);_delay_cycles(1000);else if(F = 1000)Write_Data(tabF/1000);Write_Data(tabF%1000/100);Write_Data(tabF%100/10);Write_Data(tabF%10);_delay_cycles(1000);else if(F = 100)Write_Data(tabF/100);Write_Data(tabF%100/10);简易频率计20Write_Data(tabF%10);_delay_cycles(1000);else if(F = 10)Write_Data(tabF/10);Wri

22、te_Data(tabF%10);_delay_cycles(1000);elseWrite_Data(tabF);_delay_cycles(1000);/* 名称 : Init_uart0* 功能 : 初始化串口* 输入 : 无* 输出 : 无*/void Init_uart0()UCA0CTL1|=UCSWRST; /UCA0 软件复位/UCA0CTL0/字符长度为 8UCA0CTL1|=UCSSEL_2;/选择系统时钟:SMCLKUCA0BR0=0x6D; /波特率为 9600UCA0BR1=0;UCA0MCTL=0;/UCA0MCTL=UCBRS0;IE2=UCA0RXIE+UCA0

23、TXIE;/开接收使能UCA0CTL1P1SEL|=BIT1+BIT2; /将 P1.1 P1.2 设为第二功能P1SEL2|=BIT1+BIT2;/* 名称 : Uart0Sends* 功能 : 串口发送数据* 输入 : *s* 输出 : 无*/void Uart0SendsData(char *s)while(*s!=0)简易频率计21UCA0TXBUF=*s;while(IFG2 /查询发送是否结束IFG2 /清除发送一标志位s+;/* 名称 : Init_In* 功能 :初始化外部终端* 输入 : 无* 输出 : 无*/void Init_In()P1DIR |= BIT6;P1DIR

24、 P1IES |= BIT3;P1IE |= BIT3;P1IFG _EINT();void Init_Timer()TACCTL0 = CCIE; / CCR0 interrupt enabledTACCR0 = 1;TACTL = TASSEL_1 + MC_1 + TAIE + TACLR; /up mode/* 名称 : Int_To_String* 功能 :将一个 int 型数据转换为 String 型* 输入 : now_f* 输出 : 无*/void Int_To_String(unsigned long int now_f)int j = 0;for(j = 0; ;j+)简易

25、频率计22int_arrayj = now_f % 10 + 48 ;now_f = now_f / 10;if(now_f = 0) break;int i = j ;for(i = j , j = 0; i = 0; i-,j+)int_to_stringj = int_arrayi;void main()WDTCTL = WDTPW + WDTHOLD;P1DIR |= BIT7; / P1.0 outputP1DIR |= BIT0;if (CALBC1_1MHZ =0xFF | CALDCO_1MHZ = 0xFF)while(1); / If calibration constan

26、ts erased/ do not load, trap CPU!/1MhzBCSCTL1 = CALBC1_1MHZ; / Set rangeDCOCTL = CALDCO_1MHZ; / Set DCO step + modulation */LCD_Init();Init_In();Init_Timer();Init_uart0();ShowInit();while(1)ShowF();#pragma vector=PORT1_VECTOR_interrupt void port_1()if(P1IFG port_i+;简易频率计23if(port_i=100)port_i = 0;F

27、=(unsigned long int)(1000000*100.0)/(TA_overflow*65536)+TAR);TA_overflow = 0;TACTL |= TACLR;P1IFG / Timer A0 interrupt service routine#pragma vector=TIMER0_A0_VECTOR_interrupt void Timer_A (void)P1OUT = BIT7;TA_i+;if(TA_i = 2000)P1OUT = BIT0;TA_i = 0;Int_To_String(F);unsigned char *s = int_to_string

28、;Uart0SendsData(s);Uart0SendsData(“1000“);#pragma vector=TIMER0_A1_VECTOR_interrupt void Timer_A1()switch(TA0IV)case 2:break;case 4:break;case 10:TA_overflow+;break;/* 名称 : usart0_rx* 功能:串口中断入口*/#pragma vector=USCIAB0RX_VECTOR简易频率计24_interrupt void usart0_rx(void)while(IFG2/a=RXBUF0;/i+;a0=UCA0RXBUF;

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报