搜档网
当前位置:搜档网 › AT89C51单片机综合设计

AT89C51单片机综合设计

本文由amoxiaoer贡献
ppt文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。
第7章
AT89C51单片机综合设 计
7.1 单片机间的多机通信
7.1.1 Proteus电路设计 7.1.2 Proteus调试与仿真 7.1.3 总结与提示
7.3.3 电路设计 7.3.4 系统硬件实现
7.4 基于DS18B20的水温控制系 统
7.4.1 Proteus电路设计 7.4.2 Proteus调试与仿真
7.2 I2C总线应用技术
7.2.1 7.2.2 7.2.3 7.2.4
Proteus电路设计 7.5 基于单片机的24×24点阵 Proteus调试与仿真 LED汉字显示 用I2C调试器监视I2C总线 7.5.1 设计任务及要求 总结与提示 7.3 基于单片机控制的电子万年 7.5.2 设计背景简介 7.5.3 电路设计 历 7.5.4 系统硬件实现 7.3.1 设计任务及要求 7.5.5 系统仿真 7.3.2 设计背景
Proteus是目前最好的模拟单片机外围器件的工 具,与其他单片机仿真软件不同的是,它不仅能仿 真单片机CPU的工作情况,也能仿真单片机外围电 路或没有单片机参与的其他电路的工作情况。因此 在仿真和调试程序时,关心的不再是某些语句执行 时单片机寄存器和存储器内容的改变,而是从工程 的角度直接看程序运行和电路工作的过程和结果。 对于这样的仿真实验,从某种意义上讲,解决了实 验和工程应用间脱节的矛盾。
7.1 单片机间的多机通信
内容 三个AT89C51单片机间进行“1主2从”多机通 信,主机可以将其数码管显示的内容发送给每个 从机,也可以采集每个从机数码管显示的数值并 求和后显示出来,每个单片机的数码管显示值可 以通过外接的按键进行设置。 训练目的 掌握MCS-51单片机间进行多机通信的实现方法。
7.1.1 Proteus电路设计 电路设计
1. 元件清单列表 打开Proteus ISIS编辑环境,按表7-1所列的清 单添加元件。
2. 电路原理图 元件全部添加后,在Proteus ISIS的编辑区域中 按图7-1和图7-2所示的主、从机电路原理图(晶振 和复位电路略)连接硬件电路。
图7-1 主机部分电路原理图
图7-2 从机部分电路原理图
7.1.2 Proteus调试与仿真 调试与仿真
参照6.3.3节建立程序文件,加载目标代码文件, 在Proteus ISIS界面中,单击按钮 启动仿真。 主机操作如下: (1) 每按下“加1”键,数码管显示值加1,对应左边 的数码管显示“7”; (2) 每按下“汇总数据”键,主机数码管显示值变 为从机1的显示值+从机2的显示值之和,对应左边 的数码管显示“5”; (3) 每按下“发送数据”键,各从机的数码管显示 值均变为主机数码管所显示的数值,对应左边的数 码管显示“3”。
从机操作如下: (1) 每按下“加1”键,数码管显示值加1; (2) 运行中的数码管显示值随主机

