产品选型

c51单片机串口 单片机入门-C51语言实现串行通信用查询法发送数据控制数码管解说

小编 2024-10-12 产品选型 23 0

单片机入门-C51语言实现串行通信用查询法发送数据控制数码管解说

单片机入门-C51语言实现串行通信用查询法发送数据控制数码管视频教程:

视频教程

一、通过单片机的串行口发送数据主要有以下几个要点:

1.SBUF:

串行口中有两个缓冲寄存器SBUF,一个是发送寄存器,一个是接收寄存器,在物理结构上是完全独立的。它们都是字节寻址的寄存器,字节地址均为99H。代码段中SBUF = table[i] 都是CPU向SBUF写入数据,同时表示此时是发送状态, temp=SBUF 是CPU从SBUF读出数据存放在temp变量,同时表示此时是接收状态。也即0x99H这个重叠的地址靠读/写指令区分。

2.TI/RI:

TI:发送中断标志位

可寻址标志位。方式0时,发送完第8位数据后,由硬件置位,其它方式下,在发送或停止位之前由硬件置位,因此,TI=1表示帧发送结束,TI可由软件置0。

RI:接收中断标志位

可寻址标志位。接收完第8位数据后,该位由硬件置位,在其他工作方式下,该位由硬件置位,RI=1表示帧接收完成。

在串口中断处理时,TI、RI都需要软件置0,硬件置位后不可能自动清0,此外,在进行缓冲区操作时,需要ES=0,以防止中断出现。

二、用查询法通过单片机的串行口发送数据主要步骤:

1.设置SCON工作方式

2.把要发送的数据存入SBUF

3.查询TI的值是否为1,为0则等待,为1,则清零,可以再发送下一个数据

单片机入门-C51语言用单片机串口实现双向数据收发的双机通信

单片机入门-C51语言用单片机串口实现双向数据收发的双机通信视频教程如下:

视频教程

一、单片机串行口简介

串行通信是指构成信息的二进制字符的各位数据一位一位顺序地传送的通信方式,串行通信又分为两种基本通信方式,即异步通信和同步通信。

AT89C51串行口,主要由发送器、接收器和串行控制寄存器组成。串行口中有两个缓冲寄存器SBUF,一个是发送寄存器,一个是接收寄存器,在物理结构上是完全独立的。它们都是字节寻址的寄存器,字节地址均为99H。代码段中SBUF = table[i] 都是CPU向SBUF写入数据,同时表示此时是发送状态, temp=SBUF 是CPU从SBUF读出数据存放在temp变量,同时表示此时是接收状态。也即0x99H这个重叠的地址靠读/写指令区分。

二、用单片机串口实现双工方式的双机通信硬件电路设计:

用单片机串口实现双工方式的双机通信,简单起见,这里两块单片机都具有收发功能,它们具有相同的电路,双机互相发送0~9,各自在数码管上循环显示。设计电路图如下:

双工通信

三、用单片机串口实现双工方式的双机通信软件设计:

软件编写的设计步骤如下:

1.设置通信速度(定时器TMOD/TH/TL/TR)

9600bit/s 11.0592MH

2.利用串口发送数据

(1)设置SCON

(2)发送数据放在SBUF

(3)查询TI,TI=1则清0,TI=0则等待

3.利用串行中断来接收数据:

(1)设置SCON,允许接收

(2)设置中断ES/EA

(3) 编写中断函数,完成设定的任务。

4.总体代码如下:

#include<reg51.H>

#define uchar unsigned char

#define uint unsigned int

uchar code buff[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

void delay_1s(void)

{

uint i;

for(i=50000;i>0;i--);

}

void serial() interrupt 4 using 1

{

ES=0;

RI=0;

P0=SBUF; //用P0口驱动LED数码管

ES=1;

}

void main()

{

uchar i;

TMOD=0X20;//0X20=B(0010,0000),定时器1工作在方式2

TH1=0XFD;

TL1=0XFD;//设置初值为253,两机的波特率就是9600bit/s

SCON=0X50;//0x50=B(0101,0000),串口工作在方式1,允许接收

EA=1;//使能总中断

ES=1;//开启串行口中断

RI=0;

TR1=1;//启动定时器1

while(1)

{

for(i=0;i<10;i++)

{

SBUF=buff[i];//发送的内容送SBUF

while(!TI);//等待发送

TI=0;

delay_1s();

}

}

}

相关问答

C51 如何接收和发送, 串口 工具16位数据?

51单片机一次只能接收1个字节数据(8位),若要接收两个字节,串口工具应该分成两字节发送。比如先发送高字节,再发送低字节。对于100H,按十六进制发送0100...

c51单片机 怎样接受波?

C51单片机可以通过串口接收波形数据。首先,需要将波形信号通过串口转换器转换为串口信号,然后将转换后的信号连接到C51单片机的串口引脚。在单片机程序中,可...

c51单片机 p0到p3口的结构?

P0是开漏的,用来当地址/数据总线复用的,作I/O口时需要外接上拉电阻,一般用10K的排阻。P1~P3口都是双向I/O口,内部带上拉电阻的,P2口在访问外部存储时和P0作...

51 单片机 串行通信的优点及用途?

51单片机串行通信通信的优点是使用简单方便,电平兼容性好,波特率可调,广泛应用于工业现场,测量仪器仪表等场合51单片机串行通信通信的优点是使用简单方便,电...

如何判定 C51 是一次发送,还是多次 串口 发送?

51单片机一次只能接收1个字节数据(8位),若要接收两个字节,串口工具应该分成两字节发送。比如先发送高字节,再发送低字节。对于100H,按十六进制发送0100...

51 单片机 有哪几个中断源?几个优先级?

mcs-51单片机有5个中断源,分别为:1、外部中断0(INT0):默认中断级别最高,中断入口地址0003H;2、定时/计数器0(T1):默认中断级别第2,中断入口地址000BH;3...

51 单片机 中断函数的定义形式?

例如定时器0中断:voidtimer0_sev(void)interrupt1timer0_sev是中断程序名称,可自己定interrupt1指的是中断号,不能随意写0123...

c51单片机 晶振频率怎么选?

1、如果用定时器定器,选12M,计时比较准确。2、如果用串口通信,选11.0592M,波特率比较准确。3、不用串口通信,就选12M,也比较好。4、标准的51单片机晶振...

备学习 单片机 开发,正在考虑入手一个单片机开发板。 C51单片 ...

[回答]还不错的,他们专业承接单片机解决方案,以前朋友在那做了,还批量生产了我只能说我们合作这么久唯一一家让我觉得品控,服务,价格做到细节控制,之前一...

s51和 c51 区别?

对于单片机来讲可以通过SPI或其它的串行接口接收上位机传来的数据并写入存储器中。所以即使我们将芯片焊接在电路板上,只要留出和上位机接口的这个串口,就可以...

猜你喜欢