程序设计论文范文

时间:2023-03-05 15:25:06

程序设计论文

程序设计论文范文第1篇

一、前言

Windows提供强大的功能以及友好的图形用户界面(GUI),使得它不仅广泛的用作管理事务型工作的支持平台,也被工业领域的工程人员所关注。但Windows3.1并非基于优先级来调度任务,无法立即响应外部事件中断,也就不能满足工业应用环境中实时事件处理和实时控制应用的要求。因此,如何在Windows环境中处理外部实时事件一直是技术人员尤其是实时领域工程人员所关注的问题。目前已有的方法大都采用内挂实时多任务内核的方式,如Windows下的实时控制软件包FLX等,而iRMX实时操作系统则把Windows3.1当作它的一个任务来运行。对于大型的工程项目,开发人员可采用购买实时软件然后集成方式。

对中小项目,从投资上考虑就不很经济。如何寻找一种简明的方法来处理外部实时事件依然显得很必要。

本文首先阐述Windwos的消息机制及中断机制,然后结合DPMI接口,给出一种保护模式下中断程序的设计方法,以处理外部实时事件。经实际运行结果表明,该方法具有简洁、实用、可靠的特点,并同样可运行于Win95。

二、Windows的消息机制

Windows是一消息驱动式系统,见图1。Windows消息提供了应用程序与应用程序之间、应用程序与Windows系统之间进行通讯的手段。应用程序要实现的功能由消息来触发,并靠对消息的响应和处理来完成。

Windows系统中有两种消息队列,一种是系统消息队列,另一种是应用程序消息队列。计算机的所有输入设备由Windows监控,当一个事件发生时,Windows先将输入的消息放入系统消息队列中,然后再将输入的消息拷贝到相应的应用程序队列中。应用程序中的消息循环从它的消息队列中检索每一个消息并发送给相应的窗口函数中。一个事件的发生,到达处理它的窗口函数必需经历上述过程。值得注意的是消息的非抢先性,即不论事件的急与缓,总是按到达的先后排队(一些系统消息除外),这就使得一些外部实时事件可能得不到及时的处理。

图1

三、Windows的保护模式及中断机制

1.Windows的保护模式

保护模式指的是线性地址由一个选择符间接生成的,该选择符指向描述表中的某一项;而实模式中则通过一个段/偏移量对来直接寻址。80386(486)CPU提供的保护模式能力包括一个64K的虚拟地址空间和一个4G的段尺寸。Windows3.1实现时有所差别,它支持标准模式和增强模式。标准模式针对286机器,不属本文探讨范围。增强模式是对386以上CPU而言,Windows正是使用保护模式来打破1M的屏障并且执行简单的内存保护。它使用选择器、描述器和描述器表控制访问指定内存的位置和段。描述器表包括全局描述器表、局部描述器表、中断描述器表。保护模式与实模式有许多不同。其中显著的差异是访问内存的机制不同。

2.中断机制

(1)实模式中断

为了便于理解,我们先回顾实模式中断。

在实模式下,中断向量表IVT起到相当重要的作用。无论来自外部硬件的中断或是内部的软中断INTn,在CPU中都产生同样的响应。

①CPU将当前的指令指针寄存器(IP)、代码段寄存器(CS)、标志寄存器压入堆栈。

②然后CPU使用n值作为指向中断向量表IVT的索引,在IVT中找出服务例程的远地址。

③CPU将此远地址装入CS:IP寄存器中,并开始执行服务例程。

④中断例程总以IRET指令结束。此指令使存在堆栈中的三个值弹出并填入CS、IP和标志寄存器,CPU继续执行原来的指令。

(2)保护模式中断

保护模式中断过程与实模式中断过程类似,但它不再使用中断向量表IVT,而使用中断描述符表(IDT)。值得一提的是,Windows运行时IVT还存在,应用程序并不使用它,Windows仍然使用,但含义已不同。

①IVT结构:IVT在RAM的0000∶0000之上,占据开始的1024字节。

它仍然由BIOS启动例程设置,由DOS填充到RAM中。

②IDT中断描述符表:保护模式下,Windows操作系统为实现中断机制而建立的一个特殊表,即中断描述符表IDT。该表被用来保存中断服务例程的线性地址,它们是真正的24位或32位地址,没有段:偏移值结构。中断描述器表最多可含有256个例程说明,详细说明请见【3】。I

DT结构见图2。

图2

③当中断或异常发生时,处理过程与实模式类同。当前的CS∶IP值和标志寄存器值被存储。保存的内容还包括CPU其他内部寄存器的值,以及目前正在被执行的任务的有关信息(若必须发生任务切换的话)。CPU设法获取中断向量后,以它为索引值,查找IDT中的服务例程远地址,接着将控制转移到该处的服务例程。这是与实模式转移到IVT的不同所在。保护模式使用IDTR寄存器分配和定位内存中的IDT中断描述符表。IDT在内存中是可移动的,与IVT固定在内存中刚好相反。IDT中断描述符表在Windows中起决定性的作用。理解了Windows下保护模

式的中断机制。有助于我们理解中断服务程序的设计,它的关键就在于如何将服务例程的地址放入IDT中断描述符表中。当中断发生时,如何将断点地址及CPU各寄存器值保护起来;中断结束时,如何将保护的值恢复。Windows系统本身并不提供实现上述功能的API,而DOS保护模式接口DPMI正具备了上述的功能。

下面我们首先介绍DPMI接口,然后基于它实现Windows下中断服务程序的设计。

四、DOS保护模式接口DPMI

Windows除了标准服务外,还支持一组特殊的DOS服务,称为DOS保护模式接口DPMI,由一些INT2FH和INT31H服务组成。它使应用程序能够访问PC系列计算机的扩充内存,同时维护系统的保护功能。DPMI通过软件中断31h来定义了一个新的接口,使得保护模式的应用程序能够用它作分配内存,修改描述符以及调用实模式软件等工作。

Windows为应用程序提供DPMI服务。即Windows是DPMI的宿主(host),应用程序是DPMI的客户(client),可通过INT-31H调用得到DPMI服务。INT-31H本身提供多功能。其中它的中断管理服务允许保护模式用于拦截实模式中断,并且挂住处理器异常。有些服务能够和DPMI宿主合作,以维护应用程序的虚拟中断标志。

可以用INT31H来挂住保护模式中断向量,以中断方式处理外部实时事件。利用INT31H,功能0205H:设置保护模式中断向量,将特定中断的保护模式处理程序的地址置入中断向量里。调用方式:AX=0205H,BL=中断号,CX∶(E)DX=中断处理程序选择符:偏移值。返回:执行成功CF=清零,执行失败CF=置位。

挂住/解挂中断向量的时机很重要。主窗口第一次被创建时会传送它WM-CREATE消息,这时是挂住中断向量的最好时机。退出时需解挂向量,否则Windows可能崩溃。主窗口接收到WM-DE-STROY之后进行解挂工作,是最适合的。解挂向量可先用INT35H,0204H功能将老的中断向量保存,退出时用INT35H,0205H恢复。

五、编程实现

有了DPMI的支持,我们就可以很方便地处理数据采集、串行通信等工业过程中的实时事件。下面以Windows3.1平台下中断方式实现的串行通信为例,说明中断程序的编制和实现。为便于参考,给出了详细的代码。开发平台BC3.1/BC4.5,其本身支持0.9版的DPMI,无需运行其它支持DPMI的软件。编程语言C,可与C++混合编译。

初始化COM1,9600波特率,每字符8bits,1个停止位,中断接收,查询发送。

//windowsasycommunication

//byLiXiuming

//lastmodifiedonJune25,1996

#include〈windows.h〉

#include〈dos.h〉

voidinterruptfarDataReceive();

voidinterruptfar(*old-vector)();

unsignedchardatacom-r[1024],datacom-s[1024];

intinflag=0;

unsignedints8259;

intInitCom1()

{//串口1初使化

s8259=inportb(0x21);//读入8259当前状态并保存

outportb(0x21,s8259&0xe8);//初始化8259,允许0x0c号中断

outportb(0x3fb,0x83);

outportb(0x3f8,0x0c);

outportb(0x3f9,0x00);

outportb(0x3fb,0x03);

outportb(0x3fc,0x08);//允许中断信号送到8259A,以便能中断

outportb(0x3f9,0x01);//0x01,中断允许

return1;

}

voidinterruptfarDataReceive()

{//中断接收子程序

staticinti=0;//静态局部变量

charrechar=0;//每中断一次,i自动加1

rechar=inportb(0x3f8);//从数据口读出发送过来的数据

if(inflag==0)

{

if(rechar!=s&&i==0)//帧起始

{

i=0;

gotoll;

}

datacom-r[i++]=rechar;//存入datacom-r[](通信缓冲区)

if(rechar==e)//帧结束

{

inflag=1;

i=0;

}

}

ll:outportb(0x20,0x20);//回送中断结束标志

}

//调用DPMI

//保存旧的0CH号保护模式中断向量

//设置新的保护模式中断服务例程

voidInitCom(void)

