ImageVerifierCode 换一换
格式:DOCX , 页数:23 ,大小:1.47MB ,
资源ID:14231193      下载积分:5 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-14231193.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于DSP的可调信号发生器设计.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于DSP的可调信号发生器设计.docx

1、基于DSP的可调信号发生器设计目 录一、 设计的目的 3二、 设计的内容与要求 3三、 设计方案 4四、 软件、硬件设计(根据设计内容适当处理,硬件设计应包括PCB 54.1、软件设计 54.1.1 按键矩阵模块 54.1.2 波形发生模块 54.1.3 数码管显示模块 54.1.4 点阵显示模块 5图3.3点阵模块及原理图 64.2.1 4*5按键矩阵 64.2.2 数码管显示 7五、 设计总结 85.1 调试结果 85.2 心得体会 11六、 参考文献 11七、附录 12一、 设计的目的根据已掌握的DSP技术及应用课程知识,完成课程设计要求的项目。了解正弦波的产生,以及正弦波幅值和频率的调

2、整方法,掌握信号产生的一般方法并学习使用CCS图形显示功能进行程序调试。通过硬件设计和程序编写过程,加深对DSP技术及应用课程知识的理解和掌握,培养应用系统设计的能力,以及分析问题和解决问题的方法,并进一步拓宽专业知识面,培养实践应用技能和创新意识。二、 设计的内容与要求(一)、课程设计题目:基于DSP的可调信号发生器设计(二)、具体设计要求如下:1) 基础设计:在CCS中运行调试程序代码,输出正弦信号波形,并使用CCS的图像显示窗口,实时显示输出的正弦波。2) 提高设计:使用DSPF2812的GPIO功能,读取外部手动按键的信号,相应改变正弦信号的幅值、相位、频率和偏移(幅值,采用有符号16

3、位整型变量定义)。3) 附加设计:使用DSPF2812的GPIO功能,读取外部手动按键的信号,相应输出正弦波、三角波、方波、锯齿波。并分别实现四种波形的幅值和频率的调节。4) 高级设计:用8个七段数码管,每隔一秒依次循环显示三种信息,包括:日期(格式为2014-06-12);自己的学号(格式为学号的低8位,例如学号为112033101的同学,应当显示:12033101);当前的幅值(格式为:AP-00000AP-32767);频率即每周期的离散采样点数(格式为:PEAD-012); 当前按键坐标(格式为:X X)。5)终极设计:利用点阵循环显示本人姓名。三、 设计方案本次课程设计是基于DSP的

