DSP第一次实验报告

DSP实验报告

实验一 CCS的安装与CCS操作界面的熟悉实验二、CCS操作

学院:信息工程学院

班级:2008级电子信息工程(2)班 姓名:肖 秀

学号:2008550503

联系方式:151xxxxxxxx

指导老师:姚志强

完成日期:20xx年10月21日

实验一CCS的安装与CCS操作界面的熟悉

DSP第一次实验报告

1

一、实验目的

1.学会安装与设置Code Composer Studio;

2.熟悉CCS 软件的操作界面。

二、实验设备

CCS 安装光盘(本次安装程序在D:\DSP\ccs2.0ForC5000)

装有Windows 98 以上操作系统的PC 机

三、实验内容及步骤

1.CCS 的安装

安装前需要卸载系统原来的C5000,进入控制面板进行卸载完毕后,再开始下面的步骤。

(1)找到CCS 的安装软件,点击安装程序setup.exe,双击启动安装。安装完成后在桌面上会有“CCS 2 C5000”和“SETUP CCS 2 C5000”两个快捷方式图标,分别对应CCS 应用程序和CCS 配置程序。

(2)双击运行“SETUP CCS 2 C5000”配置程序,配置驱动程序。本次实验没有用到实验箱,只需配置软件驱动程序。在弹出的“Import Configurantions”对话框中,先点击“Clear”键,清除以前的配置,然后选择“C5402 Simulator”,点击“Import”,最后点击“Save and Quit”按钮,完成配置。

2.CCS 操作界面的熟悉

(1)在桌面上双击“CCS 2 C5000”,弹出一个TI 仿真器并行调试管理器窗口。

(2)在管理器窗口的“open”菜单下选择“C54xx(C5402) Simulator”命令,将弹出一个CCS 运行主窗口(如果直接弹出CCS 运行主窗口,此步可略)。

(3)点击Help_>Contents 打开TMS320C54x Code Composer Stdio Help,在左边Contents 列表中点击最后一个TMS320C5402 DSK,浏览了解其下所有子列表的内容,熟悉DSK 板的基本硬件、配置及功能。

(4)对照教材介绍CCS 的地方,逐一熟悉CCS 中的12 项菜单的功能,包括File、Edit、View、Project、Debug、Profiler、Option、GEL、Tools 等菜单(结合实验二建立项目熟悉更好)。

(5)对照教材,逐一熟悉CCS 的五种工具栏:Standard Toolbar、GEL Toolbar、Project Toolbar、Debug Toolbar、Edit Toolbar(结合实验二建立项目熟悉更好)。

实验心得:

这是我第一次接触到DSP实验,也是我向DSP开发环境迈向了一步,在做实验之前,自己就熟悉了一些菜单和简单的操作。这次试验我主要掌握了

MS320C5400系列汇编语言程序的基本,程序编译、连接、运行和调试的基本过程,以及熟悉Code Composer Studio的使用格式。这个CCS软件我更是安装了三四次,因为我还安装了CCS3.3版。通过实验一掌握了CCS软件的安装与卸载以及一些基本操作流程。

总之,这次试验收获颇丰。

2

实验二、CCS操作

一、实验目的

1. 掌握TMS320C5400系列汇编语言程序的基本格式,

2. 掌握程序编译、连接、运行和调试的基本过程

3. 熟悉Code Composer Studio的使用

二、实验设备

1. 集成开发环境Code Composer Studio(以下简称CCS)

2. 实验代码ccs_basic.s54、ccs_basic.cmd和ccs_basic.gel

三、实验内容 结果及提示

1.基本操作:

1). 建立项目,并加入文件

a) 运行CCS setup,选择C5402 Simulator,选择Project→New菜单项,建立一个新的项目ccs_basic.pjt(注意建立路径),并选择Project→add files to new project 菜单项,加入文件ccs_basic.s54和ccs_basic.cmd;

b) 在工程视图中选中GEL files文件夹,单击鼠标右键,在弹出的菜单中选择Load GEL选项,载入ccs_basic.gel;

2). 编译和连接

a) 编译:选择Project-->Build Option,在Compile表单的Category列表中,选择Basic选项,并设置Generate debug info为full symbolic debug选项,选择Files选项,并在设置Asm File Ext 中写入“s54”为汇编语言扩展名; 如图2-1 2-2所示;

