单片机控制装置安装与调试 (下册)(含CD光盘1张)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-10-01 02:36:30

点击下载

作者:雷林均

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

单片机控制装置安装与调试 (下册)(含CD光盘1张)

单片机控制装置安装与调试 (下册)(含CD光盘1张)试读:

前言

单片机技术的应用越来越广泛,电子技术的应用领域中,几乎可以说“想得到就用得上”。为了推广单片机技术,推动电工电子类专业课程改革,全国技能大赛电工电子类设置了“单片机控制装置安装与调试”竞赛项目。为了满足广大师生对单片机教学及参加技能大赛训练的需要,特编撰此书奉献给读者。

本书以行动导向的思想为指导,通过大量实例,围绕单片机控制装置,由浅入深、由简到繁地安排训练项目。将单片机硬件知识和C语言编程知识分解到实例中,通过“做中学”来教授单片机硬件知识和编程知识,特别适合“做、学、教”一体化教学方案。书中既有基础知识和基本技能的训练,又有满足大赛需要的高级技术、技巧。

单片机编程有汇编语言和C语言两种。采用C语言编程具有代码短、可读性强、可移植性强、开发周期短的优点,特别是在较大规模的单片机运用场合及比较复杂的算法实现上,C语言明显优于汇编语言。因此本书采用C语言进行编程。

笔者在编写过程中,针对每一个模块,总是尽量采用多种程序算法和列举较多的应用实例,以拓展读者思维。例如,对一个简单的“开关控制LED”实验,介绍if语句法、问号语句法、赋值法、函数法等;矩阵键盘取键值的函数,介绍扫描法、反转法、单键判断法等;流水灯效果,介绍十余种程序算法;各种显示器,不但介绍基本的显示技术,还介绍许多显示特效的程序算法;对定时器的应用,给出计数器、频率计、脉宽测量、交通灯、音乐演奏、电子钟、闹钟、农历日历钟等大量实例。

书中实例涵盖全国单片机技能大赛指定设备的所有模块,但不限22于大赛模块,还介绍了并行存储器、IC存储器、IC实时时钟芯片、压力传感器、PS2键盘、非接触式IC卡、USB接口等大量其他常用模块的应用。

本书还特别介绍了基于RTX-51 Tiny多任务操作系统的编程,使读者面对复杂应用系统的开发也能应对自如。

作为综合应用系统设计示例,书中介绍了物料搬运、微波炉、电梯等典型控制系统,还对全国单片机大赛试题进行了详细解析。

即使您是一个单片机“外行”,相信通过本书的学习和实战训练,也一定能快速成长,成为能独立运用单片机技术解决实际问题的技术人才。

本书配套光盘中提供书中所有示例的源程序,同时提供Proteus ISIS仿真电路,方便读者进行实验。

在本书的编写过程中,王莉负责大量文稿处理和校对工作,雷磊负责源程序验证实验工作,在此表示感谢!

由于作者水平有限,书中难免存在一些错误和不足之处,希望广大读者批评指正。

编 者

2011年1月

第6章 AT89S52特殊功能

6.1 节电控制

6.1.1 节电控制寄存器PCON

AT89S52单片机可以通过置位PCON的IDL及PD,来进入空闲工作模式或掉电保持模式,从而减少单片机的能耗。

表6.1.1所示为PCON的位定义表6.1.1 PCON的位定义IDL:空闲模式启动位。PD:掉电模式启动位。GF0,GF1:通过标志位。POF:掉电标志。SMOD:波特率加倍控制。使用定时器1作为串行通信波特率发生器时,SMOD置

1,波特率加倍。

PCON只能以字节操作,不能直接进行位操作。例如,置位IDL,可以是PCON|=0x01,不能为IDL=1。

1.空闲节电模式

IDL位置1时,立即进入空闲工作模式。空闲模式下,振荡器继续工作,中断系统、定时器、串行口有效(所有片内的外设仍保持激活状态);但时钟停止提供给CPU,CPU保持睡眠状态;片内RAM和所有特殊功能寄存器的内容保持不变。

