MCS-51系列单片机模拟SPI总线的方法 - AI_JJ

时间:2024-03-11 17:21:54

MCS-51系列单片机模拟SPI总线的方法

摘要:MCS-51系列单片机

   单片机是单片微型计算机(Single-Chip Microcomputer)的简称,是一种将*处理器CPU随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计时器等功能(可 能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)采用超大规模集成电路技术集成到一块硅片上构成的微型计算机系统。 [全文]

中由于部分型号不带SPI串行总线

  总线是将信息以一个或多个源部件传送到一个或多个目的部件的一组传输线。通俗的说,就是多个部件间的公共连线,用于在各个部件之间传输信息。人们常常以MHz表示的速度来描述总线频率。 [全文]

接口而限制了其在SPI总线接口器件的使用。文中介绍了SPI串行总线的特征和时序,并以串行E2PROM为例,给出了在51系列单片机上利用I/O口线实现SPI串行总线接口的方法和软件设计程序。

  关键词:单片机 SPI串行总线 总线接口
1 引言
  SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU

   MCU Microcontroller(微控制器)又可简称MCU 或μ C,也有人称为单芯片微控制器(Single Chip Microcontroller),将ROM、RAM、 CPU、I/O 集合在同一个芯片中,为不同的应用场合做不同组合控制.微控制器在经过这几年不断地研究,发展,历经4 位,8 位, 到现在的16 位及32 位,甚至64 位.经过20多年的发展,其成本越来越低,而性能越来越强大,这使其应用已经无处不在,遍及各个领域。 [全文]

与各种外围设备以串行方式进行通信以交换信息。外围设置FLASHRAM、网络控制器

  网络控制器是Praesideo系统的核心,它可以同时传输数十个音频通道,为系统供电,报告故障及控制系统。音频输入可以使来自呼叫站的广播、背景音乐或本地音频。用户可以通过PC轻松有效的配置网络控制器,从而适合最复杂的公共广播系统。 [全文]

LCD

   LCD(Liquid Crystal Display),即液晶显示屏。LCD是平面超薄的显示设备,它由一定数量的彩色或黑白像素组成,放置于光源或者反射面前方。液晶显示器功耗很低,因此 倍受工程师青睐,适用于使用电池的电子设备。它的主要原理是以电流刺激液晶分子产生点、线、面配合背部灯管构成画面。单色的LCD已经基本退出市场,彩色 LCD主要又分为 STN 和 TFT 两种,其中TFT(Thin Film Transistor)LCD,又称为主动式电晶薄膜晶体管液晶显示屏,也就是被很多人俗称的真彩液晶显示屏;DSTN(Dual- ScnTwistedNematic)LCD,即双扫瞄液晶显示屏。 [全文]

显示驱动器、A/D转换器

   转换器从原理上可分为协议转换器、接口转换器两大类。从应用上又可以分光纤转换器、光电转换器、视频转换器等等。例如视频转换器就是一种连接电脑和电视 的设备,它可以把电脑上的内容转换并显示在电视机上,让人们可以在电视上学电脑,上网,玩游戏,做商业演示,看股票等等。 [全文]

和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线

  数据线就是连接移动设备和电脑达到传送铃声、图片等数字类信息文件的通路工具。现在随着电子行业日新月异的发展,数据线已经成为了我们生活中不可获缺的部分。 [全文]

MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线

  为了完成某项任务需要有一些开关和继电器等等元件,来控制主电源(由动力线或电力线送来的电源)的开和合,而控制这些开关和继电器的线路称控制线路或信号线路。 [全文]

INT 或INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。由于SPI系统总线一共只需3~4位数据线和控制即可实现与具有SPI总线接口功 能的各种I/O器件进行接口,而扩展并行总线则需要8根数据线、8~16位地址线、2~3位控制线,因此,采用SPI总线接口可以简化电路设计,节省很多常规电路中的接口器件和I/O口线,提高设计的可靠性。由此可见,在MCS51系列等不具有SPI接口的单片机组成的智能仪器

  智能仪器的定义:智能仪器是含有微型计算机或者微型处理器的测量仪器,拥有对数据的存储运算逻辑判断及自动化操作等功能。 [全文]

和工业测控系统中,当传输速度要求不是太高时,使用SPI总线可以增加应用系统接口器件的种类,提高应用系统的性能。

