0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

使用单片机实现串口通信的资料详细说明

Wildesbeast 来源:网络整理 作者:佚名 2020-08-09 14:13 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到电脑端,而且也能实现电脑对单片机的控制,比如你可以把写入单片机的数据码显示在电脑上,如可以使用一个按键,当按下它时使某一个字母如:AA,通过单片机的串口将它发送到电脑上显示,起到仿真器的某些功效,站长在开发数据采集设备时就是通过串口来检查数据正确与否的。

MCS-51内部含有一个可编程全双工串行通信接口,具有UART的全部功能。该接口电路不仅能同时进行数据的发送和接收,也可作为一个同步移位寄存器使用。

在进行异步通信时,数据的发送和接收分别在各自的时钟(TCLK和RCLK)控制下进行的,但都必须与字符位数的波特率保持一致。MCS-51串行口的发送和接收时钟可由两种方式产生,一种是由主机频率fosc经分频后产生,另一种方式是由内部定时器T1或T2的溢出率经16分频后提供。

51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。本网站的提供的实验板上已经装配好了全部硬件。

串口通讯的硬件电路如上图所示

为了能够在电脑端看到单片机发出的数据,我们必须借助一个WINDOWS软件进行观察单片机串口通信,这里我们利用一个免费的电脑串口调试软件。

点击这里可以下载并运行这个串口调试软件这是一个绿色的软件,无需安装,可以直接在当前位置运行这个软件。软件界面如上图,我们先要设置一下串口通讯的参数,将波特率调整为4800,勾选十六进制显示。串口选择为COM1,当然将网站提供的51单片机实验板的串口也要和电脑的COM1连接,将烧写有以下程序的单片机插入单片机实验板的万能插座中,并接通51单片机实验板的电源,这时只要按下K1一次,在串口调试助手软件的接收区界面中就会增加一个“AF”字符,表示单片机向电脑发送“AF”字符成功。串口实验的源程序如下所示:

;这是一个AT89C51单片机实验开发板向PC机的串口单向发送数据AF的演示程序

;采用MAX232专用芯片作RS232/TTL电平转换。

;通讯波特率为4800KBPS,只要按下一次K1(就是P3.6引脚变成低电平)

;就发送一个16进制的AF字符

ORG 0000H

MOV SCON,#50H;设置成串口1方式

MOV TMOD,#20H;波特率发生器T1工作在模式2上

MOV PCON,#80H;波特率翻倍为2400x2=4800BPS

MOV TH1,#0F3H;预置初值(按照波特率2400BPS预置初值)

MOV TL1,#0F3H;预置初值(按照波特率2400BPS预置初值)

SETB TR1;启动定时器T1

;以上完成通讯初始化设置

WRIT:JB P3.6,$;判断K1是否按下,如果没有按下就等待

ACALL DELAY10;延时10毫秒消触点抖动

JB P3.6,WRIT;去除干扰信号

JNB P3.6,$;等待按键松开

MOV A,#0AFH;将16进制的字符AF发送到串口去

MOV SBUF,A;将AF通过串口发送出去

AJMP WRIT

;10毫秒延时子程序

DELAY10:MOV R4,#20

D2:MOV R5,#248

DJNZ R5,$

DJNZ R4,D2

RET

END

===============单片机串口通信=========================

一、发送和接收的过程如下:

串行口的发送过程由指令MOV SBUF,A启动,即CPU由一条写发送缓冲器的指令把数据(字符)写入串行口的发送缓冲器SBUF(发)中,再由硬件电路自动在字符的始、末加上起始位(低电平)、停止位(高电平)及其它控制位(如奇偶位等),然后在移位脉冲SHIFT的控制下,低位在前,高位在后,从TXD端(方式0除外)一位位地向外发送。

串行口的接收与否受制于允许接收位REN的状态,当REN被软件置“1”后,允许接收器接收。接收端RXD一位位地接收数据,直到收到一个完整的字符数据后,控制电路进行最后一次移位,自动去掉启始位,使接收中断标志RI置“1”,并向CPU申请中断。CPU响应中断,用一条指令(MOV A,SBUF)把接收缓冲器SBUF(收)的内容读入累加器。

TI和RI是由硬件置位的,但需要用软件复位。

二、相关的寄存器