在空闲模式下,任何允许的中断请求,将使IDL清零,退出空闲模式,同时进入中断服务程序。中断函数返回后,执行的第一条指令,是前面进入空闲模式时置位IDL指令的下一条指令。

使用空闲模式时,通常把大多数的任务都放入中断函数;主程序只进行必要的初始化,然后就进入空闲模式;CPU只在中断函数执行时工作,大大降低了单片机的功耗。

2.掉电模式

PD位置1时,立即进入掉电模式。掉电模式下,振荡器停止工作,定时器、串行口停止工作;片内RAM和特殊功能寄存器的内容保持不变。

掉电模式下,原来的AT89C51只能通过硬件复位来结束掉电模式状态。AT89S52进入掉电模式后,还可以由处于使能状态的外中断结束。

如果外中断允许,则外中断的中断请求将清零PD位,退出掉电模式。然后执行中断函数,中断函数返回时,接着执行主程序中置位PD指令的下一条指令。

使用外中断来唤醒单片机时,不管是跳变触发还是低电平触发,均要求低电平能保持足够的时间,让单片机时钟振荡电路起振并稳定工作。

掉电模式可以使单片机处于最低功耗状态。

空闲模式和掉电模式都可以通过硬件复位结束。复位将重新定义除POF位外的全部特殊功能寄存器,但不改变RAM中的内容。复位必须是在V恢复到正常工作电平后进行,且必须保持一定时间。CC

3.掉电标志POF

当AT89S52首次上电时,POF被硬件置1。POF位可以由软件置1或清零,且不受复位影响。利用此标志可以区别初始上电的复位与工作过程中的复位,以便程序做不同的处理。6.1.2 节电模式实验

1.任务书

通过如图6.1.1所示电路,利用上的按钮切换,表现AT89S52不同的节电工作模式。图6.1.1 节电模式实验

2.分析

正常工作模式、空闲模式、掉电模式分别通过点亮D1、D2、D3来指示。空闲模式与掉电模式都能被外部中断唤醒,所以可以实现按钮K对模式的切换。

为了测试POF位,在程序段中让D1通过不同频率的闪烁来表现。

3.程序示例

08行:开启外部中断0。第24行外部中断函数为“空”,仅用于唤醒CPU。

10行:根据掉电标志POF来选择11行或14行。

17行:从空闲模式唤醒,D2闪烁5次。

19行:从掉电模式唤醒,D3闪烁5次。

4.测试(1)上电效果观察。首次上电,D1慢闪2次,按复位键,D1快闪5次。(2)接着LED关闭,说明CPU进入空闲模式。(3)按一下K按钮,D2闪5次,说明空闲模式被INT0中断结束。(4)接着LED又关闭,说明CPU又进入掉电模式。(5)再按一下K按钮,D3闪5次,掉电模式被INT0中断结束。(6)接着D1快闪5次,说明主循环返回。(7)无论空闲模式还是掉电模式,按复位键,D1闪烁5次,说明节电模式可以通过复位结束。复位将使程序重新开始。6.1.3 掉电检测与后备电源

工作中突然停电是不可避免的,为了防止突然停电带来的数据丢失,必须对掉电进行检测。一旦掉电,立即启动数据保护程序,在电源降到下限值之前,将数据移至可靠的位置存储。

后备电源的作用,是在市电掉电时维持单片机的全部或部分工作,保护数据如图6.1.2所示。图6.1.2 后备电源

当市电正常时,通过电源给单片机I/O引脚一个信号,可以是市电经隔离、整流、限幅、整形等处理后的脉冲,也可以是某种电平信号。一旦市电掉电,这个信号及时反映到单片机。单片机通过定时查询或中断等方式获取掉电信号,并立即进行掉电处理,比如关闭电源消耗大的外部设备、将单片机切换成空闲工作模式或掉电模式。

6.2 看门狗WDT

6.2.1 看门狗的作用

在微型计算机系统中,由于外界电磁场的干扰,单片机运行时可能出现“死机”。这是由于干扰造成程序的跑飞,陷入了死循环,使单片机控制系统无法正常工作,这将发生不可预料的后果。

