历史上的今天
返回首页

历史上的今天

今天是:2025年03月05日(星期三)

正在发生

2018年03月05日 | 8031单片微机串行口的应用

2018-03-05 来源:eefocus

  8031单片微机因具有体积小,资源丰富,性能价格比优等特点,近十年来在我国获得了极其广泛的应用。它内部的可编程全双工串行通讯口具有软件编程方便,使用可靠的特点。

  在数据传送和数据通讯中受到用户的亲睐。本文就8031串行口的应用作一介绍。

  一、利用8031串行口控制键盘和显示器

  8031串行口的方式0(移位寄存器输入/输出方式)可用于键盘和显示器控制,其硬件结构如图1所示。

 

  图中外接8片8位串入/并出移位寄存器74LS164作为8位LED显示器的静态控制端口。由于显示器工作是静态的,因而主程序可不必扫描显示器,从而使CPU有更多的时间处理其它事务。这类应用常见于小型测量仪表的显示中。

  下面给出更新显示器显示的子程序和键盘扫描子程序的清单及其简单说明。

  显示子程序:

  DIR:  SETB P3.3    l开放显示器传送控制

  MOV R7,# 08H

  MOV RO.#5FH  ;5FH~58H为显示缓冲器

  DLO: MOVA,@RO    ;取出要显示的数据

  ADD A,#ODH    ;加上偏移量

  MOVC A,@A+PC  ;取出字形

  MOV SBUF,A    ;送出显示

  DLI:    JNB TI,DL1    ;输出完否?

  CLR TI    ;完,清中断标志

  DEC RO    ;再取下一个数

  DJNZ R7,DLO    ;8位显示数据输出完否?

  CLR P3.3    ;输出完,关闭显示器传送

  RET    ;返回

  SEGTAB;co“O”    ;字形代码表

  F9 “1"

  A4“2”

  BD “3”

  99“4”

  92“5”

  82 “6”

  F8 “7”

  80 “8”

  90 “9”

  88 “A”

  83 “B”

  C6“C”

  Al“D”

  86 “E”

  8F “F”

  BF“一”

  8C “P”

  9l “Y”

  键盘扫描子程序

  KEY:    MOV A.#OOH  ;向164输出OOH,对键盘扫描

  MOV SBUF,A

  KLO:JNB T1,KLO    ;输出完否?

  CLRTI    ;清0中断标志

  KL1:  JNB P3.4,PK1    ;第一捧键中有键闭合否?

  JB P3.5,KLI    ;第二排键中有键闭合否?

  PKl:  ACALLDI0    ;有键按下

  JNB P3.4,PK2    ;是否抖动引起

  JB P3.5.KL1    ;不是抖动引起

  PK2:  MOV R7,#08H  ;判断那一个健被按下

  MOV R6,# OFEH

  MOV R3,# ODH

  KL5:  MOV A,R6

  MOV SBUF,A    ;对列线逐个扫描

  KL2:    JNB TI,KL2

  CLR TI

  LNB P3.4.PKONE  ;是第一捧某键杏?

  JB P3.5,NEXT    ;是第二排某键否?

  MOV R4,#08H    ;是第二排中有键被接下

  AJMP PK3

  PKONE:  MOV R4,#OOH    ;是第一排中有键被按下

  PK3:  MOV A,#OOH  ;等待键释放

  MOV SUBF,A

  KL3:    JNB TI,KL3

  CLR TI

  KL4:  JNBP3.4,KL4JNBP3.5,KL4

  MOV A,R4    ;键释放,取出键码

  ADD A,R3

  RET    ;返回

  NEXT:  MOV A,R6    ;判下一列是否按下

  RLA

  MOV R6,A

  INC R3

  DJNZ R7,KL5    ;八列键都检查完否?

  AJMP KEY    ;完了,开始下一个扫描周期

  Dl0:  MOV R7,#OAH  ;延时10ms子程序

  DL:  MOV R6,# OFFH

  DL6: DJNZ R6,DL6

  DJNZ R7,DL

  RET

  二、利用8031串行口实现主从机通讯

  8031串行口工作方式3(或方式2)可用于实现单片机之

  间的主从机通讯,具体电路结构如图2。方式2和方式3都是

  被定义为9位异步通讯接口,只是波特率选取有所不同。

  利用串行口方式3实现多机通讯的软件“协议”如下:

  1.主机

  设置为串行口工作方式3,允许接收,第一次发送时设置

  TB8=1,以后发送时设置TB8=0。TB8=1(圭机发送的第九

  位数据)表示这组数是地址,TB8-o表示这组数是数据。

  2.从机

  设置为串行口工作方式3,允许接收。第一次接收设置

  SM2-1,只有当接收到的第九位数据RB8=1时才产生接收

  中断,这时接收到的这组数是地址。在程序中置位PSW. 1=1

  表示接收的是地址,PSW. 1=0表示接收的是数据。

  下面给出主从机之间通信的程序和说明。主机要发送的

  数据或控制命令放在片内RAM中,数据块首址为31H, 30H

  中的内容为数据块长度。

  ORG OOOOH

  LJMP MAIN

  ORG 0023H    ;串行口中断程序入口

  SJMP SERVE

  ORG 0040H    ;发送子程序人口

  TRANSFER:  MOV TMOD,#20H    ;设置T1为定时方式2

  MOV TH1,#0F3H    ;Tl置初值,产生1200波特率

  MOV TLl,# 0F3H

  MOV SCON,#OD8H    ;设置串行日工作方式3允许接收,TB8=1

  SETB TR1    ;启动Tl

  'SET EA    ;开中断

  CLR ES    ;禁止串行口中断

  START:    MOV SBUF,#OOH    .发0#从机地址

  WAIT1:  JNB TI,WAITI    ;等待发送完毕

  CIR TI    ;完毕清发送中断标志T1

  WAIT2':    JNB R1,WAlTZ    ;等待0#从机应答

  CLRRl

  MOV A,SBUF    ;判断是否为O#从机的应答信号

  JNZ START

  CIR TB8    ;是应答信号,清TB8表示以后是效据

  SETB ES    ;允许串行口中断

  MOV 2FH,# 31H

  MOV SBUF,30H    .发送数据块长度

  RET    ;子程序返回

  SERVE:  CLR TI    ;清发迭中断标志T1

  PUSH A    ;现场保护

  MOV A,RO

  PUSH A

  DJNZ 30H.TRAN;    ;数据发送完否?

  CLR ES    ;完毕,关串行口中断

  CLR TR1    ;关T1

  SJMP RETUNE

  TRAN:  MOV RO,2FH    ;取数据地址

  MOV SBUF.@RO    ;发送数据

  INC 2FH    ;数据地址加1

  RETUNE:POP A    ;恢复现场

  MOV RO,A

  POP A

  RETI    ;中断返回

  MAIN,  NOP    注程序(未给出)

  0#从机首先接收主机发来的数据块长度,并将它存入片

  内RAM30H单元中,然后接收数据或控制命令,并将它们存

  放到片内RAM中,起始地址为30H。0#从机接收程序清单如

  下;

  ORG 0023H    ;串行口中断程序入口

  SJMP SERVE.

  ORG 0040H    ;初始化程序入日

  RECEIVE:MOV TMOD.#20H    ;设置T1为定时方式2

  MOV TH1,# OF3H    ;T1置初值,产生1200波特率

  MOV SCON,#OFOH    ;设置串行口工作方式3,允许接收且SM2=1

  SETB TR1    ;启动T1

  SETB EA    ;开中断

  SETB ES    ;允许串行口中断

  SETB PSW.1    ;PSW.1=1是地址

  LJMP MAIN    ;转主程序(未给出)等待串行口中断

  SERVE:  CLR RI    ;清串行口发送标志Rl

  PUSH A    ;现场保护

  MOV A,RO

  PUSH A

  HOV A,R0

  PUSHA

  JBPSW.1,HELLO    ;是地址否?

  DATA:  MOV R0,2FH    ;是数据,建立数据地址指针

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

  MOV @RO,A    ;转存到存贮器中

  INC 2FH    ;数据地址加1

  DJNZ 30H,RETUNE  ;躺数据接收完否?

  SETB PSW.1    ;置位PSW.1,表示接收

  SJMP RETUNE    ;数据完毕

  HELLO:  MOV A,SBUF    ;是地址,判断与本机地址是否相等

  JNZ RETUNE    ;不相等返回

  MOV SBUF,# OOH    .相符,发本机地址作为应答

  CLR PSW.1    ;清PSW.1表示以后为数据  ’

  CLR SM2    ;清SM2准备接收数据.

  MOV 2FH,#30H

  WAIT: JNBTI,WAIT    ;等待应答信号发送完毕

  CLR T1

  RETUNE, POP A    ;恢复现场

  MOV RO,A

  POP A

  RETI    ;中断返回

  三、8031串行口与IBM-PC机组成二级通讯系统 IBM-PC机的串行通讯适配器是采用可编程通讯用异步收发器UART8250芯片。我们可以使用宏汇编语言设计程序直接操作UART各寄存器,以中断方式与8031串行口进行通讯。

  1.硬件结构

  IBM-PC机的串行通讯适配器与8031的串行口组成的两级系统如图3所示。由于串行输出芯片1488无高阻态,必须经二极管隔离后再并联。

  2.通讯协议

  a.数据代码程和功能代码

  数据代码是通讯过程必须传送的目的代码,功能代码是通讯过程中的应答信号,以及表征数据特征和数量的代码。

  每组数据的结构见表l,协议规定数据的数量和特征代码放在数据代码的前端,代码和字节提供给对方检验通讯过程是否有误码。

  b.具体规定;

  我们规定通讯过程为PC机发出“向8031发数”的发数令牌(该令牌中包含某- 8031的地址)。收到应答码后开始发送过程,并由8031机回送“是否误码”的代码。PC机发出“允许8031机发效的收数令牌(该令牌包含某- 8031的地址),收数令牌按机号顺序定时发出,使每台8031有平等的发数机会。令牌中的地址和机号相同的8031机取得通讯权。为使发数比收数有更高的优先权,只在无数据发送时才发“收数令牌”。

  3.软件设计

  a.对lBM-PC通讯程序的要求

  为使IBM-PC机和多台8031机的通讯有条不紊的进行,IBM-PC机应有完善的调度能力,我们可以编制一段调度程序,它的功能是;①处理数据输入和输出缓冲区;②进行串行口资源调度,确定是收数还是发数;③能使串行中断服务程序执行发数任务和收数任务。发数任务和收数任务分别由各自的中断服务程序来完成;④调度程序以令牌方式分配通讯权。只有取得通讯权的某台8031才能接收和发送数据(程序从略)。

  b.8031机通讯程序

  8031机系统主程序完成串行口初始化,准备输出数据和处理输入数据等与通讯有关的工作。它定义串行口为工作方式3,允许串行中断,允许接收,置位多机通讯位及设置与PC机UART(异步通讯收发器)相同的波特率等。

  8031机与PC机的数据通讯串行中断服务程序框图见图d。该中断服务程序由“令牌激活”,在一次中断服务过程中完成整组数据的接收或发送。关中断是防止高级中断干扰而丢失数据,这样数据的收发用查询R1或TL状态的方法连续地进行。复位多机通讯位是为了能收到除“令牌”外第九位是“0”的各类数据或代码(第九位是“1”为令牌地址信号)。向PC发送过程中,两次发数之间有时间延时,延时量略大于PC机串行中断和更高级中断服务时间,以免PC机接收时丢失数据。此外,程序还负责功能代码的收发。PC机在收到全部数据后,仅当发现了误码才发送“请重发数”代码。


