导航:首页 > 操作系统 > 单片机并行通信

单片机并行通信

发布时间:2023-02-19 05:08:12

㈠ 52单片机与晶振电路直接的通讯方式是什么

52单片机与晶振电路直接的通讯方式是口对口并行通信。根据查询相关公开信息,口对口并行通信,利用单片机的口线直接相连,加上1~2条握手信号线,这种方式的特点是通信速度快,1次可以传输4位或8位,甚至更多,但需要占用大量的口线。

㈡ 单片机的几种传输方式的总结

学习了51单片机以及STM32后总结下单片机与外设或者上位机通讯的几种传输方式

串口、COM口是指的物理接口形式(硬件)。而TTL、RS-232、RS-485是指的电平标准(电信号)

串行通信:指数据一位一位顺序传送

串行接口:简称串口(COM口)

并行通信:一组数据的各数据位在多线上同时被传输

并行接口:一种接口,各数据位同时被传输,传输速度快,效率高,一般用于MCU

串行通信分为:

    单工:数据单项传送

    半双工:数据能双向传送但不能同时

    全双工:数据能同时双向传送

    通用的、及支持同步也支持异步的接收、发送“模块”,在芯片内部,与SPI、I2C一起构成单片机的总线“枝干”,对于串口,串口通信指串口按位(bit)发送和接收字节,尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。

串行通信技术标准EIA-232/485也就是以前所称的RS-232/485。

232是PC机与通信工业中应用最广泛的一种串行接口,RS232单端通信,传输距离可达15米,最高速率20Kbps。

RS485传输速率为10Mbps,最大传输距离1219米,,采用二线制时可实现真正的多点双向通信,而采

用四线连接时只能实现点对多点通信,无论四线还是二线连接方式总线上可接多达 32 个设备。

串行通信传输速率用于说明传输的快慢。在串行通信中,数据是按位进

行传送的,因此传输速率用每秒钟传送格式位的数目来表示,称之波特率

(band rate)。每秒传送一个格式位就是 1 波特。常用的波特率有:4800、

9600、19200、115200 波特。

串口三个脚:TX、RX、GND

IIC总线是一种两线式串行总线,支持多主控,其中任何能够进行发送和接收的设备都可以成为主总线,一个主控能够控制信号的传输和时钟频率,当然在任何时间点上只能有一个主控。IIC总线是由数据线SDA和时钟SCl构成的串行总线,可发送和接收数据,在CPU与被控IC之间,IC与IC之间进行双向传送,最高传送速率100Kbps,各种被控制电路均并联在这条总线上,每个设备模块都有唯一的地址,IIC总线上的每一个设备模块既是主控器或被控器,又是发送器或接收器,这取决于你要实现的功能是怎样的。

CPU发出的控制信号分为地址码和控制量两部分

IIC总线传输过程中有三种信号:起始信号,终止信号,应答信号。

 起始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据;

 终止信号:SCL 为低电平时,SDA 由低电平向高电平跳变,结束传送数据;

 应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出

特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,

等待受控单元发出一个应答信号,CPU 接收到应答信号后,根据实际情

况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单

元出现故障。

    SPI允许单片机和外围设备或者单片机之间高速同步数据传输,SPI可以有主机和从机模式之选,通信的主从机之间通过移位寄存器同时交换数据。目前自己用的以主机模式居多。SPI需要四线:SS,MISO,MOSI,SCK。

   通信过程:在设置好SPI的工作模式:包括SCK频率(数据传输速率),工作速度,主从模式,以及数据接收发送对应的时钟极性。在主模式下,将SS拉低表示通信的开始,然后通过向SPI数据寄存器中写入一字节的数据后自动启动时钟SCK开始进行一次通信,通信完成后会产生相应的中断标志,标志一个字节数据的传送完成。通信完成后将SS脚拉高,表示通信过程已经结束。

   注意SS引脚的设置:当设置为从机模式时,SS引脚应设置为输入,拉低的时候SPI才能起作用,拉高的话是消极的SPI模式;在主机模式下,SS引脚可以设置,一般应设置为输出,如果设置为输入的话应保持为高,否则将不能进行正常的主机模式操作。