{

asm{

cli

movax,204h

movbl,0ch

int31h

sti

}

old-vector=MK-FP(-CX,-DX);//保存

asm{cli//设置新的0x0c中断服务例程

movax,205h

movbl,0ch

movcx,segdatareceive

movdx,offsetdatareceive

int31h

sti

}

InitCom1();

}

//恢复8259状态

//恢复0CH保护模式向量

voidRestoreComm(void)

{

outportb(0x21,s8259);

asm{

cli

movax,205h

movbl,0ch

movcx,segold-vector

movdx,offsetold-vector

int31h

sti

}

}

在窗口第一次被创建时会传送它WM-CREATE消息,这时调用InitCom()即可。在主窗口关闭时,即主窗口中收到WM-DESTROY消息时,调用RestoreComm()恢复原来的状态。

这样在对串口初始化,设置中断服务例程后,通信事件发生时,会立即跳入中断子程序中执行,越过系统的消息队列,达到实时处理通信事件的目的。而数据处理模块可通过全局标志flag访问全局的数据通信缓冲区获取实时数据。这种实现方式与基于消息机制的Windows通信API实现相比具有实时性强的特点,因为它超过Windows系统的两极消息机制。

上述程序已在实际系统中得到应用。在Windows3.1支持下,同时运行三个Windows任务:服务器SERVER(内有实时串行通信,多个网络数据子服务),客户CLIENT,FOXPRO数据库系统。整个系统运行良好。切换到WIN95平台下(支持0.9版DPMI),系统也运行良好。

参考文献

1张豫夫、曹建文译.【澳】BarryKauler著.Windows汇编语言及系统程序设计.北京大学出版社,1995

2赵人任等译.【美】MikeKlein者.Windows程序员使用指南(一).北京:清华出版社,1995

程序设计论文范文第2篇

实际上,只有从芯片开始仔细设计,才能方便地实现多处理器系统的调节功能。这里选用的是AD公司新出品的SHARC级处理器ADSP21160。

ADSP21160具有很大的片内存储区、多重内部总线结构、独立的I/O子系统;具有构造多处理器系统的所有特点,能够真正支持处理器数目的可调节功能,十分适合组成高性能浮点的多DSP系统。

VxWorks是目前世界上用户数量最大的实时操作系统。这使它除了具有优越的技术性能之外,还具有丰富的应用软件支持、良好的技术服务和可靠的系统稳定性。由于它具有以上优点,本系统中选用了VxWorks作为MVME167的操作系统。

一、ADSP21160的特点

ADSP21160是AD公司采用超级哈佛结构的一种新产品。21160的汇编代码与2106x兼容,处理器具有SIMD(单指令流多数据流)功能;而2106x只具有SISD(单指令流单数据流)功能。为了充分利用这种新的功能,一些指令做了一些改变。ADSP21160包括1个100/150MHz的运算核、双端片内SRAM、1个支持多处理器的集成在片内的I/O处理器和多重内部总线以消除I/O瓶颈。

ADSP21160的汇编源代码与2106x兼容。SIMD计算结构:2个32bit的计算单元,其中每一个单元包括乘法器、ALU、移位寄存器及寄存器文件。具有完备的与设备接口功能。包括独立的I/O处理器、4Mbit的片内双端SRAM、可直接连接的多处理器特性及端口(串口、连接口、外总线及JTAG)。

ADSP21160包括2个运算处理单元,具有SIMD功能。处理单元指的是PEX和PEY。PEX始终是有效的,而PEY的有效是通过设置MODE1寄存器中的PEYEN位来实现的。当PEY模式有效时,同一条指令在2个处理器单元中都得到执行,但每一个处理器单元中的操作数不同。

SIMD模式在存储区和处理器单元之间的数据传输也是很有作用的。当使用SIMD模式,通过加倍数据带宽来保证处理器单元的操作。在SIMD模式,当使用DAGs来传输数据时,存储区每次访问所传输的是两个数据值。

ADSP21160包括4Mbit的片内SRAM,分为两块,每一块2Mbit。可以定义为不同字长的指令和数据存储。每一个存储块的双端口结构可以使存储块独立地被运算核处理和I/O处理器访问。21160的存储区最大可以容纳128K的32bit数据,或256K的16bit数据,或85K的48bit指令,或其他混合字长的数据,但总和最大为4Mbit。所有存储区可以16、32、48、64bit字长的字访问。外端口支持处理器与片外存储器及外设的接口,片外的4G地址空间属于21160的统一地址空间。

外端口支持同步、异步及同步BURST访问。DMA控制器的操作相对处理器运算核是独立和不可见的,即DMA操作可与执行指令同时进行。DMA传输可以在内部存储区与外部存储区、设备或主机之间进行。21160共有14个DMA通道,其中:连接口(linkport)占6个;串口占4个;外端口(externalport)占4个。21160可以通过DMA传输来下载程序,异步设备也可以通过DMA请求/应答线来控制2个DMA通道。

21160具有许多特点支持多DSP系统。外端口与连接口支持多处理器系统的直接连接,外端口支持统一的地址空间,允许DSP之间互相访问。片内具有分布式总线仲裁逻辑,最多支持6片21160和主机连接。外端口的最大数据传输率为400MB/s,广播写信号可以同时发

送到各片21160。6个连接口提供了另一种方法实现多处理器之间的通信。连接口的最高传输速率为600MB/s。

整个系统基于VME总线。VME总线系统作为最早的国际通用开放式总线,自1981年起,经历了近20年的发展。其影响不断扩大,功能不断完善,现已成为性能最好、应用最广的国际总线标准之一。

根据设计要求,采用了4片ADSP21160。片外共享内存SRAM可以被主机和各片DSP直接访问;EPROM用来存放初始化程序和各片DSP要运行的程序,在系统上电后这些程序被下载到各片DSP中;LEDs用来显示插件的状态,如reset、normal等。每一片都有1个连接口连到插件的前面板,这样前端采集来的数据就可以很方便地传输到多DSP上,而且也使数据的传输模式更加灵活。

连接口(linkport)是SHARC系列DSP芯片的一个特点。ADSP21160共有6个8bit连接口提供额外的I/O服务。在100MHz时钟下运行时,每个连接口可达100MB/s。连接口尤其适合多处理器间点到点的连接。连接口可以独立地同时操作,通过连接口的数据封装成48/32bit字长后,可以从片内存储区直接被运算核读取或DMA传输。每一个连接口有它自己的双缓冲I/O寄存器,数据传输可编程,硬件由时钟/应答握手线控制。4片DSP使用连接口实现DSP间两两互连。

21160的主机接口可以很方便地与标准微处理器总线(16/32bit)相连,几乎不需要额外硬件。主机通过21160的外端口对其进行访问,存储区地址映射为统一的地址空间。4个DMA通道可以用于主机接口,代码和数据传输的软件开销很小,主处理器通过HBR、HBG和REDY信号线与21160进行通信,主机可以对片内存储区进行直接读写。

二、开发环境Tornado

VxWorks的开发环境是WindRiver公司提供的Tornado。Tornado采用主机-目标机开发方式,主机系统可采用运行SunSolaris、HP-UX以及Win95/NT的工作站或个人计算机,VxWorks则运行在Intelx86、MC68K、PowerPC或SPARC等处理器上。Tornado支持各种主机-目标机连接方式,如以太网、串行线、在线仿真器和ROM仿真器。

Tornado的体系结构使得许多强有力的开发工具可以用于各种目标机系统和各种主机-目标机连接方式下,而不受制于目标机的资源和通信机制。同时VxWorks具有良好的可剪裁性。因此它适用于各种嵌入式环境的开发,小到资源极其有限的个人手持式设备如PDA(PersonalDigitalAssistant);大到多处理机系统,如VME系统。

Tornado可提供一个直观的、可视化的、用户可扩充的开发环境,极大缩短了开发周期。同时,由于Tornado是一个完全的开放系统,使得集成第三方开发工具变得十分容易。

主机与目标机之间的通信是通过运行各自处理器上的进程来完成的,使主机上的开发工具和目标机的操作系统可以完全脱离相互连接的方式。

为了摆脱主机-目标机通信带宽和目标机资源的限制,Tornado将传统的目标机方的工具迁移到主机上,如shell、loader和符号表等。这样,系统不再需要额外的时间和带宽在主机和目标机之间交换信息,降低了对连接带宽的需求,也避免了目标机的资源(如内存)被工具或符号表大量占用,使得应用程序拥有更多的系统资源。同时这种迁移也使得各种主机开发工具独立于目标机存在,从而使同一主机平台上的工具可以用于所有的目标机系统。

作为一个应用软件开发环境,Tornado提供了友好的可视化开发界面、交叉编译环境、源码级调试工具、目标机命令解释器和目标机状态监视器等多种应用工具,为应用软件开发提供了一个高效而可靠的平台。

三、程序设计

我们选用的DSP开发工具是AD公司提供的VisualDSP。这是一个集成开发环境,支持对SHARC系列DSP芯片的开发。实时操作系统VxWorks的开发工具是WindRiver公司的Tornado集成开发工具。VisualDSP可以C语言或汇编语言编

写的DSP代码,最新版本的VisualDSP还支持C++。它还有1个优点,就是可以编译多片DSP的源代码,并产生下载文件,这就可以很方便地进行多DSP系统的软件模拟。

