chap8 单片机小系统及片外扩展

合集下载

单片机系统的扩展技术

单片机系统的扩展技术

INC R0
INC DPTR
; 修改数据指针
DJNZ R7, AG
END
4.2.3 MCS-51对外部存储器的扩展
下 图 所 示 的 8031 扩 展 系 统 中 , 外 扩 了 16KB 程 序 存 储 器 ( 使 用 两 片 2764芯片)和8KB数据存储器(使用一片6264芯片)。采用全地址译码方 式,用于控制2―4译码器的工作,参加译码,且无悬空地址线,无地址重 叠现象。1# 2764, 2# 2764, 3# 6264的地址范围分别为:0000H~1FFFH, 2000H~3FFFH, 4000~5FFFH。
4.2 存储器的扩展
存储器是计算机系统中的记忆装置,用来存放要运行的程序和程序 运行所需要的数据。单片机系统扩展的存储器通常使用半导体存储器, 根据用途可以分为程序存储器(一般用ROM)和数据存储器(一般用 RAM)两种类型。
MCS-51单片机对外部存储器的扩展应考虑的问题:
(1)选择合适类型的存储器芯片
引脚符号的含义和功能如下:
D7~D0:三态数据总线; A0~Ai:地址输入线,i=12~15。2764的地址线为13位,i=12; 27512的地址线为16位,i=15; CE :片选信号输入线; OE :输出允许输入线;
CE
VPP:编程电源输入线; PGM :编程脉冲输入线; VCC:电源; GND:接地; NC:空引脚。
8051扩展2764的电路连接方法:
数据线:P0口接EPROM的D0~D7 ;
地址线: 2764容量为8KB,213=8KB,需要A0~A12共13根地址线。P0口
经地址锁存器后接EPROM的A0~A7 ; 为了与片内存储器的空间地址衔 接,~接EPROM的A8~A11 , 经非门后与A12连接。

单片机第8章 单片机小系统及片外扩展.

单片机第8章 单片机小系统及片外扩展.
第8章 单片机系统扩展
目录
8.1 扩展并行三总线 8.2 扩展简单并行输入/输出口 8.3 扩展并行数据存储器 8.4 串行扩展总线接口技术
本章主要介绍了MCS-51单片机系统扩 展的方法。通过扩展并行三总线来进行并行 总线接口扩展;通过UART或I/O口模拟几种 串行通信的特点来进行串行总线接口扩展。
8.3.1 扩展存储器概述
存储器扩展的核心问题是存储器的编址问 题。所谓编址就是给存储单元分配地址。
由于存储器通常由多个芯片组成,为此存 储器的编址分为两个层次:
即存储器芯片的选择和存储器芯片内部存 储单元的选择。
一、地址线的译码
存储器芯片的选择有两种方法:线选法和 译码法。
1、线选法。所谓线选法,就是直接以系
2)部分译码。地址译码器仅使用了部分地址 线,地址与存储单元不是一一对应,而是1 个存储单元占用了几个地址。
8.3.1 扩展存储器概述
芯片译码地址:在设计地址译码器电路时, 常采用地址译码关系图。所谓地址译码关系 图,就是一种用简单的符号来表示全部地址 译码关系的示意图,如图8-5所示。
在对TTL负载驱动时,只需考虑驱动电流的大 小。
在对MOS负载驱动时,MOS负载的输入电流 很小,更多地要考虑对分布电容的电流驱动。
系统总线中地址总线是单向的,因此驱动 器可以选用单向的,如74LS244,还带有三 态控制,能实现总线缓冲和隔离。
数据总线是双向的,其驱动器也要选用双 向的,如74LS245。74LS245也是三态的,有 一个方向控制端DIR。DIR=1时输出 (An→Bn),DIR=0时输入(An←Bn)。
8.3 扩展并行数据存储器
主要内容
8.3.1 扩展存储器概述 8.3.2 数据存储器的扩展

课件:2008_GCS微机原理Ch08存储器扩展(New)