为了防止程序跑飞出现死机现象,通常利用“看门狗”来监控单片机的工作。看门狗实际上是一个定时装置,看门狗启动后开始定时,一旦定时到达某个阈值,就会输出复位脉冲。看门狗的定时器可以通过程序清零,编程时需要在程序主循环适当位置添加“清零”看门狗定时器的指令。单片机程序正常运行时,看门狗定时器被不断清零达不到阈值,看门狗电路不会输出复位脉冲。一旦程序跑飞、进入某个死循环后,用于清零看门狗的指令不能被执行,看门狗定时器很快达到预设阈值而输出复位脉冲,使单片机复位。单片机因复位而重新开始工作,退出死机状态。

看门狗具有监视单片机工作的作用。把清零看门狗定时值的指令称为“喂狗”。单片机“喂狗”的时间间隔必须比看门狗定时器的阈值时间小,否则看门狗就会复位单片机。

看门狗定时,可以利用单稳态电路来设计,也可以使用专用看门狗芯片,还可以利用单片机定时器设计软件设计看门狗。很多单片机已经内置了看门狗电路。6.2.2 硬件看门狗

对于不带内置看门狗的单片机,可以使用外置硬件看门狗。实现看门狗功能的电路很多,如时基集成电路555、单稳态触发器74LS123、带振荡电路的计数器CC4060等,都可以设计出看门狗电路。

下面以555时基为例,简要说明其设计原理。如图6.2.1所示,正常工作时,单片机送来的喂狗脉冲WDT_IN经C1使VT导通,不断给C2充电,555保持低电平输出;一旦单片机因进入死循环停止喂狗,则VT截止,555开始振荡,RST_OUT输出高电平使单片机复位。在555输出低电平期间,单片机重新开始工作,喂狗脉冲开始产生,555被锁定在低电平输出。图6.2.1 时基555构成的看门狗复位电路6.2.3 软件抗干扰

1.端口刷新

特殊功能寄存器,特别是I/O寄存器的状态很可能被干扰破坏。程序中通过反复刷新I/O寄存器,能使其受干扰破坏的状态及时得到恢复。

2.程序陷阱

陷阱,就是在程序中间插入一些跳转指令,希望程序跑飞后能落入“陷阱”,实现跳转,进行出错处理或者恢复工作。(1)指令沉余

51单片机的指令有单字节、双字节、三字节几种,如果干扰使程序跑飞后,落到51单片机的多字节指令中间,程序代码的意义就面目全非了。因此在程序中间嵌入一些“空操作”指令,希望程序跑飞后能遇上空操作指令,使程序回归正轨。(2)空操作+跳转

这是指在程序中间嵌入“一长串空操作,后面加一条长跳转汇编指令”。正常工作时,这些指令不被执行;程序跑飞后,一旦进入这个区域,则强制程序跳到出错处理及初始化部分。

3.中断控制

中断控制是指利用定时中断,监视主程序的运行。主程序在定时器没有溢出时,反复清零计数器;如果主程序跑飞,定时器有可能溢出,则通过执行中断程序强制单片机初始化复位。

软件陷阱只能在一定程度上解决程序跑飞问题。与硬件看门狗比起来,软件陷阱程序复杂,降低了程序效率,且效果不佳,特别是在C语言编程中实现起来更是不容易。6.2.4 内置看门狗

AT89S51/52内置有看门狗定时器(WDT)。它由一个14位定时器和看门狗复位(WDTRST)电路构成。单片机复位时,WDT默认为关闭状态。要打开WDT,只要向看门狗定时器(地址为0xA6)顺序写入0x1E、0xE1即可。程序如下:

执行以上两行代码后,WDT即启动。看门狗定时器会在每个机器周期加1。除硬件复位或WDT溢出复位外,没有办法关闭WDT。看门狗定时器不能读取,也不能赋值。当WDT定时器溢出时,将使RST引脚输出持续时间为98个晶振周期的高电平复位脉冲,使单片机复位。

