您现在的位置:首页 > >

DSP系统设计课程设计报告

发布时间:

课程设计报告
( 201x- 201x 年度第 x 学期)

名 题 院 班 学

称: DSP 系统课程设计 目: AD 采样与键盘液晶等的综合设计 系: x 级: x 号: x

学生姓名: x 指导教师: x 设计周数: 2



绩:

日期: 201x 年 x 月 x 日

一、设计目标

以 ICETEK-VC5509-A 实验箱为主要硬件资源,练*领会并掌握 AD 采样、液晶显示、键盘、LED 灯的相关内容,理解 DSP 系统的 原理,进一步强化课上所学内容。

二、设计思路

将 AD 采样、液晶、键盘及 LED 显示灯几方面的功能有机结合, 在进行 AD 采样的同时,在 CCS 界面中显示波形图,在液晶屏幕上 显示相应的采样信息及键盘功能,各按键代表不同的显示功能,如按 键 1 代表显示采样率,按键 4 代表将屏幕上的信息全部清除,同时 LED 灯每秒显示一次。

三、所用到的硬件资源

Windows xp 操作系统的电脑一台 ICETEK-VC5509-A 实验箱一台 USB 数据线一条

四、程序流程图

开始

初始化时钟, 设置 AD 通道

在 LCD 液晶屏上显 示按键功能信息

进入定时中断, LED 灯每秒闪一次, AD 采 样以 20K 的频率进行

判断是否有按

键 值 为 1 在 LCD 屏幕 上显示采样率

键产生并判断 键值

键 值 为 4 清屏

无 按 键 产 生

结束

五、主要程序语句
#define LCDDELAY 1 #include "myapp.h" #include "ICETEK-VC5509-EDU.h" #include "scancode.h" #include "stdio.h" #define LBDS (*((unsigned int *)0x400001)) #define KEYDIR (*(unsigned int *)0x602800) #define COL (*(unsigned int *)0x600803) #define ROW (*(unsigned int *)0x600804) #define TEST (*(unsigned int *)0x600801) void INTR_init( void ); void TIMER_init(void); int nCount=0,samplenumber=0; unsigned int nADC0[200]; int flag1=0; //按键 1 按下标志 int flag4=0; //按键 4 按下标志 int nCursorCount; void Smenu1() { wr_lcd (comm,0x01); wr_lcd (comm,0x30); wr_lcd (comm,0x80); wr_lcd (dat,0xb2); wr_lcd (dat,0xc9); wr_lcd (dat,0xd1); wr_lcd (dat,0xf9); wr_lcd (dat,0xca); wr_lcd (dat,0xb1); wr_lcd (dat,0xb5); wr_lcd (dat,0xc4); wr_lcd (dat,0xc6); wr_lcd (dat,0xb5); wr_lcd (dat,0xc2); wr_lcd (dat,0xca); wr_lcd (dat,0xca); wr_lcd (dat,0xc7); wr_lcd (dat,0xa1); wr_lcd (dat,0xc3);

/*清屏,地址指针指向 00H*/ // 90 表示 0 格 91 表示 1 格 //"采" //"样" //"时" //"的" //"频" //"率" //"是" //":"

