单片机系统设计与及应用实验报告

  • 格式:doc
  • 大小:387.09 KB
  • 文档页数:8

下载文档原格式

  / 8
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

七.运行结果