MCS-51单片机的串口通信(通俗易懂)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

问:如果我们要将串口设置为工作方式1,并 且允许接收,该如何设置? 答:SCON=0x50;
返回
波特率 (2 SMOD / 32) * 定时器T1溢出率 T1溢出率 (f osc Baidu Nhomakorabea 12 ) /(2 K TC)
• 波特率的设置
在串口工作在方式1时,其波特率为可变,由定时器T1控 制。 MCS-51定时器的方式2就是自动重装初值的8位定时 器,所以用它来做波特率发生器最恰当。当外部晶振选用 11.0592MHz时,容易获得标准的波特率。 程序编写: TMOD=0x20; //T1工作方式2,8位自动重装初值 式中 SMOD——波特率倍增位; TH1=0xfd; //设置波特率为9600 fosc ——晶振频率; K ——定时器T1的位数; 程序该怎么写? TL1=0xfd; TC——定时器T1的预置初值。 TR1=1; //启动定时器 T1 。 把9600波特率代入得定时初值为 0xfd 方法1 方法2 返回
• 中断设置
如果要开启串口,必须要设置相应的中断允许控制位,即 串行中断允许控制位和总中断允许控制位。 (1)ES:串行中断允许控制位 当ES=1时打开串行中断,ES=0时关闭串行中断。 (2)EA:总中断允许控制位 当EA=1时打开总中断,EA=0时关闭总中断。
问:在这里我们要怎么设置? 答:ES=1; EA=1;
在探索中发现
• 受到飞箭飞行控制软件的启发,如果我们 把门锁也用计算机来进行控制的话,就克 服了之前的困扰。当然,家里面很多电器 设备都可以用计算机来进行控制。
通信:即一方传给另一方信息,或 者是一方接收来自另一方的信息。
在发现后学习
口并答 ,口: 即都计 通是算 信传机 端输上 口数的 。据串 的口 接和
课堂小结:
1、通信的概念及分类;
2、串行通信的分类; 3、串行通信的编程方法(即3个设置); 4、作品调试。
作业布置:
1、本设计只是单工通信,即单片机只负责接收数据,如何才能 做到半双工通信,即单片机也能向上位机发送数据? 2、思考并编写一个串口发送子程序,能够发送任意一个字符。
在感恩后 … 单击此处编辑母版标题样式
• 数据格式
单片机串口通信时数据是一帧一帧进行发送的。 表1 数据帧格式
起始位 数据位 校验位 停止位
0
D0
D1
D2
D3
D4
D5
D6
D7
0/1
1
注:对于我们MCS-51单片机(8位)而言,校验位没有意义,除非把数 据位改成7位,才能接收到校验位。
• 通信速率
在串行通信中用来衡量数据传输的速率的一个重要指标叫做波特率 (Baud Rate) ,亦称比特率。波特率的定义是每秒传输二进制数码的 位数。如:波特率为1200bps是指每秒钟能传输1200位二进制数码。
4、作品调试及展示
利用电脑上的上位机软件对下位机(即单片机)进行调试。
(a)用串口调试助手控制
(b)用VB编写上位机软件进行控制
知识拓展(用VB编写的上位机控制软件)
Dim kd_n, dkck_n, msg Private Sub Command1_Click() On Error GoTo Comm_Error dkck_n = dkck_n + 1 dkck_n = dkck_n Mod 2 If dkck_n = 1 Then MSComm1.CommPort = Right(Combo1.Text, 1) MSComm1.PortOpen = True Command1.Caption = "关闭串口" Command2.Enabled = True Else MSComm1.PortOpen = False Command1.Caption = "打开串口" Command2.Enabled = False End If Exit Sub Comm_Error: Select Case Err.Number Case 8002 MsgBox "无效端口", 48, "警告" Case 8005 MsgBox "端口已打开", 48, "警告" End Select dkck_n = 0 End Sub Private Sub Command2_Click() kd_n = kd_n + 1 kd_n = kd_n Mod 2 If kd_n = 1 Then Command2.Caption = "关灯" Shape1.FillColor = vbRed MSComm1.Output = "0" Else Command2.Caption = "开灯" Shape1.FillColor = &H8000000F MSComm1.Output = "1" End If End Sub
• 串行数据缓存寄存器SBUF 举例说明: SBUF=temp是把temp里面的内容写入SBUF, 即单片机从TXD引脚将其发送出去; temp=SBUF是读取SBUF里面的内容存入temp 变量,即单片机从RXD引脚将数据接收并存 入temp变量。
MCS-51单片机串口通信完整程序
#include "reg51.h" void Init() { SCON=0x50;//串行口工作方式1,允许接收 ES=1;//允许串行中断 TMOD=0x20;//T1工作方式2,8位自动重装初值 TH1=0xfd;//设置波特率为9600 TL1=0xfd; TR1=1; EA=1; } void main() { Init(); while(1); } void Uart_Int() interrupt 4//RI 置位后才响应中断,所以进行中断,RI肯定为1 { unsigned char temp; temp=SBUF; if(temp=='0') P2=0; else if(temp=='1') P2=0xff; RI=0; }
3、MCS-51串口编程
• 串口工作方式的设置 • 波特率的设置 • 中断设置
• 串行口工作方式的设置
MCS-51的串口有4种工作方式,它是由SCON中的SM1和SM0 来决定的。 • 串行口控制寄存器SCON 表2 SCON各位的定义
SCON
SM0
SM1
SM2
REN
TB8
RB8
TI
RI
(1)SM0,SM1:串行中断方式控制位 SM0,SM1=00,方式0,8位同步移位寄存器,其波特率为fosc/12; SM0,SM1=01,方式1,10位异步收发,其波特率可变,由定时器控制; SM0,SM1=10,方式2,11位异步收发,其波特率为fosc/64或fosc/32; SM0,SM1=11,方式3,11位异步收发,其波特率可变,由定时器控制。
串口
并口
问:计算上的串口和并口,是 用来干嘛的?
新授: 1、通信的分类?
答:并行通信和串行通信。
并行通信:数据的各位同时在多根数据线上发送或接收。 串行通信:数据的各位在同一根数据线上依次逐位发送或接收。
计算机1
计算机2
计算机1
计算机2
GND
GND
GND
GND
图1 并口通信
图2 串口通信
2、串行通信的分类?
(2)TI:发送中断标志位 用于指示一帧信息发送是否完成,完成后由硬件自动置位。TI在发送数 据前必须由软件清0。 (3)RI:接收中断标志位 用于指示一帧信息是否接收完,接收完后由硬件自动置位。RI在准备下 次接收之前也必须用软件清0。 (4)REN:允许接收控制位 REN=1时,允许接收;REN=0时,禁止接收。
单击此处编辑母版标题样式
MCS-51单片机的串口通信
主讲人:jxjsyg
你可曾有过这样的困扰?
• 妈妈下班回来忘记带钥匙,在门外喊你开 门,而这个时候你正好在家里玩游戏,而 且正玩到关键时刻,你会怎么办?
两个都令人不是很满 意的结果…
在科学中探索
飞 行 控 制 软 件 是 什 么 东 东?
能答 电: 路它 进是 行一 不个 同用 工计 作算 任机 务来 的控 程制 序各 。功
答:单工、半双工和全双工。
发 A 端 A 送 发送 端 接收 接 收
(a)寻呼机
( ( bc ) ) 对讲机 手机
A端 发送
发 B端 B B 端 接收 送 端 接收 发送 接 收
单工 全双工 半双工
• 通信要求
通信双方必须遵循一定的通信协议,即数据格式必须相同, 通信速率必须相同(缺省为9600,n,8,1)。
相关文档
最新文档