4、可调信号发生器的设计,系统设计方案框图如图3.1所示。通过读取外部手动按键的信号,转换显示CCS窗口的波形,按键控制波形如图3.2所示;同时在数码管上动态显示幅值、频率、学号、按键坐标和日期。图3.1 系统设计方案框图图3.2 按键控制波形四、 软件、硬件设计(根据设计内容适当处理,硬件设计应包括PCB4.1、软件设计软件设计模块包含了按键矩阵模块、波形发生模块、数码管显示模块、点阵显示模块和综合调试显示结果。4.1.1 按键矩阵模块使用DSPF2812的GPIO功能,判断按键是否按下keypress=1。再用标志位flag控制选择输出波形。4.1.2 波形发生模块通过手动按键控制CCS窗口显

5、示波形:正弦波、方波、三角波、锯齿波。(1)正弦波(2)三角波(3)锯齿波(4)方波4.1.3 数码管显示模块提取幅度的数值,分别放入Amp 数组中,调用WriteLEDs()数码管显示,在数码管上显示幅度、频率、学号、日期和按键坐标。4.1.4 点阵显示模块利用点阵循环显示本人姓名。图3.3点阵模块及原理图4.2、硬件设计硬件电路设计模块包含了矩阵按键电路、数码管显示电路,以及点阵显示电路。4.2.1 4*5按键矩阵4*5的按键矩阵,通过9个GPIO端口来扫描控制,即可判断出哪一个按键被按下。按键左端接GPIOA11-GPIOA15,按键右端接GPIOA7-GPIOA10。通过对GPIOA端

6、口进行初始化,按键左端为输出口,按键右端为输入口,将GPIOA11-GPIOA15赋值0,通过对按键右端进行扫描,如果某个按键被按下,则该按键右端对应的GPIO口值为0,否则应为1。按键矩阵模块及原理图如图4.1所示。图4.1 4*5按键矩阵模块及原理图4.2.2 数码管显示实验箱上有8只8段数码管,使用74F164芯片(串入并出芯片)对数码管进行控制。8只数码管的控制使用串行方式,实现8只流水数码管。其中3只电路如图4.2所示,另外5只接线相同。图4.2 数码管模块及其硬件结构五、 设计总结5.1 调试结果本次课程设计调试结果如下所示:数码管轮流显示:图5.1 显示当前幅值 图5.3 显示每

7、周期的离散采样点数 图5.2 显示学号图5.4 显示日期 图5.5显示按键坐标输出各种波形:图5.3 显示每周期的离散采样点数图5.6 正弦波形图5.7 三角波图5.8方波图5.9锯齿波图5.10 波形的幅值与周期3.点阵显示结果 (显示名字的截图)5.2 心得体会 六、 参考文献顾卫钢.手把手教你学DSP基于TMS320X281x. 北京:北京航空航天大学出版社,2011.4苏奎峰,吕强等.TMS320X281x DSP原理及C程序开发北京航空航天大学出版社,2008TMS320F281x Data Sheet. Texas Instruments.TMS320F28x Control an

8、d Interrupts Reference Guide. Texas Instruments.TMS320F28x Event Manager (EV) Reference Guide. Texas Instruments.TMS320F28x Optimizing CC+ Compiler Users Guide. Texas Instruments.TMS320F28x DSP CPU and Instruction Set Reference Guide. Texas Instruments.七、附录/*源代码*/#include DSP28_Device.h#include #def

9、ine SIZE 512#define pi 3.14int A=1000;/正弦信号幅度int offset=0;/正弦信号偏移量int f=1;/正弦信号频率int s=0,count=1,flag=0;/正弦信号初始相位int sineSIZE;/正弦信号数组unsigned int t;int strnum=0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE0,0xFE,0xF6,0xEE,0x3E,0x9C,0x7A,0x9E,0x8E;/*09*/int day=0xDA,0x60,0xBF,0xFC,0x67,0x60,0xFC,0xDA;/显示日期in

10、t studentnum17=0xE0,0x60,0x60,0xF2,0xF2,0xFC,0xDA,0x60;/显示学号int Anum=0,0,0,0,0,0x02,0xCE,0xEE;/显示幅度int fnum=0,0,0,0x02,0x7A,0xEE,0x9E,0xCE;/显示频率int key=0x00,0x00,0x00,0x00,0x00,0x60,0x00,0x60;/显示按键坐标int ch8=0xFE,0x60,0x60,0xF2,0xF2,0xFC,0xDA,0x60;/缓存int ch18=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00;i

11、nt str1=0x0900,0xFD08,0x0908,0x0910,0x0920,0x7940,0x4104,0x47FE,0x4140,0x7940,0x0920,0x0920,0x0910,0x094E,0x5184,0x2100;/名字1int str2=0x0100,0x0100,0x0104,0xFFFE,0x0100,0x0100,0x0110,0x3FF8,0x0000,0x0200,0x1180,0x5084,0x5012,0x9012,0x0FF0,0x0000;/名字2int str3=0x0100,0x0088,0x3FFC,0x2080,0x2080,0x2088,

12、0x3FFC,0x2080,0x2080,0x2140,0x2140,0x2220,0x2220,0x4410,0x880E,0x3004;/名字3unsigned int *CPLDDREG = (unsigned int*)0x2004;unsigned int *CPLDDREGL = (unsigned int*)0x2006;unsigned int *LEDM_LC = (unsigned int*)0x2018;/16unsigned int *LEDM_LR = (unsigned int*)0x201A;/16union CPLD_DREGL MYDREGL;/ union

13、CPLD_DREG MYDREG;/16unsigned int keypress=0;unsigned int keyx,keyy;void delay(unsigned int);void ldelay(unsigned int);void FB(void);/产生方波void SJ(void); /产生三角波void JC(void); /产生锯齿波void ZX(void); /产生正弦波void WriteLED(unsigned int);void WriteLEDs(unsigned int *);void Time0();void KeyNO(int *ch2);void Xu

14、eHao();void Ap();void Pead();void main(void) Uint16 a=0x0800; unsigned int i,j,x,y,l,g,k; InitSysCtrl(); /初始化系统 DINT; /关中断 IER = 0x0000; IFR = 0x0000; InitPieCtrl(); /初始化PIE控制寄存器 InitPieVectTable(); /初始化PIE矢量表 InitGpio(); /初始化GPIO EINT; ERTM; MYDREG.all = 0xffff; /init DREG MYDREG.bit.BUFFER_OEn = 0

15、; /BUFFER_OEn = 0 *CPLDDREG = MYDREG.all; MYDREGL.all = 0xffff; /init DREGL /MYDREGL.bit.LEDM_CSn = 0; /LEDM_CSn = 0 *CPLDDREG = MYDREG.all; while(1) a=0x0800;/*逐行逐列按键扫描,将按键所在位置的坐标存入KEYX和KEYY*/ for (i=0;i5;i+) GpioDataRegs.GPADAT.all=0xffff; GpioDataRegs.GPADAT.all=GpioDataRegs.GPADAT.all&(a30000) A

16、=30000; if(keyx=0&keyy=0&keypress=1) keypress=0;A=A-500; if(A0) A=500; if(keyx=1&keyy=1&keypress=1) keypress=0;f=f+1; if(keyx=1&keyy=0&keypress=1) keypress=0;f=f-1; if(f0) f=1; if(keyx=2&keyy=1&keypress=1) keypress=0;s=s+1; if(keyx=2&keyy=0&keypress=1) keypress=0;s=s-1; if(keyx=3&keyy=1&keypress=1)

17、keypress=0;offset=offset+1; if(keyx=3&keyy=0&keypress=1) keypress=0;offset=offset-1; if(keyx=4&keyy=0&keypress=1) keypress=0;count=1; if(keyx=4&keyy=1&keypress=1) keypress=0;count=2; if(keyx=4&keyy=2&keypress=1) keypress=0;count=3; if(keyx=4&keyy=3&keypress=1) keypress=0;count=4; ch12=strnumkeyx%10;

18、ch14=strnumkeyy%10; ldelay(10);switch(count)case 1:FB();break;case 2:SJ();break;case 3:JC();break; case 4:ZX();break; switch(flag)case 0:flag = 1;Time0();break; case 1:flag = 2;Xuehao();break; case 2:flag = 3;Ap();break; case 3:flag = 4;Pead();break; case 4:flag = 0;KeyNO(ch1);break;WriteLEDs(ch); l

19、delay(1000); for(i=1;i17;i+) for(j=0;ji;j+) l=i-j-1; g=(0x00018)|(str1j8); delay(12000); ldelay(1); for(i=1;i17;i+) for(j=0;ji;j+) l=i-j-1; g=(0x00018)|(str2j8); delay(12000); ldelay(1); for(i=1;i17;i+) for(j=0;ji;j+) l=i-j-1; g=(0x00018)|(str3j8); delay(12000); ldelay(1); void FB(void) for(t=0;t0)

20、sinet=A; else sinet=-A; void SJ(void) int k,T; T = SIZE/f/2; k= A/T; for(t=0;tSIZE;t+) if( (t/T) % 2 = 0) sinet = k*(t%T)+offset; else sinet = A-k*(t%T)+offset; void JC(void) int k,T; T = SIZE/f; k = A/T; for(t=0;tSIZE;t+) sinet = k*(t%T)+offset;void ZX(void) for(t=0;tSIZE;t+)sinet=A*sin(2*pi*f*t/51

21、2+s)+offset; void XueHao() unsigned char i; for(i=0;i8;i+) chi=studentnum17i;void KeyNO(int *ch2) unsigned char i; for(i=0;i8;i+) chi=ch2i; void Time0() unsigned char i; for(i=0;i8;i+) chi=dayi;void Ap() ch0= AnumA%10; ch1= Anum(A/10)%10; ch2=Anum(A/100)%10; ch3= Anum(A/1000)%10; ch4= AnumA/10000; c

22、h5=0x03; ch6=0xCE; ch7=0xEE;void Pead() ch0= fnumf/10; ch1= fnum(f%100)/10; ch2= fnum(f%1000)/100; ch3= 0x03; ch4= 0x7A; ch5= 0xEE; ch6= 0x9E; ch7= 0xCE;void WriteLED(unsigned int index) unsigned int i; for(i=0;i8;i+) if(index &(0x01i) MYDREGL.bit.LEDSAB = 1; else MYDREGL.bit.LEDSAB = 0; (*CPLDDREGL) = MYDREGL.all; MYDREGL.bit.LEDSCLK = 0; (*CPLDDREGL) = MYDREGL.all; MYDREGL.bit.LEDSCLK = 1; (*CPLDDREGL) = MYDREGL.all; void WriteLEDs(unsigned int * index) unsigned int i,ii; for(ii=0;ii8;ii+) for(i=0;i8;i+) if(indexii&(0x010) k-; delay(5000); void delay(unsigned int t) while(t0) t-;

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2