ADSP21160阵列的设计结构使它既可以构成单指令流多数据流(SIMD)的并行处理机,也可以构成多指令流单数据流(MISD)或多指令流多数据流(MIMD)的流水线处理机,视用户的要求而定。这两种并行方案的选择,简单来说就是选择分割数据流还是分割处理工序。SIMD方案的原理如图1所示。

以下介绍我们实验室承担的水声信号处理系统。本系统以VME总线为系统开发平台,前端调理模件、模数转换模件和前端控制模件等为VME插件,采用SHARC级DSP芯片阵列完成声纳信号实时处理,基于嵌入式实时操作系统VxWorks及X窗口系统的中央控制和显示。

图2是4片DSP的任务分配图。从前端采集来的信号,经波束形成和复解调,再经过窄带滤波后的信号分为两路,一路送去进行幅度检波,一路做频域处理。幅度检波就是对复信号求模,根据信号幅度判决有无目标存在。频域处理分两种情况:当发射信号为单频脉冲时,进行功率谱估计,然后根据多普勒频移估计目标速度;当发射信号为双曲调频信号时,进行相关处理。

声纳综合数据处理主要包括主动声纳信号处理和被动声纳信号处理。其中,主动声纳信号处理又根据发射信号的不同,分为非相干处理、相干处理、功率谱处理。声纳综合数据处理主要完成:目标自动检测、目标参数测定和动目标跟踪。

四、操作流水线

操作流水线是模块内数据计算与I/O的流水线,物理上表现为CPU与I/O端口的DMA之间的并行。在前端处理中由于数据率高,通信开销很大。以通信任务最为繁重的复解调和多普勒补偿模块为例,输入数据率为2Mw/s,输出数据率为4Mw/s,高速连接口LinkPort最高速率为100Mw/s,如果采用串行传输的话,通信时间就将占用60%以上的处理时间,计算时间显然严重不足。所以必须采用并行执行,流程图如图3所示。这也是一种异步流水线方式,每次传送和计算完成都须要设置标志以通知下一操作。

结束语

在VxWorks实时操作系统下,4片ADSP21160上的程序已经通过模拟输入和系统测试。采用SHARCDSP阵列能够很好地完成声纳信号实时处理,每一片DSP至少有10%的计算裕量,基本达到设计要求。

送到各片21160。6个连接口提供了另一种方法实现多处理器之间的通信。连接口的最高传输速率为600MB/s。

整个系统基于VME总线。VME总线系统作为最早的国际通用开放式总线,自1981年起,经历了近20年的发展。其影响不断扩大,功能不断完善,现已成为性能最好、应用最广的国际总线标准之一。

根据设计要求,采用了4片ADSP21160。片外共享内存SRAM可以被主机和各片DSP直接访问;EPROM用来存放初始化程序和各片DSP要运行的程序,在系统上电后这些程序被下载到各片DSP中;LEDs用来显示插件的状态,如reset、normal等。每一片都有1个连接口连到插件的前面板,这样前端采集来的数据就可以很方便地传输到多DSP上,而且也使数据的传输模式更加灵活。

连接口(linkport)是SHARC系列DSP芯片的一个特点。ADSP21160共有6个8bit连接口提供额外的I/O服务。在100MHz时钟下运行时,每个连接口可达100MB/s。连接口尤其适合多处理器间点到点的连接。连接口可以独立地同时操作,通过连接口的数据封装成48/32bit字长后,可以从片内存储区直接被运算核读取或DMA传输。每一个连接口有它自己的双缓冲I/O寄存器,数据传输可编程,硬件由时钟/应答握手线控制。4片DSP使用连接口实现DSP间两两互连。

21160的主机接口可以很方便地与标准微处理器总线(16/32bit)相连,几乎不需要额外硬件。主机通过21160的外端口对其进行访问,存储区地址映射为统一的地址空间。4个DMA通道可以用于主机接口,代码和数据传输的软件开销很小,主处理器通过HBR、HBG和REDY信号线与21160进行通信,主机可以对片内存储区进行直接读写。

二、开发环境Tornado

VxWorks的开发环境是WindRiver公司提供的Tornado。Tornado采用主机-目标机开发方式,主机系统可采用运行SunSolaris、HP-UX以及Win95/NT的工作站或个人计算机,VxWorks则运行在Intelx86、MC68K、PowerPC或SPARC等处理器上。Tornado支持各种主机-目标机连接方式,如以太网、串行线、在线仿真器和ROM仿真器。

Tornado的体系结构使得许多强有力的开发工具可以用于各种目标机系统和各种主机-目标机连接方式下,而不受制于目标机的资源和通信机制。同时VxWorks具有良好的可剪裁性。因此它适用于各种嵌入式环境的开发,小到资源极其有限的个人手持式设备如PDA(PersonalDigitalAssistant);大到多处理机系统,如VME系统。

Tornado可提供一个直观的、可视化的、用户可扩充的开发环境,极大缩短了开发周期。同时,由于Tornado是一个完全的开放系统,使得集成第三方开发工具变得十分容易。

主机与目标机之间的通信是通过运行各自处理器上的进程来完成的,使主机上的开发工具和目标机的操作系统可以完全脱离相互连接的方式。

为了摆脱主机-目标机通信带宽和目标机资源的限制,Tornado将传统的目标机方的工具迁移到主机上,如shell、loader和符号表等。这样,系统不再需要额外的时间和带宽在主机和目标机之间交换信息,降低了对连接带宽的需求,也避免了目标机的资源(如内存)被工具或符号表大量占用,使得应用程序拥有更多的系统资源。同时这种迁移也使得各种主机开发工具独立于目标机存在,从而使同一主机平台上的工具可以用于所有的目标机系统。

作为一个应用软件开发环境,Tornado提供了友好的可视化开发界面、交叉编译环境、源码级调试工具、目标机命令解释器和目标机状态监视器等多种应用工具,为应用软件开发提供了一个高效而可靠的平台。

三、程序设计

我们选用的DSP开发工具是AD公司提供的VisualDSP。这是一个集成开发环境,支持对SHARC系列DSP芯片的开发。实时操作系统VxWorks的开发工具是WindRiver公司的Tornado集成开发工具。VisualDSP可以C语言或汇编语言编

写的DSP代码,最新版本的VisualDSP还支持C++。它还有1个优点,就是可以编译多片DSP的源代码,并产生下载文件,这就可以很方便地进行多DSP系统的软件模拟。

ADSP21160阵列的设计结构使它既可以构成单指令流多数据流(SIMD)的并行处理机,也可以构成多指令流单数据流(MISD)或多指令流多数据流(MIMD)的流水线处理机,视用户的要求而定。这两种并行方案的选择,简单来说就是选择分割数据流还是分割处理工序。SIMD方案的原理如图1所示。

以下介绍我们实验室承担的水声信号处理系统。本系统以VME总线为系统开发平台,前端调理模件、模数转换模件和前端控制模件等为VME插件,采用SHARC级DSP芯片阵列完成声纳信号实时处理,基于嵌入式实时操作系统VxWorks及X窗口系统的中央控制和显示。

图2是4片DSP的任务分配图。从前端采集来的信号,经波束形成和复解调,再经过窄带滤波后的信号分为两路,一路送去进行幅度检波,一路做频域处理。幅度检波就是对复信号求模,根据信号幅度判决有无目标存在。频域处理分两种情况:当发射信号为单频脉冲时,进行功率谱估计,然后根据多普勒频移估计目标速度;当发射信号为双曲调频信号时,进行相关处理。

声纳综合数据处理主要包括主动声纳信号处理和被动声纳信号处理。其中,主动声纳信号处理又根据发射信号的不同,分为非相干处理、相干处理、功率谱处理。声纳综合数据处理主要完成:目标自动检测、目标参数测定和动目标跟踪。

四、操作流水线

操作流水线是模块内数据计算与I/O的流水线,物理上表现为CPU与I/O端口的DMA之间的并行。在前端处理中由于数据率高,通信开销很大。以通信任务最为繁重的复解调和多普勒补偿模块为例,输入数据率为2Mw/s,输出数据率为4Mw/s,高速连接口LinkPort最高速率为100Mw/s,如果采用串行传输的话,通信时间就将占用60%以上的处理时间,计算时间显然严重不足。所以必须采用并行执行,流程图如图3所示。这也是一种异步流水线方式,每次传送和计算完成都须要设置标志以通知下一操作。

结束语

程序设计论文范文第3篇

当电缆没有开路、错位质量故障时,A0~A31端的电缆等效电阻RT≤7000mΩ时,对A0~A31端分别取样进行精密测量。在综合考虑IC100~IC131输入端低电平应≤0.7V和图2中运算放大器输入灵敏度兼容情况下,取恒流源IS的输出电流为10±0.5mA,Re0~Re31=33Ω±5%,Vces≤0.1±0.05V。因此可以计算出VA采样取值范围是0.353~0.566V,VB的采样取值范围是0.348~0.384V。为此图2中选用OPA335运算放大器,其输入电压范围是0~3V(单电源供电时),最大输入失调电压为5μV。图2中运算放大器输出电压V0~V31可由式(4)计算。由于OPA335的最大输入失调电流是70pA,在设计中控制最大输入电流在0.1~1mA之间,选择RA=RB=2kΩ±5%,R1=RF=33kΩ±5%,电压增益为16.5,输出电压范围0~3.6V。

