当前位置:文档之家› 单片机应用技能实训教案--项目9

单片机应用技能实训教案--项目9

单片机应用技能实训教案一项目8项目9单片机双机通信电路制作
任务1项目相关基本知识学习
送或接收一进制数据的位数称为波特率,单位为b/s,即位/秒。

串行口有四种工作方式,这四种工作方式对应三种波特率。

工作方式0 :波特率为=fsoc/12,不受SMOD位影响。

工作方式2:波特率=2SMOD X fsoc/64 (9-1 )
工作方式1和方式3:
波特率=2SMOD X( T1 溢出率)/32 (9-2 ) T1溢出率即为一次定时时间的倒数,即
T1 溢出率=M1(9-3 )
(2M x) 12 fsoc
其中x为定时初值,M由T1的工作方式决定,一般置T1 工作方式2, M=8将式9-3代入9-2,并整理后得:
o SMOD -
波特率- ----- 『■竺(6-4 )
384(2 x)
当已知晶振频率和所需的波特率时,可由式6-4计算定时器
的初值。

二、MCS-51单片机串行口工作方式1、2、3及应用
1、方式1
方式1是波特率可调的8位数据异步通信方式,发送或接收一帧信息为10位,其中包括1位起始位0, 8位数据位和1位停止位1。

方式1的发送是在T1-0的条件下,由任何一条以SBUF为目的地址的数据传送指令作为启动发送开始的。

发送时,由硬件自动生成一位起始位0,接着发送8位数据位,之后自动生成停止位1,数据从TXD端(P3.1引脚)输出。

当发送完一帧数据后,置中断标志TI为1。

串行口置为方式1,若RI=0 , REN=1时,允许串行口接收数据。

串行口米样RXD ( P3.0引脚),当米样到由1到0跳变时,确认是起始位“ 0”,便开始接收一帧数据。

方式1接收时,必
须同时满足以下两个条件:
(1)RI=0 ;
(2)停止位为1或SM2=0。

在满足以上两个条件后,8位数据存入SBUF,停止位进入串行口控制寄存器SCON的RB8位,同时置中断标志RI为1。

若不满足这两个条件,接收到数据不能存入SBUF,此组数据丢失。

2、方式2
方式2是9位数据异步通信方式,发送一帧信息为11位,其
中一位起始位0、8位数据位、第9位数据位和一位停止位1。

当通信需要进行波特率设置时,应采用方式1或方式3。

此时要计算定时器T1初值,并常设为方式2以获得需要的波特率。

重点说明如何启动发送以及如何将接收到的数据进行保存。

由老师与 同学共同 进
行程序 编写。

根据流程图,编写参考程序如下:
ORG 0000H
AJMP START ;转移到初始化程序 START
ORG 0023H ;串行口中断入口
AJMP CKZD
;转移到串行口中断服务程序 CKZD
ORG 0030H
;初始化程序入口 START : MOV 40H ,#00H ;给发送数据单元送立即数 01H
MOV
SCON #50H
;串行口方式 1初始化
MOV TMOD , #21H
;定时器T1初始化
MOV
TL1,#0F4H ;串行口方式 1波特率为2400
MOV TH1,#0F4H
SETB EA ;开中断总允许
SETB ES ;开串行口中断
SETB TR1 ;开定时器T1 简明介绍 MAIN : SJMP $
;等待接收/发送完成 多机通信 CKZD: ;中断服务子程序
原理,只要 PUSH ACC
;保存现场数据
同学了解 JNB RI,CKZD1 ;不是接收中断则转移到 CKZD1
多机通信 MOV 40H,SBUF ;是接收中断,将收到数据送 40H 单元 的原理。

CLR RI ;清RI ,为下次接收准备 CLR TI
MOV
SBUF , 40H ;
(a)主程序流程图
中断返回
(b)中断服务程序流程图
任务2双机通信电路的硬件、软件设计
统和LED显示电路(用于输出显示)。

2、电路设计
根据电路构成方案设计,对各组成部分进行设计。

2、元件选择
(1 )复习晶振电路元件及复位电路元件的选择。

(2)复习发光二极管电路元件选择。

二、应用程序编写
1、指令复习
请将下面每条指令举个应用例子。

MOV A, @Ri ; A・((Ri))
PUSH direct ;将direct中的内容压入堆栈。

RL A ; 将A中数据循环左移1位
INC Rn ; Rn —(Rn )+1
CJNE Rn, #data,rel ;比较不相等则转移,相等则顺序执行
SETB bit ; bit —1
CLR bit ; bit —0
JNB bit , rel ; bit位为1则转移,为0则顺序执行
2、指令学习
(1 )数据传送类指令
①MOV @Ri,A ; (Ri) —(A)
②MOV direct,@Ri ; direct—((Ri))
③MOV @Ri,direct ; (Ri) —(direct)
举例:设(A ) =26H、( 30H) =66H、(R0) =31H、( R1) =32H 分析下列指令的执行结果。

MOV @R0, A
MOV 30H,@R0
MOV @R1,30H
执行后,(30H) =26H、(31H) =26H、(32H) =26H , A、R0、R1中内容不变。

[温馨提示:数据传送指令中,间接寻址指令比较难掌握,但应用程序中还是经常使用,希望同学们多加练习。

]
3、乙机接收程序设计
根据项目要求,程序编写应分别编写甲机的发送程序和乙机和接收程序。

乙机接收程序与例9.1类似,下面冋学们和我一起来编写接收程序。

乙机的接收采用中断方式,参考程序如下:
ORG 0000H 老师和同学共同在黑板上绘制电路原理图。

通过提问或讨论方式由同学进行使用练习。

对各条指令进行讲解并举应用例子。

由老师和同学一起编写。

在老师引导下由同学老师共同完成流
开始
置发送数据首地址
将0~15分别送给30H~40H
单元
置定时器T1为方式2定时
置定时器初值确定串行口
波特率
开定时器,置串行口方式1
置发送数据首地址
开始串行发送吗?
N 「Y厂一
启动串行发送在老师引导下与同学起完成应用程序设计。

发送完成了吗?
清发送中断标志,发送数
据缓冲区地址加1
延时等待乙机数据处理
N
16个数据发完了吗?
'■-I-'
Y丨
5、甲机发送程序设计
根据流程图编写程序,参考程序如下:
S1 EQU P1.0
ORG0000H
AJMP START;转移到初始化程序START
ORG0030H;初始化程序入口
START:MOV R0,#30H;发送数据首地址送到R0
CLR A
ST1: MOV @R0,A;将依次加1的数据送到数据缓冲区
INC 1R0;数据缓冲区地址加1
INC ‘A
CJN
E R0,#40H,ST1;数据缓冲区置数未完则转移到ST1
MOV TMOD,#21H;初始化定时器T1,串行口波特率设置
MOV TL1,#0F4H
MOV TH1,#0F4H
SET
B TR1
;开定时器T1时间允许
任务3单片机双机通信电路的计算机仿真
任务4单片机双机通信电路的制作与调试。

相关主题