1、单片机实验报告多机通讯 单片机系统设计及应用实验报告第 次实验 实验名称: 单片机串行口与PC机通讯实验 专 业: 姓 名: 学 号: 同组人员: 学 号: 实 验 地点: 实验时间: 2016.12.15 评定成绩: 审阅教师: 一 实验目的(1) 掌握串行口工作方式的程序设计,掌握单片机通讯的编制;(2) 了解实现串行通讯的硬环境,数据格式的协议,数据交换的协议;(3) 了解PC机通讯的基本要求。二 实验内容及要求利用8051单片机串行口,实现与PC机通讯。本实验实现以下功能,将从实验板键盘上键入的字符或数字显示到PC机显示器上,再将PC机所接收的字符发送回单片机,并在实验板的LED上显示
2、出来。三 实验原理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”指令后开始发送。发送时的
3、定时信号由定时器T1送来的溢出信号经过16分频或32分频得到的。在接收到第9位数据(即停止位)时,必须同时满足以下两个条件:RI=0和SM2=0或接收到的停止位为“1”,才把接收到的数据存入SBUF中,停止位送RB8,同时置位RI。在方式1下,SM2应设定为0。四实验流程图四 调试过程及相关数据记录(1) 编写单片机发送和接收程序,并进行汇编调试。运行PC机通讯软件“commtest.exe”,将单片机和PC机的波特率均设定为1200。(2) 运行单片机发送程序,按下不同按键(每个按键都定义成不同的字符),检查PC机所接收的字符是否与发送的字符相同。(3) 最初,显示的不是数字而是符号,这是通
4、讯软件的设置,HEX显示,没有勾选。只能实现一次数据传输,原因是串口的工作方式改为0显示led后没有改回方式1。(4) 将PC机所接收的字符发送给单片机,与此同时运行单片机接受程序,检查实验板LED数码管所显示的字符是否与PC机发送的字符相同。调试之前,显示为乱码,修改相关代码后显示正常。六源代码LED0 EQU 30H ;预设数值缓存存储位置ORG 0000HAJMP STARTORG 0023HAJMP INT_1ORG 0040HSTART: MOV SP,#30HMOV TMOD,#20H;设置定时器工作模式2MOV TL1,#0E6H;设置波特率MOV TH1,#0E6HMOV SC
5、ON,#50H;设置串口工作模式MOV PCON,#00HMOV LED0,#0BBH;初始化ledMOV R5,#03HSETB EA SETB ESSETB TR1KEYBORD:;键盘检测按键MOV P1, #0FFHMOV A, P1CPL AJZ KEYBORD ;是否全为0LCALL 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, CH3J
6、B 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:MOV 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
7、 SEND: CLR TI ;发送子程序MOV SCON, #00HMOV LED0,#00HLCALL SHOWMOV SCON, #50HSJMP BACKCEV: CLR RI ;接收子程序MOV A, SBUF ;接收数据MOV R3,AMOV SCON, #00H;改变串口工作模式0LCALL 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
8、,#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的通讯,而单片机与单片机之间的通讯原理和本次实验也是类同的,我们可以举一反三掌握其通讯方法。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1