2测量分析电路设计

A/D转换与分析电路设计在图3中,A/D转换电路ADC0809的输入端IN0~IN7分别与图2中运算放大器的输出端V0~V7连接,将模拟信号转化为8位数字输出信号,并传送给单片机的D0~D7端口,由单片机进行分析运算。路模拟输出信号共需要4块ADC0809电路进行模数转换。单片机P0.0~P0.7端口接收ADC0809输出的8位数字信号后进行分析。

3电缆等效电阻检测程序设计

3.1标准等效电阻值确定

端子压接后电缆等效电阻的标准值因电缆长度不同而有差异。可采用预先设定标准值和自动确定标准值两种方法。对线径为0.4mm的铜芯线电缆,预先设置标准值RT标准可按照式(5)进行计算:RT标准=75+148•L(5)其中,L是电缆长度,单位为m;RT标准的单位是mΩ。自动确定标准值方法是以正常工艺在质量稳定情况下,将首根检验的压接端子的电缆作为样品,对32个芯线等效电阻进行自动检测对比,选取其中的最小值,然后乘以系数1.05作为标准值。

3.2自动设定标准值程序设计

标准等效电阻值存放于I2C存储器AT24C08中。检测程序设计多路通信电缆端子精密检测的主程序流程图如图5所示。以下为采集的主要函数,假设通道数为36路。

4批量检测结果分析

分别对6m和20m压接端子的电缆共238根进行精密检测,检测结果如表1所示。通过精密检测发现,RT平均符合标准要求。6m电缆的不合格率为9.41%,20m电缆的不合格率为13.73%。对超标准不合格的29根电缆进行解剖分析,发现接触电阻超标14根,压接电阻超标9根,缆线电阻超标6根。通过对等效电阻超标产生的原因进行分析,有针对性地制定工艺改进措施后,经过精密检测不合格率小于1.1%,能够满足生产质量要求。

程序设计论文范文第4篇

(一)CDIO模式下教学内容设计.NET平台支持多种应用项目的开发,所以.NET程序设计课程的教学内容繁多,结合课时要求,除去导论部分,将授课内容整理为面向对象程序设计、Win-dows应用程序设计、数据库访问技术、Web技术开发四大模块。每个模块都以原理、设计和应用为线索组织教学,并按照知识模块组织专题进行授课内容设计:(1)面向对象程序设计部分,涉及C#基本语法、类和对象、继承、多态、接口及其实现、委托和事件、异常处理等;(2)Windows应用程序设计部分涉及Windows项目开发流程、窗体、控件的使用;(3)数据库访问技术涉及体系结构、.NETFramework数据库提供程序、数据绑定技术;(4)Web技术开发涉及控件及内置对象、Web数据绑定技术、HTML和CSS样式等内容。通过这样设计教学内容,教师能从较高层次把握课程内容的地位和作用以分配不同的课时,学生容易理清不同应用项目开发所用技术的不同及之间的关系。

(二)“多层次递进式”项目设计实验项目设计采用多层次、递进式方式。以学生为本,从简单到复杂、从单一到综合、从验证型到创新型,循序渐进地把教学内容和能力培养体现在项目中。将课程实验分为基础验证型、综合设计型和实践创新型三个层次,根据知识模块设计相应项目引导课程的教和学,并有侧重点地体现CDIO能力的培养,项目列表及对应CDIO能力培养如表1所示。凝练优秀的教学型工程项目是基于CDIO项目学习模式成功的关键之一。因此表1中所列项目都是经过教学实践反复修改完善的。实践创新型实验与软件工程、数据库课程相结合,采用一个完整的项目做载体贯穿始终。这样设计实验,首先可以将知识和课程有机结合,有助于学生明确它们在解决复杂工程问题中的关联和作用;然后减少了课程之间衔接的重复、冗余;也减少了学生重复完成项目的工作量。在实践创新型项目的凝练过程中,充分考虑学生熟悉并感兴趣的项目,一类是校内项目,如网上选课系统,校园二手商品交易网站等,这样不仅能解决教师的实际需求,也能满足学生通过实际项目开发Web开发技能的培养;另一类是自主选择项目,可以提高学生项目的开发热情和兴趣。

(三)基于CDIO的教学实施在具体教学过程中,按照知识模块为教学单位进行。32学时的理论授课和作业结合,并辅以小测试加强理论知识的巩固。每个模块的理论授课完毕完成对应的实验项目,共20学时,加入反思及答辩环节,最后进行期末考试。理论教学采用多种教学方式。对绪论性内容、面向对象程序设计等有一定难度的理论知识,依然采用讲授教学方式;对Windows应用开发,采用启发式案例教学法,以Windows系统自带记事本为例,逐渐讲解各种控件的应用及开发流程;对Web技术开发,综合案例教学和任务驱动教学,对已经完成的“工程训练中心选课系统”的项目进行精练,作为授课案例,详细讲解需求分析过程,然后引导学生概要设计、详细设计,并以具体模块为例进行程序编码及调试运行。整个授课环节,板书和多媒体相结合,现场程序编写及调试,不仅帮助学生直观理解概念、原理和方法,也可以提高学生的兴趣,形成以教师为主导,学生为主体的教学模式。实验教学不同层次实验区别实施。对验证型实验和综合设计型实验,每人单独完成,旨在通过实验使学生深入掌握基本知识、原理、编程的基本技巧,实验过程中老师及时解决学生所遇问题并掌握进展情况,每次实验课的最后半个小时,验收部分学生的实验以督促学生学习;并展示往届有代表性的实验报告和程序,规范学生实验报告的撰写,激励学生互相学习,共同进步。对实践创新型实验,学生4~6人为单位形成开发小组,一人任组长,进行角色划分。团队按照软件工程的开发步骤,进行需求分析、概要设计及详细设计和测试,撰写各个阶段的开发文档,要求团队共同参与项目答辩。各层次实验的考核都设有答辩和反思环节。反思不仅可以启发学生积极进行批判性思考来深化课程学习目标,而且也有助于学生进行深层次的学与问,引导学生主动学习的兴趣。

二、结语

本文结合CDIO的工程教学模式的理念对.NET程序设计课程的教学大纲、教学内容、试验项目等进行重新设计。在教学过程中,采用多种教学手段,并通过凝练典型工程项目将课程知识点关联起来,使之为载体贯彻始终,通过完成不同层次的实验项目,引导学生“做中学”,并以CDIO考核形式引入反思答辩环节。这样的教学改革,培养了学生项目开发的通用能力,使之能够处理解决一般工程项目整个生命周期产生的各种问题,符合工程技术型人才培养的目标。

程序设计论文范文第5篇

教学中立足具体实例,渗透基本概念;分散难点,逐步渗透;设置问题情境,分析解决问题的方法。教学实例按照学生的认知规律,遵循先易后难、先具体后抽象的原则,从基础层次、应用层次、提高层次三个阶段进行实例教学。基础层次的实例应该把对象的用法渗透到一个个程序实例中,由浅入深逐渐介绍,让学生在编写程序的过程中总结对象的用法。应用层次的实例重点介绍对象的什么属性、方法和事件可以解决什么实际问题。如对象PasswordChar的属性,解决口令保密的问题;对象Alignment的属性,解决界面信息显示的对齐方式;程序运行目录的获取,解决程序文件处理采用绝对路径的弊病;程序同时运行的限制,解决同一程序同机同时运行的资源冲突;对象Change事件(对象内容发生改变触发该事件),解决程序设计的操作安全性、数据完整性验证、数据关连计算的自动同步等问题。。。。。。通过实例的分析、讲解,让学生观看、模仿、理解,启发学生程序设计思路、体悟这些知识点。提高层次的实例从选择对象的角度,分析、讲解、比较解决什么实际问题,不同对象的优点和缺点。在程序流程控制中,实例不但要体现不同流程控制的用途,更要分析流程控制分支的设计对程序效率的影响;在列表框、菜单、工具栏的实例,可以分析应用程序解决操作权限的问题;在ActiveX控件方面,实例重点分析如何利用树状控件、电子表格控件、图象控件,利用控件的MOVE方法,把隐藏的编辑对象移动到相应的电子表格的单元格,通过对象的Visable属性使其可见,并接收用户的编辑输入,设计出界面简洁、操作方便,具有视觉美感的程序界面;数组和数字字典的应用区别,数字字典解决数据量大的查询速度问题;使用数据环境(DataEnvironment)对象和SQLServer的存储过程(接受输入参数并以输出参数的形式将多个值返回至调用过程或批处理;包含执行数据库操作;的编程语句;向调用过程或批处理返回状态值,以表明成功或失败,存储过程优势有允许模块化程序设计;减少网络流量;执行更快)进行数据库应用系统开发,使数据库应用系统的开发更加直观、简洁、高效,不但提高程序运行速度,同时增强程序的可读性、可理解性和可维护性。Windows操作系统同时是一个很大的服务中心,调用其中的各种服务,可以帮应用程序达到开启视窗、描绘图形、使用周边设备等目的,由于这些函数服务的对象是应用程序,所以便称之为ApplicationProgrammingInterface,简称API函数。API说到底就是一系列的底层函数,是系统提供给用户用于进入操作系统核心,进行高级编程的途径。通过在VisualBasic应用程序中声明外部过程就能够访问WindowsAPI函数(以及其它的外部DLLs)。在声明了过程之后,调用它的方法与调用VisualBasic自己的过程相同。所以教学实例必不可少的要体现出调用API的步骤、使用API应注意的参数类型、数据类型和数据结构、声明使用范围等,以及当编程算法较复杂、或用标准的语句难以实现功能设计时,如何通过查询API函数功能,合理选择API函数解决问题。