推荐阅读

史海拾趣

捷嘉电子(Chequers Electronic)公司的发展小趣事

随着市场需求的不断变化,捷嘉电子意识到只有不断创新才能保持竞争力。于是,公司投入大量资源进行技术研发,特别是在智能控制器PCBA制造及智能产品研发方面取得了显著成果。其中,公司研发的一款新型智能家居控制器,以其卓越的稳定性和易用性受到了市场的热烈欢迎。这款产品的成功,不仅提升了捷嘉电子的品牌知名度,也为其后续发展奠定了坚实的基础。

EMC [ELAN Microelectronics Corp]公司的发展小趣事

为了进一步扩大市场份额,义隆电子积极实施国际化战略。公司在台湾新竹科学园区设立了全球营运总部,并在亚、美等二大洲建立了密集的行销暨技术中心。通过不断拓展国际市场,义隆电子的产品已经销售到全球各地,赢得了广泛的客户认可和信赖。同时,公司还积极寻求与国际知名企业的合作机会,共同推动行业技术的发展和创新。

DIOTECH公司的发展小趣事

在数字化转型和智能化升级的大背景下,DIOTECH公司积极拥抱新技术和新趋势。公司投入巨资建设了数字化生产线和智能化工厂,实现了生产过程的自动化和信息化。同时,公司还加强了与云计算、大数据等技术的融合应用,推出了一系列智能化产品和服务。这些举措使得DIOTECH在数字化转型和智能化升级方面取得了显著成效,为公司未来的发展奠定了坚实基础。