程序正常执行时,为了防止WDT定时器溢出复位单片机,需在程序适当位置放“喂狗”指令。喂狗也是向WDTRST顺序写入0x1E、0xE1。喂狗的目的是清零看门狗定时器,以避免WDT 计数溢出。因WDT定时器是14位的,所以在每16 383个机器周期内必须喂狗一次。

看门狗测试程序如下:

07~09行:复位时,LED闪5次。

10~14行:主循环。进入主循环后,LED停止闪烁。

11行:延时,代替程序正常工作指令。

12,13行:喂狗。每次主循环喂狗一次。

测试:将第11行延时函数参数值改为2 046及以上,发光管会不停闪烁,说明看门狗复位起了作用,单片机被反复重新启动,第08行被执行;如果将延时参数改为2 045及以下,则LED闪烁5次后停止,说明程序正常在10~14行循环。

目前ISIS仿真不能仿真AT89S52的看门狗,请在实验台上实验。

看门狗不是万能的,必须在硬件上进行抗干扰设计,“软硬兼施”提高抗干扰能力。6.2.5 掉电和空闲方式下的WDT

在掉电模式下,晶体振荡停止,WDT也停止。掉电模式下,用户不能复位WDT。有两种方法可以退出掉电模式:通过硬件复位或激活外部中断。当通过硬件复位退出掉电模式时,处理WDT可像通常的上电复位一样。而由中断退出掉电模式则有所不同,中断低电平状态持续到晶体振荡稳定,当中断电平变为高即响应中断服务。为防止中断误复位,当器件复位、中断引脚持续为低时,WDT并未开始计数,直到中断引脚被拉高为止。这为在掉电模式下的中断执行中断服务程序而设置。

为保证WDT在退出掉电模式时极端情况下不溢出,最好在进入掉电模式前复位WDT。

在进入空闲模式前,WDT打开时,WDT是否继续计数由特殊功能寄存器AUXR的WDIDLE位决定,在空闲(IDLE)期间(位WDIDLE=0)默认状态是继续计数。为防止单片机在空闲模式中被复位,应通过定时器中断周期性喂狗,然后重新进入空闲模式。

当位WDIDLE被置位时,在空闲模式中WDT将停止计数,直到从空闲(IDLE)模式中退出才重新计数。6.2.6 辅助寄存器AUXR

表6.2.1所示为辅助寄存器AUXR的位定义。表6.2.1 辅助寄存器AUXR的位定义

DISALE:ALE使能标志位。DISALE=0时,ALE以1/6晶振频率输出信号;DISALE=1时,ALE只在执行MOVX或MOVC指令(访问外部数据或程序)时激活。

DISTRO:看门狗复位禁止。DISTRO=0时,允许看门狗在其定时结束时输出高电平复位信号;DISTRO置1时,看门狗不输出复位信号。

WDIDLE:空闲模式下看门狗使能标志。空闲模式下,WDIDLE=0时,WDT继续计数;WDIDLE=1时,WDT停止计数。

AUXR的地址为0x8E,不能直接进行位操作,只能以字节操作。示例如下:

第7章 扩展单片机的功能

7.1 扩展I/O口

AT89S52有P0,P1,P2,P3四个I/O口,共32根I/O线,如果不能满足应用需要,可以扩展I/O口。7.1.1 串—并转换扩展输出口

通过串—并转换,利用单片机的少量I/O线就可以扩展较多的输出线。下面用74164集成电路做一个简单的示例。关于74164的介绍,请见上册3.1.1节的内容。

1.任务书

利用单片机的两根I/O线,扩展两片74164,用16个LED实现两个LED“相向”和“同向”流动的流水灯效果。

2.电路图

将两片74164级联,只占用单片机两根I/O线。如图7.1.1所示,数据由单片机发送至第一块74164的输入端(1,2脚),第一块74164移位输出(13脚)发送至第二块74164的输入端。两块74164的时钟线并联,同时进行串行移位。通过级联的方式,可以连接更多的74164,扩展出更多的输出线。图7.1.1 74164扩展输出驱动线

3.程序示例

06~12:将16位数据串行发送到74164的函数。

08行:为脉冲上升沿做准备。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载