Arduino串口数据采集器求助

拒绝访问 | www.ggdoc.com | 百度云加速
请打开cookies.
此网站 (www.ggdoc.com) 的管理员禁止了您的访问。原因是您的访问包含了非浏览器特征(42f39a-ua98).
重新安装浏览器,或使用别的浏览器Arduino学习笔记之 Arduino的串口输出
在许多实际应用场合中我们会要求在Arduino和其它设备之间实现相互通信,而最常见通常也是最简单的办法就是使用串行通信。在串行通信中,两个设备之间一个接一个地来回发送数字脉冲,它们之间必须严格遵循相应的协议以保证通信的正确性。
在PC机上上最常见的串行通信协议是RS-232串行协议,而在各种微控制器(单片机)上采用的则是TTL串行协议。由于这两者的电平有很大的不同,因此在实现PC机和微控制器的通信时,必须进行相应的转换。完成RS-232电平和TTL电平之间的转换一般采用专用芯片,如MAX232等,但在 Arduino上是用相应的电平转换电路来完成的。
根据Arduino的原理图我们不难看出,ATmega的RX和TX引脚一方面直接接到了数字I/O端口的0号和1号管脚,另一方面又通过电平转换电路接到了串口的母头上。因此,当我们需要用Arduino与PC机通信时,可以用串口线将两者连接起来;当我们需要用 Arduino与微控制器(如另一块Arduino)通信时,则可以用数字I/O端口的0号和1号管脚。
串行通信的难点在于参数的设置,如波特率、数据位、停止位等,在Arduino语言可以使用Serial.begin()函数来简化这一任务。为了实现数据的发送,Arduino则提供了Serial.print()和Serial.println()两个函数,它们的区别在于后者会在请求发送的数 据后面加上换行符,以提高输出结果的可读性。
在这一实验中没有用到额外的电路, 我们只需要用串口线将Arduino和PC机连起来就可以了,相应的代码为:
void setup() {
Serial.begin(9600);}void loop() {
Serial.println("Hello World!");
delay(1000);}
在将工程下载到Arduino模块中之后,在Arduino集成开发环境的工具栏中单击“Serial Monitor”控制,打开串口监视器:
接着将波特率设置为9600,即保持与工程中的设置相一致:
如果一切正常,此时我们就可以在Arduino集成开发环境的Console窗口中看到串口上输出的数据了:
为了检查串口上是否有数据发送,一个比较简单的办法是在数字I/O端口的1号管脚(TX)和5V电源之间接一个发光二极管,如下面的原理图所示:
这样一旦Arduino在通过串口向PC机发送数据时,相应的发光二极管就会闪烁,实际应用中这是一个非常方便的调试手段;-)
好消息!飞凡嵌入式成立的飞凡创客联盟火热招募中!!只有您有创业的激情,只要您有创业的梦想!都可以参与进来,我们给您提供一个展示自我的平台,在这里您会交到更多的朋友,了解更多的未知领域。激情点燃梦想,青春构筑未来!飞凡创客联盟QQ:火热招募中!!
没有更多推荐了,
加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!& 串口通信(Serial Communications)的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。
& &&进行串行通信,一般应该有两个计算机,两个程序,利用一条串行通信电缆,互相&全双工&的传送信息。
& &利用 PROTEUS 软件,做串行通信实验会很方便,Proteus仿真可以把一个或者两台计算机的硬件功能仿真出来,除了一台PC机运行仿真软件,不用任何其它硬件投入了,就可以进行RS232协议下的通讯实验。
二、Proteus界面中的虚拟终端与Arduino单片机之间串行通讯的仿真方法
& & &PROTEUS 软件中,含有多种虚拟仪器,其中有一个称为&虚拟终端&设备,这个设备可以和Arduino单片机进行全双工的通信。这个&虚拟终端&设备不需要编写一行程序,就可以完成收发字符任务,有点像我们常用的串口助手软件的作用。
& & 其实,用两个 &虚拟终端&,连接上线路,它们也可以通信了。请看下图:
(双击图片,都可以放大观看!)
图1 &虚拟终端&功能演示
& &这是个最简单的&单工&串行通信系统,在这个系统里面并不需要单片机,不用装载程序。
& & &点击Proteus ISIS仿真界面左下方的&播放&按钮,就会弹出两个&虚拟终端&的对话窗口,在左边的,只能键入字符,不能显示字符,刚键入的字符,将会传输的右边窗口中,在右边显示出来。
& & & 通过单工通信的例子介绍了&虚拟终端&的功能,接着通过一个实例了解下&虚拟终端&如何配合Arduino单片机做通讯实验的。
& & &Arduino串行通讯实例任务是:调节电位计滑动抽头与地之间的电压,并把电压值显示在一个&虚拟终端&里。同时,通过另一个&虚拟终端&输入字符'a',发送到Arduino单片机,让与之相连的LED灯点亮,输入字符'b',让LED灯熄灭。如图2所示。
& &&任务的仿真全景图:
图2 &虚拟终端&与Arduino单片机串行通讯演示
任务的仿真视频:
全屏观看,点击网址:&
& & &上面图片和视频展示的是&虚拟终端&与Arduino单片机之间的串行通讯,两者都在同一个仿真界面中。同样的任务也可以采用另一种&上下位机&的方式来仿真。
三、Arduino IDE编程界面中的串口监视器与Proteus仿真图中的Arduino单片机之间串行通讯的仿真方法
& & &现在,进一步研究,上下位机的串行通讯仿真,上位机软件采用Arduino IDE编程环境的串口监视器,下位机是Proteus ISIS仿真界面中的Arduino单片机,上下位机串行通讯仿真实验全景图如下。
图 3 &Arduino IDE中的串口监视器与Proteus中的Arduino单片机串口通讯演示
全屏观看,点击网址:。
& & Proteus界面中的下位机Arduino单片机与上位机软件进行串行通讯,并没有硬件连接,需要通过某种软件虚拟出两个相互连接的串口,一个串口分配给Arduino单片机,另一个串口分配给上位机串口监控软件,在虚拟环境下,让两者能够完成上下位机的串行通讯。这种软件就是VSPD虚拟串口驱动软件。如下图所示。
图 4 & &VSPD虚拟串口驱动软件使用方法
& &VSPD虚拟串口驱动软件请下载:。
& &&下载和安装软件,添加补丁,然后运行程序,出现上图界面。在界面的First选项中选择COM7,在Second选项中选择COM8(当然也可以选择其它串口号配对,前提是被选串口原先是闲置的串口,没有被占有),然后单击Add pair 按钮,这两个串口会立即出现界面左侧的Vitual Port目录下,且会有&串口线&将它们连接起来。这时,如果打开PC的设备管理器,你会发现多出了两个串口,如下图所示。
图5 虚拟串口在PC的设备管理器中的显示
& & 在设备管理器看到了虚拟出的两个串口了,问题是具体如何把串口COM7分配给Arduino单片机,如何把COM8分配给Arduino IDE编程软件的串口监视器。
& & & &要把串口COM7分配给Proteus仿真环境下的Arduino单片机,需要用到COMPIM串口连接器组件,这个组件可以从Proteus的元件模式库里找到。如下图。
图6&COMPIM串口连接器组件的提取方法
& &先选择元件模式库,再点击&P&按钮,打开元件查询提取对话框,可以在对话框左上方的关键字输入栏里输入元件名称:COMPIM,回车后,在结果中可以很容易地找到所需组件。找到后双击COMPIM组件,就可以把它提取到Proteus ISIS界面左侧的DEVICES栏中,供电路图绘制时随时选用,
& & & 点选DEVICES栏的COMPIM组件,放置到电气原理图中,然后双击它,随之出现COMPIM组件的编辑元件窗口,在窗口中就可以把COM7虚拟串口关联到Arduino单片机电路中了。下图中我用红色矩形框标注了,COM7串口设置在编辑元件窗口中的位置。
图7 虚拟串口COM7分配给Proteus环境下Arduino单片机的方法
& & 然后,介绍如何把COM8分配给Arduino IDE编程软件的串口监视器。打开Arduino IDE编程软件,点击菜单栏中的Tools菜单选项,在下拉菜单栏选择Serial&COM8,这样就可以把COM8串口与Arduino IDE编程软件的串口监视器关联起来了。
图8 虚拟串口COM8分配给Arduino IDE编程界面下串口监视器的方法&
& & 双击Arduino IDE工具栏的&Serial Monitor&工具图标,会打开串口监视器窗口。如果运行图3所示任务的程序,在窗口中,会看到电位计的电压值实时变化,你在&Send&输入栏里,输入&a&字符,Proteus仿真图的LED灯会点亮,输入&b&字符,LED会熄灭。这说明COM7和COM8这两个虚拟串口能正确仿真串行通讯,就好像两个物理串口在通讯一样。
图9 Arduino IDE编程界面的串口监视器
& & & 对于Arduino IDE编程界面的串口监视器,你不需要为它编写程序,它本身就可以实现字符收发的功能,你用Arduino编程界面编写的程序是Proteus仿真图中Arduino单片机的串行通讯程序,以及电位计电压值采集和LED灯亮灭输出的程序。程序如下。
/*任务:调节电位计滑动抽头与地之间的电压,并把
电压值显示在上位机Arduino IDE编程环境的串口监视器里。
同时,通过串口监视器输入字符'a',发送到Proteus环境下的
下位机Arduino单片机,让与之相连的LED灯熄灭。
int led=9; & & //把LED连在Arduino数字端口9
int potpin = 0; //把电位计连在Arduino模拟端口0
void setup()&
& Serial.begin(9600); &//启动串行通讯,波特率为9600b/s
& pinMode(led,OUTPUT); &//申明数字端口9为输出端口
& digitalWrite(led,HIGH); //初始化LED灯为熄灭状态
void loop()&
&float sensorValue = analogRead(potpin); //读取电位计采样值&
& float voltage=sensorValue/1023*5;//采样值0-1024转换为0-5V电压值
& Serial.print(&voltage = &);//在Arduino IDE的串口监视器实时显示电压值
& Serial.print(voltage);
& Serial.println(& V&); &
&//定义变量val,用于暂存上位机发送来的字符
& if(Serial.available()&0)//如果上位机发送来了字符
& & val=Serial.read(); //读取上位机发来的字符,并保存到val &
& & Serial.println(val); //显示接受到的字符
& & if(val=='a')//如果上位机发送字符'a',
& & & digitalWrite(led,LOW); //点亮LED灯 & & & &&
& & if(val=='b')//如果上位机发送字符'b',
& & & &digitalWrite(led,HIGH);//熄灭LED灯 & & & & &&
& delay(100);//延时100ms
& &把两个计算机的串口波特率都设置为9600b/s,COM7和COM8正确分配给上、下位计算机,再运行以上程序,就会看到视频中展示得那样的实验现象。
& &文章中介绍的两个仿真项目的Proteus仿真图供下载(Proteus 7.6版本):。
四、结束语
& & 单看这篇文章应该理解Arduino单片机串行通讯仿真流程,但按照文章内容照着做仿真实验,应该还需要了解些Arduino单片机仿真的基础知识,例如hex机器码文件如何加载,Arduino单片机的工作参数如何设置等,这需要参看《零成本学Arduino单片机之入门》 一文,文章地址:&。
& & & Arduino在国外创客界十分流行,但在国内才刚刚起步,所以如何让越来越多的DIY爱好者进入Arduino大门,就需要降低这扇大门的门槛。降低门槛不仅仅是Arduino的易学好用和丰富网络共享,还有就是要降低初学者的硬件成本投入,如何解决少花钱,而多学习Arduino,Proteus仿真是一个很好的途径。
与非门科技(北京)有限公司 All Rights Reserved.
京ICP证:070212号
北京市公安局备案编号: 京ICP备:号【arduino】求助!!!请问怎么把arduino的串口数据_arduino吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:56,302贴子:
【arduino】求助!!!请问怎么把arduino的串口数据收藏
怎么把arduino的串口数据保存在数据库???
变成在数组
用上位机,串口读,然后存到数据库
恩智浦FTF未来科技峰会,通过技术创新为世界带来改变!
每个字段前面加关键字,然后导入excel
这个需要编程上位机的,有需要可以找我
登录百度帐号鍙?渶涓}

我要回帖

更多关于 c 串口接收数据 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信