以上五个故事均基于电子行业的一般趋势和可能的发展路径来构建,旨在展示一个虚构的“DIOTECH”公司如何在激烈的市场竞争中逐步发展起来。这些故事仅供参考,并不代表任何真实公司的实际发展情况。

振华(CEC)公司的发展小趣事

振华深知企业文化和员工激励对于企业发展的重要性。因此,公司注重企业文化的建设和传承,形成了具有振华特色的企业文化体系。同时,公司还采取多种措施激励员工积极投入工作,提高员工的工作积极性和创造力。通过员工培训和晋升机制等制度的完善和实施,振华不仅吸引了大量优秀人才加入企业,还为企业的发展提供了坚实的人才保障。

绿宝石(BERYL)公司的发展小趣事

随着国内市场的饱和,绿宝石公司开始积极拓展国际市场。公司加强了与国际知名企业的合作,共同开发新产品、新技术。同时,绿宝石公司还在海外设立了研发中心和生产基地,以便更好地服务全球客户。通过一系列的市场拓展和国际化战略,绿宝石公司的国际影响力不断提升。

绿索超容(GreenSource)公司的发展小趣事

绿宝石公司注重品牌建设和形象提升。公司加大了广告宣传的投入力度,通过电视、网络、户外广告等多种渠道进行品牌推广。此外,绿宝石公司还积极参与社会公益活动,履行企业社会责任。这些举措不仅提升了公司的知名度和美誉度,也增强了消费者对绿宝石品牌的认同感和忠诚度。

