教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 互联网资料 >

单片机与PC机的串口通信 - 毕业论文(7)

来源:网络收集 时间:2026-09-11
导读: 软件设计 机发送数据过来。由于PC机在发送有效数据之前会加一个开始符(FFH),在有效数据之后会加一个开始符(7FH),所以单片机接收到主机发送来的FFH之后,置RAM存贮单元的初始地址30H单元,用来放紧接着接收的

软件设计

机发送数据过来。由于PC机在发送有效数据之前会加一个开始符(FFH),在有效数据之后会加一个开始符(7FH),所以单片机接收到主机发送来的FFH之后,置RAM存贮单元的初始地址30H单元,用来放紧接着接收的数据,程序中还用了一个计数器COUNTER来计接收到的数据位数,直到接收到7FH为止。程序框图见附录2。

单片机接收主程序MAIN及中断服务程序STR清单如下: COUNTER EQU 40H POINT EQU 41H ORG 0000H LJMP MAIN ORG 0023H LJMP SRT

MAIN:MOV SP,#60H

MOV TMOD,#20H ;定时器T1的方式2 MOV PCON,#00H ;串行口波特率控制位 MOV TH1,#0F4H ;2400Kb/s MOV TL1,#0F4H MOV 30H,#15

MOV COUNTER,#1

MOV R0,#30H ;接收数据存放区 MOV R1,#30H

SETB TR1 ;开始计数 CLR ET1 ;清定时中断

MOV SCON,#50H ;串行口控制寄存器给值 SETB EA ;开总中断 SETB ES ;开串行口中断 MOV IP,#10H MAIN1: ACALL DISP SJMP MAIN1 SRT: PUSH ACC PUSH 01H JBC RI,GET

SJMP EXIT GET: MOV A,SBUF

CJNE A,#0FFH,GET1 ;判断是否为开始字符,不是跳GET1放数据存贮 R0,#30H ;是开始符就置存贮区首地址30H,计数器清0并跳出中断 MOV COUNTER,#0 SJMP EXIT

GET1: CJNE A,#07FH,GET2 判断是否为结束符,不是跳GET2放数据存贮区 MOV R5,COUNTER ;是结束符,放发送缓存区开始字符 INC R5

第 31 页 (共 43 页)

MOV

PC机与MCS-51单片机的串口通信

MOV POINT,#30H MOV SBUF,#255 SJMP EXIT GET2: MOV @R0,A INC R0

INC COUNTER EXIT: POP 01H POP ACC RETI

6.1.2 单片机中断方式发送程序

由于本次设计的系统要实现的功能是将PC机送到单片机的数据回送到PC机,所以单片机要在接收完PC机数据后立即将数据回送到PC机。也就是说要将RAM存贮单元的初始地址30H单元内数据逐一发送出去。程序框图见附录2。

单片机发送主程序MAIN及中断服务程序SEND清单如下:

COUNTER EQU 40H POINT EQU 41H ORG 0000H LJMP MAIN ORG 0023H LJMP SRT

MAIN:MOV SP,#60H

MOV TMOD,#20H ;定时器T1的方式2 MOV PCON,#00H ;串行口波特率控制位 MOV TH1,#0F4H ;2400Kb/s MOV TL1,#0F4H MOV 30H,#15

MOV COUNTER,#1

MOV R0,#30H ;接收数据存放区 MOV R1,#30H

SETB TR1 ;开始计数 CLR ET1 ;清定时中断

MOV SCON,#50H ;串行口控制寄存器给值 SETB EA ;开总中断 SETB ES ;开串行口中断 MOV IP,#10H MAIN1: ACALL DISP SJMP MAIN1 SRT: PUSH ACC

第 32 页 (共 43 页)

软件设计

PUSH 01H

JBC RI,GET ;判断是否为接收,是跳GET接收程序,否执行发送程序 CLR TI DJNZ R5,SEND1 SJMP EXIT

SEND1: MOV R1,POINT MOV A,@R1 MOV SBUF,A INC R1 MOV POINT,R1 SJMP EXIT EXIT: POP 01H POP ACC RETI

