当前位置:文档之家› PC机串口与多个单片机红外无线通信的实现

PC机串口与多个单片机红外无线通信的实现

PC机串口与多个单片机红外无线通信的实现
PC机串口与多个单片机红外无线通信的实现

《工业控制计算机》!""#年$%卷第%期&’机串口与多个单片机红外无线通信的实现

周文举山东枣庄师专计算机系

(!%%$(")&’机与一台或多台单片机的通信系统中的数据通讯一般

采用的是串行通信方式。串行通信可采用有线与无线两种方式,作者根据单片机串行通信原理、脉冲编码调制)&’*+技术和红外无线通信技术,开发设计了单片机编解码红外无线通信接口。用该接口构成的多机通信系统,由于采用红外线为传输介质,而不是电缆线和电磁波,所以特别适用于那些不适合或不方便架设电缆线及电磁干扰较强的工作环境。本文就利用红外技术实现&’机与多台单片机无线串行通信的实现作一介绍。

!多机通信原理

在多机数据通信系统中,&’机与单片机之间的数据通信采

用一对多的主从模式,利用波长为,#"!-的远红外波通信。其原理示意图如图$。主机为&’机,从机选择*’./0$系列单片机,在&’机上用12345675328(9"编制一个主程序,负责发送从机地址、控制命令和从站之间的信息传输及调度,从站则负责收集现场信息,进行一定的数据处理,根据主站的要求返回数据,并执行主站发出的命令。主站&’机与从站之间的信息交换是通过*.’:--控件来实现。在采用主从式多机串行通信系统中,从机不主动发送命令或数据,一切都由主机控制。并且在一个多机通信系统中,只有一台&’机作为主机,各从机之间不能直接相互通讯,即使有信息交换也必须通过主机转发。由于发送和接收共用同一物理信道因此在任意时刻只允许一台从机处于发送状态,其余的从机不能发送。只有被主机呼叫的从机才能占用总线,

对主机做出应答。

图$&’机与一单片机串行通信

每台从机均分配有一个唯一的从机地址,主机与从机通信时,主机先呼叫某从机地址,唤醒被叫从机后,主、从两机之间进行数据交换,而未被呼叫的从机则继续进行各自的工作。主机发送的信息可以传到多个从机或指定的从机,各从机发送的信息只能被主机接收。单片机通过对多机通信控制位.*!进行置位和复位来控制正确接收地址和数据信号,在返回数据时通过设

;7<为"或$来区别返回的是数据还是地址。只有正确地完成

了接收和发送任务,才能触发有效的;=,>=信号,进而完成下一步的通信。接收时,检测>=是否建立起来,当>=为高电平,表示接收完毕。发送时,检测;=是否建立起来,当;=为高电平时说明

发送已经完成。而在主机上也要设立相应的多机通信机制,这一任务是通过改变*.’:--控件的.?@@2AB 属性中的奇偶校验位来实现的。发送和接收地址时置奇偶校验位为*,则主机在发送地址过程中发送的第,位;7<为$,而在接收地址时,只有接收到的第,位>7<为$时才能引起’:--CD?A@属性的变化,从而触发EA’:--事件;发送和接收数据时,置该位为.。则主机在发送数据过程中发送的第,位;7<为",而在接收数据时,只有接收到的第,位>7<为"时才能引起’:--CD?A@属性的变化,从而触发EA’:--事件。

在本设计中主机微机发送字符与接受字符均采用查询方式,发送前先读取通信或状态寄存器,查询发送保持寄存器空否?接收前先读取通信或状态寄存器,查询一帧数据收完否?从机采用中断方式,即接收到地址帧后就进行串行口中断申请,’&F 响应后,

进入中断服务程序。在通信协议中规定:"单片机以方式G 进行通信,一帧数据的第,位为“$”,代表地址帧,为“"”,代表数据帧。#设定通信波特率为,(""HI3;$地址帧为"$JKLLJ 代表!00台从机地址。%""J 是以地址帧形式发送的一条对所有从机起作用的控制命令,命令各从机恢复.*!M$,等待接收状态。

为了实现多机通信,所有发射电路的振荡频率和所有的接收电路的振荡频率都必须调整一致,为保证正常通信,防止自己发自己接,数据传送方向必须为半双工传送,收发器在发射时,必须屏蔽自己的接收中断,发射结束后再开放中断。

多机通信过程为:

$)主机*.’:--的属性.?@@2AB3M “,("",*,<,$”,所有从机的.*!M$,处于地址帧接收状态。

!)

主机发送一帧地址信息,其中包含<位地址,第,位为“$”,与所需的从机进行联络。

G )

从机接收到地址信息后,各自将其与自己的地址相比较;对于地址相符的从机使>=M",;7

.*!M",;=M$,

以等待接收主机随后发来的所有信息;对于地址不相符的从机仍保持.*!M$状态,对主机随后发来的数据不理睬直至发送新的一帧地址信息。

#)主机接收到地址后修改*.’:--的属性.?@@2AB3M

“,("",.,<,$”

,然后进行地址校对,若地址校对通过,说明从机已经联络上,发送进一步的通信控制命令信号;地址校对出错,说明从机没有联络上,发送结束本次通信命令,修改*.’:--

"#$%&’(%

;N23I5I?O P?38O2H?35A?Q -?@N:P @:O?562R?@N?-53@?O 365D?-:P?8:--4A285@2:A @NO:4BN 3?O256I:O@3H?@Q??A &’5AP *46@2-28O:8N2I3HS 432AB 2ATO5O?P9’2O842@UIO:@:8:6UT6:Q 8N5O@5AP I5O@3:4O8?8:P?3:T 17(9"5AP *’.0$5O?563:IO?V 3?A@?P T:O 3?O2568:--4A285@2AB9

)*+,-&.$W2ATO5O?PU&’-28O:8N2IU-53@?O 5AP 365D?UQ2O?6?333?O2568:--4A285@2AB

摘要

本文介绍了用红外线实现上位&’机和多个单片机间的无线串行通信的新方法,给出了硬件线路图、通信协议和程序流程图及用17(9"和*’.0$汇编语言编写的部分串行通信程序。

关键词:红外线,&’机,

单片机,主从式,无线串行通信!,

!"机串口与多个单片机红外无线通信的实现

的属性#$%%&’()

“*+,,,

-,.,/”。主机向被寻址的从机发送控制指令与数据,一帧数据的第*位为“,”,表示发送的是数据或控制指令。

0)被叫从机接收到命令后进行命令分析,若为结束通信的命令,则立即置#-1)/,结束本次通信,等待下一次通信,否则执行相应的动作,对于要求返回信息的命令,置23.),,返回正确的响应信息后置#-1)/,恢复其只接收地址帧数据状态。

+)

主机接收结束通信命令的返回信息后修改-#"455的属性#$%%&’()“*+,,,-,.,/”,准备进行下一轮的通信。!硬件构成

主要包括红外发射电路和红外接收电路两部分:(/)红外发射电路

