计算机硬件习题解答.docx
《计算机硬件习题解答.docx》由会员分享,可在线阅读,更多相关《计算机硬件习题解答.docx(50页珍藏版)》请在冰豆网上搜索。
计算机硬件习题解答
1.单片机硬件设计需要考虑哪些方面的问题?
答:
需要考虑两方面内容,一个是系统结构选择,另一个是可靠性设计,其中可靠性设计还要考虑到采用抗干扰措施、提高元器件可靠性和采用的容错技术。
2.为保证单片机系统的容错性能,系统中加入WatchDog,请简述WatchDog的工作原理。
答:
在系统运行以后也就启动了看门狗的计数器,看门狗就开始自动计数,如果到了一定的时间还不去清看门狗,那么看门狗计数器会溢出从而引起看门狗中断,造成系统复位。
3.单片机主程序与中断服务程序之间的关系如何?
答:
单片机中断响应可以分为以下几个步骤:
1、停止主程序运行。
当前指令执行完后立即终止现行程序的运行。
2、保护断点。
把程序计数器PC的当前值压入堆栈,保存终止的地址(即断点地址),以便从中断服务程序返回时能继续执行该程序,3、寻找中断入口。
根据5个不同的中断源所产生的中断,查找5个不同的入口地址。
4、执行中断处理程序。
5、中断返回。
执行完中断处理程序后,就从中断处返回到主程序,继续往下执行。
4.回答什么是小系统、紧凑型系统和大系统。
答:
紧凑型系统是指由于仅扩展了少量的外部存储器和外部接口,仅需P0口作为分时复用的地址和数据总线即可;那些需要为了扩展更大存储器以及外部接口的而额外增加了P2口作为地址高8位地址总线的扩展方式,我们称之为大系统的扩展方式。
而介于他们之间的我们称之为小系统。
5.单片机程序设计的特点是什么?
答:
可以参考单片机汇编语言的特点和C51的编程特点进行解答。
6.程序设计时分解模块的原则是什么
答:
分解模块的原则是简单性、独立性和完整性,即:
●模块具有单一的入口和出口;
●模块不宜过大,应让模块具有单一功能;
●模块和外接联系仅限于入口参数和出口参数,内部结构和外界无关。
这样各个模块分别进行设计和调试就比较容易实现。
7.指出下列各项是否为C51的常量?
若是指出其类型
E-4A423.32E310030.1
答:
E-4非法;A423非法;.32E31实型常量;003整型常量;0.1实型常量。
8.使用C51语言编制四个LED组成的流水灯的程序。
答:
请参考8个流水灯的程序自行设计:
#include
#include
void delayms(unsigned char ms)
// 延时子程序
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}
main()
{
unsigned char LED;
LED = 0xfe;
P0 = LED;
while
(1)
{
delayms(250);
LED = _crol_(LED,1); //循环右移1位,点亮下一个LED
P0 = LED;
}
}
9.请分别定义下列数组
●外部RAM中255个元素的无符号字符数组temp;
●内部RAM中16个元素的无符号数组d_buf;
●temp初始化为0,d_buf初始化为0;
●内部RAM中定义指针变量ptr,初始值指向temp[0]。
答:
●外部RAM中255个元素的无符号字符数组temp;
unsignedcharxdatatemp[255]
●内部RAM中16个元素的无符号数组d_buf;
unsignedcharidatad_buf[16]
●temp初始化为0,d_buf初始化为0;
temp[255]={0};
d_buf[16]={0};
●内部RAM中定义指针变量ptr,初始值指向temp[0]。
unsignedcharxdataidata*ptr={0};
10.简单概述KeilC与Proteus连接调试的设计方法是什么,思考文件Tools.ini的作用是什么?
答:
1、假若KeilC与Proteus均已正确安装在C:
\ProgramFiles的目录里,把C:
\ProgramFiles\LabcenterElectronics\Proteus6Professional\MODELS\VDM51.dll复制到C:
\ProgramFiles\keilC\C51\BIN目录中。
2、用记事本打开C:
\ProgramFiles\keilC\C51\TOOLS.INI文件,在[C51]栏目下加入:
TDRV5=BIN\VDM51.DLL("ProteusVSMMonitor-51Driver")
其中“TDRV5”中的“5”要根据实际情况写,不要和原来的重复。
(步骤1和2只需在初次使用设置。
)
3、进入KeilCμVision2开发集成环境,创建一个新项目(Project),并为该项目选定合适的单片机CPU器件(如:
Atmel公司的AT89C51)。
并为该项目加入KeilC源程序。
11.KeilC与Proteus连接调试的步骤是什么?
答:
同第十题答案。
12.使用单片机的P1口,自行编制8位LED灯跑马灯的程序,并实现KeilC和Proteus软件的联调。
答:
联调过程如10、11题。
程序如下:
#include
#include
void delayms(unsigned char ms)
// 延时子程序
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}
main()
{
unsigned char LED;
LED = 0xfe;
P0 = LED;
while
(1)
{
delayms(250);
LED = _crol_(LED,1); //循环右移1位,点亮下一个LED
P1 = LED;
}
}
13.使用Proteus查找数码管和LCD显示模块,并使用数码管做动态显示的程序及硬件电路。
答:
14.试设计一个十字路的交通灯模拟控制器,其功能为具有如下功能:
A、B道的直行、大转弯、方行切换准备等8种状态功能,以及剩余事件显示、10秒内黄绿灯闪动、蜂鸣器提示灯功能。
答:
图1交通灯控制器模拟原理图
(2)软件设计思想
·表1给出了路口交通灯的状态和维持时间。
·路口状态和维持时间组成一个常数表,设置一个路口状态数工作单元(路口状态序号0~7),再根据状态数查表,得到路口的交通灯控制字写入P2口、PO口,查到时间写入维持时间减"I"计数器和显示缓冲器。
采用这种查表方法的优点是对于不同路口,只要修改状态数最大值和表中元素即可。
•las内黄绿灯闪动采用控制字和当前状态异或(求反)的方法,Is、las、蜂鸣器鸣叫等由T2中断程序操作;
·显示器的定时扫描由TO中断程序处理;
·紧急状态处理放在INTO中断程序,为了恢复路口现场,当前交通灯控制字设一个副本单元TEMPP2、TEMPPO。
表1交通灯状态
(3)软件框图
图2给出了交通灯控制器程序框图。
(4)程序(示例,其余略)
FBITBIT0;定时扫描显示器的位标志,
;指出显示1/0位
FLASHBIT1;黄绿灯需闪动的标志,1有效
FSSBIT2;秒标志
FLAGEQUZOH;含有上述标志位的标志单元
SCNTEQU30H;T2中断次数减l计
;数单元
TIMEEQU31H;当前状态剩余时间单元
STANEQU3ZH;路口状态数单元
DBUFEQU33H;显示缓冲单元
TEMPPZEQU34H;当前交通灯状态副本单元
TEMPPOEQU35H
T2CONEQUOC8H;T2的SFR定义
RCAP2HEQUOCBH
RCAP2LEQUOCAH
TL2EQUOCCH
TH2EQUOCDH
TF2EQUOCFH
ORG3
L]MPPINTO
ORGOBH
(a)主程序框图(b)T0中断程序框图
(c)T0中断框图(d)外部中断框图
图2软件流程图
15.嵌入式远程I/O设计的业务需求和基本流程。
答:
随着信息科学、微电子技术及计算机网络技术的飞速发展,特别是针对测控特点而设计的嵌入式微控制器(MicroControllerUnit,MCU)、嵌入式微处理器(MicroProcessorUnit,MPU)、嵌入式DSP处理器(DigitalSignalProcessor,DSP)和嵌入式片上系统(SystemOnChip,SOC)的出现,把计算机测控系统的设计带到了一个崭新的领域。
从而对测量工业生产过程参数的仪表设备的功能要求也提高到一个新的层面。
以前温度、压力、流量等工业热工信号测量仪表一般安装在仪表柜里或控制室的监控台仪表盘上,信号从工业现场通过电缆线长距离接到控制室里测量仪表上,由于工业现场铺设的电缆线可能有强电、弱电混合交差,弱电测量信号线上很容易感应干扰信号,给信号测量带来影响。
并由于工业现场可能测量的数据点很多,这样要用掉很多信号电缆线,增加了生产成本。
还有铺设的电缆线长,使用年限长时破损检修查线也很麻烦。
工业生产企业为了节约生产成本,减少设备的备品备件数量,要求信号测量设备生产厂家,最好把设备设计成就地式的,设备安装在被监测对象设备旁,数据通过网络远程送到集控室。
并且要求信号测量设备的互换性要强,减少备品备件数量。
16.画出嵌入式远程I/O的系统结构框图。
答:
该嵌入式远程I/O数据采集器采用8位嵌入式MCS51硬件平台,硬件主要由电源转换电路、MCU微处理器系统、复位电路、键盘、模拟量信号测量模块、I2C接口数据存储器电路、LCD模块和RS485通信接口模块等组成。
采用独立模块,利于系统维护、升级。
测量数据显示采用128*64LCD模块,系统自带设置按键,便于现场调试修改参数。
测量数据通过RS485总线传输至上位DAS、DCS等系统。
系统通信网络采用双网冗余结构,以提高数据通信的抗干扰能力和可靠性。
图15-11为完整远程I/O的系统结构框图。
单片机控制单元
LCD液晶显示模块
数据存储模块
复位电路
键盘管理模块
A/D测量模块
RS485/以太网模块1
RS485/以太网模块2
现场信号
……
图15-11嵌入式远程I/O的系统结构框图
17.回答热电阻测量的三种接线方式及其相应的工作原理。
答:
①三线制测量原理
使已知电流通过未知热电阻并测量电压,但是电压测量的位置是一个重要的因素,三线接法:
一条线与热电阻的一端连接,另外两条线与热电阻的另一端连接。
②三线制接线图
图15-14三线制接线图
•
(双恒流源)
•
•要求:
但由于现场铺设的电缆多芯电缆,线路电阻基本相同,可以忽略。
18.请根据AD7715产品使用手册,回答voidAD_Read(INT8U*ADBufPtr)和voidAD_Write(INT8UADCmd)的基本设计流程。
答:
19.请根据FM12864产品使用手册,回答WriteChar()和WriteChiese()的基本设计流程。
答:
20.请使用Proteus画出嵌入式远程I/O设备的测量信号A/D电路,并根据流程图写出相应的KeilC程序,实现联调。
答:
程序清单:
CLRP3.7
MAIN:
MOV38H,#00H
MOV39H,#00H
MOV3AH,#00H
MOV3BH,#00H
LCALLGET_TEMPER
LCALLTEMPRRO
MOVP2,#06H
LCALLPRO
;------------------------------------------------------
MOV38H,#00H
MOV39H,#00H
MOV3AH,#00H
MOV3BH,#00H
LCALLGET_TEMPER2
LCALLTEMPRRO
MOVP2,#5BH
LCALLPRO
;------------------------------------------------------
MOV38H,#00H
MOV39H,#00H
MOV3AH,#00H
MOV3BH,#00H
LCALLGET_TEMPER3
LCALLTEMPRRO
MOVP2,#4FH
LCALLPRO
;------------------------------------------------------
MOV38H,#00H
MOV39H,#00H
MOV3AH,#00H
MOV3BH,#00H
LCALLGET_TEMPER4
LCALLTEMPRRO
MOVP2,#66H
LCALLPRO
;------------------------------------------------------
MOV38H,#00H
MOV39H,#00H
MOV3AH,#00H
MOV3BH,#00H
LCALLGET_TEMPER5
LCALLTEMPRRO
MOVP2,#6DH
LCALLPRO
;------------------------------------------------------
MOV38H,#00H
MOV39H,#00H
MOV3AH,#00H
MOV3BH,#00H
LCALLGET_TEMPER6
LCALLTEMPRRO
MOVP2,#7DH
LCALLPRO
;------------------------------------------------------
MOV38H,#00H
MOV39H,#00H
MOV3AH,#00H
MOV3BH,#00H
LCALLGET_TEMPER7
LCALLTEMPRRO
MOVP2,#07H
LCALLPRO
;------------------------------------------------------
MOV38H,#00H
MOV39H,#00H
MOV3AH,#00H
MOV3BH,#00H
LCALLGET_TEMPER8
LCALLTEMPRRO
MOVP2,#7FH
LCALLPRO
LJMPMAIN
;==============================================CHL1
GET_TEMPER:
SETBP1.0H;定时入口
BCD:
LCALLINIT_1820
JB00H,S22
LJMPBCD;若DS18B20不存在则返回
S22:
LCALLDELAY1
MOVA,#0CCH;跳过ROM匹配------0CC命令
LCALLWRITE_1820
MOVA,#44H;发出温度转换命令
LCALLWRITE_1820
NOP
LCALLDELAY1
CBA:
LCALLINIT_1820
JB00H,ABC
LJMPCBA
ABC:
LCALLDELAY1
MOVA,#0CCH;跳过ROM匹配
LCALLWRITE_1820
MOVA,#0BEH;发出读温度命令
LCALLWRITE_1820
LCALLREAD_18200;READ_1820
RET
;==============================
READ_1820:
MOVR2,#8
RE1:
CLRC
SETBP1.0H
NOP
NOP
CLRP1.0H
NOP
NOP
NOP
SETBP1.0H
MOVR3,#7
DJNZR3,$
MOVC,P1.0H
MOVR3,#23
DJNZR3,$
RRCA
DJNZR2,RE1
RET
;=============================
WRITE_1820:
MOVR2,#8
CLRC
WR1:
CLRP1.0H
MOVR3,#6
DJNZR3,$
RRCA
MOVP1.0H,C
MOVR3,#23
DJNZR3,$
SETBP1.0H
NOP
DJNZR2,WR1
SETBP1.0H
RET
;=======================================
READ_18200:
MOVR4,#2;将温度高位和低位从DS18B20中读出
MOVR1,#31H;低位存入30H(TEMPER_L),高位存入31H(TEMPER_H)
RE00:
MOVR2,#8
RE01:
CLRC
SETBP1.0H
NOP
NOP
CLRP1.0H
NOP
NOP
NOP
SETBP1.0H
MOVR3,#7
DJNZR3,$
MOVC,P1.0H
MOVR3,#23
DJNZR3,$
RRCA
DJNZR2,RE01
MOV@R1,A
DECR1
DJNZR4,RE00
RET
;=======================================
INIT_1820:
SETBP1.0H
NOP
CLRP1.0H
MOVR0,#250
TSR1:
DJNZR0,TSR1;延时520us
SETBP1.0H
MOVR0,#25H;96US-25H
TSR2:
DJNZR0,TSR2
JNBP1.0H,TSR3;如D0为低则复位成功,DS18B20存在
LJMPTSR4;延时
TSR3:
SETB00H;置标志位,表示DS1820存在
LJMPTSR5
TSR4:
CLR00H;清标志位,表示DS1820不存在
LJMPTSR7
TSR5:
MOVR0,#06BH;200US
TSR6:
DJNZR0,TSR6;延时
TSR7:
SETBP1.0H;拉高总线
RET
;===============================
GET_TEMPER2:
SETBP1.1H;定时入口
BCD2:
LCALLINIT_18202
JB00H,S222
LJMPBCD2;若DS18B20不存在则返回
S222:
LCALLDELAY1
MOVA,#0CCH;跳过ROM匹配------0CC命令
LCALLWRITE_18202
MOVA,#44H;发出温度转换命令
LCALLWRITE_18202
NOP
LCALLDELAY1
CBA2:
LCALLINIT_18202
JB00H,ABC2
LJMPCBA2
ABC2:
LCALLDELAY1
MOVA,#0CCH;跳过ROM匹配
LCALLWRITE_18202
MOVA,#0BEH;发出读温度命令
LCALLWRITE_18202
LCALLREAD_182002;READ_1820
RET
;==============================
READ_18202:
MOVR2,#8
RE12:
CLRC
SETBP1.1H
NOP
NOP
CLRP1.1H
NOP
NOP
NOP
SETBP1.1H
MOVR3,#7
DJNZR3,$
MOVC,P1.1H
MOVR3,#23
DJNZR3,$
RRCA
DJNZR2,RE12
RET
;=============================
WRITE_18202:
MOVR2,#8
CLRC
WR12:
CLRP1.1H
MOVR3,#6
DJNZR3,$
RRCA
MOVP1.1H,C
MOVR3,#23
DJNZR3,$
SETBP1.1H
NOP
DJNZR2,WR12
SETBP1.1H
RET
;=======================================
READ_182002:
MOVR4,#2;将温度高位和低位从DS18B20中读出
MOVR1,#31H;低位存入30H(TEMPER_L),高位存入31H(TEMPER_H)
RE002:
MOVR2,#8
RE012:
CLRC
SETBP1.1H
NOP
NOP
CLRP1.1H
NOP
NOP
NOP
SETBP1.1H
MOVR3,#7
DJNZR3,$
MOVC,P1.1H
MOVR3,#23
DJNZR3,$
RRCA
DJNZR2,RE012
MOV@R1,A
DECR1
DJNZR4,RE002
RET
;=======================================
INIT_18202:
SETBP1.1H
NOP
CLRP1.1H
MOVR0,#250
TSR12:
DJNZR0,TSR12;延时520us
SETBP1.1H
MOVR0,#25H;96US-25H
TSR22:
DJNZR0,TSR22
JNBP1.1H,TSR32;如D0为