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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

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

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

2、12);当前按键坐标(格式为:X X)。5)终极设计:利用点阵循环显示本人姓名。三、 设计方案本次课程设计是基于DSP的可调信号发生器的设计,系统设计方案框图如图3.1所示。通过读取外部手动按键的信号,转换显示CCS窗口的波形,按键控制波形如图3.2所示;同时在数码管上动态显示幅值、频率、学号、按键坐标和日期。图3.1 系统设计方案框图图3.2 按键控制波形四、 软件、硬件设计(根据设计内容适当处理,硬件设计应包括PCB4.1、软件设计软件设计模块包含了按键矩阵模块、波形发生模块、数码管显示模块、点阵显示模块和综合调试显示结果。4.1.1 按键矩阵模块使用DSPF2812的GPIO功能,判断按

3、键是否按下keypress=1。再用标志位flag控制选择输出波形。4.1.2 波形发生模块通过手动按键控制CCS窗口显示波形:正弦波、方波、三角波、锯齿波。(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端口来扫描控制,即可判断出哪一个按键被按下。按键左

4、端接GPIOA11-GPIOA15,按键右端接GPIOA7-GPIOA10。通过对GPIOA端口进行初始化,按键左端为输出口,按键右端为输入口,将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、调试结果本次课程设计调试结果如下所示:数码管轮流显示:图5.1 显示当前幅值 图5.3 显示每周期的离散采样点数 图5.2 显示学号图5.4 显示日期 图5.5显示按键坐标输出各种波形:图5.3 显示每周期的离散采样点数图5.6 正弦波形图5.7 三角波图5.8方波图5.9锯齿波图5.10 波形的幅值与周期3.点阵显示结果(显示名字的截图)5.2 心得体会六、 参考文献1. 顾卫钢.手把手教你学DSP基于TMS320X281x. 北京:北京航空航天大学出版社,2011.42. 苏奎峰,吕强等.TMS320X281x DSP原理及C程序开发北京航空航天大学出版社,20083. TMS320F28

6、1x Data Sheet. Texas Instruments.4. TMS320F28x Control and Interrupts Reference Guide. Texas Instruments.5. TMS320F28x Event Manager (EV) Reference Guide. Texas Instruments.6. TMS320F28x Optimizing CC+ Compiler Users Guide. Texas Instruments.7. TMS320F28x DSP CPU and Instruction Set Reference Guide.

7、 Texas Instruments.七、附录/*源代码*/#include DSP28_Device.h#include #define 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,

8、0x8E;/*09*/int day=0xDA,0x60,0xBF,0xFC,0x67,0x60,0xFC,0xDA;/显示日期int 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,0x

9、FC,0xDA,0x60;/缓存int ch18=0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00;int 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,0x0

10、FF0,0x0000;/名字2int str3=0x0100,0x0088,0x3FFC,0x2080,0x2080,0x2088,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 *LE

11、DM_LR = (unsigned int*)0x201A;union CPLD_DREGL MYDREGL;/ union CPLD_DREG MYDREG;unsigned 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 WriteLE

12、Ds(unsigned int *);void Time0();void KeyNO(int *ch2);void XueHao();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; ERT

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

14、=GpioDataRegs.GPADAT.all&(a30000) A=30000; if(keyx=0&keyy=0&A=A-500; if(A0) A=500; if(keyx=1&f=f+1;f=f-1; if(f0) f=1; if(keyx=2&s=s+1;s=s-1; if(keyx=3&offset=offset+1;offset=offset-1; if(keyx=4&count=1;count=2;keyy=2&count=3;keyy=3&count=4; ch12=strnumkeyx%10;ch14=strnumkeyy%10;ldelay(10);switch(cou

15、nt)case 1:FB();case 2:SJ();case 3:JC(); case 4:ZX();switch(flag)case 0:flag = 1;Time0(); case 1:flag = 2;Xuehao(); case 2:flag = 3;Ap(); case 3:flag = 4;Pead();flag = 0;KeyNO(ch1);WriteLEDs(ch); ldelay(1000); for(i=1;17;i+) for(j=0;ji;j+) l=i-j-1; g=(0x00018)|(str1j8)|(str2j8)|(str3j void FB(void)fo

16、r(t=0;t0) sinet=A; else sinet=-A; void SJ(void) int k,T; T = SIZE/f/2; k= A/T; for(t=0; if( (t/T) % 2 = 0) sinet = k*(t%T)+offset; sinet = A-k*(t%T)+offset;void JC(void) T = SIZE/f; k = A/T; sinet = k*(t%T)+offset;void ZX(void)void XueHao() unsigned char i; for(i=0;8; chi=studentnum17i;void KeyNO(in

17、t *ch2) chi=ch2i;void Time0() 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; ch5=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;vo

18、id WriteLED(unsigned int index) unsigned int i; if(index &(0x01i) MYDREGL.bit.LEDSAB = 1; else MYDREGL.bit.LEDSAB = 0; (*CPLDDREGL) = MYDREGL.all; MYDREGL.bit.LEDSCLK = 0; MYDREGL.bit.LEDSCLK = 1;void WriteLEDs(unsigned int * index) unsigned int i,ii; for(ii=0;ii0) k-; delay(5000); void delay(unsigned int t) while(t t-;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1