单片机通讯方式

㈢ 汇编语言实现两台单片机并行通信

通信 是 并行的,不需要协议啥的,简单收发就行。

这就太简单了。

如果是单工的,用一个 8 位的并行口,互连即可。

比如甲机 P2 连接到乙机的 P1。

甲机的 P1 接上八个拨动开关,乙机的 P2 接上八个 LED。

两台单片机,都是 P1 输入、P2 输出。程序是相同的,如下:

ORG 0000H

MOV P2, P1
SJMP 0000H

END

这就实现了《并行的、简单收发》。

㈣ 51单片机点亮流水灯是什么通信方式

语言知识点:
1、sbit:

sbit 变量名=地址名; //在给某个引脚取名的时候
登录后复制
2、#typedef使用:重新定义一些常用的关键词

typedef unsigned char u8; //使u8可定义无符号字符型
typedef unsigned int u16; //使u16可定义无符号整型
登录后复制
3、#define

#define A P0 //用A来定义成P0
登录后复制
4、延时函数:可通过设置断点(在左侧行数栏双击)进行debug调试查看具体延时时间

void delay(u16 i) //i为1时,大约延时10us
{
while(i--);
}
登录后复制
5、循环左移右移函数(包含在intrins.h库函数中)

_crol_(a,b); //循环左移函数,a是左移值,b是左移的位数
_cror_(a,b); //循环右移函数,a是右移值,b是右移的位数
登录后复制

51单片机简单实验
51单片机引脚图
P3口第二功能各引脚功能定义:

P3.0:RXD串行口输入
P3.1:TXD串行口输出
P3.2:INT0外部中断0输入
P3.3:INT1外部中断1输入
P3.4:T0定时器0外部输入
P3.5:T1定时器1外部输入
P3.6:WR外部写控制
P3.7:RD外部读控制

1、点亮led灯
这里我的开发板上led灯当引脚输出为低电平时点亮,故选取了P2.0引脚使其输出低电平(此处可根据自己led连接或者板上电路来设置高低电平)

#include"reg52.h"

sbit led=P2^0; //取P2.0变量名为led

void main()
{
while(1)
{
led=0;
}
}
登录后复制

2、闪烁led灯
闪烁程序上即为在点亮后进行延时一段时间在熄灭再延时,执行如此循环,故可在上一个程序中修改为:

#include"reg52.h"
typedef unsigned int u16;

sbit led=P2^0; //取P2.0变量名为led

void delay(u16 i) //构建延时函数
{
while(i--);
}

void main()
{
while(1)
{
led=0;
delay(50000);
led=1;
delay(50000);
}
}
登录后复制

3、led流水灯
#include"reg52.h"
#include"intrins.h"
#define led P2 //将P2定义为led
typedef unsigned int u16;
typedef unsigned char u8;

void delay(u16 i) //构建延时函数
{
while(i--);
}

void main()
{
u8 i;
led=0xfe; //1111 1110
delay(50000); //延时450ms
while(1)
{
for(i=0;i<7;i++)
{
led=_crol_(led,1);
delay(500000);
}
}
}
登录后复制

4、蜂鸣器

