1.答:系统连接简单: I2C 总线系统的基本结构如图 线接口的各种扩展器件(如存储器、
12-7。I2C 总线系统直接与具有 I2C 总
I/O 芯片、 A/D、D/A、键盘、显示器、日历 / 时钟)连
数据传输速率较高:在标准
I2C 普通模式
接。I2C 总线对各器件寻址采用纯软件的寻址方法,无需片选线的连接,这样就大大简化了 总线数量,系统各部件之间的连接只需两条线。 下,数据的传输速率为 总线就处于空闲状态。
100kbit/s ,高速模式下可达 400kbit/s 。 2.答: I2C 总线的起始信 由图 12-9 见起始信号和终止信号的规定。
(1)起始信号( S)。在 只有在起始信号以后, 3.答:无论 I2C 总
号和终止信号都由主机发出, 在起始信号产生后, 总线就处于占用状态; 在终止信号产生后, SCL线为高电平期间, SDA线由高电平向低电平的变化表示起始信号, 的变化表示终止信号。随着终止信号的出现,所有外部操作都结束。 线上的数据传输方向由寻址字节中的数据传输方向位规定: 方向位
其他命令才有效。 (2)终止信号( P)。在 SCL线为高电平期间, SDA线由低电平向高电平
寻址字节 器件地址 引脚地址
DA3 DA2 DA1 DA0 A2 A1 A0 R/ =1,表示主机接收 (读)。R/ =0,表示主机发送 (写)。
4.答:单片机对 I2C 总线中的器件寻址采用软件寻址,主机在发送完起始信号后,立即发
送寻址字节来寻址被控的从机, 寻址字节格式如题 3 所示。7 位从机地址即为 “DA3、DA2、 DA1、DA0”和“ A2、A1、A0”。其中“ DA3、DA2、DA1、DA0”为器件地址,是外围器件固 有的地址编码,器件出厂时就已经给定。 “A2、A1、A0”为引脚地址,由器件引脚 A0 在电路中接高电平或接地决定(见图 节数(数据帧)没有限制,每一字节必须为
12-12)。
A2、A1、
5.答: I2C 总线数据传送时,传送的字
8 位长。数据传送时,先传送最高位,每一个被
传字节后面都须跟 1 位应答位(一帧数据共 9 位),如图 12-10。I2C 总线在传送每一字节数 据后都须有应答信号 A,A 信号在第 9 个时钟位上出现, A 信号对应的时钟由主机产生。这 时发方须在该时钟位上使
SDA线处于高电平, 以便收方在这一位上送出低电平的应答信号
例如接收方正在进行其他处理而无法接收总线上
A。
由于某原因收方不对主机寻址信号应答时, 号以结束总线的数据传送。 从而结束数据的传送。 机地址 r 1 A 数据
的 数据 时 , 必 须 释 放 总 线 , 将 数 据 线 置 为 高 电 平 , 而 由 主 机 产 生 一 个 终 止信
当主机接收来自从机的数据时,接收到最后一个数据字节后,
),使从机释放数据总线,以便主机发送一个终止信号,
S 从机地址 0 A 数据 A/ Sr 从
12.5.2 小节中的各子程序。 1.答:A.错;B.错;C.对;D.错
必须给从机发送一个非应答信号(
6.答:依照下面的数据传送格式:
参考答案
P 依次调用依照上述数据传送格式的
第 13 章 AT89S51单片机的应用设计与调试
(最小系统不能直接测量模拟信号) 。 2.答:用户样机是以 AT89S51单片机为核心的应用 系统,没有对单片机中的程序进行检错调试的手段, ---仿真开发系统所提供的开发手段来解决上述问题。 3.答:仿真开发系统由哪几部分组成
? 目前国内大多使用通用机的仿真开发系统。
主要由
PC 机、在线仿真器组成,有的还包含有用于程序烧录的编程器,在加上与上述配套的编辑 软件、仿真调试软件,程序烧录软件等。 工业现场进行程序仿真调试时,往往没有
此外还有独立型仿真器。该类仿真器采用模块化
/ 显示器等,用户可根据需要选用。尤其在
至于软件仿真开发工具 Proteus 软件
软件仿真开发工具与用户样机在
4.答:调试过
PC机
PC机的支持,这时使用独立型仿真器也可进行仿
结构,配有不同外设,如外存板、打印机、键盘 真调试工作,只不过要输入机器码,稍显麻烦一些。 是一种完全用软件手段对单片机应用系统进行仿真开发的。 程见图 13-13,4 个步骤。 中,并保存在磁盘上。
也无法发现程序运行中的设计硬件的问
,因此,必须借助某种开发工具
题,也无法进行软件的开发(如编辑、汇编、调试程序等)
硬件上无任何联系。不能进行用户样机硬件部分的诊断与实时在线仿真。
(2)汇编并检查语法错误:在
(1)输入用户源程序:用户使用编辑软件源程序输入到
PC 机上,利用汇编程序对用户源
程序进行汇编,直至语法错误全部纠正为止。 (3)动态在线调试:对用户的源程序进行
调试。要先把在线仿真器的仿真插头插入用户样机的单片机插座中(图 仿真调试, 利用仿真开发系统提供单步、 件逻辑上的问题,或排除硬件上的故障。 化在程序存储器中。 在系统的开发中,一般 在 Proteus 环
单片机应用系统进行仿真开发的。
13-12),进行在线
设置断点等调试手段,来进行系统的调试。纠正软 (4)将调试完毕的用户程序通过程序烧写器,固
Proteus 软件是一种完全用软件手段对
因此
5.答:由于软件仿真开发工具
不能进行用户样机硬件部分的诊断与实时在线仿真。 境下仿真调试通过。然后依照仿真的结果,完成实际的硬
是先用 Proteus 仿真软件设计出系统的硬件电路,编写程序,然后
然后安装到用户样机硬件板上去观察运行结
6.答:在每块印刷电路板的电源输
并接大电容为
因为在工
件设计。 再将仿真通过的程序烧录到编程器中, 入端跨接的电容应为一个
果,如果有问题,再连接硬件仿真器去分析、调试。
10~100μF 的大容量电解电容 (如体积允许, 电容量大一些更好)
7.答:光电耦合的主要优点
且长度达几百米
和一个 0.01~0.1μF 的非电解电容。 用于去除干扰中的高频干扰和低频干扰, 了去掉低频干扰成分,并接小电容为了去掉高频干扰部分。 是能有效抑制尖峰脉冲以及各种噪声干扰, 业现场的数据采集或实时控制中,
从而使过程通道上的信噪比大大提高。
过程通道的输入输出信号线和控制线多,
或几千米, 因此不可避免地将干扰引入单片机系统。 消除或减弱过程通道的干扰主要采用光
后向以及其他部分切断电 13-14)。 8.答:对于单片机 这种反电势甚至可能击穿电路中晶 对单片机应用系统中的其它电路产
(1)可在线圈两端
电隔离技术。 所谓光电隔离采用光电耦合器可以将单片机与前向、 路的联系,能有效地防止干扰从过程通道进入单片机(见图 应用系统中的具有较大电感量的元件或设备,
的电流被切断时, 会产生很大的反电势而形成噪声干扰。 体管之类的器件, 反电势形成的噪声干扰能产生电磁场, 并联二极管和稳压管,如图 路
阻断而不起作用;当三极管 在并联支路中流通,因此 择得比外加电源高些。
(a) 所示。
诸如继电器、电动机、电磁阀等。当电感回路
生干扰。如果通过电感线圈的是直流电流,可采用如下措施加以抑制:
图(b) 由电阻和二级管组成的反电势抑制电路。
e 的幅值被限制在稳压管
图 (a)由二极管和稳压管构成的反电势抑制电
在稳定工作时, 并联支路被二极管 D
e。此电势可
DZ的
T 由通道变为截止时,在电感线圈两端产生反电势
工作电压范围之内, 并被很快消耗掉 ,从而抑制了反电势的干扰。 使用时 DZ的工作电压应选
如果把稳压管换为电阻, 同样可以达到抑制反电势的目的, 如图(b)
在这个电路中, 电阻的阻值范围可以从几欧姆到
(2)反电 图(c) 由电阻和
c)所示。适当选择
R、C
所示, 因此也适用于直流驱动线圈的电路。 势抑制电路也可由电阻和电容组成,如图( 电容组成的抑制电路 接在开关的两端,
圈,也适用于直流驱动的线圈。
几十欧姆。阻值太小,反电势衰减得慢;而阻值太大又会增大反电势的幅值。
参数, 也能获得较好的耗能效果。 这种电路不仅适用于交流驱动的线
(3)反电势抑制电路不但可以接在线圈的两端,也可以
例如继电器,接触器等部件在操作时,开关会产生较
图
大的火花,必须利用 RC电路加以吸收, 如图(d),一般 R取 1~2KΩ,C取 2.2~4.7μF。 (d) 接在开关的两端的反电势抑制电路
9.答:数字地通常有很大的噪声而且电平的跳跃
会造成很大的电流尖峰, 对模拟地有较大的影响, 会引起模拟电路产生误差。 所以正确的接 法是,必须将所有的模拟地和数字地分别相连,然后模拟(公共)地与数字(公共)地仅在 一点上相连接,且地线应尽量加粗,如图 的正确连接,否则会引起 与模拟地尽可能短的连接。 应独立的模拟地和数字地引脚,
13-17。 在 ADC和 DAC电路中,尤其要注意地线
ADC 和 DAC转换结果的不准确。由于 10.答: (1)电源去耦
ADC、DAC芯片都提供了相
然后再
一定要把模拟地引脚和数字地引脚尽可能短的相连。
已经在第 6 题中介绍,就是在印刷
每 Vcc
电路板的电源输入端跨接退耦电容。 跨接的电容应为一个 10~100μF 的大容量电解电容 (如 体积允许, 电容量大一些更好) 和一个 0.01~0.1μF 的非电解电容。 (2)集成芯片去耦 个集成芯片都应安置一个
0.01μF 的瓷片去耦电容,去耦电容必须安装在本集成芯片的
和 GND 线之间,否则便失去了抗干扰作用。 如遇到印刷电路板空隙小装不下时,可每 4~
10 个芯片安置一个 1~10μF 高频阻抗特别小的钽电容器。对于抗噪声能力弱,关断电流大 的器件和 ROM、RAM 存储器,应在芯片的电源线
Vcc和地线( GND)间接入去耦的瓷片电
容。 11.答:(1)在印制板中留下无用的空白铜箔层,可充当发射天线或接收天线,可把 就近它们接地。 (2)走线不要有分支, 可避免在线路条在传输高频信号导致反射干扰或发生 谐波干扰。
12.答:常见的软件滤波方法有(
1)算术平均滤波法:一般适用于具有随机 (3)中位值滤波法:能有效地克服因偶
但对
(4)去极值平均值滤波法: 算术平均与滑
去极值平均
干扰的信号的滤波。 (2)滑动平均滤波法:对周期性干扰有良好的抑制作用,平滑度高,灵 敏度低;但对偶然出现的脉冲性干扰的抑制作用差。 流量、 速度等快速变化的参数一般不宜采用此法。 均值法不易消除由于脉冲干扰而引起的误差,
然因素引起的波动干扰。 对温度、 液位等变化缓慢的被测参数能收到良好的滤波效果。 动平均滤波法,在脉冲干扰比较严重的场合,干扰将会“平均”到结果中去,故上述两种平
这时可采用去极值平均值滤波法。
值滤波法类似于体育比赛中的去掉最高、最低分,再求平均。 若取指令时刻
落在操作数上, 误将操作数当作操作码, 程序有可能出错。若乱飞到三字节指令, 更大,这时可在双字节指令和三字节指令后插入两个字节以上的 将乱飞的程序引向一个指定的地址入口标号 单片机片内集成的
指令不被拆散,这称为指令冗余。 (2)软件陷阱:就是一条引导指令“ 的程序。为加强其捕捉效果,一般还在它前面加两条 来不断计数,监视程序的运行。 也就不能定时地把看门狗计数器清 引脚上输出一个正脉冲使
出错概率
NOP 指令,可保护其后的
LJMP ERP”,强行
13.答:(1)指令冗余:当
单片机系统受干扰时, PC中由于干扰发生错误, 会产生 “乱飞”。 当乱飞到某双字节指令,
“ERP”,在那里有一段专门对程序出错进行处理
NOP指令。 14.答:无论是 AT89S51
“看门狗”还是专门的硬件“看门狗”电路,原理都是使用一个计数器
当计数器启动运行后,为防止计数器的不必要溢出,应定期
“死循环”时, AT89S51的 RST
0。当看门狗计数器值计满溢出时,将在
性地把 WDT 计数器清 0,以保证其不溢出。当单片机的程序“跑飞”或陷入
AT89S51 单片机复位,在系统的复位入口
0000H 处安排一条跳向
出错处理程序段的指令或重新从头执行程序, 处理器监控器芯片中的“掉电保护” 片机 C语言程序设计基础
从而使程序摆脱 “跑飞” 或“死循环” 状态。
RAM 中的重要内容,这时可使用微
微处理器监控器芯片
第 14 章 单
15.答:当系统掉电或供电电压过低时,有时需要保护 会在掉电时自动为单片机系统提供电源,
参考答案
功能,即给单片机接上备用电池,
从而保护了 RAM 中的重要内容。
1.答 :C51在标准 C 的基础上, 作了以下扩充: (1)
因此 Keil C51与 ANSI
(2)头文件。生产 51 系列单片机
I/O 等数量以及功能的不同,而
就可实现它们所具有
(3)数
数据类型的不同。 51 系列单片机包含位操作空间和丰富的位操作指令, C 相比又扩展了 4 种类型,以便能够灵活地进行操作。 的厂家有多个,它们的差异在于内部资源如定时器、中断、
对于使用者来说, 只需要将相应的功能寄存器的头文件加载在程序内,
的功能。因此, Keil C51系列的头文件集中体现了各系列芯片的不同资源及功能。 据统一寻址的内存空间,而
据存储类型的不同。 标准 C最初是为通用计算机设计的, 在通用计算机中只有一个程序和数
51 系列单片机有片内、外程序存储器,还有片内、外数据存储
AT89C51 单片机中大
(5)库函
(4)标准 C没有处理单片机中断的定义。
器。标准 C 并没有提供这部分存储器的地址范围的定义。此外,对于 量的特殊功能寄存器也没有定义。 器系统,因此它们被排除在
数有较大不同。 标准 C的库函数中有一些库函数可继续使用部分库函数不适合于嵌入式处理
Keil C51之外,例如库函数 printf 和 scanf,在标准 C中,这两个
C 所具备
函数通常用于屏幕打印和接收字符, 而在 Keil C51中,它们主要用于串行口数据的收发。 (6) 51 单片机的硬件资源有限, C51 的编译系统不允许太多的程序嵌套。其次,标准 的递归特性不被 Keil C51支持。 但是从数据运算操作、程序控制语句以及函数的使用上来
说,Keil C51与标准 C 几乎没有什么明显的差别。如果程序设计者具备了有关标准 C 的编程
基础,只要注意 Keil C51与标准 C的不同之处,并熟悉 AT89S51单片机的硬件结构,就能够 较快地使用 Keil C51编程。 2. 答:略。 3. 答:略。 4. 答:略。 5. 答:可参考例 14-8, 将波形数据输出从零开始不断增
1 到达最大值后不断减 1,回零后再
不断增 1 到达最大值后不断减 1,从而重复不断发出三角波波形的数据。