下面以窗体及基本控件为例,与大家共同探讨这种教学方法教学内容:单选框和复选按钮、列表框、命令按钮。目的要求:掌握控件的常用属性(Name、Caption、Value、BackColor、ForeColor、FontName、FontSize、ListCount、ListIndex、List、Selected);方法(AddItem、RemoveItem、Clear);事件(Click);控件数组;IIF()函数、Choose()函数的用法;流程控制用法的复习和提高。教学重点与难点:列表框选项删除,循环流程控制的Step用法。实例设计:准备好实例设计思路,设计过程在教学中边设计边讲解。教学过程:第一步、新建一个窗体,设置一些常用的影响窗体外观(BackColor背景颜色)的属性,运行程序,讲解让学生理解这些属性。第二步、往窗体添加一个单选框,设置Name属性为OPFontName(讲解让学生理解该属性),拷贝该控件,粘贴该控件(讲解让学生理解创建控件数组的方法)。这两个控件将用来控制字体,OPFontName(0)的Caption设置为宋体、OPFontName(1)的Caption设置为黑体。重复第二步操作新增两个单选框(OPFontSize),用来控制字号,OPFontSize(0)的Caption设置为12号字、OPFontSize(1)的Caption设置为14号字。这时可以设置控件的BackColor背景颜色和ForeColor前景颜色,FontName字体、FontSize字号等改变位置、外观的属性,运行程序让学生理解这些属性的作用。点击单选框(讲解让学生理解单选框每次只能选取一个)。第三步、往窗体添加一个框架,剪切窗体中OPFontName(0)、OPFontName(1),把它们粘贴到框架中,这样OPFontName与OPFontSize就相互独立。第四步、往窗体添加两个复选框。Check1的Caption设置为加粗、Check2的Caption设置为斜体第五步、往窗体添加两个命令按钮和列表框。设置列表框的Style属性为复选,设置列表框的List选项为"项目1"、"项目2"。。。"项目9"(讲解让学生理解设置时往列表框添加选项的方法),设置控件的对齐。第六步、运行讲解:(1)分析代码,讲解采用控件数组的作用在于复用过程。(2)点击单选框“12号字”、“14号字”、“宋体”、“黑体”,讲解让学生理解单选框每次只能选取一个。如果需要多选,应该用Frame框架或图片框将单选框分组进行。(3)点击复选框,讲解让学生理解复选框可以多选。(4)选择列表框选项,点击命令按钮,讲解让学生理解点击事件(Click)的触发时机;运行时列表框添加选项的方法(AddItem)、删除一个选项的方法(RemoveItem)、删除所有选项的方法(Clear)、检测选项选中状态的属性(Selected)、选项内容的属性(List)、选项数量的属性(ListCount)、列表框其他常用属性(5)注释掉语句Fori=List1.ListCount-1To0Step–1,启用语句Fori=0ToList1.ListCount–1,运行程序,选择列表框选项,点击命令按钮,程序提示找不到列表框选项的错误。讲解让学生理解列表框ListCount、ListIndex属性的动态改变,采用递增的循环流程控制,造成当删除一个选项找不到列表框选项的错误,采用递减的循环流程控制可以解决问题。

2课程实验

要求学生以VB为开发语言、以SQL为数据库,独立完成一个功能较简单的程序设计。良好的编程风格有助增强程序的可读性、可理解性和可维护性,保证程序的质量。查阅学生的课程实验时,不但要掌握学生对知识点、对象的属性、方法和事件的理解和应用情况,同时要分析学生的编程算法、编程风格,帮助学生总结其编程风格和编程算法的优点和缺点,提高学生的编程能力和良好的编程风格。根据学生的差异,做到有的放矢,充分调动每个学生的学习积极性。激发学生的学习兴趣。

3交流答疑

以课程实验实例为交流对象,模拟毕业答辩的方式与学生进行交流,帮助学生归纳小结,理解知识、融会贯通,同时讲解一些概念性题目,以帮助学生顺利通过期末考试。鼓励优秀的学生帮助其他学生,这不但减轻教师的负担,也培养学生团结合作的精神。总结以上是个人在学习和教授VB这门课程中的一点心得,请各位同行指正、交流。

程序设计论文范文第6篇

本文对温度、湿度两个显著影响温室作物生长的参数进行深入分析研究,构建的温湿度模糊控制系统方案如图2所示。图2中,T和H分别为模糊控制系统输出的温室环境温度和湿度值;T1、H1分别为根据专家经验给出的农作物生长最佳的温度和湿度值;eT1、eH1分别为给定值与温室环境的实际测量值的偏差;ecT1、ecH1分别为温湿度偏差随时间的变化率。

2温湿度模糊控制器设计

2.1输入与输出变量的模糊化

根据温室大棚的实际状况,以温湿度偏差及其偏差变化率为输入变量,各输入变量的模糊化信息如表1所示。结合研究对象实际情况,既考虑控制规则的灵活性又兼顾简单易行。表1中,4个输入变量模糊集均取为A,A为{NB,NS,ZE,PS,PB};模糊论域均取为B,B为{-4,-3,-2,-1,0,1,2,3,4}。模糊控制器的输出控制变量为前窗、天窗、后窗、遮阳帘、通风机、加湿器和加热器。这7个变量均为开关量,只有开和关(0/1)两种状态,分别用符号u1、u2、u3、u4、u5、u6、u7表示这7个变量。

2.2隶属函数的确定

由于三角形隶属度函数在输入值变化时比正态分布或高斯型具有更高的灵活性[6],因此本研究中温湿度偏差与偏差变化率均选取三角形隶属度函数。图4为各输入变量的隶属度函数,选择的模糊集宽度为4。因为宽度过小会造成部分区间空缺,可能找不到相应的控制规则,收敛性不好;宽度过大会造成控制规则的重叠部分过多,相互间影响加大并且响应速度也变慢[7]。根据隶属度函数对输入变量量化为9个等级,其相应的隶属度赋值如表2所示。

2.3模糊控制规则的制定

模糊控制规则的形成实质上是把操作者的经验或专家的知识和经验进行凝练得到的若干条模糊控制规则[8]。经对实际温室控制系统的研究,发现温湿度间存在一定的耦合性,即当通过某一执行机构改变温度(湿度)时湿度(温度)也会发生变化,因此在制定模糊控制规则时就要渗透解耦的思想。基于此,对7种执行机构的开关状态做如下考虑:u1、u2和u3每打开一个设备降温和降湿效果增强一点,但速度较慢;u5开通后其降温和降湿速度明显比u1、u2、u3快;u4降温作用明显,对湿度基本无影响;u6主要起加湿作用,降温为次要作用;u7主要为增温作用,降湿为次要作用。研究中制定了温度与湿度之间、温度变化率与湿度变化率之间的两个模糊控制规则表,在此仅列出温度与湿度之间的模糊控制规则,如表3所示。表3中,U为u1到u7这7个变量的开关状态,开用“1”表示,关用“0”表示。

2.4反模糊化

模糊控制器输出的是模糊语言不同取值的一种组合,由于被控对象只接受一个精确的控制量,因此需要从组合中判决出一个精确的控制量,这也就是反模糊化的过程[9]。常用的判决方法有重心法、最大隶属度法和中位数法等,本研究采用重心法计算模糊控制输出的精确控制量。其具体表达式为u'=∑nj=1ωjμ(ωj)/∑nj=1μ(ωj)(1)其中,n为模糊变量个数,ωj为模糊变量,μ(ωj)是对应模糊变量的隶属度。本系统反模糊化的具体过程:首先温湿度误差或其误差变化率经量化后得到相应的量化等级,根据量化等级查询各个执行机构在控制规则表中对应的控制规则并使其激活。然后,由式(1)计算各个执行机构的输出值,计算结果等于0.5时,执行机构保持原来状态;计算结果大于0.5时,执行机构开;计算结果小于0.5时,执行机构关。基于这种思想,可建立各执行机构的模糊控制查询表,放在内存中,编写相应的PLC程序即可实现模糊控制器对执行机构的实时控制。

3温湿度模糊控制PLC程序设计

温湿度模糊控制PLC程序包括输入量的采样与模糊化程序、量化等级程序、模糊控制查询程序、执行机构控制程序和预警程序等[10],在此仅介绍有关输入采样、误差的计算和模糊控制查询的部分程序。本研究是在STEP7编程环境下完成的模糊控制程序。

3.1输入量采样和ET/EH计算程序