1、SBUF是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据。两个缓冲器只用一个字节地址99H,可通过指令对SBUF的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。串行口对外有两条独立的收发信号线RXD(P3.0)、TXD(P3.1),因此可以同时发送、接收数据,实现全双工。

2、SCON寄存器用来控制串行口的工作方式和状态,可按位寻址,其字节地址为98H。

3、PCON中的SMOD用来控制波特率加倍。

4、TMOD设置定时器1的工作方式,用来产生波特率

5、如果用到中断,则还需要用到中断相关的寄存器IE,IP等

三、四种工作方式:

方式0:

同步移位寄存器方式,其波特率是固定为振荡频率fosc的1/12。在这种工作方式下,发送和接收串行数据都通过RXD(P3.0)进行,从TXD(P3.1)输出移位脉冲,控制外部的移位寄存器移位。1帧信息为8位,没有起始位,停止位。

方式1:

8位UART,1帧信息为10位,其中一位起始位“0”、八位数据位(先低位后高位)和一个停止位“1”,波特率可变,根据定时器1的溢出率计算。

方式2:

9位UART,1帧信息为11位,其中一位起始位“0”、八位数据位(先低位后高位),一位控制位(第九位)和一个停止位“1”。波特率为振荡频率的1/64或1/32

方式3:

9位UART,帧信息为11位,其中一位起始位“0”、八位数据位(先低位后高位),一位控制位(第九位)和一个停止位“1”。波特率可变,根据定时器1的溢出率计算。

附加的第9位数据为SCON中的TB8的值,它由软件置位或清零,可作为多机通信中地址/数据信息的标志位,也可作为数据的奇偶校验位。

四、连接

由于串口用的是TTL电平,和RS232电平不同,因此,单片机和PC通信时需要进行电平转换,常用的IC是MAX232,连接图如图所示,其中MAX232供电脚为+5V,中间连接的电解电容取50V 1UF。

MAX232内部框图

单片机和PC通信连接图

即所谓的三线连接法。

===================================================

用VC来做个上位机软件,用单片机来做下位机显示,数据从PC机发送过来,经过单片机处理显示。

首先你想把它学好,就一定要下苦功夫,因为这个不是一下子就能学好的,要经过不断的实践努力。

学习也有一段时间了,用的书是(《Visual C /Turbo C串口通信编程实践》 龚建伟)但是发现自己可能毅力不够,经常被一些困难所吓倒。碰到问题时不能够想方设法去解决。可能是可以学习例子太少了,网上的资源也不是很多。。。。。。

发现假如用MSCOMM控件来编的话,就是那个变量VARIANT,这个不好弄懂。学VC首先要有一定的C语言基础,和C 基础,可能是C 还没学完,基础不扎实,导致继续下去有点困难。

先实现一个简单的功能吧,用VC做个界面,当按下相应的键时,发送相应的数据到单片机中,然后将数据送到P0口来显示。

呵呵,一定要把那个变量给弄懂了,这样一切都好办了

在后面的学习中,我将把学习的心得写出来,与大家交流交流

