51 单片机串口的扩充方法

发布者:Tapir最新更新时间:2018-05-07 来源: eefocus关键字:单片机  串口  扩充方法 手机看文章 扫描二维码
随时随地手机看文章

基本的 51 单片机有四个并行口,其中还包含了一个串行口。


当接口不够用的时候,大家就会想到,使用什么外接芯片来扩充。


但是,各种教材、参考书、网络文章,介绍扩充并行口的花样不少,扩充串行口的方法,几乎无人问津。


偶尔见到一个,也是使用 8250、8251 等“巨型”芯片来扩充的。

使用这些芯片,就要占用单片机很多的更为紧缺的并行口,基本上就是得不偿失。更别说还要设置复杂的控制字了。


做而论道使用简单的三态门,即可为单片机扩充串行口,仅仅占用单片机的一、二个引脚作为控制引线而已。


这个方法,在以前的各种书籍、杂志、网文中,都没有见到过,可以说是做而论道的独创。


呵呵,小小的自豪一下,请不要拍砖。


实际上是很简单的,就像使用 74LS373、74LS244 扩充并行口一样,为串行口,配上合适三态门就行了。


选用 74LS125(低电平开门)、74LS126(高电平开门) 都行。


使用其它的具有三态输出的芯片也可以,如:74LS244、74LS373 等等。

只是这些芯片的控制线,是成组的控制,不是单独的一个门、一个门的进行控制,就有些不够方便。


下面就是做而论道设计的扩充两个串口通道的电路图:


51 单片机串口的扩充方法 - 非著名博主 - 电子信息角落


图片链接:http://xiangce.baidu.com/picture/detail/64e03b5b7608f83bacba4eb956749736c1c3430d


为了控制简单,以及介绍全面一些,在图中使用了两种三态门。用同一种,也是可以的。


两组三态门,均以 P3.4 作为控制信号。


当 P3.4 输出高电平时,74LS126 开门,通道1导通,单片机即可对 74LS164 进行串行输出,驱动数码管;


当 P3.4 输出低电平时,74LS125 开门,通道2导通,单片机即可与其它串口设备进行全双工的通信。


如果需要,还可以在 125 的右边再接上 TTL-RS232 电平转换芯片(或 RS485 总线芯片),进行远距离通信。

图中是接上了一个 PROTEUS 软件的虚拟终端,用来代表另一个串口通信设备。


做而论道用汇编语言写了一小段程序,可以控制这个串口扩展电路进行工作。


;=================================================

    ORG   0000H

    SJMP  START

    ORG   0023H

    AJMP  S_INT

START:

    MOV   TMOD, #20H

    MOV   TH1, #0FDH ;设置波特率9600@11.0592MHz

    MOV   TL1, #0FDH

    SETB  TR1


    MOV   IE, #90H   ;开串口中断


    CLR   P3.4       ;选通74LS125(通道2)

    MOV   SCON, #50H ;串口方式1, 可接收


    SJMP  $

;-----------------------------------

S_INT:               ;串口中断程序

    JNB   RI, S_END

    CLR   RI


    MOV   A, SBUF    ;取出收到的数据

;---------------------

    SETB  P3.4       ;选通74LS126(通道1)

    MOV   SCON, #0   ;串口通信方式0


    MOV   B, #16

    DIV   AB

    XCH   A, B

    ADD   A, #(TAB - $ - 3)

    MOVC  A, @A + PC ;取七段码

    MOV   SBUF, A    ;串口输出

    JNB   TI, $      ;等待发送完毕

    CLR   TI

    

    MOV   A, B

    ADD   A, #(TAB - $ - 3)

    MOVC  A, @A + PC

    MOV   SBUF, A

    JNB   TI, $

    CLR   TI

;---------------------

    CLR   P3.4       ;选通74LS125(通道2)

    MOV   SCON, #50H ;串口方式1, 可接收


    MOV   SBUF, #'O'

    JNB   TI, $

    CLR   TI

    MOV   SBUF, #'K'

    JNB   TI, $

    CLR   TI

    MOV   SBUF, #13  ;

    JNB   TI, $

    CLR   TI

    MOV   SBUF, #10  ;

    JNB   TI, $

    CLR   TI

;---------------------

S_END:

    RETI