课件:2008_GCS微机原理Ch08存储器扩展(New)

B
A
0
0
0
0
0
0
0
0
000B Y0—CE
0000H
1
11
1
1
1FFFH
0
0
1
0
0
0
0
0
001B Y1—CE
2000H
1
1
1
1
1
3FFFH
3——8译码器的其它输出端代表的地址是什么?
A7~A0 P0
存储器
0~0
IC1
1~1
0~0
IC2
1~1
线选法与译码法比较
线选法选址
➢电路连接简单 ➢地址空间利用率低 ➢地址空间重叠严重
39
40
常用的RAM芯片
在8031应用系统中,最常用的静态随机存取存储器RAM电 路有6116(2K×8)和6264(8K×8)。
41
常用的RAM芯片
静态随机存取存储器6116(2K×8)和6264(8K×8)。
42
常用的RAM芯片
静态随机存取存储器6264(8K×8)。
43
常用的RAM芯片
A 其次要解决的问题是I/O口的扩展。
当外围设备较多时,仅有的几个内部I/O接口就 不够用,在大多数应用系统中,MCS-51单片机都需 要扩展输入/输出接口芯片,有时还需要扩展定时器、 串行口、数模转换器(D/A)和模数转换器(A/D)以满足 实际需要。
3
存储器正常扩展的最大范围
MCS-51存储器的配置图 程序存储器:
第8章 MCS-51单片扩展 存储器的设计
学习要求—单片机的核心部分
熟悉系统三总线的概念; 重点掌握程序存储器的扩展; 重点掌握外部数据存储器的扩展;

单片机外部存储器与扩展器原理解析

单片机外部存储器与扩展器原理解析

单片机外部存储器与扩展器原理解析现代科技的快速发展使得数字设备的普及程度不断提升,人们对存储器的要求也越来越高。

单片机外部存储器和扩展器正是应运而生的解决方案,能够满足我们对存储器容量和速度的需求。

本文将对单片机外部存储器和扩展器的原理进行详细解析,帮助读者更好地了解和应用这些技术。

首先,我们先来看看什么是单片机外部存储器。

单片机是一种集成了处理器、存储器和各种外设接口于一体的微型计算机,它的内部存储器容量有限。

当我们需要存储大量数据时,内部存储器显然无法满足需求,这时就需要使用外部存储器扩展单片机的存储容量。

外部存储器是单片机外部连接的一种存储器设备,它可以是RAM(随机存取存储器)或ROM(只读存储器)。

单片机外部存储器的连接通常通过总线进行。

总线是计算机系统中连接各种设备的一种数据传输路径,它有数据总线、地址总线和控制总线三种类型。

单片机与外部存储器之间的通信主要是通过这些总线来进行的。

单片机通过地址总线向外部存储器发送地址信号,以确定要读写的存储单元位置。

地址总线的位数决定了单片机可以寻址的存储单元数量。

控制总线用于传输读写控制信号,以控制外部存储器的读写操作。

数据总线则用于传输实际的数据。

为了实现单片机对外部存储器的读写操作,我们需要使用一些芯片和电路来连接单片机和外部存储器。

其中一个关键芯片是存储器地址译码器,它可以将单片机的地址信号转换为外部存储器的地址信号。

存储器芯片也是非常重要的组成部分,它们可以是静态RAM(SRAM)或动态RAM(DRAM)芯片。

在实际应用中,我们可以根据需求选择适合的存储器芯片。

除了外部存储器,扩展器也是一种常用的存储器扩展技术。

扩展器是一种通过串口或并口方式与单片机连接的设备,它通常具有独立的存储器容量,并通过与单片机的通信实现数据的读写操作。

扩展器与外部存储器相比,具有更高的灵活性和扩展性。

扩展器的工作原理与外部存储器有所不同。

首先,扩展器需要与单片机通过串口或并口进行连接,通过通信协议进行数据传输。

单片机系统的扩展方法单片机

单片机系统的扩展方法单片机