无源蜂鸣器(压电式蜂鸣器):左边第一张图即有绿色电路板,由多谐振荡器、压电蜂鸣片等组成,接通电源后(1.5v~15v直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,发声。需要形成脉冲控制,改变单片机输出波形的频率(脉冲周期),就可以控制蜂鸣器音调,产生不同音色、音调的声音;改变输出电平的高低电平占空比,则可以控制蜂鸣器的声音大小

有源蜂鸣器(电磁式蜂鸣器):下部无绿色电路板,内部含有振荡器电路,接通电源后,振荡器产生音频信号电流通过电磁线圈,使电磁线圈产生磁场,周期性振动地发声。可通过单片机高低电平直接控制

ULN2003:高耐压、大电流达林顿陈列,由七个npn达林顿管组成(com接VCC,E接GND)

这里我的开发板上蜂鸣器连接引脚P1^5故可设置如下程序:

#include"reg52.h"

typedef unsigned int u16;
sbit beep=P1^5;

void delay(u16 i) //延时函数
{
while(i--);
}

void main()
{
while(1)
{
beep=~beep; //取反
delay(10); //延时100us,不同延时频率不同声音不同
}
}
登录后复制

6、中断
6.1、中断的定义
CPU在处理某一事件时,发生另一事件B请求CPU迅速去处理(中断发生),CPU暂时中断当前的工作,转去处理需要迅速处理的事件(中断响应和中断服务),待中断事件处理完成后继续处理原事件(中断返回)

引起CPU中断的根源称为中断源,CPU暂时中断原来的事件转向中断事件,处理完成后回到原来的地方(即断点),实现中断功能的部件称为中断系统。

中断的优点:分时操作:CPU可以分时为多个I/O设备服务,提高计算机的利用率、实时响应:CPU能够及时处理应用系统的随机事件,实时性大大增强、可靠性高:CPU具有处理设备故障及掉电等突发事件能力,使可靠性提高、解决了快速主机预慢速I/O设备的数据传输问题

6.2、中断源、中断寄存器和中断优先级
89C51的中断系统有5个中断源,2个中断优先级,可实现二级中断嵌套。五个中断源如图由上至下对应为外部中断0、定时器0、外部中断1、定时器1、串口中断,其中断优先级由上至下递减;TCON中的IT0和IT1可决定INT0和INT1低电平有效还是下降沿有效;对应的中断标志位IE0、TF0(定时器0溢出)、IE1、TF1(定时器1溢出)为1时触发中断,当RX或TX串行口接受或者发送完成RI或TI置1触发中断;

CPU对中断系统所有中断及某个中断源的开放和屏蔽是由中断寄存器IE控制的。

EX0(IE.0):外部中断0允许位;ET0(IE.1):定时/计数器T0中断允许位;EX1(IE.2):外部中断1允许位;ET1(定时/计数器T1中断允许位);ES(IE.4)串行口中断允许位;EA(IE.7):CPU中断总允许位

TCON中断请求标志。

IT0(TCON.0),外部中断0触发方式控制位。当IT0=0时,为电平触发方式;当IT0=1时,为边沿触发方式(下降沿有效)。

IE0(TCON.1),外部中断0中断请求标志位。发生中断后标志位置一。

IT1(TCON.2),外部中断1触发方式控制位。

IE1(TCON.3),外部中断1中断请求标志位。

TF0(TCON.5),定时/计数器T0溢出请求标志位。

TF1(TCON.7),定时/计数器T1溢出中断请求标志位。

同一优先级的中断请求不止一个时,则有中断优先级的排队问题。其排列如图所示:

中断源

正在进行的中断过程不能被新的同级或低级优先级的中断请求所中断,进行的低优先级中断服务可被高优先级中断请求所中断。

6.3、中断处理过程
中断响应条件:

中断源有中断请求;

此中断源的中断标志位为1;

CPU开中断(即EA=1)。

使用中断,需要做什么

想使用的中断是哪个?选择而响应的中断号;

希望触发的条件是什么?

希望在中断之后干什么?

以外部中断0为例

EA=1; //打开总中断开关
EX0=1; //打开外部中断0
IT0=0/1; //设置外部中断的触发方式,0为低电平1为下降沿
登录后复制
中断服务函数

void int0 () interrupt 0 using 1 //int0为函数名称,() interrupt为固定格式,0位中断号,using1可不写
{
do anything that you want
}
登录后复制
7、外部中断
51单片机中断系统结构

P3.0:RXD串行口输入
P3.1:TXD串行口输出
P3.2:INT0外部中断0输入
P3.3:INT1外部中断1输入
P3.4:T0定时器0外部输入
P3.5:T1定时器1外部输入
外部中断实验:

将开关连接至单片机的P3.2口(外部中断0),按下开关使得连接至P2.0的小灯点亮状态进行取反。

#include "reg52.h"

typedef unsigned int u16;
typedef unsigned char u8;

sbit key = P3 ^ 2; //定义按键key
sbit led = P2 ^ 0; //定义P2.0为led口

void delay(u16 i) //构建延时函数
{
while (i--);
}

void Int0Init() //构建中断初始化函数
{
EA = 1;
EX0 = 1;
IT0 = 1;
}

void main()
{
Int0Init(); //设置外部中断0
while (1);
}

void Int0() interrupt 0 //中断响应程序
{
delay(1000); //延时消抖
if (key == 0)
led = ~led;
}
登录后复制

8、定时器和计数器中断
8.1、CPU时序的有关知识
振荡周期:为单片机提供定时信号的振荡源的周期(即为晶振周期或外加振荡周期)(一般外界晶振为12M,一个振荡周期为1/12us)

状态周期:2个振荡周期为1个状态周期,用S表示。(若为12m晶振,一个状态周期为1/6us)

机器周期:1个机器周期含6个状态周期,12个振荡周期。(若为12m晶振,一个机器周期=12x1/12m,即为1us)

指令周期:完成1条指令所占用的全部时间,以机器周期为单位。(若为12m晶振,1~4us)

8.2、51单片机定时器/计数器
8.2.1 需要了解的知识

51单片机有两组定时器/计数器,因为既可以定时,又可以计数。

定时器/计数器和单片机CPU是相互独立的。定时器/计数器工作过程不需要CPU的参与。可以增加单片机的效率,一些简单的重复加1的工作可以交给定时器/计数器处理。同时实现精确定时的作用。

51单片机中的定时器/计数器是根据机器内部的时钟或者是外部的脉冲信号对寄存器的数据加1。

8.2.2 工作原理

定时/计数器实际上是一个加1的计数器。它随着计数器的输入脉冲进行自加1,也就是每来一个脉冲计数器就自动加1,当加到计数器全为1时,再输入一个脉冲就使计数器回零,且计数器的溢出使得相应的中断标志位置一,同CPU发出中断请求。

可见,由溢出时计数器的值减去计数器的初值才是加1计数器的值。

定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器THx和TLx组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动停止及设置溢出标志。

8.2.3、定时/计数器的控制

定时/计数器工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式;TCON用于控制其启动和中断申请。

(1)工作方式寄存器TMOD

工作方式寄存器TMOD用于设置定时/计数器的工作方式,低四位用于T0,高四位用于T1。格式如下:

GATE是门控位,用于控制定时器的启动是否受中断源的影响。GATE位0时,只要软件使TCON中的TR0和TR1位1,就可以使定时器/计数器工作;GATE=1时,需要外部中断INT0/1也为高电平时,TR0或TR1为1,才能启动定时/计数器工作。

C/T:定时/计数模式选择位。C/T=0为定时模式;C/T=1为计数模式。

M1 M0:工作方式设置位。定时/计数器有四种工作方式。(一般使用方式1和方式2)

(2)控制寄存器TCON

TCON的高4位用于控制定时/计数器的启动和中断。格式如下:

TF1(TCON.7):T1溢出中断请求标志位。T1计数溢出时由硬件自动置1,CPU响应中断后TF1由硬件自动清0。T1工作时,CPU可随时查询TF1的状态,TF1可用作查询测试的标志。TF1也可用软件置1或清0。

TR1(TCON.6):T1运行控制位。TR1置1时,T1开始工作;TR1置0时,T1停止工作。TR1由软件置1或清0.

TF0(TCON.5):T0溢出中断请求标志位,其功能与TF1类同。

TR0(TCON.4):T0运行控制位,其功能与TR1类同。

8.3、定时/计数器的工作方式
1、方式0

方式0位13位计数器,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0的标志,向CPU发出中断请求。

定时器模式有:N=t/Tcy,定时器的初值还可以采用计数个数直接取补法获得

计数器初值计算公式为:X=2^13-N,计数模式时计数脉冲是T0引脚上的外部脉冲获得

门控位GATE具有特殊的作用。当GATE=0时,经反向后使或门输出为1,此时仅由TR0控制与门的开启,与门输出1时,控制开关接通,计数开始;当GATE=1时,由外中断引脚信号控制或门的输出,此时控制与门的开启由外部中断引脚信号和TR0共同控制。

2、方式1

方式1的计数位数是16位,由TL0作为低8位,TH0作为高8位,组成了16加1计数器。

计数个数与计数初值的关系为:X=2^16-N

3、方式2

方式2位自动重装初值的8位计数方式。(只要低8位计满就会重新装载)

计数与计数初值的关系为:X=2^8-N,适合于用作较精确的脉冲信号发生器。

4、方式3

方式3只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=0,停止计数。

工作方式3将T0分成两个的8位计数器TL0和TH0。

使用定时/计数器该做哪些工作:

对TMOD赋值,以确定T0和T1的工作方式。

计算初值,并将其写入TH0、TL0或TH1、TL1。

中断方式时,对EA赋值,开放定时器中断。

使TR0或TR1置位,启动定时/计数器定时或计数

计数器初值的计算

机器周期也就是完成一个基本操作所需要的时间。

机器周期=1/单片机的时钟频率

51单片机的时钟频率是外部时钟的12分频。也就是说当外部晶振的频率输入到单片机里面的时候要进行12分频。当使用12M晶振,那么单片机内部的时钟频率就是12/12MHZ,机器周期=1us

定时1ms的初值是多少呢?1ms=1000us。也就是要数1000个数,初值=65535-1000+1(因为实际上计数器记到66636才溢出)=64536=FC18H

8.4、定时器中断例程

时间小灯间隔1s的闪烁,连接led至P2^0口,使用定时器0进行定时

#include "reg52.h"

typedef unsigned int u16;
typedef unsigned char u8;

sbit led = P2 ^ 0;

void time0Init()
{
TMOD = 0x01; //定时器0门控位设置为0,设置为定时器模式,计数模式1
TH0 = 0xFC; //设置定时器初值
TL0 = 0x18;
EA = 1; //开启总中断
ET0 = 1; //打开定时器0中断允许
TR0 = 1; //打开定时器
}

void main()
{
time0Init();
while (1);
}

void time0() interrupt 1
{
static u16 i; //设置静态变量,每过1ms即执行一次中断加1
TH0 = 0xFC; //赋予初值
TL0 = 0x18;
i++;
if (i == 1000) //u16累加至1000即过1s后i清0 led状态取反
{
i = 0;
led = ~led;
}
}
登录后复制

9、串口通信
9.1、串口通信的原理
计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。通信有并行通信和串行通信两种。

并行通信:将数据字节的各位用多条数据线同时进行传送。

并行通信特点:控制简单、传输速度快;由于传输线较多,长距离传送成本高且接受的各位同时接收存在困难。

串行通信:将数据字节分成一位一位的形式在一条传输线上逐个地传送。

串行通信的特点:传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制比2并行通信复杂。

串行通信的基本概念

一、异步通信与同步通信

1、异步通信:通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收的时钟尽可能一致。

异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但同一字符内的各位之间的距离均为“位间隔”的整数倍。

异步通信的特点:不要求收发双方时钟的严格一致,实现容易,设备开销较小,但每个字符要附加2~3位用于起止位,各帧之间还有间隔,因此传输效率不高。

2、同步通信:建立发送方时钟对接收方时钟的直接控制,使双方达到完全同步。此时,传输数据的位之间的距离均为“位间隔”的整数倍,同时传送的字符间不留间隙,即保持位同步关系,也保持字符同步关系。发送方对接收方的同步可以通过两种两种方法实现。(数据加时钟形式传送)

二、串行通信的传输方向

单工:数据仅能沿一个方向,不能实现反向传输。

半双工:数据可以沿两个方向,但需要分时进行。

全双工:数据可以同时进行双向传输。

串行通信常见的错误校验

1、奇偶校验:发送数据时,数据位尾随的1位为奇偶校验位(1或0)。奇校验时,数据中的“1”的个数与校验位“1”的个数之和为奇数;偶校验时,数据中“1”的个数与校验位“1”的个数之和应为偶数。接收字符时,对“1”的个数进行校验,若发现不一致,则说明传输数据中出现了差错。(如传输数据为1101110数据位1的个数为5奇数,若为奇校验则校验位为0)

2、代码和校验

3、循环冗余校验

三、传输速率

1、比特率:每秒传输二进制代码的位数,单位是:位/秒(bps)。如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位、1个停止位、8个数据位),这时比特率为:

