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

上传人:b****2 文档编号:2534027 上传时间:2023-05-03 格式:DOCX 页数:24 大小:164.03KB
下载 相关 举报
基于DSP在电子技术上的应用.docx_第1页
第1页 / 共24页
基于DSP在电子技术上的应用.docx_第2页
第2页 / 共24页
基于DSP在电子技术上的应用.docx_第3页
第3页 / 共24页
基于DSP在电子技术上的应用.docx_第4页
第4页 / 共24页
基于DSP在电子技术上的应用.docx_第5页
第5页 / 共24页
基于DSP在电子技术上的应用.docx_第6页
第6页 / 共24页
基于DSP在电子技术上的应用.docx_第7页
第7页 / 共24页
基于DSP在电子技术上的应用.docx_第8页
第8页 / 共24页
基于DSP在电子技术上的应用.docx_第9页
第9页 / 共24页
基于DSP在电子技术上的应用.docx_第10页
第10页 / 共24页
基于DSP在电子技术上的应用.docx_第11页
第11页 / 共24页
基于DSP在电子技术上的应用.docx_第12页
第12页 / 共24页
基于DSP在电子技术上的应用.docx_第13页
第13页 / 共24页
基于DSP在电子技术上的应用.docx_第14页
第14页 / 共24页
基于DSP在电子技术上的应用.docx_第15页
第15页 / 共24页
基于DSP在电子技术上的应用.docx_第16页
第16页 / 共24页
基于DSP在电子技术上的应用.docx_第17页
第17页 / 共24页
基于DSP在电子技术上的应用.docx_第18页
第18页 / 共24页
基于DSP在电子技术上的应用.docx_第19页
第19页 / 共24页
基于DSP在电子技术上的应用.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《基于DSP在电子技术上的应用.docx》由会员分享,可在线阅读,更多相关《基于DSP在电子技术上的应用.docx(24页珍藏版)》请在冰点文库上搜索。

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

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

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

目录

第一章绪论3

1.1系统背景3

1.1.1DSP技术的特点以及在电子技术中的应用3

1.1.2本课程设计任务及要求4

第二章系统电路4

2.1直流电机4

2.2交通灯6

第三章系统软件设计7

3.1软件设计流程图7

3.1.1主程序流程图7

3.1.2中断服务程序框图8

3.1.3交通灯程序框图8

3.1.4步进电机程序框图9

3.1.5直流电机程序图9

3.2系统程序设计9

3.2.1主程序9

3.2.2中断子程序13

3.2.3交通灯控制程序14

第四章实验结果分析16

4.1实验所用仪器16

4.2测试结果分析16

第五章存在问题17

第六章改进设想17

第七章结束语17

参考文献17

第一章绪论

1.1系统背景

1.1.1DSP技术的特点以及在电子技术中的应用

  DSP一方面是DigitalSignalProcessing的缩写,意思是数字信号处理,就是指数字信号理论研究。

DSP另一方面是DigitalSignalProcessor,意思是数字信号处理器,就是用来完成数字信号处理的器件。

最初的DSP器件只是被设计成用以完成复杂数字信号处理的算法。

DSP器件紧随着数字信号理论的发展而不断发展。

在20世纪60年代,数字信号处理技术才刚刚起步。

60年代中期以后,快速傅里叶算法的出现及大规模集成电路的发展大大促进了DSP技术与器件的飞速发展。

(一)DSP器件的特点

1.高速、高精度运算能力

(1)硬件乘法累加操作,在一个指令周期内可完成一次乘法和一次加法。

(2)哈弗结构和流水线结构。

哈佛结构的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两个相互独立的存储器,每个存储器独立编址,独立访问。

与两个存储器相对应的是系统中设置了程序总线和数据总线,从而使数据的吞吐率提高了一倍。

由于程序和存储器在两个分开的空间中,因此取指和执行能完全重叠。

流水线与哈佛结构相关,DSP芯片广泛采用流水线以减少指令执行的时间,从而增强了处理器的处理能力。

使取指、译码和执行等操作可以重叠执行,处理器可以并行处理二到四条指令,每条指令处于流水线的不同阶段。

(3)硬件循环控制。

大多数的DSP都有专门的硬件,用于零开销循环。

所谓零开销循环是指处理器在执行循环时,不用花时间去检查循环计数器的值、条件转移到循环的顶部、将循环计数器减1。