单片机系统的扩展方法 - 单片机作为一个最基本的系统,应包括程序存储器、数据存储器、键盘、显示器等电路。

在测量系统中,还包含模数转换器、数模转换器。

MCS-51系列的单片机由于其良好的可扩展性,可依据系统的具体要求构成1个紧凑的独立系统。

在设计系统之前,应对系统所需的资源、处理的速度等问题做综合的考虑,然后对系统的资源进行安排。

MCS-51单片机的存储器分为程序存储器和数据存储器。

程序存储器具有独立于数据存储器的64K寻址范围,在设计时,应尽量接受内含程序存储器的器件,依据程序的容量,可选择内含4K、8K程序存储器的器件。

MCS-51单片机在复位后程序指针为0000H,而5个中断入口地址为0003H、000BH、0013H、001BH、0023H,因此应分别在0000H和各类中断的入口地址单元按排跳转指令。

MCS-51单片机的数据存储器包含了内部和外部数据存储器,内部存储器的使用应依据堆栈、位操作单元、数据单元的次序依次考虑。

应保留足够的单元用于堆栈,在使用子程序、中断、堆栈操作指令时,都会影响堆栈指针,在估量堆栈容量时,应考虑到子程序的调用、中断的嵌套而引起堆栈大量使用的状况。

在MCS-51单片机中规定了内部RAM的20H~2FH为128个位寻址单元,可对这些位执行位操作指令,因此在安排存储器时,应将标志类的单元安排在这一区域。

数据存储器一般安排在30H和堆栈之间,00H~1FH为4个区的R0~R7单元。

如内部数据存储器不能满足系统设计的要求,可通过P0、P2口扩展外部数据存储器。

外部数据存储器的寻址范围为64K,但由于I/O地址接受了存储器映射寻址的方法,因此应将存储器单元的安排和I/O单元的安排做统一的考虑。

外围设备的扩展应依据下述次序依次考虑,在外围接口中如有I2C、SPI总线的器件,而通信速度无特殊要求,可用P1口的位操作方法模拟串行接口,其他的接口可依据需要和存储器地址的统一考虑安排地址。

如何进行单片机的外部设备扩展

如何进行单片机的外部设备扩展

如何进行单片机的外部设备扩展单片机是一种集成电路,通常包含处理器、内存和输入/输出接口。

然而,单片机的内部资源是有限的,如果需要连接更多的外部设备,就需要使用外部设备扩展。

外部设备扩展为项目提供了更多的功能和灵活性,让单片机适应不同的任务需求。

本文将介绍如何进行单片机的外部设备扩展。

首先,进行外部设备扩展,我们需要选择合适的外部设备。

这可以根据项目的需求来确定。

一些常见的外部设备包括传感器、显示器、通信模块等。

在选择外部设备时,需要考虑以下几个因素:1. 功能需求:确定需要什么功能的设备,比如温度传感器、光照传感器、液晶显示器等。

2. 接口兼容性:外部设备的接口必须与单片机的接口兼容。

常见的接口包括GPIO、SPI、I2C等。

确保外部设备的接口与单片机的接口能够正常通信。

3. 电源要求:考虑外部设备的电源需求,确定单片机能够为其提供足够的电源。

4. 数据处理能力:外部设备的数据处理需求也需要考虑。

单片机需要具备足够的处理能力来处理外部设备所产生的数据。

5. 可靠性和成本:选择可靠性高、成本适中的外部设备。

选择好外部设备之后,就需要将其与单片机连接起来。

这通常需要通过电气接口来实现。

常见的电气接口有如下几种:1. GPIO(通用输入/输出):单片机的通用引脚可以用作输入或输出。

它可以连接到外部设备的信号线,实现数据的输入和输出。

例如,可以将数字传感器的输出连接到单片机的GPIO引脚上,通过读取引脚的电平来获取传感器的数据。

2. SPI(串行外设接口):SPI接口是一种串行通信协议,可用于连接多个外部设备。

