程序设计答题纸祁琴淑华_第1页
程序设计答题纸祁琴淑华_第2页
程序设计答题纸祁琴淑华_第3页
程序设计答题纸祁琴淑华_第4页
程序设计答题纸祁琴淑华_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、武汉工程大学(硕、博士)研究生试卷(第 页)武 汉 工 程 大 学(硕、博士)研究生试卷本考试课程名称 程序设计基础 考 试 考 查 学 科 专 业 控制工程 学 号 201504016 姓 名 定 康 题目序号12345678910总计评卷老师各题分数一、C语言基础知识题(10分)(1)写出C语言的数据类型,并对其进行介绍。答:C语言包括:基本类型,构造类型,指针类型,空类型void 四种。其中,基本类型分为整形,字符浮点型,枚举型四种类型。构造类型分为数组、结构体、共用体三种类型。(2)写出C语言的运算符号与逻辑符号,并结合课堂讲述对其功能进行描述。C语言运算符号:1.算数运算符:用于各类

2、数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(+)、自减(-)共七种;关系运算符:用于比较运算。包括大于(>)、小于(<)、等于(=)、 大于等于(>=);逻辑运算符:用于逻辑运算。包括与(&&)、或(|)、非(!)三种;位操作运算符:参与运算的量,按二进制位进行运算。包括位与(&)、位或(|)、位非()、位异或()、左移(<<)、右移(>>)六种;赋值运算符:用于赋值运算,分为简单赋值(=)、复合算术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,=,>&g

3、t;=,<<=)三类共十一种;条件运算符:这是一个三目运算符,用于条件求值(?:);逗号运算符:用于把若干表达式组合成一个表达式(,);指针运算符:用于取内容(*)和取地址(&)二种运算;求字节数运算符:用于计算数据类型所占的字节数(sizeof);特殊运算符:有括号(),下标,成员(,.)等几种。C语言逻辑符号:逻辑非:! 1&&1=1,0&&1=0(1为真,0为假)逻辑或:| 1&&0=1,0&&0=0(1为真,0为假)取反: 如对11010 取反后为00101位与:& 位与:&&

4、如对11010和10101 位与后为10000就是0&1=1,1&1=1 0 与0或1位与都为0位或:| 如对11010和10101 位或后为11111就是0|0=1,0|1=1 1 与0或1位或都为1位异或: 如对11010和10101 位异或后为10000就是0|0=1,0|1=1,俩个相同则为1,不同则为0二、VHDL语言基础知识题(15分)(1)写出VHDL语言的程序结构定义,包括:库、实体、结构体。答:VHDL语言设计的基本单元及其构成:实体和构造体。一个完整的VHDL语言程序包含5个部分:实体,构造体,配置,包集合,库。实体:描述所设计的系统的外部接口信号;构造体:

5、描述系统内部的结构和行为;配置:用于从库中选取所需要单元来组成系统设计的不同版本;包集合:存放各种设计模块都能共享的数据类型、常熟和子程序等;库:存放已经编译的实体、构造体、包集合和配置。实体说明:ENTITY实体名IS,类属参数说明,端口说明,END实体名。库是经编译后的数据的集合,它存放包集合定义、实体定义和配置定义。结构体具体指明了该设计实体的行为,定义了该设计实体的功能,规定了该设计实体的数据流程,指派了实体中内部元件的连接关系。(2)写出VHDL语言的基本语法特点,包括:标识符、数据对象、数据类型,运算符等。答:VHDL语言作为一种标准的硬件描述语言,具有结构严谨、描述能力强的特点,

6、由于VHDL语言来源于C、Fortran等计算机高级语言,在VHDL语言中保留了部分语言的原语句,如if语句、子程序和函数等,便于阅读和应用。具体特点如下:1. 支持从系统级到门级电路的描述,既支持自底向上(botton-up)的设计也支持从顶向下(top-down)的设计,同时也支持结构、行为和数据流三种形式的混合描述。2. VHDL的设计单元的基本组成部分是实体和结构体,实体包括设计系统单元的输入和输出端口信息,结构体描述设计单元的组成和行为,便于各模块之间数据传送。利用单元、块、过程和函数等语句,用结构化层次化的描述方法,使复杂电路的设计更加简便。采用包的概念,便于标准设计文档资料的保存