(4)特殊的寻址模式。

DSP处理器往往都支持专门的寻址模式,它们对通常的信号处理操作和算法是很有用的。

例如,模块(循环)寻址(对实现数字滤波器延时线很有用)、位倒序寻址(对FFT很有用)。

(5)具有丰富的外设。

DSP具有DMA(有一组或多组独立的DMA总线,与CPU的程序、数据总线并行工作,在不影响CPU工作的条件下,DMA速度已达800Mbyte/s以上)、串口、定时器等外设。

2.强大的数据通信能力。

3.灵活的可编程性。

DSP骗内设置RAM和ROM,可以方便地拓展程序、数据及I/O空间,同时允许ROM和RAM直接数据传送。

可编程DSP芯片可使设计人员在开发过程中灵活方便地对软件进行修改和升级

4.低功耗设计。

DSP可以工作在省电状态,节省了能源。

(二)DSP器件的应用

自从DSP芯片诞生以来,DSP芯片得到了飞速的发展。

DSP芯片高速发展,一方面得益于集成电路的发展,另一方面也得益于巨大的市场。

在短短的十多年时间,DSP芯片已经在信号处理、通信、雷达等许多领域得到广泛的应用。

目前,DSP芯片的价格也越来越低,性能价格比日益提高,具有巨大的应用潜力。

DSP芯片的应用主要有:

(1)信号处理--如,数字滤波、自适应滤波、快速傅里叶变换、相关运算、频谱分析、卷积等。

(2)通信--如,调制解调器、自适应均衡、数据加密、数据压缩、回坡抵消、多路复用、传真、扩频通信、纠错编码、波形产生等。

(3)语音--如语音编码、语音合成、语音识别、语音增强、说话人辨认、说话人确认、语音邮件、语音储存等。

(4)图像/图形--如二维和三维图形处理、图像压缩与传输、图像增强、动画、机器人视觉等。

(5)军事--如保密通信、雷达处理、声纳处理、导航等。

(6)仪器仪表--如频谱分析、函数发生、锁相环、地震处理等。

(7)自动控制--如引擎控制、深空、自动驾驶、机器人控制、磁盘控制。

(8)医疗--如助听、超声设备、诊断工具、病人监护等。

(9)家用电器--如高保真音响、音乐合成、音调控制、玩具与游戏、数字电话/电视等

1.1.2本课程设计任务及要求

一、任务:

编程实现在现有实验箱上整合步进电机、直流电机、交通灯等实验项目。

1、三个实验可以通过键盘进行模式选择来切换(1步进电机控制,2直流电机控制,3交通灯控制,4三个实验同时进行),并在LED左数第一位上显示模式。

2、步进电机和直流电机的正反转、加减速在键盘上进行控制,并在LED上显示步进电机和直流电机的运行状态。

3、交通灯控制时应在LED上显示时间的变化。

交通灯东西、南北的时间可通过键盘设定。

4、三个实验同时进行时只显示模式,各实验的参数都可通过键盘设置。

二、要求:

1、上交不少于3000字的设计报告。

报告内容包括:

设计任务、设计要求、设计思路、采取的算法、设计过程、中间结果(调试时编译的结果截图)、设计结果(实现了哪些功能)、设计总结达到了哪些目标、存在哪些问题、对存在的问题进行分析、提出改进设想、参考文献等内容。

2、报告最后附录源代码。

第2章系统电路

2.1直流电机

2.1.1直流电机与DSP的接线用到了16位的地址线(0b007)和16位的数据线,通过向该地址写数据来控制直流电机,如图2.1.1

图2.1.1DSP控制直流电机的接线图

2.1.2直流电机是通过送PWM脉冲来调速的,如图2.1.2所示PWM脉冲的周期不变,高电平的时间长则直流电机加速,低电平的时间长则直流电机减速(动摩擦力)。

图2.1.2直流电机的调速原理

2.1.3直流电机的正反转控制是通过如下电路实现的:

其中T1,T3三极管由B控制,T2,T4三极管由A控制。

控制方式如下:

控制原理如下:

图2.1.3直流电机正反转控制原理

 

2.2交通灯

2.2.1交通灯在每个方向上都有红绿灯。

其中相对方向上的相同颜色的灯通过同一条线控制。