的操作而发生改 变。 仿真运行片段如图7-3和图7-4所示。仿真过程中 可单击 按钮暂停仿真,从“Debug”菜单中调出 各个单片机的“8051 CPU Registers”窗口来观察各 单片机运行中相关寄存器的工作状态,如图7-4所示。
图7-3 仿真运行片段1
图7-4 仿真运行片段2
7.1.3 总结与提示
在仿真刚开始的几秒钟,仿真系统还未完全就 位,仿真结果可能会不正常,稍停一会儿便可正 常运行; 可将从机的串口工作方式改为采用中断方式进 行编程和仿真实验。
7.2 I2C总线应用技术 总线应用技术
内容 I2C总线是一种用于IC器件之间的二线制总线。 它通过SDA(串行数据线)及SCL(串行时钟线)两根线 在连到总线上的器件之间传送消息,并根据地址识 别每个器件。本例使用串口通信I2C存储器24C01扩 展AT89C51单片机的数据存储器,完成读写操作。 训练目的 学习使用Proteus设计并仿真I2C器件扩展单片机 存储器的方法; 掌握单片机进行I2C通信的编程方法; 学会使用Proteus VSM虚拟I2C调试器。
7.2.1 Proteus电路设计 电路设计 1. 元件清单列表 打开Proteus ISIS编辑环境,按表7-2所列的清单添 加元件。
2. 电路原理图 元件全部添加后,在Proteus ISIS的编辑区域中 按图7-5所示的原理图(晶振和复位电路略)连接硬件 电路。
图7-5 电路原理图
7.2.2 Proteus调试与仿真
参照6.3.3节建立程序文件,加载目标代码文件, 执行以下操作: (1) 在Proteus ISIS界面中,单击按钮启动仿真; (2) 仿真过程中单击按钮暂停仿真,从“Debug” 菜单中调出“8051 CPU Internal (IDATA) Memory”窗口和“I2C Memory Internal MemoryU2”窗口,观察单片机内部数据存储器和24C01存 储器相关单元的状态变化,如图7-6所示。
图7-6 仿真暂停时程序运行的中间结果
7.2.3 用I2C调试器监视 调试器监视I2C总线 调试器监视 总线
1. 在电路中添加I2C调试器 在工具栏单击按钮,再在对象选择器中选择“I2C DEBUGGER”。将其中两引脚与单片机连接,其中 SCL接P3.0,SDA接P3.1。 2. 仿真监视 从图7-6中的I2C调试器窗口可以看到I2C总线在 循环读/写,窗口的左上角区域,记录了总线上的所 有活动,其中向左的蓝箭头表示I2C调试器作为从 器件监视总线上的活动。单击“+”,可显示详细的 数据,以字节,甚至以位的形式显示。其中:
第一行内容是单片机向24C01存储器写数据过程, 其时序为S、A0、A、地址(30H)、A、数据1、A、 数据2、A、…、数据16、A、P; 第二行内容是单片机从24C01存储器读数据过程, 其时序为S、A0、A、地址(30H)、A、Sr、A1、A、 数据1、A、…、数据16、N、P。 1 A … 16 N P 3. I2C通信读/写操作序列中的专用字符 I2

C通信读/写操作序列中的专用字符,如表7-3所 示。
7.2.4 总结与提示
本例中,如果将AT89C51单片机的时钟频率设置 为12MHz,则应将24C01属性中的 {TD_WRITE=1m}项改为{TD_WRITE=0.5m}。具体 步骤为:双击24C01元件,打开其属性编辑框,选 中“Edit all properties as text”项,然后进行修改。
7.3 基于单片机控制的 电子万年历
7.3.1 设计任务及要求
1. 设计题目 基于单片机的万年历。 2. 设计要求与目的 利用单片机、时钟芯片、温度传感器、数码管 等实现日期、时间、温度的显示即一个简单的万 年历; 万年历的设计是几个简单模块的组合,硬件上 是这样,软件上也是这样,要熟悉这种模块化的 设计思路; 通过万年历的设计要掌握好对Proteus仿真设计 的熟练使用;
通过万年历的设计要熟练掌握单片机的各个功 能,并且能对单片机有一个总体的把握,在设计 的过程中能够凭借对单片机各功能的了解,达到 理想的设计效果; 本例使用了时钟芯片DS1302、温度传感器 DS18B20和74HC164,通过对单片机的学习能够 对它们触类旁通。
3. 设计任务 设计系统硬件; 设计系统软件; 编写设计说明书。
7.3.2 设计背景
在生活中,我们经常能看到各种各样的制作精 美的万年历,万年历大有取代常规钟表的趋势。 随着人们生活水平的提高,智能产品越来越受到 人们的欢迎。而单片机、传感器及各种集成电路 起到关键作用。希望通过本设计能够对未来的趋 势有所把握,从而适应社会需要。
7.3.3 电路设计
万年历大体可以分为三大模块,74HC164与 数码管的显示模块、DS1302时钟芯片与单片机的 时钟模块和DS18B20与单片机的温度模块。 单片机在5V电压下,各个模块正常工作。单片 机从DS1302芯片中读出一组时间日期数据,同时 单片机通过DS18B20温度传感器获得当前温度并 且发送给单片机。单片机接收到各个数据时,利 用串行通信原理把数据按照一定的顺序发送给 74HC164。74HC164移位到最后一个数码管后, 把各个数据显示出来。
1. 74HC164芯片相关知识 (1) 74HC164简介 74HC164是一种8位串行输入并行输出的移位 寄存器。它是高速硅门 CMOS 器件,与低功耗肖 特基型 TTL (TTL LS) 器件的引脚兼容。74HC164、 74HCT164 是 8 位边沿触发式移位寄存器,串行输 入数据,然后并行输出。数据通过两个输入端之一 (DSA 或 DSB)串行输入;任一输入端可以用作高电 平使能端,控制另一输入端的数据输入。两个输入 端或者连接在一起,或者把不用的输入端接高电平, 一定不要悬空。时钟(CP)每次由低变高时,数据右 移一位,输入到 Q0,Q0是两个数据输入端
(DSA和DSB)的逻辑