7、和广泛使用。3. VHDL语言有常数、信号和变量三种数据对象,每一个数据对象都要指定数据类型,VHDL的数据类型丰富,有数值数据类型和逻辑数据类型,有位型和位向量型。既支持预定义的数据类型,又支持自定义的数据类型,其定义的数据类型具有明确的物理意义,VHDL是强类型语言。4. 数字系统有组合电路和时序电路,时序电路又分为同步和异步,电路的动作行为有并行和串行动作,VHDL语言常用语句分为并行语句和顺序语句,完全能够描述复杂的电路结构和行为状态。标识符:标识符是程序员为了书写程序所规定的一些词,用来表示常数、变量、信号、子程序、结构体和实体等名称。VHDL基本的标识符组成的规则如下:1. 标识符

8、由26个英文字母、数字0,1,2.9及下划线“_”组成;2. 标识符必须是以英文字母开头;3. 标识符中不能有两个连续的下划线“_”,标识符的最后一个字符不能是下划线;4. 标识符中的英文字母不区分大小写;5. 标识符字符最长可以是32个字符;运算符:VHDL语言的表达式也是由运算符和操作数组成的。VHDL标准预定义了四种运算符,即逻辑运算符、算术运算符、关系运算符、移位运算符和连接运算符,并且定义了与运算符相应的操作数的数据类型。各种运算符之间是有优先级的。(3)对VHDL语言的顺序语句和并行语句进行介绍。顺序语句用来实现模型的算法描述。顺序语句是相对于并行语句而言的,其特点是每一条顺序语句

9、的执行(指仿真执行)顺序是与它们的书写顺序基本一致的。顺序语句只能出现在进程(PROCESS)、过程(PROCEDURE)、函数(FUNCTION)中,其它都是并行语句。一个进程是由一系列顺序语句构成的,而进程本身属并行语句。也就是说,在同一设计实体中,所有的进程是并行执行的,每个进程内部是顺序执行的。顺序语句有:赋值语句、流程控制语句、等待语句、子程序调用语句、返回语句、空操作语句。并行语句用来表示各模型算法描述之间的连接关系。这些语句从多侧面完整地描述数字系统的硬件结构和基本逻辑功能,其中包括通信的方式、信号的赋值、多层次的元件例化以及系统行为等。并行语句有:并行信号赋值语句、条件信号赋值

10、语句、块语句、进程语句、元件例化语句、生成语句、并行过程调用语句。三、简答题(40分)1) 进行变量定义的过程中,需要注意哪些问题。变量名不能使c语言中的关键字,要遵循c语言变量声明的规则变量是指在程序的运行过程中随时可以发生变化的量。变量是程序中数据的临时存放场所。在代码中可以只使用一个变量,也可以使用多个变量,变量中可以存放单词、数值、日期以及属性。由于变量让你能够把程序中准备使用的每一段数据都赋给一个简短、易于记忆的名字,因此它们十分有用。变量可以保存程序运行时用户输入的数据(如使用InputBox函数在屏幕上显示一个对话框,然后把用户键入的文本保存到变量中)、特定运算的结果以及要在窗体

11、上显示的一段数据等。简而言之,变量是用于跟踪几乎所有类型信息的简单工具。变量有两种类型:属性变量和用户自己建立的变量。用户也可以创建自己的变量,以便存放程序执行过程中的临时数据或结果数据等等。在程序中,这样的变量是非常需要的。2) 看门狗芯片的工作原理及其在程序中的具体使用方法。 看门狗就是一个用独立时钟源提供的脉冲进行累加技术的计数器,无需任何外部元件。独立的RC时钟信号源是指RC振荡器与OSC1(ULKIIN)引脚的外接RC振荡器,OSC1和OSC2外接晶体振荡器/陶瓷谐振器构成的单片机系统时钟是分离的。这就意味着,即使单片机进入系统时钟停振的睡眠状态,监视定时器WDT仍然能够进行。在单片

12、机执行程序期间,一次看门狗WDT超时溢出,将使单片机产生复位操作(WDT复位)。如果单片机处于睡眠状态,一次看门狗WDT超时溢出将使单片机被唤醒,恢复正常运行状态,并且继续执行在进入睡眠之前被搁置的程序(WDT唤醒)。每次看门狗超时溢出,都会使得状态寄存器STATUS中的T0位被清0,以记录曾经发生的这次看门狗溢出事件,供作程序查询判断用。即当WDTE=0时,看门狗WDT将被永久禁止;当WDTE=1时,看门狗WDT将被永久启用。就是说,只要WDTE被定义成1,以后在用户程序中将再也无法禁止看门狗的运行。若想不让看门狗WDT发生超时溢出,在用户程序中只能不停地、周期性地将看门狗计数器清0,使它不

