基于DSP在电子技术上的应用.doc

上传人:飞****2 文档编号:60098817 上传时间:2022-11-13 格式:DOC 页数:17 大小:227.50KB
返回 下载 相关 举报
基于DSP在电子技术上的应用.doc_第1页
第1页 / 共17页
基于DSP在电子技术上的应用.doc_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《基于DSP在电子技术上的应用.doc》由会员分享,可在线阅读,更多相关《基于DSP在电子技术上的应用.doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 基于DSP在电子技术上的应用目录第一章 绪论31.1系统背景31.1.1技术的特点以及在电子技术中的应用31.1.2本课程设计任务及要求4第二章 系统电路42.1直流电机42.2交通灯6第三章 系统软件设计73.1软件设计流程图73.1.1主程序流程图73.1.2中断服务程序框图83.1.3交通灯程序框图83.1.4步进电机程序框图93.1.5直流电机程序图93.2系统程序设计93.2.1主程序93.2.2中断子程序133.2.3交通灯控制程序14第四章 实验结果分析164.1实验所用仪器164.2测试结果分析16第五章 存在问题17第六章 改进设想17第七章 结束语17参考文献17第一章

2、绪论1.1系统背景1.1.1技术的特点以及在电子技术中的应用一方面是Digital Signal Processing的缩写,意思是数字信号处理,就是指数字信号理论研究。DSP另一方面是Digital Signal Processor,意思是数字信号处理器,就是用来完成数字信号处理的器件。最初的DSP器件只是被设计成用以完成复杂数字信号处理的算法。DSP器件紧随着数字信号理论的发展而不断发展。在20世纪60年代,数字信号处理技术才刚刚起步。60年代中期以后,快速傅里叶算法的出现及大规模集成电路的发展大大促进了DSP技术与器件的飞速发展。(一)DSP器件的特点1高速、高精度运算能力(1)硬件乘法

3、累加操作,在一个指令周期内可完成一次乘法和一次加法。(2)哈弗结构和流水线结构。哈佛结构的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址,独立访问。与两个存储器相对应的是系统中设置了程序总线和数据总线,从而使数据的吞吐率提高了一倍。由于程序和存储器在两个分开的空间中,因此取指和执行能完全重叠。流水线与哈佛结构相关,DSP芯片广泛采用流水线以减少指令执行的时间,从而增强了处理器的处理能力。使取指、译码和执行等操作可以重叠执行,处理器可以并行处理二到四条指令,每条指令处于流水线的不同阶段。(3)硬件循环控制。大多数的DSP都有专门的

4、硬件,用于零开销循环。所谓零开销循环是指处理器在执行循环时,不用花时间去检查循环计数器的值、条件转移到循环的顶部、将循环计数器减1。(4)特殊的寻址模式。DSP处理器往往都支持专门的寻址模式,它们对通常的信号处理操作和算法是很有用的。例如,模块(循环)寻址(对实现数字滤波器延时线很有用)、位倒序寻址(对FFT很有用)。(5)具有丰富的外设。DSP具有DMA(有一组或多组独立的DMA总线,与CPU的程序、数据总线并行工作,在不影响CPU工作的条件下,DMA速度已达800Mbyte/s以上)、串口、定时器等外设。2强大的数据通信能力。3灵活的可编程性。DSP骗内设置RAM和ROM,可以方便地拓展程

5、序、数据及I/O空间,同时允许ROM和RAM直接数据传送。可编程DSP芯片可使设计人员在开发过程中灵活方便地对软件进行修改和升级4低功耗设计。DSP可以工作在省电状态,节省了能源。(二)DSP器件的应用 自从DSP芯片诞生以来,DSP芯片得到了飞速的发展。DSP芯片高速发展,一方面得益于集成电路的发展,另一方面也得益于巨大的市场。在短短的十多年时间,DSP芯片已经在信号处理、通信、雷达等许多领域得到广泛的应用。目前,DSP芯片的价格也越来越低,性能价格比日益提高,具有巨大的应用潜力。DSP芯片的应用主要有:(1) 信号处理-如,数字滤波、自适应滤波、快速傅里叶变换、相关运算、频谱分析、卷积等。

