当前位置: 首页 > news >正文

N 3 串口

一、串口

UART:Unervisal Async Recveiver Transimitter,通用异步收发器。(全双工,串行)

RXD:接收信号线

TXD:发送信号线

CH340:电平转换芯片

单工:通信时,数据接收方和发送方是固定的,通过一根信号线实现数据收发数据传输的方

向是单一的(只能由发送方发给接收方)。

半双工:通信时,数据接收方和发送方不是固定的(双方都可以发送或接收数据)通过一根

信号线实现数据收发,数据传输的方向可以是双向的(同一时刻,数据传输的方向

是单一的)。

I2C:SLC(时钟线) SDA(数据线)

全双工:通信时,数据接收方和发送方不是固定的(双方都可以发送或接收数据)通过两根

信号线实现数据收发,数据传输的方向是双向的。

UART、SPI(MOSI MISO CS片选线)

串口发送数据:遵循LSB低位先行原则,先发送数据低位,再发送高位MSB

串行:通过一根信号线将要发送的数据逐个bit逐个bit的进行发送

1.传输速度慢;2.成本低,实现简单;3.传输距离远(RS485 差分,抗干扰性好)

并行:通过多根信号线同时去传输多个bit

1.传输速度快;2.成本高,实现复杂;

3.传输距离近(30米以内,存在信号偏移、电磁波干扰)

奇校验:奇校验值为1,若数据位中1的个数加上奇校验中的"1,保持1的总个数为奇数个,则

代表奇校验通过。

偶校验:偶校验值为0',若数据位中1'的个数加上偶校验中的"0,保持1的总个数为偶数个,

则代表偶校验通过。

奇偶校验无法判断偶数个bit出错的问题。

串口通信参数:

波特率(bits per second),每秒传输bie数量 。(2400,4800,9600,115200)

8:8位数据位 N:None无校验 O:odd奇校验 E:Even偶校验

1:1位停止位

同步:有时钟线,通信双方可以通过时钟线来实现通信频率同步。

异步:没有时钟线,通信双方无法通过时钟线实现同步。

串口是一种异步通信协议,但可以通过波特率实现类似同步。

TTL: 高电平:5V 低电平:0V

RS232: 负逻辑 高电平:-3 V - -15V 低电平:3V - 15V

RS485: 差分 高电平: 2V - 6V 低电平: -2V - -6V

二、串口寄存器

串口寄存器:发送接收缓冲器 SBUF

2400bps TL1=232 TH1=232

定时器初值的计算公式:2"-2smod * focs / 32 / bps / 12

#include <reg51.h> #include "uart.h" xdata char recv_buffer[32]; unsigned int pos = 0; // 串口接收中断服务函数 void uart_handler(void) interrupt 4 { if ((SCON & (1 << 0)) == 1) { if (pos < 32) { recv_buffer[pos++] = SBUF; recv_buffer[pos] = 0; } } SCON &= ~(1 << 0); } // 串口初始化 void uart_init(void) { // 1. 配置串口工作模式:SM0 0 SM1 1 8位UART模式 SCON &= ~(3 << 6); SCON |= (1 << 6); // SM1 SCON &= ~(1 << 7); // SM0 // 2. 允许串口接收数据 SCON |= (1 << 4); // 3. PCON 波特率加倍 PCON &= ~(3 << 6); PCON &= ~(1 << 6); PCON |= (1 << 7); // 4. 配置定时器1工作模式:8位自动重装载 TMOD &= ~(0x0F << 4); TMOD |= (1 << 5); // 5. 设置定时器1初值:2400bps TL1 = 232; TH1 = 232; // 6. 允许定时器1开始计数 TCON |= (1 << 6); // 7. 允许CPU响应所有中断 IE |= (1 << 7); // 8. 允许串口产生中断 IE |= (1 << 4); } // 发送单个字符 void uart_sendchar(char ch) { SBUF = ch; // 判断是否发送完8位数据 while ((SCON & (1 << 1)) == 0); SCON &= ~(1 << 1); } // 发送字符串 void uart_sendstr(const char *p) { while (*p) { uart_sendchar(*p++); } } // 发送指定长度数据 void uart_sendbuff(const char *p, int len) { while (len--) { uart_sendchar(*p++); } }

三、Modbus协议

Modbus协议 主机->从机:

起始位 地址码 功能码 数据位1 数据位2 校验码 结束位

0xAA 0x01 0x01 0x42 0x00 0xEE 0xBB

01:控制led

02:控制数码管

03:控制蜂鸣器

04:温度采集

数据流向位:主机->从机(0);从机->主机(1)

http://www.jsqmd.com/news/491983/

相关文章:

  • OA系统:企业高效办公的秘密武器
  • 什么是MT4软件?有什么作用?MT4软件好用吗?
  • 三菱电梯地址码,maxize,凌云凌杰758/728/778/768/-3地址码。 三菱地址码...
  • 考虑集流体的 Comsol sofc固体氧化物燃料电池仿真(温度场分布,气体分布,极化曲线
  • python数分篇---初级
  • WHOIS查询推荐
  • AI应用部署优化:从实验到生产的完整指南
  • Agent长期记忆系统设计实战(非常详细),从架构原理到落地从入门到精通,收藏这一篇就够了!
  • Vue3 项目实战总结:路由、状态管理与工程化核心知识点
  • 自动提交计算任务
  • java-Eclipse软件安装-贺
  • Ubuntu24.04 esp32p4开发
  • HoRain云--Linux下C语言编译执行全攻略
  • 昆仑通态触摸屏485通讯恒压供水程序(一拖二)
  • BigIntegerBigDecimal
  • AI写论文超给力!4款AI论文写作工具,快速生成高质量论文!
  • AI获客新势力:海南黑谷云科技引领营销新潮流
  • 融合正余弦和柯西变异的麻雀搜索算法优化CNN-BiLSTM
  • Vivado FPGA输入时钟约束
  • debug记录
  • 【V2X】EMMC 5.1规范默认禁用RST_N
  • 呼和浩特打包箱房厂家优选:内蒙古中益集成房屋,适配北疆气候,品质可靠 - 品牌推荐大师1
  • 内窥镜加热器如何选择红外LED加热光源
  • PEN-200:课程介绍与学习方法论
  • 细说魔兽争霸丛林肉搏全图透视辅助丛林肉搏重粉挂丛林肉搏全图科技
  • 铺布机在服装厂数字化转型中的桥梁作用与实施路径
  • 欧意下载地址okxz.run复制进去-1971年10月12日傍晚17-19点出生性格、运势和命运
  • AI写教材的秘密武器!实现低查重教材生成的实用工具推荐
  • DO-254通读--11.0 附加考虑
  • 告别答辩 PPT 熬夜:PaperXie AI PPT 如何让本科生从 “凑内容” 到 “控全场”