在红外数据传输的信号调制方式上,采用脉冲调制的二进制不归零码。这种调制方式比较简单,编码解码都比较方便,有利于电路简化。红外发射电路如图1所示。

图1红外发射电路

由600789的晶振":;,反相器<68",6及电阻、电容构成的振荡器产生600789的方波信号。经脉冲分频器<6=#*1,六分频成为<0>.?789的脉冲信号。再经过@触发器构成的1分频A 整形电路变成?.789的方波信号。由单片机的异步串行口2B 输出的串行数据信号,

送到与非门<68",,的输入端。与非门的另一输入端接?.789的载波信号。与非门的输出信号用来控制三极管的开通或关断,从而控制红外发射管发送信息。这样就达到了用串行口2B 输出的串行数据信号直接调制载波,进行红外数据传输的目的。发射电路的调制采用的是时分制幅度键控调制方式。因单片机在复位后,2B@脚为高电平,为满足同步的要求,采用低电平同步脉冲,经与非门CD?E 后变成高电平同步脉冲。所以单片机2B@发送的编码应是反码。如图?所示F

图?串行信号幅度调制图

(1)红外接收电路

设计中采用一种高效能的红外接收器———德律风根

2G-#0?.,。德律风根所开发的微型接收器2G-#0?.,是近期

市场上最高效能的红外接收器。同一组件内已装上了接收二级管和前置放大器。2G-#0?.,特点:!单一的接收器和前置放大器的组合;"超敏感度和传送距离;#内置!"-频率过滤器;$无外置组件需要;%特强光及电场干扰屏蔽;&22=及"-H#兼容,适用于微处理器操作控制;’可选频率由?,789至

0+789;(低功耗;)I#H*,,,认可。2G-#0?.,适用于数据传

送、电视机、录像机、组合音响及卫星接收器等。2G-#0?.,的内部框图及构成的接收电路。如图6所示。

图62GJ#0?.,构成的接收电路图

该接收电路要求被接收的红外光波长在*0,*5左右,被调制信号的脉冲宽度不小于+,,*K 。2G-#0?.,的应用电路非常简单。实验证明,2G-#0?.,的性能良好,完全可以满足数据传输的需要。

"软件设计

串行通信软件包括主机软件和从机软件:(/)主机软件设计

该系统主机通信程序设计在J&’L4MK*.环境下采用

N3+>,通信控件C-#"455E 编程,-#"455控件具有功能完善

的串口数据发送和接收功能以及良好的人机界面。

-#"455控件中在本文需特别指出的属性是:

#$%%&’(属性:

设置或返回串口端口的波特率C3333E 、奇偶校验位C!E 、数据位C@E 、停止位C#E 。如:-#"455#$%%&’(K)“*+,,,O ,.,/”

。表示所使用的串口端口的位传输波特率为*+,,3&%A K ,无奇偶校验位,.位数字位,

一位停止位。其中O 的不同取值及其含义为:PQ 偶数CPR$’E 、-Q 标记C-STUE 、OQ 缺省C@$VSWX%EO4’$、HQ 奇数CHLLE 、#Q 空格C#YSZ$E 。-将第*位置/,#将第*位置,。利用这两个设置即可实现寻址指令与数据传送指令的分开。#$%%&’(K 设定完成之后,所送出及收回的字符串便以此为准,使用串行通讯的双方的#$%%&’(K 的设置必须完

全相同,这样才能保证通讯的顺利进行,否则通讯的双方将无法正确接收对方所传送过来的信号,也不能触发相应的处理事件。在本设计中就是巧妙地运用奇偶校验位上O 取不同的值时其含义不同来实现通讯中的多机通讯的。

使用-#"455控件编写的!"机到单片机通信程序框图如图0所示。

图0

主机程序流程图

主机串口初始化程序为:

!T&RS%$#W[G4T5\=4SLCE

-#"455>"455!4T%)/]选择"H-/口

-#"455>#$%%&’(K )^*+,,_O_._1^]波特率*+,,,无奇偶校验位,.位数字位,一位停止位

-#"455>I’3WVV$T#&‘$)10+]设定输入缓冲区大小

?,

《工业控制计算机》!""#年$%卷第%期

(上接第!"页)

!&’故障诊断

为了有效地提高控制系统的可靠性,系统设计实现了四级故障诊断机制。

第一级故障诊断:应用计算机的自检功能对计算机硬件进行初步诊断,如果自检失败,切离系统维修,如果自检成功,直接进入第二级。

第二级故障诊断:计算机操作系统本身具有一定故障诊断功能,可以初步检测和发现软硬件的各种错误,并可以修复部分软故障,如果发生不能修复故障且影响计算机正常功能运行时,则自动启动第三级故障诊断。

第三级故障诊断:这一级诊断在切换控制逻辑内完成,主要是根据计算机的工作状态信号(、),配合软件来判断计算机的工作正常和主从机状态,若是主机故障,则综合产生切换控制信号,双机切换,切离故障机马上维修;若是从机,马上切离维修。同时考虑到控制作用的特殊重要性,每台计算机的*+,输出都反馈到对方的,+*通道中,以此增加对*+,输出的故障诊断功能。

第四级故障诊断:利用力控实时数据库参数报警功能和力控-+.驱动程序的故障诊断功能,佐以事件记录,分别可以诊断出参数越限和-+.设备故障,便于操作人员查找故障、追忆事故、查询历史信息。

!&%系统初始化

为了保证软件的系统性和操作的便利性,将/011开发的容错控制程序和力控应用程序有机地集成在一起,并利用/011开发了开机自启动、最小化托盘、隐藏窗口、自动执行容错切换和启动力控应用程序等系统初始化程序。

!双机容错系统测试

根据图$的结构,构建完整的双机容错控制实验系统。采用两台联想2!3#4"商用机作为容错计算机;选用众人公司253!$!6多功能输入输出卡实现模拟量和开关量的输入输出;利用运算放大器搭建模拟对象;方波发生器产生周期为$’秒的方波作为参考输入信号;参考输入信号与对象实际输出之差作为切换控制逻辑的输入。软件安装完成后,对整个系统进行系统测试、功能测试、性能测试。系统测试包括多功能板卡测试和切换控制逻辑硬件的测试。功能测试包括容错切换、数据采集、实时控制、画面显示、报表打印、数据管理、故障诊断、系统初始化等功能的分项和总体测试。性能测试主要是对系统的双机切换时间、采样周期、数据刷新周期、动作执行周期等性能指标进行评价。

实验表明,该系统可靠实现容错控制功能,画面显示生动逼真,功能实现稳定可靠,维护扩充简单灵活,各项性能指标都达到了较好的预期效果,而且从控制性能上看,切换过程对被控对象输出未观察到任何影响,只是控制作用略有波动。

"结束语

本着设计低成本、高可靠性、管控一体化、易扩展的计算机控制系统的原则,本文将双机容错模式与组态软件相结合,通过硬件冗余容错、软件组态可靠设计、/0与力控结合、多级故障诊断,开发了基于力控组态环境的双机容错系统。实验验证了所设计系统的可行性和正确性。该系统结构简单、稳定可靠、功能多样、维护方便,具有较高的实用价值。

参考文献

$疏松桂&控制系统可靠性分析与综合&北京:科学出版社,$77!

!马国华&监控组态软件及其应用&北京:清华大学出版社,!""$

6王生铁,侯晓坤,董志学&双机容错系统切换控制逻辑的设计与实现&第十三届中国过程控制会议论文集3过程控制科学技术与应用,珠海,澳门&!""!

#王生铁,张计科等&力控组态环境下数据采集卡驱动程序的开发&内蒙古工业大学学报,!""6,!!($):4%8’$

[收稿日期:!""#&4&!#]

)509::&.;<=;>>?@5AB?C$"D设定输缓冲区大小

)509::&29@<.E?F C G@;?D打开0.)$口

)509::&5

)509::&L