6、(2) 通信-如,调制解调器、自适应均衡、数据加密、数据压缩、回坡抵消、多路复用、传真、扩频通信、纠错编码、波形产生等。(3) 语音-如语音编码、语音合成、语音识别、语音增强、说话人辨认、说话人确认、语音邮件、语音储存等。(4) 图像/图形-如二维和三维图形处理、图像压缩与传输、图像增强、动画、机器人视觉等。(5) 军事-如保密通信、雷达处理、声纳处理、导航等。(6) 仪器仪表-如频谱分析、函数发生、锁相环、地震处理等。(7) 自动控制-如引擎控制、深空、自动驾驶、机器人控制、磁盘控制。(8) 医疗-如助听、超声设备、诊断工具、病人监护等。(9) 家用电器-如高保真音响、音乐合成、音调控制、玩

7、具与游戏、数字电话/电视等1.1.2本课程设计任务及要求一、任务:编程实现在现有实验箱上整合步进电机、直流电机、交通灯等实验项目。1、 三个实验可以通过键盘进行模式选择来切换(1步进电机控制,2直流电机控制,3交通灯控制,4三个实验同时进行),并在LED左数第一位上显示模式。2、 步进电机和直流电机的正反转、加减速在键盘上进行控制,并在LED上显示步进电机和直流电机的运行状态 。3、 交通灯控制时应在LED上显示时间的变化。交通灯东西、南北的时间可通过键盘设定。4、 三个实验同时进行时只显示模式,各实验的参数都可通过键盘设置。二、要求:1、上交不少于3000字的设计报告。报告内容包括:设计任务

8、、设计要求、设计思路、采取的算法、设计过程、中间结果(调试时编译的结果截图)、设计结果(实现了哪些功能)、设计总结达到了哪些目标、存在哪些问题、对存在的问题进行分析、提出改进设想、参考文献等内容。2、报告最后附录源代码。第二章 系统电路2.1直流电机2.1.1直流电机与DSP的接线用到了16位的地址线(0b007)和16位的数据线,通过向该地址写数据来控制直流电机,如图2.1.1图2.1.1 DSP控制直流电机的接线图2.1.2直流电机是通过送PWM脉冲来调速的,如图2.1.2所示PWM脉冲的周期不变,高电平的时间长则直流电机加速,低电平的时间长则直流电机减速(动摩擦力)。图2.1.2直流电机

9、的调速原理2.1.3直流电机的正反转控制是通过如下电路实现的:其中T1,T3三极管由B控制,T2,T4三极管由A控制。控制方式如下:控制原理如下:图2.1.3直流电机正反转控制原理2.2交通灯2.2.1交通灯在每个方向上都有红绿灯。其中相对方向上的相同颜色的灯通过同一条线控制。A0A15控制译码器使能端,D0D15输出控制的数据,如图2.2.1所示图2,2,1交通灯电路原理图第三章 系统软件设计3.1软件设计流程图3.1.1主程序流程图 上面主要是主程序的流程图,程序初始化后,通过键盘上1,2,3,4键的外部中断选择哪一种进入模式,主要有五种模式:模式一,步进电机控制模式二,直流电机控制模式三

10、,交通灯控制模式四,综合模式(三种同时进行)模式五,交通灯东西南北红灯时间控制 进入某种模式的同时,还通过LED显示函数(本设计中是void LED_display_6函数和void LED_display_1函数),其中模式一到模式四是通过第一个数码管显示,进入调时状态和交通灯时间是通过第三,四,五,六个数码管显示。3.1.2中断服务程序框图 由上图我们可以看出,本设计主要采用两个中断,INT2外部中断和INT0定时器中断。其中INT2主要是用于按键控制模式的选择,电机的加减速转向,交通灯时间的设置,采用定时器中断是便于时间的控制,定时中断的周期T=(PRD+1)X(TDDR+1)XCLKO

11、UT,由本设计中TDDR1001,PRD=6ffff,晶振为16M可以算出周期大约为18ms,因此55个周期大约为1秒,由于本课题对于时间的精确度没有太大的要求,因此采取50个周期为一个时间单位。3.1.3交通灯程序框图3.1.4步进电机程序框图3.1.5直流电机程序图3.2系统程序设计3.2.1主程序/*main_func.c*/ #include reg_define.h#include system_init.h /*通过system_init();调用*/#include IOport_init.h /*包含后可直接使用所定义的IO端口*/#include Timer0_init.h