2 SPI总线的组成
   利用SPI总线可在软件的控制下构成各种系统。如1个主MCU和几个从MCU、几个从MCU相互连接构成多主机系统(分布式系统)、1个主MCU和1个 或几个从I/O设备所构成的各种系统等。在大多数应用场合,可使用1个MCU作为控机来控制数据,并向1个或几个从外围器件传送该数据。从器件只有在主机 发命令时才能接收或发送数据。其数据的传输格式是高位(MSB)在前,低位(LSB)在后。SPI总线接口系统的典型结构如图1所示。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
   当一个主控机通过SPI与几种不同的串行I/O芯片相连时,必须使用每片的允许控制端,这可通过MCU的I/O端口输出线来实现。但应特别注意这些串行 I/O芯片的输入输出特性:首先是输入芯片的串行数据输出是否有三态控制端。平时未选中芯片时,输出端应处于高阻态。若没有三态控制端,则应外加三态门。 否则MCU的MISO端只能连接1个输入芯片。其次是输出芯片的串行数据输入是否有允许控制端。因此只有在此芯片允许时,SCK脉冲才把串行数据移入该芯 片;在禁止时,SCK对芯片无影响。若没有允许控制端,则应在外围用门电路对SCK进行控制,然后再加到芯片的时钟输入端;当然,也可以只在SPI总线上 连接1个芯片,而不再连接其它输入或输出芯片。

3 在MCS-51系列单片机中的实现方法
   对于不带SPI串行总线接口的MCS-51系列单片机来说,可以使用软件来模拟SPI的操作,包括串行时钟、数据输入和数据输出。对于不同的串行接口外 围芯片,它们的时钟时序是不同的。对于在SCK的上升沿输入(接收)数据和在下降沿输出(发送)数据的器件,一般应将其串行时钟输出口P1.1的初始状态 设置为1,而在允许接收后再置P1.1为0。这样,MCU在输出1位SCK时钟的同时,将使接口芯片串行左移,从而输出1位数据至MCS-51单片机

   51单片机是单片机中的一种,单片机(single-chip microcomputer)是一块集成芯片,但不是一块实现某一个逻辑功能的芯片,而是在这块芯片当中,集成了一个计算机系统。如*处理器 (CPU)、存储器(ROM,RAM)、I/O接口、定时器/计数器、中断系统等。*处理器是单片机的核心单元,他由运算器和控制器组成,他的主要功能 是实现算术运算、逻辑运算、和控制。 [全文]

的 P1.3口(模拟MCU的MISO线),此后再置P1.1为1,使MCS-51系列单片机从P1.0(模拟MCU的MOSI线)输出1位数据(先为高位) 至串行接口芯片。至此,模拟1位数据输入输出便宣告完成。此后再置P1.1为0,模拟下1位数据的输入输出……,依此循环8次,即可完成1次通过SPI总 线传输8位数据的操作。对于在SCK的下降沿输入数据和上升沿输出数据的器件,则应取串行时钟输出的初始状态为0,即在接口芯片允许时,先置P1.1为 1,以便外围接口芯片输出1位数据(MCU接收1位数据),之后再置时钟为0,使外围接口芯片接收1位数据(MCU发送1位数据),从而完成1位数据的传 送。
  图2所示为MCS-51系列单片机与存储器

  存储器是用来存储程序和数据的部件,有了存储器,计算机才有记忆功能,才能保证正常工作。它根据控制器指定的位置存进和取出信息。 [全文]

X25F008(E2PROM)的硬件连接图,图2中,P1.0模拟MCU的数据输出端(MOSI),P1.1模拟SPI的SCK输出端,P1.2模拟SPI的从机选择端,P1.3模拟SPI的数据输入端(MISO)。下面介绍用MCS-51单片机的汇编语言模拟SPI串行输入串行输出串行输入/输出的3个子程序,实际上,这些子程序也适用于在串行时钟的上升沿输入和下降沿输出的其它各种串行外围接口芯片(如A/D转换芯片、网络控制器芯片LED

   LED(Light Emitting Diode)即发光二极管,是一种固态的半导体器件,它可以直接把电转化为光。LED 的心脏是一个半导体的晶片,当电流通过导线作用于这个晶片的时候,电子和空穴就会被推向量子阱,在量子阱内电子跟空穴复合,然后就会以光子的形式发出能 量。能完成数十种不同的工作,并且在各种设备中都能找到它们的身影。例如它们可以组成电子钟表 表盘上的数字,从遥控器 传输信息,为手表表盘照明并在设备开启时向您发出提示。 如果将它们集结在一起,可以组成超大电视屏幕上的图像,或是用于点亮交通信号灯。 [全文]

显示驱动芯片等)。对于下降沿输入、上升沿输出的各种串行外围接口芯片,只要改变P1.1的输出电平顺序,即先置P1.1为低电平,之后再次置P1.1为高电平,再置P1.1为低电平……,则这些子程序也同样用。
 
 
 
 
 
 
 
 
 
 
 
 
 
3.1 MCU串行输入子程序SPIIN
从X25F008的SPISO线上接收8位数据并放入寄存器R0中的应用子程序如下:
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.0(时钟)输出为1
DJNZ   R1,SPIIN1           ;判断是否循环8次(8位数据)
MOV   R0,A              ;8位数据送R0
RET
3.2 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
3.3 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

4 结束语
   本文介绍了通过SPI总线接口实现数据传输的实现方法,给出了用MCS-51单片机汇编语言模拟SPI串行总线的输入、输出,输入/输出以传送8位数据 的子程序。实际上,也可以根据SPI串行总线的操作时序特点来在MCS-96系列、ATMEL89系列等单片机上实现SPI总线的接口。