MFK5;N

初始化通讯端口后就可以利用)509::控件的.FO 09::事件捕获发送、接收数据,及时处理。运行时常用属性有:.;>?@09;F<用来判断输入缓冲区内的字符数等。实用中为防止主机因接收不到从机应答而无限制地等待下去,还应在窗体中设置时钟控件,具体保护退出时间可根据实际调整。

(!)从机)054$串行通信程序设计

从机单片机程序采用)054$汇编语言编写。首先将串口初始化为方式!,波特率为7’""NEI。串行口信号输入采用中断方式,输出采用查询方式。从机程序因篇幅所限这里省略,中断程序流程图如图’所示。

"结束语

主从机的通信方式的实现,在通信波特率设置为7’""NEI 时,每秒钟可传送大约$P=字节,系统资源得到了合理的使用,通信效率很高。这一速度能够满足大多数工业数据处理和控制要求。而且主机在QAFK9RI环境下设计的窗口作为人机交互界面,通过可视化工具,用户可以灵活方便地使用系统提供的功能。本文提出的通讯协议能够在微机和多台单片机间安全地传送数据,该系统已经在微小机器人群控系统中投入应用,效果良好。

图’从机中断程序流程图

参考文献

$胡汉才&弹片原理及其接口技术&清华大学出版社,$77’

