1、 单片机系统设计及应用实验报告第 次实验实验名称: 单片机串行口与 PC 机通讯实验 专 业: 姓 名: 学 号: 同组人员: 学 号: 实 验 地点: 实验时间: 2016.12.15 评定成绩: 审阅教师: 目录实验目的 .1实验内容及要求 .4实验原理及程序设计流程图 5调试过程及相关记录 .6正确源代码 .6实验心得 .7一 实验目的(1 ) 掌握串行口工作方式的程序设计,掌握单片机通讯的编制;(2 ) 了解实现串行通讯的硬环境,数据格式的协议,数据交换的协议;(3 ) 了解 PC 机通讯的基本要求。二 实验内容及要求利用 8051 单片机串行口,实现与 PC 机通讯。本实验实现以下功
2、能,将从实验板键盘上键入的字符或数字显示到 PC 机显示器上,再将 PC 机所接收的字符发送回单片机,并在实验板的 LED 上显示出来。三 实验原理89C51 内部有一个可编程全双工串行通信接口。该部件不仅能同时进行数据的发送和接收,也可作为一个同步移位寄存器使用。本实验 LED 显示是在方式 0 下,串行口作为同步移位寄存器使用。此时SM2、RB8 、TB8 均应设置为 0。发送数据:TI=0 时,执行“MOV SBUF,A”启动发送,8 位数据由低位到高位从 RXD 引脚送出,TXD 发送同步脉冲。发送完后,由硬件置位TI。方式 0 的波特率为 fosc/12,即一个机器周期发送或接收一位
3、数据。与 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。波特率 = 2f3212(初 )四实验流程图四 调试过程及相关数据记录(1 ) 编写单片机发送和接收程序,并进行汇编调
4、试。运行 PC 机通讯软件 “commtest.exe”,将单片机和 PC 机的波特率均设定为 1200。(2 ) 运行单片机发送程序,按下不同按键(每个按键都定义成不同的字符) ,检查PC 机所接收的字符是否与发送的字符相同。(3 ) 最初,显示的不是数字而是符号,这是通讯软件的设置,HEX 显示,没有勾选。只能实现一次数据传输,原因是串口的工作方式改为 0 显示 led 后没有改回方式 1。(4) 将 PC 机所接收的字符发送给单片机,与此同时运行单片机接受程序,检查实验板 LED 数码管所显示的字符是否与 PC 机发送的字符相同。调试之前,显示为乱码,修改相关代码后显示正常。六源代码LE
5、D0 EQU 30H ;预设数值缓存存储位置ORG 0000HAJMP STARTORG 0023HAJMP INT_1ORG 0040HSTART: MOV SP,#30HMOV TMOD,#20H;设置定时器工作模式 2MOV TL1,#0E6H;设置波特率MOV TH1,#0E6HMOV SCON,#50H;设置串口工作模式MOV PCON,#00HMOV LED0,#0BBH;初始化 ledMOV R5,#03HSETB EA SETB ESSETB TR1KEYBORD:;键盘检测按键MOV P1, #0FFHMOV A, P1CPL AJZ KEYBORD ;是否全为 0LCALL
6、 LOOPMOV A, P1CPL AJZ KEYBORDPUSH ATHEN:MOV A, P1CPL AANL A, #0FFHJNZ THENLCALL LOOPPOP AJZ KEYBORDJB ACC.0, CH0JB ACC.1, CH1JB ACC.2, CH2JB ACC.3, CH3JB ACC.4, CH4JB ACC.5, CH5JB ACC.6, CH6JB ACC.7, CH7CH0:MOV A,#00HSJMP MAINCH1:MOV A,#01HSJMP MAINCH2:MOV A,#02HSJMP MAINCH3:MOV A,#03HSJMP MAINCH4:M
7、OV A,#04HSJMP MAINCH5:MOV A,#05HSJMP MAINCH6:MOV A,#06HSJMP MAINCH7:MOV A,#07HMAIN:CLR ACC.7MOV SBUF,ASJMP KEYBORDINT_1:;中断判断是发送还是接收JNB RI,SEND SJMP CEV SEND:CLR TI ;发送子程序MOV SCON, #00HMOV LED0,#00HLCALL SHOWMOV SCON, #50HSJMP BACKCEV:CLR RI ;接收子程序MOV A, SBUF ;接收数据MOV R3,AMOV SCON, #00H;改变串口工作模式 0LC
8、ALL FINDLCALL SHOWMOV SCON, #50H;换回串口工作模式 1BACK:RETISHOW: ;LED 送显MOV A,LED0MOV SBUF,AJNB TI, $CLR TIL:MOV A,#00HMOV SBUF,AJNB TI, $CLR TIDJNZ R5, LMOV R5,#03HRETFIND: ;查找对应断码MOV DPTR, #TABLE1MOV A, R3MOVC A, A+DPTRMOV LED0, ARETLOOP:MOV R2, #9FHMOV R7, #0FFHMOV R6, #0FFHLOOP1:DJNZ R6, $LOOP2:DJNZ R7, LOOP2DJNZ R2, LOOP1RETTABLE1:DB 0BBH, 09H,0EAH, 6BH,59H,73H,DB 0F3H, 0BH,0FBH,7BH, 0DBH,0F1H,0B2H,0E9H,0F2H,0D2H七运行结果实验结果如上图,可以看出,分别按键 S1-S7 对应 00-07 八个数值。当 PC 发送数据给单片机时,可以在 LED 上显示对应数值。上图分别为 0F 和 09。八实验心得本次实验实现的是单片机和 PC 的通讯,而单片机与单片机之间的通讯原理和本次实验也是类同的,我们可以举一反三掌握其通讯方法。