12、/*通过Timer0_init(unsigned int Tmer0_VAL);调用*/#include Timer1_init.h /*通过Timer1_init(unsigned int Tmer0_VAL);调用*/#include Interrupt_server.h /*包含后可直接到所对应的中断服务程序中编中断服务程序*/#include LED_display_6.h /*通过LED_display_6(unsigned int 显示数据);调用*/ #include LED_display_1.h #include traffic.h#include int dx_red=30

13、,nb_red=30; unsigned int BJ_code=0x07,0x0b,0x0d,0x0e;unsigned int bjcode,dj_code; unsigned char STATE=1;unsigned char INT2_Flag=0;#define dtime 1000 ; void delay(unsigned int d_t);void Keyprocess(void); void Bj_keyprocess(void);void Dj_keyprocess(void);void JT_keyprocess(void);void TS_keyprocess(voi

14、d);void Set_time(void);void traffic_LED_display(void);main() system_init(); Timer0_init(0x6fff); /*Tmer0_VAL为TINT0的定时时间常数16.4ms*/ /Timer1_init(0x0ffff); /*Tmer0_VAL为TINT1的定时时间常数*/ while(1) if(INT2_Flag=1) Keyprocess(); INT2_Flag=0; switch(STATE) case 1:BJ_ADDR=BJ_codebjcode;delay(100);break;/*不加会不转d

15、elay(100);*/ case 2:DJ_ADDR=dj_code;break;case 3:traffic();traffic_LED_display();break;case 4:DJ_ADDR=dj_code;BJ_ADDR=BJ_codebjcode;delay(100);traffic();break;default:break; if(STATE=5) LED_display_6(set_time_ew_red/50*100+set_time_sn_red/50); LED_display_1(STATE); delay(10); void Keyprocess()switch

16、(STATE)case 1:Bj_keyprocess();break; case 2:Dj_keyprocess();break;case 3:JT_keyprocess();break;case 4:ZH_keyprocess();break;case 5:Set_time();break;default:break;void Bj_keyprocess()switch(key_code) case 1:STATE=1;break;case 2:STATE=2;break;case 3:STATE=3;break;case 4:STATE=4;break;case 5:bj_derect=

17、0;break; /*正转0*/case 6:bj_derect=1;break; /*反转1*/case 7:if(bj_speed=3) bj_speed-;break; /*加速2*/case 8:if(bj_speed=50) bj_speed+;break; /*减速3*/default : break;void Dj_keyprocess()switch(key_code) case 1:STATE=1;break;case 2:STATE=2;break;case 3:STATE=3;break;case 4:STATE=4;break;case 5:dj_derect=0;br

18、eak; /*正转0*/case 6:dj_derect=1;break; /*反转1*/case 7:if(dj_speed=1) dj_speed-;break; /*减速3*/default : break;void JT_keyprocess()switch(key_code) case 1:STATE=1;break;case 2:STATE=2;break;case 3:STATE=3;break;case 4:STATE=4;break;case 9:STATE=5;break;default : break;void ZH_keyprocess()switch(key_code

19、) case 1:STATE=1;break;case 2:STATE=2;break;case 3:STATE=3;break;case 4:STATE=4;break;case 5:bj_derect=0;break;case 6:bj_derect=1;break;case 7:if(bj_speed=3) bj_speed-;break;case 8:if(bj_speed=50) bj_speed+;break;case 9:STATE=5;break;case 11:dj_derect=0;break;case 12:dj_derect=1;break;case 13:if(dj_

20、speed=1) dj_speed-;break;default : break;void Set_time(void) switch(key_code) case 5:set_time_ew_red+=50;break;case 6:set_time_ew_red-=50;break;case 7:set_time_sn_red+=50;break;case 8:set_time_sn_red-=50;break;case 10:STATE=4;break;default : break;if(set_time_ew_red4950)set_time_ew_red=4950;if(set_t

21、ime_ew_red4950)set_time_sn_red=4950;if(set_time_sn_red0)set_time_sn_red=0; void traffic_LED_display() if(t_traffic=set_time_ew_red&t_traffic=set_time_ew_red+500&t_traffic=set_time_ew_red+500+set_time_sn_red&t_traffic=bj_speed) t0_bj=0;t1_bj+;bjcode=t1_bj%4; if(bj_derect) bjcode=3-bjcode; /*DJ_Contro

22、l*/if(t0_dj=dj_speed&t0_dj=dj_period) t0_dj=0; /*JT_Control*/return; 2,INT2按键中断服务子程序/*INT2中断服务程序*/interrupt void INT2_ISR() asm( NOP);asm( NOP);key_code=KEY_ADDR;key_code&=0x001f;key_code=key_code-1;/*为了键盘上的数字与数码管显示的一一对应*/INT2_Flag=1;return; 3.2.3交通灯控制程序交通灯控制函数:/*traffic.h*/ unsigned int t_traffic;

