【雕爷学编程】Arduino动手做(59)—RS232转TTL串口模块

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)实验…

大家好,又见面了,我是你们的朋友全栈君。

37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的,这里准备逐一动手尝试系列实验,不管成功(程序走通)与否,都会记录下来—小小的进步或是搞不掂的问题,希望能够抛砖引玉。

【Arduino】168种传感器模块系列实验(资料+代码+图形+仿真)

实验五十九: RS232转TTL2代串口模块刷机板模块(MAX3232芯片)

在这里插入图片描述

MAX3232芯片

采用专有低压差发送器输出级,利用双电荷泵在3.0V至5.5V电源供电时能够实现真正的RS-232性能,器件仅需四个0.1uF的外部小尺寸电荷泵电容。max3232确保在120kbps数据速率,同时保持RS-232输出电平。max3232具有二路接收器和二路驱动器,提供1uA关断模式,有效降低功效并延迟便携式产品的电池使用寿命。关断模式下,接收器保持有效状态,对外部设备进行监测,仅消耗1uA电源电流,max3232的引脚、封装和功能分别与工业标准MAX242和MAX232兼容。即使工作在高数据速率下,max3232仍然能保持RS-232标准要求的正负5.0V最小发送器输出电压。

在这里插入图片描述

在这里插入图片描述

MAX3232是MAXIM公司生产的一款 232通讯的芯片,他可以将单片机的逻辑信号的电平转成RS232的电平。因为RS232是用,正负电平来表示0和1的信号,所以MAX3232要产生相应的正负电压。在使用MAX3232时,先确定一下系统接供的电压,因为此芯片,对不同的工作电压,要给不同的电容来产生电压。通电后,先检测一下2脚是否有+5.4V以上的电压,6脚有-5.4V以上的电压,16脚是否有电压, 如没有则要检查相应的电容。注意在16脚一定要有电容,要不然就可能不能产生相应的电压。

在这里插入图片描述
在这里插入图片描述

RS232转TTL2代串口模块刷机板模块(MAX3232芯片)
在这里插入图片描述
DB9管脚功能

1 、DCD( Data Carrier Detect) :载波检测。主要用于Modem通知计算机其处于在线状态,即Modem检测到拨号音,处于在线状态。

2 、RXD(Receive(rx) Data):此引脚用于接收外部设备送来的数据;在你使用Modem时,你会发现RXD指示灯在闪烁,说明RXD引脚上有数据进入(电脑的2接MAX232的RS232端TOUT(如PIN7))。

3 、TXD(Transmit(tx) Data):此引脚将计算机的数据发送给外部设备;在你使用Modem时,你会发现TXD指示灯在闪烁,说明计算机正在通过TXD引脚发送数据。

4 、DTR( Data Terminal Ready ):数据终端就绪;当此引脚高电平时,通知Modem可以进行数据传输,计算机已经准备好。

5 、GND(Ground):逻辑地。

6 、DSR(data set ready):数据设置就绪;此引脚高电平时,通知计算机Modem已经准备好,可以进行数据通讯了。

7 、RTS(Request To Send):请求发送;此脚由计算机来控制,用以通知Modem马上传送数据至计算机;否则,Modem将收到的数据暂时放入缓冲区中。

8 、CTS(Clear to send): 清除发送;此脚由Modem控制,用以通知计算机将欲传的数据送至Modem。

9 、RI ( Ring Indicator): Modem通知计算机有呼叫进来,是否接听呼叫由计算机决定。

要想实现串口间通信,至少需要三个引脚,即:RXD,TXD,GND,RXD与其他串口线TXD相连,TXD与RXD相连,GND与GND相连,这样就实现了串口间通信。该通信是全双工的,即可以同时发送/接收数据,虽然说是串行的,但是因为发送/接收不是用的一个通道,所以可以实现全双工。

在这里插入图片描述
DB9与MAX3232的连接电路图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
模块电原理图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
实验开源代码

/* 【Arduino】168种传感器模块系列实验(59) 实验五十九: RS232转TTL2代串口模块刷机板模块(MAX3232芯片) 程序之一,读取缓存中的串口数据 注意这里的接线方法,软串口RX接RS232转接板的RX口, TX接RS232转接板的TX口 */

 

#include <SoftwareSerial.h>

SoftwareSerial DLSerial(6, 7); // 软串口 RX(D6), TX(D7)

void setup() { 
   

DLSerial.begin(9600); //设备波特率9600

}

 

void loop() { 
       

DLSerial.write(1); //发送字节数据

DLSerial.write(3);

delay(500);

while (DLSerial.available()>0) //如果缓存中有接收到的数据

{ 
   

    DLSerial.read(); //读取缓存中的串口数据

    delay(2);

}

delay(500);

}

在这里插入图片描述
在这里插入图片描述

/* 【Arduino】168种传感器模块系列实验(59) 实验五十九: RS232转TTL2代串口模块刷机板(MAX3232芯片) 程序之二,接收串口数据 rx = 6 tx = 7 */

 

#include <ctype.h>

 

#define bit9600Delay 100 

