ddgw.net
当前位置:首页 >> 51单片机串行口通信 >>

51单片机串行口通信

把下面的程序稍微改一下:/* 说明:1. U1为发信机,U2位收信机;2. U1收到数据后会打印出AT89C51 U1-->, 并循环点亮8个LED;3. U2接收输入数据后保存最新的30个字符,按'\'后输出AT89C51 U2-->*/#include <reg51.h> /* define

第0步 设置好什么波特率之类的 第一步 SBUF 写个数 这样 那个串口部件就会自己发送了 但是这个速度非常慢的1 CPU可以干耗着 不停的问 你发没发完?你发没发完?你发没发完?…… 发完了CPU再干别的 比如发下一个数2 上面的方法太不效率了 CPU可以完成第一步就走人 当串口发完了之后 在给CPU“按铃” 这样CPU再处理是不是再发一个 这样你明白过程了 就不用我多说了吧?

设置好串行口以后,把要发送的字节送到sbuf就自动发送了,发送以后sbuf里面应该是0,因为sbuf是移位寄存器接收的时候是sbuf自动接收,每收一个bit,就移位一次,一共是移位8次,当满一个字节以后,就自动将标志位置1,然后可以查询标志位,也可以产生中断

1、通信就是是两台设备交换数据(全/半双工)或一台设备向另一台设备汇报工作(单工). 2、总体而言分为串行和并行通信.并行速度更快如并口硬盘,串行连接更方便如USB硬盘的USB接口部分. 3、就工业远距离通信应用,无一例外采用的是串行.距离远、节省线材,抗干扰强. 4、单片机的串口通信是低速、低成本、通用的一种通信方式.常见电平标准是232和485. 5、通过一根数据线和一根时钟线来实现单个字节的移位输入输出,从而完成数据的传输. 6、51而言,具体控制,主要是硬件模块的初始化(串口工作方式、波特率设置、中断使能)以及通信协议的实现(串口缓冲SBUF读写管理以及协议的解释).

连线就是 交叉连接 a的tx到b的rx a的rx到b的tx,还有一根地线 串口线就这三根就够用了 然后就是初始化a和b的串口,设置波特率,工作模式,开中断等等 a和b的通信,你先调试一台机器,比如a,和电脑连接,用串口调试助手(网上找)查看a的收发数据是否正常,然后a和b联调 串口通信距离不远一般不会出错,波特率较低,除了奇偶校验,你可以指定一个简单的通信协议,来验证是否数据正常 这类程序网上很多,你不清楚就搜索51串口程序,出来一大堆,找个有注释的看看,调试一下试一试 祝你顺利 在网上找了一下,这两个你参考一下,注释很详细 串口发送

51的串口是全双工的.就是在发的同时可以收,收的同时也可以发.单工就是只能收或只能发,双工就是既能收又能发.双工还包括半双工和全双工.半双工指在收的时候不能发,发的时候不能收.

通信线上传输了一个字节到单片机串口上,硬件自动将其接收并存储在SBUF里,此时会产生一个中断(串口接收中断),单片机的相应中断使能(ES,EA)打开的时候,就可以进入中断,方便处理通讯.关闭中断时,仍可以使用查询的方式进行通讯处理.查询RI位,if(RI==1){RI=0;//需要对其清零,硬件不会自动清零的//以下是处理程序}发送的时候把需要发送的字节送入SBUF即可启动硬件发送,单片机只需查询TI(发送标志位)看看发送是否完成就行了.TI也需软件清零.

#include <reg51.h> #include <string.h> unsigned char ch; bit read_flag= 0 ; void init_serialcom( void ) //串口通信初始设定 { SCON = 0x50 ; //UART为模式1,8位数据,允许接收 TMOD |= 0x20 ; //定时器1为模式2,8位自动重装 PCON |= 0x80 ;

串行通讯发送接收关键是发送与接收的频率要一致,也就是波特率要相同 8051的uart控制器实际就是一个移位寄存器,需要一个频率的信号控制移位,这个信号的频率就是波特率,这个信号要由t1定时器给出,8052可以用t1或t2给出 smod是一个倍数,为1时波特率加倍,取0取1都可以,按对应公式计算t1溢出率就行了,一般为了得到最大的波特率都取1

方式 0 :这种工作方式比较特殊,与常见的微型计算机的串行口不同,它又叫同步移位寄存器输出方式.在这种方式下,数据从 RXD 端串行输出或输入,同步信号从 TXD 端输出,波特率固定不变,为振荡率的 1/12 .该方式是以 8 位数据为一

网站首页 | 网站地图
All rights reserved Powered by www.ddgw.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com