基于MSP430简易示波器的设计
基于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字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [小学教育]四年级综合实践活动课《衣物的洗涤》教
- [小学教育]2014半年工作总结怎么写
- [小学教育]20世纪外国文学专题综合试题及答案
- [小学教育]TS_1循环使用催化丙烯环氧化反应研究
- [小学教育]最实用的考勤签到表(上下班签到表)
- [小学教育]气候与生态建筑——以新疆民居为例
- [小学教育]二人以上股东有限责任公司章程参考样本
- [小学教育]2014届第一轮复习资料4.1,3美好生活的
- [小学教育]土方开挖、降水方案
- [小学教育]手绘儿童绘本《秋天的图画》(蜡笔)
- [小学教育]2002级硕士研究生卫生统计学考试试题
- [小学教育]环保装备重点发展目录
- [小学教育]金蝶K3合并报表培训教材
- [小学教育]岩浆岩试题及参考答案
- [小学教育]知之深爱之切学习心得
- [小学教育]第十二章 蛋白质的生物合成
- [小学教育]Chapter 2-3 Solid structure and basi
- [小学教育]市政道路雨季专项施工方案
- [小学教育]中国海洋大学2012-2013学年第二学期天
- [小学教育]教育心理学第3章-学习迁移
- 浅谈深化国企改革中加强党管企业
- 2006年中国病理生理学会学术活动安排
- 设计投标工作大纲
- 基于ARP的网络攻击与防御
- 2016届湖北省七市(州)教科研协作体高三
- Google_学术搜索及其检索技巧
- 2019-2020学年七年级地理下册6.3美洲教
- 城市道路可研报告
- 【名师指津】2012高考英语 写作基础技
- 6级知识点培训北京师范大学《幼儿智趣
- 注册会计师会计知识点:金融资产
- 新安装 500 kV 变压器介损分析与判断
- PS2模拟器PCSX2设置及使用教程.
- 医院药事管理与药剂科管理组织机构
- {PPT背景素材}丹巴的醉人美景,免费,一
- NAS网络存储应用解决方案
- 青海省西宁市六年级上学期数学期末考试
- 测量管理体系手册依据ISO10012:2003
- 洞子小学培养骨干教师工作计划
- 浅谈《牛津初中英语》的教材特点及教学