研究中应用的温湿度传感器的变送单元分别取0~50℃、0~100%RH,线性对应电流均为4~20mA,因此在编写PLC程序前需把温湿度的值与PLC中的数字量关系建立起来。具体过程如下:以温度为例,用I表示电流值,T表示温度值,X表示实时温度转换为PLC中的数字量值。由于0~50℃与4~20mA对应,4~20mA又与PLC中的数字量为6400~32000对应,因此可得曲线方程如式(2)与式(3)所示。根据式(4)即可计算0~50℃对应PLC内部的数字量值。如22℃对应数字量值为17664。同理,可求得湿度值与PLC中数字量的对应关系如式(5)所示。其中,H表示湿度。下面以温度为22℃和湿度为70%RH的情况编写相应的PLC程序,70%RH对应的数字量为24320。

3.2模糊控制查询程序

由反模糊化得到的模糊控制查询表实质上是一个9×9的二维数组,存在以VW200开始的81个字单元中。在此把数组的首地址指针设定为VD48,根据(VW20×9+WV18)×2即可计算偏移值,在查询表中定位并把相应值赋予WV28。

4系统实际运行测试

控制系统投入运行后,任选某一天对控制效果进行实际测试。测试时的起始温度和湿度分别为32℃和52%RH,控制设定值分别为22℃和70%RH。对温湿度采样时间间隔均为5min,根据采集数据绘制的曲线如图5所示。由图5可知30min左右时温湿度值均达到设定值,再经10min左右温湿值即达到预设的稳定状态值,达到了较满意的控制效果。控制系统达到稳态的时间可通过增减有关设备进行调节。

5结束语

温室大棚控制系统是一个具有非线性、时变和大惯性等特点的复杂系统,难以建立精确的数学模型进行控制。为此,以显著影响作物生长的温湿度为研究对象,构建了模糊控制系统方案,应用模糊控制系统理论设计了温湿度模糊控制器,编写了相应的模糊控制算法程序,并对温湿度的模糊控制效果进行了实际观测。结果表明,该系统控制过程平稳、超调量小,能够很好地实现对温室环境中温湿度的模糊控制,满足了温室作物对生长环境的要求。

程序设计论文范文第7篇

根据非等时距灰色GM(1,1)模型的构建过程,设计数据处理流程,如图1所示。利用VB编写主程序,完成程序用户界面设计,实测数据的输入,MATLAB的调用(包括等时距变换、灰色GM(1,1)模型的构建等),预测数据的输出以及预测拟合曲线与实测曲线对比图的显示等操作。VB调用MATLAB的主要程序代码如下:PublicMATLABAsObject‘在VB变量声明部分声明要调用Matlab的ActiveX对象‘在Command1_Click()中链接Matlab的ActiveX部件SetMatlab=CreateObject("Matlab.Application")‘初始化对象CallMatlab.MinimizeCommandWindow‘matlab窗口最小化g=Matlab.execute(gm)‘执行matlab命令,gm为mat_lab执行代码非等时距时间序列转换为等时距时间序列的主要程序代码如下:dtim=tim(length(tim))/(length(tim)-1);%计算平均时间间隔x0(1)=dat(1);x0(length(tim))=dat(length(tim));fori=2:length(dat)-1x1(i)=dat(i-1)+(dat(i)-dat(i-1))/(tim(i)-tim(i-1))*((i-1)*dtim+tim(1)-tim(i-1));x2(i)=dat(i)+(dat(i+1)-dat(i))/(tim(i+1)-tim(i))*((i-1)*dtim+tim(1)-tim(i));x0(i)=(x1(i)+x2(i))/2;%计算等时距时间序列end灰色GM(1,1)模型构建的主要程序代码如下:x1=cumsum(x0);%一次累加生成fori=1:length(x0)-1;B(i,1)=(-1/2)*(x1(i)+x1(i+1));B(i,2)=1;Yn(i,1)=x0(i+1);end;A=(inv(B'*B))*B'*Yn;a=A(1);u=A(2);%计算发展系数以及灰色作用量fork=1:length(x0)+T;xsum(k)=(x0(1)-u/a)*exp(-a*(tim1(k)/dtim))+u/a;xsum1(k)=(x0(1)-u/a)*exp(-a*(tim1(k)-dtim)/dtim)+u/a;end;xyc(1)=xsum(1);fork=2:length(x0)+T;xyc(k)=xsum(k)-xsum1(k);%累减还原预测数据end。

2工程实例分析

某基坑工程位于青岛市经济技术开发区,地处长江路示范居住中心地段,共分三期开发,每期工程各由4栋32~33层高层住宅、地下2层机械停车库组成,其中二期工程包含5#、6#、7#、8#楼。现以监测点J8、J10、J16、J19、J22的累计位移变化量为时间序列进行建模分析。表2为J16点的部分观测数据。选取第1~8期作为牛顿插值数据,第9~10期作为检验数据。运行程序,依次输入第1~8期的累计时间间隔和累计位移变化量,点击“计算”控件调用MATLAB进行运算,将非等时距数据序列转换为等时距序列,并在用户界面上输出等时距变换结果,然后输入第9~10期的累计时间间隔,点击“预测”控件,调用灰色GM(1,1)模型构建程序模块,计算得出第1~10期的预测数据,并进行精度检验,最终将预测数据、预测模型精度等结果显示输出在用户界面上,如图2所示。将第1~10期实测数据与预测数据进行比较分析,结果如表3所示。为方便直观显示,绘制预测拟合曲线与实测曲线,见图2。其中,实线代表实测数据,虚线代表预测数据从图2中可以看出,J16点采用非等时距灰色GM(1,1)模型模拟的拟合曲线较为平滑,与实测曲线吻合较好。对模型进行精度检验,计算得J16点的后验差比值C=0.1126,小概率误差P=1。由表1可知,利用该工程J16监测点的第1~8期累计位移变化量为时间序列所构建的灰色GM(1,1)模型,其精度等级为一级。依次以监测点J8、J10、J19、J22的同时段累计位移变化量为时间序列建立灰色GM(1,1)模型,并进行精度检验,计算结果见表4。可以看出,4个模型的精度等级均为一级。综上可知,利用该程序对表4数据进行分析,可以获得良好的变形预测结果,精度较高,充分验证了基坑变形非等时距灰色预测模型的可靠性、有效性与实用性,且程序设计界面友好、操作简便、数据处理高效,能够为基坑工程的安全评判提供可靠的数据依据,以便进行适时控制。

3结束语

通过对基坑变形非等时距灰色预测模型进行程序设计与应用分析,可得到如下结论。1)基于非等时距数据序列进行灰色预测,首先需要进行等时距变换。2)通过在VB上开发用户界面,并调用MATLBA进行运算,摆脱了仅用单一语言编程的局限性,具有高效性、直观性和准确性的特点,为非等时距基坑变形的分析预报提供了一种新的思路。3)由于模型的灰色参数是固定的,忽视了其动态变化的特点,因此随着预测期数的增加,其精度逐渐降低。如何通过增加新观测数据来不断更新灰色参数,从而提高预测精度,成为需要完善的重要问题。

程序设计论文范文第8篇

1.1理论教学

对于大多数课程而言,从宏观上将课程知识点及其关联讲授给学生非常必要,这便于学生更加系统深刻地理解所学内容。作为教材讲解C语言程序设计的知识点结构。知识点之间的关联可以层层细化,教师首先从宏观上给学生介绍C语言程序的整体组成结构。教师对涉及的知识点进行归类,共包含预处理命令、数据类型、运算符、语句和函数等5部分,从宏观上梳理C语言与程序设计课程的知识点是非常必要和重要的,这样可以避免学生“只见树木,不见森林”,最后只学到一堆零散的知识点,只有从宏观上把握各个知识点在知识体系中的位置和作用,才能学得深、记得牢。对于程序语言课程,如果仅仅介绍语法的运用,学生往往对知识点理解不深刻。我们在教学实践中的体会是:在讲解C语言语法的基础上,适当地剖析编程语言在计算机中的运行机制,会让学生的理解更加透彻。因此,我们的课堂教学方法分为如下两部分。

1)课件讲解。课件讲解包括两部分,即知识点要点总结和知识点运行机制剖析。知识点要点总结就是告诉学生该知识点如何使用;而知识点运行机制剖析则告诉学生该程序在计算机内存中的执行过程。由于绝大部分高校在开设C语言程序设计之前都会开设计算机文化基础等课程,因此学生有足够的计算机基础知识来理解C语言程序的运行机制。

2)实例演示。作为一门编程语言,C语言需要在实践中理解和掌握,因此,课堂教学中,在具体的编程环境(如VC++6.0)下演示十分必要。通过在具体的软件环境下编程,告诉学生应该做什么和不应该做什么,并总结该知识点的注意事项。相比传统的脱离编程环境,只在PPT或黑板上进行板书的教学模式,该方法的教学效果要好得多。在课堂教学中,具体的教学步骤如下:①使用PPT或者板书列出该知识点的注意要点;②在编程环境(如VC++6.0)下演示该知识点的用法,给出正确的和错误的使用方法,并进行对比;③通过幻灯片动画或Flas等形式演示程序在计算机内存中的执行过程,让学生更加深刻地理解程序的运行机制。