A0~A15控制译码器使能端,D0~D15输出控制的数据,如图2.2.1所示

图2,2,1交通灯电路原理图

第3章 系统软件设计

3.1软件设计流程图

3.1.1主程序流程图

上面主要是主程序的流程图,程序初始化后,通过键盘上1,2,3,4键的外部中断选择哪一种进入模式,主要有五种模式:

模式一,步进电机控制

模式二,直流电机控制

模式三,交通灯控制

模式四,综合模式(三种同时进行)

模式五,交通灯东西南北红灯时间控制

进入某种模式的同时,还通过LED显示函数(本设计中是voidLED_display_6函数和voidLED_display_1函数),其中模式一到模式四是通过第一个数码管显示,进入调时状态和交通灯时间是通过第三,四,五,六个数码管显示。

3.1.2中断服务程序框图

由上图我们可以看出,本设计主要采用两个中断,INT2外部中断和INT0定时器中断。

其中INT2主要是用于按键控制模式的选择,电机的加减速转向,交通灯时间的设置,采用定时器中断是便于时间的控制,DSP定时中断的周期T=(PRD+1)X(TDDR+1)XCLKOUT,由本设计中TDDR=1001,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"/*通过Timer0_init(unsignedintTmer0_VAL);调用*/

#include"Timer1_init.h"/*通过Timer1_init(unsignedintTmer0_VAL);调用*/

#include"Interrupt_server.h"/*包含后可直接到所对应的中断服务程序中编中断服务程序*/

#include"LED_display_6.h"/*通过LED_display_6(unsignedint显示数据);调用*/

#include"LED_display_1.h"

#include"traffic.h"

#include

intdx_red=30,nb_red=30;

unsignedintBJ_code[]={0x07,0x0b,0x0d,0x0e};

unsignedintbjcode,dj_code;

unsignedcharSTATE=1;

unsignedcharINT2_Flag=0;

#definedtime1000;

voiddelay(unsignedintd_t);

voidKeyprocess(void);

voidBj_keyprocess(void);

voidDj_keyprocess(void);

voidJT_keyprocess(void);

voidTS_keyprocess(void);

voidSet_time(void);

voidtraffic_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)

{

case1:

BJ_ADDR=BJ_code[bjcode];delay(100);break;/*不加会不转delay(100);*/

case2:

DJ_ADDR=dj_code;break;

case3:

traffic();traffic_LED_display();break;

case4:

DJ_ADDR=dj_code;BJ_ADDR=BJ_code[bjcode];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);

}

}

voidKeyprocess()

{

switch(STATE)

{

case1:

Bj_keyprocess();break;

case2:

Dj_keyprocess();break;

case3:

JT_keyprocess();break;

case4:

ZH_keyprocess();break;

case5:

Set_time();break;

default:

break;

}

}

voidBj_keyprocess()

{

switch(key_code)

{

case1:

STATE=1;break;

case2:

STATE=2;break;

case3:

STATE=3;break;

case4:

STATE=4;break;

case5:

bj_derect=0;break;/*正转0*/

case6:

bj_derect=1;break;/*反转1*/

case7:

if(bj_speed>=3)bj_speed--;break;/*加速2*/

case8:

if(bj_speed<=50)bj_speed++;break;/*减速3*/

default:

break;

}

}

voidDj_keyprocess()