它使用一根主通信线(MOSI)、一根从通信线(MISO)和一根时钟线(SCLK),以及一个选择线(SS)来进行通信。

通过配置单片机的SPI控制器,可以通过SPI接口与外部设备进行数据交换。

3. I2C(串行接口):I2C接口也是一种串行通信协议,可以连接多个外部设备。

它使用两根通信线:串行数据线(SDA)和串行时钟线(SCL)。

模块八 单片机的系统扩展技术

模块八 单片机的系统扩展技术

模块八单片机的系统扩展技术【教学聚焦】知识目标:1、掌握程序存储器的扩展方法2、掌握数据存储器的扩展方法3、掌握串行EEPROM的扩展方法技能目标:1 能够进行程序存储器的扩展2、能够进行数据存储器的扩展3、能够进行串行EEPROM的扩展【课时建议】10课时教学重点:程序和数据存储器以及串行EEPROM的扩展教学难点:串行接口器件的时序分析与软件编程项目8.1 程序存储器的扩展单片机应用系统由硬件和软件组成,软件的载体就是硬件中的程序存储器。

对于MCS-51系列8位单片机,片内程序存储器的类型及容量如表所示。

MCS-51系列单片机片内程序存储器一览表表8.1 单片机片内程序存储器一览表对于没有内部ROM的单片机或者当程序较长、片内ROM容量不够时,用户必须在单片机外部扩展程序存储器。

MCS-51单片机片外有16条地址线,即P0口和P2口,因此最大寻址范围为64 KB(0000H~FFFFH)。

这里要注意的是,MCS-51单片机有一个管脚——EA跟程序存储器的扩展有关。

如果EA 接高电平,那么片内存储器地址范围是0000H~0FFFH(4 KB),片外程序存储器地址范围是1000H~FFFFH(60 KB)。

如果EA接低电平,不使用片内程序存储器,片外程序存储器地址范围为0000H~FFFFH(64 KB)。

8031单片机没有片内程序存储器,因此EA管脚总是接低电平。

扩展程序存储器常用的芯片是EPROM(Erasable Programmable Read Only Memory)型(紫外线可擦除型),如2716(2K×8)、2732(4K×8)、2764(8K×8)、27128(16K×8)、27256(32K×8)、27512(64K×8)等。

另外,还有+5 V电可擦除EEPROM,如2816(2K×8)、2864(8K×8)等等。

单片机系统扩展

单片机系统扩展

送数据时,需要设置联络信号。

3.方式2

(四)8255A与MCS-51的典型连接

8255A与单片机的典型连接如图1-26所示。
• 1.3.4 同时扩展外部RAM与外部I/O
图1-26 8255A芯片与单片机的典型连接
单片机原理及应用技术
单片机原理及应用技术
• 1.1 单片机最小应用系统及外部扩展总线

8051/8751单片机内含有ROM/EPROM,用8051/8751单片机构
成最小应用系统时,只需将单片机接上时钟电路和复位电路即可
,如图1-1所示。
图1-1 8051和8751最小应用系统电路
• 1.1.2 8031最小应用系统
128字节RAM存储器,CPU对内部RAM具有丰富的操作指令。
• 常用的外部数据存储器有静态RAM(Static Random Access Memory,SRAM)和动态RAM(Dynamic Random Access Memory ,DRAM)两种。

(二)SRAM扩展实例
• 1.2.4 新型存储器简介

(一)集成动态随机RAM

与静态RAM相比,动态RAM具有成本低、功耗小的优点,适
用于需要大容量数据存储空间的场合。

(二)快擦写型存储器(Flash Memory)

快擦写型存储器是一种电可擦除型、非易失性存储器,也称
为闪存,其特点是快速在线修改,且掉电后信息不丢失。近年来
,Flash Memory大量用来制作存储器卡(也称为闪卡),例如,

8031单片机片内无程序存储器,因此,其最小应用系统必须
在片外扩展EPROM。图1-2所示为8031外接程序存储器的最小应用

