您好,欢迎来到尔游网。
搜索
您的当前位置:首页单片机串行接口数字显示

单片机串行接口数字显示

来源:尔游网
用串行接口控制信号灯

一、原理:MCS-51单片机内除了4个并行接口外,还有一个串行通信I/O接口。通过这个串行接口,可以实现单片机之间以及单片机与PC机之间的通信。

进入Proteus原理图编辑环境,画出原理图。在这个图中,使用了两片ATC51单片机(U1,U2),分别构成两个单片机的应用系统(暂且用甲机和乙机表示)。图中将甲机的P3.0、P3.1交叉相连,并将两片ATC51共地,连接成一个双机通信系统。

功能:编写程序,通过甲机(使用U1单片机)向乙机(使用U2单片机)发送数据,乙机P1口所连接的8个发光二极管实现量电流。 从接图中看到,甲、乙双方只连了3根线,两根用于传输数据(将甲机内部RAM的数据送到乙机中,实际上只用其中的一根)。显然,使用这样的线路,不可能使用以前所介绍的8位数据同时传送的方

式,在一个时刻只能传送一位数据。这样就必须使用单片机的串行口。 再看图中,使用了单片机的P3.0和P3.1两个引脚。回顾一下P3口的第二功能,发现P3.0、P3.1分别是串行数据的接收端和发送端。按题目要求,甲机负责发送,乙机负责接收。

二 、编写 、汇编、运行程序 步骤如下:

(1) 在Keil中新建并保存项目,,选择CPU类型为ATC5。 (2) 因两个应用系统一个发送,一个接受,因此要分别编程。

在Keil新建文档,分别输入下面的程序:

甲机发送程序(保存为xx1.asm): ORG 0000H

LJMP START ORG 0100H

START: MOV TMOD,#20H

MOV TL1,#72H MOV TH1,#72H SETB TR1 MOV SCON,#40H MOV A,#0FEH

LOOP: MOV SBUF,A

JNB TI,$ CLR TI

RL A LCALL

DELAY

SJMP LOOP

DELAY: MOV R0,#0FFH D1: D2:

乙机接收程序(保存为xx2.asm): ORG 0000H

LJMP START ORG 0100H MOV R1,#0FFH DJNZ R1,D2

DJNZ R0,D1 RET END

START: MOV TMOD,#20H

MOV TL1,#72H MOV TH1,#72H SETB TR1 MOV SCON,#40H SETB REN

LOOP: JNB RI,$

CLR RI MOV A,SBUF MOV P1,A SJMP LOOP END

(3) 在Keil中分别对源程序xx1.asm 、xx2.asm程序进行汇编,

得到xx1.hex 、xx2.hex文件。

(4) 给CPU载入程序。这里使用了两个单片机,分别在U1的

CPU属性对话框中的Program File栏目中选中编译好的xx1.hex文件,在U2的CPU属性对话框中的Program File栏目中选中编译好的xx2.hex。

(5) 在Proteus中运行程序。单击Proteus ISIS编辑界面中的左

下角的运行键,使之处于运行状态。观擦发光二极管是否为亮点流动。

三.电路分析:(1)甲乙双方都有对定时器T 1进行编程的语句,而且双方对定时器的编程完全相同。这说明MCS-51单片机在进行串行通信时,是与定时器是有关系的。

串行通信:串行通信是指一个数据逐位顺序传送的通信方式,只要一对传输线就可以完成通信。通行线路简单,成本低,特别是数据为数较多和传送距离较远时,这一优点更为突出。但是速度比并行通信慢。

发送 计算接收 机1 计算机2或外

MCS-51单片机的串行口采用异步通信方式。在异步通信中,传送的数据之间是不连续的,是以字符为单位传送,字符间隔不固定。字符帧由发送端一帧一帧地发送,每一帧数据均为低位在前,高位在后,通过传输线被接收端一帧一帧地接收。发送端和接收端可以有各自的时钟控制数据的发送和接受,这两个时钟彼此,互不同步。

另外在异步通信中,对数据传送的速率有一定要求,要求发送端和接收端都要与相同的波特率工作。波特率就是每秒传送二进制数码的位数,是异步通信的另一个重要指标。波特率越高,数据传送速度越快。

异异步通信不需要传送同步时钟,字符长度不受,因此设备简单。缺点是,字符中因包含起始位和停止位而降低了有效数据的传输速率。

(2)另外,程序中还有SCON、SBUF这两个特殊功能寄存器,它们的作用就是对串行口进行控制。

1.数据缓冲器SBUF

两个互相的接受、发送缓冲器SBUF,共用一个99H。也就是说99H对应着2个寄存器:发送寄存器和接受寄存器。发送缓冲器用于存放要发送的数据,只能写入,不能读出。接收缓冲器用于存放接收端的数据,只能读出,不能写入。通过辨认对SBUF的指令是“读”还是“写”来区别是对接收缓冲器还是对发送缓冲器进行操作:读SBUF,例如“MOV A,SBUF”指令,就是读接收器缓冲器的内容;写SBUF,例如“MOV SBUF,A”指令,就是修改发送缓冲器的内容。

2.串行控制寄存器SCON

SCON可用于确定串行口通信的工作方式并控制串行通信的某些功能,监视和控制串行口的工作状态,也可用于存放要发送和接收到的第九个数据(TB8、TB9)并设有接受和发送中断标志RI和TI。

在任何模式中,CPU响应中断后,都必须用软件来清除TI和RI。 在项目中,在甲机发送和乙机发送接收程序中,都有CLR指令,就是用来清除TI和RI标志的。

(3)T1、R1分别是串行口发送和接收中断标志。项目中使用了查询方式,没有采用中断方式,因此在程序中没有中断服务程序,而是在判断RI或TI置位后,进行相应的处理。

参考文献:单片机原理及接口技术 第二版 李全利 高等教育出版社

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- axer.cn 版权所有 湘ICP备2023022495号-12

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务