通信工程DSP课程设计报告 键盘发声装置 0701班一组.docx
- 文档编号:18128889
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:24
- 大小:162.88KB
通信工程DSP课程设计报告 键盘发声装置 0701班一组.docx
《通信工程DSP课程设计报告 键盘发声装置 0701班一组.docx》由会员分享,可在线阅读,更多相关《通信工程DSP课程设计报告 键盘发声装置 0701班一组.docx(24页珍藏版)》请在冰点文库上搜索。
通信工程DSP课程设计报告键盘发声装置0701班一组
课程设计说明书
(2010/2011学年第一学期)
课程名称:
DSP课程设计
题目:
键盘输入分频发声装置
专业班级:
通信工程070-1班
学生姓名:
XXX
学号:
xxxxXXX
指导教师:
谢万新、李丽宏、侯华、付佳、王鹏
设计周数:
2周
设计成绩:
2010年12月29日
1、设计目的1
2、系统分析1
2.1、设计任务1
2.2、设计要求1
3、TMS320F2812芯片介绍1
3.1TMS320F2812芯片的简介1
3.2关于TMS320F2812参数2
3.3管脚的定义和说明2
3.4F2812结构图4
4、系统整体设计5
4.1、硬件设计组成框图5
4.2、总体电路图6
5、单元电路设计7
5.1、2*3键盘电路设计7
5.2、时钟源电路设计7
5.3、复位电路设计8
5.4、电源转换电路设计8
5.5、蜂鸣器的设计9
6、元器件选择9
7、运行描述10
8、软件设计11
8.1程序流程图11
8.2程序代码11
9、课程设计总结17
10、参考文献18
1、设计目的
DSP课程设计是对课程所学理论知识的深化和提高。
目的是能综合应用所学知识,设计与制造出具有简单功能的小型键盘输入发声装置。
能够较全面地巩固和应用DSP课程中所学的基本理论和基本方法,初步掌握小型DSP系统设计的基本方法,并学会用C语言对DSP系统进行编程及DSP试验箱和相关软件的运用。
培养独立思考、独立收集资料、独立设计规定功能的单片机系统的能力;培养分析、总结及撰写技术报告的能力,本次课程设计目的在于:
1、学习用键盘控制DSP管脚输出频率,从而控制蜂鸣器发声。
2、学习DSP的C语言编程方法。
3、学习DSP程序的调试及编写,及运用观察变量的方法查看程序的运行情况。
2、系统分析
2.1、设计任务
本次设计名为键盘输入分频输出装置,要求用六个按键,组成3行3列键盘,用扫描按键的方法控制蜂鸣器发出对应的声音从而实现按键控制蜂鸣器发出不同频率的声音。
2.2、设计要求
硬件部分:
1、按照系统设计要求绘制(3行3列按键及分明器)电路图。
2、按照电路图统筹安排各元器件在电路板上的分布,并焊接电路板。
3、了解各引脚功能,将电路板与TMS320F2812相关引脚相连接。
软件部分:
1、搞清楚各个引脚功能,调入引脚头文件。
2、了解了各引脚控制的行列后,编写键盘扫描程序。
3、编写延时程序,实现按键去抖。
最终实现键盘输入分频输出,并由蜂鸣器发出不同频率的响声。
3、TMS320F2812芯片介绍
3.1TMS320F2812芯片的简介
本设计需要DSP实验箱,.DSP芯片是一种具有特殊结构的嵌入式微处理器,现在芯片一般都具有哈佛结构的并行总线体系,流水线操作功能,快速的中断处理和硬件I/O支持,低开销循环及跳转的硬件支持,单周期硬件地址产生器,单周期硬件乘法器以及一套适合数字信号处理的指令集。
TMS320F2812作为使用的DSP芯片。
它包含33个电源引脚(为使器件正常运行,所有电源引脚必须正确连接且不能悬空),时钟源模块,DSP有六种信号可以使DSP控制器复位。
所以在设计的初期,我把它分成了四个模块。
它们分别是:
电平转换部分、晶振和复位部分、键盘部分和液晶显示。
其中复位采用电源复位的方式,由引脚PORESET引起。
为了可靠复位,其中高电平的有效时间至少6个CPU时钟周期。
3.2关于TMS320F2812参数
TMS320F2812的具体参数如下:
1、主处理芯片:
TMS320F2812,运行速度为150M。
2、工作速度可达150MIPS。
3、片上的RAM18*16Bit。
4、片上扩展RAM存储空间64K×16Bit。
5、自带的16路12bitA/D,最大采样速率12.5msps。
6、4路的DAC7617转换,100K/S,12Bit。
7、两路UART串行接口,符合RS232标准。
8、16路PWM输出。
9、1路CAN接口通讯。
10、片上128*16bitFLASH.自带128位加密位。
11、设计有用户可以自定义的开关和测试指示灯。
12、4组标准扩展连接器,为用户二次开发提供条件。
13、具有IEEE1149.1相兼容的逻辑扫描电路该电路仅用于测试和仿真。
14、4层板设计工艺,工作稳定可靠。
15、具有自启动功能设计,可以实现脱机工作。
16、可以选配多种应用接口板,包括语音板,网络板等。
3.3管脚的定义和说明
P1接口主要是扩展评估板上空闲的DSP外设引脚,以便于定制用户的硬件环境。
注意:
由于这组引脚是直接来自于F2812DSP芯片,因此,这些引脚为TTL3.3V标准,其输出最高电压为3.3V,如果要接入5V器件,外接时时要注意电平转换。
(在扩展板上使用3.3V-5V兼容器件与扩展接口连接)。
表1管脚的定义及管脚的说明
管脚号
管脚名
说明
1
+5v电源
有POWER提供+5V电源
2
+5v电源
有POWER提供+5V电源
3
PWM1
PWM1输出引脚
4
PWM2
PWM2输出引脚
5
PWM3
PWM3输出引脚
6
PWM4
PWM4输出引脚
7
PWM5
PWM5输出引脚
8
PWM6
PWM6输出引脚
9
PWM7
PWM7输出引脚
10
PWM8
PWM8输出引脚
11
PWM9
PWM9输出引脚
12
T1PWM
T1输出引脚
13
T2PWM
T2输出引脚
14
T3PWM
T3输出引脚
15
T4PWM
T4输出引脚
16
T1CTRP
定时器1比较输出
17
GND
地线
18
GND
地线
19
T2CTRP
定时器2比较输出
20T
T3CTRP
定时器3比较输出
21
T4CTRP
定时器4比较输出
22
C1CTRIP
比较器1比较输出
23
C2CTRP
比较器2比较输出
24
C3CTRP
比较器3比较输出
25
TDIRA
定时器计数方向选择信号A
26
TCKINA
定时器时钟输入A
27
SCITXB
异步串口TX端B
28
SCIRXB
异步串口RX端B
29
SPSIMA
SPI从收主发端
30
SPSOMA
SPI主发从收端
31
SPICLKA
SPI时钟
32
SPISTEA
SPISlave设备发送始能
33
GND
地线
34
GND
地线
3.4F2812结构图
图1ICETEK-F2812-A实物图
左上脚为P1端口,右下角脚为P4端口。
TMS320F2812引脚图
图2TMS320F2812引脚图
4、系统整体设计
4.1、硬件设计组成框图
图3硬件组成框图
4.2、总体电路图
总体电路图如图4所示:
图4总体电路图
其中PWM1-PW3是输入引脚,PWM4-PWM5是输出引脚,PWM6是蜂鸣器输出引脚,XTAL1和XTAL2为晶振输入引脚,VCC接电源(+5V),RESET复位引脚,GND接地,MP/MC接入存储器。
如果是低电平接片内存储器,高电平接片外存储器。
5、单元电路设计
5.1、3*3键盘电路设计
3*3键盘电路如图5所示
图53*3键盘电路
键盘工作原理:
从图中可以看出,当一个键被按下时,按键对应的行线和列线的状态均为低电平,其他键对应的均为高电平,具体来讲,把行线相连的引脚均设为输入方式,把列线相连的引脚均设为输出方式。
程序首先把所有列线上输出低电平,然后调用扫描程序逐列读取列线上的输入,如果没有键按下,行线将一直保持全1的状态,否则相应的行线上将出现低电平并被程序所获知。
然后检测按键所在的列,延时一段时间后,程序逐渐发出扫描码,即扫描的列为0,其他行为1。
如果没有任何一条输入的行线为低电平,则说明扫描的列线上没有按键被按下接着扫描下一列。
如果在某一列上发0可以在行线上收到不全为1的输入,即表明该行是按键所在的行,从而可以确定按键所在的位置。
5.2、时钟源电路设计
时钟源可以由两种方式产生:
一种是利用内部振荡器与外部无源晶振产生;另一种是利用外部有源晶振产生。
本系统选择的是前者。
而且上在实验箱内部。
时钟振荡电路如图6所示,时钟电路主要使用的是DSP的内部振荡器,外接6MHZ的晶振产生时钟。
图6最小系统框图
5.3、复位电路设计
图7复位电路
复位电路(如图7)由电容,电阻和按钮开关组成,可实现上电复位和手动复位功能。
当加载电源时,电源电压通过RC串联电路对电容C进行充电,充电时间常数为t=RC。
当充电时间超过5t时,电容C1上的电压接近电源电压,复位完成。
对于本系统来说,要求复位时间超过6个系统时钟周期。
所以,C1和R1的值,应该根据所用芯片的工作频率来定,否则,系统无法正常工作。
另外,按钮S1用于手动复位,R2和S1串联作为电容C1的放电回路,当S1按下,C1的放电回路接通,芯片的复位端接地,芯片处于复位状态。
放开S1,C1的放电电路断开。
由于C1上的电压已经放完,所以,C1通过电源再次充电,完成复位动作。
放电的时间远远小于充电时间,否则,电路无法正常工作。
5.4、电源转换电路设计
电源电路(如图8)是各种电子设备的核心电路,电子设备的小型化和低成本化使电源电路向轻薄和高效率方向发展,因此在设计电路时选择一款合适的电源电路芯片是首要任务。
本课程设计要求电压控制在3.3V左右,因此在设计中加入了电压转换电路,将5V电压转换为3.3V电压。
在实际操作中采用了使用电源箱调节电压达到3.3V左右。
图8电源转换电路图
5.5、蜂鸣器的设计
蜂鸣器设计(如图9所示)的总体思想:
由DSP的固定的头文件初始化各个端口的功能,置相应的端口为I/O功能,并设置其为输入或输出功能,依次扫描键盘,如果有电平由高电平向低电平调变则由相应的延时参数延时产生不同的频率,输出到蜂鸣器上,从而发出不同的响声。
蜂鸣器由DSP通用I/O管脚输出控制,由管脚S13控制蜂鸣器的输出频率,DSP的I/O管脚直接驱动外部蜂鸣器工作。
在实际的连接当中,9个按钮的引线依次接P1口的管脚3——管脚11。
蜂鸣器的引线接P4口的管脚25。
正5V电源接P1口的管脚1。
地线接P1口的管脚17。
程序直接运行即可。
图9蜂鸣器电路图
6、元器件选择
元气件的选择主要是限流电阻的选择,根据按键工作电流(0~1mA)以及DSP工作电压(3.3V),因此可以选择3.3K以上的电阻作为上拉电阻,本系统中我们选择4.7K。
同时由于外接电源是5V的,而芯片工作电压是3.3,因此也需要一个电阻用于压降,在此我们也选择4.7K电阻。
元器件清单如表2所示。
表2电路元件配置表
元件名称
参数
个数
电阻
4.7K
5
蜂鸣器
给定
1
发光二极管
1
TMS320F2812芯片
给定
1
DSP系统试验箱
给定
1
按钮
给定
9
排针
——
8
除表中所列元器件外,还需导线若干以及供电源一个。
7、运行描述
在运行时,首先应先在计算机上安装上CCS软件,然后把程序加载到Example中进行调试,如果调试出现错误,要进行修改。
若程序正常通过,则可将电路板与计算机相连,然后安装电路板的驱动,驱动安好后,将焊接好的电路与电路板相连,注意针引脚的相连,在
本设计中用的是电路板的PWM1、PWM2、PWM3、PWM4、PWM5、PWM6针口,注意不要连错。
同时还要注意DSP用的是3.3V的电压,注意电压的调节。
一切硬件连接好后,即可将软件下载到DSP芯片中,运行,查看结果。
将按键按下后都会发出不同的声音,但由于电路存在一定的干扰,有的按键按下后时响时不响。
键盘分频发声装置基本制作成功。
8、软件设计
8.1程序流程图
根据硬件设计思想和硬件图的总体设计,画出软件实现流程图
程序流程图是人们对解决问题的方法、思路或算法的一种描述。
它采用简单规范的符号,画法简单,并且结构清晰,逻辑性强。
经过对硬件部分的分析,理论上技术的实现,基于分块设计的思想可以得出基本程序实现思路。
初始化程序以后,将管脚定义为I/O口方式,并且定义管脚的输出输入端,接入高电平。
若给入高电平,设置行列值。
例如。
将行设置为输入端,列设置为输出端。
首先先判断是否有键按下,无键按下时(加入一段延时程序),有键按下时,给行值,对列值进行判断,如果循环成立,则能确定是哪个按键按下。
图10程序流程图
8.2程序代码
程序如下:
#include"DSP281x_Device.h"//DSP281xHeaderfileIncludeFile
#include"DSP281x_Examples.h"//DSP281xExamplesIncludeFile
interruptvoidinter(void);//中断申明无返回值
voidDelay(unsignedintndelay);//子程序声明
Uint16jishu=0,new1,a1,a2;
#defineNumber8
unsignedintmusic1[Number][2]=
{
{162,1480},{144,1480},{129,1480},{121,1480},{108,1480},{97,1480},{86,1480},{81,1480}
};
/*#definenMusicNumber40//宏定义二维数组(一段音乐)的位数
unsignedintmusic[nMusicNumber][2]=
{
{182,480},{151,480},{135,480},{121,480},{135,480},{151,480},{182,480},{0,480},
{182,480},{151,480},{135,480},{121,480},{135,480},{151,480},{182,480},{0,480},
{182,240},{151,240},{135,240},{121,240},{135,240},{151,240},{182,240},{0,240},
{182,240},{151,240},{135,240},{121,240},{135,240},{151,240},{182,240},{0,240},
{182,1920},{151,1920},{135,1920},{121,1920},{135,1920},{151,1920},{182,1920},{0,1920}
};*/
voidmain(void)
{
//intj=0,Count=0;
InitSysCtrl();//初始化系统管脚语句
DINT;//关中断
InitPieCtrl();//初始化PIE寄存器
IER=0x0000;//寄存器复位中断使能寄存器包含所有可屏蔽中断使能位
IFR=0x0000;//寄存器复位中断标志寄存器用于识别和清楚未屏蔽中断位
InitPieVectTable();//初始化PIE向量表
EALLOW;
PieVectTable.TINT0=&inter;//指定中断服务子程序地址
EDIS;
EALLOW;
GpioMuxRegs.GPAMUX.all=0x0000;//工作方式设置为I/O
GpioMuxRegs.GPADIR.all=0x0007;//pwm1-pwm3为输出,
GpioMuxRegs.GPBMUX.all=0x0000;
GpioMuxRegs.GPBDIR.all=0x0001;
EDIS;
CpuTimer0Regs.PRD.all=new1;
CpuTimer0Regs.TPR.all=0;//TPR-预定标计数器,16位,PIC(8-15位),TDDR(0-7位)取值(0-15),可位操作,
CpuTimer0Regs.TIM.all=0;//TIM-计数寄存器
CpuTimer0Regs.TPRH.all=0;//TPRH-高16位,一般不用,付0
CpuTimer0Regs.TCR.bit.TSS=1;//TCR-控制寄存器,位操作tss位停止寄存器
CpuTimer0Regs.TCR.bit.SOFT=1;//soft遇到软件中断直接运行
CpuTimer0Regs.TCR.bit.FREE=1;
CpuTimer0Regs.TCR.bit.TRB=1;//重装载位PRD值
CpuTimer0Regs.TCR.bit.TIE=1;//一直请求中断
CpuTimer0.InterruptCount=0;
StartCpuTimer0();//0-计数器重新工作,1-停止
IER|=M_INT1;//0X0001中断1
PieCtrlRegs.PIEIER1.bit.INTx7=1;//向量控制寄存器,第一组里的第七个,1-开中断
EINT;//防止可屏蔽中断影响
ERTM;//防止事件相互影响
//GpioDataRegs.GPBDAT.bit.GPIOB0=1;
while
(1)
{
GpioDataRegs.GPADAT.bit.GPIOA0=0;
GpioDataRegs.GPADAT.bit.GPIOA1=0;
GpioDataRegs.GPADAT.bit.GPIOA2=0;
if((GpioDataRegs.GPADAT.bit.GPIOA3==1)&&(GpioDataRegs.GPADAT.bit.GPIOA4==1)&&(GpioDataRegs.GPADAT.bit.GPIOA5==1))
{
new1=0;
Delay(296);
a1=0;a2=0;
//if(((GpioDataRegs.GPADAT.bit.GPIOA0==0)||(GpioDataRegs.GPADAT.bit.GPIOA1==0)||(GpioDataRegs.GPADAT.bit.GPIOA2==0)))
}
GpioDataRegs.GPADAT.bit.GPIOA0=0;
GpioDataRegs.GPADAT.bit.GPIOA1=1;
GpioDataRegs.GPADAT.bit.GPIOA2=1;
if((GpioDataRegs.GPADAT.bit.GPIOA3==0)&&(GpioDataRegs.GPADAT.bit.GPIOA4==1)&&(GpioDataRegs.GPADAT.bit.GPIOA5==1))
{
new1=56700;//new1=music1[0][0]*350;
Delay(music1[0][1]*201);
a1=0;a2=1;
}
if((GpioDataRegs.GPADAT.bit.GPIOA3==1)&&(GpioDataRegs.GPADAT.bit.GPIOA4==0)&&(GpioDataRegs.GPADAT.bit.GPIOA5==1))
{
new1=music1[1][0]*350;
Delay(music1[1][1]*200);
a1=0;a2=1;
}
if((GpioDataRegs.GPADAT.bit.GPIOA3==1)&&(GpioDataRegs.GPADAT.bit.GPIOA4==1)&&(GpioDataRegs.GPADAT.bit.GPIOA5==0))
{
new1=music1[2][0]*350;
Delay(music1[2][1]*200);
a1=0;a2=1;
}
GpioDataRegs.GPADAT.bit.GPIOA0=1;
GpioDataRegs.GPADAT.bit.GPIOA1=0;
GpioDataRegs.GPADAT.bit.GPIOA2=1;
if((GpioDataRegs.GPADAT.bit.GPIOA3==0)&&(GpioDataRegs.GPADAT.bit.GPIOA4==1)&&(GpioDataRegs.GPADAT.bit.GPIOA5==1))
{
new1=music1[3][0]*350;
//GpioDataRegs.GPBDAT.bit.GPIOB0=0;
Delay(music1[3][1]*200);
//GpioDataRegs.GPBDAT.bit.GPIOB0=1;
a1=0;a2=1;
}
if((GpioDataRegs.GPADAT.bit.GPIOA3==1)&&(GpioDataRegs.GPADAT.bit.GPIOA4==0)&&(GpioDataRegs.GPADAT.bit.GPIOA5==1))
{
new1=music1[4][0]*350;
Delay(music1[4][1]*200);
a1=0;a2=1;
}
if((GpioDataRegs.GPADAT.bit.GPIOA3==1)&&(GpioDataRegs.GPADAT.bit.GPIOA4==1)&&(GpioDataRegs.GPADAT.bit.GPIOA5==0))
{
new1=music1[5][0]*350;
Delay(music1[5][1]*200);
a1=0;a2=1;
}
GpioDataRegs.GPADAT.bit.GPIOA0=1;
GpioDataRegs.GPADAT.bit.GPIOA1=1;
GpioDataRegs.GPADAT.bit.GPIOA2=0;
if((GpioDataRegs.GPADAT.bit.GPIOA3==0)&&(GpioDataRegs.GPADAT.bit.GPIOA4==1)&&(GpioDataRegs.GPADAT.bit.GPIOA5==1))
{
new1=music1[6][0]*350;
Delay(music1[6][1]*200);
a1=0;a2=1;
}
if((GpioDataRegs.GPADAT.bit.GPIOA3==1)&&(GpioDataRegs.GPADAT.bit.GPIOA4==0)&&(GpioDataRegs.GPADAT.bit.GPIOA5==1))
{
new1=music1[7][0]*350;
Delay(music1[7][1]*200);
a1=0;a2=1;
}
if((GpioDataRegs.GPADAT.bit.GPIOA3==1)&&(GpioDataRegs.GPADAT.bit.GPIOA4==1)&&(GpioDataRegs.GPADAT.bit.GPIOA5==0))
{
new1=music1[7][0]*350;
Delay(mu
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通信工程DSP课程设计报告 键盘发声装置 0701班一组 通信工程 DSP 课程设计 报告 键盘 发声 装置 0701 一组