10位X240个/秒=2400bps

2、传输距离与传输速率之间的关系

串行接口或终端直接传送串行信息位流的最大距离与传输速率及传输线的电气特性有关。传输距离随传输速率的增加而减小。

四、串行通信接口标准

1、RS-232C接口:EIA(美国电子工业协会)修订,定义了数据终端设备与数据通信设备之间的物理接口标准。

(1)机械特性:RS-232C接口规定使用25针连接器,连接器的尺寸及每个插针的排列位置都有明确的定义。

(2)过程特性:过程特性规定了信号之间的时序关系,以便正确地接收和发送数据。

远程通信连接(RTS请求发送,DSR数据建立就绪,TXD发送数据,RXD接收数据)

近程通信连接

RS-232C电平与TTL电平转换驱动电路(将5V的单片机电平转换为12V的计算机串口电平,将12V的计算机电平转换为计算机的12V电平)

2、采用RS-232C接口存在的问题(通常使用在通信距离短的设备)

传输距离短,传输速率低:受电容允许值的约束,使用传输距离一般不要超过15m。最高传送速率为20Kbps。

有电平漂移:RS232C要求收发双方共地。通信距离较大时,收发双方的地电位差别较大,在信号地上将有比较大的地电流并产生压降。

抗干扰能力差:RS-232C在电平转换时采用单端输入输出,在传输过程中当干扰和噪声混在正常的信号中。为了提高信噪比,RS-232C总线标准不得不采用较大的电压摆幅。