6.1.3 单片机显示程序

单片机显示部分可以用来检测接收到的数据是否正确,单片机显示程序主要

将接AT89C51从串行口收到的数据显示出来。在程序设计中,在AT89C51RAM存贮器中的四个显示缓冲器单元30H-34H,分别存放着由PC机方发送过来的数据,AT89C51的P2口扫描输出总是只有一位为高电平,即4位显示器中仅有一位公共阴极为低电平,其它位为高电平,AT89C51的P0口相应位(阴极为低)的显示数据的段数据,使该位显示出一个字符,其它们为暗,依次地改变P2口输出为高的位,P0口输出对应的段数据,4位显示器就显示出由缓冲器中显示数据所确定的字符。程序框图见附录2。

单片机显示子程序清单如下:

DISP: PUSH ACC MOV DPTR,#TAB MOV R1,#30H

MOV A,COUNTER

JZ DISP2 ;没有接收到数据,跳出DISP继续显示P.等待状态 MOV R2,A MOV R6,#08H DISP1:MOV A,@R1 CPL A ANL A,#0FH

MOVC A,@A+DPTR

MOV P0,A ;送字形码到P0口 MOV A,R6

第 33 页 (共 43 页)

PC机与MCS-51单片机的串口通信

MOV P2,A ;送位控制到P2口 RR A

MOV R6,A DJNZ R7,$ INC R1 DJNZ R2,DISP1 ;判断接收位数 DISP2:MOV R1,#30H POP ACC RET

TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH DB 77H,7CH,39H,5EH,79H,0F3H

END

6.2 PC机通信程序设计

PC通信程序采用Visual Basic语言编程,VB提供了串行端口控制Mscomm来为应用程序提供串行通讯。该控件屏蔽了通信过程中的底层操作,我们可以设置、监视Mscomm控件的属性和事件,结合Timer控件即可完成对串行口的初始化和数据的输入输出工作。主程序按照通信协议的要求,首先确定波特率和信息帧格式,然后调用发送子程序将键盘输入的数据发送出去,为了使主机能够对整个检测过程进行控制,须要在发送命令以后设定等待的时间,也可以通过条件判断下一步是发送还是接收命令。对发送的命令,可能是文本方式或二进制代码。在发送二进制代码时,应特别注意发送的格式。

第 34 页 (共 43 页)

系统调试

7 系统调试

电路调试是整个系统功能否实现的关键步骤,我们将整个调试过程分为三大部分:硬件调试、软件调试和综合调试。

7.1 硬件调试

硬件调试主要是针对单片机、红外通信电路(包括发射和接收电路)以及PC机部分(包括电平转换电路)硬件电路分别进行调试。这一部分硬件调试主要分成两大块:上电前的调试和上电后的调试。 一、上电前的调试

在上电前,我们必须确保电路中不存在断路或短路情况,这一工作是整个调试工作的第一步,也是非常重要的一个步骤。在这部分调试中主要使用的工具是万用表,用来完成检测电路中是否存在断路或者短路情况等。 二、上电后的调试

在确保硬件电路正常,无异常情况(断路或短路)方可上电调试,上电调试的目的是检验电路是否接错,同时还要检验原理是否正确,在本次课程设计中,上电调试可分成三大块:单片机、红外通信和PC机部分的硬件调试。

1、单片机部分硬件调试:这一部分调试主要是检查时钟电路、复位电路是否接对,数码管是否亮这一系列问题。

2、红外通信电路调试:由于SM0038固定频率是38KHZ,我们是将单片机发送端接地,红外线发射器发射红外光,将红外线接收器正对发射器,距离约0.5m,用万用表的电压档接于红外线接收器的OUT脚与地之间。当发射器的频率与接收器不相吻合时,电压输出在+3.6v左右;吻合时,输出电压约为0v。调整R1见附录(电路原理图)之值(R1用15~20kΩ),直到万用表测出的电压接近0v,在实际 …… 此处隐藏:1767字,全部文档内容请下载后查看。喜欢就下载吧 ……

单片机与PC机的串口通信 - 毕业论文(7).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/445479.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)