当前位置: 首页 > 新闻中心
返回
列表

【C51自学笔记】串口通信+RS-232C接口+ RS-422A485接口

发表时间: 2024-02-12 作者: 新闻中心

  计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。通信有并行通信和串行通信两种方式。在多微机系统和现代测控系统中信息的交换多采用串行通信方式。

  异步通信是以字符(构成的帧)为单位做传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隔”的整数倍的关系,但同一字符内的各位之间的距离均为“位间隔”的整数倍。

  在发送数据时,数据位尾随的1位为奇偶校验位(1或0)。奇校验时,数据中“1”的个数与校验位“1”的个数之和应为奇数;偶校验时,数据中“1”的个数与校验位“1”的个数之和应为偶数。接收字符时,对“1”的个数进行校验,若发现不一致,则说明传输数据过程中出现了差错。

  代码和校验是发送方将所发数据块求和(或各字节异或),产生一个字节的校验字符(校验和)附加到数据块末尾。接收方接收数据同时对数据块(除校验字节外)求和(或各字节异或),将所得的结果与发送方的“校验和”作比较,相符则无差错,否则即认为传送过程中出现了差错。

  这种校验是通过某种数学运算实现有效信息与校验位之间的循环校验,常用于对磁盘信息的传输、存储区的完整性校验等。这种校验方法纠错能力强,大范围的应用于同步通信中。

  比特率是每秒钟传输二进制代码的位数,单位是:位/秒(bps)。如每秒钟传送240个字符,而每个字符格式包含10位(1个起始位、1个停止位、8个数据位),这时的比特率为:

  RS-485是一点对多点的通信接口,一般都会采用双绞线的结构。普通的PC机一般不带RS485接口,因此要使用RS-232C/RS-485转换器。对于单片机能够最终靠芯片MAX485来完成TTL/RS-485的电平转换。在计算机和单片机组成的RS-485通信系统中,下位机由单片机系统组成,上位机为普通的PC机,负责监视下位机的运作时的状态,并对其状态信息进行集中处理,以图文方式显示下位机的工作状态和工业现场被控设备的工作状况。系统中各节点(包括上位机)的识别是通过设置不一样的站地址来实现的。

  上下两个sbuf ,上为发送缓冲器,下为接收缓冲器。可以在cpu的控制下进行同时发送和接收。

  vSM2,多机通信控制位,大多数都用在方式2和方式3。接收机的SM2=1时可通过收到的RB8来控制是否激活RI(RB8=0时不激活RI,收到的信息丢弃;RB8=1时收到的数据进入SBUF,并激活RI,进而在中断服务中将数据从SBUF读走)。当SM2=0时,不论收到的RB8为0和1,均可以使收到的数据进入SBUF,并激活RI(即此时RB8不具有控制RI激活的功能)。经过控制SM2,能轻松实现多机通信。在方式0时,SM2必须是0。在方式1时,如果SM2=1,则只有接收到有效停止位时,RI才置1。

  vREN,允许串行接收位。由软件置REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。

  vTB8,在方式2或方式3中,是发送数据的第九位,可以用软件规定其作用。可以用作数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志。 在方式0和方式1中,该位未用。

  vRB8,在方式2或方式3中,是接收到数据的第九位,作为奇偶校验位或地址帧/数据帧的标志位。在方式1时,若SM2=0,则RB8是接收到的停止位。

  vTI,发送中断标志位。在方式0时,当串行发送第8位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使TI置1,向CPU发中断申请。在中断服务程序中,必须用软件将其清0,取消此中断申请。

  vRI,接收中断标志位。在方式0时,当串行接收第8位数据结束时,或在其它方式,串行接收停止位的中间时,由内部硬件使RI置1,向CPU发中断申请。也必须在中断服务程序中,用软件将其清0,取消此中断申请。

  (方式一中:初始化0101XXXX 最后两个xx:一个发送完数据清零,一个接收完清零)

  当RI=0,且SM2=0(或接收到的停止位为1)时,将接收到的9位数据的前8位数据装入接收SBUF,第9位(停止位)进入RB8,并置RI=1,向CPU请求中断。

  波特率计算:(通常用软件:51串口通讯计算器,通常用晶振频率:11.0592M)

  通过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,

  串行口的四种工作方式对应三种波特率。由于输入的移位时钟的来源不同,所以,各种方式的波特率计算公式也不相同。

  当T1作为波特率发生器时,最典型的用法是使T1工作在自动再装入的8位定时器方式(即方式2,且TCON的TR1=1,以启动定时器)。这时溢出率取决于

  在单片机的应用中,常用的晶振频率为:12MHz和11.0592MHz。所以,选用的波特率也相对固定。常用的串行口波特率以及各参数的关系如表所示。

  v确定串行口控制(编程SCON寄存器)串行口在中断方式工作时,要进行中断设置(编程IE、IP寄存器)。

  版权声明:本文为CSDN博主「mmciel」的个人独创的文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

  alien关键词主要是为了C51编译器与PL/M-51编译器兼容。 在C51编译器中调用PL/M-51函数,须使用alien声明该函数,如下: extern alien char plm_func (int, char); char c_func (void) { int i; char c; for (i = 0; i 100; i++) { c = plm_func (i, c); /* call PL/M func */ } return (c); } 为了创建能被PL/M-51程序调用的C51函数,须使用alien关键词声明,如下: alien char c_func (char a

  单片机串口通信是单片机非常好用的一项功能,可以和电脑和其他的单片机进行通信和交换数据进而达到某种效果。近期我们做了个程序:利用单片机串口通信编译一个程序在打开时向电脑发送问候语 hello ,然后电脑输入一个 start ,之后单片机将电脑输入任何字符都显示出来,除非是电脑输入为 end 。起初我们是想用字符串和数组来做这个题目的,但是在开始做的时候才发现,单片机的传输使用八位的一个一个的传输数据的,然后在传输之前还得将端口软件置零、这时候我们就选用了嵌套语句一个一个字符串的来判断,但是因为嵌套的对于单片机通信说不是很适合。如:在用五个if语句检测start是,如果其中少了一个(只有四个字符),这个程序就会卡住,不执行下一条: #i

  串口通信,能够理解为打开文件,写文件,读文件,关闭文件 使用的是系统函数 open,write,read,close函数 char path = dev/ser1 ; if ( ( fd = open ( path, O_RDWR,S_IRUSR S_IWUSR) ) != -1 ) 串口通信首先要设置波特率、奇偶校验、数据位数、停止位。 串口通信数据,一般会写成共用体的形式

  #include reg52.h //C51通用串口收发数据C语言程序模块 #define uchar unsigned char #define uint unsigned int uchar shu; bit i; sbit led1=P0^0; void delayms(uint xms) //1ms; { uint i,j; for(i=xms;i 0;i--) for(j=110;j 0;j--) ; } /************************************************************************/ void UART_ini

  用M8做了一个485通信,调试时发现,PC端接收数据不正常,而另一个同样的板子接收的数据时正常。 测量了PC端串口接收数据的管脚波形,正常,但是接收数据不对,奇怪! 此时发送板的M8工作电压为3.3V,使用内部晶振。 将发送版的M8的工作电压改为5V后,PC端接收数据正常了。 接收数据的正确与否和M8的工作电压有关系,而工作电压的大小会影响什么呢? 有两个地方: 1、IO口的电平 难道IO口的电平会影响数据的正确与否,这样的一个问题可以排除,原因见下: 1)、MAX485是5V供电的,但是它可以和3.3V电平匹配。 2)、接收端的波形是对的,说明数据发出去是对的。 2、影响内部晶振 内部晶振受工作电压影响很大,进而影响

  1.avr为risc结构cpu,大多数指令在一个时钟周期内完成.所以MIPS比51高 2.avr单片机的复位电平为负逻辑, 而51为正逻辑 3.汇编的程序不通用,但是如果用c写的程序还是可以移植的. AVR 单片机是ATMEL 在90年代推出的精简指令集RISC的单片机,跟PIC类似.使用哈佛结构.能这样类比,AT89C52相当于复杂指令集CISC的intel的奔腾CPU,AT90S8515相当于AMD的精简指令集RISC的K7 CPU. 以上是指令集的类比.AVR是专门为使用高级语言设计的,在使用高级语言时, 会比89C52有较佳的表现. 可以直接替代89C52的CPU是AT90S4414和AT90S8515.

  一、引言 串口通信是日前单片机和DSP等嵌入式系统之间,以及嵌入式系统与PC机或无线模块之间的一种很重要且广泛使用的通信方式。在嵌入式系统的硬件结构中,通常只有一个8位或16位的CPU,不仅要完成主流程的工作,并且要处理随时发生的各种中断,因而嵌入式系统中的串口通信程序设计与PC机有很大的不同。若嵌入式系统中.中断服务子程序在系统运行过程中占用了较多的时间,就非常有可能在中断服务子程序正运行时,又产生一个同类型或别的类型的中断,从而造成主程序得不到执行或后续中断数据丢失。所以,嵌入式系统中的串口通信虽然看似简单,但其中仍有许多问题值得研究,例如串口通信过程中的帧同步问题。本文针对该问题给出了逐次比较、基于FIFO队列和基于状态机的3

  一.数据通信方式 1.串行与并行通信 按数据传送的方式,通讯可分为串行通讯与并行通讯。 串行通讯:是指设备之间通过一根数据信号线,地线和控制信号线,按数据位形式一位一位地传输数据的通讯方式,同一时刻只能传输一位(bit)数据。 并行通讯:是指使用 8、16、32 及 64 根或更多的数据线(有多少信号为就要多少信号位)进行传输的通讯方式,可以同一时刻传输多个数据位的数据。 串行通讯与并行通讯的特性对比: 并行可以同时发送多位数据所以速度比串行的速度要快很多,但并行要的数据线也更多相对成本会更高,而且并行传输对同步要求比较高,且随着通讯速率的提高,信号干扰的问题会显著影响通讯性能。 2.全双工、半双工及单工通讯 单工通信:

  详解 /

  语言)

  带你飞

  ++ Compiling) (Milan Stevanovic (译)卢誉声)

  ++ Compiling) (Milan Stevanovic (译)卢誉声)

  使用STM32 Nucleo撬开针对物联网的ARM mbed IDE之门

  MPS电机研究院 让电机更听话的秘密! 第一站:电机应用知识大考!跟帖赢好礼~

  电源小课堂 从12V电池及供电网络优化的角度分析电动汽车E/E架构的趋势

  【下载】LAT1362 利用STM32 TIMER触发ADC实现分组转换

  【下载】LAT1334 基于MCSDK5.4.8电机库修改两电阻采样方法

  【下载】LAT1347 基于STM32CubeIDE移植ClassB 4.0

  【下载】LAT1340 STM32H5读取温度传感器校准值时进HardFault的原因分析

  【生态】使用STM32CubeMX在STM32U5上配置LPBAM应用程序

  【MPU】轻松使用STM32MP13x如MCU般在Cortex A 核上裸跑应用程序

  【新品】STM32H5-Arm® Cortex®-M33 内核,主频高达250MHz,提升性能与信息安全性

  【新品】STM32MP13X-支持Linux、RTOS和Bare Metal应用,新一代通用工业级MPU

  【新品】Arm® Cortex®-M33处理器内核,运行频率160 MHz,基于Armv8-M架构并带有TrustZone®

  【新品】降本增效这事儿,就看STM32C0,低至0.24美元” ,开机即可物联世界

  【GUI开发】TouchGFX 4.23:支持矢量字体,节省Flash,更丰富的UI!

  【边缘AI】突破边缘AI应用的次元壁:首届意法半导体边缘人工智能峰会举行

  【生态系统】STM32CubeProgrammer和STM32CubeIDE协同调试的方法

  【无线携手创新微MinewSemi共创低功耗模块,引领中国智能连接未来

  新款STM32U5片上集成矢量图形加速器及大容量SRAM存储器2024年2月5日,中国 - 意法半导体推出了集成新的专用图形加速器的STM32*微控制器(M ...

  水果种植业是我国农业发展的重要组成部分,果树病虫害防治作业也慢慢变得被重视。当下我国施药水平总体偏低,主要体现在自动化技术落后、作业 ...

  一、运算器运算器以完成二进制的算术 逻辑运算部件ALU为核心,再加上暂存器TMP、累加器ACC、寄存器B、程序状态标志寄存器PSW及布尔处理器。 ...

  1、引言弹簧是机械行业的通用零部件,用途十分广泛。工业的发展,刺激了弹簧的需求,同时也对弹簧加工设施提出了更高的要求。以往的加工设 ...

  单片机的基本结构包括中央处理器(CPU) 、存储器、定时 计数器、输入输出接口、中断控制管理系统和时钟电路六部分。一、基本组成中央处理器( ...

  站点相关:综合资讯51单片机PIC单片机AVR单片机ARM单片机嵌入式系统汽车电子消费电子数据处理视频教程电子百科其他技术STM32MSP430单片机资源下载单片机习题与教程