单片机实验报告多机通讯.docx
《单片机实验报告多机通讯.docx》由会员分享,可在线阅读,更多相关《单片机实验报告多机通讯.docx(10页珍藏版)》请在冰豆网上搜索。
![单片机实验报告多机通讯.docx](https://file1.bdocx.com/fileroot1/2023-1/23/d5e73b4a-7e68-478f-93b0-df56434880d8/d5e73b4a-7e68-478f-93b0-df56434880d81.gif)
单片机实验报告多机通讯
单片机系统设计及应用实验报告
第次实验
实验名称:
单片机串行口与PC机通讯实验
专业:
姓名:
学号:
同组人员:
学号:
实验地点:
实验时间:
2016.12.15
评定成绩:
审阅教师:
一.实验目的
(1)掌握串行口工作方式的程序设计,掌握单片机通讯的编制;
(2)了解实现串行通讯的硬环境,数据格式的协议,数据交换的协议;
(3)了解PC机通讯的基本要求。
二.实验内容及要求
利用8051单片机串行口,实现与PC机通讯。
本实验实现以下功能,将从实验板键盘上键入的字符或数字显示到PC机显示器上,再将PC机所接收的字符发送回单片机,并在实验板的LED上显示出来。
三.实验原理
89C51内部有一个可编程全双工串行通信接口。
该部件不仅能同时进行数据的发送和接收,也可作为一个同步移位寄存器使用。
本实验LED显示是在方式0下,串行口作为同步移位寄存器使用。
此时SM2、RB8、TB8均应设置为0。
发送数据:
TI=0时,执行“MOVSBUF,A”启动发送,8位数据由低位到高位从RXD引脚送出,TXD发送同步脉冲。
发送完后,由硬件置位TI。
方式0的波特率为fosc/12,即一个机器周期发送或接收一位数据。
与PC通讯是方式1:
一帧10位的异步串行通信方式,包括1个起始位,8个数据位和一个停止位。
当TI=0时,执行“MOVSBUF,A”指令后开始发送。
发送时的定时信号由定时器T1送来的溢出信号经过16分频或32分频得到的。
在接收到第9位数据(即停止位)时,必须同时满足以下两个条件:
RI=0和SM2=0或接收到的停止位为“1”,才把接收到的数据存入SBUF中,停止位送RB8,同时置位RI。
在方式1下,SM2应设定为0。
四.实验流程图
四.调试过程及相关数据记录
(1)编写单片机发送和接收程序,并进行汇编调试。
运行PC机通讯软件“commtest.exe”,将单片机和PC机的波特率均设定为1200。
(2)运行单片机发送程序,按下不同按键(每个按键都定义成不同的字符),检查PC机所接收的字符是否与发送的字符相同。
(3)最初,显示的不是数字而是符号,这是通讯软件的设置,HEX显示,没有勾选。
只能实现一次数据传输,原因是串口的工作方式改为0显示led后没有改回方式1。
(4)将PC机所接收的字符发送给单片机,与此同时运行单片机接受程序,检查实验板LED数码管所显示的字符是否与PC机发送的字符相同。
调试之前,显示为乱码,修改相关代码后显示正常。
六.源代码
LED0EQU30H;预设数值缓存存储位置
ORG0000H
AJMPSTART
ORG0023H
AJMPINT_1
ORG0040H
START:
MOVSP,#30H
MOVTMOD,#20H;设置定时器工作模式2
MOVTL1,#0E6H;设置波特率
MOVTH1,#0E6H
MOVSCON,#50H;设置串口工作模式
MOVPCON,#00H
MOVLED0,#0BBH;初始化led
MOVR5,#03H
SETBEA
SETBES
SETBTR1
KEYBORD:
;键盘检测按键
MOVP1,#0FFH
MOVA,P1
CPLA
JZKEYBORD;是否全为0
LCALLLOOP
MOVA,P1
CPLA
JZKEYBORD
PUSHA
THEN:
MOVA,P1
CPLA
ANLA,#0FFH
JNZTHEN
LCALLLOOP
POPA
JZKEYBORD
JBACC.0,CH0
JBACC.1,CH1
JBACC.2,CH2
JBACC.3,CH3
JBACC.4,CH4
JBACC.5,CH5
JBACC.6,CH6
JBACC.7,CH7
CH0:
MOVA,#00H
SJMPMAIN
CH1:
MOVA,#01H
SJMPMAIN
CH2:
MOVA,#02H
SJMPMAIN
CH3:
MOVA,#03H
SJMPMAIN
CH4:
MOVA,#04H
SJMPMAIN
CH5:
MOVA,#05H
SJMPMAIN
CH6:
MOVA,#06H
SJMPMAIN
CH7:
MOVA,#07H
MAIN:
CLRACC.7
MOVSBUF,A
SJMPKEYBORD
INT_1:
;中断判断是发送还是接收
JNBRI,SEND
SJMPCEV
SEND:
CLRTI;发送子程序
MOVSCON,#00H
MOVLED0,#00H
LCALLSHOW
MOVSCON,#50H
SJMPBACK
CEV:
CLRRI;接收子程序
MOVA,SBUF;接收数据
MOVR3,A
MOVSCON,#00H;改变串口工作模式0
LCALLFIND
LCALLSHOW
MOVSCON,#50H;换回串口工作模式1
BACK:
RETI
SHOW:
;LED送显
MOVA,LED0
MOVSBUF,A
JNBTI,$
CLRTI
L:
MOVA,#00H
MOVSBUF,A
JNBTI,$
CLRTI
DJNZR5,L
MOVR5,#03H
RET
FIND:
;查找对应断码
MOVDPTR,#TABLE1
MOVA,R3
MOVCA,@A+DPTR
MOVLED0,A
RET
LOOP:
MOVR2,#9FH
MOVR7,#0FFH
MOVR6,#0FFH
LOOP1:
DJNZR6,$
LOOP2:
DJNZR7,LOOP2
DJNZR2,LOOP1
RET
TABLE1:
DB0BBH,09H,0EAH,6BH,59H,73H,
DB0F3H,0BH,0FBH,7BH,0DBH,0F1H,0B2H,0E9H,0F2H,0D2H
七.运行结果
实验结果如上图,可以看出,分别按键S1-S7对应00-07八个数值。
当PC发送数据给单片机时,可以在LED上显示对应数值。
上图分别为0F和09。
八.实验心得
本次实验实现的是单片机和PC的通讯,而单片机与单片机之间的通讯原理和本次实验也是类同的,我们可以举一反三掌握其通讯方法。