




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、基于MSP430G2553的简易信号发生器浙江工业大学摘要:本作品基于TI的LaunchPad设计了一款简易信号发生器,选用TI的MSP430G2553单片机。通过单片机加外围LCD12864、DAC0832及TL082放大电路,实现了可产生正弦波、锯齿波、三角波、方波的简易信号发生器,且频率可调。关键词:MSP430G2553 DAC0832 正弦波 锯齿波 三角波一、作品基本功能介绍1技术参数请见表1.1所示。波形种类正弦波锯齿波三角波方波频率范围(Hz)1001200频率步进(Hz)100最大幅值VP-P(V)04.7输出阻抗()50其他功能频率按键可调、输出使能控制放大、LCD人机指示
2、表1.1 技术参数2 在信号产生和处理方面。通过MSP430G2553内部的TA定时器,外加DAC0832产生四种波形,在DA输出后,通过一个由运算放大器TL082和精密可调电位器组成的运算放大电路,以实现信号的增益控制。最后在负载电阻上输出电压。系统总体框图如图1.1所示。图1.1 系统总体框图3 人机交互方面。本作品使用三个独立按键来控制菜单选项,其功能如表1.2所示。正弦波锯齿波三角波方波增频减频短按P2.2长按P2.1长按P2.0长按P2.2短按P2.1短按P2.0长按时间大于1s 短按时间大于10ms表1.2 按键功能说明二、系统硬件和软件说明1 硬件构成本作品使用LCD12864作
3、为人机交互模块,由于MSP430G2553的I/O口很少,所以通过对LCD的进行串行数据输入,以节约I/O口。其连接如图1.2所示。图1.2 LCD12864硬件连接 由于是通过MSP430G2553输出数字量的信号来产生波形,因此需要用到DA将数字量转换为模拟量。考虑到单片机的I/O口数量,选用8位的DA来进行数模转换。硬件如图1.3所示,DAC0832采用直通工作方式,节省I/O口控制引脚。图1.3 DAC0832 直通方式硬件连接 由DAC输出模拟量后,由于波形的幅值太小,因此还需要进行幅值的放大。其中R3是精密可调电位器,方便用户对信号的幅度进行调节。50的电阻可以保证整个信号发生器的
4、输出阻抗为50。信号幅度调节和输出部分电路如图1.4所示。图1.4 幅值放大的硬件电路2 软件系统整个系统的软件主要有主函数、定时器TA中断函数、按键中断函数三个大的模块组成。系统软件框图如图1.5所示。图1.5 系统软件框图各函数的作用和相互关系:在主函数中首先对系统的时钟、I/O口、定时器TA进行了初始化。初始化完毕,开启总中断。接着进入while(1)循环等待定时器中断子程序的执行。按键中断函数主要对三个菜单按键(P2.2、P2.1、P2.0)的动作进行处理。这三个菜单按键可以实现波形的切换,频率的加减,信号的使能输出。在按键中断函数中修改的信号频率大小和波形的种类这两个参数会被主函数和
5、定时器TA中断函数调用。定时器频率计算原理。TA定时器设置为连续增计数模式,时钟频率fs采用SMCLK同步。若要产生X Hz的正弦波、锯齿波、三角波和方波则有:TA0CCR0=在上式中,寄存器TA0CCR0是用以定时器TA的初始值。本作品采用的是200个采样点。三、方案论证方案一:由MSP430G2553结合低通滤波器电路来模拟实现DDS芯片的功能,进而产生各种波形。优缺点:利用此方案可以充分利用MSP430G2553上资源,使系统成本大大降低。但是此方案只能产生低频率的波形,不适合此次参赛题目要求。方案二:控制部分由MSP430G2553实现,波形产生部分使用FPGA或CPLD芯片采用波形查
6、找表结合高速的DAC产生。优缺点:此方案自由度大,符合现在的发展趋势。但是,FPGA或CPLD芯片价格相对比较高,加上高速的DAC芯片,使设计成本大大提高。而且整个设计中MSP430G2553仅仅完成简单的控制功能,资源得不到充分的利用。方案三:由MSP430G2553实现对专门的DDS芯片(如AD9850、AD9833)的控制,来产生各种波形。优缺点:利用此方案产生波形的频率稳定度高,易于程控。但是,专门的DDS芯片价格高,系统成本高。方案四:控制部分由MSP430G2553实现,波形通过代码控制生成数字量信号,再用D/A转换器输出正弦波、锯齿波、三角波及方波,也可以实现频率的数控调整。优缺
7、点:方法简单易行,采用单片专用芯片,系统体积大大减小。可产生较高的频率,容易调节频率。但是,未能很好的利用MSP430G2553的内部资源。综上,方案四的系统成本低,性价比较高。方案的可行性也较高,外围电路简单,能产生较高的频率且可以满足此次参赛要求。所以本作品最终采用方案四。四、程序流程图1 主程序流程图开机后,主程序首先关闭看门狗,接着对相应的I/O口、系统时钟、定时器TA进行初始化,完成后开总中断。然后,执行main函数。主程序流程图如图1.6所示。图1.6 主程序流程图2 定时器中断服务子程序流程图定时器TA的中断服务程序中主要处理判断信号标志位key的值,然后输出相应值的波形。定时器
8、中断服务程序流程图如图1.7所示。3按键中断服务程序流程图 按键中断服务程序中主要处理波形的选择、频率的加减、信号输出使能等功能。按键中断服务程序流程图见图1.8所示。图1.7 定时器中断服务子程序流程图图1.8 按键中断服务子程序流程图五、结论本文设计的信号发生器基本达到了比赛的要求,能够实现正确波形,能步进100Hz调节输出波形的频率,输出频率也比较稳定。但是由于DA存在点问题(已被我焊坏),输出的波形放大能力不高。还有待改进。表1.3是主要的波形测试结果。TA0CCR0值793396264198158132理论波形频率100Hz200 Hz300 Hz400 Hz500 Hz600 Hz
9、实测波形频率99.982Hz200.013 Hz300.121 Hz399.802 Hz500.363 Hz599.002 HzTA0CCR0值1139988797266理论波形频率700 Hz800 Hz900 Hz1000 Hz1100 Hz1200 Hz实测波形频率699.235 Hz797.881 Hz896.212 Hz997.876 Hz1096.342 Hz1209.548 Hz表1.3 波形测试结果附上系统完整的电路原理图如图1.9所示。图1.9 系统完整电路原理图视频地址链接:优酷网络。因才上传到网络服务器暂时无法获取地址链接,下图为证。已经上传浙江工业大学第一届TI杯MSP
10、430大赛B组作品视频展示杨洪的视频。参考文献1贾立新、王涌.电子系统设计与实践.北京.清华大学出版社.20112张毅刚 彭喜元.单片机原理及接口技术.人民邮电出版社.2011附录:源程序代码/MSP430G2553串口连接12864显示,只用连接三个引脚,大大节省资源 P2.4-r/w P2.3-SCLK P2.5-CS 主频在1Mhz下#include <msp430g2553.h>#include <in430.h>#define uint unsigned int#define uchar unsigned char#define ulong unsigned
11、longunsigned char aa16="P2.2正弦波 长按"unsigned char bb16="P2.1锯齿波 长按"unsigned char cc10="P2.0三角波"unsigned char dd16="P2.1加频P2.0减频"unsigned char numt113=193,196,164,198,158,132,113,99,88,79,72,66,61;unsigned char numt213=200,200,100,0,0,0,0,0,0,0,0,0,0;unsigned ch
12、ar numt313=200,0,0,0,0,0,0,0,0,0,0,0,0;unsigned char numt413=200,0,0,0,0,0,0,0,0,0,0,0,0;unsigned char name136=" 100Hz"," 200Hz"," 300Hz"," 400Hz"," 500Hz"," 600Hz"," 700Hz"," 800Hz"," 900Hz","1000Hz"
13、,"1100Hz","1200Hz","1300Hz"#define SID BIT4#define SCLK BIT3#define CS BIT5#define LCDPORT P2OUT#define SID_1 LCDPORT |= SID#define SID_0 LCDPORT &= SID#define SCLK_1 LCDPORT |= SCLK#define SCLK_0 LCDPORT &= SCLK#define CS_1 LCDPORT |= CS#define CS_0 LCDPORT &am
14、p;= CSuint key=0; /按下的按键编号uint i=0;uint k=0;uint j=0;uint tt=0;uint Tccr0=158;uint keynum=4;uint tcout=0;uint tcoutm=0;uint ttcout=0;/uint take=13;/延时程序#define CPU_F (double)16000000)#define delay_us(x) _delay_cycles(long)(CPU_F*(double)x/1000000.0)#define delay_ms(x) _delay_cycles(long)(CPU_F*(doub
15、le)x/1000.0)static unsigned char temp=0xaa; /定时器uchar sindata200= 127,131,135,139,143,147,151,155,159,162,166,170,174,177,181,185,188,192,195,198,202,205,208,211,214,217,220,222,225,227,230,232,234,236,238,240,242,244,245,246,248,249,250,251,252,252,253,253,254,254,254,254,254,253,253,252,252,251,25
16、0,249,248,246,245,244,242,240,238,236,234,232,230,227,225,222,220,217,214,211,208,205,202,198,195,192,188,185,181,177,174,170,166,162,159,155,151,147,143,139,135,131,127,123,119,115,111,107,103, 99, 95, 92, 88, 84, 80, 77, 73, 69, 66, 62, 59, 56, 52, 49, 46, 43, 40, 37, 34, 32, 29, 27, 24, 22, 20, 1
17、8, 16, 14, 12, 10, 9, 8, 6, 5, 4, 3, 2, 2, 1, 1, 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 4, 5, 6, 8, 9, 10, 12, 14, 16, 18, 20, 22, 24, 27, 29, 32, 34, 37, 40, 43, 46, 49, 52, 56, 59, 62, 66, 69, 73, 77, 80, 84, 88, 92, 95, 99,103,107,111,115,119,123;/*名 称:LCD_Write_cmd()*功 能:写一个命令到LCD12864*入口参数:cmd:待写入的命令,无符
18、号字节形式*出口参数:无*说 明:写入命令时,RW=0,RS=0 扩展成24位串行发送*格 式:11111 RW0 RS 0 xxxx0000 xxxx0000* |最高的字节 |命令的bit74|命令的bit30|*/void write_cmd(uchar cmd) uchar i,high4bits,low4bits; ulong lcdcmd; high4bits = cmd & 0xf0; low4bits = cmd & 0x0f; lcdcmd=(ulong)0xf8<<16)+(ulong)high4bits<<8)+(ulong)low
19、4bits<<4); CS_1; SCLK_0; for(i=0;i<24;i+) SID_0; if(lcdcmd & 0x00800000) SID_1; lcdcmd <<=1; delay_ms(1); SCLK_1; delay_ms(1); SCLK_0; CS_0;/*名 称:LCD_Write_Byte()*功 能:向LCD12864写入一个字节数据*入口参数:byte:待写入的字符,无符号形式*出口参数:无*范 例:LCD_Write_Byte('F') /写入字符'F'*/void write_dat(u
20、char dat) uchar i,high4bits,low4bits; ulong lcddat; high4bits = dat & 0xf0; low4bits = dat & 0x0f; lcddat=(ulong)0xfa<<16)+(ulong)high4bits<<8)+(ulong)low4bits<<4); CS_1; SCLK_0; for(i=0;i<24;i+) SID_0; if(lcddat & 0x00800000) SID_1; lcddat <<=1; delay_ms(1); S
21、CLK_1; delay_ms(1); SCLK_0; CS_0;/*名 称:LCD_pos()*功 能:设置液晶的显示位置*入口参数:x:第几行,14对应第1行第4行* y:第几列,015对应第1列第16列*出口参数:无*范 例:LCD_pos(2,3) /第二行,第四列*/void lcd_pos(uchar x,uchar y) uchar pos; switch(x) case 1:pos=0x80;break; case 2:pos=0x90;break; case 3:pos=0x88;break; case 4:pos=0x98;break; default:pos=0x80;
22、pos += y; write_cmd(pos);/*/LCD12864初始化void LCD_init(void) write_cmd(0x30); write_cmd(0x0C); write_cmd(0x01); write_cmd(0x02);void IO_init(void) P1DIR=0xff; P1REN=0x00; P1SEL=0X00; P1OUT=0x00; P2SEL&=(BIT4 + BIT3 + BIT5); P2DIR = BIT4 + BIT3 + BIT5;/* P2DIR|=BIT0; /DAC单缓冲模式 P2SEL&=BIT0; P2RE
23、N&=BIT0; P2OUT|=BIT0; /关闭dac输入*/ P2DIR&=(BIT0+BIT1+BIT2); /输入 P2REN|=BIT0+BIT1+BIT2; /用于按键接地型 P2IE|=BIT0+BIT1+BIT2; /允许中断 P2IES|=BIT0+BIT1+BIT2; /下升沿触发 P2IFG&=(BIT0+BIT1+BIT2); /消除中断标志void display(void) lcd_pos(1,0); for(i=0;i<16;i+) write_dat(aai); lcd_pos(2,0); for(i=0;i<16;i+) w
24、rite_dat(bbi); lcd_pos(3,0); for(i=0;i<10;i+) write_dat(cci); lcd_pos(4,0); for(i=0;i<16;i+) write_dat(ddi); void DCO_init(void) BCSCTL1 = CALBC1_16MHZ; /设定cpu时钟DCO频率为16MHz DCOCTL = CALDCO_16MHZ; / BCSCTL2|=SELM_1+DIVM_0; /SMCLK选择16MHz,不分频 / BCSCTL2&=SELS;void Timer_A0_init(void)TA0CTL|=TA
25、SSEL_2+MC_2;/TA时钟源选择SMCLK,连续增计数模式 TA0CCR0=158; TA0CCTL0|=CCIE;/打开 比较模块0中断 _EINT();/*/定时器中断服务程序/*/#pragma vector =TIMER0_A0_VECTOR_interrupt void Timer_A0(void) /CCIFG中断被响应后,该标志位自动清零 if(key=222) if(j<200) P1OUT=sindataj; /正弦波产生 j+; elsej=0; TA0CCR0 +=Tccr0; if(key=221) if(tcout<200) P1OUT=tcout
26、; /锯齿波产生 tcout+; else tcout=0; TA0CCR0 +=Tccr0; if(key=220) if(ttcout=0) if(tcoutm<100) P1OUT=tcoutm; /三角波产生上升段 tcoutm+; else ttcout=1; TA0CCR0 +=(Tccr0-1); if(ttcout=1) if(tcoutm>0) P1OUT=tcoutm; /三角波产生下降段 tcoutm-; else ttcout=0; TA0CCR0 +=(Tccr0-1); /*/#pragma vector=PORT2_VECTOR_interrupt v
27、oid Port2(void) _DINT(); /关中断 delay_ms(10); /延迟5ms,消抖 延迟5ms 10ms都行 if(P2IN&BIT2)=0) /如果为低,即按键真的按下了 因为是下降沿触发中断,所以要检测是否为低 (P2IN&BIT2)=0 /正弦波 key=222; tt=1; LCD_init(); lcd_pos(1,0); for(i=4;i<10;i+) write_dat(aai); lcd_pos(3,0); for(k=0;k<6;k+) write_dat(namekeynumk); if(P2IN&BIT1)=0) delay_ms(1000); if(P2IN&BIT1)=0) / 锯齿波 key=221; tt=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- CPBA考试关于项目生命周期的深入分析试题及答案
- 集美大学面试试题及答案
- 汉语言文学自考命题变化趋势试题及答案
- 运维岗笔试题及答案
- 小自考汉语言文学能力应用题及答案
- 老年病学护理试题及答案
- 2024年下半年四川内江市部分事业单位公开招聘工作人员笔试原始查分笔试历年典型考题及考点剖析附带答案详解
- 生物课程考试题及答案
- 2025版数学中考《二轮总复习微专题学案》二轮讲义31 三种方法求阴影部分面积含答案或解析
- 2020人教版九年级上学期同步单元专题大培优:串并联电路识别专题练习
- 二年级口算题库大全100道
- 2024年河北互通高速公路发展集团有限公司招聘考试真题
- 2025年河南建筑职业技术学院单招职业技能测试题库审定版
- 银行品牌塑造策略
- 校园环境下的学生心理健康与体育结合研究
- Unit 4 Why dont you talk to your parents Section A 3a~3c说课稿-2024-2025学年人教新目标八年级英语下册
- 2021《旅游概论》测试题库带答案
- 小学生人体奥秘课件
- 电子产品生产的基本工艺流程
- 2025人教版道法七年级下册《第二单元 焕发青春活力》大单元整体教学设计2022课标
- 统编版2024一年级下册语文 8 《夜色》 课件
评论
0/150
提交评论