湘潭大学数字信号处理实验报告(第四次)-6455表贴键盘控制实验

更新时间:2023-09-23 17:46:01 阅读量: IT计算机 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

数字信号处理实验报告(第四次)

学 院: 班 级:

姓 名:

学 号: 指导老师:

完成日期:

内容:

实验九、6455表贴键盘控制实验

1

实验九、6455表贴键盘控制实验

一、 实验目的

了解ICETEK-DM642-AVM板上表贴键盘的使用方法和连接、控制方式。

二、 实验设备

1、PC兼容机一台,操作系统为Windows2000(或Windows98,WindowsXP,一下默认为Windows2000),安装Code Composer Studio2.21软件。 2、ICETEK-DM642-AVM实验箱。 3、USB连接电缆一条。

三、 实验步骤

1. 实验准备

(1) 连接开发板+5V的供电电源,连接实验箱220V供电电源连线。

(2) 打开实验箱上的开关,给实验箱供电。上电正常时,ICETEK-DM642-AVM

评估板的上电指示灯常亮,复位灯熄灭。注意:如果在

ICETEK-DM642-AVM评估板上电后,指示灯的亮灯状态不对,请立即关闭实验箱电源开关,检查设备。拨动仿真选择开关(J2)选择DM642仿真方式。打开液晶显示屏电源开关,此时液晶显示屏上应显示条状彩条。如果没有彩条显示,请按下板上的S1复位按钮,再次观察液晶显示屏是否有彩条输出。

提示:如果使用自配的图像输入设备和图像输出设备,请务必保证各设备与DM642-AVM评估板的供电电源共地。如果不共地,过大的电压差,将击穿DM642评估板。

(3) 设置Code Composer Studio2.2在硬件仿真)Emulator)方式下运行。 (4) 启动Code Composer Studio2.2.

双击桌面上“CCS 2(‘C60000)”,启动Code Composer Studio。

2、打开工程:project\\open选择C:\\ICETEK-DM642-AVM_V3\\Lab37-KEY\\key.pjt,之后会出现如下图所示窗口:

2

3、浏览工程中源程序并理解含义。

4、编译、连接、下载并运行程序。

5、按下表贴键盘上相应键位,在Watch窗口Value一栏和Memory窗口会显示相应的键位值。如:按下表贴键盘上“+”(注意两个窗口中显示红色的值得变化)

3

另:按下表贴键盘回车键位时,Watch Window窗口中显示的是“!“。

6、结束运行,退出工程。

实验代码:

#include \

#include \

#define SPEAKER (*((unsigned char*)(0x90080011))) #define KEY (*((unsigned char*)(0x90080012))) void InitEMIF(); // 初始化EMIF接口

char ConvertScanToChar(unsigned char cScanCode); void Delay(unsigned int nDelay); // 软件延时子程序

main() { int i=0,j,dbScanCode; unsigned int uWork; char cKey; InitEMIF(); while ( 1 ) { dbScanCode=KEY; if((dbScanCode&0x0f0)!=0x0f0)

4

{ cKey=ConvertScanToChar(dbScanCode); SPEAKER=SPEAKER|0x4; SPEAKER=SPEAKER&0x0fb; } } }

// 软件延时子程序

void Delay(unsigned int nDelay) { unsigned int i,j,k; for ( i=0;i

// 初始化EMIF接口 void InitEMIF() {

#define EMIFA_GCTL 0x01800000 #define EMIFA_CE1 0x01800004 #define EMIFA_CE0 0x01800008 #define EMIFA_CE2 0x01800010 #define EMIFA_CE3 0x01800014 #define EMIFA_SDRAMCTL 0x01800018 #define EMIFA_SDRAMTIM 0x0180001c #define EMIFA_SDRAMEXT 0x01800020 #define EMIFA_CE1SECCTL 0x01800044 #define EMIFA_CE0SECCTL 0x01800048 #define EMIFA_CE2SECCTL 0x01800050 #define EMIFA_CE3SECCTL 0x01800054

/* EMIFA */

*(int *)EMIFA_GCTL = 0x00052078;

*(int *)EMIFA_CE0 = 0xffffffd3; /* CE0 SDRAM *(int *)EMIFA_CE1 = 0x73a28e01; /* CE1 Flash + CPLD *(int *)EMIFA_CE2 = 0x22a28a22; /* CE2 子卡 32-bit 异步接口 *(int *)EMIFA_CE3 = 0x22a28a42; /* CE3 子卡 32-bit 同步接口 *(int *)EMIFA_SDRAMCTL = 0x57115000; /* SDRAM 控制 *(int *)EMIFA_SDRAMTIM = 0x0000081b; /* SDRAM 刷新时序 5

*/ */ */ */

*/ */

*(int *)EMIFA_SDRAMEXT = 0x001faf4d; /* SDRAM 扩展控制 */ *(int *)EMIFA_CE0SECCTL= 0x00000002; /* CE0 第二控制寄存器 */ *(int *)EMIFA_CE1SECCTL= 0x00000002; /* CE1 第二控制寄存器 */ *(int *)EMIFA_CE2SECCTL= 0x00000002; /* CE2 第二控制寄存器 */ *(int *)EMIFA_CE3SECCTL= 0x00000073; /* CE3 第二控制寄存器 */ }

char ConvertScanToChar(unsigned char cScanCode) { char cReturn; cReturn=0; switch ( cScanCode ) { case SCANCODE_0: cReturn='0'; break; case SCANCODE_1: cReturn='1'; break; case SCANCODE_2: cReturn='2'; break; case SCANCODE_3: cReturn='3'; break; case SCANCODE_4: cReturn='4'; break; case SCANCODE_5: cReturn='5'; break; case SCANCODE_6: cReturn='6'; break; case SCANCODE_7: cReturn='7'; break; case SCANCODE_8: cReturn='8'; break; case SCANCODE_9: cReturn='9'; break; case SCANCODE_Plus: cReturn='+'; break; case SCANCODE_Minus: cReturn='-'; break; case SCANCODE_Xing: cReturn='*'; break; case SCANCODE_Jing: cReturn='#'; break; case SCANCODE_Enter: cReturn='!'; break; } return cReturn; }

四、 实验结果

表贴键盘控制WATCH窗口CKEY变量大小。

五、 问题与思考

如果不在主程序中加断点程序运行结果会是什么样的?为什么要加上断点?

答:表贴键盘无法控制WATCH窗口中CKEY的实时变化。若不加断点,按键

一次,且停止运行一次CKEY的值才变化并且只能变化一次。加断点的原因是使两者能够同步起来。

6

本文来源:https://www.bwwdw.com/article/glzd.html

Top