b) 连接:选择Project-->Build Option,在linker表单中的Autoinit mode选项中选择no autointialization模式,Output Filename中输入.\debug\ ccs_basic.out,Code Entry Point 中输 3

入main,Map Filename中输入ccs_basic.map,然后保存选项设置,如图2-3所示类似。

DSP第一次实验报告

图2-1 编译选项的选择

DSP第一次实验报告

图2-2 自定义文件扩展名

4

图2-3 连接选项的选择

c) 选择Project→Build构建整个项目,产生可执行文件ccs_basic.out; d) 选择File->Load Program,装载可执行文件ccs_basic.out。

2.练习

1) 观察存储器映象文件ccs_basic.Map,理解存储器的配置情况;

2) 观察和修改存储器单元的内容

1). 观察存储器映象Map文件

选择File→Open打开ccs_basic.Map文件,可观察

a) 存储器的配置情况:页面0为程序空间,页面1为数据空间;

b) 程序文本段:起始地址0x1000,存储区长度为0x0021;

c) 数据段:其中需初始化数据段.data起始地址0x2005,存储区长度为4; d) 不需初始化数据段.bss起始地址0x2000,存储区长度为5;

e) 堆栈段:起始地址0x0100,存储区长度为0x0400;

f) 向量段:起始地址0x0080,存储区长度为0x0080;

g) 全局符号在存储器中的位置:共14个符号,如符号.bss在存储器中的位置为0x2000。

DSP第一次实验报告

5

将上述信息与cmd文件中的设置比较,理解cmd文件和连接器的关系如下: cmd 文件为配置文件,配置文件在连接的过程中将定义DSP 的RAM 空间,

也就是对存储空间起一个配置作用。DSP 在程序中引入了各个段的概念,相应的连接时就需要进行各个段的分配。配置文件ccs.basic.cmd 内容如下:

DSP第一次实验报告

可以发现以上信息基本与存储器映象文件ccs_basic.Map 中相同。memory 部分说明了存储空间的页数、长度、起始点和名称。Section 部分是对段的 配置说明:.text 段和向量段固定的连接至程序空间;.bss 段和.stack 段固定的

连接至数据空间,存储类型为RAM。连接后的配置结果为向量段从第0 页

的0x0080 地址开始存放,代码段从第0 页的0x1000 地址开始存放,堆栈段 从第1 页的0x100 地址开始存放,数据段从第1 页的0x2000 地址开始存放。

2). 输出文件ccs_basic.out的运行和调试

DSP第一次实验报告

6

a) 运行程序:将可执行文件装载到simulator中,选择Debug→Run 或按F5键运行程序,按shift F5键可中止程序的运行;选择Debug→Step into或按F8键可实现程序的单步执行。

b) 设置断点:把光标移到某一行,按F9键,这一行将会以红色高亮显示,表示在该行加了一个断点. 断点如图所示

DSP第一次实验报告

3). 观察和修改存储器单元的内容

a) 点击CCS操作界面左侧调试工具栏图标,出现寄存器窗口,在该窗口查看存储器的地址

b) 选择View→memory 或点击CCS操作界面左侧调试工具栏图标,在弹出的菜单中输入存储器地址,可观察存储器的内容。如存储器地址为0x2005中内容为0x000A。

c) 修改源汇编程序中数据段内容,如下图

DSP第一次实验报告

,可查看存储器单元内容的变化。在数据表格复制到数组a[]后,如果把a[0]的值由10改为1(修改文件时注意去掉其只读属性,后面类似),那么求和的结果将为0x0026。如图所示: 7

由图可知,实验结果如预期所示。

实验心得:

实验二让我学会了怎么建立一个工程及新建文件,如何添加配置文件到工程中。虽然老师给了我们实验代码,但是我幻想要是有一天能够自己写代码那就好了。接下来是一些基本工程配置,如编译和链接等。还有让我们自己学会看DSP程序以及修改程序,如上面修改a的值。这一课感觉至为重要,因为是跨进CCS软件开发的入门,是以后实验的铺垫。个人将继续DSP的学习。期待下一次的实验。

DSP第一次实验报告

8

 

第二篇:DSP实验报告4

实  验  报  告

实验课程:       DSP原理与应用技术             

