Download presentation
Presentation is loading. Please wait.
1
第八章 数据通信
2
任课教师:刘忠国 山东大学课程中心网站: 宏晶官方网站: STC单片机编译(汇编)/编程(烧录)/仿真工具说 明书; stc15系列单片机器件手册等 keil μvision软件下载及指导手册(Help→μvision Help) Keil Software –Cx51 编译器用户手册: Cx51编译 器--对传统和扩展的8051微处理器的优化的C 编译器和库参考
3
第八章 数据通信 本章学习目标 了解通信的有关概念 掌握串行通信和并行通信的原理
第八章 数据通信 本章学习目标 了解通信的有关概念 掌握串行通信和并行通信的原理 掌握常见串行接口(RS232/RS485/SPI/I2C)的原 理及应用方法 掌握单片机并行接口的扩展方法
4
第八章 数据通信 8.1 通信的有关概念 串行通信的相关概念 并行通信的相关概念 8.2 串行接口 单片机的串行接口 RS232串行通信接口 RS485通信接口 SPI通信接口 I2C通信接口 8.3 并行接口的扩展方法 A接口及其应用 HC595接口及其应用 1. 串行口的寄存器 2. 串行口的工作方式 3. 多处理机通信 4. 波特率的设定 5. 串行口通信应用举例
5
I2C通信接口 1、I2C总线简介 I2C(Inter-Integrated Circuit)总线是由PHILIPS 公司开发的串行总线,用于连接微控制器及其外围 设备。 I2C总线产生于二十世纪80年代,最初为音频和视 频设备开发,如今主要在服务器管理中使用,其中 包括单个组件状态的通信。 例如,管理员可对各个组件进行查询,以管理系统 的配置或掌握组件的功能状态,如电源和系统风扇。 可随时监控内存、硬盘、网络、系统温度等多个参 数,增加了系统的安全性,方便了管理。
6
I2C通信接口 2、I2C总线特点 I2C总线最主要的优点是其简单性和有效 性。由于接口直接在组件之上,因此I2C总 线占用的空间非常小,减少了电路板的空间 和芯片管脚的数量,降低了互联成本。 总线长度可高达25英尺, 并且能够以10Kbps 的最大传输速率支持40个组件。
7
2、I2C总线特点 I2C总线的另一个优点是,它支持多个主器件 (Multimastering),主器件也称为主机,其中任 何能够进行发送和接收的设备都可以成为主机。 一个主机能够控制信号的传输和时钟频率。当然, 在任何时间点上只能有一个主机。 I2C总线有3种模式:标准模式(100Kbits/s),快 速模式(400Kbits/s)和高速模式(3.4Mbits/s), 寻址方式有7位和10位方式。
8
3、I2C术语 表8-7 I2C术语 Transmitter 发送者:向总线发送数据的电路 Receiver 接收者:从总线上接收数据的电路
名称 描述 Transmitter 发送者:向总线发送数据的电路 Receiver 接收者:从总线上接收数据的电路 Master 主机:启动数据传输、产生时钟信号和结束数据传输的电路 Slave 从机:被主机寻址的电路 Multi-master 多主机结构:在不破坏信息的情况下,同一时刻有多个主机试图控制总线 Arbitration 仲裁:在有多个主机试图同时控制总线时,为了不破坏信息,在某一时刻确保只有一个主机控制总线的过程 Synchronization 同步:同步两个或更多电路时钟信号的过程
9
I2C通信接口 4、I2C总线工作原理 I2C是一种串行总线的外设接口,采用同步方式串 行发送或接收信息,两设备在同一个时钟下工作。 I2C总线只用两根线:串行数据SDA (Serial Data)、 串行时钟SCL (Serial Clock)。 由于I2C只有一根数据线,因此其发送信息和接收 信息不能同时进行。信息的发送和接收只能分时 进行。
10
4、I2C总线工作原理 I2C总线上的所有器件的SDA线并接在一起,所有 器件的SCL线并接在一起;
I2C总线数据传输协议比SPI总线复杂, 因I2C总线器 件没有片选控制线, 所以I2C总线数据传输开始必须 由主器件产生通信的开始条件(START条件); 通信结束时, 由主器件产生通信的停止条件 (STOP 条件)。
11
4、I2C总线工作原理 当SCL为高时, 使用SDA的变化标识开始条件和停止 条件。 如果SDA由1变到0,则产生START条件;
如果SDA由0变到1,则产生STOP条件。 图8-37 START条件和STOP条件时序
12
4、I2C总线工作原理 SDA线上的数据在SCL高电平期间必须保持稳定, 否 则会被误认为开始条件或结束条件, 只有在SCL低电 平期间才能改变SDA线上的数据。 …… 图8-38 I2C总线的数据传输波形图
13
4、I2C总线工作原理 数据传输的时序如图所示。 图8-39 数据传输的时序
14
4、I2C总线工作原理 I2C的确认位时序如图所示。 图8-40 I2C的确认位时序
15
4、I2C总线工作原理 目前,有很多半导体集成电路上都集成了I2C接口。
带有I2C接口的单片机有:CYGNAL的C8051F0XX 系列,PHILIPSP87LPC7XX系列,MICROCHIP的 PIC16C6XX系列等。 很多外围器件如存储器、监控芯片等也提供I2C接口。 如ATmel的串行EEPROM AT24CXX系列。
16
I2C通信接口 5、总线基本操作 I2C规程运用主/从双向通讯。器件发送数据到总线 上,则定义为发送器,器件接收数据则定义为接 收器。主器件和从器件都可以工作于接收和发送 状态。 总线必须由主器件(通常为微控制器)控制,主 器件产生串行时钟(SCL)控制总线的传输方向, 并产生起始和停止条件。
17
5、总线基本操作 (1)控制字节 在起始条件之后,必须是器件的控制字节,其中高四 位为器件类型识别符(不同的芯片类型有不同的定义, EEPROM一般应为1010),接着三位为片选,最后一 位为读写位,当为1时为读操作,为0时为写操作。如 图所示。 图8-41 控制字节配置
18
5、总线基本操作 每次只能向芯片中的一个地址写入一个字节的数据。 (2)写操作
(2)写操作 写操作分为字节写和页面写两种操作,对于页面写根 据芯片的一次装载的字节不同有所不同。 字节写指令 首先发送开始位来通知芯片开始进行指令传输; 然后传送设置好的器件地址字节,R/W位应置0; 接着是分开传送十六位地址的高低字节,再传送要 写入的数据; 最后发送停止位表示本次指令结束。 每次只能向芯片中的一个地址写入一个字节的数据。
19
5、总线基本操作 写入单个字节的时序图如图所示。 图8-42 写入单个字节的时序图
20
5、总线基本操作 页面写模式 需要发送第一个字节的地址 然后一次性发送多个字节的写入数据后 再发送停止位。
写入过程中其余的地址增量自己由芯片内部完成。 图8-43 页写入的时序图
21
5、总线基本操作 注意 无论那种写入方式,指令发送完成后,芯片内部开 始写入,这时SDA会被芯片拉高,直到写入完成后 SDA才会重新变的有效,在编写用户程序时可以在 写入的时候不停发送伪指令并查询是否有ACK返回, 如果有ACK返回则可以进行下一步操作 。
22
5、总线基本操作 (3)读操作 三种基本操作:读当前地址、读任意地址和连续读取。 1)读当前地址
(3)读操作 三种基本操作:读当前地址、读任意地址和连续读取。 1)读当前地址 这种读取模式是读取当前芯片内部的地址指针指向的 数据。 每次读写操作后,芯片会把最后一次操作过的地址作 为当前的地址。 注意:在CPU接收完芯片传送的数据后不必发送低电 平的ACK给芯片,直接拉高SDA等待一个时钟后发送 停止位。
23
5、总线基本操作 读当前地址时序图如图所示。 图8-44 读当前地址时序图
24
5、总线基本操作 2)读任意地址 “读当前地址” 可以说是读的基本指令。
读任意地址时是在这个基本指令之前加一“伪操作” , 这个伪操作传送一个写指令,但这个写指令在地址传 送完成后就要结束,这时芯片内部的地址指针指到这 个地址上,再用读当前地址指令就可以读出该地址的 数据。
25
5、总线基本操作 读任意地址的时序图如图所示。 图8-45 读任意地址的时序图
26
5、总线基本操作 3)连续读取 连续读取操作时只要在上面二种读取方式中芯片 传送完读取数据后,CPU回应给芯片一个低电平的 ACK应答,那么芯片地址指针自动加一并传送数 据,直到CPU不回应(NOACK)并停止操作。 图8-46 连续读取的时序图
27
8.2.5 I2C通信接口 6、实例 以单片机对X24C04的操作为例说明I2C接口的应用。
X24C04是XICOR公司的CMOS 4096位串行EEPROM, 内部组织成512×8位, 16字节页面写。与单片机的接 口如图所示。 图8-47 X24C04与单片机的接口
28
5、总线基本操作 下面通过I2C接口对 X24C04进行单字节 写操作的流程图如图 所示。
29
6、I2C接口实例: 单片机对X24C04的操作 源程序如下:;子名称:BYTE-WR ;功能描述:写一个字节。;输入参数:累加器A。;输出参数:无 SCL EQU P3.2 SDA EQU P3.3 BYTE-WR: MOV R2, #08H ;1字节8位 SENDA: CLR SCL RLC A ;左移一位 MOV SDA, C ;写一位 SETB SCL DJNZ R2, SENDA ;写完8个字节? CLR SCL ;应答信号 SETB SDA RET
30
6、I2C接口实例: 单片机对X24C04的操作 使用I2C总线时应注意以下几点: 严格按照时序图的时序要求进行操作;
若与口线上带内部上拉电阻的单片机接口连接,可 以不外加上拉电阻; 为了配合相应的传输速率,在对口线操作的指令后 可用NOP指令加一定的延时; 为了减少意外的干扰信号将EEPROM内的数据改写 可用外部写保护引脚(如果有), 或在EEPROM内部没 有用的空间写入标志字,每次上电时或复位时做一 次检测,判断EEPROM是否被意外改写。
31
§8.3 并行接口的扩展方法 在需要检测或者控制较多的开关量时,单片机的 I/O口可能无法满足数量上的要求。在这种情况下, 应该考虑I/O接口的扩展。 常见的扩展方法有使用8255进行并行口的扩展, 以及使用串行输入并行输出接口芯片(例如74HC595 接口)扩展输出控制I/O等方法。 下面分别加以介绍。
32
A接口及其应用 1、8255A简介 8255A是Intel公司生产的可编程并行I/O接口芯片, 有3个8位并行I/O接口,用+5V单电源供电,能在 以下三种方式下工作: 方式 0—基本输入/出方式; 方式 1—选通输入/出方式; 方式 2—双向选通工作方式。 8255A 8255A内部结构分为3个部分:与CPU连接 部分、与外设连接部分和控制部分。
33
8255A的引脚图和内部结构如图所示 8255A的引脚图和内部结构如图所示。 A组控制 B组控制 缓冲器 数据总线 DB o RD WR
RESET CS 读/写 控制逻辑 A口 上C口 下C口 B口 PA7~PA0 PC7~PC4 PC3~PC0 PB7~PB0 I/O 外设接口 CPU接口 内部逻辑 内 部 总 线 图 A的引脚图和内部结构
34
8255A的引脚图和内部结构如图所示 8255A的引脚图
35
1、8255A简介 (1)A口、B口和C口 A口、B口和C口均为8位I/O数据口,但结构上略有 差别。
各个端口用于输入和输出时,均具有锁存功能;用 于输出时,均具有缓冲(暂存或驱动)功能。
36
1、8255A简介 PA口的各个口线通过编程可以分别设置成单 向输出、单向输入或者分时输入输出(方式2)。
PB口的各个口线通过编程可以分别设置成单 向输出和单向输入。 PC端口可以分为高4位PC7~4和低4位PC3~0 两个独立部分。PC端口可否独立控制取决于 PA端口和PB端口的工作方式。
37
图8-50 PA口某个口线的 输出锁存和缓冲, 输入锁存结构
图8-51 PB口某个口线的输出锁存和缓冲, 输入缓冲结构
38
1、8255A简介 (2)I/O口线(24条) PA0~PA7、PB0~PB7、PC0~PC7为24条双向 三态I/O总线,分别与A、B、C口相对应,用 于8255A和外设之间传送数据。 (3)A、B组控制电路 这是两组根据CPU的命令字控制8255A工作方式的电 路。A组控制A口及C口的高4位,B组控制B口及C口 的低4位。
39
1、8255A简介 (4)数据缓冲器 这是一个双向三态8位的驱动口,用于和单片机的数 据总线相连,传送数据或控制信息(控制字)。 (5)数据线(8条) D0~D7为数据总线, 用于传送CPU和8255A之间的数 据、命令和状态字。 (6)读/写控制逻辑 这部分电路接收单片机送来的读/写命令和选口地 址,用于控制对8255A的读/写。
40
1、8255A简介 (7)控制线和寻址线(6条) RESET: 复位信号, 输入, 高电平有效。一般和单片机 的复位相连, 复位后, 8255A所有内部寄存器 清0控制寄存器为9Bh, 所有口都为输入方式。 和 :读/写信号线,输入,低电平有效。 : 片选线,输入,低电平有效。 A0, A1: 地址输入线。芯片被选中 ( = 0 )时, 其4种 组合00, 01, 10, 11分别选择A,B,C口和控制寄存器。 (8)电源线(2条) VCC为+5 V,GND为地线。
41
1、8255A简介 表8-8 对8255A操作的真值表 对8255A操作的真值表如表所示 对8255A而言是输出, 则对CPU是输入
42
2、8255A控制字 8255A的三个端口具体工作在什么方式下,是通过 CPU对控制口的写入控制字来决定的
用户通过程序把这两个控制字送到8255A的控制寄存 器(A0A1=11)中; 这两个控制字以D7来作为区别标志。
43
图8-52 8255A方式选择控制字和C口按位置位/复位控制字
复位后为9Bh 方式选择控制字和C口置/复位控制字分别如图a 和b所示。 复位后 图 A方式选择控制字和C口按位置位/复位控制字
44
2、8255A控制字 C口置/复位控制字 分别如图b所示。 C口具有位操作功能 图 A控制字和C口按位置位/复位控制字
45
2、8255A控制字 注意 C口具有位操作功能,把一个置/复位控制字送入 8255A的控制寄存器,就能将C口的某一位置1或 清0而不影响其它位的状态。 三个端口的数据传送模式 PA端口具有3种传送模式可供选用。 PB端口具有2种传送模式可供选用。 PC端口的传送模式取决于PA端口和PB端口的传送 模式。
46
(1)传送模式0 —基本输入/出方式 模式0的功能特点: 是直接控制输入或输出传送。不需要查询和中断控制。
PA、PB和PC端口都可以编程设置为模式0传送。 PA、PB、PC7~PC4、PC3~PC0这4个端口最多有 16种输入输出组合。 模式0传送在计算机系统中很多有实际应用的例子。 例如在个人计算机系统中,8255A并行接口电路的PA 端口被设置成模式0输入,接收键盘输入的按键扫描码。 又如,在半导体数码管显示控制电路中,通常设置 8255A并行接口电路的PA和PB端口为模式0输出,分 别进行位控制和段控制。
47
2、8255A控制字 (2)传送模式1 —选通输入/出方式 模式1的功能特点: 采用查询或者中断的方式控制输入或输出传送。
PA端口编程为模式1传送后,要占用PC端口的部分 资源。 PB端口编程为模式1传送后,也要占用PC端口的部 分资源。 PC端口的剩余资源仍然可以独立操作。
48
PA端口模式1输入传送的逻辑结构, 如图所示。
中断允许位 由PC4控制置位复位 GO PC口输出、输入缓冲器各自独立 图8-53 PA端口模式1输入传送的逻辑结构
49
2、8255A控制字 功能说明: ① 是选通输入信号, 来自外设电路, 低有效, 表示数据已经打入PA端口锁存器。
① 是选通输入信号, 来自外设电路, 低有效, 表示数据已经打入PA端口锁存器。 ②IBF是输入缓冲器满信号, 由8255A输出, 高有效, 表 示PA端口数据尚未被CPU读取, 不能再接收新数据。 当IBF为低电平时, 表示输入缓冲器空, 可以接收新 数据。 IBF信号由 选通信号 激活,随CPU的读控制信 号 的撤消而失效。
50
2、8255A控制字 端口模式1输入传送的时序图:
51
2、8255A控制字 ③INTR是中断请求信号,输出到主机电路,要求CPU 读取PA端口数据。INTR信号也可以作为查询信号使 用。 ④INTR信号能否激活,受8255A内部的中断允许触发 器INTE的控制。INTE=1,允许激活INTR信号。 INTE=0,禁止激活INTR信号。 INTEA由PC4控制置位复位, INTEB由PC2控制置位复位。
52
2、8255A控制字 单片机扩展的I/O口寻址方法与外部数据存储器相同, 所有扩展I/O口, 及通过扩展I/O口连接的外设都与外 部RAM统一编址。 对片外I/O口的输入/输出指令就是访问外部RAM指令。 可用下面代码对中断允许触发器INTE置位(设命令端 口地址为0E003H) : MOV DPTR,#0E003H ;指向8255命令端口 MOV A,# B ;PC4置1,允许激活PA端口的INTRA信号 ;写入PC端口操作字 MOV A,# B ;PC2置1,允许激活PB端口的INTRB信号 ;写入PC端口操作字
53
2、8255A控制字 ⑤PB端口设置为模式1输入时,分别占用PC0(INTR)、 PC1(IBF) 和PC2( ) 。 ⑥PC端口剩余的PC7和PC6,可编程为两位输入或输出, 也可单独进行位操作。 由PC2控制置位复位 PA端口模式1输入传送控制字 PB端口模式1输入传送的逻辑结构
54
2、8255A控制字 PA端口模式1输出传送的逻辑结构如图所示。 中断允许位 由PC6控制置位复位
55
2、8255A控制字 功能说明: ① 是输出缓冲器满信号, 由8255A输出, 低有效, 表示PA端口数据已经准备就绪, 可供外设电路读取。
信号由 信号激活。当 信号生效后, 信号返回高电平, 撤销输出缓冲器满的状态。 当CPU又把数据写入PA端口后, 随着写控制信号 的撤销, 信号再次自动激活(低电平)。
56
2、8255A控制字 端口模式1输出传送的时序图:
57
2、8255A控制字 ③INTR是中断请求信号, 输出到主机, 表示PA口已空闲, CPU可再次写入数据。INTR也可作为查询信号用。 ④INTR信号能否激活,受8255A内部的中断允许触发 器INTE的控制。用PC6来控制是否激活INTR信号。 由PC6控制置位复位 PA端口模式1输出传送的逻辑结构
58
2、8255A控制字 中断允许触发器INTE的置位控制代码如下 (假设命令 端口地址为0E003H):
MOV DPTR,#0E003H ;指向8255命令端口 MOV A,# B ;PC6置1,激活PA端口的INTR信号 MOVX @DPTR,A ;写入PC端口操作字 MOV A,# B ;PC2置1, 激活PB端口的INTR信号 ;写入PC端口操作字。
59
2、8255A控制字 ⑤PB端口设置为模式1输出时,分别占用PC0(INTR) 、 PC1( ) 和PC2( ) 。 ⑥PC端口剩余的PC5和PC4,可以编程为两位输入或 者输出,也可以单独进行位操作。 由PC6控制置位复位
60
2、8255A控制字 (3)传送模式2 —双向选通工作方式
只有PA端口可编程设置为模式2传送。这是采用中断 或者查询方式控制的分时输入和输出的双向传送方 式。模式2的逻辑结构如图所示。
61
3、单片机与8255A的接口设计 若STC15F2K60S2单片机系统以总线扩展方式构 成,则P0口用于数据总线D7~D0和地址总线低8位 A7~A0, P2口用作地址总线的高8位A15~A8, 其他口也具有第 二功能,常被使用,真正能提供给用户使用的并行 口并不多。 可以使用8255A进行并行I/O口的扩展。 8255A和单片机连接时,可以为外设提供三个8位的 I/O端口:A口、B口和C口,三个端口的功能完全由 编程来决定。
62
设8255A的命令口地址为7FF3H, PA口地址为7FCF0H, PB口地址为7FDF1H, PC口地址为7FEFF2H。(非唯一)
8255A与STC15F2K60S2单片机的接口电路。 设8255A的命令口地址为7FF3H, PA口地址为7FCF0H, PB口地址为7FDF1H, PC口地址为7FEFF2H。(非唯一) 153页8255A口地址对应图 P2口是高8位地址 P0口低8位地址任意 设没用到地址线为1 P2.0, P2.1选口(含命令口) 图 A与STC15F2K60S2单片机的接口电路
63
4、8255A并行接口的编程操作 8255A并行接口的编程操作分为: 写入8255A命令字, 设置8255A工作模式与传送方向。
写入PC端口操作字, 设置PC端口位输入或输出状 态。 8255A接口电路编程操作示例代码如下: MOV DPTR, #7FF3H ;指向8255命令端口 MOV A, #80H ;命令字:PA、PB和PC端口直接输出 A ;写命令到命令口 MOV DPTR, #7CF0H ;指向PA端口 A ;数据写入PA端口 MOV DPTR, #7FF3H ;指向8255命令端口 MOV A, #9H ;PC端口操作字: A ;PC4输出高电平 (C口) (PC4) (置位)
64
HC595接口及其应用 74HC595是为Motorola的SPI总线开发的一款串行- 并行转换芯片(8位3态移位寄存器/输出锁存器)。 由于74HC595的输入输出电平兼容TTL、NMOS和 CMOS电平,且具有较强的输出负载能力,因此被 广泛地运用于MCU(微控制器)和MPU(微处理器) 的I/O口扩展。
65
HC595接口及其应用 74HC595在5V供电的时候能够达到30MHz的时钟 速度,每个并行输出端口均能承受20mA的灌电流 和拉电流。这个特点保证了不用增加额外的扩流 电路即可轻松的驱动LED。 它的输入端允许500nS的上升(下降)时间,对严 重畸形的时钟脉冲仍能检测。 这样就可以容纳较大的传输线对地电容,使系统 的抗干扰能力增强。
66
HC595接口及其应用 74HC595的逻辑电路图: 74HC595的逻辑电路图
67
8.3.2 74HC595接口及其应用 74HC595管脚功能描述如下: QA~QH:锁存器数据输出,三态
GND:电源地 VCC:电源正,一般接5VDC。 /G: 输出使能控制端。低电平 有效, 将锁存器的输出映射到 输出并行口(QA-QH)上。当输 入高电平时,高阻态,同时本 芯片的串行输出无效。 图 HC595的逻辑图
68
HC595接口及其应用 RCK:存储寄存器时钟输入,上升沿时,移位寄存 器的数据进入数据存储寄存器,下降沿时存储寄存器 数据不变,通常将RCK置为低电平。 当移位结束后, 在RCK端产生一个正脉冲(5V供电时, 大于几十纳秒即可), 更新输出数据。 SI:串行数据输入,数据从这 个管脚移进内部的8位串行移位 寄存器。
69
HC595接口及其应用 SCK: 移位寄存器时钟输入。上升沿时, 将数据寄存器 的数据移位: QA→QB →QC→... →QH; 下降沿移位寄 存器数据不变。 (脉冲宽度: 5V时, 大于几十纳秒即可。) /SCLR:移位寄存器清零输入。 低电平有效, 当此管脚上出现低电 平时, 将复位内部的移位寄存器 (清0), 但不影响8位锁存器的值。 通常可接Vcc。
70
74HC595真值表如表8-9所示。 表8-9 74HC595真值表 输入 输出管脚 SI SCK /SCLR RCK /G × H
QA-QH输出高阻态 L QA-QH输出有效值 × L 移位寄存器清0 L ↑ H × 移位寄存器第一级(位)存储L 移位寄存器第一级(位)存储H × ↓ H 移位寄存器状态保持 × ↑ 输出存储器锁存移位寄存器中的状态值 × ↓ 输出存储器状态保持
71
8.3.2 74HC595接口及其应用 74HC595与STC15F2K60S2单片机的接口电路如图所示。
72
HC595接口及其应用——应用演示程序: ;==========输出锁存器输出数据子程序 ============= SDATA_595 EQU P1.0 ;串行数据输入 SCLK_595 EQU P1.1 ;移位时钟脉冲 RCK_595 EQU P1.2 ;输出锁存器控制脉冲 ORG 0000H LJMP MAIN ORG 0030H MAIN: MOV SP, #60H MOV R0, #0FEH ; R0存显示的数据, 位值0使灯亮 MAIN1: LCALL OUT_595 LCALL DELAY MOV A, R0 RL A ; R0显示数据循环左移 MOV R0, A LJMP MAIN1
73
HC595接口及其应用 ; 输出锁存器输出数据子程序 OUT_595:LCALL WR_595 CLR RCK_595 NOP SETB RCK_595 ;上升沿将数据送到输出锁存器 RET
74
HC595接口及其应用 ; 移位寄存器接收数据子程序 WR_595: MOV R4, #08H ;移位位数(一个字节)→R4 MOV A, R0 ; R0存显示的数据, 位值0使灯 WR_LOOP:RLC A ; 显示数据带进位C循环左移 MOV SDATA_595, C ; 数据经进位C串行输出 SETB SCLK_595 ;上升沿发生移位 NOP CLR SCLK_595 DJNZ R4, WR_LOOP RET ; 循环8次, 依次将8位数据串行输出
75
HC595接口及其应用 ; 延时子程序 DELAY:MOV R5, #03H DEL0:MOV R6, #0FFH DEL1:MOV R7, #0FFH DJNZ R7, $ DJNZ R6, DEL1 DJNZ R5, DEL0 RET ;================================== END
76
对应的C语言程序如下: /*******74HC595 走马灯演示程序 *********/ #include “reg51.h” //51芯片管脚定义头文件 #include “intrins.h” //内部包含延时函数 _nop_() #define uchar unsigned char #define uint unsigned int uchar code DAT[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f}; sbit SDATA_595=P1^0; //串行数据输入 sbit SCLK_595 =P1^1; //移位时钟脉冲 sbit RCK_595 =P1^2; //输出锁存器控制脉冲 uchar bdata temp; sbit mybit=temp^7;
77
HC595接口及其应用 /***********延时子程序**************/ void delay(int ms) { int k; while(ms--) { for(k=0; k<250; k++) _nop_(); }
78
HC595接口及其应用 /***将显示数据送入74HC595内部移位寄存器***/ void WR_595(void) { uchar j; for(j=0; j<8; j++) { temp=temp<<1; SDATA_595=mybit; SCLK_595=1; //上升沿发生移位 _nop_(); SCLK_595=0; }
79
HC595接口及其应用 /**将移位寄存器内的数据锁存到输出寄存器并显示**/ void OUT_595(void) { RCK_595=0; _nop_(); RCK_595=1; //上升沿将数据送到输出锁存器 RCK_595=0; }
Similar presentations