TAB:                 ;共阳段码表

    DB  0C0H, 0F9H, 0A4H, 0B0H, 099H, 092H, 082H, 0F8H;0~7

    DB  080H, 090H, 088H, 083H, 0C6H, 0A1H, 086H, 08EH;8~F


END

;=================================================


程序执行后,屏幕截图如下:


51 单片机串口的扩充方法 - 非著名博主 - 电子信息角落


图片链接:http://xiangce.baidu.com/picture/detail/e59dd034244a30296b66430ce57b73137ef91a4d


在程序控制下,51 单片机随时监听通道2,一旦虚拟终端发来了一个字节的串行数据,单片机都要向虚拟终端回送 'OK'


这时,就是单片机和上位机之间的双工串行通信。


然后,单片机转向串口通道1,以方式0 输出两组七段码,令外接的 74LS164 显示刚刚收到的数据的高、低四位。


这时,就是简单的 SPI 通信方式。


在图中可以看到,数码管显示的是 41,这是在虚拟终端窗口中键入'A'时的现象,41 即字符 A 的 ASCII 码。


虚拟终端,它并不显示键入的内容,它仅仅显示单片机发出的信息,在图中可以看到显示出来的 OK、回车、换行。




74LS125 和 74LS126 都是 14 引脚的集成芯片,和 8250、16550A 等 40 引脚的专用串口芯片相比,要小巧的多。


每片(125 或 126)都含有四个独立工作的三态门。实际上,使用一片 125 或 126,也就可以实现上述的两个通道串口通信了。

注意:如果使用了一片芯片,那么通道控制的电平信号是相同的,这就需要使用单片机的两个引脚来分别控制两个通道。


多用几片三态门,为单片机多扩充几个串行口,也是可行的。



做而论道设计的这种串口扩充方案,硬件电路和软件,都已经在实际电路中做过实验,可以正常通信。


关键字:单片机  串口  扩充方法 引用地址:51 单片机串口的扩充方法

上一篇: 51 单片机的 P0 口
下一篇:51 单片机扩充外部中断

推荐阅读最新更新时间:2024-03-16 16:01

