1、第7章 AT89C51单片机综合设计 7.1 单片机间的多机通信7.1.1 Proteus电路设计7.1.2 Proteus调试与仿真7.1.3 总结与提示7.2 I2C总线应用技术7.2.1 Proteus电路设计7.2.2 Proteus调试与仿真7.2.3 用I2C调试器监视I2C总线7.2.4 总结与提示7.3 基于单片机控制的电子万年历7.3.1 设计任务及要求7.3.2 设计背景7.3.3 电路设计7.3.4 系统硬件实现7.4 基于DS18B20的水温控制系统7.4.1 Proteus电路设计7.4.2 Proteus调试与仿真7.5 基于单片机的2424点阵LED汉字显示7.5
2、.1 设计任务及要求7.5.2 设计背景简介7.5.3 电路设计7.5.4 系统硬件实现7.5.5 系统仿真 Proteus是目前最好的模拟单片机外围器件的工具,与其他单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其他电路的工作情况。因此在仿真和调试程序时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,解决了实验和工程应用间脱节的矛盾。7.1 单片机间的多机通信单片机间的多机通信 内容 三个AT89C51单片机间进行“1主2从”多机通信,主
3、机可以将其数码管显示的内容发送给每个从机,也可以采集每个从机数码管显示的数值并求和后显示出来,每个单片机的数码管显示值可以通过外接的按键进行设置。训练目的 掌握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节
4、建立程序文件,加载目标代码文件,在Proteus ISIS界面中,单击按钮 启动仿真。主机操作如下:(1)每按下“加1”键,数码管显示值加1,对应左边的数码管显示“7”;(2)每按下“汇总数据”键,主机数码管显示值变为从机1的显示值+从机2的显示值之和,对应左边的数码管显示“5”;(3)每按下“发送数据”键,各从机的数码管显示值均变为主机数码管所显示的数值,对应左边的数码管显示“3”。从机操作如下:(1)每按下“加1”键,数码管显示值加1;(2)运行中的数码管显示值随主机的操作而发生改变。仿真运行片段如图7-3和图7-4所示。仿真过程中可单击 按钮暂停仿真,从“Debug”菜单中调出各个单片机
5、的“8051 CPU Registers”窗口来观察各单片机运行中相关寄存器的工作状态,如图7-4所示。图7-3 仿真运行片段1图7-4 仿真运行片段27.1.3 总结与提示总结与提示 在仿真刚开始的几秒钟,仿真系统还未完全就位,仿真结果可能会不正常,稍停一会儿便可正常运行;可将从机的串口工作方式改为采用中断方式进行编程和仿真实验。7.2 I2C总线应用技术总线应用技术 内容 I2C总线是一种用于IC器件之间的二线制总线。它通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送消息,并根据地址识别每个器件。本例使用串口通信I2C存储器24C01扩展AT89C51单片机的
6、数据存储器,完成读写操作。训练目的 学习使用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界面中
7、,单击按钮启动仿真;(2)仿真过程中单击按钮暂停仿真,从“Debug”菜单中调出“8051 CPU Internal(IDATA)Memory”窗口和“I2C Memory Internal Memory-U2”窗口,观察单片机内部数据存储器和24C01存储器相关单元的状态变化,如图7-6所示。图7-6 仿真暂停时程序运行的中间结果7.2.3 用用I2C调试器监视调试器监视I2C总线总线 1.在电路中添加I2C调试器 在工具栏单击按钮,再在对象选择器中选择“I2C DEBUGGER”。将其中两引脚与单片机连接,其中SCL接P3.0,SDA接P3.1。2.仿真监视 从图7-6中的I2C调试器窗口
8、可以看到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。3.I2C通信读/写操作序列中的专用字符 I2C通信读/写操作序列中的专用字符,如表7-3所示。7.2.4 总结与提示总结与提示 本例
9、中,如果将AT89C51单片机的时钟频率设置为12MHz,则应将24C01属性中的TD_WRITE=1m项改为TD_WRITE=0.5m。具体步骤为:双击24C01元件,打开其属性编辑框,选中“Edit all properties as text”项,然后进行修改。7.3 基于单片机控制的基于单片机控制的电子万年历电子万年历7.3.1 设计任务及要求设计任务及要求1.设计题目 基于单片机的万年历。2.设计要求与目的 利用单片机、时钟芯片、温度传感器、数码管等实现日期、时间、温度的显示即一个简单的万年历;万年历的设计是几个简单模块的组合,硬件上是这样,软件上也是这样,要熟悉这种模块化的设计思路
10、;通过万年历的设计要掌握好对Proteus仿真设计的熟练使用;通过万年历的设计要熟练掌握单片机的各个功能,并且能对单片机有一个总体的把握,在设计的过程中能够凭借对单片机各功能的了解,达到理想的设计效果;本例使用了时钟芯片DS1302、温度传感器DS18B20和74HC164,通过对单片机的学习能够对它们触类旁通。3.设计任务 设计系统硬件;设计系统软件;编写设计说明书。7.3.2 设计背景设计背景 在生活中,我们经常能看到各种各样的制作精美的万年历,万年历大有取代常规钟表的趋势。随着人们生活水平的提高,智能产品越来越受到人们的欢迎。而单片机、传感器及各种集成电路起到关键作用。希望通过本设计能够
11、对未来的趋势有所把握,从而适应社会需要。7.3.3 电路设计电路设计 万年历大体可以分为三大模块,74HC164与数码管的显示模块、DS1302时钟芯片与单片机的时钟模块和DS18B20与单片机的温度模块。单片机在5V电压下,各个模块正常工作。单片机从DS1302芯片中读出一组时间日期数据,同时单片机通过DS18B20温度传感器获得当前温度并且发送给单片机。单片机接收到各个数据时,利用串行通信原理把数据按照一定的顺序发送给74HC164。74HC164移位到最后一个数码管后,把各个数据显示出来。1.74HC164芯片相关知识 (1)74HC164简介 74HC164是一种8位串行输入并行输出的
12、移位寄存器。它是高速硅门 CMOS 器件,与低功耗肖特基型 TTL(TTL LS)器件的引脚兼容。74HC164、74HCT164 是 8 位边沿触发式移位寄存器,串行输入数据,然后并行输出。数据通过两个输入端之一(DSA 或 DSB)串行输入;任一输入端可以用作高电平使能端,控制另一输入端的数据输入。两个输入端或者连接在一起,或者把不用的输入端接高电平,一定不要悬空。时钟(CP)每次由低变高时,数据右移一位,输入到 Q0,Q0是两个数据输入端 (DSA和DSB)的逻辑与,它在上升时钟沿之前保持一个建立时间的长度。主复位(MR)输入端上的一个低电平将使其他所有输入端都无效,同时非同步地清除寄存
13、器,强制所有的输出为低电平。(2)74HC164的引脚功能 74HC164的引脚功能如图7-7、图7-8和表7-4所示。图7-7 74HC164的引脚图 图7-8 74HC164的IEC逻辑符号 2.DS1302芯片相关知识 (1)DS1302简介 DS1302是DALLAS公司推出的一种高性能、低功耗、带RAM的实时时钟芯片,它可以对年、月、日、星期、时、分、秒进行计时,且具有闰年补偿功能,工作电压为2.55.5V。DS1302采用三线接口,与CPU进行同步通信,并可采用突发方式一次传送多个字节的时间数据或RAM数据。DS1302内部有一个318的用于临时性存放数据的RAM存储器。(2)DS
14、1302的引脚功能 DS1302的引脚功能如图7-9及表7-5所示。(3)控制字格式 控制字格式如表7-6所示。控制字最高位必须是1,如果它为0,则不能把数据写入到DS1302中,位6如果为0则表示存取日历时钟数据,为1表示存取RAM数据;位51指示操作单元的地址;最低位为0表示要进行写操作,为1表示进行读操作,控制字节总是从最低位开始输出。表7-6 控制字格式 (4)复位和时钟控制 DS1302通过把RST输入驱动置高电平来启动所有的数据传送。RST输入有两种功能:首先,RST接通控制逻辑,允许地址/命令序列送入移位寄存器;其次,RST提供了终止单字节或多字节数据的传送手段。当RST为高电平
15、时,所有数据传送被初始化,允许对DS1302进行操作。如果在传送过程中置RST为低电平,则会终止此数据传送,并且I/O引脚变为高阻状态。上电运行时,在VCC2.5V之前,RST必须保持低电平。只有在SCLK为低电平时,才能将RST置为高电平。(5)DS1302寄存器 7个寄存器与日历、时钟相关,存放的数据位为BCD码形式,其日历、时间寄存器及其控制字如表7-7所示。时钟与日历暂停。时钟与日历包含在七个写/读寄存器中,采用BCD码形式。秒寄存器的位7(CH)为时钟暂停位,为1时,时钟振荡停止,DS1302为低功率的备份方式,当为0时,时钟将启动。AM-PM/12-24方式。小时寄存器的位7定义为
16、12/24小时方式选择位。为高电平,选择12小时方式。在12小时方式下,位5是AM/PM位,此位为高电平时表示PM。在24小时方式下,位5是第二个10小时位(2023时)。写保护寄存器。写保护寄存器的位7是写保护位。开始七位(位06)置为0,在读操作时总是读出0。在对时钟或RAM进行写操作之前,位7必须为0。当为高电平时,写保护防止对任何其他寄存器进行写操作。慢速充电寄存器。这个寄存器控制DS1302的慢速充电特征。慢速充电选择位(TCS)控制慢速充电器的选择。为了防止偶然的因素使之工作,只有1010模式才能使慢速充电器工作,所有其他模式将禁止慢速充电器。DS1302上电时,慢速充电器被禁止。
17、二极管选择位(DS)选择一个还是两个二极管连接在VCC1与VCC2之间。如果DS为01选择一个,如果DS为10选择两个。如果DS为00或11,那么充电器被禁止,与TCS无关。RS选择连接在VCC1与VCC2之间的电阻。RS为00无电阻,为01用2K,为10用4K,为11用8K。时钟/日历多字节方式。时钟/日历命令字节可规定多字节方式,在此方式下,最先八个时钟/日历寄存器可以从地址0位开始连续地读写。当指定写时钟/日历为多字节方式时,如果写保护位被设置为高电平,那么没有数据会传送到八个时钟/日历寄存器的任一个。在多字节方式下,慢速充电器是不可访问的。DS1302还有充电寄存器,时钟突发寄存器及与
18、RAM相关的寄存器等。时钟突发寄存器可一次性顺序读写除充电寄存器外的所有寄存器内容。DS1302与RAM相关的寄存器分为两类:一类是单个RAM单元,共有31个,每个单元组态为一个8位的字节,其命令控制字为C0H-FDH,其中奇数为读操作,偶数为写操作;另一类为突发方式下的控制寄存器,此方式下可一次性读写所有的RAM的31个字节,命令控制字为FEH(写)、FFH(读)。3.DS18B20芯片相关知识 (1)DS18B20简介 DS18B20是由美国DALLAS公司生产的单线数字温度传感器芯片。与传统的热敏电阻有所不同,DS18B20可直接将被测温度转化为串行数字信号,以供单片机处理,它还具有微型
19、化、低功率、高性能、抗干扰能力强等优点。通过编程,DS18B20可以实现912位的温度读数。信息经过单线接口送入DS18B20或从DS18B20送出,因此从微处理器到DS18B20仅需连接一条信号线和地线。读、写和执行温度变换所需的电源可以由数据线本身提供,而不需要外部电源。(2)DS18B20的引脚功能 DS18B20的引脚(图7-10),其功能如表7-8所示。(3)DS18B20的主要特点 采用单线技术,与单片机通信只需一个引脚;通过识别芯片各自唯一的产品序列号从而实现单线多挂接,简化了分布式温度检测的应用;实际应用中不需要外部任何器件即可实现测温;可通过数据线供电,电压的范围在35.5V
20、;不需要备份电源;测量范围为-55+125,在-10+85范围内误差为0.5;数字温度计的分辨率用户可以在9位到12位之间选择,可配置实现912位的温度读数;将12位的温度值转换为数字量所需时间不超过750ms;用户定义的,非易失性的温度告警设置,用用户可以自行设定告警的上下限温度。(4)单总线技术 单总线协议保证了数据可靠的传输,任一时刻总线上只能有一个控制信号或数据。一次数据传输可分为以下四个操作过程:初始化,传送ROM命令,传送RAM命令,数据交换。单总线上所有的处理都从初始化开始。初始化时序是由一个复位脉冲(总线命令者发出)和一个或多个从者发出的应答信号(总线从者发出)组成。应答脉冲的
21、作用是:从器件让总线命令者知道该器件是在总线上的,并准备好开始工作。当总线命令者检测到某器件存在时,首先发送七个ROM功能中的一个命令:读ROM(总线上只有一个器件时,即读出其序列号);匹配ROM(总线上有多个器件时,寻址某一个器件);查找ROM(系统首次启动后,须识别总线上的各器件);跳过ROM(总线上只有一个器件时,可跳过读ROM命令直接向器件发送命令,以节省时间);超速匹配ROM(超速模式下寻址某个器件);超速跳过ROM(超速模式下跳过读ROM命令);条件查找ROM(只查找输入电压超过设置的报警门限值的器件)。当成功执行上述命令之一后,总线命令者可发送任何一个可使用命令来访问存储器和控制
22、功能,进行数据交换。所有数据的读写都是从最低位开始的。单总线传送的数据或命令是由一系统的时序信号组成的,单总线上共有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个
23、字节,包括温度信息(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;实测
24、温度和数字输出的对应关系如表7-14所示。7.3.4 系统硬件实现系统硬件实现 1DS18B20温度测量电路 根据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用
25、来外接晶振,晶振的频率为32.768kHz,如图7-12所示。图7-12 时钟电路 3显示电路 数码管采用共阳极的设计,一个数码管由一个74HC164来驱动,并且采用级联的方式进行连接。利用单片机的串口发送或者模拟串口发送把数据发送给74HC164来驱动数码管显示数据。这种设计的好处是接节约单片机的I/O口,同时也不会降低CPU的运行速度,如图7-13所示。图7-13 显示电路 无论仿真还是实物,如果把数码管的阳极直接接到电源上,往往会产生闪烁现象。为了解决这一问题。本设计把数码管的阳极接到单片机的一个I/O口上。在程序里,发送数据的过程中,这个端口置低电平,数据发送完毕置为高电平,此时显示所
26、有数据。由于串口发送及74HC164移位的速度相当快,人的眼睛根本分辨不出来,所以就不会产生闪烁,如图7-14所示。图7-14 显示去闪烁电路7.4 基于基于DS18B20的水温控制系统的水温控制系统 内容 利用单片机AT89C51控制DS18B20温度传感器对水温的控制,当水温低于预设温度值时系统开始加热(点亮红色发光二极管表示加热状态),当温度达到预设温度值时自动停止加热。预设温度值和实测温度值分别由两个3位数码管显示,范围为099。背景知识 已掌握Keil Vision3开发软件的使用方法;掌握DS18B20的工作原理与使用方法。训练目的 掌握单片机控制系统综合开发设计方法。7.4.1
27、Proteus电路设计电路设计 1.元件清单列表 打开Proteus ISIS编辑环境,按表7-16所列的清单添加元件。2.电路原理图 元件全部添加后,在Proteus ISIS的编辑区域中按图7-15所示的原理图(复位和振荡电路略)连接硬件电路。图7-15 电路原理图7.4.2 Proteus调试与仿真调试与仿真 参照6.3.3节建立程序文件,加载目标代码文件,进入调试环境,执行程序,在Proteus ISIS界面中,分别调节十位设置按键和个位设置按键来预设水温,当DS18B20的温度低于预设温度值时,红色发光二极管点亮表示进入热状态;调节DS18B20元件上的按钮可人工模拟实际水温的升高和
28、下降。可以看到,当实测温度达到预设温度后,红色发光二极管便自动熄灭,表示停止加热。仿真片断如图7-16所示。图7-16 程序运行结果7.5 基于单片机的基于单片机的2424点阵点阵LED汉字显示汉字显示7.5.1 设计任务及要求设计任务及要求 1.设计题目 基于单片机的2424点阵LED汉字显示。2.设计要求与目的 实现LED点阵屏核心功能即汉字、数字、字母的多样化显示;通过本次设计加深对单片机课程和仿真软件的认识和掌握以及对仿真软件Proteus的应用进一步的了解;掌握SPI串口进行数据传输的应用,并学会使用外部芯片辅助项目设计;通过此次设计将单片机软硬件结合起来对程序进行编辑、校验,锻炼实
29、践能力和理论联系实际的能力。3.设计任务 设计系统硬件;设计系统软件;编写设计说明书。7.5.2 设计背景简介 LED点阵块具有亮度高、发光均匀、可靠性好、拼装方便等优点,能构成各种尺寸的显示屏。目前,LED显示屏已被广泛应用于商场、车站等公共场合的文字图形显示,并取得了很好的效果。LED显示屏的种类较多,大致有以下四种分类法:一是按室内室外分类,二是按工作方式分类,三是按颜色的数量分类,四是按LED管的单位密度大小分类。不同类型的显示屏用途不同,各有优缺点,室内LED显示屏与户外LED显示屏差别很大,可根据需要侧重选择。首先是亮度不同,室内屏的发光亮度要比户外屏低出几倍到几十倍,因此,户外屏
30、必须采用超高亮度LED,而且为了进一步提高亮度和增加可视距离,在一个像素内往往要封装多只超高亮度LED。7.5.3 电路设计 在电路设计中要考虑硬件的选型,硬件的选型应根据设计要求和应用场合的限制选用。在此,选用行列控制器件是很关键的,如果选用的器件达不到要求可能就会出现驱动能力不足造成亮度不够,传送数据出错等一些问题,本LED显示系统主要由AT89C51作为主控单元,列控制选用74HC138芯片,行数据传输选用串入并出器件,74164和 74595功能相仿,都是8位串行输入转并行输出移位寄存器。74164的驱动电流(25mA)比74595(35mA)的要小,14脚封装,体积也小一些,而且74
31、595的主要优点是具有数据存储寄存器,在移位的过程中,输出端的数据可以保持不变,数码管没有闪烁感。与164只有数据清零端相比,595还多有输出端时能/禁止控制端,可以使输出为高阻态。我们这里选用74HC595芯片及9块儿88点阵显示模块组成2424点阵显示屏,如图7-17所示为单基色88的点阵屏内部结构图。从结构上可知,它的每一列共用一根列线,每一行共用一根行线。当相应的行接高电平,列接低电平时,对应的发光二极管被点亮。通常情况下,一块88像素的LED显示屏是不能用来显示一个汉字的,因此,本设计按照其原理结构扩展为2424,显示一个汉字。在显示过程中,多采用扫描方式,利用人的视觉暂停效应,只要
32、刷新速率不小于25帧/秒,就不会有闪烁的感觉。控制系统的结构框图如图7-18所示。其次,户外屏须防(雨)水、防阳光直射、防尘、防高温、防风、防雷击等,而室内屏则无须考虑这些问题。此设计是基于单片机89C51对点阵2424汉字显示的设计。单片机 89 C 51 行控制 列控制 矩 阵 显 示 屏 图7-17 点阵屏内部结构图 图7-18 控制系统框图7.5.4 系统硬件实现系统硬件实现 1.时钟电路 AT89C51单片机芯片内部设有一个由反向放大器构成的振荡器,XTAL1和XTAL2分别为振荡电路的输入端和输出端,时钟可由内部或外部生成,在XTAL1和XTAL2引脚上外接定时元件,内部振荡电路就
33、会产生自激振荡。系统采用的定时元件为石英晶体和电容组成的并联谐振回路。晶振频率选择12MHZ,C1、C2的电容值取30pF,电容的大小起频率微调的作用。时钟电路图如图7-19所示。2.复位电路 单片机有多种复位电路,本系统采用电平式开关复位与上电复位方式,电路如图7-20所示。当上电时,C1相当于短路,使单片机复位,在正常工作时,按下复位键时单片机复位。在有时碰到干扰时会造成错误复位,但在大多数条件下,不会出现单片机错误复位,而可能会引起内部某些寄存器错误复位,如果在复位端加一个去耦电容,则会得到很好的效果。图7-19 时钟电路图 图7-20 复位电路图 3.行数据传输电路 根据如图7-21所
34、示的74HC595管脚图对控制端的说明为:MR(10脚)指低点平时将移位寄存器数据清零;SH_CP(11脚)指上升沿时数据寄存器的数据移位;Q1、Q2、Q3、.、Q7指下降沿移位寄存器数据不变(脉冲宽度:5V时,大于几十纳秒就行了,通常都选微秒级);ST_CP(12脚)指上升沿时移位寄存器的数据进入数据存储寄存器,下降沿时存储寄存器数据不变。通常将RCK置为低电平,当移位结束后,在RCK端产生一个正脉冲(5V时,大于几十纳秒就行了,通常都选微秒级),更新显示数据;/G(13脚)指高电平时禁止输出(高阻态)。如果单片机的引脚不紧张,用一个引脚控制它,可以方便地产生闪烁和熄灭效果,这样比通过数据端
35、移位控制要省时省力。然后用三片74HC595串联起来组成行数据传输端,如图7-22所示。通过数据端和时钟端把数据传送到移位寄存器。Q015Q11Q22Q33Q44Q55Q66Q77Q79SH_CP11ST_CP12DS14MR10OE13U274HC595Q015Q11Q22Q33Q44Q55Q66Q77Q79SH_CP11ST_CP12DS14MR10OE13U674HC595Q015Q11Q22Q33Q44Q55Q66Q77Q79SH_CP11ST_CP12DS14MR10OE13U474HC595ST_CPDDSMRSH_CPOEROW0ROW1ROW2ROW3ROW4ROW5ROW6R
36、OW7ROW8ROW9ROW10ROW11ROW12ROW13ROW14ROW15ROW16ROW17ROW18ROW19ROW20ROW21ROW22ROW23图7-21 74HC595管脚图 图7-22 74HC595管脚分配连接图 4.列控制电路 列控器件74LS138是3-8译码器,它具有三个使能端,三个数据输入端,只有当使能端S1为高电平,而S2与S3之和为低电平时,才能正常工作,输出端低电平有效。此设计采用三片138和每个输出端串接一个470的电阻起一定的限流作用,然后与P1口相连接作为显示屏的列选择线。ABC为译码器数据输入端,E1、E2、E3为片使能端。当E1为高点平,E2和E
37、3为低电平时第一片译码器使能可控制(COL0COL7)列,以此类推选择列。电路连接如图7-23所示。A1B2C3E16E24E35Y015Y114Y213Y312Y411Y510Y69Y77U574HC138A1B2C3E16E24E35Y015Y114Y213Y312Y411Y510Y69Y77U774HC138A1B2C3E16E24E35Y015Y114Y213Y312Y411Y510Y69Y77U974HC138ABCE1E2E3ABCABCCOL8COL9COL10COL11COL12COL13COL14COL15COL0COL1COL2COL3COL4COL5COL6COL7COL
38、16COL17COL18COL19COL20COL21COL22COL23图7-23 74HC138管脚分配连接图 5.点阵组合电路 此点阵是按共阴式组合,控制列选端低电平有效。ROW0ROW23为行数据端,COL0COL16为列控制端,然后在仿真软件下合并起来就组成了24*24点阵。管脚分配方式如图7-24所示。图7-24 点阵管脚分配连接图 6.单片机和按键连接电路 图7-25是单片机的I/O口连接电路,P1口作为连接74HC138的片选使能和译码数据端,P0作为连接74HC595的时钟端、数据端、清零端、使能端的分配。按键用P2口的P2.0、P2.1、P2.2分别控制点阵屏停止/移动,开
39、/关显示,速度的加/减功能。XTAL218XTAL119ALE30EA31PSEN29RST9P0.0/AD039P0.1/AD138P0.2/AD237P0.3/AD336P0.4/AD435P0.5/AD534P0.6/AD633P0.7/AD732P1.0/T21P1.1/T2EX2P1.23P1.34P1.45P1.56P1.67P1.78P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.7/RD17P3.6/WR16P3.5/T115P2.7/A1528P2.0/A821P2.1/A922P2.2/A1023P2.3/A112
40、4P2.4/A1225P2.5/A1326P2.6/A1427U3AT89C52234567891RP1RESPACK-8ABCE1E2E3ST_CPDDSMRSH_CPOEXTAL1XTAL2RST10k10k10k速速度度显显示示移移动动控控制制图7-25 单片机和按键连接电路图7.5.5 系统软件实现系统软件实现 1.系统的软件设计 本程序主要由主程序与清屏、查表、送数、循环扫描、延时几个部分组成。主程序及帧扫描子程序流程图如图7-26所示。主程序中,使用DPTR地址寄存器作为地址取码指针,通过查表将数据送至行线作控制信号,而通过138连接的列线作扫描控制开关。DPTR置数据表地址的基值
41、,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 系统仿真结果图