与,它在上升时钟沿之前保 持一个建立时间的长度。主复位 (MR) 输入端上 的一个低电平将使其他所有输入端都无效,同时 非同步地清除寄存器,强制所有的输出为低电平。
(2) 74HC164的引脚功能 74HC164的引脚功能如图7-7、图7-8和表7-4所示。
图7-7 74HC164的引脚图
图7-8 74HC164的IEC逻辑符号
2. DS1302芯片相关知识 (1) DS1302简介 DS1302是DALLAS公司推出的一种高性能、低 功耗、带RAM的实时时钟芯片,它可以对年、月、 日、星期、时、分、秒进行计时,且具有闰年补偿 功能,工作电压为2.5~5.5V。DS1302采用三线接 口,与CPU进行同步通信,并可采用突发方式一次 传送多个字节的时间数据或RAM数据。DS1302内 部有一个31×8的用于临时性存放数据的RAM存储 器。 (2) DS1302的引脚功能 DS1302的引脚功能如图7-9及表7-5所示。
(3) 控制字格式 控制字格式如表7-6所示。控制字最高位必须是1, 如果它为0,则不能把数据写入到DS1302中,位6 如果为0则表示存取日历时钟数据,为1表示存取 RAM数据;位5~1指示操作单元的地址;最低位为 0表示要进行写操作,为1表示进行读操作,控制字 节总是从最低位开始输出。
表7-6 控制字格式
(4) 复位和时钟控制 DS1302通过把RST输入驱动置高电平来启动所 有的数据传送。RST输入有两种功能:首先,RST 接通控制逻辑,允许地址/命令序列送入移位寄存器; 其次,RST提供了终止单字节或多字节数据的传送 手段。当RST为高电平时,所有数据传送被初始化, 允许对DS1302进行操作。如果在传送过程中置 RST为低电平,则会终止此数据传送,并且I/O引脚 变为高阻状态。上电运行时,在VCC>>2.5V之前, RST必须保持低电平。只有在SCLK为低电平时, 才能将RST置为高电平。 (5) DS1302寄存器 7个寄存器与日历、时钟相关,存放的数据位为 BCD码形式,其日历、时间寄存器及其控制字如表 7-7所示。
时钟与日历暂停。 时钟与日历包含在七个写/读寄存器中,采用BCD 码形式。秒寄存器的位7(CH)为时钟暂停位,为1时, 时钟振荡停止,DS1302为低功率的备份方式,当 为0时,时钟将启动。 AM-PM/12-24方式。 小时寄存器的位7定义为12/24小时方式选择位。 为高电平,选择12小时方式。在12小时方式下,位 5是AM/PM位,此位为高电平时表示PM。在24小时 方式下,位5是第二个10小时位(20~23时)。
写保护寄存器。 写保护寄存器的位7是写保护位。开始七位(位0~ 6)置为0,在读操作时总是读出0。在对时钟或RAM 进行写操作之前,位7必须为0。当为高电平时,写 保护防止对任何其他寄存器进行写操作。 慢速充电寄存器。 这个寄存器控制DS1302的慢速充电特征。慢速 充

电选择位(TCS)控制慢速充电器的选择。为了防 止偶然的因素使之工作,只有1010模式才能使慢速 充电器工作,所有其他模式将禁止慢速充电器。
DS1302上电时,慢速充电器被禁止。二极管选择位 (DS)选择一个还是两个二极管连接在VCC1与VCC2 之间。如果DS为01选择一个,如果DS为10选择两 个。如果DS为00或11,那么充电器被禁止,与 TCS无关。RS选择连接在VCC1与VCC2之间的电 阻。RS为00无电阻,为01用2K,为10用4K,为11 用8K。
时钟/日历多字节方式。 时钟/日历命令字节可规定多字节方式, 在此方式下,最先八个时钟/日历寄存器可 以从地址0位开始连续地读写。当指定写时 钟/日历为多字节方式时,如果写保护位被 设置为高电平,那么没有数据会传送到八 个时钟/日历寄存器的任一个。在多字节方 式下,慢速充电器是不可访问的。
DS1302还有充电寄存器,时钟突发寄存器及与 RAM相关的寄存器等。时钟突发寄存器可一次性顺 序读写除充电寄存器外的所有寄存器内容。 DS1302与RAM相关的寄存器分为两类:一类是单 个RAM单元,共有31个,每个单元组态为一个8位 的字节,其命令控制字为C0H-FDH,其中奇数为读 操作,偶数为写操作;另一类为突发方式下的控制 寄存器,此方式下可一次性读写所有的RAM的31个 字节,命令控制字为FEH(写)、FFH(读)。
3. DS18B20芯片相关知识 (1) DS18B20简介 DS18B20是由美国DALLAS公司生产的单线数字 温度传感器芯片。与传统的热敏电阻有所不同, DS18B20可直接将被测温度转化为串行数字信号, 以供单片机处理,它还具有微型化、低功率、高性 能、抗干扰能力强等优点。通过编程,DS18B20可 以实现9~12位的温度读数。信息经过单线接口送入 DS18B20或从DS18B20送出,因此从微处理器到 DS18B20仅需连接一条信号线和地线。读、写和执 行温度变换所需的电源可以由数据线本身提供,而 不需要外部电源。
(2) DS18B20的引脚功能 DS18B20的引脚(图7-10),其功能如表7-8所示。
(3) DS18B20的主要特点 采用单线技术,与单片机通信只需一个引脚; 通过识别芯片各自唯一的产品序列号从而实现单 线多挂接,简化了分布式温度检测的应用; 实际应用中不需要外部任何器件即可实现测温; 可通过数据线供电,电压的范围在3~5.5V; 不需要备份电源; 测量范围为-55~+125℃,在-10~+85℃范围内 误差为0.5℃;
数字温度计的分辨率用户可以在9位到12位之间 选择,可配置实现9~12位的温度读数; 将12位的温度值转换为数字量所需时间不超过 750ms; 用户定义的,非易失性的温度告警设置,用用户 可以自行设定告警的上下限温度。
(4) 单总线技术 单总