基于AT89C51的激光共聚焦扫描显微镜
作为一种具有较高横向分辨率和纵向分辨率的显微仪器,激光共聚焦扫描显微镜在各个领域有较大发展 文中介绍了激光共聚焦光学扫描的非线性问题,通过选取合适的振镜以及驱动控制系统消除非线性,最后完成扫描驱动系统的软件设计。 通过光学特性在生物组织病变前后所体现出的特征变化米检测并判断生物组织发生病变种类以及病变程度是医学界一个研究热点。激光共聚焦扫描显微镜不仅具有较高的平面分辨率,而且具有较高的深度分辨率,使其能够对佯品进行光学断层扫捕成像。 1 共聚焦扫描显微镜原理及系统结构 激光共焦扫描显微成像技术是采用共轭焦点技术,如图1所示。其工作原理为激光光源发出的激光通过准直系统入射到两向色镜上,经过扫描系统入射到扫捕透镜和透镜组上,进入光
[单片机]
基于AT89C<font color='red'>51</font>的激光共聚焦扫描显微镜
51单片机项目设计:定时宠物喂食系统
链接:https://pan.baidu.com/s/1CKrXkIHite1LWaWM26gjeQ 提取码:abcd 取走点赞哦~ 题目要求: 一、拟解决的主要问题 1、仔细分析题目要求,理解投食器工作原理,明确工作任务和设计要求,确定整体设计方案,选定单片机以及相关传感器等元器件,实现投食器设定时间,按设定时间发出响声,吸引宠物过来并自动投放食物等功能; 2、通过Proteus软件进行设计与仿真,给出系统硬件设计框图、元件选择及各部分电路原理图; 3、软件程序流程并编写程序; 4、软硬件联合调试; 5、完成实物焊接,调试实物, 二、设计方案 基于单片机的自动投食器设计,通过模块化的设计,利用ST
[单片机]
<font color='red'>51</font><font color='red'>单片机</font>项目设计:定时宠物喂食系统
单片机接受并解码ps2键盘发送过来的数据
//本程序可实现用单片机来接受从ps2键盘上传输过来的数据. //把电脑键盘插入51hei-5开发板的ps2,然后按键p0口就会有不同的灯亮 //跳线设置:默认 //晶振:6M #include reg51.h //包含单片机寄存器的头文件 #include intrins.h //包含_nop_()函数定义的头文件 //#include 51hei.h /******************************************************************************* 以下是引脚定义 ************************************************
[单片机]
51单片机学习——7--8*8LED点阵显示
原理 点阵简介 点阵的外部 点阵的内部结构 和矩阵按键相似,将每一行或每一列的LED阳极或阳极并联一起。如左图,如果我们想让某个led灯点亮,就让某一行输出高电平,某一列输出低电平。 我们通过74HC595向led点阵输入段选数据,即控制每一列哪些灯亮 通过P0口输入位选数据,即控制哪一列显示 74HC595 通过控制14,11,12引脚来输入数据。 14:DS(SER)对应网络标号的P3^4 11:SHCP(SRCLK)对应网络标号中的P3^6 12:STCP(RCLK)对应网络标号中的P3^5 上升沿就是数字电路中,数字电平从低电平(数字“0”)变为高电平(数字“1”)的那一瞬间(时刻)叫作上升沿。
[单片机]
<font color='red'>51</font><font color='red'>单片机</font>学习——7--8*8LED点阵显示
keilC51编译常见错误和警告说明
( 1 )L15 重复调用 ***WARNING L15: MULTIPLE CALL TO SEGMENT SEGMENT: ?PR?SPI_RECEIVE_WORD?D_SPI CALLER1: ?PR?VSYNC_INTERRUPT?MAIN CALLER2: ?C_C51STARTUP 该警告表示连接器发现有一个函数可能会被主函数和一个中断服务程序 ( 或者调用中断服务程序的函数 ) 同时调用 , 或者同时被多个中断服务程序调用。 出现这种问题的原因之一是这个函数是不可重入性函数 , 当该函数运行时它可能会被一个中断打断 , 从 而使得结果发生变化并可能会引起一些变量形式的冲突 ( 即引起函数内一些数据的丢失 , 可重入性函
[单片机]
AVR单片机入门系列(26)AVR PWM OC2
系统功能 AVR内部脉宽调制OC2输出实验,用LED指示PWM的频率,在PWM速度较低时,可观察到LED的闪烁。 硬件设计 AVR主控电路原理图 软件设计 //目标系统: 基于AVR单片机 //应用软件: ICC AVR /*01010101010101010101010101010101010101010101010101010101010101010101 ---------------------------------------------------------------------- 实验内容: AVR内部脉宽调制输出实验,用LED指示PWM的频率,在PWM速度较低时,可观察到LED的闪烁。 --
[单片机]
详细介绍单片机可视化编程的相关知识状况
A1:何谓开关电源模块单片机编程的MTD2002可视化?   Q1:可视化编程就是提供给用户可视化的开关电源模块器件模块配置界面使用户在不用关心具体MTD2002器件工作原理和设置的情况下直接生成所要配置的器件初始化代码及驱动程序,从而直接进行单片机应用层程序的开发。   A2:单片机的可视化编程是不是指在环境下避开复杂的指令编写而通过图形的方式产生指令代码?-在MTD2002可视化的条件下是否可以观察到仿真的结果?   Q2:是的。不过仿真的结果不能够直接观察到,而要通过将生成的开关电源模块代码装载到仿真器工具中才能看到。   A3:配置字节(option)怎么样通过C语言定位在0x80-0x84的地址?我现在是通过
[单片机]
单片机存储器一些相关知识的学习
接着上一期内容我们继续来认识一下单片机存储器,学习一些相关知识。 片内的ROM和片外的ROM有两种组合方案,第一个方案是51单片机内部的ROM一共有4K,4K是它的存储容量,它的存储空间分布地址分布式从0000H到0FFFH,大家要理解什么叫做存储容量,什么叫做地址分布,比如说一个空间里面可以容纳4085个人,这4085个人指这个空间的容量是4085个人,把十进制的4085转换成这个二进制转换成二进制的这种方式称之为4K,也就是按照二进制进行编码,一共会占到12个1,就是2的平方乘以2的10次方,这样的话它的地址空间就是从0000H到0FFFH,也就相当于是这个空间一共是4096个座位,每个座位上可以做一个8位的二进制数,这个座位
[单片机]
<font color='red'>单片机</font>存储器一些相关知识的学习
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved