DSP实习报告模板
dsp实验报告总结doc

3.2 DSP总体结构
3.3 电源模块设计
3.4 时钟模块设计
3.5 存储器模块设计
3.6复位模块设计
篇二:DSP实验报告
DSP课程设计 实 验 报 告
语音压缩、存储和回放
学 院:电子信息工程学院电子科学与技术专业 设计人员: 吴莲梅 08214085电子0803班 杨 莹 08214088电子0803班指导老师: 日 期:
(1)A律限制采样值为12比特,A律的压缩可以按照下列公式进行定义:
A|x|11?lnA|x|1
(0?|x|?)?sgn(x)(?|x|?1)F(x)?sgn(x)
1?lnAA1?lnAA
式中,A是压缩参数(在欧洲,A=87.6)x是需要压缩的归一化整数。从线性到A律的压缩转换如下表所示:(压缩后的码字组成:比特0-3表示量化值,比特4-6表示段值,压缩后
一、 设计目的
设计一个功能完备,能够独立运行的精简DSP硬件系统,并设计简单的DSP控制程序。
二、 系统分析
1.1设计要求 硬件要求:
(1)使用TMS320VC5416作为核心芯片。 (2)具有最简单的led控制功能。 (3)具有存放程序的外部Flash芯片。 (4)外部输入+5V电源。 (5)绘制出系统的功能框图。
(6) 仪器仪表--如频谱分析、函数发生、锁相环、地震处理等。 (7) 自动控制--如引擎控制、深空、自动驾驶、机器人控制、磁盘控制。 (8) 医疗--如助听、超声设备、诊断工具、病人监护等。(9) 家用电器--如高保真音响、音乐合成、音调控制、玩具与游戏、数字 电话/电视等 DSP 的发展前景 DSP 的功能越来越强,应用越来越广,达到甚至超过了微控制器的功能,比 微控制器做得更好而且价格更便宜, 许多家电用第二代 DSP 来控制大功率电机就 是一个很好的例子。汽车、个人通信装置、家用电器以及数以百万计的工厂使用 DSP 系统。数码相机、IP 电话和手持电子设备的热销带来了对 DSP 芯片的巨大需 求。而手机、
DSP技术与应用基础实验报告模板终极版

福建农林大学金山学院信息工程类实验报告课程名称:DSP技术姓名:系:信息与机电工程系专业:电子信息工程专业年级:2009级学号:指导教师:范群贞职称:助教2012年 5 月 4 日实验项目列表福建农林大学金山学院信息工程类实验报告系:专业:年级:姓名:学号:实验课程:实验室号:_______ 实验设备号:实验时间:指导教师签字:成绩:实验一 Code Composer Studio 入门1.实验目的和要求1.掌握 Code Composer Studio 2.21 的安装和配置步骤过程。
2.了解 DSP 开发系统和计算机与目标系统的连接方法。
3.了解Code Composer Studio 2.21 软件的操作环境和基本功能,了解TMS320C55xx 软件开发过程。
⑴学习创建工程和管理工程的方法。
⑵了解基本的编译和调试功能。
⑶学习使用观察窗口。
⑷了解图形功能的使用。
2.实验原理*开发 TMS320C55xx 应用系统一般需要以下几个调试工具来完成:-软件集成开发环境(Code Composer Studio 2.21):完成系统的软件开发,进行软件和硬件仿真调试。
它也是硬件调试的辅助手段。
-开发系统(ICETEK 5100-USB 或 ICETEK 5100-PP):实现硬件仿真调试时与硬件系统的通信,控制和读取硬件系统的状态和数据。
-评估模块(ICETEK VC5509-A 或 ICETEK VC5509-C 等):提供软件运行和调试的平台和用户系统开发的参照。
*Code Composer Studio 2.21 主要完成系统的软件开发和调试。
它提供一整套的程序编制、维护、编译、调试环境,能将汇编语言和 C 语言程序编译连接生成 COFF (公共目标文件)格式的可执行文件,并能将程序下载到目标 DSP 上运行调试。
*用户系统的软件部分可以由 CCS 建立的工程文件进行管理,工程一般包含以下几种文件:-源程序文件:C 语言或汇编语言文件(*.C 或*.ASM)-头文件(*.H)-命令文件(*.CMD)-库文件(*.LIB,*.OBJ)3.主要仪器设备(实验用的软硬件环境)1. PC 兼容机一台;操作系统为 Windows2000 (或 WindowsNT、Windows98、WindowsXP,以下假定操作系统为 Windows2000)。
DSP技术 实验一报告模板

《DSP技术》课程实验报告学生姓名:所在班级:指导教师:记分及评价:一、实验名称:数据存储实验二、实验目的掌握TMS320F2812的内部结构;熟悉CCS软件的使用三、实验内容修改例子程序,实现以下功能:(1)往0x003F9020地址开始的八个存储单元依次写入0,1,2,……,7八个数;读取0x003F9020地址开始的八个存储单元内容依次写入0x003F9028地址开始的八个存储单元内;(2)从0x003F9020地址开始的八个存储单元的内容依次与0x003F9028地址开始的八个存储单元内容相乘,运算结果依次存入0x003F9030地址开始的八个存储单元内;从0x003F9020地址开始的八个存储单元的内容依次与0x003F9028地址开始的八个存储单元内容相加,运算结果依次存入0x003F9038地址开始的八个存储单元内;(3)将0x003F9020地址开始的32个存储单元的数据从小到大排序,排序后的结果依次存入0x003F9040地址开始的32个存储单元内四、实验程序与结果分析程序:void main(void){int i,n;volatile unsigned int *room = (volatile unsigned int *)0x3f9020;volatile unsigned int *room2= (volatile unsigned int *)0x3f9030;volatile unsigned int *room3= (volatile unsigned int *)0x3f9040;volatile unsigned int *room4= (volatile unsigned int *)0x3f9090;volatile unsigned int *room5= (volatile unsigned int *)0x3f90A0;volatile unsigned int *temp= (volatile unsigned int *)0x3f9090;unsigned int max;// Initialize System Control:// PLL, WatchDog, enable Peripheral ClocksInitSysCtrl();// Disable CPU interruptsDINT;// Disable CPU interrupts and clear all CPU interrupt flags: IER = 0x0000;IFR = 0x0000;/*对相应的内存空间赋值*/for(i=0;i<8;i++){* room=i;*room4=i;*(room+8)=i;*(room4+8)=i;*room2=(* room)*(*(room+8));*room5=(* room)*(*(room+8));*(room2+8)=(* room)+(*(room+8));*(room5+8)=(* room)+(*(room+8));room++;room2++;room4++;room5++;}/*从小到大排序并将32个数存在room3中*/for(i=0;i<31;i++){for(n=i+1;n<32;n++){if(temp[i]>=temp[n]){max= temp[i];temp[i]=temp[n];temp[n]=max;}}room3[i]=temp[i];}room3[i]=temp[31];}结果:五、小结通过本次对DSP的初次编程,感觉对C语言要求较高,进一步了解了DSP的内存分布情况,基本掌握了CSS的使用。
【最新】dsp实习报告-精选word文档 (14页)

本文部分内容来自网络整理,本司不为其真实性负责,如有异议或侵权请及时联系,本司将立即删除!== 本文为word格式,下载后可方便编辑和修改! ==dsp实习报告篇一:DSP实习报告DSP实习报告课题名称:学院:电气信息工程学院专业:姓名:班级学号:指导教师:吴勇实验日期:目录一、开发板调试 .................................................................. .. (3)1.1实习目的 .................................................................. (3)1.2实习要求 .................................................................. ................................................... 3 1.3实习内容 .................................................................. (3)1.3.1 CPU 定时器0实验 .................................................................. ....................................... 3 1.3.2 CPU 定时器2实验 .................................................................. ....................................... 4 1.3.3 EVtime1 实验 .................................................................. ................................................ 5 1.3.4数码管显示实验 .................................................................. ............................................ 5 1.3.5外部RAM实验 .................................................................. ............................................. 8 1.3.6外部Flash读写实验 .................................................................. .... 错误!未定义书签。
DSP系统设计实习报告

DSP应用技术课程报告课程课题:基于DSP的婴儿车搭手台的改进专业班级:学生姓名:指导教师:完成时间:2013.6.27一、课程内容:本次课程设计,我做的工程是基于DSP的婴儿车搭手台的改进具体实现方案如图:此改进主要实现的功能首先通过搭手台前的LCD显示屏平时显示“工学院牌”,搭手台上的六个卡通人物在婴儿在拍下任意一个卡通人物按键时会对应想起一首儿歌(如粉刷匠,两只老虎等)与此同时,儿歌的名称会在前方的LCD液晶屏上显示。
在婴儿车右侧的三个红色按钮可以控制风扇的风速大小。
这样就可以让婴儿在婴儿车里娱乐之余听到好听的儿歌,而且此项改进还加上了风扇的驱动,可以在婴儿平时尤其是睡觉时提供一个相对凉爽的环境,这样不但能更加适宜婴儿的成长,还能防止如痱子等因为潮热引起的相关疾病的出现。
二、设计功能及工作原理主要功能为:在LCD上可以显示婴儿车品牌,还有正在播放的歌名、按下不同的卡通按键式会播放不同的儿歌、按下不同的红色按键时风扇可以提供不同的风速。
工作原理:利用DSP试验箱上的诸多元件,具体元件转换方式如下:电机驱动代表婴儿车上的风扇、键盘上的1--6数字按键代表婴儿车上的六个卡通按键、7--9数字按键代表控制电机风速大小的三个红色按钮,试验箱上的LCD显示屏代表婴儿车前端的LCD显示器。
将两只老虎等歌曲的乐谱定义在主函数的字符串中,并把这些音乐名字的字模存放在相应的.h文件中,这样就通过按键控制选择播放的歌曲了,选择后LCD上立刻显示歌曲名称,之后通过定义指针i通过i++用蜂鸣器播放出对应的音调,这样就可以播放出完整的音乐了。
按下7--9键就可以通过更改电机占空比来控制电机的转速即婴儿车上风扇的转速了。
三、设计过程主要代码如下://两只老虎:unsigned intlmusic[36]={1,2,3,1,1,2,3,1,3,4,5,5,3,4,5,5,5,6,5,4,3,1,5,6,5,4,3,1,1,5,1,1,1,5 ,1,1};//欢乐颂:unsigned inthmusic[65]={3,3,4,5,5,4,3,2,1,1,2,3,3,3,2,2,2,2,3,3,4,5,5,4,3,2,1,1,2,3,2,2,1,1 ,1,2,2,3,1,2,3,3,1,2,3,3,2,1,5,3,3,4,5,5,4,3,2,1,1,2,3,2,1,1,1};unsigned intsmusic[31]={5,5,6,5,1,7,7,5,5,6,5,2,1,1,5,5,5,3,1,7,4,3,1,2,3,3,3,5,5,6,6}; unsigned intdmusic[48]={5,5,3,5,5,3,5,3,2,3,5,4,4,5,5,3,6,5,3,5,3,2,1,2,3,5,3,2,1,2,3,2,6,5 ,6,5,2,3,5,6,5,6,5,2,3,1,1,1};unsigned intsxmusic[31]={1,2,3,1,5,5,5,6,6,1,6,5,5,5,6,6,1,5,6,3,6,5,3,5,3,1,2,3,1,1,1}; unsigned intfmusic[57]={5,3,5,3,5,3,1,2,4,3,2,5,5,4,3,5,3,5,3,5,3,1,2,4,3,2,1,1,1,2,2,4,4,3 ,1,5,2,4,3,2,5,4,4,5,3,5,3,5,3,1,2,4,3,2,1,1,1};case 1:CTRLR=0x1;CTRLR=0x40;CTRLCDCMDR=LCDCMDPAGE;Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);CTRLCDCMDR=LCDCMDVERADDRESS; // 起始列=0Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);for ( i=0;i<64;i++ ){CTRLCDLCR=huanlesong[2*i+1] ;Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);}CTRLCDCMDR=LCDCMDPAGE+1;Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);CTRLCDCMDR=LCDCMDVERADDRESS; // 起始列=0Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);for ( i=0;i<64;i++ ){CTRLCDLCR=huanlesong[2*i] ;Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);}for(n=0;n<100;n++){nMusicCount=hmusic[n];*prd0=music[nMusicCount][0]; // 切换音符*tcr0=0xe0;LBDS=uLED[0]; // 正向顺序送控制字delay(512);}break;case 2:。
dsp实验心得体会范文3篇_dsp实习心得体会(2)

dsp实验心得体会范文3篇_dsp实习心得体会(2)dsp实习心得体会篇1如果说前几年DSP作为一个器件,一个处理器或一个事物是相对比较新的东西,那么现在DSP已经在我们电子设计开发中非常常见了。
首先我们从定义上简单理解一下DSP。
我们涉及到的DSP主要是只这里特指数字信号处理器芯片,这里我把我的一些学习经验和大家分享。
希望对大家有帮助了解DSP我个人认为学习一个东西首先是了解它,比如DSP到底是什么?用在什么地方?怎么用?和这里我们传统的单片机特点有那些相同与不同?开发需要注意什么?怎么样完成一个最小系统等。
我想了解清楚这些问题我们自然就清楚比较清楚的认识DSP了。
下面我们就来对上面的问题我们在很多地方都可以找到答案,我把其中比较重要的简单的回答一下。
DSP大家注意和传统的概念区分一下,传统我们经常说的DSP(Digital Signal Processing(数字信号处理))的缩写也就是说是一些功能算法,这里的DSP是指(Digital Signal Process(数字信号处理器))的缩写,也就是说他是一个集成一些外设的一个芯片,类似我们的单片机。
我们通过程序实现一些特定的功能。
和传统单片机比较的区别?DSP功能比普通单片机高出很多,当然价格也比较高。
所以直接用DSP和单片机比较是不合适的。
我们这里比较不是从他的应用领域来比较,我们是从开发的角度来比较,为了是使那些熟练使用单片机的朋友可以很快上手。
当然我的主要目的的大家可以比较学习,达到熟悉一种CPU其他就可以很快上手。
下面从几个方面比较一下1,硬件上比较从硬件上比较DSP和传统的单片机主要有几个方面不一样,很多DSP电源系统比传统的复杂,但是这个并不影响我们因为如TI的DSP 都提供相关的测试电路。
开始的时候大家可以完全按照他来设计。
调试方式上有很大不同,DSP一般通过JTAG来进行仿真和烧写的,而单片机是通过直接仿真器来仿真的(这里讲的单片机是比较早的,现在的单片机也有很多采用JTAG调试方式)。
DSP短学期 实验报告

DSP应用系统设计实验报告一、设计任务通过矩阵键盘的输入,利用TMS320LF2407的事件管理模块,可以简单有效的控制步进电机的停转、转速和转向。
系统中设计了相应的人机界面,进行相应变量的显示、操作即可在液晶上实时显示电机当前运行状态。
利用拓展端口控制外围设备的方法,掌握使用2407DSP通用计时器的控制原理及中断服务程序的编程方法;了解蜂鸣器发生原理和音乐发生方法;了解步进电机的使用方法;了解液晶显示控制原理及编程方法及小键盘的应用。
该实验设计分成4个模块完成:•液晶模块•键盘模块•电机模块•其它模块(蜂鸣器、点阵)具体化即:1. DSP芯片接受矩阵键盘的输入。
2. DSP芯片对LED灯,蜂鸣器控制模块。
3. DSP芯片对相应信息的反馈,即:LCD液晶显示。
4. DSP控制电机正反转以及对电机速度调节。
二、系统构成及子模块原理:1.硬件原理方框图1所示,该系统由LCD液晶显示模块、矩阵键盘模块、电机模块及包含蜂鸣器和点阵的模块组成。
图1硬件原理方框图2:系统总流程图:3:子模块工作原理a.键盘输入:键盘在信号采集系统中是一个很关健的部件,它能向系统输入数据、传送命令等功能,是人工干预系统的主要手段,键盘输入功能主要提供控制信号和数据的输入。
键盘的扫描码由DSP的I/O扩展地址0x8001给出,当有键盘输入时,读此端口得到扫描码,当无键按下时读此端口的结果为0。
各按键的扫描码排列如下所示。
0x18,0x14,0x12,0x11 0 1 2 30x28,0x24,0x22,0x21 4 5 6 70x48,0x44,0x42,0x41 8 9 A B0x88,0x84,0x82,0x81 C D E F扫描码对应键值也即,当读8001H端口时,如果其值为‘18H’,则表示键盘按下的键是“0”,如果其值为‘0’,则表示没有键按下。
将键盘扫描得到的数据存入内存,然后根据数据值就能够确定所输入的键,通过映射关系,就能过将每一个键设为特定的功能。
DSP实习报告

IIR滤波器的设计一、实习目的1、掌握数字滤波器的设计过程2、了解IIR的原理和特性3、熟悉设计IIR数字滤波器的原理和方法4、设计IIR低通,高通和带通滤波器。
二、实习要求1、DSP初始化。
2、MATLAB初始化。
3、编写MATLAB程序,设计滤波器,得到数据。
4、熟练使用CCS 对程序进行调试。
5、编写DSP程序,得到信号及变化后信号的波形及FFT变换。
6、观察滤波前后波形的FFT变化,对比前后波形变化。
三、实习设备:计算机四、系统原理论述IIR数字滤波器是一种离散时间系统,其系统函数为假设M≤N,当M>N时,系统函数可以看作一个IIR的子系统和一个(M-N)的FIR子系统的级联。
IIR数字滤波器的设计实际上是求解滤波器的系数和,它是数学上的一种逼近问题,即在规定意义上(通常采用最小均方误差准则)去逼近系统的特性。
如果在S平面上去逼近,就得到模拟滤波器;如果在z平面上去逼近,就得到数字滤波器。
IIR低通和高通滤波器是用契比雪夫窗函数法设计的,而IIR带通滤波器是用双线性变换法设计的切比雪夫数字带通滤波器。
采用非线性频率压缩方法,将整个频率轴上的频率范围压缩到-π/T~π/T之间,再用z=esT转换到Z平面上。
也就是说,第一步先将整个S平面压缩映射到S1平面的-π/T~π/T一条横带里;第二步再通过标准变换关系z=es1T将此横带变换到整个Z平面上去。
这样就使S平面与Z平面建立了一一对应的单值关系,消除了多值变换性,也就消除了频谱混叠现象,映射关系如图1-3所示。
图1-3双线性变换的映射关系为了将S平面的整个虚轴jΩ压缩到S1平面jΩ1轴上的-π/T到π/T 段上,可以通过以下的正切变换实现(1-5)式中,T仍是采样间隔。
当Ω1由-π/T经过0变化到π/T时,Ω由-∞经过0变化到+∞,也即映射了整个jΩ轴。
将式(1-5)写成将此关系解析延拓到整个S平面和S1平面,令jΩ=s,jΩ1=s1,则得o-11Z平面jIm[z]Re[z]π / TjΩ1σ1-π / TS1平面S平面jΩσo o⎪⎭⎫⎝⎛Ω=Ω2tan21TT2/2/2/2/11112TjTjTjTjeeeeTjΩ-ΩΩΩ+-⋅=ΩTsTsTsTsTsTseeTTsTeeeeTs1111111122tanh2212/2/2/2/----+-⋅=⎪⎭⎫⎝⎛=+-⋅=再将S1平面通过以下标准变换关系映射到Z 平面 z=es1T从而得到S 平面和Z 平面的单值映射关系为:(1-6)(1-7) 式(1-6)与式(1-7)是S 平面与Z 平面之间的单值映射关系,这种变换都是两个线性函数之比,因此称为双线性变换式(1-5)与式(1-6)的双线性变换符合映射变换应满足的两点要求。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
DSP应用技术实习报告课程课题:基于DSP的键盘控制数字图像处理方式及LCD显示专业班级:电子信息科学与技术学生姓名:指导教师:邹修国李林徐友杨红兵完成时间:一、课程内容:✧掌握直方图统计的原理和程序设计✧了解边缘检测的算法和用途✧了解锐化的算法和用途✧了解取反的算法和用途✧掌握直方图均衡化增强的原理和程序设计✧了解液晶显示器的显示控制原理及编程方法✧了解键盘的使用原理及编程方法二、设计功能及工作原理能够实现功能:✓数字图像直方图统计✓数字图像边缘检测(Sobel算子)✓数字图像的锐化(LAPLACE算子)✓数字图像的取反✓数字图像直方图均衡化增强通过键盘的输入可以控制图像处理的方式,并且LCD显示何种处理方式。
工作原理:◆灰度直方图是灰度值的函数,描述的是图像中具有该灰度值的像素的个数,其横坐标表示像素的灰度级别,纵坐标表示的是该灰度出现的频率。
◆边缘检测算子检查每个像素的邻域并对灰度变化率进行量化,也包括方向的确定。
大多数使用基于方向导数掩模求卷积的方法。
◆图像的锐化处理就是使模糊的图像变得更加清晰起来,拉普拉斯锐化法属于常用的一种微分锐化方法。
◆求反处理的图像与原来的图像黑白颠倒,取得类似照片底片的效果。
◆直方图增强的方法就是压缩直方图中比例少的像素所占用的灰度范围,多出来的灰度空间按照统计比例分配给直方图中比例高的像素使用。
三、设计过程1.各种功能工程的分别建立:✓数字图像直方图统计✓数字图像边缘检测(Sobel算子)✓数字图像的锐化(LAPLACE算子)✓数字图像的取反✓数字图像直方图均衡化增强✓键盘输入✓液晶显示器控制显示2.将各个功能模块进行组合:1)打开键盘输入的工程文件,浏览key.c文件内容;2)打开数字图像直方图统计的工程文件,将Histo.c主函数内的处理部分的代码复制到key.c文件的case1语句后;3)打开数字图像边缘检测的工程文件,将Image.c主函数内的处理不放入内的代码复制到key.c文件的case2语句后;4)打开数字图像锐化的工程文件,将Image.c主函数内的处理不放入内的代码复制到key.c文件的case3语句后;5)打开数字图像取反的工程文件,将Image.c主函数内的处理不放入内的代码复制到key.c文件的case4语句后;6)打开数字图像直方图均衡化增强的工程文件,将Histo.c主函数内的处理不放入内的代码复制到key.c文件的case5语句后;7)内存空间的修改,打开cmd代码,做以下修改-w-stack 1000-heap 1000-sysstack 1000-l rts55x.lib以及DARAM2: o=0x8100, l=0x300008)打开液晶显示的工程文件,利用字模显示工具分别对所需要显示的字进行字模显示,得到扫描代码,对原有工程文件主函数进行修改,再对key,c的主函数进行添加和修改。
9)编译并下载程序10)打开观察窗口进行窗口设各项参数设置,分别打开三个,一个用于原图显示,一个用于直方图显示,一个用于处理后图像显示。
进行断点调试,观察图像变化,以及LCD显示。
3.主要的代码主函数main(){int dbScanCode,i;PLL_Init(20);SDRAM_init();InitCTR();TurnOnLCD(); // 打开显示LCDCLS(); // 清除显示内存CTRLCDCMDR=LCDCMDSTARTLINE; // 设置显示起始行Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);for (;;){CTRLCDCMDR=LCDCMDPAGE; // 设置操作页=0Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);CTRLCDCMDR=LCDCMDVERADDRESS; // 起始列=0Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);dbScanCode=GetKey();dbScanCode&=0x0ff;if(dbScanCode==SCANCODE_9) break;switch(dbScanCode){case 1:CTRLR=0x1;CTRLR=0x40;for ( i=0;i<50;i++ ){CTRLCDRCR=ledkey[1][i]; // 屏幕左侧第1至8行第i列赋值 port8002=0; // (赋值后当前操作列自动加1,所以不需设置)Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);}Delay(512);InitImage(MODEGRAYBAR,dbImage,IMAGEWIDTH,IMAGEHEIGHT);Histogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram);InitImage(MODEGRAY,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint Histogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram);InitImage(MODEPHOTO1,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint Histogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram);InitImage(MODEPHOTO2,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint Histogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram);InitImage(MODEPHOTO3,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint Histogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram);InitImage(MODEPHOTO4,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint Histogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram);break;case 2:CTRLR=0x2;CTRLR=0x40;for ( i=0;i<50;i++ ){CTRLCDRCR=ledkey[2][i]; // 屏幕左侧第1至8行第i列赋值 port8002=0; // (赋值后当前操作列自动加1,所以不需设置)Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);}Delay(512);InitImage(MODEGRAYBAR,dbImage,IMAGEWIDTH,IMAGEHEIGHT);Sobel(IMAGEWIDTH,IMAGEHEIGHT);InitImage(MODEGRAY,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint Sobel(IMAGEWIDTH,IMAGEHEIGHT);InitImage(MODEPHOTO1,dbImage,IMAGEWIDTH,IMAGEHEIGHT);//BreakPoint Sobel(IMAGEWIDTH,IMAGEHEIGHT);InitImage(MODEPHOTO2,dbImage,IMAGEWIDTH,IMAGEHEIGHT);//BreakPoint Sobel(IMAGEWIDTH,IMAGEHEIGHT);InitImage(MODEPHOTO3,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint Sobel(IMAGEWIDTH,IMAGEHEIGHT);InitImage(MODEPHOTO4,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint Sobel(IMAGEWIDTH,IMAGEHEIGHT);break;case 3:CTRLR=0x4;CTRLR=0x40;for ( i=0;i<50;i++ ){CTRLCDRCR=ledkey[3][i]; // 屏幕左侧第1至8行第i列赋值port8002=0; // (赋值后当前操作列自动加1,所以不需设置)Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);}Delay(512);InitImage(MODEGRAYBAR,dbImage,IMAGEWIDTH,IMAGEHEIGHT);Laplace(IMAGEWIDTH,IMAGEHEIGHT);InitImage(MODEGRAY,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint Laplace(IMAGEWIDTH,IMAGEHEIGHT);InitImage(MODEPHOTO1,dbImage,IMAGEWIDTH,IMAGEHEIGHT);//BreakPoint Laplace(IMAGEWIDTH,IMAGEHEIGHT);InitImage(MODEPHOTO2,dbImage,IMAGEWIDTH,IMAGEHEIGHT);//BreakPoint Laplace(IMAGEWIDTH,IMAGEHEIGHT);InitImage(MODEPHOTO3,dbImage,IMAGEWIDTH,IMAGEHEIGHT);//BreakPoint Laplace(IMAGEWIDTH,IMAGEHEIGHT);InitImage(MODEPHOTO4,dbImage,IMAGEWIDTH,IMAGEHEIGHT);//BreakPointLaplace(IMAGEWIDTH,IMAGEHEIGHT);break;case 4:CTRLR=0x0;CTRLR=0x48;for ( i=0;i<50;i++ ){CTRLCDRCR=ledkey[4][i]; // 屏幕左侧第1至8行第i列赋值port8002=0; // (赋值后当前操作列自动加1,所以不需设置)Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);}Delay(512);InitImage(MODEGRAYBAR,dbImage,IMAGEWIDTH,IMAGEHEIGHT);Reverse(IMAGEWIDTH,IMAGEHEIGHT);InitImage(MODEGRAY,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPoint Reverse(IMAGEWIDTH,IMAGEHEIGHT);InitImage(MODEPHOTO1,dbImage,IMAGEWIDTH,IMAGEHEIGHT);//BreakPoint Reverse(IMAGEWIDTH,IMAGEHEIGHT);InitImage(MODEPHOTO2,dbImage,IMAGEWIDTH,IMAGEHEIGHT);//BreakPoint Reverse(IMAGEWIDTH,IMAGEHEIGHT);InitImage(MODEPHOTO3,dbImage,IMAGEWIDTH,IMAGEHEIGHT);//BreakPoint Reverse(IMAGEWIDTH,IMAGEHEIGHT);InitImage(MODEPHOTO4,dbImage,IMAGEWIDTH,IMAGEHEIGHT);//BreakPoint Reverse(IMAGEWIDTH,IMAGEHEIGHT);break;case 5:CTRLR=0x0;CTRLR=0x50;for ( i=0;i<50;i++ ){CTRLCDRCR=ledkey[5][i]; // 屏幕左侧第1至8行第i列赋值port8002=0; // (赋值后当前操作列自动加1,所以不需设置)Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);}Delay(512);InitImage(MODEGRAYBAR,dbImage,IMAGEWIDTH,IMAGEHEIGHT);Histogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram);Enhance(dbImage,dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram,fHistogram1); Histogram(dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram1);InitImage(MODEGRAY,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPointHistogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram);Enhance(dbImage,dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram,fHistogram1);Histogram(dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram1);InitImage(MODEPHOTO1,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPointHistogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram);Enhance(dbImage,dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram,fHistogram1);Histogram(dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram1);InitImage(MODEPHOTO2,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPointHistogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram);Enhance(dbImage,dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram,fHistogram1);Histogram(dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram1);InitImage(MODEPHOTO3,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPointHistogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram);Enhance(dbImage,dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram,fHistogram1);Histogram(dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram1);InitImage(MODEPHOTO4,dbImage,IMAGEWIDTH,IMAGEHEIGHT); //BreakPointHistogram(dbImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram);Enhance(dbImage,dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram,fHistogram1);Histogram(dbTargetImage,IMAGEWIDTH,IMAGEHEIGHT,fHistogram1);while(1);break;case 6:for ( i=0;i<50;i++ ){CTRLCDRCR=ledkey[6][i]; // 屏幕左侧第1至8行第i列赋值port8002=0; // (赋值后当前操作列自动加1,所以不需设置)Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);}Delay(512);CTRLR=0x0;CTRLR=0x60;break;case 7:for ( i=0;i<50;i++ ){CTRLCDRCR=ledkey[7][i]; // 屏幕左侧第1至8行第i列赋值port8002=0; // (赋值后当前操作列自动加1,所以不需设置)Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);}Delay(512);CTRLR=0x8;CTRLR=0x40;break;case 8:for ( i=0;i<50;i++ ){CTRLCDRCR=ledkey[8][i]; // 屏幕左侧第1至8行第i列赋值 port8002=0; // (赋值后当前操作列自动加1,所以不需设置)Delay(LCDDELAY);CTRLCDCR=0;Delay(LCDDELAY);}Delay(512);CTRLR=0x10;CTRLR=0x40;break;}Delay(16);}CloseCTR();exit(0);}void Histogram(unsigned char *pImage,int nWidth,int nHeight,float fHisto[256]) {int i,j;unsigned int uWork;unsigned char *pWork;for ( i=0;i<256;i++ ) fHisto[i]=0.0f;pWork=pImage;for ( i=0;i<nHeight;i++ ){for ( j=0;j<nWidth;j++,pWork++ ){uWork=(unsigned int)(*pWork);fHisto[uWork]++;}}uWork=nWidth*nHeight;for ( i=0;i<256;i++ ){fHisto[i]/=uWork;fHisto[i]*=100;}}void Enhance(unsigned char *pImage,unsigned char *pImage1,int nWidth,int nHeight,float fHisto[256],float fHisto1[256]){int i,j;unsigned int uWork;unsigned char *pWork,*pWork1;for ( i=0;i<256;i++ )fHisto1[i]=fHisto[i]/100;for ( i=1;i<256;i++ )fHisto1[i]+=fHisto1[i-1];for ( i=0;i<256;i++ )lut[i]=fHisto1[i]*256;for ( i=0;i<256;i++ )if ( lut[i]>=256 )lut[i]=255;pWork=pImage; pWork1=pImage1;for ( i=0;i<nHeight;i++ )for ( j=0;j<nWidth;j++,pWork++,pWork1++ )(*pWork1)=lut[(*pWork)];}字显示部分的修改代码unsigned char ledkey[10][50]={{0x00,0x00,0x7C,0x82,0x82,0x82,0x7C,0x00}, //0{0xFC,0x00,0x20,0x00,0x20,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x84,0x00,0xFC ,0x00,0x84,0x00,0x00,0x00,0x4C,0x00,0x92,0x00,0x92,0x00,0x64,0x00,0x00,0x00,0x0 4,0x00,0x04,0x00,0xFC,0x00,0x04,0x00,0x04,0x00,0x78,0x00,0x84,0x00,0x84,0x00,0x 78,0x00,0x00,0x00}, //1{0x4C,0x00,0x92,0x00,0x92,0x00,0x64,0x00,0x00,0x00,0x78,0x00,0x84,0x00,0x84 ,0x00,0x78,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x94,0x00,0x94,0x00,0x6C,0x00,0x0 0,0x00,0xFC,0x00,0x94,0x00,0x94,0x00,0x84,0x00,0x00,0x00,0xFC,0x00,0x80,0x00,0x 80,0x00,0x80,0x00}, //2{0x00,0x00,0xFC,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0xF8,0x00,0x2C ,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0xFC,0x00,0x24,0x00,0x24,0x00,0x18,0x00,0x0 0,0x00,0xFC,0x00,0x80,0x00,0x80,0x00,0x80,0x00,0x00,0x00,0xF8,0x00,0x2C,0x00,0x F8,0x00,0x00,0x00},{0xF8,0x00,0x14,0x00,0x14,0x00,0x34,0x00,0xC8,0x00,0x00,0x00,0xFC,0x00,0x94 ,0x00,0x94,0x00,0x84,0x00,0x00,0x00,0x7C,0x00,0x80,0x00,0x7C,0x00,0x00,0x00,0x0 0,0x00,0xFC,0x00,0x94,0x00,0x94,0x00,0x84,0x00,0xF8,0x00,0x14,0x00,0x14,0x00,0x 34,0x00,0xC8,0x00},{0x00,0x00,0xFC,0x00,0x94,0x00,0x94,0x00,0x84,0x00,0xFC,0x00,0x08,0x00,0x10 ,0x00,0x20,0x00,0xFC,0x00,0xFC,0x00,0x20,0x00,0x20,0x00,0xFC,0x00,0x00,0x00,0x0 0,0x00,0xF8,0x00,0x2C,0x00,0xF8,0x00,0x00,0x00,0xFC,0x00,0x08,0x00,0x10,0x00,0x 20,0x00,0xFC,0x00},{0x00,0x00,0x7C,0x92,0x92,0x92,0x64,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0 0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x 00,0x00,0x00,0x00},{0x00,0x00,0x02,0xC2,0x32,0x0A,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0 0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x 00,0x00,0x00,0x00},{0x00,0x00,0x6C,0x92,0x92,0x92,0x6C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 ,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0 0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},{0x00,0x00,0x4C,0x92,0x92,0x92,0x7C,0x00}四、设计工程的仿真图形1. 数字图像直方图统计2. 数字图像边缘检测(Sobel)3. 数字图像锐化4.数字图像的取反5. 数字图像直方图均衡化增强五、对设计工程总结与评价经过仿真该系统能够完成预定的任务,我们的设计作品成功完成。