13、会因计数到超过最大值而溢出。看门狗计时器的计时周期取决于独立RC振荡源的频率和计时器的宽度,同时在一定程度上收到工作电压、环境温度、制作工艺等因素的影响。另外,看门狗的超时周期还可以借助于分频器以及分频器的分频比,在一定范围内改变和延长。分频器是否配置给看门狗使用,可以通过用户程序定义选项寄存器OPTION KEG的PSA位进行设置。3) I2C芯片是如何工作,在控制系统中起什么作用。1.I2C总线由数据线SDA和时钟线SCL两条线构成通信线路,既可发送数据,也可接收数据。在CPU与被控IC之间、IC与IC之间都可进行双向传送,最高传送速率为400kbps,各种被控器件均并联在总线上,但每个器

14、件都有唯一的地址。在信息传输过程中,I2C总线上并联的每一个器件既是被控器(或主控器),又是发送器(或接收器),这取决于它所要完成的功能。CPU发出的控制信号分为地址码和数据码两部分:地址码用来选址,即接通需要控制的电路;数据码是通信的内容,这样各IC控制电路虽然挂在同一条总线上,却彼此独立。2.总线上各器件都采用漏极开路结构与总线相连,因此SCL和SDA均需接上拉电阻,总线在空闲状态下均保持高电平,连到总线上的任一器件输出的低电平,都将使总线的信号变低,即各器件的SDA及SCL都是线“与”关系。I2C总线支持多主和主从两种工作方式,通常为主从工作方式。在主从工作方式中,系统中只有一个主器件(

15、单片机),其他器件都是具有I2C总线的外围从器件。在主从工作方式中,主器件启动数据的发送(发出启动信号),产生时钟信号,发出停止信号。3. I2C数据传输的通信格式。4. I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟信号为低电平期间,数据线上的高电平或低电平状态才允许变化。5. 在利用I2C总线进行一次数据传输时,首先由主机发出启动信号,启动I2C总线。在SCL为高电平期间,SDA出现下降沿则为启动信号。此时,具有I2C总线接口的从器件会检测到该信号。6. 主机发送启动信号时,再发出寻址信号。器件地址有7位和10位两种。寻址信号由一个字节构成,高7位为

16、地址位,最低位为方向位,用以表明主机与从器件的数据传送方向。方向位为0,表明主机接下来对从器件进行写操作;方向位为1,表明主机接下来对从器件进行读操作。主机发送地址时,总线上的每个从机都将这7位地址码与自己的地址进行比较,如果相同,则认为自己正被主机寻址,根据R/W位将自己确定为发送器或接收器。从机的地址由固定部分和可编程部分组成。在一个系统种可能希望接入多个相同的从机,从机地址中可编程部分决定了可接入总线该类器件的最大数目。7. I2C总线协议规定,每传送一个字节数据(含地址及命令字)后,都要有一个应答信号,以确定数据传送是否被对方收到。应答信号由接收设备产生,在SCL信号为高电平期间,接收

17、设备将SDA拉为低电平,表示数据传输正确,产生应答。8. 主机发送寻址信号并得到从器件应答后,便可进行数据传输,每次一个字节,但每次传输都应在得到应答信号后再进行下一字节传送。9. 当主机为接收设备时,主机对最后一个字节不应答,以向发送设备表示数据传送结束。10. 在全部数据传送完毕后,主机发送停止信号,即在SCL为高电平期间,SDA上产生一上升沿信号。4) 定值如何进行储存和读取,在程序编写中,有哪些问题需要加以注意。C语言中常量分为两种,一种是简单的常量,例如:1 2 3 4,c等等。另一种是复杂的常量,例如hello等字符串常量。之所以区分这两种常量是因为其存储方式有所不同。对于一个简单

18、的常量来讲,它随着指令一起存储,也就是说简单的变量存储在长须的代码段里。原因很简单,以为简单变量的长度是固定的。对于一个整形数据来说,其最大长度不过4字节,所以常量随着指令存储不会因为代码段过大,还可以加快取值速度,提高程序的效率。但是对于字符串这种复杂的常量而言,其长度不定,一个字符串可能从1字节到1024字节不等,如果将字符串存储在代码段里,就会导致代码段很大,不利于处理器进行代码读入缓冲处理,大大影响程序的执行效率。C语言的例子做参考:int *p; /* 定义的是变量 */int const *p; /* 定义的就是常量 */int * const p; /* 定义的还是常量 */在上

19、面定义的两个常量的句子中,都符合常量的定义,但是其值是有变化的。前者是表示定义的“指针常量”所指向的整数是不变的,在初始化时,指针变量假如指向地址为1000的变量a,这个a的值是固定不变的,但是指针常量p的值,即地址值可以向上向下移动指向不同的变量。这就是与常量概念相违背。后者是表示指针常量的地址值不变的,但是他所指向的整数是可以变化的,同样与上述的定义相违背。C语言中,常量有以下五种:整型常量 实型常量 字符常量 字符串常量 符号常量。在程序编写时,要注意各常量之间的区别,注意甄别。5) 16位处理器中,对于10位AD芯片的采样数据,如何进行符号位扩展 在16位处理器中,对于10位AD采样数

20、据,即前6位为空数字,最高位为符号位。例如:采样数据为:0000 1010 0101 1101,后十位即为采样到的数据,最高位为符号位,进行符号位扩展,即对最高位的0或1进行扩展。6) AD采样中的通道比例系数如何确定,该系数在程序计算中如何使用。AD采样中,通道的比例系数是根据系统规定的电压或电流进行设定的,例如:限定电压为3V,录入电压为1V,那么通道的比例系数则不可以超过3,程序中应对其作出规定,输出时,所采用比例系数不可超过3.7) 双缓冲区是如何进行设置和操作,并编写20点的傅里叶变换程序。程序设计中, 设置两个缓冲区,假设分为A和B。A、B都具有可读和可写功能。对A而言,当可写写满

21、时,则可写关闭(即为0),则此时A只可读(即为1),需要继续写入,则可向B中写入。void FFT(float XrN,float XiN)int S,B;int m,j,k;float X,Y;finv(N,Xr,Xi);for(m=1;m<=Mun;m+)B=(int)(pow(2,m-1)+0.5);for(j=0;j<B;j+)S=j*(int)(pow(2,Mum-m)+0.5);for(k=j;k<=N-1;k+=(int)(pow(2,m)+0.5);X=Xrk+B*cos_tabS+Xik+B*sin_tabS;Y=Xik+B*cos_tabS-Xrk+B*s

22、in_tabS;Xrk+B=Xrk-X;Xik+B=Xik-Y;Xrk=Xrk+X; Xik=Xik+Y;8) 利用NVRAM对事件记录进行储存,需要如何规划储存空间,需要储存哪些关键信息,事件记录在何时执行,是怎样的操作流程。 闪存就如同其名字一样,写入前删除数据进行初始化。具体说就是从所有浮动栅中导出电子。即将所有数据归“1”。写入时只有数据为0时才进行写入,数据为1时则什么也不做。写入0时,向栅电极和漏极施加高电压,增加在源极和漏极之间传导的电子能量。这样一来,电子就会突破氧化膜绝缘体,进入浮动栅。读取数据时,向栅电极施加一定的电压,电流大为1,电流小则为0。浮动栅没有电子的状

23、态(数据为1)下,在栅电极施加电压的状态时向漏极施加电压,源极和漏极之间由于大量电子的移动,就会产生电流。而在浮动栅有电子的状态(数据为0)下,沟道中传导的电子就会减少。因为施加在栅电极的电压被浮动栅电子吸收后,很难对沟道产生影响。四、综合编程题(35分)(1)结合课堂讲授,绘制微机控制系统的整体结构图,并对其中各部分电路的功能进行描述。(15分)在你所熟悉的一款MCU或DSP开发平台上,建立项目,并编写按键输入与显示输出程序。要求:按键有加,减,清零,复位4个按键,显示部分可以是LED或者LCD。复位键按下时,显示数字5;清零键按下时,显示0;加与减按键每按一次,显示数字对应增加或减少1。#include<reg52.h>#define uint unsigned int#define uchar unsigned charsbit key1=P34;sbit key2=P35;sbit key3=P36;sbit key4=P37;sbit dula=P26;sbit wela=P27;uchar num;uchar code table=0x3f,0x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论