单片机原理系统扩展、外围接口

单片机原理系统扩展、外围接口

引言概述:单片机是一种集成电路,具有处理器核心、内存、输入/输出接口以及各种外设接口等功能,被广泛应用于嵌入式系统中。

单片机的原理系统扩展和外围接口是单片机应用的关键方面,本文将从五个大点进行详细阐述。

首先,将介绍单片机原理系统的基本概念和工作原理;其次,将讨论单片机的系统扩展,包括扩展存储器、定时器和中断系统的原理与操作;然后,将深入探讨单片机的外围接口,包括串行通信接口、并行通信接口和模数转换接口等;接着,将详细介绍单片机的非易失性存储器接口和外部中断输入接口;最后,将总结单片机原理系统扩展和外围接口的重要性和应用。

正文内容:一、单片机原理系统的基本概念和工作原理1.1 单片机的定义及特点1.2 单片机原理系统的组成和架构1.3 单片机的工作原理和工作模式二、单片机系统扩展2.1 扩展存储器2.1.1 内部存储器与外部存储器的区别和连接方式2.1.2 存储器映射及其在单片机系统中的应用2.2 定时器和计数器扩展2.2.1 定时器和计数器的基本原理和应用2.2.2 定时器的工作模式和定时器中断的设置与使用2.3 中断系统的原理与操作2.3.1 中断的基本概念和分类2.3.2 中断的优先级和响应方式2.3.3 中断的处理流程和编程方法三、单片机外围接口3.1 串行通信接口3.1.1 串行通信的基本概念和原理3.1.2 串行通信接口的工作方式和常用协议3.1.3 串行通信接口的编程和应用3.2 并行通信接口3.2.1 并行通信的基本概念和原理3.2.2 并行通信接口的工作方式和常用接口标准3.2.3 并行通信接口的编程和应用3.3 模数转换接口3.3.1 模数转换的基本概念和原理3.3.2 模数转换接口的工作方式和常用接口标准3.3.3 模数转换接口的编程和应用四、单片机非易失性存储器接口4.1 非易失性存储器的分类和特点4.2 EEPROM接口4.2.1 EEPROM的特点和工作原理4.2.2 EEPROM的读写操作和编程方法4.3 Flash接口4.3.1 Flash的特点和工作原理4.3.2 Flash的读写操作和编程方法五、单片机外部中断输入接口5.1 外部中断输入的基本概念和原理5.2 外部中断输入接口的工作方式和设置方法5.3 外部中断输入的应用和编程注意事项总结:本文详细阐述了单片机原理系统扩展和外围接口的重要性和应用。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

向I2C总线写一个字节 void WriteI2CByte(char b) { /*向I2C总线写一个字节*/ char i; for(i=0;i<8;i++) if((b<<i)&0x80) SEND_1(); else SEND_0(); }
向24c02 (I2C EEPROM) 发送一字节的模拟子程序
P210 启动 I2C总线子程序STA
void I2C_Start(void) { /*启动I2C总线的函数,当SCL为高电平时使SDA产生 一个负跳变*/ SDA=1; SCL=1; DELAY(DELAY_TIME); SDA=0; DELAY(DELAY_TIME); SCL=0; DELAY(DELAY_TIME); }

SPI串行外设接口总线
同步串行方式 需3~4条线:串行时钟线(SCK)、 主机输入/从机输出数据线MISO、 主机输出/从机输入MOSI、 从机片选线CS


许多外设都具有SPI接口,如FLASHRAM、网络 控制器、LCD显示驱动器、A/D转换器等
89C51单片机串行扩展SPI外设 接口的方法
第8章
单片机小系统及片外扩展
系统扩展
1、扩展系统是以单片机为核心进行的;
2、扩展内容包括ROM、RAM、和I/O接口电路等; 3、扩展是通过系统总线进行的,通过总线把各扩展部 件连接起来,并进行数据、地址和信号的传送,要 实现扩展首先要构造系统总线。 (尽可能采用串行扩展方案)
本章内容

