教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 文库大全 > 小学教育 >

基于MSP430简易示波器的设计

来源:网络收集 时间:2026-08-01
导读: 基于MSP430简易示波器的设计 自动化1107 王诗雨 2013.12 1.硬件设计 1.1 单片机 选用MSP430G2553单片机,该单片机具有低功耗的特点,内部自带8路10位AD转换器(ADC10),最高主频可达16Mhz,对于一个简易示波器来说这些特点足够我们使用。 1.2 程控放大电路

基于MSP430简易示波器的设计

自动化1107 王诗雨

2013.12

1.硬件设计

1.1 单片机

选用MSP430G2553单片机,该单片机具有低功耗的特点,内部自带8路10位AD转换器(ADC10),最高主频可达16Mhz,对于一个简易示波器来说这些特点足够我们使用。

1.2 程控放大电路

程控放大电路的作用是对大信号进行衰减,对小信号进行放大,保证输入到A/D转换器的信号幅度在要求的输入电压范围内,以达到最好的测量与观察效果。采用模拟开关CD4051,配合精密电位器实现多挡垂直分辨率。在MSP430单片机中使用寄存器模块设置通道号,通过写入通道号控制模拟开关选通不同的反馈电阻,从而实现不同的放大倍数,对信号进行不同程度的放大(衰减)。电路图如下

:

1.3 简易调理电路

由于示波器观察信号大多是正负电压信号,考虑到ADC10一般使用的是单极性参考电压(也可以使用寄存器设置双极性参考电压,这样就不需要调理电路了,但最好加一级缓冲)。为了采样到信号的负电压,就需要给该信号叠加直流量,将负电压部分信号抬高至零电平以上,因此采用信号调理电路。电路图如下:

1.4 LCD显示电路和按键电路

利用LCD的SPI通信模式与MSP430单片机连接,这样可以得到不错的通信速度,并且可以尽可能的减少MSP430引脚的占用,具体电路这里就不给出了。(按照spi连接)

利用简单独立按键实现放大倍数调节,采样频率设置等功能即可。

2.软件设计

2.1 单片机初始化 对P2口初始化,打开P2口的中断;将通信方式设置为硬件spi通信模式(注意spi通信在上升沿还是在下降沿开始)。

WDTCTL=WDTPW+WDTHOLD; //关看门狗

P1OUT = 0x00; // P1 setup for LED & reset output

P1DIR |= BIT0 + BIT2 + BIT3 + BIT4 + BIT5; P1SEL = BIT1 + BIT2 + BIT4; P1SEL2 = BIT1 + BIT2 + BIT4; P2REN |= 0x38; P2DIR = 0x07; P2OUT = 0;

P2IE |= 0x38; // P1.4 interrupt enabled

P2IFG &= ~0x38; will=0;

UCA0CTL0 |= UCCKPL + UCMSB + UCMST + UCSYNC + UCCKPH ; // 3-pin, 8-bit SPI master

UCA0CTL1 |= UCSSEL_2; // SMCLK UCA0BR0 |= 0x04; // /2 UCA0BR1 = 0; //

UCA0MCTL = 0; // No modulation

UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**

P1OUT &= ~BIT5; // Now with SPI signals initialized,

P1OUT |= BIT5; // reset slave

ADC10初始化,开启参考源和中断。

ADC10CTL0 = ADC10SHT_0 + REFON + ADC10ON + ADC10IE; ADC10CTL1 = INCH_6; ADC10AE0 |= 0x40;

显示初始化,对LCD的界面显示初始化。

Initial_ILI9340C(); Delay_ms(300);

LCD_TEST_SingleColor(Black); LCD_TEST_SingleColor(Black); LCD_TEST_PartColor(Blue);

for(wh=22; wh<220 ;wh+=10) {

LCD_draw_Line(wh,39,White); LCD_draw_Line(wh,79,White); LCD_draw_Line(wh,119,White); LCD_draw_Line(wh,159,White); LCD_draw_Line(wh,199,White); LCD_draw_Line(wh,239,White); LCD_draw_Line(wh,279,White); }