[收稿日期:!""#&!&!#]

!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

6$

C51单片机和电脑串口通信电路图

C51单片机和电脑串口通信电路图与源码 51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。 串口通讯的硬件电路如上图所示 在制作电路前我们先来看看要用的MAX232,这里我们不去具体讨论它,只要知道它是TTL和RS232电平相互转换的芯片和基本的引脚接线功能就行了。通常我会用两个小功率晶体管加少量的电路去替换MAX232,可以省一点,效果也不错,下图就是MAX232的基本接线图。

按图7-3加上MAX232就可以了。这大热天的拿烙铁焊焊,还真的是热气迫人来呀:P串口座用DB9的母头,这样就可以用买来的PC串口延长线进行和电脑相连接,也可以直接接到电脑com口上。

为了能够在电脑端看到单片机发出的数据,我们必须借助一个WINDOWS软件进行观察,这里我们利用一个免费的电脑串口调试软件。本串口软件在本网站https://www.doczj.com/doc/2c286602.html,可以找到 软件界面如上图,我们先要设置一下串口通讯的参数,将波特率调整为4800,勾选十六进制显示。串口选择为COM1,当然将网站提供的51单片机实验板的串口也要和电脑的COM1连接,将烧写有以下程序的单片机插入单片机实验板的万能插座中,并接通51单片机实验板的电源。

上位机与51单片机串口通信

上位机与51单片机串口通信 目录: 1、单片机串口通信的应用 2、PC控制单片机IO口输出 3、单片机控制实训指导及综合应用实例 4、单片机给计算机发送数据: [实验任务] 单片机串口通信的应用,通过串口,我们的个人电脑和单片机系统进行通信。 个人电脑作为上位机,向下位机单片机系统发送十六进制或者ASCLL码,单片机系统接收后,用LED显示接收到的数据和向上位机发回原样数据。 [硬件电路图] [实验原理] RS-232是美国电子工业协会正式公布的串行总线标准,也是目前最常用的串 行接口标准,用来实现计算机与计算机之间、计算机与外设之间的数据通讯。 RS-232串行接口总线适用于:设备之间的通讯距离不大于15m,传输速率最大为20kBps。RS-232协议以-5V-15V表示逻辑1;以+5V-15V 表示逻辑0。我们是用MAX232芯片将RS232电平转换为TTL电平的。一个完整的RS-232接口有22 根线,采用标准的25芯插头座。我们在这里使用的是简化的9芯插头座。 注意我们在这里使用的晶振是11.0592M的,而不是12M。因为波特率的设置 需要11.0592M的。 “串口调试助手V2.1.exe”软件的使用很简单,只要将串口选择‘CMO1’波 特率设置为‘9600’数据位为8 位。打开串口(如果关闭)。然后在发送区里 输入要发送的数据,单击手动发送就将数据发送出去了。注意,如果选中‘十六 进制发送’那么发送的数据是十六进制的,必须输入两位数据。如果没有选中, 则发送的是ASCLL码,那么单片机控制的数码管将显示ASCLL码值。

//参考源程序 #include "reg52.h" //包函8051 内部资源的定义 unsigned char dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容sbit gewei=P2^4; //个位选通定义

汇编语言实现串口通信(PC和单片机间)教学文案

8.用C语言或汇编语言实现串口通信(PC和单片机间) 上位机和下位机的主从工作方式为工业控制及自动控制系统所采用。由于PC 机分析能力强、处理速度更快及单片机使用灵活方便等特点,所以一般都将PC 机作为上位机,单片机作为下位机,二者通过RS-232或者RS-485接收、发送数据和传送指令。单片机可单独处理数据和控制任务,同时也将数据传送给PC机,由PC机对这些数据进行处理或显示 1 硬件电路的设计 MCS-51单片机有一个全双工的串行通讯口UART,利用其RXD和TXD与外界进行通信,其内部有2个物理上完全独立的接收、发送缓冲器SBUF,可同时发送和接收数据。所以单片机和PC机之间可以方便地进行串口通讯。单片机串口有3条引线:TXD(发送数据),RXD(接收数据)和GND(信号地)。因此在通信距离较短时可采用零MODEM方式,简单三连线结构。IBM-PC机有两个标准的RS-232串行口,其电平采用的是EIA电平,而MCS-51单片机的串行通信是由TXD(发送数据)和RXD(接收数据)来进行全双工通信的,它们的电平是TTL电平;为了PC机与MCS-51 机之间能可靠地进行串行通信,需要用电平转换芯片,可以采用MAXIM公司生产的专用芯片MAX232进行转换。电路如图1所示。硬件连接时,可从MAX232中的2路发送器和接收器中任选一路,只要注意发送与接收的引脚对应关系即可。接口电路如图3.5所示。

总体设计按照整体设计思路方案绘制原理图如下所示: 2 系统软件设计 软件设计分上位机软件设计和下位机软件设计。这两部分虽然在不同的机器上编写和运行,但它们要做的工作是对应的:一个发送,另一个接收。为了保证数据通信的可靠性,要制定通信协议,然后各自根据协议分别编制程序。现约定通信协议如下:PC机和单片机都可以发送和接收。上位机和下位机均采用查询方式发送控字符和数据、中断方式接收控制字符和数据。采用RS-232串口异步通信, 1上位PC机与下位单片机异步串行通信的通信协议

51单片机与PC机通信资料

《专业综合实习报告》 专业:电子信息工程 年级:2013级 指导教师: 学生:

目录 一:实验项目名称 二:前言 三:项目内容及要求 四:串口通信原理 五:设计思路 5.1虚拟串口的设置 5.2下位机电路和程序设计 5.3串口通信仿真 六:电路原理框图 七:相关硬件及配套软件 7.1 AT89C51器件简介 7.2 COMPIN简介 7.3 MAX232器件简介 7.4友善串口调试助手 7.5 虚拟串口软件Virtual Serial Port Driver 6.9八:程序设计 九:proteus仿真调试 十:总结 十一:参考文献 一:实验项目名称:

基于51单片机的单片机与PC机通信 二:前言 在国内外,以PC机作为上位机,单片机作为下位机的控制系统中,PC机通常以软件界面进行人机交互,以串行通信方式与单片机进行积极交互,而单片机系统根据被控对象配置相应的前向,后向信息通道,工作时作为主控机测对象,作为被控机接受PC机监督,指挥,定期或受命向上位机提供对象及本身的工作状态信息。 目前,随着集成电路集成度的增加,电子计算机向微型化和超微型化方向发展,微型计算机已成为导弹,智能机器人,人类宇宙和太空和太空奥妙复杂系统不可缺少的智能部件。在一些工业控制中,经常需要以多台单片机作为下位机执行对被控对象的直接控制,以一台PC机为上位机完成复杂的数据处理,组成一种以集中管理、分散控制为特点的集散控制系统。 为了提高系统管理的先进性和安全性,计算机工业自动控制和监测系统越来越多地采用集总分算系统。较为常见的形式是由一台做管理用的上位主计算机(主机)和一台直接参与控制检测的下位机(单片机)构成的主从式系统,主机和从机之间以通讯的方式来协调工作。主机的作用一是要向从机发送各种命令及参数:二是要及时收集、整理和分析从机发回的数据,供进一步的决策和报表。从机被动地接受、执行主机发来的命令,并且根据主机的要求向主机回传相应烦人实时数据,报告其运行状态。 用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充极为容易。MCS-51系列单片机,由于内部带有一个可用于异步通讯的全双工的穿行通讯接口,阴齿可以很方便的构成一个主从式系统。 串口是计算机上一种非常通用的设备通讯协议,大多数计算机包容两个基于RS232的串口。串口同时也是仪器仪表设备通过用的通讯协议,很多GPIB兼容的设备也带有RS-232口。同时串口通讯协议也可以用于获取远程采集设备数据。所以,深入的理解学习和研究串口通信相关知识是非常必要的。此次毕业设计选题为“PC机与MCS-51单片机的串口通讯”,使用51单片机来实现一个主从式

51单片机与PC串口通讯

目录 第1章需求分析 ............................................................................................................................ - 1 - 1.1课题名称 (1) 1.2任务 (1) 1.3要求 (1) 1.4设计思想 (1) 1.5课程设计环境 (1) 1.6设备运行环境 (2) 1.7我在本实验中完成的任务 (2) 第2章概要设计 ............................................................................................................................ - 2 - 2.1程序流程图 (2) 2.2设计方法及原理 (3) 第3章详细设计 ............................................................................................................................ - 3 - 3.1电路原理 (3) 3.1.1STC89C52芯片 ............................................................................................................. - 3 -3.2串口通信协议 (4) 3.3程序设计 (5) 3.3.1主程序模块 .................................................................................................................... - 5 - 3.3.2串口通讯模块 ................................................................................................................ - 6 - 3.3.3控制部分文件 ................................................................................................................ - 8 - 3.3.4公共部分模块 .............................................................................................................. - 11 -3.4电路搭建 (12) 3.4.1电路原理图 .................................................................................................................. - 12 -第4章上位机关键代码分析 ...................................................................................................... - 12 - 4.1打开串口操作 (12) 4.2后台线程处理串口程序 (15) 4.3程序运行界面 (18) 第5章课程设计总结与体会 ...................................................................................................... - 19 -第6章致谢 .................................................................................................................................. - 19 -参考文献........................................................................................................................................... - 19 -

51单片机串口通信异常的调试一例

51单片机串口通信异常的调试一例 单片机与DSP在硬件结构和程序编写方面存在很多共同之处,所以最近几周试着用了一下51单片机开发板,希望进一步熟悉中断的概念、串口通信、I2C协议、存储扩展等常用的知识。 在进行串口通信的实验时,预期功能不能实现。实验的设计方案是:通过上位机给单片机发送一个16bit的字符串,单片机对字符串进行接收并立刻回显给上位机,接收并回显完毕后依次将这些字符(只能是0-9,a-f这几个字符,可以重复)在数码管上进行显示。 程序编写完成后,通过上位机发送字符串9876543210abcdef,单片机串口接收并回显9876543210abcde,然后数码管依次显示f9876543210abcde,数码管显示完成后,单片机串口回显的字符串中的e后面又多了一个f。 对实验现象进行分析不难发现,串口的接收和回显功能正常,但是存在2个问题:1.串口接收并回显和数码管显示的时序有点混乱;2.数码管的显示出现异常,本应该依次显示9876543210abcdef,实际上显示的却是f9876543210abcde。 对源代码进行分析发现,时序混乱的原因是中断响应及中断返回的执行时序出现问题,修改代码后问题1被解决。 问题2的解决思路:源代码中,通过串口接收到的字符串被存储在一个一维数组array[16]中,该数组有16个元素,每个元素都是unsigned char型。在源代码中,先注释掉数码管显示的那一段代码,然后添加串口打印代码,串口打印实现的功能是依次显示array[0]到array[15]这16个元素的值。编译通过后,将程序烧写到单片机。使用串口调试助手,以十六进制的形式观察array[0]到array[15]的取值,结果如下:

第7章PIC单片机串行口及串行通信技术.pdf

第7章PIC18FXX2串行口及串行通信技术 ?教学目标 串行通信基本知识 串行口及应用 PIC18FXX2与PC机间通信软件的设计

本章知识点概要 ? 1.什么是串行通信,串行通信有什么优点? ? 2.串行通信协议 ? 3.什么是波特率? ? 4.PIC18FXX2中的串行口工作方式及应用 ? 5.PIC18FXX2点对点通信 ?针对PIC18FXX2串行口而言,概括为以下问题: 1、波特率设计,初始化SPBRG 2、设定通信协议(工作方式选择,SYNC) 3、如何启动PIC18FXX2接收、发送数据? 4、如何检查数据是否接收或发送完毕?

7.1 7.1 串行通信基本知识串行通信基本知识 ?在实际工作中,计算机的CPU 与外部设备之间常常要进行信息交换,一台计算机与其他计算机之间也要交换信息,所有这些信息交换均可称为通信。 ?通信方式有两种,即并行通信和串行通信。 ?采用哪种通信方式?----通常根据信息传送的距离决定例如,PC 机与外部设备(如打印机等)通信时,如果距离小于30 m ,可采用并行通信方式;当距离大于30 m 时,则要采用串行通信方式。PIC18FXX2单片机具有并行和串行二种基本通信方式。

并行通信 ?并行通信是指数据的各 位同时进行传送(发送 或接收)的通信方式。 ?优点:传送速度快; ?缺点:数据有多少位, 就需要多少根传送线。 ?例如,右图PIC18FXX2 单片机与外部设备之间 的数据传送就属于并行 通信。

串行通信 ?串行通信是指数据一位(bit)一位按顺序传送的通信方式。?优点:只需一对传输线(利用电话线就可作为传输线),大大降低了传送成本,特别适用于远距离通信; ?缺点:传送速度较低。假设并行传送N位数据所需时间为T,那么串行传送的时间至少为N*T,实际上总是大于N*T。 接收设备发送设备 D2 D1 D0 D3 D7 D6 D5 D4

基于单片机控制的蓝牙无线通信系统

基于单片机控制的蓝牙数据传输系统的设计 1 引言 蓝牙作为一种支持设备短距离通信的无线电技术,可以在众多设备之间进行无线信息交换。蓝牙技术设计一系列软硬件技术、方法和理论,包括:无线通信与网络技术,软件工程及软件可靠性理论,协议测试技术,规范描述语言,嵌入式实时操作系统,跨平台开发和用户界面图形化技术,软硬件接口技术,高集成芯片技术等[1]。由于蓝牙体积小,功耗低,其应用已经不再局限于计算机外设,几乎可以被集成在任何型号的数字设备中,特别是在那些对传输速率要求不高的小型移动设备和便携设备中应用广泛。随着现代化数字技术的发展,我们的生活中,各种设备与计算机之间的无线数据交换已经非常频繁,特别在工业现场控制和数据采集场合中,单片机与计算机的无线通信尤为突出。本文基于这一问题,提出了一种由单片机控制的蓝牙无线通信系统方案,主要是实现了由单片机控制蓝牙系统,与接入蓝牙网络的其他设备,如:移动电话、PDA、以及其他具有蓝牙功能的无线通信设备进行通信。 2 蓝牙协议栈概述 2.1 蓝牙技术的协议标准和协议规范 蓝牙无线通信的协议标准是由SIG制定的,它规定了蓝牙应用产品应遵循的标准和需要达到的要求。目前颁布的蓝牙规范有1.0、1.1、2.0、2.1等几个版本[2]。 蓝牙技术规范抱愧和信息一和应用框架两个部分。协议规范部分定义了蓝牙的各层同学那些以,应用框架指出了如何采用这些协议实现具体的应用产品。 协议栈由上至下可分为3个部分:传输协议、中介协议和应用协议。传输协议负责蓝牙设备间的相互位置确认,以及建立和管理蓝牙设备间的物理和逻辑链路,包括LMP、L2CAP、HCI;中介协议为高层应用协议或程序在蓝牙逻辑链路上工作提供了支持,为应用层提供了各种标准接口,包括:RFCOMM、SDP、IrDA、PPP、TCP/IP、UDP、TSC和AT指令集等;应用协议是指那些位于蓝牙协议栈之上的应用软甲和其中涉及的协议,包括开发驱动和其他蓝牙应用程序等。 2.2 蓝牙技术的核心协议 蓝牙技术的核心协议分为四个部分,如下: (1)基带协议(Baseband) 基带和链路控制层确保网络内部蓝牙设备单元之间由射频构成的物理连接。 (2)连接管理协议(LMP) 负责蓝牙网络内各设备之间连接的建立。 (3)逻辑链路控制和适配协议(L2CAP) 是一个为高层传输层和应用层协议屏蔽基带协议的适配协议,为高层应用传输提供了更加有效和更有利于实现的数据分组格式。 (4)服务发现协议(SDP) 发现服务在蓝牙技术框架中起到了至关重要的作用,它是所有用户模式的基础,是为实现网络中蓝牙设备之间相互查询及访问提供的服务。在蓝牙系统中,客户只有通过服务发现协议,才能获得设备信息、服务信息以及服务特征,从而在设备单元之间建立不同的SDP 层连接[3]。 2.3 HCI协议 HCI(Host Controller Interface)协议,即主机控制接口协议,属于蓝牙协议栈的

单片机和蓝牙模块无线传输的数据采集系统

单片机和蓝牙模块无线传输的数据采集系统

1.引言 蓝牙技术是近年来发展迅速的短距离无线通信技术,可以用来替代数字设备间短距离的有线电缆连接。利用蓝牙技术构建数据采集无线传输模块,与传统的电线或红外方式传输测控数据相比,在测控领域应用篮牙技术的优点主要有[1][2][3]: 1.采集测控现场数据遇到大量的电磁干扰,而蓝牙系统因采用了跳频扩频技术,故可以有效地提高数据传输的安全性和抗干扰能力。 2.无须铺设线缆,降低了环境改造成本,方便了数据采集人员的工作。 3.可以从各个角度进行测控数据的传输,可以实现多个测控仪器设备间的连网,便于进行集中监测与控制。 2.系统结构原理 本课题以单片机和蓝牙模块ROK 101 008为主,设计了基于蓝牙无线传输的数据采集系统,整个装置由前端数据采集、传送部分以及末端的数据接受部分组成(如PC机)。前端数据采集部分由位于现场的传感器、信号放 大电路、A/D转换器、单片机、存储器、串口通信等构成,传送部分主要利用自带微带天线的蓝牙模块进行数据的无线传输;末端通过蓝牙模块、串口通信传输将数据送到上位PC机进一步处理。整个系统结构框架图如图1所示。 AT89C51单片机作为下位机主机,传感器获得的信号经过放大后送入12位A/D转换器AD574A进行A/D 转换,然后将转换后的数据存储到RAM芯片6264中。下位机可以主动地或者在接收上位机通过蓝牙模块发送的传送数据指令后,将6264中存储的数据按照HCI-RS232传输协议进行数据定义, 通过MAX3232进行电平转换后送至蓝牙模块,由篮牙模块将数据传送到空间,同时上位机的蓝牙模块对此数据进行接收,再通过MAX3232电平转换后传送至PC 机,从而完成蓝牙无线数据的交换。

实验单片机与PC机串口通信

实验单片机与PC机串口通信(C51编程)实验 要求: 1、掌握串行口的控制与状态寄存器SCON 2、掌握特殊功能寄存器PCON 3、掌握串行口的工作方式及其设置 4、掌握串行口的波特率(bondrate)选择 任务: 1、实现PC机发送一个字符给单片机,单片机接收到后即在个位、十位数码管上进行显示,同时将其回发给PC机。要求:单片机收到PC机发来的信号后用串口中断方式处理,而单片机回发给PC机时用查询方式。 采用软件仿真的方式完成,用串口调试助手和KEIL C,或串口调试助手和PROTEUS分别仿真。 需要用到以下软件:KEIL,VSPDXP5(虚拟串口软件),串口调试助手,Proteus。 (1)虚拟串口软件、串口调试助手和KEIL C的联调 首先在KEIL里编译写好的程序。

打开VSPD,界面如下图所示:(注明:这个软件用来进行串口的虚拟实现。在其网站上可以下载,但使用期为2周)。 左边栏最上面的是电脑自带的物理串口。点右边的addpair,可以添加成对的串口。一对串口已经虚拟互联了,如果添加的是COM3、COM4,用COM3发送数据,COM4就可以接收数据,反过来也可以。 接下来的一步很关键。把KEIL和虚拟出来的串口绑定。现在把COM3和KEIL绑定。在KEIL中进入DEBUG模式。在最下面的COMMAND命令行,输入 modecom39600,0,8,1 %分别设置com3的波特率、奇偶校验 位、数据位、停止位 assigncom3sout %把单片机的串口和COM3绑定到一 起。因为所用的单片机是

(以上参数设置注意要和所编程序中设置一致!) 打开串口调试助手 可以看到虚拟出来的串口COM3、COM4,选择COM4,设置为波特率9600,无校验位、8位数据位,1位停止位(和COM3、程序里的设置一样)。打开COM4。 现在就可以开始调试串口发送接收程序了。可以通过KEIL发送数据,在串口调试助手中就可以显示出来。也可以通过串口调试助手发送数据,在KEIL中接收。 实验实现PC机发送一个字符给单片机,单片机接收到后将其回发给PC机。在调试助手上(模拟PC)发送数据,单片机收到后将收到的结果回送到调试助手上。 2、以下在Proteus和串口调试助手实现的结果: 将编译好的HEX程序加载到Proteus中,注意这里需要加上串口模块,用来进行串行通信参数的设置。 点击串口,可以对串口进行设置: 用串口调试助手发送数据,即可看到仿真结果。 实验参考程序源文件在exp2-comm文件夹中。

单片机串口通信的发送与接收(可编辑修改word版)

51 单片机的串口,是个全双工的串口,发送数据的同时,还可以接收数据。 当串行发送完毕后,将在标志位TI 置1,同样,当收到了数据后,也会在RI 置1。无 论RI 或TI 出现了1,只要串口中断处于开放状态,单片机都会进入串口中断处理程序。在中断程序中,要区分出来究竟是发送引起的中断,还是接收引起的中断,然后分别进行处理。 看到过一些书籍和文章,在串口收、发数据的处理方法上,很多人都有不妥之处。 接收数据时,基本上都是使用“中断方式”,这是正确合理的。 即:每当收到一个新数据,就在中断函数中,把RI 清零,并用一个变量,通知主函数, 收到了新数据。 发送数据时,很多的程序都是使用的“查询方式”,就是执行while(TI ==0); 这样的语句来 等待发送完毕。 这时,处理不好的话,就可能带来问题。 看了一些网友编写的程序,发现有如下几条容易出错: 1.有人在发送数据之前,先关闭了串口中断!等待发送完毕后,再打开串口中断。 这样,在发送数据的等待期间内,如果收到了数据,将不能进入中断函数,也就不会保存的这个新收到的数据。 这种处理方法,就会遗漏收到的数据。 2.有人在发送数据之前,并没有关闭串口中断,当TI = 1 时,是可以进入中断程序的。 但是,却在中断函数中,将TI 清零! 这样,在主函数中的while(TI ==0);,将永远等不到发送结束的标志。 3.还有人在中断程序中,并没有区分中断的来源,反而让发送引起的中断,执行了接收 中断的程序。 对此,做而论道发表自己常用的方法: 接收数据时,使用“中断方式”,清除RI 后,用一个变量通知主函数,收到新数据。 发送数据时,也用“中断方式”,清除TI 后,用另一个变量通知主函数,数据发送完毕。 这样一来,收、发两者基本一致,编写程序也很规范、易懂。 更重要的是,主函数中,不用在那儿死等发送完毕,可以有更多的时间查看其它的标志。 实例: 求一个PC 与单片机串口通信的程序,要求如下: 1、如果在电脑上发送以$开始的字符串,则将整个字符串原样返回(字符串长度不是固定的)。

51单片机串口通信及波特率设置

51单片机串口通信及波特率设置 MCS-51单片机具有一个全双工的串行通信接口,能同时进行发送和接收。它可以作为UART(通用异步接收和发送器)使用,也可以作为同步的移位寄存器使用。 1. 数据缓冲寄存器SBUF SBUF是可以直接寻址的专用寄存器。物理上,它对应着两个寄存器,即一个发送寄存器一个接收寄存器,CPU写SBUF就是修改发送寄存器;读SBUF就是读接收寄存器。接收器是双缓冲的,以避免在接收下一帧数据之前,CPU未能及时的响应接收器的中断,没有把上一帧的数据读走而产生两帧数据重叠的问题。对于发送器,为了保持最大的传输速率,一般不需要双缓冲,因为发送时CPU是主动的,不会产生重叠问题。 2. 状态控制寄存器SCON SCON是一个逐位定义的8位寄存器,用于控制串行通信的方式选择、接收和发送,指示串口的状态,SCON即可以字节寻址也可以位寻址,字节地址98H,地址位为98H~9FH。它的各个位定义如下: MSB LSB SM0 SM1 SM2 REN TB8 RB8 TI RI SM0和SM1是串口的工作方式选择位,2个选择位对应4种工作方式,如下表,其中Fosc是振荡器的频率。 SM0 SM1 工作方式功能波特率 0 0 0 8位同步移位寄存器Fosc/12 0 1 1 10位UART 可变 1 0 2 11位UART Fosc/64或Fosc/32 1 1 3 11位UART 可变 SM2在工作方式2和3中是多机通信的使能位。在工作方式0中,SM2必须为0。在工作方式1中,若SM2=1且没有接收到有效的停止位,则接收中断标志位RI不会被激活。在工作方式2和3中若SM2=1且接收到的第9位数据(RB8)为0,则接收中断标志RB8不会被激活,若接收到的第9位数据(RB8)为1,则RI置位。此功能可用于多处理机通信。 REN为允许串行接收位,由软件置位或清除。置位时允许串行接收,清除时禁止串行接收。 TB8是工作方式2和3要发送的第9位数据。在许多通信协议中该位是奇偶位,可以按需要由软件置位或清除。在多处理机通信中,该位用于表示是地址帧还是数据帧。 RB8是工作方式2和3中接收到的第9位数据(例如是奇偶位或者地址/数据标识位),在工作方式1中若SM2=0,则RB8是已接收的停止位。在工作方式0中RB8不使用。 TI 为发送中断标志位,由硬件置位,软件清除。工作方式0中在发送第8位末尾由硬件置位;在其他工作方式时,在发送停止位开始时由硬件置位。TI=1时,申请中断。CPU 响应中断后,发送下一帧数据。在任何工作方式中都必须由软件清除TI。 RI为接收中断标志位,由硬件置位,软件清除。工作方式0中在接收第8位末尾由硬件置位;在其他工作方式时,在接收停止位的中间由硬件置位。RI=1时,申请中断,要求CPU取走数据。但在工作方式1中,SM2=1且未接收到有效的停止位时,不会对RI置位。在任何工作方式中都必须由软件清除RI。 系统复位时,SCON的所有位都被清除。 控制寄存器PCON也是一个逐位定义的8位寄存器,目前仅仅有几位有定义,如下所示:MSB LSB

基于单片机的红外无线控制

中国矿业大学徐海学院 技能考核培训 姓名:陈思彤学号: 22110838 专业:信息11-2班 题目:基于单片机的红外无线控制 专题:音乐播放器 指导教师:有鹏老师翟晓东老师 设计地点:电工电子实验室 时间: 2014 年 4 月

通信系统综合设计训练任务书 学生姓名陈思彤专业年级信息11-2班学号22110838 设计日期:2014年4 月5日至2014 年4 月10 日 设计题目: 基于单片机的红外无线控制 设计专题题目: 音乐播放器 设计主要内容和要求: 1. 主要内容: 单片机内部结构 红外遥控解码 C语言程序设 2. 功能扩展要求 实现音乐播放器的功能 指导教师签字:

摘要:近年来随着计算机在社会领域的渗透, 单片机的应用正在不断地走向深入。红外线技术也被广泛应用于各个电子领域,先设计一种基于单片机的红外遥控的简易音乐播放器。通信蜂鸣器来发声,来完成音乐播放器的功能。该系统可实现对音乐播放的远距离遥控,且结构简单,速度快,抗干扰能力强。通过本次课程设计,我对单片机中断系统等知识有了进一步的了解,对单片机的相关知识做到理论联系实际。 关键词:单片机,中断系统,红外遥控,音乐播放

目录 1 绪论 (4) 1.1概述 (4) 1.2功能 (4) 2 硬件电路 (5) 2.1总体设计方 (5) 2.2单片机最小系统 (5) 2.3红外遥控收发电路 (5) 2.3.1 红外遥控发射电路 (6) 2.3.2 红外遥控接收电路 (7) 2.4蜂鸣器电路 (7) 2.5 LED指示灯电路 (8) 3软件编程 (9) 3.1 C语言实现系统设计 (9) 3.2乐谱的改编 (10) 参考文献 (11) 附录 (12)

基于单片机Wifi无线通信方案-Demo(参考模板)

基于单片机Wifi无线通信方案第一部分:功能介绍 通过手机发送指令控制LED亮与灭 单片机原理图 第二部分:硬件接法 1.连接实验相关模块连线 如图:

JP10(P0)接J12 J21跳线帽接左边 A→ P22 B→P23 C→P24 J10与J12相连接(即是P0口控制LED) 单片机与ESP8266连接:由于单片机的串口通常配置成9600,而ESP8266初始的波特率为115200,所以先用PC通过PL2303去配置ESP8266模块的波特率为9600

ESP8266图示PL2303图示 PC与ESP8266通过PL2303连接 PL2303绿线-----------ESP8266的URXD脚 PL2303白线-----------ESP8266的UTXD 脚 注意:用PC机上的串口助手测试时,由于ESP8266的电源是3.3V,所以先要把开发板的电源配置成3.3V ,如下图J-PWR,跳线冒连接3.3V。PL2303 的电源(红线)不接!ESP8266引脚的VCC和CH_PD连接开发板JPWR的vcc两个脚,ESP8266的地与PL2306的地连接开发板JPWR的GND两个脚(共地)!!!!!!

在PC上打开软件sscom42.exe,界面如下: 注意:发送新行选择上,波特率默认为115200,8,1,None 串口号选择PL2303的COM口(查看设备管理器) 打开串口即可测试(软件的发送新行要打勾) 第一步:配置波特率 然后在字符串输入框中输入:AT+UART=9600,8,1,0,0 发送给ESP8266 ,若返回OK,表示成功(注意最后一位不要选择流控) 第二步:ESP8266配置AP的SSID和密码 然后在字符串输入框中输入:AT+CWSAP="ESP8266-gigi","1234567890",5,3 注意:操作第二步时,要把串口软件的波特率设置成9600。

单片机串口通信C程序及应用实例

一、程序代码 #include//该头文件可到https://www.doczj.com/doc/2c286602.html,网站下载#define uint unsigned int #define uchar unsigned char uchar indata[4]; uchar outdata[4]; uchar flag; static uchar temp1,temp2,temp3,temp; static uchar R_counter,T_counter; void system_initial(void); void initial_comm(void); void delay(uchar x); void uart_send(void); void read_Instatus(void); serial_contral(void); void main() { system_initial(); initial_comm(); while(1) { if(flag==1) { ES = 0; serial_contral(); ES = 1; flag = 0; } else read_Instatus(); } } void uart_send(void) { for(T_counter=0;T_counter<4;T_counter++) { SBUF = outdata[T_counter]; while(TI == 0);

TI = 0; } T_counter = 0; } uart_receive(void) interrupt 4 { if(RI) { RI = 0; indata[R_counter] = SBUF; R_counter++; if(R_counter>=4) { R_counter = 0; flag = 1; } } } void system_initial(void) { P1M1 = 0x00; P1M0 = 0xff; P1 = 0xff; //初始化为全部关闭 temp3 = 0x3f;//初始化temp3的值与六路输出的初始值保持一致 temp = 0xf0; R_counter = 0; T_counter = 0; } void initial_comm(void) { SCON = 0x50; //设定串行口工作方式:mode 1 ; 8-bit UART,enable ucvr TMOD = 0x21; //TIMER 1;mode 2 ;8-Bit Reload PCON = 0x80; //波特率不加倍SMOD = 1 TH1 = 0xfa; //baud: 9600;fosc = 11.0596 IE = 0x90; // enable serial interrupt TR1 = 1; // timer 1 RI = 0; TI = 0; ES = 1; EA = 1; }

单片机串口通信

单片机串口通信 关键词:单片机,串口通信 单片机应用中,串口通信是不可缺少的部分。如何编写有效的串口通信程序对程序的结构、可靠性都有很大的影响。串口控制程序一般分为查询和中断两者方式。查询方式适用于简单的应用,简单可靠,但是缺点是需要占用处理器资源,在发送或者接收数据的时候不能做其它的事情,处理器利用率低。中断方式下,在发送或者接受数据的时候处理器还可以做其它的工作,效率较高。 对于稍微复杂的系统来说,中断方式管理串口程序将会更加有效。中断处理方式也可分为几种,其中采用循环缓冲区的方式比较高效。循环缓冲区为定义的一定长度的RAM区间,对于接受数据来说,中断中收到的数据将存入RAM中,然后等待主程序来读取。其中会涉及到数据见的协调问题,写数据的时候不能把还没有读取的数据覆盖掉,读数据的时候应该读取的是缓冲区中最老的数据。当缓冲区已满的时候,写入的新数据应该覆盖掉最老的数据。这些问题的处理可以使用两个指针来实现。

初始化时两个指针均指向RAM区间的底部,如图1所示。当中断中接收到一个数据的时候,将这个数据写入写指针WPTR指向的存储单元,然后调整写指针指向下一个空余的RAM区间,程序上处理就是把写指针加一,如图2所示。同理,写入N个数据后写指针同步更新,如图3所示。 当读数据的时候,首先判断缓冲区中是否有数据,方法是判断读指针和写指针是否相等,如果相等表明没有数据,如图5所示。如果读指针和写指针不等,那么读取缓冲区中的数据,然后调整读指针,当写指针和读指针相等的时候,表明缓冲区中的有效数据已经读取完,此时读指针和写指针相等。

当有数据再次写入的时候,继续紧接着上次写入的地址后写入新的数据,如果数据长度超过缓冲区的长度,写指针重新返回缓冲区的底部重新开始(这是循环缓冲的由来),如图6所示。此时如果有数据读出,读指针做同样的更新。如果没有数据读出,一直有数据写入,可能会出现缓冲区写满的情况,如图7所示。此时如果仍然没有数据读取,继续有数据写入的时候,为了保留新的数据,必须丢弃老的数据,即写指针可能超过读指针,此时,读指针必须和谐指针同步更新,这样才能保证读取的是没有被覆盖的最老的数据,如图8所示。 需要注意的是,读指针在中断过程中也可能被更改,因此,读数据的子程序需要对读指针的更改进行保护,方法是在读数据的时候关闭串行口中断。下面是循环缓冲区接收数据的程序实例。 FT, 尽然连文本都不能上传,代码只好贴出来吧。 /* * FileName: uart.h * Description: header file for SerialPort * Author: SangWei, HUST-CEEE-2004 * Contact: swkyer@https://www.doczj.com/doc/2c286602.html,, swkyer@https://www.doczj.com/doc/2c286602.html,

基于单片机Wifi无线通信方案-Demo

基于单片机W i f i无线通信方案第一部分:功能介绍 通过手机发送指令控制LED亮与灭 单片机原理图 第二部分:硬件接法 1.连接实验相关模块连线 如图: JP10(P0)接J12 J21跳线帽接左边 A? P22 B?P23 C?P24 J10与J12相连接(即是P0口控制LED) 单片机与ESP8266连接:由于单片机的串口通常配置成9600,而ESP8266初始的波特率为115200,所以先用PC通过PL2303去配置ESP8266

模块的波特率为9600 ESP8266图示 PL2303图示PC与ESP8266通过PL2303连接 PL2303绿线-----------ESP8266的URXD脚

PL2303白线-----------ESP8266的UTXD 脚 注意:用PC机上的串口助手测试时,由于ESP8266的电源是,所以先要把开发板的电源配置成 ,如下图J-PWR,跳线冒连接。PL2303 的电源(红线)不接!ESP8266引脚的VCC和CH_PD连接开发板JPWR的vcc两个脚,ESP8266的地与PL2306的地连接开发板JPWR的GND两个脚(共地)!!!!!! 在PC上打开软件,界面如下: 注意:发送新行选择上,波特率默认为115200,8,1,None 串口号选择PL2303的COM口(查看设备管理器) 打开串口即可测试(软件的发送新行要打勾) 第一步:配置波特率 然后在字符串输入框中输入:AT+UART=9600,8,1,0,0 发送给ESP8266 ,若返回OK,表示成功(注意最后一位不要选择流控) 第二步:ESP8266配置AP的SSID和密码 然后在字符串输入框中输入:AT+CWSAP="ESP8266-gigi 注意:操作第二步时,要把串口软件的波特率设置成9600。

PC机与单片机232通信协议

PC 机与单片机通信(RS232 协议) 目录: 1、单片机串口通信的应用 2、PC控制单片机IO口输出 3、单片机控制实训指导及综合应用实例 4、单片机给计算机发送数据: [实验任务] 单片机串口通信的应用,通过串口,我们的个人电脑和单片机系统进行通信。 个人电脑作为上位机,向下位机单片机系统发送十六进制或者ASCLL码,单片机系统接收后,用LED显示接收到的数据和向上位机发回原样数据。 [硬件电路图] [实验原理] RS-232是美国电子工业协会正式公布的串行总线标准,也是目前最常用的串 行接口标准,用来实现计算机与计算机之间、计算机与外设之间的数据通讯。 RS-232串行接口总线适用于:设备之间的通讯距离不大于15m,传输速率最大为20kBps。RS-232协议以-5V-15V表示逻辑1;以+5V-15V 表示逻辑0。我们是用MAX232芯片将RS232电平转换为TTL电平的。一个完整的RS-232接口有22 根线,采用标准的25芯插头座。我们在这里使用的是简化的9芯插头座。 注意我们在这里使用的晶振是11.0592M的,而不是12M。因为波特率的设置 需要11.0592M的。 “串口调试助手V2.1.exe”软件的使用很简单,只要将串口选择‘CMO1’波 特率设置为‘9600’数据位为8 位。打开串口(如果关闭)。然后在发送区里 输入要发送的数据,单击手动发送就将数据发送出去了。注意,如果选中‘十六

进制发送’那么发送的数据是十六进制的,必须输入两位数据。如果没有选中,则发送的是ASCLL码,那么单片机控制的数码管将显示ASCLL码值。

[C语言源程序] #include "reg52.h" //包函8051 内部资源的定义 unsigned char dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容 sbit gewei=P2^4; //个位选通定义 sbit shiwei=P2^5; //十位选通定义 sbit baiwei=P2^6; //百位选通定义 unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,}; //1~10 void Delay(unsigned int tc) //延时程序 { while( tc != 0 ) {unsigned int i; for(i=0; i<100; i++); tc--;} } void LED() //LED显示接收到的数据(十进制) { gewei=0; P0=table[dat%10]; Delay(10); gewei=1; shiwei=0; P0=table[dat/10]; Delay(10); shiwei=1; baiwei=0; P0=table[dat/100]; Delay(10); baiwei=1; } ///////功能:串口初始化,波特率9600,方式1///////// void Init_Com(void) { TMOD = 0x20; PCON = 0x00; SCON = 0x50; TH1 = 0xFd; TL1 = 0xFd; TR1 = 1; } /////主程序功能:实现接收数据并把接收到的数据原样发送回去/////// void main() { Init_Com();//串口初始化 while(1) { if ( RI ) //扫描判断是否接收到数据, { dat = SBUF; //接收数据SBUF赋与dat RI=0; //RI 清零。

相关主题
文本预览
相关文档 最新文档