9.2、80C51的串行口
80C51串行口结构

有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H(因此在编程时通常无论接收还是发送都写SBUF);接收器是双缓存结构;发送缓冲器由于是CPU主动进行发送,不会产生重叠错误。

1、80C51串行口的控制寄存器

SCON是一个特殊功能寄存器,用以设定串行口的工作方式、接收/发送控制以及设置状态标志:

SM0和SM1为工作方式选择位,可以选择四种工作方式:(通常采用方式1)

SM2,多机通信控制位,主要用于方式2和方式3.当接收机的SM2=1时可以利用收到的RB8来控制是否激活RI(RB8=0时不激活RI,收到信息丢弃)。当SM2=0时,不论收到的RB8为0和1,均可以使收到的数据进入SBUF,并激活RI。通过SM2,可以实现多机通信。方式0时,SM2必须是0。在方式1时,如果SM2=1,则只有接收到有效停止位时,RI才置1.

REN,允许串行接收位,由软件置REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。

TB8,在方式2或方式3中,时发送数据的第九位,在方式0和方式1中,该位未用。

RB8,在方式2或方式3中,是接收到数据的第九位。

TI,发送中断标志位。在方式0时,当串行发送第8位数据结束时(或其他方式,串行发送停止位的开始时),由内部硬件使TI置1,向CPU发中断申请。在中断服务程序中,必须用软件将其清0,取消此中断申请。