Delay_ms(100);

for(co=2; co<320 ;co+=10) {

LCD_draw_Col(69,co,White); LCD_draw_Col(119,co,White); LCD_draw_Col(169,co,White); }

Delay_ms(100);

2.2 程控选择程序

根据按键的次数,在P2口中断改变will的值,并通过P2口输出给CD4051的ABC开关选择端,对放大倍数进行选择。

#pragma vector=PORT2_VECTOR __interrupt void Port_2(void) {

if(P2IFG & 0x10) {

while(0x10 & P2IN); will++;

if(will==8) {

will=7; } }

if(P2IFG & 0x20) {

while(0x20 & P2IN); will--;

if(will==255) {

will=0; } }

if(P2IFG & 0x08) {

while(0x08 & P2IN); chan++;

if(chan==4) chan=0; }

P2IFG &= ~0x38; P2OUT=will;

}

2.3 采样频率设置

通过改变ADC10CTL1,通过按键次数对应值不同改变ADC10时钟的频率来调节电路的采样频率。

switch(chan) {

case 0: ADC10CTL1 = INCH_6; break;

case 1: ADC10CTL1 |= ADC10DIV0 + ADC10DIV1; break; case 2: ADC10CTL1 |= ADC10DIV0 + ADC10DIV2; break;

case 3: ADC10CTL1 |= ADC10DIV0 + ADC10DIV1 + ADC10DIV2; break; }

2.4 软件触发程序

只有在一定条件下才使lcd刷新,保证每次采集到的波形都从一点开始显示,防止由于每次采集到的点不同导致波形一直移动。

ADC10CTL0 |= ENC + ADC10SC; // Sampling and conversion start

if(cir==0) key1 = ADC10MEM/5; if(cir==1) key2 = ADC10MEM/5; if(cir==2) key3 = ADC10MEM/5; if(cir>2 && key1>key2 && //((key1-100)/2)>=(key2-100) {

temp[0]=key1; temp[1]=key2; temp[2]=key3;

temp[cir]=ADC10MEM/5; }

ADC10CTL0 &= ~ENC;

key2>key3)

2.5 显示刷新程序

示波器是一个动态显示过程,因此在过程中可能会引起初始界面被部分覆盖,以此需要定时刷新初始界面。

trig++;

if(trig%20==0) {

{

LCD_draw_Line(wh,39,White); LCD_draw_Line(wh,79,White); LCD_draw_Line(wh,119,White); LCD_draw_Line(wh,159,White); LCD_draw_Line(wh,199,White); LCD_draw_Line(wh,239,White); LCD_draw_Line(wh,279,White); }

Delay_ms(300);

for(co=2; co<320 ;co+=10) {

LCD_draw_Col(69,co,White); LCD_draw_Col(119,co,White); LCD_draw_Col(169,co,White); }

Delay_ms(300); }

附:源程序

#include "msp430g2553.h" //STC12单片机头文件

//颜色定义

#define Blue #define Yellow #define Green #define Black #define White #define Red

0x001f 0xffe0 0x07e0 0x0000 0xffff 0xf800

//引脚定义 #define R_ESET1 P1OUT|=BIT5; //液晶RESET引脚,接单片机IO引脚 #define R_ESET0 P1OUT&=~BIT5; #define C_D1 #define C_D0

P1OUT|=BIT3;//液晶D/CX引脚,数据/命令控制,接单片机IO引脚

P1OUT&=~BIT3;

#define C_S1 P1OUT|=BIT0;//液晶片选CS,P1.4为单片机SPI总线的SS引脚,通过MSTR位配置为IO模式 #define C_S0 P1OUT&=~BIT0;

unsigned char MST_Data, SLV_Data, wh, temp[320], trig=0, key1, key2 ,key3 ,will ,chan=0; unsigned int co,cir;

void delay(void) {

unsigned int j;

for(j=100;j>0;j--); }

void Delay_us(int value)// …… 此处隐藏:9430字,全部文档内容请下载后查看。喜欢就下载吧 ……

基于MSP430简易示波器的设计.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wenku/1546064.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)