南邮大四课程设计_第1页
南邮大四课程设计_第2页
南邮大四课程设计_第3页
南邮大四课程设计_第4页
南邮大四课程设计_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一 一 EMIFEMIF 接口上的接口上的 I OI O 接口扩展接口扩展 一 实验原理 1 TMS320VC5509DSP 的EMIF 接口 存储器扩展接口存储器扩展接口 EMIF 是DSP 扩展片外资源的主要接口 它提供了一组控制信号和地址 数据线 可以扩展各类存储器和寄存器映射的外设 ICETEK VC5509 A 评估板在EMIF 接口上除了扩展了片外SDRAM 外 还扩展了指示灯 DIP 开关和D A 设备 具体扩展地址如下 400800 400802h D A 转换控制寄存器 400000 400000h 板上DIP 开关控制寄存器 400001 400001h 板上指示灯控制寄存器 与ICETEK VC5509 A 评估板连接的ICETEK CTR 显示控制模块也使用扩展空间控制主要 设备 602800 602800h 读 键盘扫描值 写 液晶控制寄存器 600801 600801h 液晶辅助控制寄存器 602801h 600802h 液晶显示数据寄存器 602802 602802h 发光二极管显示阵列控制寄存器 2 指示灯扩展原理 3 实验程序流程图 二 实验步骤 1 实验准备 关闭实验箱上扩展模块和信号源电源开关 2 设置Code Composer Studio 2 21 在硬件仿真 Emulator 方式下运行 3 启动Code Composer Studio 2 21 选择菜单Debug Reset CPU 4 打开工程文件 工程文件为 C ICETEK VC5509 EDULab Lab0301 LED LED pjt 打开源程序LED c 5 编译 下载程序 6 运行程序 观察结果 7 退出CCS 三 部分程序代码 定义指示灯寄存器地址和寄存器类型 define LBDS unsigned int 0 x400001 子程序接口 void Delay unsigned int nDelay 延时子程序 int i main unsigned int uLED 4 1 2 4 8 控制字 逐位置1 0001B 0010B 0100B 1000B CLK init CLK init 初始化初始化DSPDSP运行时钟运行时钟 SDRAM init SDRAM init 初始化初始化EMIFEMIF接口接口 while 1 for i 0 i 0 i LBDS uLED i 反向顺序送控制字 Delay 32 延时 延时256 32 四 实验结果 映射在扩展存储器空间地址上的指示灯寄存器在设置时是低4位有效的 数据的最 低位对应指示灯D1 次低位对应D2 依次类推 LED指示灯由 D1 D2 D3 D4 D3 D2 D1循环依次点亮 五 实验体会 了解ICETEK VC5509 A 板在TMS320VC5509DSP 外部扩展存储空间上的扩展 了解ICETEK VC5509 A 板上指示灯扩展原理 学习在C 语言中使用扩展的控制寄存器的方法 二 定时器的使用二 定时器的使用 一 实验原理 1 通用定时器介绍及其控制方法 TMS320VC5509ATMS320VC5509A 内部有两个内部有两个 2020 位通用定时器 位通用定时器 GPGP 每个通用定时器包括 一个 16 位的减计数的计数器 TIM 一个 16 位的定时器周期寄存器 PRD 一个 16 位的定时器控制寄存器 TCR 一个 16 位的定时器预定标寄存器 PSCR PSCR 寄存器说明 15 10 9 6 5 4 3 0 Reserved PSC Reserved TDDR PSC 4 位的预定标值 与 TIM 共同组成 20 位的定时计数器 TDDR 预定标周期寄存器 在需要时重装入 PSC 的值 TCR 寄存器说明 2 中断响应过程 外设事件要引起 CPU 中断 必须保证 IER 中相应使能位被使能 IFR 相应中断也被使能 在软件中 当设置好相应中断标志后 开中断 进入等待中断发生的状态 外设 如定时 器 中断发生时 首先跳转到相应中断高级的服务程序中 如 定时器 1 会引起 TINT 中断 程序在进行服务操作之后 应将本外设的中断标志位清除以便能继续中断 然后返回 3 中断程序设计 程序中应包含中断向量表程序中应包含中断向量表 VC5509A 默认向量表从程序区 0 地址开始存放 根据 IPVD 和 IPVH 的值确定向量表的实际地址 注意观察程序中 INTR init 函数的定义部分 其中 IPVD 和 IPVH 的值都为 0 x0d0 同时 观察配置文件 ICETEK VC5509 A cmd 中的 VECT 段描述中 o 0 x0d000 向量表中每项为 8 个字 存放一个跳转指令 跳转指令中的地址为相应服务程序入口地 址 第一个向量表的首项为复位向量 即 CPU 复位操作完成后自动进入执行的程序入口 服务程序在服务操作完成后 清除相应中断标志 返回 完成一次中断服务 4 实验程序流程图 二 实验步骤 1 实验准备 连接实验设备 关闭实验箱上扩展模块和信号源电源开关 2 设置Code Composer Studio 2 21 在硬件仿真 Emulator 方式下运行 3 启动Code Composer Studio 2 21 选择菜单Debug Reset CPU 4 打开工程文件 打开菜单 Project 的 Open 项 选择C ICETEK VC5509 EDULab Lab0303 Timer 目录 中的 Timer pjt 在项目浏览器中 双击main c 激活main c 文件 打开ICETEK VC5509 A cmd 对照vector asm 源程序学习中断向量表的写法 5 编译 下载程序 6 运行程序 观察结果 7 改变TIMER init 函数里 prd0 0 x0ffff 为 0 x0fff 重复步骤5 6 观察实验现象 8 退出CCS 三 部分程序代码 定义指示灯寄存器地址和寄存器类型 define LBDS unsigned int 0 x400001 void INTR init void void TIMER init void unsigned int uLED 4 1 2 4 8 int i 0 int nCount main nCount 0 CLK init SDRAM init LBDS 0 INTR init TIMER init while 1 void interrupt Timer nCount nCount 256 if nCount 0 LBDS uLED i 4 void INTR init void IVPD 0 xd0 IVPH 0 xd0 IER0 0 x10 DBIER0 0 x10 IFR0 0 xffff asm BCLR INTM void TIMER init void ioport unsigned int tim0 ioport unsigned int prd0 ioport unsigned int tcr0 ioport unsigned int prsc0 tim0 unsigned int 0 x1000 prd0 unsigned int 0 x1001 tcr0 unsigned int 0 x1002 prsc0 unsigned int 0 x1003 tcr0 0 x04f0 tim0 0 prd0 0 x0ffff 从0 x0fff改为0 x0ffff 现象 循环变慢 prsc0 2 tcr0 0 x00e0 四 实验结果 LED指示灯D1在定时器的定时中断中按照设计定时闪烁 五 实验体会 通过实验熟悉VC5509A 的定时器 掌握VC5509A 定时器的控制方法 掌握VC5509A 的中断结构和对中断的处理流程 学会C 语言中断程序设计 以及运用中断程序控制程序流程 三 中断的使用三 中断的使用 一 实验原理 1 中断及中断处理过程 中断简介 中断是一种由硬件或软件驱动的信号 DSP 在接到此信号时 将当前程序悬挂起来 转 去执行另外一个任务 这个任务我们称为中断服务程序中断服务程序 ISR TMS320C55x C55x DSP 可支持32 个ISR 可由硬件或软件触发 所有的C55x 中断 可以分成可屏蔽中断和不可屏蔽中断两种 软件中断是不可屏蔽的 DSP 处理中断的步骤 接收中断请求 请求由软件或硬件发出 响应中断请求 对于可屏蔽中断 需要满足若干条件 才发生响应 而对于不可屏蔽中 断 则立即响应 准备执行中断服务程序 完成当前正在执行的指令 将进入流水线但还未解码的指令清除 自动保存若干寄存器的值到数据堆栈和系统堆栈 取得用户定义的中断向量表中当前中断向量 中断向量指向中断服务程序入口 执行中断服务程序 中断服务程序包含中断返回指令 这样返回时可以出栈以前保存的 关键寄存器数据 从而恢复中断服务程序执行前的现场 中断向量表 中断向量表的地址可以由用户指定 外中断 TMS320C5509 可以响应INT0 INT4 五个外中断 2 ICETEK CTR 板的键盘接口 显示 控制模块ICETEK CTR 通过接口P8 连接小键盘 接收小键盘传送的扫描码 并在每 个扫描码结束后保存 同时向DSP 的INT2 发送中断信号 当DSP 读键盘时将扫描码送到 数据总线上 小键盘上每次按下一个键将产生2 个扫描码 2 次中断 3 程序编制 由一个不含中断处理程序的工程通过改写加入中断处理程序部分大致需要如下操作 假设使 用INT2 编制中断服务程序 可以用C 语言程序实现 编写单独的一个函数XINT 此函数使用interrupt 修饰 没有参数和返回值 构造中断向量表 构造中断向量表 可以用汇编语言构造 编写一个汇编语言模块程序vector asm 在程序 头上声明段名为 vectors 定义外部标号 XINT 由于汇编语言要使用C 语言程序中定 义的标号XINT 需要在这个标号前加底线 在中断向量表该中断对应位置 int2 写汇编语 言语句跳转语句 修改连接命令文件 在MEMORY 小节中开辟单独的地址段用以存放中断向量表 在 SECTIONS 小节中指定 vectors 段到前步开设的内存段中 主程序中进行初始化设置 定位中断向量表 使能中断 清中断等 4 实验程序流程图 二 实验步骤 1 实验准备 1 连接实验设备 连接实验箱附带的键盘的PS2 插头到ICETEK CTR 的 键盘接口 P8 将ICETEK CTR 板的供电电源开关拨动到 开 的位置 开关位置请参见第二部分 第 一章 五 扩展模块电源开关及其指示灯 2 设置Code Composer Studio 2 21 在硬件仿真 Emulator 方式下运行 3 启动Code Composer Studio 2 21 选择菜单Debug Reset CPU 4 打开工程文件 工程目录 C ICETEK VC5509 EDULab Lab0304 XINT XINT pjt 开始初始化 DSP 时钟 EMIF ICETEK CTR GPIO 初始化中断控制寄存器 等待中断产生 改变指示灯状态 中断服务开始 中断服务结束 浏览main c 文件的内容 理解各语句作用 打开ICETEK VC5509 A cmd 5 编译 下载程序 6 运行程序 观察结果 运行程序 按一下小键盘上任意一个键 注意观察ICETEK CTR 板上指示灯闪烁的情况 7 观察中断函数的执行 选择 Debug 菜单中 Halt 暂停运行程序 在XINT 程序中的语句上加软件断点 重新 运行程序 选择 Debug 菜单中 Run 观察何时程序停留在断点上 8 退出CCS 三 部分程序代码 void InitMcBSP void INTR init void void TIME init void int nCount main nCount 0 CLK init SDRAM init INTR init InitCTR InitMcBSP CTRGR 2 使能IO while 1 void InitMcBSP IOPin McBSP1 FSX S15 SPCR2 XRST 0 PCR XIOEN 1 PCR FSXM 1 PCR FSXP 0 1 SPCR2 1 PCR1 0 x2800 void interrupt XINT nCount nCount 2 if nCount 0 PCR1 8 void INTR init void IVPD 0 x80 IVPH 0 x80 IER0 8 DBIER0 8 IFR0 0 xffff asm BCLR INTM 四 实验结果 通过实验可以发现 每次按下键盘均会发生两次中断 当按下键不放时会产生连续的中断 只有在外中断发生时 XINT 函数才会被执行 五 实验体会 1 通过实验熟悉VC5509A 的中断响应过程 2 学会C 语言中断程序设计 以及运用中断程序控制程序流程 四 步进电机控制四 步进电机控制 一 实验原理 1 EMIF 接口 TMS320C5509DSP 的扩展存储器接口 EMIF 用来与大多数外围设备进行连接 典型应用 如 连接片外扩展存储器等 这一接口提供地址连线 数据连线和一组控制线 ICETEK VC5509 A 将这些扩展线引到了板上的扩展插座上供扩展使用 2 步进电机是由DSP 通用I O 管脚输出直接控制 步进电机的起动频率大于500PPS 拍每 秒 空载运行频率大于900PPS 5509A 的通用I O 口S22 控制电机的转动频率 S14 控 制转动方向 3 控制的方法是使用DSP 通用定时器设置S22 以一定的频率改变高低状态 输出方波 设置S14 为高电平则顺时针转动 低电平为逆时针转动 4 实验程序流程图 二 实验步骤 1 实验准备 连接实验设备 连接实验箱附带的键盘的PS2 插头到ICETEK CTR 的 键盘接口 P8 将ICETEK CTR 板的供电电源开关拨动到 开 的位置 2 设置Code Composer Studio 2 21 在硬件仿真 Emulator 方式下运行 3 启动Code Composer Studio 2 21 选择菜单Debug Reset CPU 4 打开工程文件 工程目录 C ICETEK VC5509 EDULab Lab0407 SAMotor SAMotor pjt 5 编译并下载程序 6 运行程序 观察结果 电机转动时按下ICETEK CTR 板上连接的小键盘中 4 和 6 键 控制电机转动方向 用 和 键可微调速度 7 停止程序运行并退出 8 退出CCS 三 部分程序代码 void INTR init void void TIME init void int nCount nStep nAddStep unsigned int uTimPrd0 unsigned int pwm2 8 0 x86 0 x87 0 x83 0 x8b 0 x89 0 x8d 0 x8c 0 x8e main int sEnd unsigned char dbScanCode tKey nCount 0 nStep 1 sEnd 1 nAddStep 1 uTimPrd0 0 x1002 CLK init SDRAM init InitCTR CTRLR 0 x0c2 TIME init INTR init do if nCount 16 nCount 0 dbScanCode GetKey Scan for Keyboard input tKey CTRCLKEY Clear Keyboard scan buffer if dbScanCode 0 break case SCANCODE 4 Motor Turn Forward nAddStep 1 break case SCANCODE 6 Motor Turn Backward nAddStep 1 break case SCANCODE Minus Motor Speed Down uTimPrd0 0 x800 if uTimPrd0 0 x8000 uTimPrd0 0 x8002 asm BSET INTM TIME init asm BCLR INTM break case SCANCODE Plus Motor Speed up uTimPrd0 0 x800 if uTimPrd0 0 x1000 uTimPrd0 0 x1002 asm BSET INTM TIME init asm BCLR INTM break while sEnd exit 0 void interrupt Timer CTRLR pwm nStep nStep nAddStep if nStep7 nStep 0 nCount void INTR init void IVPD 0 x80 IVPH 0 x80 IER0 0 x10 DBIER0 0 x10 IFR0 0 xffff asm BCLR INTM void TIME init void tim0 unsigned int 0 x1000 prd0 unsigned int 0 x1001 tcr0 unsigned int 0 x1002 prsc0 unsigned int 0 x1003 tcr0 0 x04f0 tim0 0 x0 prd0 uTimPrd0 prsc0 2 tcr0 0 x00e0 四 实验结果 可以看到显示 控制模块上的电机指针在转动 使用 4 和 6 键可控制其转 动方向 使用 和 键可以控制其转动速度 五 实验体会 通过实验学习使用 5509DSP 的扩展I O 端口控制外围设备信息的方法 掌握使用5509DSP 通用计时器的控制原理及中断服务程序的编程方法 了解步进电机的控制方法 五 多路信号混频五 多路信号混频 一 实验原理 1 模数转换工作过程 模数转换模块接到启动转换信号后 按照设置进行相应通道的数据采样转换 经过一个采样时间的延迟后 将采样结果放入AD 数据寄存器中保存 等待下一个启动信号 2 模数转换的程序控制 模数转换相对于计算机来说是一个较为缓慢的过程 一般采用中断方式启动转换或保存结 果 这样在CPU 忙于其他工作时可以少占用处理时间 设计转换程序应首先考虑处理过程 如何与模数转换的时间相匹配 根据实际需要选择适当的触发转换的手段 也要能及时地 保存结果 由于TMS320VC5509DSP 片内的A D 转换精度是10 位的 转换结果 16 位 的 最高位 第15位 表示转换值是否有效 0 有效 第14 12 位表示转换的通道号 低10 位为 转换数值 所以在保留时应注意取出结果的低10 位 再根据高4 位进行相应保存 4 混频波形产生 将接收到的两路AD 采集信号进行相加 并对结果的幅度进行限制 从而产生混合后的输 出 波形 实验中采用了同相位混频方法 也可修改程序完成异相混频法 5 源程序及注释 本实验程序在主循环中对AD 进行连续采样 每次采样首先设置AD 转换控制寄存器 ADCCTL 发送转换通道号和启动命令 然后循环等待转换结果 最后将结果保存 由 于需要进行实时混频 所以交替转换通道0 和通道1 ICETEK VC5509 EDU 实验箱上 ADCIN2 和ADCIN3 二 实验步骤 1 实验准备 连接实验设备 准备信号源进行AD 输入 取出2 根实验箱附带的信号线 用1 根信号线连接实验箱底板上信号源I 模块的 波形输出 和 A D 输入 模块的 ADCIN2 插座 这样 信号源I 的输出波形即可送到ICETEK VC5509 A板的AD 输入 通道0 用1 根信号线连接实验箱底板上信号源II 模块的 波形输出 和 A D 输入 模块的 ADCIN3 插座 这样 信号源II 的输出波形即可送到ICETEK VC5509 A 板的AD 输 入通道1 设置信号源I 调整拨动开关 频率选择 拨到 100Hz 1KHz 档 将 频率微调 顺时针调到头 最大 调整拨动开关 波形选择 拨到 正弦波 档 将 幅值微调 顺时针调到头 最大 设置信号源II 调整拨动开关 频率选择 拨到 10Hz 100Hz 档 将 频率微调 顺时针调到头 最大 调整拨动开关 波形选择 拨到 正弦波 档 将 幅值微调 顺时针调到头 最大 将两个信号源的电源开关拨到 开 的位置 2 设置Code Composer Studio 2 21 在硬件仿真 Emulator 方式下运行 3 启动Code Composer Studio 2 21 选择菜单Debug Reset CPU 4 打开工程文件 工程文件为 C ICETEK VC5509 EDULab Lab0603 Mixer AD pjt 5 编译 下载程序 选择菜单Debug Go Main 使程序运行到main 函数入口位置 6 设置软件断点和观察窗口 打开源程序main c 在有注释 在此加软件断点 的行上加软件断点 选择菜单View Graph Time Frequency 进行如下设置 选择菜单View Graph Time Frequency 进行如下设置 选择菜单View Graph Time Frequency 进行如下设置 7 运行程序观察结果 按 F5 键运行到断点 注意观察窗口 AD0 和 AD1 中的输入波形 同时分析 nMixing 窗口中混频合成的波形与输入波形的关系 8 观察动态效果 选择菜单Debug Animate 运行程序 同时改变信号源输入的波形 频率参数 观察动态 效果 三 部分程序代码 void InitADC void wait unsigned int cycles void EnableAPLL unsigned int nADC0 256 nADC1 256 nMixing 256 main int i unsigned int uWork EnableAPLL SDRAM init InitCTR InitADC PLL Init 144 while 1 for i 0 i 1 限幅 混频后仍然产生12位数据 uWork nADC0 i nADC1 i 3 uWork 2 nMixing i uWork 在此加软件断点 void InitADC ADCCLKCTL 0 x23 4MHz ADCLK ADCCLKDIV 0 x4f00 void wait unsigned int cycles int i for i 0 i cycles i 四 实验结果 五 实验体会 掌握A D 转换的基本过程和程序处理过程 学习通过对采样值进行计算产生混频波形 六 异步串口通信六 异步串口通信 一 实验原理 1 ICETEK VC5509 A 板异步串口设计 在板上加上16C550 Max232 和驱动电路部分即可 驱动电路主要完成将输出的0 3 3V 电 平转换成异步串口的工作电平 转换电平的工作由MAX232 芯片完成 但由于它是5V 器 件所以它同DSP 间的信号线必须有电平转换 此板采用的是74LVC245 2 串行通信接口设置 内部生成的串行时钟由系统时钟SYSCLK 频率和波特率选择寄存器决定 串行通信接口使 用16 位波特率选择寄存器 数据传输的速度可以被编程为65000 多种不同的方式 不同通信模式下的串行通信接口异步波特率由下列方法决定 BRR 1 65535 时的串行通信接口异步波特率 串行通信接口异步波特率 SYSCLK BRR 1 8 其中 BRR SYSCLK SCI 异步波特率 8 1 BRR 0 时的串行通信接口异步波特率 串行通信接口异步波特率 SYSCLK 16 这里BRR 等于波特率选择寄存器的16 位值 3 实验程序流程图 二 实验步骤 1 实验准备 连接实验设备 连接串口接线 注意连接前需要将实验箱和计算机的电源关闭 用随实验箱附带的串口线 两端均为9 孔 D 形插头 连接计算机com1 或com2 插座和 ICETEK VC5509 A 板上标准RS 232 插座 2 设置Code Composer Studio 2 21 在硬件仿真 Emulator 方式下运行 3 启动Code Composer Studio 2 21 选择菜单Debug Reset CPU 4 打开工程文件 工程目录 C ICETEK VC5509 EDULab Lab0308 uart 5 编译 下载程序 6 打开串口调试助手 C ICETEK VC5509 EDULab Lab0308 uart 目录中的程序 串口调试助手V2 0B exe 设 置 串口调试助手 的串行端口为实际连接的计算机COM 端口 设置波特率为9600 设 置传输方式为8 位 无校验 1 个停止位 7 运行程序观察结果 运行程序后 切换窗口到 串口调试助手 在 串口调试助手 的接收窗口中可看到 DSP 通过SCI 发送来的 Hello PC Over 字样 在 发送的字符 数据 栏中输入一些要发送 到 DSP 的字符串 以 字符结尾 然后单击 手动发送 按钮 DSP 在接收到PC 机的 信息后会自动进行回答 8 结束程序运行 退出CCS 三 部分程序代码 void TMCR reset void void CLK init void void EMIF init void void wait int nWait char cString 17 Hello PC Over cReceive cBuffer 17 cAnswer 16 Oh you say int bReceive nLen main unsigned int uWork int i k bReceive 0 TMCR reset CLK init EMIF init LCR 0 x80 DLL 0 x18 DLM 0 x00 LCR 0 x03 FCR 0 x01 MCR 0 x20 IER 0 x00 for if bReceive 0 for i 0 i 16 i do uWork LSR while uWork THR cString i wait 128 else for i 0 i 10 i do uWork LSR while uWork THR cAnswer i wait 128 do uWork LSR while uWork THR for i 0 i nLen i do uWork LSR while uWork THR cBuffer i wait 128 do uWork LSR while uWork THR wait 128 for i 9 i 16 i do uWork LSR while uWork THR cString i wait 128 k 0 bReceive 0 while 1 do uWork LSR while uWork cReceive RBR cBuffer k cReceive if cReceive cBuffer k 1 0 nLen k 1 bReceive 1 break k k 16 void EMIF init void ioport unsigned int ce21 unsigned int 0 x809 ce21 0 x1fff void CLK init void ioport unsigned int clkmd clkmd unsigned int 0 x1c00 clkmd 0 x21f3 void TMCR reset void ioport unsigned int TMCR MGS3 unsigned int 0 x07FE ioport unsigned int TMCR MM unsigned int 0 x07FF TMCR MGS3 0 x510 TMCR MM 0 x000 void wait int nWait int i j k 0 for i 0 i nWait i for j 0 j 64 j k 四 实验结果 通过 DSP 传送到PC 机上的信息 可以看出 串口正确工作 五 实验体会 了解ICETEK VC5509 A 评估板上扩展标准RS 232 串行通信接口的原理和方法 学会对串行通信芯片的配置编程 学习设计异步通信程序 七七 综合设计综合设计 1 音乐产生 一 实验要求概述 通过实验学习使用 5509DSP 的扩展端口控制外围设备信息的方法 掌握使用5509DSP 通用计时器的控制原理及中断服务程序的编程方法 了解蜂鸣器发声原理和音乐发生方法 二 实验原理 1 EMIF 接口 TMS320C5509DSP 的扩展存储器接口 EMIF 用来与大多数外围设备进行连接 典型应 用如 连接片外扩展存储器等 这一接口提供地址连线 数据连线和一组控制线 ICETEK VC5509 A 将这些扩展线引到了板上的扩展插座上供扩展使用 2 蜂鸣器由DSP 通用I O 管脚输出控制 可将此管脚上的频率输出转换成声音输出 5509A 的通用I O 口S13 控制蜂鸣器的输出频率 控制的方法是使用DSP 通用定时器设置S13 以一定的频率改变高低状态 输出方波 对于 通用定时器周期寄存器的设置 计数值为所需频率计数值的二分之一 音乐的频率 C 调 C D E F G A B C 1 2 3 4 5 6 7 1 C 264 297 330 352 396 440 495 528 3 蜂鸣器的连接 由于选用的蜂鸣器所需电流较小 所以采用将DSP 通用I O 引脚直接 驱动的方式 4 实验程序流程图 三 部分程序代码 include myapp h include ICETEK VC5509 EDU h include scancode h Define Timer 0 s Registers ioport unsigned int tim0 ioport unsigned int prd0 ioport unsigned int tcr0 ioport unsigned int prsc0 End of Define Define Timer 1 s Registers ioport unsigned int tim1 ioport unsigned int prd1 ioport unsigned int tcr1 ioport unsigned int prsc1 End of Define 声明TIMER1相关的寄存器 void InitMcBSP main int nMusicCount unsigned char dbScanCode int nWork CLK init SDRAM init InitCTR InitMcBSP CTRGR 8 BUZZE 1 打开蜂鸣器 见ICETEK CTR的全局控制寄存器描述 设置合适的音长和音高 for nWork 0 nWork nMusicNumber nWork music nWork 0 10 music nWork 1 3 music nWork 1 12 设置DX0管脚为通用输出管脚以驱动蜂鸣器 SPCR0 XRST 0 PCR0 0 x2000 RIOEN 1 InitInterrupt TIME init nMusicCount 0 while 1 nMusicCount nMusicCount nMusicNumber if music nMusicCount 0 0 tcr0 静音 tcr1 静音 else prd0 music nMusicCount 0 切换音符 tcr0 0 xe0 prd1 music nMusicCount 0 切换音符 tcr1 0 xe0 dbScanCode GetKey if dbScanCode SCANCODE Enter break 四 实验体会 通过实验学习使用 5509DSP 的扩展端口控制外围设备信息的方法 掌握使用5509DSP 通 用计时器的控制原理及中断服务程序的编程方法 了解了运用发光二极管阵列显示字母的 程序 实验的主要问题集中在通过用计时器中断中取得延时 改变显示内容 这主要考验 了我们对定时器的灵活运用和对不同程序的调和 叠加 配合的使用上 这次实验为期3个 星期 虽然在这之间给我们带来了很多没有遇到过的困难 但是幸运的是在老师的精心指 导和我们自己的不懈努力下还是完成了实验任务 同时 也巩固了我们对DSP器件的使用 提高了我们的设计 运用和动手能力 使我们受益匪浅 八八 综合设计综合设计 2 发光二级管阵列显示姓名 一 实验要求概述 通过实验学习使用 5509A DSP 的扩展端口控制外围设备的方法 了解发光二极管阵列 的控制编程方法 利用发光二极管阵列显示姓名的汉语拼音 为了控制时间间隔的准确性 要求采用定时器中断的方式进行调控 二 实验原理 1 EMIF 接口 TMS320C5509DSP 的扩展存储器接口 EMIF 用来与大多数外围设备进行连接 典型应用 如 连接片外扩展存储器等 这一接口提供地址连线 数据连线和一组控制线 ICETEK VC5509 A将这些扩展线引到了板上的扩展插座上供扩展使用 2 发光二极管显示阵列的显示是由扩展端口控制 扩展在EMIF 接口的两个寄存器提供具 体 控制 原理图如下 3 显示原理 DSP 须将显示的图形按列的顺序存储起来 8 8 点阵 8 个字节 高位在下方 低位在上 方 然后定时刷新控制显示 具体方法是 将以下控制字按先后顺序 每两个为一组发送 到端口0 x602802 发送完毕后 隔不太长的时间 以人眼观察不闪烁的时间间隔 再发送一 遍 由于位值为 0 时点亮 所以需要将显示的数据取反 0 x01 第8 列数据取反 0 x02 第7 列数据取反 0 x04 第6 列数据取反 0 x08 第5 列数据取反 0 x10 第4 列数据取反 0 x20 第3 列数据取反 0 x40 第2 列数据取反 0 x80 第1 列数据取反 4 实验程序流程图 送相应点阵刷新显示 开 始 初始化 DSP 时钟 EMIF 初始化 ICETEK CTR 选通发光二极管显示阵列 送相应点阵刷新显示 由 Z O N G J I E 循环 三 部分程序代码 在 ICETEK VC5509 EDU h 文件中定义所要显示的姓名汉语拼音的字母代码 unsigned char ledbuf 8 ledx 8 unsigned char ledkey 80 0 x00 0 x42 0 x85 0 x89 0 x91 0 xB1 0 x42 0 x00 高bit在低位s 0 x00 0 x7f 0 x80 0 x80 0 x80 0 x40 0 xff 0 x00 u 0 x00 0 xff 0 x02 0 x0C 0 x30 0 x40 0 xff 0 x00 n 0 x00 0 xff 0 x09 0 x09 0 x09 0 x09 0 x01 0 x00

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论