有在学VC的朋友可以和我交流交流 ,大家一起进步

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6074

    文章

    45340

    浏览量

    663557
  • uart
    +关注

    关注

    22

    文章

    1304

    浏览量

    106112
  • 串口通信
    +关注

    关注

    34

    文章

    1657

    浏览量

    57637
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    MCU单片机串口数据记录仪方案

    在工业控制、环境监测、物流追踪等众多领域,如何可靠、便捷地记录设备串口数据成为不少工程师关注的焦点。基于MCU单片机串口数据记录仪方案,正以其高效集成、灵活存储和简便操作的特点,成为数据采集与记录场景中的理想选择。
    的头像 发表于 11-27 15:02 103次阅读

    51单片机RS485编程实例资料

    详细介绍51单片机RS485通信接线和编程代码
    发表于 10-20 14:57 2次下载

    单片机烧录原理是怎样的?辉芒微单片机烧录程序详细步骤讲解

    烧录(Programming)就是把 .hex/.bin 文件里的机器码搬运进单片机片内 Flash 的过程。辉芒微(FMD)单片机内部有一块 自举 BootROM,上电时会先跑这段程序;如果检测
    的头像 发表于 09-17 16:14 1385次阅读
    <b class='flag-5'>单片机</b>烧录原理是怎样的?辉芒微<b class='flag-5'>单片机</b>烧录程序<b class='flag-5'>详细</b>步骤讲解

    又短又好用:单片机就一个串口,如何和多个从串口通信串口如何实现一主多从?

    即可实现总线。 但是有时候由于一些原因不得不也想到另一种设计,即让串口实现一主多从这种总线设计。比如板内主MCU只有一个串口,但是想使用这一个串口与另外两个MCU通讯。但是我们知道常规
    的头像 发表于 09-17 11:49 877次阅读
    又短又好用:<b class='flag-5'>单片机</b>就一个<b class='flag-5'>串口</b>,如何和多个从<b class='flag-5'>机</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b>?<b class='flag-5'>串口</b>如何<b class='flag-5'>实现</b>一主多从?

    单片机怎么驱动电机?

    在各类自动化设备和智能装置中,电机是重要的执行部件,而单片机作为控制核心,需要通过特定的方式驱动电机运转。单片机驱动电机并非直接连接即可,而是要根据电机类型和功率,搭配合适的驱动电路,才能实现稳定
    的头像 发表于 07-25 09:31 439次阅读

    AT89C51 单片机中文资料

    电子发烧友网站提供《AT89C51 单片机中文资料.pdf》资料免费下载
    发表于 06-24 15:29 1次下载

    使用USB转TTL串口板和ST-LINK调试下载器给STM32单片机下载程序

    本文详细介绍如何使用ST-LINK/V2和USB转TTL串口板为STM32单片机下载程序,包括STM32启动模式、JTAG与SWD接口对比、驱动安装及官方软件STM32ST-LINKUtility和FlashLoaderDemo
    的头像 发表于 06-20 17:26 2051次阅读
    使用USB转TTL<b class='flag-5'>串口</b>板和ST-LINK调试下载器给STM32<b class='flag-5'>单片机</b>下载程序

    瑞芯微rv1106开发资料 rv1106数据手册 rv1106详细说明书免费下载

    瑞芯微rv1106开发资料 rv1106数据手册 rv1106详细说明书免费下载
    的头像 发表于 05-19 11:16 4262次阅读
    瑞芯微rv1106开发<b class='flag-5'>资料</b> rv1106数据手册 rv1106<b class='flag-5'>详细说明</b>书免费下载

    英锐恩精选笔记UART串口通信#单片机开发#单片机芯片#UART串口通信#单片机

    单片机
    英锐恩科技
    发布于 :2025年05月15日 16:09:05

    瑞萨RA8系列教程 | 基于e2s实现RA8串口输出配置

    串口是最常见的通信方式之一,也是单片机调试最常见的通信接口,也是现在的单片机必备的通信接口,目前
    的头像 发表于 04-11 20:00 836次阅读
    瑞萨RA8系列教程 | 基于e2s<b class='flag-5'>实现</b>RA8<b class='flag-5'>串口</b>输出配置

    STC单片机声卡PCB和源码资料

    STC单片机声卡PCB和源码资料
    发表于 04-03 11:14 0次下载

    瑞萨Cortext-M85内核RA8系列单片机串口输出实现方法

    串口是最常见的通信方式之一,也是单片机调试最常见的通信接口,也是现在的单片机必备的通信接口,目前
    的头像 发表于 03-21 09:58 1557次阅读
    瑞萨Cortext-M85内核RA8系列<b class='flag-5'>单片机</b>的<b class='flag-5'>串口</b>输出<b class='flag-5'>实现</b>方法

    UHV系列雷电冲击电压发生器试验装置详细说明使用

    UHV系列 雷电冲击电压发生器试验装置产品详细说明
    发表于 02-21 17:55 17次下载

    TLC5615与单片机通信时是不是用任意IO口都可以通信,只要时序和数据是按说明通信的?

    TLC5615与单片机通信时是不是用任意IO口都可以通信,只要时序和数据是按说明通信的?
    发表于 02-13 07:17

    32位单片机相关资料和解决方案参考指南

    电子发烧友网站提供《32位单片机相关资料和解决方案参考指南.pdf》资料免费下载
    发表于 01-21 14:00 0次下载
    32位<b class='flag-5'>单片机</b>相关<b class='flag-5'>资料</b>和解决方案参考指南