RI接收中断标志位。在方式0时,当串行口接收第8位数据结束时(或其他方式,串行接收停止位的中间时),由内部硬件使RI置1,向CPU发出中断申请。也必须在中断服务程序中,用软件将其清0,取消中断申请。
PCON中只有一位SMOD与串行口工作有关:

SMOD(PCON.7) 波特率倍增位。在串行口方式1、方式2、方式3时,波特率与SMOD有关,当SMOD=1时,波特率提高一倍。复位时,SMOD=0.

9.3、串行口的工作方式
1、方式0

方式0时,串行口位同步移位寄存器的输入输出方式。主要用于扩展并行输入或输出口。数据由RXD(P3.0)引脚输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送和接收均为8位数据,低位在先,高位在后。波特率固定为fosc/12。

发送时,如图先发送低位后发送高位,发送完成后TI置1

接收时,当接收完成后RI由硬件置1.

2、方式1

方式1是10位数据的异步通信口。TXD位数据发送引脚,RXD为数据接收引脚,传送一帧数据的格式如图所示。其中1位起始位,8位数据位,1位停止位。

用软件置REN为1,接收器以所选择波特率的16倍速率采样RXD引脚电平,检测到RXD引脚输入电平发生负跳变时,则说明起始位有效。

㈤ 怎样实现两片单片机之间的并行通信