#define halfBit9600Delay 50

#define bit4800Delay 188 

#define halfBit4800Delay 94 

 

byte rx = 6;

byte tx = 7;

byte SWval;

 

void setup() { 
   

  pinMode(rx,INPUT);

  pinMode(tx,OUTPUT);

  digitalWrite(tx,HIGH);

  delay(2);

  digitalWrite(13,HIGH); 

  SWprint('o');  

  SWprint('k');

  SWprint(10);

}

 

void SWprint(int data)

{ 
   

  byte mask;

 

  digitalWrite(tx,LOW);

  delayMicroseconds(bit9600Delay);

  for (mask = 0x01; mask>0; mask <<= 1) { 
   

    if (data & mask){ 
    

     digitalWrite(tx,HIGH); 

    }

    else{ 
   

     digitalWrite(tx,LOW); 

    }

    delayMicroseconds(bit9600Delay);

  }

  

  digitalWrite(tx, HIGH);

  delayMicroseconds(bit9600Delay);

}

 

int SWread()

{ 
   

  byte val = 0;

  while (digitalRead(rx));

 

  if (digitalRead(rx) == LOW) { 
   

    delayMicroseconds(halfBit9600Delay);

    for (int offset = 0; offset < 8; offset++) { 
   

     delayMicroseconds(bit9600Delay);

     val |= digitalRead(rx) << offset;

    }

    

    delayMicroseconds(bit9600Delay); 

    delayMicroseconds(bit9600Delay);

    return val;

  }

}

 

void loop()

{ 
   

    SWval = SWread(); 

    SWprint(toupper(SWval));

}


在这里插入图片描述
实验仿真编程(linkboy)
在这里插入图片描述
在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/125701.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • websocket设置header(HttpCanary)

    OkHttpClient的性能要优于HttpClient,因此本例来教大家如何配置使用它.在要使用的地方直接@Autowired即可:测试:

    2022年4月16日
    847
  • 翻译:VESA Adaptive-Sync / AMD FreeSync / VRR 白皮书[通俗易懂]

    翻译:VESA Adaptive-Sync / AMD FreeSync / VRR 白皮书[通俗易懂]译者注以下为正文。介绍多年来,显示行业一直普遍认为显示器是以固定的刷新率(refreshrate)运行的,如60Hz。这与以下事实形成鲜明对比:送给显示器的图像内容多种多样,每种图像都有自己独特的、变化的帧率(framerate)。当显示的刷新率与图像内容自身的帧率不同步时,用户可能会察觉到撕裂(tearing)和卡顿(stutter)之类的异常效果。在移动应用程序中(如平板、笔记本电脑),对于静态图像和视频播放来说,较高的显示刷新率不仅显得多余,还增加了系统功耗,降低了续航能力。这些因素使得我

    2022年6月10日
    131
  • 哈希和一致性哈希算法

    哈希和一致性哈希算法哈希Hash算法介绍哈希算法也叫散列算法,不过英文单词都是Hash,简单一句话概括,就是可以把任意长度的输入信息通过算法变换成固定长度的输出信息,输出信息也就是哈希值,通常哈希值的格式是16进制或者是10进制,比如下面的使用md5哈希算法的示例md5(“123456”)=>”e10adc3949ba59abbe56e057f20f883e”主要特点:•不可逆从哈希值不能推导出原始数据,所以Hash算法广泛应用在现代密码体系中•无碰撞不同的信息进行哈希后

    2022年7月27日
    3
  • java 添加 psd_psd缩略图生成上传解决方案「建议收藏」

    java 添加 psd_psd缩略图生成上传解决方案「建议收藏」第一点:Java代码实现文件上传FormFilefile=manform.getFile();StringnewfileName=null;Stringnewpathname=null;StringfileAddre=”/numUp”;try{InputStreamstream=file.getInputStream();//把文件读入StringfilePath=r…

    2022年6月11日
    48
  • 【ElasticSearch面试】10道不得不会的ElasticSearch面试题[通俗易懂]

    【ElasticSearch面试】10道不得不会的ElasticSearch面试题[通俗易懂]以下是ElasticSearch面试题,相信大家都会有种及眼熟又陌生的感觉、看过可能在短暂的面试后又马上忘记了。JavaPub在这里整理这些容易忘记的重点知识及解答,建议收藏,经常温习查阅。评论区见关于es的面试,建议使用名词用官方语言描述会更准确。文章目录1.说说你们公司es的集群架构,索引数据大小,分片有多少,以及一些调优手段2.elasticsearch的倒排索引是什么3.elasticsearch是如何实现master选举的5.描述一下Elasticsearch索引

    2022年9月12日
    0
  • iOS 强大第三方资源库

    iOS 强大第三方资源库Github用法git-recipesGitrecipesinChinese.高质量的Git中文教程.lark怎样在Github上面贡献代码my-git有关git的学习资料gitignore非常赞有用的.gitignore模板集合(忽略上传的文件集合),包含了各种语言.完整App@open-source-ios-apps-iOS开源App集合,分:swift与Objec…

    2022年6月9日
    106

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号