wr_lcd (dat,0xa3); wr_lcd (dat,0xb2); wr_lcd (dat,0xa3); wr_lcd (dat,0xb0); wr_lcd (dat,0xa3); wr_lcd (dat,0xcb); } void Smenu2() { wr_lcd (comm,0x30); wr_lcd (comm,0x80); wr_lcd (dat,0xb2); wr_lcd (dat,0xc9); wr_lcd (dat,0xd1); wr_lcd (dat,0xf9); wr_lcd (dat,0xa3); wr_lcd (dat,0xac); wr_lcd (dat,0xb0); wr_lcd (dat,0xb4); wr_lcd (dat,0xbc); wr_lcd (dat,0xfc); wr_lcd (dat,0xa3); wr_lcd (dat,0xb1); wr_lcd (dat,0xcf); wr_lcd (dat,0xd4); wr_lcd (dat,0xca); wr_lcd (dat,0xbe); wr_lcd (dat,0xb2); wr_lcd (dat,0xc9); wr_lcd (dat,0xd1); wr_lcd (dat,0xf9); wr_lcd (dat,0xc6); wr_lcd (dat,0xb5); wr_lcd (dat,0xc2); wr_lcd (dat,0xca); wr_lcd (dat,0xa3); wr_lcd (dat,0xac); wr_lcd (dat,0xa3); wr_lcd (dat,0xb4); wr_lcd (dat,0xc7); wr_lcd (dat,0xe5); wr_lcd (dat,0xc6); wr_lcd (dat,0xc1);

//"2" //"0" //"K"

// 90 表示 0 格 91 表示 1 格 //"采" //"样" //"," //"按" //"键" //"1" //"显" //"示" //"采" //"样" //"频" //"率" //"," //"4" //"清" //"屏"

} main() { unsigned int dbReturn; PLL_Init(40); LBDS=0; INTR_init(); TIMER_init(); SDRAM_init(); InitCTR(); wr_lcd (comm,0x30); /*30---基本指令动作*/ wr_lcd (comm,0x01); /*清屏,地址指针指向 00H*/ wr_lcd (comm,0x06); /*光标的移动方向*/ wr_lcd (comm,0x0c); /*开显示,关游标*/ clrram(); Smenu2(); while(1) { unsigned char i; for(i=0;i<4;i++) { COL=~(0x0001<<i);//i=0,读取第四行,i=3,读取第一行。 Delay(40); dbReturn=ROW; if((dbReturn&0x00f0)!=0x00f0) { Delay(10); if((dbReturn&0x00f0)!=0x00f0) { dbReturn=dbReturn&0x00ff; switch(dbReturn) { case 0xee: printf("D \n"); break;// case 0xde: printf("# \n"); break; case 0xbe: printf("0 \n"); break; case 0x7e: printf("* \n"); break; case 0xed: printf("C \n"); break;// case 0xdd: printf("9 \n"); break; case 0xbd: printf("8 \n"); break; case 0x7d: printf("7 \n"); break; case 0xeb: printf("B \n"); break;// case 0xdb: printf("6 \n"); break; case 0xbb: printf("5 \n"); break;

case 0x7b: flag4=1; break; case 0xe7: printf("A \n"); break; case 0xd7: printf("3 \n"); break; case 0xb7: printf("2 \n"); break; case 0x77: flag1=1; break; } } } } if(flag1==1) { Smenu1();flag1=0;} if(flag4==1) { wr_lcd (comm,0x01); flag4=0; } asm(" nop"); } } void interrupt Timer() { unsigned int uWork; nCount++; if ( nCount==10000 ) {nCount=0;LBDS^=1;}

/*清屏,地址指针指向 00H*/;

//1s 闪烁一次

ADCCTL=0x8000; // 启动 AD 转换,通道 0 do { uWork=ADCDATA; } while ( uWork&0x8000 ); nADC0[samplenumber++]=uWork&0x0fff; if(samplenumber==200) samplenumber=0; } void INTR_init( void ) { IVPD=0xd0; IVPH=0xd0; IER0=0x10;

DBIER0 =0x10; IFR0=0xffff; 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 *)0x1000; prd0 = (unsigned int *)0x1001; tcr0 = (unsigned int *)0x1002; prsc0 = (unsigned int *)0x1003; *tcr0 = 0x04f0; //时钟源位内部时钟,TLB=1(将 PRD、TDDR 分别复 制到 TIM、PSC 中) *tim0 = 0; //主计数器为 0 *prd0 = 0x3e3; //PRD=499 *prsc0 = 3; //TDDR=3(40M/(4*500)=20K) *tcr0 = 0x00e0; //启动定时器 }

六、实验结果,体会或建议

初始图形界面:

波形界面:



友情链接: 医学资料大全 农林牧渔 幼儿教育心得 小学教育 中学 高中 职业教育 成人教育 大学资料 求职职场 职场文档 总结汇报