线协议保证了数据可靠的传输,任一时刻总 线上只能有一个控制信号或数据。一次数据传输可 分为以下四个操作过程: 初始化,传送ROM命令,传送RAM命令,数据 交换。 单总线上所有的处理都从初始化开始。初始化时 序是由一个复位脉冲(总线命令者发出)和一个或多 个从者发出的应答信号(总线从者发出)组成。应答 脉冲的作用是:从器件让总线命令者知道该器件是 在总线上的,并准备好开始工作。当总线命令者检 测到某器件存在时,首先发送七个ROM功能中的一 个命令:
读ROM(总线上只有一个器件时,即读出其序列 号); 匹配ROM(总线上有多个器件时,寻址某一个器 件); 查找ROM(系统首次启动后,须识别总线上的各 器件); 跳过ROM(总线上只有一个器件时,可跳过读 ROM命令直接向器件发送命令,以节省时间); 超速匹配ROM(超速模式下寻址某个器件); 超速跳过ROM(超速模式下跳过读ROM命令); 条件查找ROM(只查找输入电压超过设置的报警 门限值的器件)。
当成功执行上述命令之一后,总线命令者 可发送任何一个可使用命令来访问存储器和 控制功能,进行数据交换。所有数据的读写 都是从最低位开始的。单总线传送的数据或 命令是由一系统的时序信号组成的,单总线 上共有4种时序信号:初始化信号、写0信号、 写1信号和读信号。
(5) DS18B20的ROM及控制指令 DS18B20的64位ROM的结构如表7-9所 示。开始8位是DS18B20的产品类型编号 10H,接着是每一个器件的唯一的序号,共 有48位,最后8位是前56位的CRC校验码, 这也是多个DS18B20可以用一根线进行通 信的原因。
DS18B20的高速暂存器由便笺式RAM和非易失 性电擦写EERAM组成,后者用于存储TH、TL值。 数据先写入便笺式RAM,经校验后再传给EERAM。 便笺式RAM占9个字节,包括温度信息(0、1字节)、 TH和TL值(2、3字节)、配置寄存器数据(4字节)、 CRC(8字节)等,5、6、7字节不用。暂存器的4字 节是配置寄存器,可以通过相应的写命令进行配置, 其内容如表7-11所示。
DS18B20的核心功能部件是它的数字温度传感 器,如上所述,它的分辨率可配置为9位、10位、 11位或者12位,出厂默认设置是12位分辨率,它们 对应的温度分辨率分别是0.5℃、0.25℃、0.125℃、 0.0625℃。温度信息的低位、高位字节内容中还包 括了符号位S(是正温度还是负温度)和二进制小数部 分,具体形式如表7-13所示。
这是12位分辨率的情况,如果配置为低的分辨率, 则其中无意义位为0;实测温度和数字输出的对应 关系如表7-14所示。
7.3.4 系统硬件实现
1.DS18B20温度测量电路 根据DS18B20的引脚功能说明,我们可以很快地 把VCC接一个5V

的电源,而GND接地。由于 DS18B20采用了单总线技术,我们只要把DQ与单 片机的一个I/O口相连接就可以了,如图7-11所示。
图7-11 DS18B20温度测量电路
2.时钟电路 DS1302有两个电源,一个是主电源Vcc2,另一 个是备份电源Vcc1。主电源Vcc2同单片机一样接 5V电源,而备份电源Vcc1使用的是两节1.5V干电池。 当系统电源被切断的情况下,DS1302也能正常工 作,保证日期、时间的准确性。X1、X2用来外接晶 振,晶振的频率为32.768kHz,如图7-12所示。
图7-12 时钟电路
3.显示电路 数码管采用共阳极的设计,一个数码管由一个 74HC164来驱动,并且采用级联的方式进行连接。 利用单片机的串口发送或者模拟串口发送把数据 发送给74HC164来驱动数码管显示数据。这种设 计的好处是接节约单片机的I/O口,同时也不会降 低CPU的运行速度,如图7-13所示。
图7-13 显示电路
无论仿真还是实物,如果把数码管的阳极直接接 到电源上,往往会产生闪烁现象。为了解决这一问 题。本设计把数码管的阳极接到单片机的一个I/O口 上。在程序里,发送数据的过程中,这个端口置低 电平,数据发送完毕置为高电平,此时显示所有数 据。由于串口发送及74HC164移位的速度相当快, 人的眼睛根本分辨不出来,所以就不会产生闪烁, 如图7-14所示。
图7-14 显示去闪烁电路
7.4 基于 基于DS18B20的水温控制系统 的水温控制系统
内容 利用单片机AT89C51控制DS18B20温度传感器对 水温的控制,当水温低于预设温度值时系统开始加 热(点亮红色发光二极管表示加热状态),当温度达 到预设温度值时自动停止加热。预设温度值和实测 温度值分别由两个3位数码管显示,范围为0~99℃。 背景知识 已掌握Keil μVision3开发软件的使用方法; 掌握DS18B20的工作原理与使用方法。 训练目的 掌握单片机控制系统综合开发设计方法。
7.4.1 Proteus电路设计 电路设计
1. 元件清单列表 打开Proteus ISIS编辑环境,按表7-16所列的清 单添加元件。
2. 电路原理图 元件全部添加后,在Proteus ISIS的编辑区域中 按图7-15所示的原理图(复位和振荡电路略)连接 硬件电路。
图7-15 电路原理图
7.4.2 Proteus调试与仿真 调试与仿真
参照6.3.3节建立程序文件,加载目标代码文件, 进入调试环境,执行程序,在Proteus ISIS界面中, 分别调节十位设置按键和个位设置按键来预设水 温,当DS18B20的温度低于预设温度值时,红色 发光二极管点亮表示进入热状态;调节DS18B20 元件上的按钮可人工模拟实际水温的升高和下降。 可以看到,当实测温度达到预设温度后,红色发 光二极管便自动熄灭,表示停止加热。