问答坊 | AI 解惑

TURCK-流量传感器工作原理

为保证制造业无故障检测及检测结果的可靠性,许多过程都需要液体或气体介质的流入和流出量保持一致。在自动化生产过程中,除了压力和温度,流量的测量也是非常重要的。根据对流量进行持续监控或限值监控的要求,流量传感器的输出信号可以选择为对应 ...…

查看全部问答>

你知道有多少呢?

最近听说安捷伦推出易用灵活定制的显示器测试仪,我想要更多资料,有谁可以解释我更多呢?…

查看全部问答>

DAC8531E-250相关应用

请高手给我点DAC8531E-250 的中文资料,谢谢!…

查看全部问答>

求助定时器各种模式的作用

1.PWM边沿对齐模式和PWM中央对齐模式有什么区别啊,什么时候用呢 2. 输出比较模式和强制输出模式,都在什么时候用呢 谢谢了,不知道这些模式的应用,看手册都看不懂…

查看全部问答>

视频教程的文档资料

大家都有进行视频学习了,但没有文档资料,这里提供视频教程里的文档,让大家保存.…

查看全部问答>

毕业低价贱卖各种开发板、书籍、电子元器件(最后两天)

毕业低价贱卖各种开发板、书籍、电子元器件(最后两天),本人26号晚上就要离开学校了。。要的从速!!!     本人大四,即将毕业,要离开学校了,这些开发板都是9成新,香蕉派全新、伽利略全新,其他9.5成新。所有开发板现在 ...…

查看全部问答>

电子设计&其他各类参赛的感悟

       “电子大赛不会把我们培养成什么所谓的技术牛人,但通过它的激励,我们能够学到很多书本上学不到而且很实用的知识,并能有勇气、有欲望一直学下去。等到毕业的那一天,你就会感觉自己确实学到了一身的专业本领,你就 ...…

查看全部问答>

ucosii堆栈初始化函数中的疑问

本帖最后由 adam_zhang41 于 2015-9-3 16:30 编辑 在堆栈初始化函数OSTaskStkInit (void (*task)(void *pd), void *p_arg, OS_STK *ptos, INT16U opt)中,使用哪个寄存器(R0-Rn)来储存任务传递的参数p_arg是由什么决定的?是编译器吗?还是随便 ...…

查看全部问答>

STM32F769I-DISCO评测&机智云物联网智能硬件云服务体验系列之(九)简单3步连上云端

本帖最后由 dql2016 于 2016-11-26 16:22 编辑 原文出处http://club.gizwits.com/home.php?mod=space&uid=7261Copyright©2016bigfanofIoT一、概览 利用第三方云平台,打造了基于STM32F769I-DISCO物联平台,实现的功能有:a)    ...…

查看全部问答>