3)教学难点与重点——“复合知识点”。从C语言的教学内容来讲,数组、函数和指针是教学的重点章节,这些章节之间相互关联的部分又是重点中的难点,如数组和函数结合,数组名做函数参数,数组和指针结合,指向数组的指针变量,函数和指针结合,指向函数的指针变量等。在教学过程中要反复强调各个知识点的注意事项,如果基本知识点能够理解透彻,上述难点内容也就迎刃而解了。

1.2上机实践教学

在实践教学中,教师可以通过实际教学案例循序渐进地强化学生对C语言知识点的理解。上机实践的教学内容通常分为两部分:基本知识点练习和综合训练。首先通过基本知识点的练习,让学生掌握该知识点的使用,即巩固课堂所学内容;然后通过一个综合性的大作业,训练学生综合应用C语言知识点的能力,例如,通过编写“学生课程成绩统计系统”考查学生对数组、结构体、指针、函数、文件等知识的综合掌握情况。对于初学编程语言的学生,往往没有养成良好的编程习惯,出错的可能性较大,而出错之后进行调试又将耗费较长的时间,这势必对学生的学习热情产生负面影响。因此,一开始就给学生制定科学的编程步骤和规范,使学生养成良好的编程习惯,将大大减少程序出错的可能。下面是按照上述五步编写的一个完整的C语言程序,用来比较两个整数的大小。按照上述五步进行编程,经过一段时间的训练之后,学生出现语法错误的可能性大大降低,此时学生更多的精力将集中在程序算法的设计和实现上。

1.3考试形式

对于C语言程序设计的考核方式,我们采用知识点考核和编程实践相结合的方式。知识点考核偏重于C语言基本语法,用于检验学生对知识点的掌握是否全面,此项考核约占总成绩的40%;编程实践考核用于检验学生的实际动手能力,学生将在规定的时间内根据题目在机器上编程,此项考核约占总成绩的60%。为了实现知识点的考核,我们将考试与计算机二级C语言上机考试紧密结合,采用题库平台进行上机考试,学生直接在机器上答题并提交,知识点考核多采取客观题,如填空题、程序修改题以及读程序题等,编程题在实战编程中考核。C语言程序设计课程的重要特点就是实践性强,学习该课程的目的就是为了编写程序。因此从考试的角度讲,进行编程实践是最合适的方式,通过上机编程来考核学生的学习情况也是最公正和客观的方式。

2C语言程序设计教学实践结果分析

中国矿业大学(北京)每年都有40多个班级同时开设C语言程序设计课程,因此该课程教学质量的高低将直接影响全校理工科学生对C语言的理解和掌握。中国矿业大学(北京)C语言程序设计教学团队经过长期的探索总结出一套行之有效的C语言教学方法,我们将上述方法在学校越崎实验班中进行了试点。如图2所示,采用上述教学法的越崎实验班的C语言程序设计课程考试成绩要明显好于其他班级,其中90分以上的学生占10.7%,80分以上的学生占总人数的53.6%。另外,学生的学习积极性比采用上述方法前得到明显提高,很多学生都对计算机编程产生了浓厚兴趣,实践证明我们提出的上述方法是行之有效的。

3结语

C语言程序设计教学团队在长期的教学实践中探索出的这套教学方法被证明是行之有效的,它能够极大地提高学生的学习兴趣,不但让学生学得会、记得牢,而且能够举一反三,把该方法应用到其他编程语言的学习中。长期的教学实践使我们深刻地认识到,教学方法的好坏对提高教学质量有直接和重要的影响。我们团队提出的这套教学方法是对C语言程序设计教学方法的初步尝试,希望能够对高等院校C语言程序设计教学方法的研究起到抛砖引玉的作用。

程序设计论文范文第9篇

程序设计课程具有很强的实践性,在培养学生学会自己分析问题、使用计算机解决问题能力的同时提倡学生创新意识和创新能力的培养,主要采用的教学模式有项目教学法、案例分析法、任务驱动法等。

1.1《VB程序设计》课程中项目的设计

1.1.1章节项目

在整个教学过程当中,采用了“大项目、小案例、任务驱动不断”的教学模式,设计并选取与生活相联系的合理的能够调动学生学习积极性的项目。针对课程教学的最终目的,设计了一个比较完整的图书馆管理系统综合项目,但是这门课程知识点较多,要想完成这个综合项目,学生首先必须熟悉VB开发环境、掌握VB程序设计的基本概念和基础知识、各章节的知识点内容。为了配合整个课程最后综合项目的完成,在具体的教学中按照教学内容由易到难,针对教学中的重点和难点安排了13个章节项目,帮助学生更好地学习教材各章节中的知识点。项目一:由现实生活中的汉诺塔游戏、交换两个杯子中饮料的问题,引入一个利用VB程序解决两幅图片对换位置的具体案例,使学生熟悉VB集成开发环境以及各种窗口的使用、掌握常用控件对象的建立以及布局、利用VB开发简单应用程序的步骤、并初步引入程序设计思想,引导学生思考两数互换的问题,使学生通过观察、思考、总结得出两数互换的问题和两幅图片互换位置是一类问题。项目二:编写一程序,在屏幕上显示“欢迎来到VB世界!”,并输入自己的名字。使学生熟悉VB编程四部曲———界面设计、相关对象的属性设置、相关对象的代码编写、调试运行,尤其注意程序的调试过程。项目三:设计一个华氏温度与摄氏温度之间转换的程序。通过这个项目熟悉VB的数据类型及其运算,掌握VB的常用标准函数、变量以及常量的使用等语法知识点。项目四:利用输入函数输入一元二次方程的系数a、b、c,编写程序计算一元二次方程的两个实根或虚根,用输出语句输出结果。熟悉常用的输入输出控件、掌握Print方法、Inputbox()函数、Msgbox()函数和Msgbox过程的使用方法。项目五:设计一个账号和密码的输入检验程序。规范整理英文文章,即对输入的任意大小写的英文文章进行整理,规则是:所有句子开头应为大写字目(句子是以符号“?”、“.”、“!”作为结束符的),其他都是小写字母。使学生熟练掌握程序三大结构中的选择和循环结构。项目六:对一个班级的学生成绩进行输入统计,找出所有成绩中的最高分和最低分、全班成绩的平均分等。使学生掌握数组的使用。项目七:编写一个函数,在已知的字符串中找出最长的单词。假定已知字符串中只含有字符和空格,空格用来分隔不同的单词。通过该项目的学习使学生掌握过程程序的设计、实参、形参等基本概念。项目八:常用控件的使用。设计一个类似Win-dows记事本的应用程序,并完善其各项功能。通过该项目使学生掌握菜单、对话框和多重窗体程序设计。项目九:导入手机号码文件,编写一个手机选号程序,比如说选出手机尾号后四位相同的手机号码等。要求学生通过学习,掌握文件的相关操作,利用文件能够建立简单的应用程序。项目十:建立本班同学信息库,具体包括:学号、姓名、性别、出生日期、寝室电话、手机号码,并用数据控件及绑定控件实现对同学信息的浏览,并实现按姓名查询相关人员的基本信息。通过该项目掌握VB数据库的相关技术。项目十一:设计多文档应用程序,熟悉VB高级界面的设计。项目十二:用MMControl控件设计一个录音机,用API函数设计一个用户化的CD播放器。通过学习,使学生掌握VB多媒体程序设计。

1.1.2阶段项目

为了使整个学期的教学内容具有连贯性,糅合各章节零散的知识点,使教学实践具有可操作性,将整个学期的教学实践分成了三个阶段,每个阶段选用一个打破章节限制的阶段项目,使学生对所学知识内容有一个阶段性较完整的认识。这三个阶段依次是实践的开始阶段、实践的展开阶段、实践的结束阶段,分别对应阶段项目一、阶段项目二和阶段项目三。每个阶段中抓住关键教学环节,按照“大项目、小案例、任务驱动不断”的具体教学流程组织教学。阶段项目一:选用简单的项目,如蝴蝶飞舞、字幕滚动的项目。由于是初次接触计算机编程语言,所以对于非计算机专业的学生来说,这门课程的入门学习很关键,如果按照常规授课方法,依据书本上的章节内容安排依次讲授VB语言发展史、VB语言特点以及编程环境等内容的话,学生很难接受,往往是听得稀里糊涂,不知道学习VB究竟有什么实际作用,从而会产生畏难情绪,最终导致学生对VB知识学习失去兴趣和信心。为消除初学者的畏难情绪,第一阶段主要以激发学生的学习兴趣为主,让学生对VB有一个直观的认识,同时让学生在轻松的气氛中了解VB的编程环境和编程步骤,以及VB面向对象、事件驱动的编程机制。万事开头难,一旦学生对VB产生了兴趣,就有利于后续知识的学习。阶段项目二:难度稍微加大,选用计算器项目。通过本项目,一方面让学生理解控件数组的含义和设计使用方法,以及简单下拉菜单、常用数学函数的使用、过程函数的编写等,进一步加强学生对概念的理解。另一方面让学生注意可视化界面的设计,因为友好美观的人机交互界面,给人赏心悦目感觉的同时是软件的门面。阶段项目三:选用综合项目———学生信息管理系统。通过这个项目让学生真正了解掌握软件的开发过程。虽然这个项目比较难,但是有了前面知识的铺垫,会变得容易接受理解,也是对前面所学知识点的一次巩固和进一步更深入的理解,更是对前面知识的综合应用,让学生由浅入深、由易到难,逐步领会掌握编程的基本思想、基本方法和开发一个软件的完整步骤。三个阶段通过运用“大项目、小案例”,每个阶段让学生带着具体任务去学习,把枯燥的理论知识与生动形象的教学方式相结合,以清晰简明的表达方式深入浅出地向学生传授VB程序设计语言课程的知识,使学生在完成具体任务的实践过程中不断加深对面向对象程序设计思想和知识的理解。