仿真片断 如图7-16所示。
图7-16 程序运行结果
7.5 基于单片机的 ×24点阵 基于单片机的24× 点阵 LED汉字显示 汉字显示
7.5.1 设计任务及要求
1. 设计题目 基于单片机的24×24点阵LED汉字显示。 2. 设计要求与目的 实现LED点阵屏核心功能即汉字、数字、字母的多样化显 示; 通过本次设计加深对单片机课程和仿真软件的认识和掌握 以及对仿真软件Proteus的应用进一步的了解; 掌握SPI串口进行数据传输的应用,并学会使用外部芯片 辅助项目设计;
通过此次设计将单片机软硬件结合起来对程序进 行编辑、校验,锻炼实践能力和理论联系实际的能 力。 3. 设计任务 设计系统硬件; 设计系统软件; 编写设计说明书。
7.5.2 设计背景简介
LED点阵块具有亮度高、发光均匀、可靠性好、 拼装方便等优点,能构成各种尺寸的显示屏。目前, LED显示屏已被广泛应用于商场、车站等公共场合 的文字图形显示,并取得了很好的效果。 LED显示屏的种类较多,大致有以下四种分类法: 一是按室内室外分类,二是按工作方式分类,三是 按颜色的数量分类,四是按LED管的单位密度大小 分类。
不同类型的显示屏用途不同,各有优缺点,室内 LED显示屏与户外LED显示屏差别很大,可根据 需要侧重选择。首先是亮度不同,室内屏的发光 亮度要比户外屏低出几倍到几十倍,因此,户外 屏必须采用超高亮度LED,而且为了进一步提高 亮度和增加可视距离,在一个像素内往往要封装 多只超高亮度LED。
7.5.3 电路设计 在电路设计中要考虑硬件的选型,硬件的 选型应根据设计要求和应用场合的限制选用。 在此,选用行列控制器件是很关键的,如果 选用的器件达不到要求可能就会出现驱动能 力不足造成亮度不够,传送数据出错等一些 问题,本LED显示系统主要由AT89C51作为 主控单元,列控制选用74HC138芯片,行数 据传输选用串入并出器件,74164和
74595功能相仿,都是8位串行输入转并 行输出移位寄存器。74164的驱动电流 (25mA)比74595(35mA)的要小,14脚封装, 体积也小一些,而且74595的主要优点是具 有数据存储寄存器,在移位的过程中,输 出端的数据可以保持不变,数码管没有闪 烁感。与164只有数据清零端相比,595还 多有输出端时能/禁止控制端,可以使输出 为高阻态。
我们这里选用74HC595芯片及9块儿8×8点阵显 示模块组成24×24点阵显示屏,如图7-17所示为单 基色8×8的点阵屏内部结构图。从结构上可知,它 的每一列共用一根列线,每一行共用一根行线。当 相应的行接高电平,列接低电平时,对应的发光二 极管被点亮。通常情况下,一块8×8像素的LE

