电子定时器的设计
学生姓名: xxxx 学 部: xxxx 班 级: xxxxxx3 专 业: 电xxxxx程
指导教师: xxxx
衢州职业技术学院 2011年2月 日
1
电子定时器的设计
Electron timer design
学生: xxxx 班级: xxxxx3 学号: 0xxx 学部: xxx 专业: xx
指导老师: xxx 指导老师职称: xxxx 工作单位: xxxx
毕业设计(论文)完成时间自 2011 年 2 月 至 2011 年2 月
2
【摘要】
随着时代的进步,电子行业的发展,定时器的应用也越来越广泛。但传统的定时器都是使用发条驱动式、电机传动式或电钟式等机械定时器。电子定时器相对产痛定时器来说,体积小、重量轻、造价低、精度高、寿命长、而且安全可靠、调整方便、适于频繁使用。本设计采用AT89C2051单片机为核心,阐述了系统工作原理,给出了软件流程。该电子定时器满足对电器的电源进行控制,同时要方便用户对电子定时器的操作。最大时间能达到30h,切最大精度可以到分钟
关键词:定时器;单片机;AT89C2051;动态扫描;继电器
3
【Abstract】
Progress , development of electron industry , the timer application are also more and more broad with the times. But, the tradition timer all is to use spring to drive machinery timers such as style , electric motor drive style or electric clock style. Come the electron timer to say volume is small , weight is light , cost of construction is low , accuracy is high , life-span is long, and safety is reliable , adjust to be suitable for being frequently put into use conveniently relatively painful timer of product. Have designed that the monolithic machine is core originally adopt AT89C2051 , have set forth system operating principle , have given a software out technological process. The power source go along being the electron timer's turn to be satisfied with electrical equipment is controlled , is wants the convenience of customers operation to electron timer at the same time. Maximal time can reach 30 hs , by all means maximal accuracy can arrive at a minute
Keywords: Timer; Monolithic machine; AT89C2051; Development is scanned; Relay
4
目 录
1 引言 .............................................................................................................................................. 7 1.1课题的来源和意义 .................................................................................................................... 7
1.2电子定时器的应用 ............................................................................................................ 8 1.3电子定时器的发展前景 .................................................................................................... 8 2 51单片机内部结构及计数原理 ................................................................................................ 8
2.1 51单片机内部机构 .......................................................................................................... 8 2.2计数原理........................................................................................................................... 11 3 电子定时器的设计 ..................................................................................................................... 19
3.1总体的设计要求 .............................................................................................................. 19 3.2 系统硬件电路设计 ......................................................................................................... 19
3.2.1 芯片的选择 ......................................................................................................... 19 3.2.2 交流控制接口电路 ............................................................................................. 19 3.2.3显示电路 ................................................................................................................ 19 3.2.4 报警电路 ............................................................................................................. 19 3.3 系统程序的设计 ............................................................................................................. 20
3.3.1 主程序流程图 ..................................................................................................... 20
4 重要元件及重要电路 ................................................................................................................. 21
4.1 AT89C2051的内部结构及功能和引脚说明 .................................................................... 21
4.1.1 AT89C2051主要性能 .......................................................................................... 22 4.1.2 AT89C2051的内部结构 ...................................................................................... 22 4.1.3 AT89C2051的引脚说明 ...................................................................................... 24 4.2 继电器 ............................................................................................................................. 26
4.2.1、电磁继电器的工作原理和特性 ....................................................................... 26 4.2.2、继电器主要产品技术参数 ............................................................................... 26 4.2.3、继电器的电符号和触点形式 ............................................................................. 27 4.3数码管 .............................................................................................................................. 28
4.3.1、数码管的分类 ................................................................................................. 28 4.3.2、数码管的驱动方式 ........................................................................................... 28
5 软件设计..................................................................................................................................... 29
5.1 伪定义 ............................................................................................................................. 29 5.2 中断入口 ......................................................................................................................... 30 5.3 主程序 ............................................................................................................................. 31 5.4倒计时程序 ...................................................................................................................... 34 5.5 BCD子程序(加1或减1) ............................................................................................. 35 5.6加1程序 .......................................................................................................................... 36 5.7调时快进程序 .................................................................................................................. 37 5.8功能菜单程序 .................................................................................................................. 37 5.9到点工作程序 .................................................................................................................. 40 5.10响铃程序 ........................................................................................................................ 42 5.11显示程序 ........................................................................................................................ 43 5.12无显示(灭灯)程序 ........................................................................................................ 45
5
5.13延时程序 ........................................................................................................................ 45 5.14 ERR(出错处理)程序 ..................................................................................................... 47 结论 ................................................................................................................................................ 48 参考文献............................................................................................................错误!未定义书签。 致谢 ................................................................................................................................................ 49 附录 ................................................................................................................................................ 49
6
1 引言
我们在日常生活中,经常碰到一些需要定时的事情,例如:印相或放大照片,需要定在零点几秒的时间,洗衣机洗涤衣物需要定在几分钟到几十分钟的时间,电风扇需要定在数十分钟的时间。完成这种定时的定时器有多种多样,在家用电器中采用机械定时器就是根据一般上弦钟表原理设计的,这种定时器虽然结构简单,成本低,维修也比较方便,但是它的触头频繁接触和断开,大大的缩减了它的使用寿命,也不利于进一步全自动化。在电子技术突飞猛进的今天,电子定时器一定会逐步取而代之,这是不言而喻的。
本文是基于51系列单片机设计的一种用于控制家用电器的设计方案。
1.1课题的来源和意义
本课题是通过导师筛选提出的,电子设计课题不一定很大,只要通过亲手做一遍全过程,完成一个产品制作,收获是很大的。
本课题的意义在于通过设计和制作本课题把在学校学习到的知识融会贯通并应用到实际当中。做到学有所成,学有所用。并且希望通过本设计为节能减排做出贡献。
7
1.2电子定时器的应用
电子定时器在家用电器中经常用于延时自动关机、定时。延时自动关机可用于:收音机、电视机、录音机、催眠器、门灯、路灯、汽车头灯、转弯灯以及其他电器的延时断电及延时自停电源等。定时可用于:照相定时曝光、定时闪光、定时放大、定时调速、定时烘箱、冰箱门开定时报警、水位定时报警、延时催眠器、延时电铃、延时电子锁、触摸定时开关等。例如:空调中的定时器,在工作一段时间之后便能自动切断电源停止工作。夏季夜间使用,入睡前先顶好时间,等睡熟后到了预定时间,空调自动关机。方便节能。定时器除了应用于家用电器外,还广泛地用于工业农业生产和服务设施,甚至军事等。
1.3电子定时器的发展前景
传统的定时器绝大多数都是发条驱动式、电机传动式或电钟式等机械定时器,部分电子器械中也有试用时间继电器的。相对于传统的定时器,电子定时器的体积小、重量轻、造价低、精度高、寿命长、而且安全可靠、调整方便、适于频繁使用。所以电子定时器的发展必定大有前途。同时随着现代电子技术的发展,电子定时器也在不断的进步,朝向着更多用途、更高精度、更小体积发展着。
例如:一个可编程电子定时器,它可以设置20组开、关电源设置,可以当时钟使用,还也可以按星期组合让它在一周内的任意一天或几天按设置程序工作。而且它只有长12.5cm×宽5.5cm×厚5cm大小。且它的功耗特别小只有3W。 可以说是小巧玲珑,节能省电。
2 51单片机内部结构及计数原理 2.1 51单片机内部机构
51单片机内部有一个8位的CPU,同时CPU内部包含了运算器,控制器及若干寄存器。
8
从上图中我们可以看到,在虚线框内的就是CPU的内部结构了,8位的MCS-51单片机的CPU内部有数术逻辑单元ALU(Arithmetic Logic Unit)、累加器A(8位)、寄存器B(8位)、程序状态字PSW(8位)、程序计数器PC(有时也称为指令指针,即IP,16位)、地址寄存器AR(16位)、数据寄存器DR(8位)、指令寄存器IR(8位)、指令译码器ID、控制器等部件组成。
1、运算器(ALU)的主要功能
A)算术和逻辑运算,可对半字节(一个字节是8位,半个字节就是4位)和单字节数据进行操作。
B)加、减、乘、除、加1、减1、比较等算术运算。 C)与、或、异或、求补、循环等逻辑运算。 D)位处理功能(即布尔处理器)。
由于ALU内部没有寄存器,参加运算的操作数,必须放在累加器A中。累加器A也用于存放运算结果。 例如:执行指令 ADD A,B
执行这条指令时,累加器A中的内容通过输入口In_1输入ALU,寄存器B通过内部数据总线经输入口In_2输入ALU,A+B的结果通过ALU的输出口Out、内部数据总线,送回到累加器A。 2、程序计数器PC
PC的作用是用来存放将要执行的指令地址,共16位,可对64K ROM直接寻
9
址,PC低8位经P0口输出,高8位经P2口输出。也就是说,程序执行到什么地方,程序计数器PC就指到哪里,它始终是跟蹿着程序的执行。我们知道,用户程序是存放在内部的ROM中的,我们要执行程序就要从ROM中一个个字节的读出来,然后到CPU中去执行,那么ROM具体执行到哪一条呢?这就需要我们的程序计数器PC来指示。
程序计数器PC具有自动加1的功能,即从存储器中读出一个字节的指令码后,PC自动加1(指向下一个存储单元)。 3、指令寄存器IR
指令寄存器的作用就是用来存放即将执行的指令代码。
在这里我们先简单的了解下CPU执行指令的过程,首先由程序存储器(ROM)中读取指令代码送入到指令寄存器,经译码器译码后再由定时与控制电路发出相应的控制信号,从而完成指令的功能。关于指令在单片机内部的执行过程,我们在后面将会以另一节课来进行详细的讲解。 4、指令译码器ID
用于对送入指令寄存器中的指令进行译码,所谓译码就是把指令转变成执行此指令所需要的电信号。当指令送入译码器后,由译码器对该指令进行译码,根据译码器输出的信号,CPU控制电路定时地产生执行该指令所需的各种控制信号,使单片机正确的执行程序所需要的各种操作。 5、地址寄存器AR(16位)
AR的作用是用来存放将要寻址的外部存储器单元的地址信息,指令码所在存储单元的地址编码,由程序计数器PC产生,而指令中操作数所在的存储单元地址码,由指令的操作数给定。从上图中我们可以看到,地址寄存器AR通过地址总线AB与外部存储器相连。 6、数据寄存器DR
用于存放写入外部存储器或I/O端口的数据信息。可见,数据寄存器对输出数据具有锁存功能。数据寄存器与外部数据总线DB直接相连。 7、程序状态字PSW
用于记录运算过程中的状态,如是否溢出、进位等。 例如,累加器A的内容83H,执行:
ADD A,#8AH ;累加器A与立即数8AH相加,并把结果存放在A中。 指令后,将产生和的结果为[1]0DH,而累加器A只有8位,只能存放低8位,即0DH,元法存放结果中的最高位B8。为些,在CPU内设置一个进位标志位C,当执行加法运算出现进位时,进位标志位C为1。 8、时序部件
10
由时钟电路和脉冲分配器组成,用于产生微操作控制部件所需的定时脉冲信号
2.2计数原理
80C51单片机内部设有两个16位的可编程定时器/计数器。可编程的意思是指其功能(如工作方式、定时时间、量程、启动方式等)均可由指令来确定和改变。在定时器/计数器中除了有两个16位的计数器之外,还有两个特殊功能寄存器(控制寄存器和方式寄存器)。 定时器/计数器的结构:
从上面定时器/计数器的结构图中我们可以看出,16位的定时/计数器分别由两个8位专用寄存器组成,即:T0由TH0和TL0构成;T1由TH1和TL1构成。其访问地址依次为8AH-8DH。每个寄存器均可单独访问。这些寄存器是用于存放定时或计数初值的。此外,其内部还有一个8位的定时器方式寄存器TMOD和一个8位的定时控制寄存器TCON。这些寄存器之间是通过内部总线和控制逻辑电路连接起来的。TMOD主要是用于选定定时器的工作方式;TCON主要是用于控制定时器的启动停止,此外TCON还可以保存T0、T1的溢出和中断标志。当定时器工作在计数方式时,外部事件通过引脚T0(P3.4)和T1(P3.5)输入。
定时计数器的原理:
16位的定时器/计数器实质上就是一个加1计数器,其控制电路受软件控制、切换。
当定时器/计数器为定时工作方式时,计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出为止。显然,定时器的定时时间与系统的振荡频率有关。因一个机器周期等于12个振荡周期,所以计数频率fcount=1/12osc。如果晶振为12MHz,则计数周期为:
T=1/(12×106)Hz×1/12=1μs
这是最短的定时周期。若要延长定时时间,则需要改变定时器的初值,并要适当选择定时器的长度(如8位、13位、16位等)。
当定时器/计数器为计数工作方式时,通过引脚T0和T1对外部信号计数,外部脉冲的下降沿将触发计数。计数器在每个机器周期的S5P2期间采样引脚输入电平。若一个机器周期采样值为1,下一个机器周期采样值为0,则计数器加1。此后的机器周期S3P1期间,新的计数值装入计数器。所以检测一个由1至0的跳变需要两个机器周期,故外部事年的最高计数频率为振荡频率的1/24。例
11
如,如果选用12MHz晶振,则最高计数频率为0.5MHz。虽然对外部输入信号的占空比无特殊要求,但为了确保某给定电平在变化前至少被采样一次,外部计数脉冲的高电平与低电平保持时间均需在一个机器周期以上。
当CPU用软件给定时器设置了某种工作方式之后,定时器就会按设定的工作方式独立运行,不再占用CPU的操作时间,除非定时器计满溢出,才可能中断CPU当前操作。CPU也可以重新设置定时器工作方式,以改变定时器的操作。由此可见,定时器是单片机中效率高而且工作灵活的部件。
综上所述,我们已知定时器/计数器是一种可编程部件,所以在定时器/计数器开始工作之前,CPU必须将一些命令(称为控制字)写入定时/计数器。将控制字写入定时/计数器的过程叫定时器/计数器初始化。在初始化过程中,要将工作方式控制字写入方式寄存器,工作状态字(或相关位)写入控制寄存器,赋定时/计数初值。下面我们就提出的控制字的格式及各位的主要功能与大家详细的讲解。
控制寄存器 定时器/计数器T0和T1有2个控制寄存器-TMOD和TCON,它们分别用来设置各个定时器/计数器的工作方式,选择定时或计数功能,控制启动运行,以及作为运行状态的标志等。其中,TCON寄存器中另有4位用于中断系统。 定时器/计数器方式寄存器TMOD:
定时器方式控制寄存器TMOD在特殊功能寄存器中,字节地址为89H,无位地址。TMOD的格式如下图所示。
由图可见,TMOD的高4位用于T1,低4使用于T0,4种符号的含义如下: GATE:门控制位。GATE和软件控制位TR、外部引脚信号INT的状态,共同控制定时器/计数器的打开或关闭。
C/T:定时器/计数器选择位。C/T=1,为计数器方式;C/T=0,为定时器方式。
M1M0:工作方式选择位,定时器/计数器的4种工作方式由M1M0设定。
12
定时器/计数器方式控制寄存器TMOD不能进行位寻址,只能用字节传送指令设置定时器工作方式,低半字节定义为定时器0,高半字节定义为定时器1。复位时,TMOD所有位均为0。
定时器/计数器控制寄存器TCON:
TCON在特殊功能寄存器中,字节地址为88H,位地址(由低位到高位)为88H一8FH,由于有位地址,十分便于进行位操作。
TCON的作用是控制定时器的启、停,标志定时器溢出和中断情况。 TCON的格式如下图所示。其中,TFl,TRl,TF0和TR0位用于定时器/计数器;IEl,ITl,IE0和IT0位用于中断系统。
各位定义如下:
TF1:定时器1溢出标志位。当字时器1计满溢出时,由硬件使TF1置“1”,并且申请中断。进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件清“0”。
TR1:定时器1运行控制位。由软件清“0”关闭定时器1。当GATE=1,且INT1为高电平时,TR1置“1”启动定时器1;当GATE=0,TR1置“1”启动定时器1。
TF0:定时器0溢出标志。其功能及操作情况同TF1。 TR0:定时器0运行控制位。其功能及操作情况同TR1。
13
IE1:外部中断1请求标志。 IT1:外部中断1触发方式选择位。 IE0:外部中断0请求标志。 IT0:外部中断0触发方式选择位。
TCON中低4位与中断有关,我们将在下节课讲中断时再给予讲解。由于TCON是可以位寻址的,因而如果只清溢出或启动定时器工作,可以用位操作命令。例如:执行“CLR TF0”后则清定时器0的溢出;执行“SETB TR1”后可启动定时器1开始工作(当然前面还要设置方式定)。 定时器/计数器的初始化:
由于定时器/计数器的功能是由软件编程确定的,所以一般在使用定时/计数器前都要对其进行初始化,使其按设定的功能工作。初始货的步骤一般如下:
1、确定工作方式(即对TMOD赋值);
2、预置定时或计数的初值(可直接将初值写入TH0、TL0或TH1、TL1); 3、根据需要开放定时器/计数器的中断(直接对IE位赋值);
4、启动定时器/计数器(若已规定用软件启动,则可把TR0或TR1置“1”;若已规定由外中断引脚电平启动,则需给外引脚步加启动电平。当实现了启动要求后,定时器即按规定的工作方式和初值开始计数或定时)。
因为在不同工作方式下计数器位数不同,因而最大计数值也不同。 现假设最大计数值为M,那么各方式下的最大值M值如下: 方式0:M=213=8 192 方式1:M=216=65 536 方式2:M=28=256
方式3:定时器0分成两个8位计数器,所以两个M均为256。
14
因为定时器/计数器是作“加1”计数,并在计数满溢出时产生中断,因此初值X可以这样计算:
X=M-计数值
定时器/计数器的四种工作方式:
定T0或T1无论用作定时器或计数器都有4种工作方式:方式0、方式1、方式2和方式3。除方式3外,T0和T1有完全相同的工作状态。下面以T1为例,分述各种工作方式的特点和用法。
工作方式0: 13位方式由TL1的低5位和TH1的8位构成13位计数器(TL1的高3位无效)。工作方式0的结构见下图:
为定时/计数选择:C/T=0,T1为定时器,定时信号为振荡周期12分频后的脉冲;C/T=l,T1为计数器,计数信号来自引脚T1的外部信号。 定时器T1能否启动工作,还受到了R1、GATE和引脚信号INT1的控制。由图中的逻辑电路可知,当GATE=0时,只要TR1=1就可打开控制门,使定时器工作;当GATE=1时,只有TR1=1且INT1=1,才可打开控制门。GATE,TR1,C/T的状态选择由定时器的控制寄存器TMOD,TCON中相应位状态确定,INT1则是外部引脚上的信号。
在一般的应用中,通常使GATE=0,从而由TRl的状态控制Tl的开闭:TRl=1,打开T1;TRl=0,关闭T1。在特殊的应用场合,例如利用定时器测量接于INT1引脚上的外部脉冲高电平的宽度时,可使GATE=1,TRl=1。当外部脉冲出现上升沿,亦即INT1由0变1电平时,启动T1定时,测量开始;一旦外部脉冲出现下降沿,亦即INT1由l变O时就关闭了T1。
15
定时器启动后,定时或计数脉冲加到TLl的低5位,从预先设置的初值(时间常数)开始不断增1。TL1计满后,向THl进位。当TL1和THl都计满之后,置位T1的定时器回零标志TFl,以此表明定时时间或计数次数已到,以供查询或在打开中断的条件下,可向CPU请求中断。如需进一步定时/计数,需用指令重置时间常数。
方式0是13位计数结构的工作方式,其计数器由TH0全部8位和TL0的低5位构成。当TL0的低5位计数溢出时,向TH0进位,而全部13位计数溢出时,则向计数溢出标志位TF0进位。 ⑵ TMOD寄存器初始化
为把定时器/计数器1设定为方式0,则M1M0=00;为实现定时功能,应使C/T=0;为实现定时
器/计数器1的运行控制,则GATE=0。定时器/计数器0不用,有关位设定为0。因此TMOD寄存 器应初始化为00H。
⑶ 由定时器控制寄存器TCON中的TR1位控制定时的启动和停止 TR1=1启动,TR1=0停止。 工作方式1:
1是16位计数结构的工作方式,计数器由TH0全部8位和TL0全部8位构成。与工作方式0基本相同,区别仅在于工作方式1的计数器TL1和TH1组成16位计数器,从而比工作方式0有更宽的定时/计数范围。 工作方式2
8位自动装入时间常数方式。由TLl构成8位计数器,THl仅用来存放时间常数。启动T1前,TLl和THl装入相同的时间常数,当TL1计满后,除定时器回零标志TFl置位,具有向CPU请求中断的条件外,THl中的时间常数还会自动地装入TLl,并重新开始定时或计数。所以,工作方式2是一种自动装入时间常数的8位计数器方式。由于这种方式不需要指令重装时间常数,因而操作方便,在允许的条件下,应尽量使用这种工作方式。当然,这种方式的定时/计数范围要小于方式0和方式1。工作方式2的结构见下图.
16
当计数溢出后,不是像前两种工作方式那样通过软件方法,而是由预置寄存器TH以硬件方法自动给计数器TL重新加载。变软件加载为硬件加载。
初始化时,8位计数初值同时装入TL0和TH0中。当TL0计数溢出时,置位TF0,同时把保存在预置寄
存器TH0中的计数初值自动加载TL0,然后TL0重新计数。如此重复不止。这不但省去了用户程序中的
重装指令,而且也有利于提高定时精度。但这种工作方式下是8位计数结构,计数值有限,最大只能到255。
这种自动重新加载工作方式非常适用于循环定时或循环计数应用,例如用于产生固定脉宽的脉冲,
此外还可以作串行数据通信的波特率发送器使用。 工作方式3
2个8位方式。工作方式3只适用于定时器0。如果使定时器1为工作方式3,则定时器1将处于关闭状态。
当T0为工作方式3时,THo和TL0分成2个独立的8位计数器。其中,TL0既可用作定时器,又可用作计数器,并使用原T0的所有控制位及其定时器回零
17
标志和中断源。TH0只能用作定时器,并使用T1的控制位TRl、回零标志TFl和中断源,见下图。
通常情况下,T0不运行于工作方式3,只有在T1处于工作方式2,并不要求中断的条件下才可能使用。这时,T1往往用作串行口波特率发生器(见1.4),TH0用作定时器,TL0作为定时器或计数器。所以,方式3是为了使单片机有1个独立的定时器/计数器、1个定时器以及1个串行口波特率发生器的应用场合而特地提供的。这时,可把定时器l用于工作方式2,把定时器0用于工作方式3。
下才可能使用。这时,T1往往用作串行口波特率发生器,TH0用作定时器,TL0作为定时器或计数器。所以,方式3是为了使单片机有1个独立的定时器/计数器、1个定时器以及1个串行口波特率发生器的应用场合而特地提供的。这时,可把定时器l用于工作方式2,把定时器0用于工作方式3。
18
3 电子定时器的设计 3.1总体的设计要求
本文所涉及的电子定时器要求能定时给电器供电或断电,最大时间可以长达30h,操作使用方便,采用AT89C2051单片机控制,4位共阳数码管显示时间,继电器做电器电源输出控制。
3.2 系统硬件电路设计 3.2.1 芯片的选择
硬件电路要实现对交流大电流电源的控制、定时时间的设定显示和到点提醒等功能。若采用40脚的单片机有利于设计,但会增大电路板的体积。本设计采用ATMEL公司的AT89C2051单片机,芯片位20脚,体积小,工作电压范围宽(2.7V~6V)。性价比比较高。
3.2.2 交流控制接口电路
交流接口电路可以选择继电器控制,也可采用可控硅控制等。本设计采用的是前一种——继电器控制。
3.2.3显示电路
显示电路采用4个共阳极LED数码管。为了在定时达到分(钟)的时候能显示出时钟在计时,两个数码管之间增加一个发光二极管,以其闪烁来代表秒走动;为了使硬件电路简单,采用单片机直接驱动LED数码管(AT89C2051输出口能吸收20mA电流),用动态扫描法实现LED显示。
3.2.4 报警电路
报警电路采用普通的5V成品蜂鸣器。
19
3.3 系统程序的设计
程序采用模块化、结构化设计,并采用软件抗干扰,使软件的可靠性比较高,可维护性较强。
主要模块有: 1) 主程序 2) 菜单程序 3) 到点工作程序 4) 抗干扰程序
3.3.1 主程序流程图 N Y N F键被按下? Y 20 开始 关中断,设置堆栈 有上电复位标志? 冷启动 全面初始化 热启动 恢复正常 调用显示程序 调用显示程序,设定时间
N 开始计时、工作 到点了吗? 停止计时, 调用到点工作程序 结束 4 重要元件及重要电路
4.1 AT89C2051的内部结构及功能和引脚说明
AT89C2051是美国ATMEL公司生产的低电压、高性能CMOS 8位单片机,片内含2k bytes的可反复擦写的只读程序存储器(PEROM)和128bytes的随机数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,功能强大AT89C2051单片机可为您提供许多高性价比的应用场合。
程序保密
89C2051设计有2个程序保密位,保密位1被编程之后,程序存储器不能再被编程除非做一次擦除,保密位2被编程之后,程序不能被读出。 软硬件的开发
89C2051可以采用下面2种方法开发应用系统。
(1) 由于89C2051内部程序存贮器为Flash,所以修改它内部的程序十分方便快捷,只要配备一个可以编程89C2051的编程器即可。调试人员
21
可以采用程序编辑-编译-固化-插到电路板中试验这样反复循环的方法,对于熟练的MCS-51程序员来说,这种调试方法并不十分困难。当做这种调试不能够了解片内RAM的内容和程序的走向等有关信息。
(2) 将普通8031/80C31仿真器的仿真插头中P1.0~P1.7和P3.0~P3.6引出来仿真205T,这种方法可以运用单步、断点的调试方法,但是仿真不够真实,比如,2051的内部模拟比较器功能,P1口、P3口的增强下拉能力等等。
4.1.1 AT89C2051主要性能
AT89C2051是ATMEL公司生产的带2K字节闪速可编程可擦除只读存储器(EEPROM)的8位单片机,它具有如下主要特性:
·和MCS-51产品的兼容 ·2K字节可重编程闪速存储器 ·耐久性:1,000写/擦除周期 ·2.7V~6V的操作范围 ·全静态操作:0Hz~24MHz ·两级加密程序存储器 ·128×8位内部RAM ·15根可编程I/O引线 ·两个16位定时器/计数器 ·六个中断源 ·可编程串行UART通道 ·直接LED驱动输出 ·片内模拟比较器 ·低功耗空载和掉电方式
4.1.2 AT89C2051的内部结构
AT89C2051是一带有2K字节闪速可编程可擦除只读存储体(EEPROM)的低电压,高性能8位CMOS微型计算机。如图2所示。它采用ATMEL的高密非易失存储技术制造并和工业标准MCS—51指令集和引脚结构兼容。通过在单块芯片上组合通用的CPL1和闪速存储器,ATMEL
22
AT89C2051是一强劲的微型计算机,它对许多嵌入式控制应用提供一高度灵活和成本低的解决办法。
图1 AT89C2051的内部结构图
23
图2 AT89C2051内部示意图
此外,从AT89C2051内部结构图也可看出,其内部结构与8051内部结构基本一致(除模拟比较器外),引脚RST、XTAL1、XTAL2的特性和外部连接电路也完全与51系列单片机相应引脚一致,但P1口、P3口有其独特之处
4.1.3 AT89C2051的引脚说明
AT89C2051是一个有20个引脚的芯片,引脚如图1所示,与8051内部结构进行对比可发现,AT89C2051减少了两个对外端口(即P0、P2口),使它最大可能地减少了对外引脚,因而芯片尺寸有所减少。 AT89C2051芯片的20个引脚功能为:
1.Vcc:电源电压。 2. GND:地。
3. P1口:P1口是一8位双向I/O口。口引脚P1.2~P1.7提供内部上拉电阻。
24
P1.0和P1.1要求外部上拉电阻。P1.0和P1.1还分别作为片内精密模拟比较器的同相输入(AIN0)和反相输入(AIN1)。P1口输出缓冲器可吸收20mA电流并能直接驱动LED显示。当P1口引脚写入“1”时,其可用作输入端。当引脚P1.2~P1.7用作输入并被外部拉低时,它们将因内部的上拉电阻而流出电流(IIL)。
P1口还在闪速编程和程序校验期间接收代码数据。
4. P3口:P3口的P3.0~P3.5、P3.7是带有内部上拉电阻的七个双向I/0引脚。P3.6用于固定输入片内比较器的输出信号并且它作为一通用I/O引脚而不可访问。P3口缓冲器可吸收20mA电流。当P3口引脚写入“1”时,它们被内部上拉电阻拉高并可用作输入端。用作输入时,被外部拉低的P3口引脚将用上拉电阻而流出电流(IIL)。
P3口还用于实现AT89C2051的各种功能,如下表1所示。
P3口还接收一些用于闪速存储器编程和程序校验的控制信号。 5. RST:复位输入。RST一旦变成高电平,所有的I/O引脚就复位到“1”。当振荡器正在运行时,持续给出RST引脚两个机器周期的高电平便可完成复位。每一个机器周期需12个振荡器或时钟周期。
6. XTAL1:作为振荡器反相放大器的输入和内部时钟发生器的输入。 7. XTAL2:作为振荡器反相放大器的输出。
P3口引脚 P3.0 P3.1 P3.2 P3.3 P3.4 P3.5 功能 RXD(串行输入端口) TXD(串行输出端口) INT0(外中断0) INT1(外中断1) TO(定时器0外部输入) T1(定时器1外部输入) 表1 P3口的功能
从上述引脚说明可看出,AT89C2051没有提供外部扩展存储器与I/O设备所需的地址、数据、控制信号,因此利用AT89C2051构成的单片机应用系统不能在AT89C2051之外扩展存储器或I/O设备,也即AT89C2051本身即构成了最小单片机系统。
25
4.2 继电器
继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。
4.2.1、电磁继电器的工作原理和特性
电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力吸引的作用下克服返回弹簧的拉力吸向铁芯,从而带动衔铁的动触点与静触点(常开触点)吸合。当线圈断电后,电磁的吸力也随之消失,衔铁就会在弹簧的反作用力返回原来的位置,使动触点与原来的静触点(常闭触点)吸合。这样吸合、释放,从而达到了在电路中的导通、切断的目的。对于继电器的“常开、常闭”触点,可以这样来区分:继电器线圈未通电时处于断开状态的静触点,称为“常开触点”;处于接通状态的静触点称为“常闭触点”
4.2.2、继电器主要产品技术参数
1、额定工作电压
额定工作电压是指继电器正常工作时线圈所需要的电压。根据继电器的型号不同,可以是交流电压,也可以是直流电压。 2、直流电阻
直流电阻是指继电器中线圈的直流电阻,可以通过万能表测量。 3、吸合电流
吸合电流是指继电器能够产生吸合动作的最小电流。在正常使用时,给定的电流必须略大于吸合电流,这样继电器才能稳定地工作。而对于线圈所加的工作
26
电压,一般不要超过额定工作电压的1.5倍,否则会产生较大的电流而把线圈烧毁。
4、释放电流 释放电流
是指继电器产生释放动作的最大电流。当继电器吸合状态的电流减小到一定程度时,继电器就会恢复到未通电的释放状态。这时的电流远远小于吸合电流。 5、触点切换电压和电流
触点切换电压和电流是指继电器允许加载的电压和电流。它决定了继电器能控制电压和电流的大小,使用时不能超过此值,否则很容易损坏继电器的触点。
4.2.3、继电器的电符号和触点形式
继电器线圈在电路中用一个长方框符号表示,如果继电器有两个线圈,就画
两个并列的长方框。同时在长方框内或长方框旁标上继电器的文字符号“J”。继电器的触点有两种表示方法:一种是把它们直接画在长方框一侧,这种表示法较为直观。另一种是按照电路连接的需要,把各个触点分别画到各自的控制电路中,通常在同一继电器的触点与线圈旁分别标注上相同的文字符号,并将触点组编上号码,以示区别。继电器的触点有三种基本形式:
1.动合型(H型)线圈不通电时两触点是断开的,通电后,两个触点就闭合。以合字的拼音字头“H”表示。
2.动断型(D型)线圈不通电时两触点是闭合的,通电后两个触点就断开。用断字的拼音字头“D”表示。
3.转换型(Z型)这是触点组型。这种触点组共有三个触点,即中间是动触点,上下各一个静触点。线圈不通电时,动触点和其中一个静触点断开和另一个闭合,线圈通电后,动触点就移动,使原来断开的成闭合,原来闭合的成断开状态,达到转换的目的。这样的触点组称为转换触点。用“转”字的拼音字头“z”表示。
27
4.3数码管
数码管是一种半导体发光器件,其基本单元是发光二极管。
4.3.1、数码管的分类
数码管按段数分为七段数码管和八段数码管,八段数码管比七段数码管多一个发光二极管单元(多一个小数点显示);按能显示多少个“8”可分为1位、2位、4位等等数码管;按发光二极管单元连接方式分为共阳极数码管和共阴极数码管。共阳数码管是指将所有发光二极管的阳极接到一起形成公共阳极(COM)的数码管。共阳数码管在应用时应将公共极COM接到+5V,当某一字段发光二极管的阴极为低电平时,相应字段就点亮。当某一字段的阴极为高电平时,相应字段就不亮。。共阴数码管是指将所有发光二极管的阴极接到一起形成公共阴极(COM)的数码管。共阴数码管在应用时应将公共极COM接到地线GND上,当某一字段发光二极管的阳极为高电平时,相应字段就点亮。当某一字段的阳极为低电平时,相应字段就不亮。
4.3.2、数码管的驱动方式
数码管要正常显示,就要用驱动电路来驱动数码管的各个段码,从而显
示出我们要的数字,因此根据数码管的驱动方式的不同,可以分为静态式和动态式两类。
① 静态显示驱动:静态驱动也称直流驱动。静态驱动是指每个数码管的每一个段码都由一个单片机的I/O端口进行驱动,或者使用如BCD码二-十进制译码器译码进行驱动。静态驱动的优点是编程简单,显示亮度高,缺点是占用I/O端口多,如驱动5个数码管静态显示则需要5×8=40根I/O端口来驱动,要知道一个89S51单片机可用的I/O端口才32个呢:),实际应用时必须增加译码驱动器进行驱动,增加了硬件电路的复杂性。
28
② 动态显示驱动:数码管动态显示接口是单片机中应用最为广泛的一种显示方式之一,动态驱动是将所有数码管的8个显示笔划\"a,b,c,d,e,f,g,dp\"的同名端连在一起,另外为每个数码管的公共极COM增加位选通控制电路,位选通由各自独立的I/O线控制,当单片机输出字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决于单片机对位选通COM端电路的控制,所以我们只要将需要显示的数码管的选通控制打开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的COM端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码管的点亮时间为1~2ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据,不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的I/O端口,而且功耗更低。
5 软件设计 5.1 伪定义
SL EQU 30H ;SL存放秒的个位数 SH EQU 3lH ;SH存放秒的十位数 ML EQU 32H ;ML存放分的个位数 MH EQU 33H ;MH存放分的十位数 HL EQU 34H ;HL存放小时的个位数 HH EQU 35H ;HH存放小时的十位数 ;
L0 EQU 36H ;L0~L3:显示数据存储器 L1 EQU 37H L2 EQU 38H L3 EQU 39H
DSPLYP EQU 3AH ;显示数据指针(DISPLAY—POINT) PLYTS EQU 3BH ;显示次数计数器(DISPLAY—TIMES) ;
LPLMOD BIT 39H ;低两位显示方式(LOW—PLAY—MOD) HPLMOD BIT 3AH ;高两位显示方式(HIGH—PLAY—MOD)
29
BRIGHT BIT 3BH :DISPLAY子程序参数:亮/灭指示位 ;
TCOUNT EQU 3CH ;时间计数器(TIME—COUNT) ;
ADDRES EQU 3DH ,加l子程序参数 MAX EQU 3EH ;加l子程序参数 IFDEC BIT 20H ;BCD加法子程序参数 ;
R_MOD EQU 3FH ;响铃方式参数 ;
LED4 BIT 30H ;发光管状态位 BELL BIT P1.7 ;蜂鸣器 WITCH BIT P3.7 ;继电器
FKEY BIT P3.0 ;功能键(S1) MKEY BIT P3.1 ;修改键(S2) ;
WORKIN BIT 38H ;工作状态指示位
5.2 中断入口
ORG 0000H
START: LJMP MAIN ;0000H引向主程序
LJMP ERR ;0003H NOP NOP
LJMP ERR ;引向出错处理程序
LJMP PGT0 ;000BH引向中断处理程序PG丁0 NOP NOP
LJMP ERR ;引向出错处理程序 LJMP ERR ;0013H IN丁1 NOP NOP
LJMP ERR
LJMP ERR ;00lBH T1
30
NOP NOP
LJMP ERR
LJMP ERR ;0023H NOP NOP
LJMP ERR
LJMP ERR ;002BH NOP NOP
5.3 主程序
MAIN:MOV lE,#00H ;关中断
MOV SP,#57H ;设置堆栈指针 MOV PSW,#00H ;选用寄存器组0
MOV TMOD,#11H ;设定中断工作方式为T0和T1 ,
MOV A,56H
CJNE A,#0AAH,CSTART ;判断上电复位标志,无标志转冷启动 MOV A,57H
CJNE A,#55H,CSTART ;无标志转冷启动
AJMP HSTART ;有上电复位标志转热启动 NOP NOP
LJMP ERR ;软件陷阱,引向出错处理程序 CSTART:MOV P1,#0FFH ;冷启动,全面初始化
MOV P3,#0FFH
MOV TCON,#00H ;计时停止 MOV TL0,#0BOH ;赋中断T0初值 MOV TH0,#3CH
MOV TCOUNT,#0AH ;赋定时器初值 M()V R5,#00H ;R5为一空单元(备用) MOV R4,#00H ;R4为工作模式选择寄存器 MOV SI一#00H ;定时单元清零
31
MOV SH,#00H ;秒 MOV ML,#00H ; MOV MH,#00H ;分 MOV HL,#00H ; MOV HH,#00H ;时
MOV PLYTS,#64H ;赋显示次数初值为100次 MOV DSPLYP,#L0 ;显示指针指向显存单元 MOV LO,#0AH ;送显示数据“一一一一一” MOV L1, #0AH MOV L2,#0AH MOV L3,共04H
SETB LED4 ;LED4为数码管之间的发光二极管 SETB LPLMOD ;设定显示方式为闪烁 SETB HPLMOD ; SETB BRIGHT ;允许显示 CLR WORKIN ;清工作标志,待命 AJMP SETUP ;转开始工作 NOP NOP
LJMP ERR ;软件陷阱
HSTART:MOV SCON,#00H ;有上电标志,热启动,清串行口控制寄存器
MOV IP,#00H ;清中断优先控制寄存器 SETB FKEY ;重设按键 SETB MKEY
SETB EA ;开中断 AJMP BEGIN ;转向继续工作 NOP NOP
LJMP ERR ;软件陷阱 SETUP: SETB EA ;开中断
;
MAINl: ACALL DISPLY ;调用显示
JB FKEY,JUDGE ;按键扫描 ACALL KEYDLY ;延时消抖动
32
JB FKEY,JUDGE ;无键按下转向判断是否到点 CLR ET0 ;功能键被按下 CLR TR0 ;暂停计日寸 ACALL MENU ;调用菜单设置程序 BEGIN: SETB WORKIN ;置工作标志位,开始工作
SETB ET0 ;开中断 SETB TR0 ;开始计时 MOV A,R4 ;移人工作模式选择 RL A ;指针放大 MOV DPTR,并M—TAB
JMP @A+DPTR ;根据工作模式跳转到相应程序段
M—TAB: AJMP WORKl
AJMP WORK2 AJMP WORK3 AJMP WORK4 NOP NOP
LJMP ERR ;软件陷阱 WORKl: ;
WORK2: CLR SWITCH ;工作方式1和2:开继电器
AJMP MAIN2 NOP NOP
LJMP ERR ;软件陷阱 WORK3: ;
WORK4: SETB SWI丁CH ;工作方式3和4:不开继电器 MAIN2, CLR BELL ;蜂鸣器短鸣一声,以示开始工作 ACALL DL05S SETB BELL
JUDGl JNB WORKIN,MAINl :判断是否在定时之中 MOV A,SL ,判断秒是否为零 JNZ MAINl
MOV A,SH ;判断秒是否为零
33
JNZ MAINl
MOV A,ML ;判断分是否为零 JNZ MAINl
MOV A,MH ;判断分是否为零 JNZ MAINl
MOV A,HL ;判断时是否为零 JNZ MAINl
MOV A,HH ;判断时是否为零 JNZ MAINl ;若时、分、秒全为零 CLR ET0 ;停止计时 CLR TR0
ACALL ACTION ;调用到点工作子程序 AJMP MAIN ‘返回 NOP NOP
lJMP ERR ;软件陷阱 ;
5.4倒计时程序
PGTO: CLR EA ;关中断
PUSH ACC ;保护现场 PUSH PSW PUSH DPI PUSH DPH
MOy PSW,#08H ;选用寄存器组1 CLR TR0 ;暂停计时 MOV A,#0B7H ;中断同步修正 ADD A,TL0 MOV TL0,A MOV A,#3CH ADD A,TH0 MOV TH0,A
SETB TR0 ;恢复计时
34
DEC TCOUNT ;定时器T0每50 000 ms溢出一次 M()V A,TCOUNT ;溢出10次为0.5 s JNZ OUTT0 ;判断是否到0.5 s MOV 丁C()UNT,#0AH ;
CPL LED4 ;若到0.5 sI。ED取反 JNB LED4,OUTT0 ;LED每闪烁一次是1 s MOV R0,#SH ;移人秒位的地址
SETB IFDEC ;BCD子程序参数,使其做减法 ACALL ADDBCD ;调用BCD子程序,秒减l CJNE R3,#99H,OUTT0 ;判断秒是否要借位
MOV SH,#05H ;要借位则送数据59(否则显示99) MOV 5L,#09H
MOV R0,#MH ;移人分位的地址 ACALL ADDBCD ;分减l
CJNE R3,#99H,OUTT0;判断分是否要借位 MOV MH,#05H MOV ML,#09H MOV R0,#HH ACALL ADDBCD
OUTT0: POP DPH ;恢复现场 POP DPL POP PSW POP ACC SETB EA
R正TI ;中断返回 NOP NOP
LJMP ERR ;软件陷阱 ;
5.5 BCD子程序(加1或减1)
ADDBCD:M()V A,@R0 ;移入被操作数的高位
DEC R0 ;指针减1 SWAP A
35
ORL A,@R0 ;移人被操作数的低位 MOV B,#01H ;B寄存器送立即数#0\H M()V C,IFDEC ;减法标志位为l MOV B.3,C ;
MOV B.4,C ;B寄存器的值被改为#99H MOV B.7,C ;
ADD A,B ;对一个压缩的BCD码加捭99H等于对其减1 DA A ;BCD码调整 MOV R3,A ;暂存结果 ANI, A,#0FH ;取低位码 MOV @R0,A ;存数 MOV A,R3 ;取回结果 INC R0 ;指针加1 SWAP A ;交换
ANL A,#0FH ;取结果数的高位 MOV @R0,A ;存数 RET NOP NOP
LJMP ERR ;软件陷阱 ;
5.6加1程序
ADDONE:M()V R0,ADDRES ;移入被加数单元的地址
CLR IFDEC ;设定BCD子程序做加法 ACAI上 ADDBCD ;调用BCD子程序 CLR C ;判断被加数是否大于 MOV A,R3 ,最大值“MAX” CJNE A,MAK,JGOVER JGOVER: JC ENDAD()
CI,R A ;若大于“MAX”,则清零 MOV @R0,A DEC R0 MOV @R0,A
36
ENDADO:RET NOP N[)P ;
LJMP ERR ;软件陷阱 ;
5.7调时快进程序
QUICK: CLR LPLMOD ;设定显示方式不闪烁 CLR HPLMOD
ACALL ADDONE ;调用加1子程序 MOV Le,R4 ;将工作模式选择数移入显存 INC L0 ;加1转化成显示值 ACALL KEYDLY ;延时 ACAI。L DLl00
JNB MKEY,QUICK ;判断键是否松开 SETB LPLMOD ;若松开则恢复闪烁显示方式 CJNE R6,#02H,ENDQUK SETB HPLMOD CLR LPLMOD ENDQUK:RET NOP NOP
LJMP ERR ;软件陷阱 ;
5.8功能菜单程序
MENU: MOV R6,#00H ;初始化;R6计功能键按键次数
MOV ADDRES,#05H ;将R5的地址送人,以便于改变R4的值 MOV MAX,井04H ;定义工作模式选择寄存器R4的最大值 MOV DSPLYP,#L0 ;定义显示指针指向显存 SETB LPLMOD ;设定低两位数闪烁 CLR HPLMOD
MOV L0,R4 ;送显示数据“F一0X”
37
INC L0 M()V L1,#00H MOV L2,#0BH MOV L3,#00H SETB LED4 :
WAITFK:ACALL DISPI。Y ;等待F键释放 JNB FKEY,WAITFK MENUl: ACAI。L DISPLY
JB MKEY,JGFKEY ;M键扫描 ACAI。L KEYDLY ;延时消抖动 JB MKEY,JGFKEY ;未按下则转F键扫描 CJNE R6,#00H,NEXTl ;
MOV SL,#00H ;若中途改变定时方式,则清除原计时数据 M()V SH,#00H MOV ML,#00H MOV MH,#00H MOV HI。,#00H MOV HH,#00H
NEXTl: MOV R2,#00H ;R2用于判断按键时间是否超过0.5 s NEXT2: ACALI。 ADDONE ;调用加1程序 MOV L0,R4 ;移人工作方式选择数 INC L0 ;
WAITMK:ACAI。L DISPLY ;等待M键释放 INC R2 ;R2自增1 CI。R C
CJNE R2,#0C8H,JGQUIC;若R2大于等于200则调用快进子程序 JGQUIC: JC WATMKl ACALL QUICK
WATMKl:JNB MKEY,WAITMK;R2小于200则等待M键释放; JGFKEY: Jn FKEY,MENUl ;功能(F)键扫描 ACAI。L KEYDLY ; 延时消抖动
JB FKEY,MENUl ; 键未按下则转修改(M)键扫描
38
INC R6 ; F键按键次数加1 MOV A,R6 ; 移人按键次数 RL A ; 指针放大 MOV DPTR,#FUNTAB
JMP @A+DPTR ; 根据按键次数跳转到相应的程序段 FUNTAB:AJMP WAITFK AJMP SETLOW AJMP SETHI AJMP ENDMEN NOP NOP
AJMP ENDMEN ;
STWKMD: ; 工作模式设定,不需另外改变菜单 ; SETL()W:MOV MAX,#60H ;设置低位(秒位或分位) MOV A,R4 ; 移人工作模式选择数 RL A ; 指针放大 MOV DPTR,#FTABl
JMP @A+DPTR ; 根据工作模式选择数跳转到相应的程序段 FTABl: AJMP SETSS AJMl’ SETM60 AJMP SETSS AJMP SETM60 NOP NOP
AJMP WAITFK
SE丁SS: MOV DSPI。YP,#SL;设定显示区域为MM:SS MOV ADDRES,#SH AJMP WAITFK
SETM60: MOV DSPLYP,#ML ;设定显示区域为HH:MM MOV ADDRES,#MH AJMP WAITFK ;
SETHI: CLR LPLMOD ;设置高位(分位或时位) SETB HPLMOD ;高两位数码管闪烁
39
MOV MAX,#3lH ;最大数为30 MOV A,R4 ;移人工作模式选择数 RL A ;指针放大
MOV DPTR,#FTAB2 ;移人表首地址
JMP @A十DPTR ;根据工作模式选择数跳转到相应的程序段 F丁AB2: AJMP SETM30 AJMP SETHH · AJMP SETM30 AJMP SETHH N()P N()P
AJMP WAITFK ;返回等待键释放
SETM30: MOV ADDRES,#MH ;移人分位的地址 AJMP WAITFK ;转向等待键释放
SETHH: MOV ADDRES,#HH ;移人时位的地址 AJMP WAITFK ;转向等待键释放 ;
RNDMEN:CI。只 HPLMOD ;恢复不闪烁显示方式 RET N()P NOP
UMP ERR ;软件陷阱
5.9到点工作程序
ACTION: MOV L0,R4 ;移人工作模式选择数
INC L0 ;送显示数“F一0X” MOV L1,#00H M()V I。2,#0BH M()V L3,#00H SETB LED4
MOV DSPI。丫P,#L0 ;指针指向显存 SETB I,PI,MOD ;设定显示方式不闪烁 SETB HPLMOD
MOV A,R4 ;移人工作模式选择数
40
RL A ; MOV DPTR,#ATAB
JMP @A+DPTR ;根据工作模式选择数跳转 A—TAB: AJMP ACTFl ;工作模式一 AJMP ACTFl ;工作模式二 AJMP ACTF3 ;工作模式三 八JMP ACTF3 ;工作模式四 NOP NOP
LJMP ERR ;软件陷阱
ACTFl: SE丁B SWITCH ;工作模式一(或二):关继电器 M()V R—MOD,#82H ;响铃模式参数#82H MOV R2,#96H ¨向铃次数参数#96H ACTFll: ACALL RING ;调用响铃于程序 JNB MKEY,ENDACT ;等待键按下
JNB FKEY,ENDACT ;有键按下则结束p向铃 DJNZ R2,ACTFll ;次数未满继续响铃
MOV R—MOD,#0FFH ;参数#0FF使口向铃无效 AJMP ACTnl ;无键按下返回 NOP NOP
UMP ERR ;软件陷阱
ACTF3: ClR SWI了CH ;工作模式三(或四):开继电器 CLR BELL ;蜂鸣器短呜一声 ACALL DLlS SETB BELL
M()V R—M()D,#0FFH ;响铃模式参数#0FFH M()V R2,#96H ;向铃时间参数斡96H AC丁F3l: ACALL RING ;调用响铃子程序 JNB MKEY,ENDACT ;等待键按下 JNB FKEY,ENDACT ;有键按下则结束 DJNZ R2,ACTF31 ;次数未满继续 MOV R2,#96H ;重新赋值
CLR BELL ;短鸣一声(说明:响铃模式参数#0FFH使
41
;响铃程序无效,仅起延时作用, ;每延时一段时间短鸣一声,以 ;提醒使用者继电器仍在工作) ACAIL DLl00 SETB BELL AJMP ACTF3l NOP NOP
LJMP ERR ;软件陷阱
ENDACT:SETB SWITCH ;关继电器 AWAITF:ACALL DISPI。Y ;调用显示 JNB FKEY,AWAITF ;等待键释放 AWAITM:ACAI上 DISPLY ;调用显示 JNB MKEY,AWAITM ;等待键释放 RET NOP N()P
LJMP ERR ;软件陷阱
5.10响铃程序
RING: MOV R5,#18H ;R5为循环控制变量
RINGl: JNB MKEY,R—EXIT ;键扫描 JNB FKEY,R—EXIT ;有键按下则退出 MOV A,R—MOD ;移人响铃模式参数 M()V C,ACC。? ;根据响铃模式参数改变响铃 M()V BELI。,C RI。 A M()V lM()1),A
ACALL DI。100 ;延日寸 DJNZ R5,RINGl ;循环次数控制 R—EXIT: SETB B正I。l ;关闭响铃 RET NOP NOP
42
LJMP ERR ;软件陷阱
5.11显示程序
DISPLY: PUSH ACC ;数据压栈保护
PUSH PSW
MOV PSW.#1OH ;选用寄存器组2 MOV R0,DSPI。YP ;移入显示指针 M()V R2,#0FDH ;R2寄存的是数码管选通数 M()V A,PLYrS ;移人显示循环控制量 JNZ PIAY ;不为0则转PLAY M()V PlYTS,#64H ;否则从新赋值 CPL BRIGHT ;亮灭指示位取反
PLAY: DEC PI。YTS ;显示循环控制量减l
JNB LPLMOD,PIAYl ;低两位数码管不闪则“PLAYI。” JB, BRIGHT,PLAYL ;亮灭指示为1也“PLAYL” ACALL NOPI。AY ;否则灭灯延时 AJMP PLAYl ;转显示高位数码管 NOP NOP
LJMP ERR ;软件陷阱 ;用来显示低位
PLAYL: ORL P1,井?FH ,清原显示数据 ORL P3,#3CH ;清原选通数据 MOV A,R2 ;移人数码管位选数 RL A ;换一位
ANI- P3,A ;选通低位的个位数码管 MOV R2,A ;暂存位选数 MOV A,@R0 ;移人显示数值 MOV DPTR,#TABLn ;移人表首地址 MOVC A,@A十DPTR ;查表 ANL P1,A ;送显示数据 ACALL DLlMS ;延日寸 INC R0 ;指向低位的十位数
JB P3.3,PLAYL ;显示低位的十位数
43
;
PI。AYl: JNB HPLM()D,PI。AYH;高两位数码管不闪则“PI。AYH” JB BRIGHT,PLAYH ;亮灭指示为1也“P1。AYH” ACALL NOPI。AY ;否则灭灯延时 AJMP OUT尸I。Y ;转结束 NOP NOP
LJMP ERR ;软件陷阱 ;
;用来显示高位
PLAYH: ORL Pl,#7FH ;清原显示数据 ORL P3,#3CH ;清原选通数据
ANL P3,#0EFH ;选通高位的个位数数码管 M()V A,@R0 ;移人显示数值
MOV DPTR,#TABL置1 ;移人表首地址 MOVC A,@A+DPTR ;查表 ANL Pl,A ;送显示数据 ACALL DLlMS ;延时 INC R0 ;指向高位的十位数 ;显示高位的十位数 ORL Pl,#7FH ;清原显示数据 ORL P3,#3CH ;清原选通数据 ANL P3,#0DFH ;选通高位的十位数 MOV A,@R0 ;移人显示数值 MOV C,LED4 ;指针放大十小灯状态 RLC A ;
MOV DPTR,#TABLE2 ;移人表首地址 MOVC A,@A十DPTR ;查表 ANI。 P1,A ;送显示数据 ACALL DI。1MS ;延时 ;
OUTPLY:P()P PSW ;恢复数据 POP ACC RET
44
NOP NOP
IJMP ERR ;软件陷阱 ;
TABI-El: DB 0COH,0F9H,0A4H,0BOH,99H.92H,82H,0F8H,80H,90H,0BFH,8EH,0FFH
; “0”’“l”· ... ... “9”’ “一”’“F”’“ ” ;
飞’ABI。E2: DB 0FFH,01)FH.0F9H,0D9H,0A4H, 84H,0BOH, 90H,0BFH,09FH
; “ ”, “:”, “1”. “1:”, ”2”. “2:”, “3”, “3:”. “一”, “一:
5.12无显示(灭灯)程序
NOPLAY:ORL P1。#7FH ;清显示数据
ORL P3,#3CH ;清选通数据 INC R0 ;指针自增2 1NC R0
ACALL Dl。1MS ;延时 RET NOP NOP’
LJMP ERR ;软件陷阱
5.13延时程序
DLIMS: M()V R3,#0F9H;延时1 250 s只为DISPLY所调用
DL1MSl: NOP NOP N()P
DJNZ R3,DLlMSl RET NOP NOP
45
LJMP ERR ;软件陷阱 ;
KEYDl,Y:CLR BELL ;按键消抖动专用延时程序, ACALL DISPLY ;在消除抖动的同时发出按键提示音 SETB BELL RET NOP NOP
LJMP ERR ;软件陷阱 ;
DL50MS: MOV R7.#0AH ;50 nls延时程序
DL50M1: ACALL DISPlY ;每调用一次显示程序5 ms DJNZ R7,[)L50M1 ;调用10次 RET NOP NOP
LJMP ERR ;软件陷阱 ;
DL100: ACALL DL50MS ;延时100 ms ACALL DL50MS RET NOP NOP
LJMP ERR ;软件:陷阱 ;
DL05S: ACALL DL100 ;延时0,i5s ACALL DLT00 ACALL DL100 ACAlLL DlL100 ACALL DL100 RET NOP NOP
UMP ERR ;软件陷阱
46
;
DLlS; ACALL DL05S ;延时1 s ACALL DL05S RET NOP NOP
LJMP ERR ;软件陷阱
5.14 ERR(出错处理)程序
ERR: CLR EA ;关中断
MOV DPTR,#ERRl ;准备返回地址 PUSH DPL ;压栈 PUSH DPH ; RETI 中断返回
ERRl: MOV 56H,#0AAH ;建立上电标志(出错标志) MOV 57H,#55H
MOV A,#00H ;准备返回地址 PUSH A ;压栈 PUSH A
RETI ;,中断返回 ’ NOP NOP
LJMP ERR ;软件陷阱 ORG 07FAH NOP NOP NOP
LJMP ERR ;软件陷阱 END ;程序结束
47
结论
本文在回顾电子定时器发展历程的基础上,首先阐述了电子定时器的基本原理,进而详细介绍了和电子定时器相关的各种专业名词和术语。
硬件选型方面选用ATMEL公司的AT89C2051单片机作为核心,用LED数码管显示和继电器作为电源输出控制。论文的软件部分给出了系统运行的流程图和程序。
由于能力和知识水平的限制,设计中存在着不足。如硬件选择和连接可能有不合理,定时器中未能有电子表功能等人性化部分,以后还需改进。
从这次毕业论文设计中,无论对于单片机还是定时器,都进一步清晰了设计概念、学习了专业理论、掌握了芯片知识,而且还增长了实践经验,提高了认知水平,促进了自学能力。从诸多方面获得了很大的收益。
48
致谢
我要感谢衢州职业技术学院信息工程学院的老师们以及在本学习期间所有教过我的老师们,是你们教导与经验给我打下了知识基础,也促使了我论文的顺利完成。还有2008届应用电子专业的全部同学,是你们构筑了浓厚的学术氛围与和谐的集体环境,让我能满怀信心地挑战每一个困难。且行且珍惜,在今后的人生道路上,希望我们都能取得更大的进步与成绩。
附录
49
因篇幅问题不能全部显示,请点此查看更多更全内容