1.2《VB程序设计》课程中的案例选取

有了已经准备好的各模块的项目,并展示给学生,学生有了兴趣后,就会想这些项目是怎么完成的,任务就落到各个模块项目里面具体的案例上了。由于VB程序设计授课内容多,授课时间紧张,按各知识模块划分选取项目后,在每个项目里面,按项目选取具体案例或是进行设计各项目的各功能模块,各功能模块实际就是一个个案例。在教学过程中应循序渐进,可以在原有案例的基础上逐步改变或增加一些条件,将应用进行引申,启发学生思维,让学生对知识点的理解更透彻,掌握各知识点之间的联系,提高学生发现问题、解决问题的能力,并在教学中兼顾学生生活经验与知识趣味性,达到事半功倍的教学效果。

1.3任务设计

围绕每一知识模块的教学内容、教学知识点,设计相关的项目,并在各个项目中采用了系列案例以及完成各功能模块的案例,为了让学生更加熟练、更好地掌握教学内容,在各知识模块的学习中设置学习情景,给学生留有感兴趣的任务,让学生去完成。同时根据各知识模块提出了单元任务,单元任务设置两个层次———基本任务和提高任务。由于学生自身水平有差异,对于基础好、学有余力的学生,要求他们不但要完成基本任务,还要完成提高任务;对于大多数学生,只要求他们完成基本任务。由于时间的限制,可以让学生在课余时间分析任务,在上机实践课以及课余时间去完成任务,最后做任务的总结。有了兴趣和任务的驱使,学生为了完成任务,就会利用各种方式和手段积极主动地去解决问题,他们会通过查阅相关书本、浏览网络资源、同学之间互相协作等方式解决问题,充分调动了学生的主观能动性,在完成任务的过程中学生分析问题、解决问题、实际开发应用程序的能力得到了锻炼,为学生知识的创新奠定良好的基础,同时知识面也更广、更大了。学生不会再觉得教学只是教师一个人的“独角戏”,而是教师和学生的“二人转”。在相互的配合以及友好和谐的师生关系中,教学顺利完成的同时学生个人的知识库也得到了构建。

2实施方法

在具体的教学过程中,首先为学生展示完成的项目作品,吸引住学生的眼睛;其次讲解项目中系列案例,在讲解的过程中不断拓展项目,并穿插讲授项目及项目案例用到的重要理论知识内容;最后用引导的方式,给学生留下任务,让学生进行模仿或拓展项目,整个阶段完成后,让学生简要撰写阶段学习报告,对学生的学习情况进行阶段测试、总结分析教学效果,进行教学反思和评价。“大项目、小案例、任务驱动不断”教学在VB教学实施中的具体教学流程如下图所示:《VB程序设计》课程整个教学过程就是按照划分的各个知识模块采用“大项目、小案例、任务驱动不断”的教学模式进行教学的,但需要注意的是并不是所有的内容都适宜采用项目、案例、任务驱动教学,还是要根据实际教学内容和具体情况,结合传统教学的优点,采用多种教学方法和教学手段,将教学的科学性与教学的艺术性相糅合,始终以学生为中心、教师为主导,让学生积极主动地参与到学习活动当中,自主地去构建个人知识,实现知识的迁移,只有这样才能取得更好地教学效果。

程序设计论文范文第10篇

1、设计原理及内容

1.1设计原理

为实现嵌入式田间图像视频采集,主控芯片选择使用比较广泛的S3C2440芯片,摄像头采用芯片为中星微ZC301的USB摄像头,把采集到的植物视频信息传输到主控芯片中。主控芯片包括把采集的视频信息显示到LED触摸屏上,还要把采集到的信息传输到PC机中。大田视频采集模块总体结构如图1所示。图1大田视频采集模块总体结构图软件方面包括USB摄像头的驱动程序、视频采集程序、LED实时显示程序网络传输程序的设计、调试、烧写等操作。

1.2主要研究的内容

1)对ARM嵌入式Linux的内核,Bootloader、YAFFS根文件系统的制作和移植,即完成软件平台的搭建;2)中星微ZC301的USB摄像头驱动程序的设计;3)模块的视频采集程序的设计;4)设计驱动LED,来显示采集到视频信息的程序;5)设计TCP网络传输程序,把视频信息发送出去;6)把采集到的视频图像显示到PC虚拟机上。

2、总体设计

2.1平台设计

2.1.1 BootLoader制作和移植首先按下任意键,使ARM9的程序运行停止在如图2所示的在DNW软件上出现主选择菜单界面;接着选择下载到flash,即选择‘1’,使用USB下载;在DNW软件上出现有关闪存的各个存储区间的情况。在上一步完成的基础上,再选择FLb.bin要烧写到NAND闪存中的位置,即选择‘0’,烧写到NAND闪存中的boot的位置;然后在DNW软件界面下执行配置选项中的操作执行指令,来进行下载地址、COM口和波特率设置;在DNW软件上点击USBPort选项中的传输操作,找到要烧写FLb.bin的位置,选中FLb.bin文件;文件传输完成后即完成了BootLoader的移植。

2.1.2 系统内核剪裁、制作和移植Linux内核的移植和引导加载程序的烧写过程几乎是相同的,添加内核的映像文件和BootLoader的移植都是相同的。也就是说,内核是下载到NAND闪存的kernel位置;内核移植时会出现移植进度条;移植完成后出现的和BootLoader的移植出现的提示一样。到此,Linux内核的移植就完成了。Linux内核配置对话框如图3所示。

2.1.3 FAFFS根文件系统的创建和烧写过程1)使用目录创造命令创造根文件系统的目录,并创建在usr目录下的bin、dev、etc等目录,把根文件系统的框架搭建起来;2)创造根文件系统的设备文件,进入到dev目录下使用创造命令来完成;3)安装etc,进入到etc目录下进行解压etc.tar.gz;4)进入到内核目录下使用模块编译命令来编制内核模块;5)使用模块安装命令对模块进行安装;6)使用配置命令对其进行配置,编译命令进行编译,安装命令进行安装;7)进入到根文件目录下使用ln-s命令来进行链接,重新再编译内核;8)将编译生成的内核映像文件通过USB传输到开发板的根文件系统中。

2.2软件设计

2.2.1 摄像头驱动程序设计

实现USB设备的即插即用功能的函数是摄像头探测函数,函数名称是sp_probe。该驱动程序中的数据传输模块使用takelet来实现对数据的同步快速传递,此函数对图像数据进行解码使用的是spcode.c程序。数据传输模块函数的具体名称是sp5_init_isoc,并且在sp5_open函数中挂有该函数的入口点。打开设备是同步传输数据开始的标志,这里实现数据传输的函数是sp_m_data,它把数据传送给驱动程序,驱动程序对数据的访问使用的是轮询法。Linux中的USB器件通过系统的USB层来操作下层硬件,流程图如图4所示。

2.2.2 模块视频采集程序

本系统的视频采集程序是基于V4L开发的,主要实现图像采集设备的初始化、读取和关闭等,基本操作流程如图5所示。

3、大田视频采集模块的安装与调试

3.1大田视频采集模块安装执行该命令要在该软件文件所在的目录下,将视频采集模块和PC虚拟机连接起来。这样在PC虚拟机上就会显示出视频图像,如图6所示。

3.2大田视频采集模块现场调试在齐齐哈尔嫩江大桥以北的农田里,对种植的土豆进行试验。模块调试如图7所示。图7模块调试一触摸屏LED和虚拟机显示图像不清晰,是因为帧的大小等参数设置得小,修改后图像较原来清晰些;触屏和虚拟机图像显示不连贯是因为其显示程序中延时设置太大,以及内核需要优化小点。大田视频采集模块的对农作物视频采集稳定,触屏的视频图像显示非常清晰,且以非常高的质量把采集到的视频图像传输到了PC机上(见图8),在其上显示的视频图像清晰连贯,能对农作物进行非常有效的实时监测;操作人员能够从其中迅速获得农作物的自身生长发育情况和是否有病虫害等信息,而且大田的农作物视频信息采集受阳光的影响也很小。本次试验非常成功。图8PC机显示的视频图像

4、结论

本文将嵌入式技术和USB摄像头组合在一起,用于农业的生产视频监控中。本着成本低、体型小、功率消耗小和实用的目的,采用USB摄像头和嵌入式系统来构建大田视频采集模块。实验结果证明,系统采集、上传及显示效果良好,达到了提高农作物产量、降低成本的目的。

上一篇:听力教学论文范文 下一篇:广告创意设计论文范文