资源描述
毕毕业业设设计计说说明明书书高精度计米器的仿真实现设计高精度计米器的仿真实现设计本科生毕业设计说明书(2010)1高精度计米器的仿真实现设计高精度计米器的仿真实现设计摘 要:高精度计米器是线缆制造必备的设备之一,高精度计米器具有计米准确、计数频率高、计米范围宽、加/减计米方式、多种控制输出方式等特点。高精度计米器是一种在线缆制造领域中广泛应用的测量设备。随着对产品质量要求的不断提高,工厂精细化管理水平的提高,以及科学技术水平的不断发展。在线缆制造行业中,对产品的长度精度也有更加严格的要求,对于计米器的设计及使用条件也有了更严格的要求。高精度计米器具有计米准确、计数频率高、计米范围宽、加/减计米方式、多种控制输出方式、抗干扰性能强、使用环境广、外形美观等特点。这种计米器由测长传动轮、测长信号接收和信号输出电路,计数显示表构成。传动轮通过与被测物的反向磨擦滚动,或与被测物生产主机的主轴的反向滚动,通过增量编码器接收测长传动轮同步信号,将所测的实际长度单位信号输出给计数器(光栅表),由计数器(光栅表)记录其累计长度。精度可控制在0.2%以内,具有很高的测量精度。本文以 AT89C52 单片机为核心,设计了高精度计米器的仿真系统。高精度计米器是由测长传动轮、测长信号接收和信号输出电路,计数显示表构成。控制系统主要由电源电路,按键电路, 传感器电路、显示电路、单片机控制电路构成。控制电路负责控制高精度计米器的工作过程,主要靠 AT89C52 单片机,送出相应的执行命令,使传感器、电源模块、显示屏等按程序通电运行;同时还可以检测和显示高精度的工作状态,并判断是否正常工作,一旦出现异常,会立即送出停止运行的命令,并发出声光报警。关键词:单片机 高精度计米器 AT89C52 仿真系统高精度计米器的仿真实现设计2Design of the Simulation to Precision MetersAbstract:High-precision meter counter is one of cable manufacturing equipment essential, high-precision meter counter with meter accuracy, counting high frequency meter range, plus / minus meter mode, a variety of ways of controlling the output characteristics. Precision Meters is a field in the cable manufacturing widely used measurement equipment. With the continuous improvement of product quality requirements, counting high frequency meter range, plus / minus meter mode, multi-output mode control, anti-jamming performance, the wide use of the environment, and beautiful appearance. This meter is controlled by measuring the length drive wheel, Measuring signal reception and signal output circuit, counting display table form. Drive wheel by friction with the measured object in the reverse roll, or spindle measured object production host the reverse rolling, measured by the incremental encoder to receive a long drive wheel synchronization signals, to the actual length of the unit of measurement signal output to counter (raster form), by the counter (raster form) for their total length. Accuracy can be controlled within 0.2%, with high accuracy. In this paper, AT89C52 microcontroller as the core, the design of high precision meter device simulation system. Precision Meters long drive by measuring wheel, measuring the length signal reception and signal output circuit, counting display table form. Control system consists of power supply circuit, key circuit, sensor circuit, display circuit, microprocessor control circuit. Control circuit controls the high-precision meter counter the work of the process depends mainly on AT89C52 microcontroller sends the appropriate implementation of the command, the sensor, power supply modules, displays and other electricity according to the procedure run; but also can detect and display the working status of high-precision, and to determine whether the work, if abnormal, will immediately send a command to stop running, complicated sound and light alarm.Key words: single-chip Precision Meters AT89S52 Simulation System本科生毕业设计说明书(2010)31 绪论 .51 .1 概述.51.2 课题背景与意义 .62 系统描述 .62.1 系统功能简介 .62.2 系统总体设计 .62.2.1 主控制器 .72.2.2 电源模块 .73 系统硬件设计 .73.1 AT89C52 单片机.83.1.1 引脚功能说明 .93.1.2 特殊功能寄存器: .113.1.3 中断寄存器 .123.1.4 数据存储器 .123.1.5 定时器 .133.1.6 波特率发生器 .153.1.7 可编程时钟输出 .163.1.8 时钟振荡器 .183.1.9 Flash 存储器的编程 .203.2 显示电路设计 .223.3 AT89C52 单片机最小系统设计.273.4 按键控制电路设计.273.5 电源电路设计.283.6 I2C Flash 芯片 .283.6.1 I2C 总线特点 .293.6.2 总线的构成及信号类型.293.6.3 总线基本操作 .294 系统软件设计 .304.1 程序设计要求 .304.2 KEIL C52 简介 .304.3 各模块软件设计 .314.3.1 LCD128*64 I/O 信号管脚 .314.3.2 继电器 .314.3.3 I2C Flash 芯片.315 系统调试与仿真 .345.1 软件仿真调试.345.1.1 Proteus 简介.345.1.2 仿真图 .34高精度计米器的仿真实现设计45.2 调试过程 .356 结束语 .38致 谢 .39参考文献 .40附 录 .41附录 1:.41附录 2.42本科生毕业设计说明书(2010)51 绪论1 .1 概述目前单片机渗透到我们生活的各个领域,几乎很难找到哪个领域没有单片机的踪迹。导弹的导航装置,飞机上各种仪表的控制,计算机的网络通讯与数据传输,工业自动化过程的实时控制和数据处理,广泛使用的各种智能 IC 卡,民用豪华轿车的安全保障系统,录像机、摄像机、全自动洗衣机的控制,以及程控玩具、电子宠物等等,这些都离不开单片机。更不用说自动控制领域的机器人、智能仪表、医疗器械了。因此,单片机的学习、开发与应用将造就一批计算机应用与智能化控制的科学家、工程师。单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域,大致可分如下几个范畴:1.在智能仪器仪表上的应用单片机具有体积小、功耗低、控制功能强、扩展灵活、微型化和使用方便等优点,广泛应用于仪器仪表中,结合不同类型的传感器,可实现诸如电压、功率、频率、湿度、温度、流量、速度、厚度、角度、长度、硬度、元素、压力等物理量的测量。采用单片机控制使得仪器仪表数字化、智能化、微型化,且功能比起采用电子或数字电路更加强大。例如精密的测量设备(功率计,示波器,各种分析仪) 。2.在工业控制中的应用用单片机可以构成形式多样的控制系统、数据采集系统。例如工厂流水线的智能化管芯片理,电梯智能化控制、各种报警系统,与计算机联网构成二级控制系统等。3.在家用电器中的应用可以这样说,现在的家用电器基本上都采用了单片机控制,从电饭褒、洗衣机、电冰箱、空调机、彩电、其他音响视频器材、再到电子秤量设备,五花八门,无所不在。4.在计算机网络和通信领域中的应用现代的单片机普遍具备通信接口,可以很方便地与计算机进行数据通信,为在计算机网络和通信设备间的应用提供了极好的物质条件,现在的通信设备基本上都实现了单片机智能控制,从手机,电话机、小型程控交换机、楼宇自动通信呼叫系统、列车无线通信、再到日常工作中随处可见的移动电话,集群移动通信,无线电对讲机等。5.单片机在医用设备领域中的应用单片机在医用设备中的用途亦相当广泛,例如医用呼吸机,各种分析仪,监护仪,超声诊断设备及病床呼叫系统等等。高精度计米器的仿真实现设计66.在各种大型电器中的模块化应用某些专用单片机设计用于实现特定功能,从而在各种电路中进行模块化应用,而不要求使用人员了解其内部结构。如音乐集成单片机,看似简单的功能,微缩在纯电子芯片中(有别于磁带机的原理) ,就需要复杂的类似于计算机的原理。如:音乐信号以数字的形式存于存储器中(类似于 ROM) ,由微控制器读出,转化为模拟音乐电信号(类似于声卡) 。在大型电路中,这种模块化应用极大地缩小了体积,简化了电路,降低了损坏、错误率,也方便于更换。 7.单片机在汽车设备领域中的应用单片机在汽车电子中的应用非常广泛,例如汽车中的发动机控制器,基于 CAN总线的汽车发动机智能电子控制器,GPS 导航系统,abs 防抱死系统,制动系统等等。此外,单片机在工商,金融,科研、教育,国防航空航天等领域都有着十分广泛的用途。1.2 课题背景与意义高精度计米器是线缆制造必备的设备之一,高精度计米器具有计米准确、计数频率高、计米范围宽、加/减计米方式、多种控制输出方式等特点。高精度计米器是一种在线缆制造领域中广泛应用的测量设备。随着对产品质量要求的不断提高,工厂精细化管理水平的提高,以及科学技术水平的不断发展。在线缆制造行业中,对产品的长度精度也有更加严格的要求,对于计米器的设计及使用条件也有了更严格的要求。高精度计米器具有计米准确、计数频率高、计米范围宽、加/减计米方式、多种控制输出方式、抗干扰性能强、使用环境广、外形美观等特点。这种计米器由测长传动轮、测长信号接收和信号输出电路,计数显示表构成。传动轮通过与被测物的反向磨擦滚动,或与被测物生产主机的主轴的反向滚动,通过增量编码器接收测长传动轮同步信号,将所测的实际长度单位信号输出给计数器(光栅表) ,由计数器(光栅表)记录其累计长度。精度可控制在0.2%以内,具有很高的测量精度。本系统的电路并不复杂,运用 AT89C52 来实现主控制器的控制与协调作用,通过按键设置,功能选择来模拟实现高精度计米器的仿真实现等各基本功能。虽然不能与电器市场上的计米器控制系统媲美,但也具有一定的实用性。2 系统描述2.1 系统功能简介高精度计米器系统完成功能如下:由测长传动轮、测长信号接收和信号输出电路,计数显示表构成。传动轮通过与被测物的反向磨擦滚动,或与被测物生产主机的主轴的反向滚动,通过增量编码器接收测长传动轮同步信号,将所测的实际长度单位信号输出给计数器(光栅表) ,由计数器(光栅表)记录其累计长度。本科生毕业设计说明书(2010)72.2 系统总体设计高精度计米器的总体原理框图如图 21,主要包括 AT89C52 主控制器,按键控制,时钟复位,电源模块,显示等部分。根据设计的控制要求及各方面的因素,在AT89C52 作为主控制器的基础上,模拟实现高精度计米器加/减计米方式、多种控制输出方式等工作进程,并可以进行不同方式选择下的运行过程等。具体的原理框图如图 21。图 21 2.2.1 主控制器主控制器主控制器负责控制与协调显示计米长度,并实现简单的控制算法。在高精度计米器中,主控制器是实现智能的中心部件,其工作效率的高低关系到系统效率的高低以及系统运行的稳定性。52 系列单片机成本低,稳定性好,且运行速度基本能满足该系统中采用 Atmel 公司生产的 AT89C52 来实现。单片机 AT89C52 主要用于实现高精度计米器的计数等工作进程,并可以进行不同方式选择下的运行过程等。2.2.2 电源模块电源模块高精度计米器采用直流电压电源电路。在固定式三端稳压器 LM7805 的 Vin 和GND 两端输入一个并不十分稳定的 12V 直流电压(该电压常常会因为市电电压的波动或负载的变化等原因而发生变化)。此直流电压经过 LM7805 的稳压和 C2 的滤波便在稳压电源的输出端产生了精度高、稳定度好的直流输出电压。本稳压电源可作单片机电路的电源。三端稳压器是一种标准化、系列化的通用线性稳压电源集成电路,以其体积小、成本低、性能好、工作可靠性高、使用简捷方便等特点,成为目前稳压电源中应用最为广泛的一种单片式集成稳压器件。高精度计米器的仿真实现设计83 系统硬件设计高精度计米器系统设计以 MCS-52 系列单片机中的 AT89C52 作为 CPU 进行系统扩展,由以下几个部分电路模块组成:按键控制电路,电源模块,显示电路,传感器电路,单片机控制电路控制电路。根据设计的控制要求及各方面的因素,在AT89C52 作为主控制器的基础上,模拟实现高精度计米器的工作进程。3.1 AT89C52 单片机AT89C52 是美国 ATMEL 公司生产的低电压,高性能 CMOS 8 位单片机,片内含 8k bytes 的可反复擦写的 Flash 只读 程序存储器和 256 bytes 的随机存取数据存储器(RAM) ,器件采用 ATMEL 公司的高密度、非易失性存储技术生产,与标 准 MCS-51 指令系统及 8052 产品引脚兼容,片内置通用 8 位中央处理器(CPU)和 Flash 存储单元,功能强大 AT89C52 单 片机适合于许多较为复杂控制应用场合。图 31主要性能参数: 与 MCS51 产品指令和引脚完全兼容 8k 字节可重擦写 Flash 闪速存储器 1000 次擦写周期 全静态操作:0Hz24MHz 三级加密程序存储器 2568 字节内部 RAM本科生毕业设计说明书(2010)9 32 个可编程 I/O 口线 3 个 16 位定时/计数器 8 个中断源 可编程串行 UART 通道 低功耗空闲和掉电模式功能特性概述:AT89C52 提供以下标准功能:8k 字节 Flash 闪速存储器,256 字节内部 RAM,32 个 I/O 口线,3 个 16 位定时/计数器, 一个 6 向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C52 可降至 0Hz 的静态逻辑操作, 并支持两种软件可选的节电工作模式。空闲方式停止 CPU 的工作,但允许 RAM,定时/计数器,串行通信口及中断系统继 续工作。掉电方式保存 RAM 中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。 图 32 图 333.1.1 引脚功能说明 Vcc:电源电压 GND:地 P0 口:P0 口是一组 8 位漏极开路型双向 I/O 口, 也即地址/数据总线复用口。作为输出口用时,每位能吸收电流的 方式驱动 8 个 TTL 逻辑门电路,对端口 P0 写“1”时,可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低 8 位)和数据总线复用,在访问期间激活内部上 拉电阻。在 Flash 编程时,P0 口接收指令字节,而在程序校验时,输出指令字节,校验时,要求外接上拉电阻。 P1 口:P1 是一个带内部上拉电阻的 8 位双向 I/O 口, P1 的输出缓冲级可驱动(吸收或输出电流)4 个 TTL 逻辑 门电路。对端口写“1” ,通过内部的高精度计米器的仿真实现设计10上拉电阻把端口拉到高电平,此时可作输入口。作输入口使用时,因为内部存在上拉 电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。与 AT89C51 不同之处是,P1.0 和 P1.1 还可分别作为定时/计数器 2 的外部计数输入(P1.0/T2)和输入(P1.1/T2EX) , 参见下表。Flash 编程和程序校验期间,P1 接收低 8 位地址。表 31 P1.0 和 P1.1 的第二功能引脚号功能特性P1.0T2(定时/计数器 2 外部计数脉冲输入) ,时钟输出P1.1T2EX(定时/计数器 2 捕获/重装载触发和方向控制) P2 口:P2 是一个带有内部上拉电阻的 8 位双向 I/O 口,P2 的输出缓冲级可驱动(吸收或输出电流)4 个 TTL 逻辑 门电路。对端口 P2 写“1” ,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在 上拉电阻,某个引脚被外部信号拉低时会输出一个电流(IIL)。 在访问外部程序存储器或 16 位地址的外部数据存储器(例如执行 MOVX DPTR 指令)时,P2 口送出高 8 位地址数 据。在访问 8 位地址的外部数据存储器(如执行 MOVX RI 指令)时,P2 口输出 P2 锁存器的内容。Flash 编程或校验时,P2 亦接收高位地址和一些控制信号。 P3 口:P3 口是一组带有内部上拉电阻的 8 位双向 I/O 口。P3 口输出缓冲级可驱动(吸收或输出电流)4 个 TTL 逻 辑门电路。对 P3 口写入“1”时,它们被内部上拉电阻拉高并可作为输入端口。此时,被外部拉低的 P3 口将用上拉电阻 输出电流(IIL) 。P3 口除了作为一般的 I/O 口线外,更重要的用途是它的第二功能,如下表所示:表 32端口引脚第二功能P3.0RXD(串行输入口)P3.1TXD(串行输出口)P3.2INT0(外中断 0)P3.3INT1(外中断 1)P3.4T0(定时/计数器 0)P3.5T1(定时/计数器 1)P3.6WR(外部数据存储器写选通)P3.7RD(外部数据存储器读选通)此外,P3 口还接收一些用于 Flash 闪速存储器编程和程序校验的控制信号。 RST:复位输入。当振荡器工作时,RST 引脚出现两个机器周期以上高电本科生毕业设计说明书(2010)11平将使单片机复位。 ALE/PROG: 当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低 8 位字 节。一般情况下,ALE 仍以时钟振荡频率的 1/6 输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。要注意的 是:每当访问外部数据存储器时将跳过一个 ALE 脉冲。对 Flash 存储器编程期间,该引脚还用于输入编程脉冲(PROG) 。如有必要,可通过对特殊功能寄存器(SFR)区中的 8EH 单元的 D0 位置位,可禁止 ALE 操作。该位置位后,只有一条 MOVX 和 MOVC 指令才能将 ALE 激活。此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置 ALE 禁止位无效。 PSEN:程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当 AT89C52 由外部程序存储器取指令(或数 据)时,每个机器周期两次 PSEN 有效,即输出两个脉冲。在此期间,当访问外部数据存储器,将跳过两次 PSEN 信号。 EA/VPP:外部访问允许。欲使 CPU 仅访问外部程序存储器(地址为 0000HFFFFH) ,EA 端必须保持低电平(接 地) 。需注意的是:如果加密位 LB1 被编程,复位时内部会锁存 EA 端状态。如 EA 端为高电平(接 Vcc 端) ,CPU 则执行内部程序存储器中的指令。Flash 存储器编程时,该引脚加上+12V 的编程允许电源 Vpp,当然这必须是该器件是使用 12V 编程电压 Vpp。 XTAL1:振荡器反相放大器的及内部时钟发生器的输入端。 XTAL2:振荡器反相放大器的输出端。3.1.2 特殊功能寄存器:在 AT89C52 片内存储器中,80H-FFH 共 128 个单元为特殊功能寄存器(SFE) ,SFR 的地址空间映象如表 33 所示。并非所有的地址都被定义,从 80HFFH 共 128 个字节只有一部分被定义,还有相当一部分没有定义。对没有定义的 单元读写将是无效的,读出的数值将不确定,而写入的数据也将丢失。不应将数据“1”写入未定义的单元,由于这些单元在将来的产品中可能赋予新的功能,在这种情况下,复位后这些单 元数值总是“0” 。表 33高精度计米器的仿真实现设计12AT89C52 除了与 AT89C51 所有的定时/计数器 0 和定时/计数器 1 外,还增加了一个定时/计数器 2。定时/计数器 2 的控 制和状态位位于 T2CON 和 T2MOD,寄存器对(RCAO2H、RCAP2L)是定时器 2 在 16 位捕获方式或 16 位 自动重装载方式下的捕获/自动重装载寄存器。表 34 定时/计数器 2 控制寄存器 T2CONT2CON 地址=0C8H复位值=0000 0000B可寻址位BitTF2EXF2RCLKTCLKEXEN2TR2C/T2CP/RL276543210符号功能TF2定时器 2 溢出标志。定时器 2 溢出时,又由于硬件置位,必须由软件清 0.当RCLK=1 或 TCLK=1 时,定时器 2 溢出,不对 TF2 置位。EXF2定时器 2 外部标志。当 EXEF2=1,且当 T2EX 引脚上出现负跳变而出现捕获或重装载时,EXF2 置位,申请中断。此时如果允许定时器 2 中断,CPU 将响应中断,执行定时器 2 中断服务程序,EXF2 必须由软件清除。当定时器 2 工作在向上或向下计数工作方式时(DCEN=1) ,EXF2 不能激活中断。RCLK接收时钟允许。RCLK=1 时,用定时器 2 溢出脉冲作为串行口(工作于工作方式:或 2 时)的发送时钟,RCLK=0,用定时器 1 的溢出脉冲作为接收时钟。TCLK接收时钟允许。TCLK=1 时,用定时器 2 溢出脉冲作为串行口(工作于工作方式:或 2 时)的发送时钟,TCLK=0,用定时器 1 的溢出脉冲作为接收时钟。本科生毕业设计说明书(2010)13EXEN2定时器 2 外部允许标志。当 EXEN2=1 时,如果定时器 2 未用于作串行口的比特率发生器,在 T2EX 端出现负跳变脉冲时,激活定时器 2 捕获或重装载。EXEN2=0 时,T2EN 端的外部信号无效。TR2定时器 2 启动/停止控制位。TR2=1 时,启动定时器 2.C/T2定时器 2 定时方式或计数方式控制位,C/T2=0,选择定时方式。C/T2=1 时,选择对外部事件计数方式(下降沿触发)CP/RL2捕获/重装载选择。CP/RL2=1 时,如 EXEN2=1,且 T2EN 端出现负跳变脉冲时发生捕获操作。CP/RL2=0 时,若定时器 2 溢出或 EXEN2=1 条件下,T2EN 端出现负跳变脉冲,都会出现自动重装载操作。当 RCLK=1 或 TCLK=1 时,该位无效,在定时器 2 溢出时强制其自动重装载。3.1.3 中断寄存器AT89C52 有 6 个中断源,2 个中断优先级,IE 寄存器控制各中断位,IP 寄存器中 6 个中断源的每一个可定为 2 个优先级。3.1.4 数据存储器AT89C52 有 256 个字节的内部 RAM,80H-FFH 高 128 个字节与特殊功能寄存器(SFR)地址是重叠的,也就是高 128 字节的 RAM 和特殊功能寄存器的地址是相同的,但物理上它们是分开的。当一条指令访问 7FH 以上的内部地址单元时,指令中使用的寻址方式是不同的,也即寻址方式决定是访问高 128 字节 RAM 还是访问特殊功能寄存器。如果指令是直接寻址方式则为访问特殊功能寄存器。例如,下面的直接寻址指令访问特殊功能寄存器 0A0H(即 P2 口)地址单元。MOV0A0H,#data间接寻址指令访问高 128 字节 RAM,例如,下面的间接寻址指令中,R0 的内容为 0A0H,则访问数据字节地址为 0A0H, 而不是 P2 口(0A0H) 。MOVR0,#data堆栈操作也是间接寻址方式,所以,高 128 位数据 RAM 亦可作为堆栈区使用。3.1.5 定时器定时器 0 和定时器 1: AT89C52 的定时器 0 和定时器 1 的工作方式与 AT89C51 相同。定时器 2:定时器 2 是一个 16 位定时/计数器。它既可当定时器使用,也可作为外部事件计数器使用,其工作方式由特殊功能寄 存器 T2CON 的 C/T2 位选择。定时器 2 有三种工作方式:捕获方式,自动重装载(向上或向下计数)方式和波 特率发生器方式,工作方式由 T2CON 的控制位来选择,参见下表。表 35 定时器 2 工作方式高精度计米器的仿真实现设计14RCLK+TCLKCP/RL2TR20010111X1XX0定时器 2 由两个 8 位寄存器 TH2 和 TL2 组成,在定时器工作方式中,每个机器周期 TL2 寄存器的值加 1,由于一个机 器周期由 12 个振荡时钟构成,因此,计数速率为振荡频率的 1/12。在计数工作方式时,当 T2 引脚上外部输入信号产生由 1 至 0 的下降沿时,寄存器的值加 1,在这种工作方式下,每个机器周期的 5SP2 期间,对外部输入进行采样。若在第一个机器周期中采到的值为 1,而在下一个机器周期中采到的值为 0, 则在紧跟着的下一个周期的 S3P1 期间寄存器加 1。由于识别 1 至 0 的跳变需要 2 个机器周期(24 个振荡周期) ,因此,最高计数速率为振荡频率的 1/24。为确保采样的正确性,要求输入的电平在变化前至少保持一个完整周期的时间,以保证输入信号至少被采样一次。 捕获方式:在捕获方式下,通过 T2CON 控制位 EXEN2 来选择两种方式。如果 EXEN2=0,定时器 2 是一个 16 位定时器或计数器, 计数溢出时,对 T2CON 的溢出标志 TF2 置位,同时激活中断。如果 EXEN2=1,定时器 2 完成相同的操作,而当 T2EX 引 脚外部输入信号发生 1 至 0 负跳变时,也出现 TH2 和 TL2 中的值分别被捕获到 RCAP2H 和 RCAP2L 中。另外,T2EX 引 脚信号的跳变使得 T2CON 中的 EXF2 置位,与 TF2 相仿,EXF2 也会激活中断。 自动重装载(向上或向下计数器)方式:当定时器 2 工作于 16 位自动重装载方式时,能对其编程为向上或向下计数方式,这个功能可通过特殊功能寄存器 T2CON 的 DCEN 位(允许向下计数)来选择的。复位时,DCEN 位置“0” ,定时器 2 默认设置为向上计数。当 DCEN 置位时,定时器 2 既可向上计数也可向下计数,这取决于 T2EX 引脚的值,当 DCEN=0 时,定时器 2 自动设置为向上计数,在这种方式下,T2CON 中的 EXEN2 控制位有两种选择,若 EXEN2=0,定时器 2 为向上计数至 0FFFFH 溢出,置位 TF2 激活中断,同时把 16 位计数寄存器 RCAP2H 和 RCAP2L 重装载,RCAP2H 和 RCAP2L 的值可由软件预置。若 EXEN2=1,定时器 2 的 16 位重装载由溢出或外部输入端 T2EX 从 1 至 0 的下降沿触发。这个脉冲使 EXF2 置位,如果中断允许,同样产生中断。定时器 2 的中断入口地址是:002BH 0032H 。本科生毕业设计说明书(2010)15图 34图 35当 DCEN=1 时,允许定时器 2 向上或向下计数,如图所示。这种方式下,T2EX 引脚控制计数器方向。T2EX 引脚为逻 辑“1”时,定时器向上计数,当计数 0FFFFH 向上溢出时,置位 TF2,同时把 16 位计数寄存器 RCAP2H 和 RCAP2L 重装 载到 TH2 和 TL2 中。 T2EX 引脚为逻辑“0”时,定时器 2 向下计数,当 TH2 和 TL2 中的数值等于 RCAP2H 和 RCAP2L 中的值时,计数溢出,置位 TF2,同时将 0FFFFH 数值重新装入定时寄存器中。当定时/计数器 2 向上溢出或向下溢出时,置位 EXF2 位。3.1.6 波特率发生器当 T2CON 中的 TCLK 和 RCLK 置位时,定时/计数器 2 作为波特率发生器使用。如果定时/计数器 2 作为发送器或 接收器,其发送和接收的波特率可以是不同的,定时器 1 用于其它功能,如图所示。若 RCLK 和 TCLK 置位,则定时器 2 工作于波特率发生器方式。表 36定时器 2T2MOD 控制寄存器T2MOD 地址=0C9H复位值=XXXX XX00B不可寻址位高精度计米器的仿真实现设计16BitT2OEDCEN76543210图 36波特率发生器的方式与自动重装载方式相仿,在此方式下,TH2 翻转使定时器 2 的寄存器用 RCAP2H 和 RCAP2L 中的 16 位数值重新装载,该数值由软件设置。在方式 1 和方式 3 中,波特率由定时器 2 的溢出速率根据下式确定:1631定时器的溢出率的波特率和方式定时器既能工作于定时方式也能工作于计数方式,在大多数的应用中,是工作在定时方式(C/T2=0) 。定时器 2 作为波 特率发生器时,与作为定时器的操作是不同的,通常作为定时器时,在每个机器周期(1/12 振荡频率)寄存器的值加 1, 而作为波特率发生器使用时,在每个状态时间(1/2 振荡频率)寄存器的值加 1。波特率的计算公式如下:RCAP2L)RCAP2H655363231,(振荡频率的波特率和方式式中(RCAP2H,RCAP2L)是 RCAP2H 和 RCAP2L 中的 16 位无符号数。定时器 2 作为波特率发生器使用的电路如图 37 所示。T2CON 中的 RCLK 或 TCLK=1 时,波特率工作方式才有效。在波特率发生器工作方式中,TH2 翻转不能使 TF2 置位,故而不产生中断。但若 EXEN2 置位,且 T2EX 端产生由 1 至 0 的负跳变,则会使 EXF2 置位,此时并不能将(RCAP2H,RCAP2L)的内容重新装入 TH2 和 TL2 中。所以,当定时器 2 作为波特率发生器使用时,T2EX 可作为附加的外部中断源来使用。需要注意的是,当定时器 2 工作于波特率器时,作为定时器运行(TR2=1)时,并不能访问 TH2 和 TL2。因为此时每个状态时间定时器都会加 1,对其读写将得到一个不确定的数值。 然而,对 RCAP2 则可读而不可写,因为写入操作将是重新装载,写入操作可本科生毕业设计说明书(2010)17能令写和/或重装载出错。在访问定时器 2 或 RCAP2 寄存器之前,应将定时器关闭(清除 TR2) 。图 373.1.7 可编程时钟输出定时器 2 可通过编程从 P1.0 输出一个占空比为 50%的时钟信号,如图所示。P1.0 引脚除了是一个标准的 I/O 口外, 还可以通过编程使其作为定时/计数器 2 的外部时钟输入和输出占空比 50%的时钟脉冲。当时钟振荡频率为 16MHz 时,输 出时钟频率范围为 61Hz4MHz。当设置定时/计数器 2 为时钟发生器时,C/T2(T2CON .1)=0,T2OE (T2MOD.1) =1,必须由 TR2(T2CON.2)启动或停止定时器。时钟输出频率取决于振荡频率和定时器 2 捕获寄存器(RCAP2H,RCAP2L)的重新装载值,公式如下:RCAP2L)RCAP2H655364,(振荡器频率输出时钟频率在时钟输出方式下,定时器 2 的翻转不会产生中断,这个特性与作为波特率发生器使用时相仿。定时器 2 作为波特率 发生器使用时,还可作为时钟发生器使用,但需要注意的是波特率和时钟输出频率不能分开确定,这是因为它们同使用 RCAP2L 和 RCAP2L。高精度计米器的仿真实现设计18图 38 UART:AT89C52 的 UART 工作方式与 AT89C51 工作方式相同。 中断:AT89C52 共有 6 个中断向量:两个外中断(INT0 和 INT1) ,3 个定时器中断(定时器 0、1、2)和串行口中断。所有 这些中断源如图 39 所示。这些中断源可通过分别设置专用寄存器 IE 的置位或清 0 来控制每一个中断的允许或禁止。IE 也有一个总禁止位 EA, 它能控制所有中断的允许或禁止。注意表 5 中的 IE.6 为保留位,在 AT89C51 中 IE.5 也是保留位。程序员不应将“1”写入这些位,它们是将来 AT89 系 列产品作为扩展用的。定时器 2 的中断是由 T2CON 中的 TF2 和 EXF2 逻辑或产生的,当转向中断服务程序时,这些标志位不能被硬件清除, 事实上,服务程序需确定是 TF2 或 EXF2 产生中断,而由软件清除中断标志位。定时器 0 和定时器 1 的标志位 TF0 和 TF1 在定时器溢出那个机器周期的 S5P2 状态置位,而会在下一个机器周期才查 询到该中断标志。然而,定时器 2 的标志位 TF2 在定时器溢出的那个机器周期的 S2P2 状态置位,并在同一个机器周期内 查询到该标志。本科生毕业设计说明书(2010)19图 393.1.8 时钟振荡器AT89C52 中有一个用于构成内部振荡器的高增益反相放大器,引脚 XTAL1 和 XTAL2 分别是该放大器的输入端和输出端。这个放大器与作为反馈元件的片外石英晶体或陶瓷谐振器一起构成自激振荡器,振荡电路参见下图。外接石英晶体(或陶瓷谐振器)及电容 C1、C2 接在放大器的反馈回路中构成并联振荡电路。对外接电容 C1、C2 虽然没有十分严格的要求,但电容容量的大小会轻微影响振荡频率的高低、振荡器工作的稳定性、起振的难易程序及温度稳定性,如果使用石英晶体,我们推荐电容使用 30pF10pF,而如使用陶瓷谐振器建议选择 40pF10F。用户也可以采用外部时钟。采用外部时钟的电路如下图右图所示。这种情况下,外部时钟脉冲接到 XTAL1 端,即内部时钟发生器的输入端,XTAL2 则悬空。图 310由于外部时钟信号是通过一个 2 分频触发器后作为内部时钟信号的,所以对外高精度计米器的仿真实现设计20部时钟信号的占空比没有特殊要求,但 最小高电平持续时间和最大的低电平持续时间应符合产品技术条件的要求。 空闲节电模式:在空闲工作模式状态, CPU 自身处于睡眠状态而所有片内的外设仍保持激活状态,这种方式由软件产生。此时,同 时将片内 RAM 和所有特殊功能寄存器的内容冻结。空闲模式可由任何允许的中断请求或硬件复位终止。由硬件复位终止空闲状态只需两个机器周期有效复位信号,在此状态下,片内硬件禁止访问内部 RAM,但可以访问端口引脚,当用复位终止空闲方式时,为避免可能对端口产生意外写入,激活空闲模式的那条指令后一条指令不应是一条对 端口或外部存储器的写入指令。 掉电模式:在掉电模式下,振荡器停止工作,进入掉电模式的指令是最后一条被执行的指令,片内 RAM 和特殊功能寄存器的内 容在终止掉电模式前被冻结。退出掉电模式的唯一方法是硬件复位,复位后将重新定义全部特殊功能寄存器,但不改变 RAM 中的内容,在 Vcc 恢复到正常工作电平前,复位应无效,且必须保持一定时间以使振荡器重启动并稳定工作。 空闲和掉电模式下,个端口引脚状态如下表所示。表 37 空闲和掉电模式外部引脚状态模式程序存储器ALEPSENP0P1P2P3空闲模式内部11数据数据数据数据空闲模式外部11浮空数据地址数据掉电模式内部00数据数据数据数据掉电模式外部00浮空数据数据数据 程序存储器的加密:AT89C52 有 3 个程序加密位,可对芯片上的 3 个加密位 LB1、LB2、LB3 进行编程(P)或不编程(U)来得到如下表所示的功能:表 38 加密位保护功能表程序加密位LB1LB2LB3保护类型1UUU无程序保护功能2PUU禁止从内部存储器取代码字节执行外部存储器的 MOVC 指令。复位时,EA 被采样并锁存,禁止对 Flash 存储器进行进一步编程3PPU除与方式 2 功能相同外,同时禁止校验4PPP除与方式 3 相同外,同时禁止外部执行当加密位 LB1 被编程时,在复位期间,EA 端的逻辑电平被采样并锁存,如果单片机上电后一直没有复位,则锁存起的 初始值是一个随机数,且这个随机数会一直保存到真正复位为止。为使单片机能正常工作,被锁存的 EA 电平值必须与该本科生毕业设计说明书(2010)21引 脚当前的逻辑电平一致。此外,加密位只能通过整片擦除的方法清除。3.1.9 Flash 存储器的编程AT89C52 单片机内部有 8k 字节的 Flash PEROM,这个 Flash 存储阵列出厂时已处于擦除状态(即所有存储单元的内容 均为 FFH) ,用户随时可对其进行编程。编程接口可接收高电压(+12V)或低电压(Vcc)的允许编程信号。低电压编程模 式适合于用户在线编程系统,而高电压编程模式可与通用 EPROM 编程器兼容。AT89C52 单片机中,有些属于低电压编程方式,而有些则是高电压编程方式,用户可从芯片上的型号和读取芯片内的 签名字节获得该信息,见下表。表 39 顶面标记及签名字节VVPP12VVPP5顶面标记AT89C52xxxxyywwAT89C52xxxx 5yyww签名字节(030H)=1EH(031H)=52H(032H)=FFH(030H)=1EH(031H)=52H(032H)=05HAT89C52 的程序存储器阵列是采用字节写入方式编程的,每次写入一个字节,要对整个芯片内的 PEROM 程序存储器 写入一个非空字节,必须使用片擦除的方式将整个存储器的内容清除。 编程方法:编程前,须按上表和下图所示设置好地址、数据及控制信号, AT89C52 编程方法如下:1 在地址线上加上要编程单元的地址信号。2 在数据线上加上要写入的数据字节。3 激活相应的控制信号。4 在高电压编程方式时,将 EA/Vpp 端加上+12V 编程电压。5 每对 Flash 存储阵列写入一个字节或每写入一个程序加密位,加上一个 ALE/PROG 编程脉冲。每个字节写入周期是自身定时的,通常约为 1.5ms。重复 15 步骤,改变编程单元的地址和写入的数据,直到全部文件编程结束。高精度计米器的仿真实现设计22 图 311 图 312 数据查询:AT89C52 单片机用 Data Palling 表示一个写周期结束为特征,在一个写周期中,如需读取最后写入的一个字节,则读 出的数据的最高位(P0.7)是原来写入字节最高位的反码。写周期完成后,所输出的数据是有效的数据,即可进入下一个 字节的写周期,写周期开始后,Data Palling 可能随时有效。 Ready/Busy:字节编程的进度可通过“RDY/BSY 输出信号监测,编程期间,ALE 变为高电平“H”后,P3.4(RDY/BSY) 端电平被拉低,表示正在编程状态(忙状态) 。编程完成后,P3.4 变为高电平表示准备就绪状态。 程序校验:如果加密位 LB1、LB2 没有进行编程,则代码数据可通过地址和数据线读回原编写的数据,采用如图 12 的电路。加密位不可直接校验,加密位的校验可通过对存储器的校验和写入状态来验证。 芯片擦除:利用控制信号的正确组合并保持 ALE/PROG 引脚 10mS 的低电平脉冲宽度即可将 PEROM 阵列(4k 字节)和三个加密位整片擦除,代码阵列在片擦除操作中将任何非空单元写入“1” ,这步骤需再编程之前进行。 读片内签名字节:AT89C52 单片机内有 3 个签名字节,地址为 030H、031H 和 032H。用于声明该器件的厂商、型 号和编程电压。读 AT89C52 签名字节需将 P3.6 和 P3.7 置逻辑低电平,读签名字节的过程和单元 030H、031H 及 032H 的 正常校验相仿,只返回值意义如下:(030H)=1EH 声明产品由 ATMEL 公司制造。(031H)=52H 声明为 AT89C52 单片机。(032H)=FFH 声明为 12V 编程电压。(032H)=05H 声明为 5V 编程电压。本科生毕业设计说明书(2010)233.2 显示电路设计显示电路选用 AMPIRE128X64图 313管脚一共 18 个。CS1 左半屏片选端,CS2 右半屏片选端; V0 液晶显示驱动电压,通过一个电位器接到 VCC;RS 数据指令选择信号,H 为数据,L 为指令,也叫D/I;R/W 读写选择信号,H 为读,L 为写, 。E 为 LCD 使能端,R/W 为 L 时,E 信号下降沿锁存 DB7-DB0;R/W 为 H 时,E 为 H,DDRAM 数据读到 DB7-DB0。DB0-DB7 数据传输端口。RST 复位信号。-VOUT 和 V0 为液晶显示驱动电压。12864 是一种图形点阵液晶显示器,它主要由行驱动器/列驱动器及 12864 全点阵液晶显示器组成。可完成图形显示,也可以显示 84 个(1616 点阵)汉字。表 310 12864LCD 的引脚说明管脚号管脚名称LEVER管脚功能描述1VSS0电源地2VDD+5.0V电源电压3V0-液晶显示器驱动电压4D/I(RS)H/LD/I=“H” ,表示 DB7DB0 为显示数据D/I=“L” ,表示 DB7DB0 为显示指令数据5R/WH/LR/W=“H” ,E=“H”数据被读到 DB7DB0R/W=“L” ,E=“HL”数据被写到 IR 或 DR6EH/LR/W=“L” ,E 信号下降沿锁存 DB7DB0高精度计米器的仿真实现设计24R/W=“H” ,E=“H”DDRAM 数据读到 DB7DB07DB0H/L数据线8DB1H/L数据线9DB2H/L数据线10DB3H/L数据线11DB4H/L数据线12DB5H/L数据线13DB6H/L数据线14DB7H/L数据线15CS1H/LH:选择芯片(右半屏)信号16CS2H/LH:选择芯片(左半屏)信号17RETH/L复位信号,低电平复位18VOUT-10VLCD 驱动负电压19LED+-LED 背光板电源20LED-LED 背光板电源在使用 12864LCD 前先必须了解以下功能器件才能进行编程。12864 内部功能器件及相关功能如下:1. 指令寄存器(IR)IR 是用于寄存指令码,与数据寄存器数据相对应。当 D/I=0 时,在 E 信号下降沿的作用下,指令码写入 IR。2数据寄存器(DR)DR 是用于寄存数据的,与指令寄存器寄存指令相对应。当 D/I=1 时,在下降沿作用下,图形显示数据写入 DR,或在 E 信号高电平作用下由 DR 读到 DB7DB0 数据总线。DR 和 DDRAM 之间的数据传输是模块内部自动执行的。3忙标志:BFBF 标志提供内部工作情况。BF=1 表示模块在内部操作,此时模块不接受外部指令和数据。BF=0 时,模块为准备状态,随时可接受外部指令和数据。利用 STATUS READ 指令,可以将 BF 读到 DB7 总线,从检验模块之工作状态。4显示控制触发器 DFF此触发器是用于模块屏幕显示开和关的控制。DFF=1 为开显示(DISPLAY OFF) ,DDRAM 的内容就显示在屏幕上,DFF=0 为关显示(DISPLAY OFF) 。DDF 的状态是指令 DISPLAY ON/OFF 和 RST 信号控制的。5XY 地址计数器XY 地址计数器是一个 9 位计数器。高 3 位是 X 地址计数器,低 6 位为 Y 地址计数器,XY 地址计数器实际上是作为 DDRAM 的地址指针,X 地址计数器为 DDRAM 的页指针,Y 地址计数器为 DDRAM 的 Y 地址指针。X 地址计数器是没有记数功能的,只能用指令设置。Y 地址计数器具有循环记数功能,各显示数据写入后,Y 地址自动加 1,Y 地址本科生毕业设计说明书(2010)25指针从 0 到 63。6显示数据 RAM(DDRAM)DDRAM 是存储图形显示数据的。数据为 1 表示显示选择,数据为 0 表示显示非选择。DDRAM 与地址和显示位置的关系见 DDRAM 地址表。7Z 地址计数器Z 地址计数器是一个 6 位计数器,此计数器具备循环记数功能,它是用于显示行扫描同步。当一行扫描完成,此地址计数器自动加 1,指向下一行扫描数据,RST复位后 Z 地址计数器为 0。Z 地址计数器可以用指令 DISPLAY START LINE 预置。因此,显示屏幕的起始行就由此指令控制,即 DDRAM 的数据从哪一行开始显示在屏幕的第一行。此模块的DDRAM 共 64 行,屏幕可以循环滚动显示 64 行。12864LCD 的指令系统及时序该类液晶显示模块(即 KS0108B 及其兼容控制驱动器)的指令系统比较简单,总共只有七种。其指令表如下表所示:表 311 12864LCD 指令表控制信号控制代码指令名称R/WRSDB7DB6DB5DB4DB3DB2DB1DB0显示开关0000111111/0显示起始行设置 0011XXXXXX页设置0010111XXX列地址设置0001XXXXXX读状态10BUSY0ON/OFF RST0000写数据01写数据读数据11读数据各功能指令分别介绍如下。显示开/关指令 表 312R/WRSDB7 DB6 DB5 DB4 DB3DB2DB1 DB00000111111/0当 DB01 时,LCD 显示 RAM 中的内容;DB00 时,关闭显示。2、显示起始行(ROW)设置指令表 313R/WRSDB7 DB6 DB5 DB4 DB3DB2DB1 DB00011 显示起始行(063)该指令设置了对应液晶屏最上一行的显示 RAM 的行号,有规律地改变显示起始行,可以使 LCD 实现显示滚屏的效果。3、页(PAGE)设置指令高精度计米器的仿真实现设计26表 314R/WRSDB7 DB6 DB5 DB4 DB3DB2DB1 DB00010111 页号(07)显示 RAM 共 64 行,分 8 页,每页 8 行。4、列地址(Y Address)设置指令表 315R/WRSDB7 DB6 DB5 DB4 DB3DB2DB1 DB00001 显示列地址(063)设置了页地址和列地址,就唯一确定了显示 RAM 中的一个单元,这样 MPU 就可以用读、写指令
展开阅读全文