1.直接使用一个8位口就可以实现。
2.使用8位口以及一个中断和使能端,每个单片机使用10个端口
3.使用8位口以及一个时钟输出和使能端,每个单片机使用10个端口
你也可以参照一些ad/da的使用。

㈥ 单片机之间如何实现通信

两个单片机之间串口通信,如果是用proteus仿真,最简单了,两个单片机的rxd,txd交叉连接就行了。要是实物最好用rs232连接通信,距离可以达到几十米。再远点距离,用rs485连接通信。总之,方法很多的,也很灵活的。

㈦ 单片机不同串口同时工作有什么好处

传输线少,长距离传送时成本低,每个串口独立工作,不定时和我的板子通信,可以提高单片机的工作效率。
单片机的数据通信有两种方式:并行通信和串行通信.并行通信指数据字节的各位同时发送或接收;而串行通信是数据字长距离传输数据节一位一位按顺序发送或接收.并行通信传输线多,适用于短距离,快速度的通信;而串行通信仅需单线传输信息,适用于长距离传输数据,由于每次传送一位,所以传输速度比较慢.串行通信又分异步和同步两种方式,其中异步串行通信是最常用的方式。异步通信传输的数据格式一般由1个起始位、7 个或8 个数据位、1 到2 个停止位和一个校验位组成。它用一个起始位表示字符的开始,用停止位表示字符的结束。
在异步通讯中,通信双方采用独立的时钟,起始位触发双方同步时钟。在异步通信中CPU 与外设之间必须有几项约定,即每一帧位数,字符格式和波特率。字符格式的规定是双方能够在对同一种0 和1 的数据串理解成同一种意义。原则上字符格式可以由通讯的双方自由制定,但从通用、方便的角度出发,一般还是使用一些标准为好,如采用ASCII 标准。

㈧ 单片机通信有三种,其中应用在对讲机是采用

首先弄懂串行通信和并行通信以及串口通信和并口通信的概念。

串行通行:它是一个概念,它是指数据一位一位地顺序传送,其特点就是通信线路

简单,只要一对传输线就可实现双向通信,适用于远距离通信,但传输速度慢。它

包括普通的串口通信,I2C,SPI,UART...

串口通信:是一种实际通信方式,但是我们可以几乎看成一样.

串行接口:简称串口,或串行通信接口,或串行通讯接口(通常指com口)。

并行通信:如果一组数据的各数据位在多条线上同时被传输,那么就是并行通信。

并口接口:就是一种接口,各数据位同时被传输,传输速度快,效率高,一边可用于MCU。

串行通信又可分为单工,半双工和全双工

单工:信息只能单向传送。

半双工:信息能双向传送但不能同时。

全双工:信息能同时双向传送。

串行通信还可分为同步通信和异步通信

同步通信(两根线):是把许多字符组成一个信息组,这样,字符可以一个接一个地传输,但是,

在每组信息(通常称为信息帧)的开始要加上同步字符,在没有信息要传输时,要填上空字符,

因为同步传输不允许有间隙。同步方式下,发送方除了发送数据,还要传输同步时钟信号,

信息传输的双方用同一个时钟信号确定传输过程中每1位的位置

异步通信(一根信号线,没有时钟线):是一种很常用的通信方式。异步通信在发送字符时,所发送的字符之间的时间

间隔可以是任意的。当然,接收端必须时刻做好接收的准备。发送端可以在任意时刻开始发送字符,

因此必须在每一个字符的开始和结束的地方加上标志,即加上开始位和停止位,以便使接收端能够

正确地将每一个字符接收下来。异步通信的好处是通信设备简单、便宜,但传输效率较低(因为开始位和停止位的开销所占比例较大)。

同步通信与异步通信区别:

1.同步通信要求接收端时钟频率和发送端时钟频率一致,发送端发送连续的比特流;异步通信时

