找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 10666|回复: 15
打印 上一主题 下一主题
收起左侧

51单片计算机串口开发详解

  [复制链接]
跳转到指定楼层
楼主
ID:70941 发表于 2014-12-26 00:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一.51单片计算机串口结构图如下:


二. SCON 是一个特殊功能寄存器说明:
         用以设定串行口的工作方式、接收/发送控制以及设置状态标志


        各位功能如下:
        SM0和SM1 为工作方式选择位
   

        SM2,多机通信控制位,主要用于方式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。
        REN,允许串行接收位。由软件置REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。
        TB8,在方式2或方式3中,是发送数据的第九位,可以用软件规定其作用。可以用作数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位。
在方式0和方式1中,该位未用。
        RB8,在方式2或方式3中,是接收到数据的第九位,作为奇偶校验位或地址帧/数据帧的标志位。在方式1时,若SM2=0,则RB8是接收到的停止位。
        TI,发送中断标志位。在方式0时,当串行发送第8位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使TI置1,向CPU发中断申请。在中断服务程序中,必须用软件将其清0,取消此中断申请。
        RI,接收中断标志位。在方式0时,当串行接收第8位数据结束时,或在其它方式,串行接收停止位的中间时,由内部硬件使RI置1,向CPU发中断申请。也必须在中断服务程序中,用软件将其清0,取消此中断申请。

三.串口开发例程,下面程式实现向单片机发关信息后,它收完后再返回送回来。

#include<reg52.h>
unsigned  char flag,a;
void main()
{

   TMOD=0x20; //设置定时器1为工作方式2,串口是靠在、定时器工作的
   TH1=0xfd;
   TL1 =0xfd; //装串口初值,设置串口波特率9600,计算出来的
   TR1=1;//打开定时器

   REN=1;  // 打开串口允许位
   SM0=0;
   SM1=1;//设置串口工作方式1
   EA=1;  //打开总中断
   ES=1;  //打开串口中断
   
   while(1)
   {
        if (RI==1)  //这个是用来读取到P1口
       {
         RI=0;
         P1=SBUF:
       }


        if(flag==1)   //表明串口收到的数据可以用来发送
        {
          ES=0;  //防止TI进入串口中断关串口中断
          flag=0;
          SBUF=a; //向发送SBUF送a
          while(!TI); //等待 发送结束。未发送结束之前T1一直是0
          TI=0;      // 通过软件将TI置0防止中断后进入中断服务程序
          ES=1;
         }
   }
}
void ser() interrupt 4  
{
   RI=0;
   P1=SBUF;
   a=SBUF;
   flag=1;
}

附:max232芯片接线图

max 232 内部合并了MC1488和MC1489能够实现TTL电平和232电平的双向转换


除了232接口外还有其它的接口,都有自己不同的特性



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

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏9 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
ID:60673 发表于 2014-12-27 22:21 | 只看该作者
值得拥有
回复

使用道具 举报

板凳
ID:71354 发表于 2014-12-30 11:45 | 只看该作者
很详细的资料,谢谢分享
回复

使用道具 举报

地板
ID:71354 发表于 2014-12-30 11:51 | 只看该作者
经过验证,程序可用
回复

使用道具 举报

5#
ID:11942 发表于 2015-1-7 13:14 | 只看该作者
详细的资料,谢谢
回复

使用道具 举报

6#
ID:28571 发表于 2015-4-16 20:28 | 只看该作者
好东西,学习一下,谢谢!
回复

使用道具 举报

7#
ID:79943 发表于 2015-5-15 10:22 | 只看该作者
    SM2,多机通信控制位,主要用于方式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。
        REN,允许串行接收位。由软件置REN=1,则启动串行口接收数据;若软件置REN=0,则禁止接收。
        TB8,在方式2或方式3中,是发送数据的第九位,可以用软件规定其作用。可以用作数据的奇偶校验位,或在多机通信中,作为地址帧/数据帧的标志位。
在方式0和方式1中,该位未用。
        RB8,在方式2或方式3中,是接收到数据的第九位,作为奇偶校验位或地址帧/数据帧的标志位。在方式1时,若SM2=0,则RB8是接收到的停止位。
        TI,发送中断标志位。在方式0时,当串行发送第8位数据结束时,或在其它方式,串行发送停止位的开始时,由内部硬件使TI置1,向CPU发中断申请。在中断服务程序中,必须用软件将其清0,取消此中断申请。
        RI,接收中断标志位。在方式0时,当串行接收第8位数据结束时,或在其它方式,串行接收停止位的中间时,由内部硬件使RI置1,向CPU发中断申请。也必须在中断服务程序中,用软件将其清0,取消此中断申请。
回复

使用道具 举报

8#
ID:89610 发表于 2015-12-24 11:45 | 只看该作者
很好的帖子
回复

使用道具 举报

9#
ID:74145 发表于 2016-3-17 23:11 | 只看该作者
很好的帖子   帮助很大
回复

使用道具 举报

10#
ID:109441 发表于 2016-3-18 00:34 | 只看该作者
很好的帖子   帮助很大很好的帖子   帮助很大
回复

使用道具 举报

11#
ID:135676 发表于 2016-9-1 15:11 | 只看该作者
我用这个程序在我的实验板上调试,可以通过,但烧入单片机运行,串口无显示,为何?
回复

使用道具 举报

12#
ID:3802 发表于 2019-1-25 10:52 | 只看该作者
值得拥有
回复

使用道具 举报

13#
ID:860602 发表于 2021-1-9 21:07 | 只看该作者
RS-485还要在终端接120欧姆电阻,防止信号反射
回复

使用道具 举报

14#
ID:299193 发表于 2021-2-17 15:50 | 只看该作者
真是个好贴,我正好在学习,谢谢!
回复

使用道具 举报

15#
ID:513213 发表于 2021-2-20 23:20 | 只看该作者
很详细的资料,谢谢分享
回复

使用道具 举报

16#
ID:47634 发表于 2021-2-22 10:44 | 只看该作者
感谢楼主,很好的学习资料
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表