D显 示屏是不能用来显示一个汉字的,因此,本设计按 照其原理结构扩展为24×24,显示一个汉字。在显 示过程中,多采用扫描方式,利用人的视觉暂停效 应,只要刷新速率不小于25帧/秒,就不会有闪烁的 感觉。控制系统的结构框图如图7-18所示。
其次,户外屏须防(雨)水、防阳光直射、防尘、 防高温、防风、防雷击等,而室内屏则无须考虑这 些问题。此设计是基于单片机89C51对点阵24×24 汉字显示的设计。
行控制 单片机89 C51 列控制
矩 阵 显 示 屏
图7-17 点阵屏内部结构图
图7-18 控制系统框图
7.5.4 系统硬件实现
1. 时钟电路 AT89C51单片机芯片内部设有一个由反向放大 器构成的振荡器,XTAL1和XTAL2分别为振荡电 路的输入端和输出端,时钟可由内部或外部生成, 在XTAL1和XTAL2引脚上外接定时元件,内部振 荡电路就会产生自激振荡。系统采用的定时元件 为石英晶体和电容组成的并联谐振回路。晶振频 率选择12MHZ,C1、C2的电容值取30pF,电容 的大小起频率微调的作用。时钟电路图如图7-19 所示。
2. 复位电路 单片机有多种复位电路,本系统采用电平式开关 复位与上电复位方式,电路如图7-20所示。当上电 时,C1相当于短路,使单片机复位,在正常工作时, 按下复位键时单片机复位。在有时碰到干扰时会造 成错误复位,但在大多数条件下,不会出现单片机 错误复位,而可能会引起内部某些寄存器错误复位, 如果在复位端加一个去耦电容,则会得到很好的效 果。
图7-19 时钟电路图
图7-20 复位电路图
3. 行数据传输电路 根据如图7-21所示的74HC595管脚图对控制端的 说明为:MR(10脚)指低点平时将移位寄存器数据清 零;SH_CP(11脚)指上升沿时数据寄存器的数据移 位;Q1、Q2、Q3、……、Q7指下降沿移位寄存器数 据不变(脉冲宽度:5V时,大于几十纳秒就行了, 通常都选微秒级);ST_CP(12脚)指上升沿时移位寄 存器的数据进入数据存储寄存器,下降沿时存储寄 存器数据不变。
通常将RCK置为低电平,当移位结束后,在 RCK端产生一个正脉冲(5V时,大于几十纳秒就行 了,通常都选微秒级),更新显示数据;/G(13脚)指 高电平时禁止输出(高阻态)。如果单片机的引脚不 紧张,用一个引脚控制它,可以方便地产生闪烁和 熄灭效果,这样比通过数据端移位控制要省时省力。 然后用三片74HC595串联起来组成行数据传输端, 如图7-22所示。通过数据端和时钟端把数据传送到 移位寄存器。
图7-21 74HC595管脚图
U6
SH_CP DDS ST_CP 11 14 12 SH_CP DS ST_CP ROW16 ROW17 ROW18 ROW19 ROW20 ROW21 ROW22 ROW23 10 13 MR OE 74HC595 15 1 2 3 4 5 6 7 9 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q7' M