利用串行口实现SPI操作
TXD RXD P1.0
SCLK I/O RST
X1
89C51
32kHz
X2
串行时钟芯片HT1380与89C51接口电路
利用51单片机串口扩展SPI口的特点


需要通过单片机的开关量I/O口线进行芯片选择; 当芯片未选中时,数据端口均处于高阻状态; 与单片机交换信息时均要求单片机串行口以方式0 进行; 传输数据时的桢格式局要求先传送命令/地址,再 传送数据。
有不同的定义,EEPROM一般应为1010),接
着三位为片选,最后一位为读写位,当为1时
为读操作,为0时为写操作
2C总线基本操作 I
I2C规程运用主/从双向通讯。器件发送数据到
总线上,则定义为发送器,器件接收数据则 定义为接收器。主器件和从器件都可以工作 于接收和发送状态。 总线必须由主器件(通 常为微控制器)控制,主器件产生串行时钟 (SCL)控制总线的传输方向,并产生起始和 停止条件。SDA线上的数据状态仅在SCL为低 电平的期间才能改变,SCL为高电平的期间, SDA状态的改变被用来表示起始和停止条件。
}
读取一字节的模拟子程序
char Read_One_Byte(char addr) { bit acktemp=1; char mydata; /*read a byte from mem*/ I2C_Start(); WriteI2CByte(0xa0);启动总线 acktemp=Check_Acknowledge(); WriteI2CByte(addr);/*address*/ acktemp=Check_Acknowledge(); I2C_Start(); WriteI2CByte(0xa1); 重新启动总线 acktemp=Check_Acknowledge(); mydata=ReadI2CByte(); acktemp=Check_Acknowledge(); return mydata; I2C_Stop();
MCU串行输出子程序SPIOUT
将MCS-51单片机中R0寄存器的内容传送到X25F008的SPISI线上的程序如下:
SPIOUT:SETB P1.1 ;使P1.1(时钟)输出为1 CLR P1.2 ;选择从机 MOV R1,#08H ;置循环次数 MOV A,R0 ;8位数据送累加器ACC SPIOUT1:CLR P1.1 ;使P1.1(时钟)输出为0 NOP ;延时 NOP RLC A ;左移至累加器ACC最高位至C MOV P1.0,C ;进位C送从机输入SPISI线上 SETB P1.1 ;使P1.1(时钟)输出为1 DJNZ R1,SPIOUT1 ;判是否循环8次(8位数据) RET
1.
2.
用一般I/O口线模拟SPI操作 利用串行口实现SPI操作
用一般I/O口线模拟SPI操作

根据SPI串行总线的操作时序特点 ,进行软件模拟
X25F008(E2PROM)
X25F008具有SPI接口,且在SCK的上升沿接收数据, 在下降沿发送数据。则MCU在下降沿时接收数据。 MCU串行输入子程序SPIIN SPIIN:SETB P1.1 ;使P1.1(时钟)输出为1 CLR P1.2 ;选择从机 MOV R1,#08H ;置循环次数 SPIIN1:CLR P1.1 ;使P1.1(时钟)输出为0 NOP ;延时 NOP MOV C,P1.3 ;从机输出SPISO送进位C RLC A ;左移至累加器ACC SETB P1.1 ;使P1.1(时钟)输出为1 DJNZ R1,SPIIN1 ;判断是否循环8次(8位数据) MOV R0,A ;8位数据送R0 RET

单片机A
专用集成电路
液晶显示驱动器
I2C总线
A/D、D/A转换器 静态RAM或EEPROM
SDA SCL 单片机B
图8-9 I2C总线典型系统示意图
总线上每一个节点都有一个固定的节点地址 主机发送的第一个字节为寻址字节 数据传输需遵循规定的传输格式

I2C总线寻址字节

在起始信号之后,必须是器件的寻址字节,其 中高四位为器件类型识别符(不同的芯片类型
发送应答位ACK void SEND_0(void) /* SEND ACK */ { /*发送0,在SCL为高电平时使SDA信号为低*/ SDA=0; SCL=1; DELAY(DELAY_TIME); SCL=0; DELAY(DELAY_TIME); }
发送非应答位MNACK
void SEND_1(void) { /*发送1,在SCL为高电平时使SDA信号 为高*/ SDA=1; SCL=1; DELAY(DELAY_TIME); SCL=0; DELAY(DELAY_TIME); }
从I2C总线读一个字节RDBYT
char ReadI2CByte(void) { /*从I2C总线读一个字节*/ char b=0,i; for(i=0;i<8;i++) { SDA=1; /*释放总线*/ SCL=1; /*接受数据*/ DELAY(10); F0=SDA; DELAY(10); SCL=0; if(F0==1) { b=b<<1; b=b|0x01; } else b=b<<1; } return b; }
P210 停止 I2C总线子程序STOP
void I2C_Stop(void) { /*终止I2C总线,当SCL为高电平时使SDA产生一个正 跳变*/ SDA=0; SCL=1; DELAY(DELAY_TIME); SDA=1; DELAY(DELAY_TIME); SCL=0; DELAY(DELAY_TIME); }
MCU串行输入/输出子程序SPIIO 将MCS-51单片机R0寄存器的内容传送到X25F008的SPI SI中, 同时从X25F008的SPI SO接收8位数据的程序如下: SPIIO:SETB P1.1 ;使P1.1(时钟)输出为1 CLR P1.2 ;选择从机 MOV R1,#08H ;置循环次数 MOV A,R0 ;8位数据送累加器ACC SPIIO1:CLR P1.1 ;使P1.1(时钟)输出为0 NOP ;延时 NOP MOV C,P1.3 ;从机输出SPISO送进位C RLC A ;左移至累加器ACC最高位至C MOV P1.0,C ;进位C送从机输入 SETB P1.1 ;使P1.1(时钟)输出为1 DJNZ R1,SPIIO1 ;判断是否循环8次(8位数据) RET
应答位检查子程序CACK

bit Check_Acknowledge(void) { /*发送完一个字节后检验设备的应答信号*/ SDA=1; 置SDA为输入方式 SCL=1; 使SDA上数据有效 DELAY(DELAY_TIME/2); F0=SDA; DELAY(DELAY_TIME/2); SCL=0; DELAY(DELAY_TIME); if(F0==1) return FALSE; return TRUE; }

51单片机与I2C总线的接口
51单片机 Vcc 具有I2C总线 接口的外设 SCL SDA
P1.6 P1.7
对不带I2C接口的51单片机,若去控制总线,只需两个I/O口线,用软件模拟 数据传送典型信号时序。如起始位、终止位、应答位、非应答位、发送字节、 接收字节等。 数据传送模拟程序,包括: 应答位检查子程序,发送一字节子程序,接收一字节子程序,发送N字节 子程序,接收N字节子程序。
8.1 串行扩展总线接口技术 8.2 并行扩展三总线的产生 8.3 程序存储器的扩展 8.4 数据存储器的扩展 8.5 I/O口接口扩展电路设计
8.1 串行扩展总线接口技术
SPI串行外设接口总线:同步串行3线方式 I2C总线:同步串行2线 单总线:采用单根信号线,既可作为数据输 入,又可以作为输出,而且数据传输是双向 的,适用于单主机系统 CAN总线:多主竞争式的串行数据通信协议, 实时,特别适合工业过程监控设备的互连, 最有前途的现场总线之一 。需CAN控制器

void Write_One_Byte(char addr,char thedata) { bit acktemp=1; /*write a byte to mem*/ I2C_Start(); WriteI2CByte(0xa0); acktemp=Check_Acknowledge(); WriteI2CByte(addr);/*address*/ acktemp=Check_Acknowledge(); WriteI2CByte(thedata);/*thedata*/ acktemp=Check_Acknowledge(); I2C_Stop();
相关文档
最新文档