实验内容:      液晶显示屏(LCD)实验              

学生姓名:           郑婷婷                    

专业班级:       电子与通信工程                     

         

20##年  6  月  12 日

液晶显示屏(LCD)实验

一、  实验目的:

1掌握液晶的使用方法;

2掌握液晶信号之间时序的正确识别和引入。

二、  实验设备:

1装有CCS2000软件的计算机;

2插上2812主控板的DSP实验箱;

3DSP硬件仿真器

三、  实验原理:

本实验箱采用的液晶接口在DSP的数据总线上,由于DSP是十六位总线,液晶是八位总线,所以DSP的高八位悬空。液晶的结构框图如下,

四、  实验步骤:

1)     把2812模块小板插到大板上,打开液晶模块的电源开关;

2)     在CCS2000环境中打开本实验的工程编译Example_lcd.pjt,成输出文件,通过仿真器把执行代码下载到DSP芯片;

3)     运行程序,液晶上会循环显示预定内容;

4)     参考源代码,自行修改程序,实现不同的显示模式。

五、  实验程序:

#include "include/DSP281x_Device.h"     // DSP281x Headerfile Include File

#include "include/DSP281x_Examples.h"  // DSP281x Examples Include File

#include "ASCII.h"

// ------------------  汉字字模的数据结构定义 ------------------------ //

typedef struct typFNT_GB16             // 汉字字模数据结构

{

       signed char Index[2];             // 汉字内码索引

       char Msk[32];                    // 点阵码数据

}aa;

/////////////////////////////////////////////////////////////////////////

// 汉字字模表                                                         //

// 汉字库: 宋体16.dot 纵向取模上高位,数据排列:从左到右从上到下         //

/////////////////////////////////////////////////////////////////////////

struct typFNT_GB16  GB_16[] =          // 数据表

{/*--  文字:  欢  --*/

/*--  Fixedsys12;  此字体下对应的点阵为:宽x高=16x16   --*/

0x00,0x80,0x00,0x80,0xFC,0x80,0x05,0xFE,0x85,0x04,0x4A,0x48,0x28,0x40,0x10,0x40,

0x18,0x40,0x18,0x60,0x24,0xA0,0x24,0x90,0x41,0x18,0x86,0x0E,0x38,0x04,0x00,0x00

/*--  文字:  迎  --*/

/*--  Fixedsys12;  此字体下对应的点阵为:宽x高=16x16   --*/

0x40,0x00,0x21,0x80,0x36,0x7C,0x24,0x44,0x04,0x44,0x04,0x44,0xE4,0x44,0x24,0x44,

0x25,0x44,0x26,0x54,0x24,0x48,0x20,0x40,0x20,0x40,0x50,0x00,0x8F,0xFE,0x00,0x00

/*--  文字:  使  --*/

/*--  Fixedsys12;  此字体下对应的点阵为:宽x高=16x16   --*/

0x08,0x40,0x0C,0x40,0x1B,0xFE,0x10,0x40,0x37,0xFC,0x64,0x44,0xA4,0x44,0x27,0xFC,

0x24,0x44,0x22,0x40,0x21,0x80,0x20,0x80,0x21,0x70,0x22,0x1E,0x2C,0x04,0x00,0x00

/*--  文字:  用  --*/

/*--  Fixedsys12;  此字体下对应的点阵为:宽x高=16x16   --*/

0x00,0x00,0x1F,0xFC,0x10,0x84,0x10,0x84,0x10,0x84,0x1F,0xFC,0x10,0x84,0x10,0x84,

0x10,0x84,0x1F,0xFC,0x10,0x84,0x10,0x84,0x20,0x84,0x20,0x84,0x40,0x94,0x80,0x88

};

// Prototype statements for functions found within this file.

/*************************************************/

//延时N毫秒

/*************************************************/

void delay(int time)

{

 int i,j;

 for(i=0;i<time;i++)

  for(j=0;j<1200;j++);

}

/*************************************************/

//写命令

/*************************************************/

void wcom(unsigned char com)

{

    Reg08=com;

}

/*************************************************/

//写数据

/*************************************************/

void wdata(unsigned char dat)

{

       Reg07=dat;

}

/*************************************************/

//初始化LCD

/*************************************************/

void lcdinit(void)