R OE
U2
11 14 12 SH_CP DS ST_CP 15 1 2 3 4 5 6 7 9 10 13 MR OE 74HC595 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q7' ROW8 ROW9 ROW10 ROW11 ROW12 ROW13 ROW14 ROW15
U4
11 14 12 SH_CP DS ST_CP ROW0 ROW1 ROW2 ROW3 ROW4 ROW5 ROW6 ROW7 10 13 MR OE 74HC595 Q0 Q1 Q2 Q3 Q4 Q5 Q6 Q7 Q7' 15 1 2 3 4 5 6 7 9
图7-22 74HC595管脚分配连接图
4. 列控制电路 列控器件74LS138是3-8译码器,它具有三个使 能端,三个数据输入端,只有当使能端S1为高电平, 而S2与S3之和为低电平时,才能正常工作,输出端 低电平有效。此设计采用三片138和每个输出端串 接一个470 的电阻起一定的限流作用,然后与P1 口相连接作为显示屏的列选择线。ABC为译码器数 据输入端,E1、E2、E3为片使能端。当E1为高点 平,E2和E3为低电平时第一片译码器使能可控制 (COL0~COL7)列,以此类推选择列。电路连接如 图7-23所示。
U5
A B C 1 2 3 A B C
E1
6 4 5 E1 E2 E3 74HC138
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
15 14 13 12 11 10 9 7
COL0 COL1 COL2 COL3 COL4 COL5 COL6 COL7
U7
A B C 1 2 3 A B C
E2
6 4 5
E1 E2 E3 74HC138
Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
15 14 13 12 11 10 9 7
COL8 COL9 COL10 COL11 COL12 COL13 COL14 COL15
U9
A B C 1 2 3 A B C
图7-23 74HC138管脚分配连接图
E3 6 4 5 E1 E2 E3 74HC138 Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
15 14 13 12 11 10 9 7
COL16 COL17 COL18 COL19 COL20 COL21 COL22 COL23
5. 点阵组合电路 此点阵是按共阴式组合,控制列选端低电平有效。 ROW0~ROW23为行数据端,COL0~COL16为列 控制端,然后在仿真软件下合并起来就组成了 24*24点阵。管脚分配方式如图7-24所示。
图7-24 点阵管脚分配连接图
6. 单片机和按键连接电路 图7-25是单片机的I/O口连接电路,P1口作为 连接74HC138的片选使能和译码数据端,P0作为 连接74HC595的时钟端、数据端、清零端、使能 端的分配。按键用P2口的P2.0、P2.1、P2.2分别 控制点阵屏停止/移动,开/关显示,速度的加/减 功能。
RP1
RESPACK-8
1
U3
XTAL1 19 XTAL1 P0.0/AD0 P0.1/AD1 P0.2/AD2 P0.3/AD3 P0.4/AD4 P0.5/AD5 P0.6/AD6 P0.7/AD7 P2.0/A8 P2.1/A9 P2.2/A10 P2.3/A11 P2.4/A12 P2.5/A13 P2.6/A14 P2.7/A15 P3.0/RXD P3.1/TXD P3.2/INT0 P3.3/INT1 P3.4/T0 P3.5/T1 P3.6/WR P3.7/RD 39 38 37 36 35 34 33 32 21 22 23 24 25 26 27 28 10 11 12 13 14 15 16 17 SH_CP ST_CP DDS MR OE 10k 10k 10k
XTAL2
18
XTAL2
RST
9
RST
29 30 31
PSEN ALE EA
2 3 4 5 6 7 8 9
A B C E1 E2 E3
1 2 3 4 5 6 7 8
P1.0/T2 P1.1/T2EX P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 AT89C52
图7-25 单片机和按键连接电路图
移动控制
速度
显示
7.5.5 系统软件实现
1. 系统的软件设计 本程序主要由主程序与清屏、查表、送数、循环 扫描、延时几个部分组成。主程序及帧扫描子程

序 流程图如图7-26所示。主程序中,使用DPTR地址 寄存器作为地址取码指针,通过查表将数据送至行 线作控制信号,而通过138连接的列线作扫描控制 开关。DPTR置数据表地址的基值,R2作地址指针, 以两者之和查找相应的数据,R2的初值为0,当 DPTR为表首地址时,在子程序的循环中R2从0加 到3,
取出显示一列字符的全部字节并与列扫描 配合逐列显示,完成一帧扫描的全部操作。 为保证第一屏能移动显示,该设计将数据表 的最前一屏用了0数据,开始以黑屏显示完成 全部的扫描显示。对同一帧的反复扫描次数 R5的设定,决定了显示移动的速度。另外, 延时程序至关重要,这就涉及到前文所说的 刷新速率问题,如设置不当,就会有闪烁感。
图7-26 系统程序图
7.5.5 系统仿真
将上述程序进行编译后,打开89C51单片机的 元件属性编辑对话框,如图7-27所示。在 Program File 中,单击文件夹图标,选择“程序 1.HEX”文件后,即可对系统进行仿真。整个系统 的仿真结果如图7-28所示。
图7-27 元件属性编辑对话框
图7-28 系统仿真结果图

1

相关主题