单片机系统设计与及应用实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单片机系统设计与及应用实验报告
第次实验
实验名称:单片机串行口与PC机通讯实验
专业:
姓名:学号:
同组人员:学号:
实验地点:
实验时间:
评定成绩:审阅教师:
目录
实验目的 (1)
实验内容及要求 (4)
实验原理及程序设计流程图 (5)
调试过程及相关记录 (6)
正确源代码 (6)
实验心得 (7)
(1)掌握串行口工作方式的程序设计,掌握单片机通讯的编制;
(2)了解实现串行通讯的硬环境,数据格式的协议,数据交换的协议;
(3)了解PC机通讯的基本要求。
二.实验内容及要求
利用8051单片机串行口,实现与PC机通讯。
本实验实现以下功能,将从实验板键盘上键入的字符或数字显示到PC机显示器上,再将PC机所接收的字符发送回单片机,并在实验板的LED上显示出来。
三.实验原理
89C51内部有一个可编程全双工串行通信接口。该部件不仅能同时进行数据的发送和接收,也可作为一个同步移位寄存器使用。
本实验LED显示是在方式0下,串行口作为同步移位寄存器使用。此时SM2、RB8、TB8均应设置为0。发送数据:TI=0时,执行“MOV SBUF,A”启动发送,8位数据由低位到高位从RXD引脚送出,TXD发送同步脉冲。发送完后,由硬件置位TI。
方式0的波特率为fosc/12,即一个机器周期发送或接收一位数据。
与PC通讯是方式1:一帧10位的异步串行通信方式,包括1个起始位,8个数据位和一个停止位。
当TI=0时,执行“MOV SBUF,A”指令后开始发送。发送时的定时信号由定时器T1送来的溢出信号经过16分频或32分频得到的。在接收到第9位数据(即停止位)时,必须同时满足以下两个条件:RI=0和SM2=0或接收到的停止位为“1”,才把接收到的数据存入SBUF中,停止位送RB8,同时置位RI。在方式1下,SM2应设定为0。
波特率=
2SSSS∗S SSS 32∗12∗(S−S
初
四.调试过程及相关数据记录
(1)编写单片机发送和接收程序,并进行汇编调试。
运行PC机通讯软件“commtest.exe”,将单片机和PC机的波特率均设定为1200。
(2)运行单片机发送程序,按下不同按键(每个按键都定义成不同的字符),检查PC机所接收的字符是否与发送的字符相同。
(3)最初,显示的不是数字而是符号,这是通讯软件的设置,HEX显示,没有勾选。
只能实现一次数据传输,原因是串口的工作方式改为0显示led后没有改回方式1。
(4)将PC机所接收的字符发送给单片机,与此同时运行单片机接受程序,检查实验板LED数码管所显示的字符是否与PC机发送的字符相同。
调试之前,显示为乱码,修改相关代码后显示正常。
六.源代码
LED0 EQU 30H ;预设数值缓存存储位置
ORG 0000H
AJMP START
ORG 0023H
AJMP INT_1
ORG 0040H
START:
MOV SP,#30H
MOV TMOD,#20H;设置定时器工作模式2 MOV TL1,#0E6H;设置波特率
MOV TH1,#0E6H
MOV SCON,#50H;设置串口工作模式MOV PCON,#00H
MOV LED0,#0BBH;初始化led
MOV R5,#03H
SETB EA
SETB ES
SETB TR1
KEYBORD:;键盘检测按键
MOV P1, #0FFH
MOV A, P1
CPL A
JZ KEYBORD ;是否全为0
LCALL LOOP
MOV A, P1
CPL A JZ KEYBORD PUSH A
THEN:
MOV A, P1 CPL A
ANL A, #0FFH JNZ THEN LCALL LOOP POP A
JZ KEYBORD JB ACC.0, CH0 JB ACC.1, CH1 JB ACC.2, CH2 JB ACC.3, CH3 JB ACC.4, CH4 JB ACC.5, CH5 JB ACC.6, CH6 JB ACC.7, CH7
CH0:
MOV A,#00H SJMP MAIN CH1:
MOV A,#01H SJMP MAIN CH2:
MOV A,#02H SJMP MAIN
CH3:
MOV A,#03H
SJMP MAIN
CH4:
MOV A,#04H
SJMP MAIN
CH5:
MOV A,#05H
SJMP MAIN
CH6:
MOV A,#06H
SJMP MAIN
CH7:
MOV A,#07H
MAIN:
CLR ACC.7
MOV SBUF,A
SJMP KEYBORD
INT_1:;中断判断是发送还是接收
JNB RI,SEND
SJMP CEV
SEND:
CLR TI ;发送子程序
MOV SCON, #00H
MOV LED0,#00H
LCALL SHOW
MOV SCON, #50H
SJMP BACK
CEV:
CLR RI ;接收子程序
MOV A, SBUF ;接收数据
MOV R3,A
MOV SCON, #00H;改变串口工作模式0 LCALL FIND
LCALL SHOW
MOV SCON, #50H;换回串口工作模式1 BACK:
RETI
SHOW: ;LED送显
MOV A,LED0
MOV SBUF,A
JNB TI, $
CLR TI
L:
MOV A,#00H
MOV SBUF,A
JNB TI, $
CLR TI
DJNZ R5, L
MOV R5,#03H
RET
FIND: ;查找对应断码
MOV DPTR, #TABLE1
MOV A, R3
MOVC A, @A+DPTR
MOV LED0, A
RET
LOOP:
MOV R2, #9FH
MOV R7, #0FFH
MOV R6, #0FFH
LOOP1:
DJNZ R6, $
LOOP2:
DJNZ R7, LOOP2
DJNZ R2, LOOP1
RET
TABLE1:
DB 0BBH, 09H,0EAH, 6BH,59H,73H, DB 0F3H, 0BH,0FBH,7BH,
0DBH,0F1H,0B2H,0E9H,0F2H,0D2H
七.运行结果