不要求接收端时钟和发送端时钟同步,发送端发送 完一个字节后,可经过任意长的时间间隔再发送下一个字节。
2.同步通信效率高;异步通信效率较低。

3.同步通信较复杂,双方时钟的允许误差较小;异步通信简单,双方时钟可允许一定误差。
4.同步通信可用于点对多点;异步通信只适用于点对点。

单片机中的SPI、UART、I2C

1、SPI

SPI允许单片机和外围设备或者单片机之间高速同步数据传输,SPI可以有主机和从机模式之选,通信的主从机之间通过移位寄存器同时交换数据。目前自己用的以主机模式居多。SPI需要四线:SS,MISO,MOSI,SCK。

通信过程:在设置好SPI的工作模式:包括SCK频率(数据传输速率),工作速度,主从模式,以及数据接收发送对应的时钟极性。在主模式下,将SS拉低表示通信的开始,然后通过向SPI数据寄存器中写入一字节的数据后自动启动时钟SCK开始进行一次通信,通信完成后会产生相应的中断标志,标志一个字节数据的传送完成。通信完成后将SS脚拉高,表示通信过程已经结束。

注意SS引脚的设置:当设置为从机模式时,SS引脚应设置为输入,拉低的时候SPI才能起作用,拉高的话是消极的SPI模式;在主机模式下,SS引脚可以设置,一般应设置为输出,如果设置为输入的话应保持为高,否则将不能进行正常的主机模式操作。

2、USART

USART的操作比较简单,主要是设置波特率,数据格式,以及中断允许位等,值得至于的是其USART IN SPI MODE,在SPI模式下的USART的操作跟SPI操作差不多,主要是Clock的设置,然后发送数据还是通过USART的中断进行

3、I2C

I2C接口是简单强大的通信接口,只需要两根双向总线(时钟和数据线),SCL和SDA,即可实现一个主机和最多128个从机进行通信。模拟I2C接口的过程:启动I2C,一般是在SCL为高时将SDA拉低启动数据发送,SDA只有在SCL为低时才能拉高拉低有效,在SCL为高时拉高拉低SDA只是用于停止启动I2C通信

I2C总线是 内部总线 ,用来连接内部系统内的芯片。
串口通信是用来和系统外部的设别通信的。比如设备和设备之间通信。
SPI,UAR,I2C都是串行通信方式,并行通信方式一般用的少,因为只适合

短距离,一般用于MCU比较多,因为MCU它对数据的传输速度有要求,而且

与塔相连的芯片一般会比较近。

MCU 他的属性要比CPU(这里指单片机,其他地方应该也是) 强,它包括CPU的性能,

且还有CPU没有的性能。

㈨ 怎样实现两片单片机之间的并行通信

实际应用是不会这么做的,主要是浪费资源,包括硬件软件的。一般都用串口通讯。
要实现并行通信也是可以的,可以给你一些方法,
硬件连接
px
并口(8个
io口)+
intx
外部中断+
发送请求(2个io口),
发送端:
把要发送
的数据
写入
并口,同时写入
发送请求(如低电平有效
加一些延时后置高电平)
接收端:
产生
接收
外部中断,把px
接收并口
写入0xff
,
并读取
数据,也可以发送
返回数据
与发送端相同。

阅读全文

与单片机并行通信相关的资料

热点内容
为什么我的世界天空服务器进不去 浏览:260
钉钉直播后的视频如何线上加密 浏览:503
听主的命令 浏览:208
全民上云时代云服务器 浏览:519
iphone不创建id如何下载app 浏览:970
windowsphp扩展安装 浏览:93
emacslinux配置文件 浏览:379
python3在线教程 浏览:114
不小心删文件夹的文件 浏览:480
java获取手机IP 浏览:816
手机rar解压密码获取 浏览:344
程序员被辞退工资怎么处理 浏览:494
恋活的模型没加密 浏览:159
如何把安卓机的微信转移苹果 浏览:583
爬山算法相关题目 浏览:724
vc编程大全 浏览:118
excel表格单列数据加密 浏览:649
给同事的解压话语 浏览:993
linux关闭网卡命令行 浏览:456
史上最漂亮程序员 浏览:771