{

switch(key_code)

{

case1:

STATE=1;break;

case2:

STATE=2;break;

case3:

STATE=3;break;

case4:

STATE=4;break;

case5:

dj_derect=0;break;/*正转0*/

case6:

dj_derect=1;break;/*反转1*/

case7:

if(dj_speed

case8:

if(dj_speed>=1)dj_speed--;break;/*减速3*/

default:

break;

}

}

voidJT_keyprocess()

{

switch(key_code)

{

case1:

STATE=1;break;

case2:

STATE=2;break;

case3:

STATE=3;break;

case4:

STATE=4;break;

case9:

STATE=5;break;

default:

break;

}

}

voidZH_keyprocess()

{

switch(key_code)

{

case1:

STATE=1;break;

case2:

STATE=2;break;

case3:

STATE=3;break;

case4:

STATE=4;break;

case5:

bj_derect=0;break;

case6:

bj_derect=1;break;

case7:

if(bj_speed>=3)bj_speed--;break;

case8:

if(bj_speed<=50)bj_speed++;break;

case9:

STATE=5;break;

case11:

dj_derect=0;break;

case12:

dj_derect=1;break;

case13:

if(dj_speed

case14:

if(dj_speed>=1)dj_speed--;break;

default:

break;

}

}

voidSet_time(void)

{

switch(key_code)

{

case5:

set_time_ew_red+=50;break;

case6:

set_time_ew_red-=50;break;

case7:

set_time_sn_red+=50;break;

case8:

set_time_sn_red-=50;break;

case10:

STATE=4;break;

default:

break;

}

if(set_time_ew_red>4950)

set_time_ew_red=4950;

if(set_time_ew_red<0)

set_time_ew_red=0;

if(set_time_sn_red>4950)

set_time_sn_red=4950;

if(set_time_sn_red<0)

set_time_sn_red=0;

}

voidtraffic_LED_display()

{

if(t_traffic

LED_display_6((set_time_ew_red-t_traffic)/50*100);

if(t_traffic>=set_time_ew_red&&t_traffic

LED_display_6((set_time_ew_red+500-t_traffic)/50*100);

if(t_traffic>=set_time_ew_red+500&&t_traffic

LED_display_6((set_time_ew_red+500+set_time_sn_red-t_traffic)/50);

if(t_traffic>=set_time_ew_red+500+set_time_sn_red&&t_traffic

LED_display_6((set_time_ew_red+500+set_time_sn_red+500-t_traffic)/50);

}

3.2.2中断子程序

1,定时器Timer0中断服务子程序

/***TINT0中断服务程序***/

interruptvoidTINT0_ISR()

{

asm("NOP");

asm("NOP");

t0_bj++;

t0_dj++;

t_traffic++;

/**BJ_Control**/

if(t0_bj>=bj_speed)

{

t0_bj=0;

t1_bj++;

bjcode=t1_bj%4;

if(bj_derect)bjcode=3-bjcode;

}

/**DJ_Control**/

if(t0_dj

{

dj_code=positive;

if(dj_derect)dj_code=negative;

}

if(t0_dj>=dj_speed&&t0_dj

if(t0_dj>=dj_period)t0_dj=0;

/**JT_Control**/

return;

}

2,INT2按键中断服务子程序

/***INT2中断服务程序***/

interruptvoidINT2_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*******/

unsignedintt_traffic;

externintset_time_ew_red,set_time_sn_red;

externvoiddelay(unsignedintd_t);

voidtraffic()

{if(t_traffic

{traffic_ADDR=0x5a00;/*东西红,南北绿*/

delay(50);

}

if(t_traffic>=set_time_ew_red&&t_traffic

{traffic_ADDR=0x5000;/*南北闪烁*/

delay(50);

}

if(t_traffic>=set_time_ew_red+50&&t_traffic

{traffic_ADDR=0x5a00;/*南北闪烁*/

delay(50);

}

if(t_traffic>=set_time_ew_red+100&&t_traffic

{traffic_ADDR=0x5000;/*南北闪烁*/

delay(50);

}

if(set_time_ew_red+150&&set_time_ew_red+200)

{traffic_ADDR=0x5a00;/*南北闪烁*/

delay(50);

}

if(t_traffic>=set_time_ew_red+200&&set_time_ew_red+250)

{traffic_ADDR=0x5000;/*南北闪烁*/

delay(50);

}

if(t_traffic>=set_time_ew_red+250&&t_traffic

{traffic_ADDR=0x0fa00;/*南北黄灯*/

delay(50);

}

if(t_traffic>=set_time_ew_red+500&&t_traffic

{traffic_ADDR=0xa500;/*东西绿,南北红*/

delay(50);

}

if(t_traffic>=set_time_ew_red+500+set_time_sn_red&&

t_traffic

{traffic_ADDR=0xa000;/*东西闪烁*/

delay(50);

}

if(t_traffic>=set_time_ew_red+500+set_time_sn_red+50&&

t_traffic

{traffic_ADDR=0xa500;/*东西闪烁*/

delay(50);

}

if(t_traffic>=set_time_ew_red+500+set_time_sn_red+100&&

t_traffic

{traffic_ADDR=0xa000;/*东西闪烁*/

delay(50);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 工程科技 > 能源化工

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

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