“两个单片机开发板b系统a、b之间通过rs232进行数据传输,a传输一个字节给b,b将字节回

1、单片机串口通信的应用

2、PC控制单片机IO口输出

3、单片机控制实训指导及综合应用实例

4、单片机给计算机发送数据:

单片机串口通信的应用,通过串口,我们的个人电脑和单片机系统进行通信。

个人电脑作为上位机,向下位机单片机系统发送十六进制或者ASCLL码,单片机

系统接收后,用LED显示接收到的数据和向上位机发回原样数据。

RS-232是美国电子工业协会正式公布的串行总线标准,也是目前最常用的串

行接口标准,用来实现计算机与计算机之间、计算机与外设之间的数据通讯。

RS-232串行接口总线适用于:设备之间的通讯距离不大于15m,传输速率最大为

根线,采用标准的25芯插头座。我们在 这里使用的是简化的9芯插头座。

注意我们在这里使用的晶振是11.0592M的,而不是12M。因为波特率的设置

“串口调试助手V2.1.exe” 软件的使用很简单,只要将串口选择‘CMO1’波

特率设置为‘9600’ 数据位为 8 位。打开串口(如果关闭)。然后在发送区里

输入要发送的数据,单击手动发送就将数据发送出去了。注意,如果选中‘十六

进制发送’那么发送的数据是十六进制的,必须输入两位数据。如果没有选中,

则发送的是ASCLL码,那么单片机控制的数码管将显示ASCLL码值。

/////主程序功能:实现接收数据并把接收到的数据原样发送回去///////

SBUF = dat; //在原样把数据发送回去(接收数据为发送数据的ASCII码,如发送q显示为113)

///这一个例子是以扫描的方式编写的,还可以以中断的方式编写,请大家思考//////

[实验任务]PC控制单片机IO口输出

/////主程序功能:实现接收数据并把接收到的数据原样发送回去///////

SBUF = dat; //在原样把数据发送回去(接收数据为发送数据的ASCII码,如发送q显示为113)

[实验任务]单片机控制实训指导及综合应用实例

单片机给计算机发送数据:

/////主程序功能:实现接收数据并把接收到的数据原样发送回去///////

SBUF =dat; //在原样把数据发送回去(接收数据为发送数据的ASCII码,如发送q显示为113)

版权声明:本文为博主原创文章,未经博主允许不得转载。 /k/article/details/

      串口也叫UART,有时叫USART(应该写成U(S/A)RT,但是略显累赘),U是通用,A是异步,S是同步,所以,UART跟USRT区别在于有无同步时钟,所以有的串口会有三根线(地线除外)。为了避免混淆,以下均使用RS232,而不使用串口。

      RS232发送是靠TXD和GND之间的电压来传数据(接收跟发送雷同),是共模电压,抗干扰能力差,导致传输距离非常有限。

1、奇偶校验的校验能力太差。

2、传错一个数据,没法重传。

3、在总线上挂了几个从机,主机如何区分是哪台从机发出的数据(有的设备不能把校验位当地址位用)。

4、如果没有成功发送停止位,那么接收端会不会一直等待。

5、总线上传错了一组数据,没法定位是哪个地方(哪个位)出问题。

      鉴于以上诸多问题,我们想到了一种解决办法,就是封装成帧。一帧数据包含多个byte,而一个byte的数据包含多个bit(起始位、数据位等)。

根据实际需求自定义协议。下面举个例子(非通用协议/准则),并以“域”来表示协议里面各个功能模块。

a、通过检测0和1之间的时间间隔,即可知道该帧数据的波特率。

b、如果设为0xff,那么,在总线上出现一个干扰,接收端很有可能误以为要接收数据。

      地址域,也可以随意一点,如果所有设备的地址均不相同,那就只具备点对点的功能。

      当然,你也可以视实际情况,把某几台设备的地址设为一样,这样就有点对多点的功能。

     如果接收端,收到一帧数据,经过CRC校验,数据正确,这时得传一帧简易的应答帧,以告诉主机,这个帧接收成功。

     如果接收端,收到一帧数据,经过CRC校验,发现数据有错,这时得传一帧简易的重传帧,以请求重传。

四、适用于FPGA的帧。

      这一招,也能用在传输图像,比如把一帧480*320的图像传到另一台设备上,就用上述方法把每一行封装成帧,这样,能在接收端解帧,就能还原出图像了。

      当然,你还可以加上行数和列数,插在一帧数据里面,方面接收端解帧,这些都视实际需求而定。

      这时一定要注意缓冲器的大小,缓冲器会不会溢出,如果溢出,数据可能会出错(不要以为你一直发数据,接收端就一定能收到)。

    不管是RS232、I2C、SPI,一般是以byte为单位,传输数据的。如果你想把12位的ADC数据,通过串口发到PC机,那么,你得分成两个byte,高位补零。(要考虑代码的可重用性)

      这也说明了,传输数据的可靠性,不能过于依赖物理层,而应该依赖协议上的一些机制(校验、重传等)。

我要回帖

更多关于 单片机开发板b 的文章

 

随机推荐