ALE/PROG(30):当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。
(29):外部程序存储器的选通信号。在由外部程序存储器取指令期间,
每个机器周期两次PSEN有效。但在访问外部数据存储器时,这两次有效的
PSENPSEN信号将不出现。
__EA/VPP(31):当保持低电平时,则在此期间外部程序存储器
__(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,EA将内部
EA锁定为RESET;当EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1(19):反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2(18):来自反向振荡器的输出。其引脚图如图2所示。
__端口引脚P3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7第二功能RXD(串行输入口)TXD(串行输出口) (INT0外中断0) (INT1外中断1)T0(定时/计数0)T1(定时/计数1) (外部数据存储器写选通)WR (RD外部数据存储器读选通)_______________
表1.P3端口引脚兼用功能表 图2.AT89C51引脚图
4.1.3 振荡器特性
XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2
5
应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。 4.1.4芯片擦除
整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦除操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。
此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。
4.1.5 AT89C51最小系统
AT89C51最小系统中XTAL1、XTAL2端接上晶振及两个谐振电容,在RESET端接上相应的电阻、电容,如需要按键复位,加上按键即可组成一个最小系统,按要求通电后,系统就可以工作了。
4.2电路及连线设计
将MUC、LED和按键进行电路设计。
打开PROTEUS的ISIS编辑环境,从PROTEUS中选取该电路所需要的元器件,放置元器件、放置电源和地、连线得到如图3所示的电气原理图,再点菜单栏工具下拉的电气规则检查,当规则检查出现:“NETLIST GENERATED OK NO ERC ERRORD FOUND”,表示通过检查。电路设计完成。
6
图3电气原理图
5.软件设计
5.1 程序设计
程序设计(Programming)是指设计、编制、调试程序的方法和过程。它是目标明确的智力活动。在进行微机控制系统设计时,除了系统硬件设计外,大量的工作就是如何根据每个生产对象的实际需要设计应用程序。因此,软件设计在微机控制系统设计中占重要地位。对于本系统,软件也占有重要的地位。 在单片机控制系统中,大体上可分为数据处理、过程控制两个基本类型。数据处理包括:数据的采集、数字滤波、标度变换等。过程控制程序主要是使单片机按一定的方法进行计算,然后再输出,以便控制生产。
为了完成上述任务,在进行软件设计时,通常把整个过程分成若干个部分,每一部分叫做一个模块。把一个程序分成具有多个明确任务的程序模块,分别编制、调试后再把它们连接在一起形成一个完整的程序,这样的程序设计方法称为模块化程序设计。所谓“模块”,实质上就是能完成一定功能,并相对独立的程序段,这种程序设计方法称为模块程序设计法。
模块程序设计法的主要优点是:
(1)单个模块比起一个完整的程序易编写、调试及修改。 (2)程序的易读性好。
(3)程序的修改可局部化。
(4)模块可以共存,一个模块可以被多个任务在不同条件下调用。 (5)模块程序允许设计者分割任务和利用已有程序,为设计者提供方便。 本系统软件采用模块化结构,由主程序,正向流动、反向流动和延时等子程序构成。
7
5.2系统程序流程图
5.2.1主程序流程图
开 始 长跳转到Start P1.0=0? N P1.0=0? N Y 灯开始流动(至上而下) Y 停止 Y P1.0=0? N P1.0=0? N 灯由上而下流动 Y 灯由下而上流动
8
5.2.2正向流动程序流程图和反向流动程序流程图
9