{

              wcom(0xa4);

              wcom(0xad);

              wcom(0x03);

              wcom(0xac);

              wcom(0xe2);        //initialize interal function

              delay(10);

          wcom(0xa2);        //set nomal display

          wcom(0xa0);        //ADC select SEG1 to SEG132

              wcom(0xc8);        //set SHL COM1 to COM64 start page setup

        wcom(0x2c);        //power control(VB,VR,VF=1,1,1)

          wcom(0x2e);        //power control(VB,VR,VF=1,1,1)

          wcom(0x2f);        //power control(VB,VR,VF=1,1,1)

          wcom(0x25);        //

          wcom(0x81);        //set reference voltage mode

          wcom(0x20);        //set reference voltage

          wcom(0x40);        //Initial Display Line was first line

          wcom(0xa6);        //set nomal display

          wcom(0xa4);        //set nomal display

          wcom(0xaf);        //display on

}

/*************************************************/

//清屏

/*************************************************/

void clear(void)

{

       unsigned char page;

       unsigned char seg;

    for(page=0xb0;page<0xb9;page++)       //写页地址共8页  0xb0----0xb8

        {

        wcom(page);                     

        wcom(0x10);

        wcom(0x00);

        for(seg=0;seg<128;seg++)

        {

         wdata(0x00);

        }             

     }

}

/*************************************************/

//写显示字符

/*************************************************/

void lcdwritechar(char codenum ,char y ,char x )

{

        unsigned char seg;

        unsigned int coden;

        codenum-=0x20;

        coden=codenum<<4;

        wcom(0xb0|(y&0x0f));//

        wcom(0x10|((x>>1)&0x0f));

        wcom(0x00|((x<<3)&0x0f));

        for(seg=0;seg<8;seg++)

        wdata(nAsciiDot[coden++]);

        wcom(0xb0|((y+1)&0x0f));

        wcom(0x10|((x>>1)&0x0f));

        wcom(0x00|((x<<3)&0x0f));

        for(seg=0;seg<8;seg++)

        wdata(nAsciiDot[coden++]);

}

/*************************************************/

//写显示汉字

/*************************************************/

void lcdwritehz(char hznum ,char y ,char x )

{

       unsigned char seg,hz;

       unsigned char coden=0;

       hz=hznum;

       wcom(0xb0|(y&0x0f));

       wcom(0x10|((x>>1)&0x0f));

       wcom(0x00|((x<<3)&0x0f));

       for(seg=0;seg<16;seg++)wdata(GB_16[hz].Msk[coden++]);

       wcom(0xb0|((y+1)&0x0f));

       wcom(0x10|((x>>1)&0x0f));

       wcom(0x00|((x<<3)&0x0f));

       for(seg=0;seg<16;seg++)wdata(GB_16[hz].Msk[coden++]);

}

main()

{

   short i;

   InitSysCtrl();

   EALLOW;

   EDIS;

   DINT;

   InitPieCtrl();

   IER = 0x0000;

   IFR = 0x0000;

   InitPieVectTable();

   InitXintf();  // For this example, init the Xintf

   lcdinit();

   clear();

   while(1)

   {

    //lcdinit();

       lcdwritehz(0,1,4);    

       lcdwritehz(1,1,6);    

       lcdwritehz(2,1,8);    

       lcdwritehz(3,1,10);

      

       lcdwritechar('D',4,3);

       lcdwritechar('S',4,4);

       lcdwritechar('P',4,5);

       lcdwritechar(' ',4,6);

       lcdwritechar('2',4,9);

       lcdwritechar('8',4,10);

       lcdwritechar('1',4,11);

       lcdwritechar('2',4,12);     

       for(i=0;i<16;i++)lcdwritechar('=',6,i);

       for(i=0;i<16;i++)

       {

              lcdwritechar('>',6,i);

              delay(100);

       }

       clear();

   }

}

六、  实验现象:

实验现象如下图所示:

七、  实验总结:

通过本次CCS环境下LCD12864液晶模块显示的仿真实验,让我了解并熟悉了CCS软件的安装和调试方法,DSP实验箱下载调试的步骤以及CCS环境下的DSP的C语言程序编写方法,对于12864液晶模块控制程序的编写也有了更深的认识,对今后DSP的进一步学习奠定了应用基础。

相关推荐