23、extern int set_time_ew_red,set_time_sn_red;extern void delay(unsigned int d_t);void traffic() if(t_traffic=set_time_ew_red&t_traffic=set_time_ew_red+50&t_traffic=set_time_ew_red+100&t_traffic=set_time_ew_red+200&set_time_ew_red+250) traffic_ADDR=0x5000; /*南北闪烁*/ delay(50);if(t_traffic=set_time_ew_re

24、d+250&t_traffic=set_time_ew_red+500&t_traffic=set_time_ew_red+500+set_time_sn_red&t_traffic=set_time_ew_red+500+set_time_sn_red+50&t_traffic=set_time_ew_red+500+set_time_sn_red+100&t_traffic=set_time_ew_red+500+set_time_sn_red+150&t_traffic=set_time_ew_red+500+set_time_sn_red+200&t_traffic=set_time_

25、ew_red+500+set_time_sn_red+250&t_traffic=set_time_ew_red+500+set_time_sn_red+500) t_traffic=0; 第四章 实验结果分析4.1实验所用仪器(1) 方正电脑 (2)实验箱4.2测试结果分析(一)实验编译结果如下图:(二) 测试结果分析模式 按 键按键1按键2按键3按键4按键5按键6按键7按键8按键9按键A按键B按键C按键D按键E模式一步进电机(A)模式一模式二模式三模式四A正转A反转A加速A减速无效无效无效无效无效无效模式二直流电机(B)模式一模式二模式三模式四B正转B反转B加速B减速无效无效无效无效无效无

26、效模式三交通灯(C)模式一模式二模式三模式四无效无效无效无效模式五无效无效无效无效无效模式四同时进行模式一模式二模式三模式四A正转A反转A加速A减速模式五无效B正转B反转B加速B减速模式五时间设置无效无效无效无效dxtime+dxtime-nbtime+nbtime-无效模式四无效无效无效无效第五章 存在问题该设计中存在的问题有:1, 交通灯控制时,有两路可以控制红绿灯的长短,既可以延长红灯时间,也可以延长绿灯时间,这样同一方向上的红绿灯的时间比没有变化。而实际应用上交通灯红绿灯的时间和是一个定值,即红灯长则绿灯短,红灯限制车流,绿灯放行人流,这样才能起到限流的作用。2, 综合控制时,当直流电

27、机转速很快时,步进电机有失步现象,且LED显示有重影。第六章 改进设想针对以上问题,改进设想如下:1, 对同一方向上的红绿灯用户自己先设一个“和时间”,然后只允许用户对该方向上的红灯时间进行修改,红灯加则绿灯减,总和保持不变。2, 可能原因是程序中某些函数(如T_triffic())执行时间过长,导致T0中断后步进码加1,但中断结束后接着仍然执行这个函数,待下一次中断到来时,步进码还没来得及送到步进电机,此时步进码又加1,导致失步。可以考虑,将交通灯控制函数改为定时器中断控制,到预设时间后,再去改变交通灯的状态。第七章 结束语本次课程设计基本上实现了所要求的目标,达到了预期效果。通过本课程设计,查阅了很多参考资料,了解了DSP的编程控制方法。期间和同学进行了热烈的探讨学到了不少新的控制方法和思路,对DSP的编程方法有了新的了解。雷老师也给予了很多无私的帮助和指导,对我们提出了很多改进的意见,在这里一并表示感谢。参考文献(略)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