软件设计
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控件即可完成对串行口的初始化和数据的输入输出工作。主程序按照通信协议的要求,首先确定波特率和信息帧格式,然后调用发送子程序将键盘输入的数据发送出去,为了使主机能够对整个检测过程进行控制,须要在发送命令以后设定等待的时间,也可以通过条件判断下一步是发送还是接收命令。对发送的命令,可能是文本方式或二进制代码。在发送二进制代码时,应特别注意发送的格式。本节介绍在Windows 98环境下如何利用VB来实现PC机与单片机之间的串行通讯。
首先根据系统要实现的功能要求设计出PC机的通信界面如图6-14所示,然后对界面各个按键进行编程,不断修改和改进程序直到出现如图6-15所示界面为止。程序清单见附录3。
第31页 (共41页)
PC机与MCS-51单片机的串口通信
图6-14 PC机界面
6-15 通信成功的PC机界面
7 系统调试
电路调试是整个系统功能否实现的关键步骤,我们将整个调试过程分为三大部分:硬件调试、软件调试和综合调试。
7.1硬件调试
硬件调试主要是针对单片机、红外通信电路(包括发射和接收电路)以及PC机部分(包括电平转换电路)硬件电路分别进行调试。这一部分硬件调试主要分成两大块:上电前的调试和上电后的调试。 一、上电前的调试
在上电前,我们必须确保电路中不存在断路或短路情况,这一工作是整个调试工
第32页 (共41页)
系统调试
作的第一步,也是非常重要的一个步骤。在这部分调试中主要使用的工具是万用表,用来完成检测电路中是否存在断路或者短路情况等。 二、上电后的调试
在确保硬件电路正常,无异常情况(断路或短路)方可上电调试,上电调试的目的是检验电路是否接错,同时还要检验原理是否正确,在本次课程设计中,上电调试可分成三大块:单片机、红外通信和PC机部分的硬件调试。
1、单片机部分硬件调试:这一部分调试主要是检查时钟电路、复位电路是否接对,数码管是否亮这一系列问题。
2、红外通信电路调试:由于SM0038固定频率是38KHZ,我们是将单片机发送端接地,红外线发射器发射红外光,将红外线接收器正对发射器,距离约0.5m,用万用表的电压档接于红外线接收器的OUT脚与地之间。当发射器的频率与接收器不相吻合时,电压输出在+3.6v左右;吻合时,输出电压约为0v。调整R1见附录(电路原理图)之值(R1用15~20kΩ),直到万用表测出的电压接近0v,在实际测试电路中发现接收端的电平最低也有几个毫伏,于是我们认为该电压时,发送频率与接受频率已经吻合。
3、PC机部分硬件电路调试:这一部分电路硬件调试主要完成任务是使得通过MAX232CPE电平转换器转换前后的电平关系。
7.2 软件调试
一、单片机程序调试:
单片机部分调试工作的完成主要应用LCA51软件来完成,这一部分工作首先将显示部分程序调试好,然后利用VB串口助手(如图7-1)来检测所编的发送与接收程序是否正确,不断调试,不断修改直到正确为止。LCA51软件是基于WINDOWS95/98操作平台的多窗口编辑、调试软件。
LCA51软件全面支持汇编语言,C51语言,PL/M51语言的编译/连接、调试。软件支持单文件方式和工程化管理两种模式。用户可自定义各种语言的关键词.软件完全支持源语句级在线调试。高级语言还支持源文件调试和汇编语言指令行对照调试。用户可同时打开多个窗体编辑、调试、变量观察.用户可在线对原文件直接编辑、编译、连接、加载和调试,软件支持编译错误源文件定位。调试时用户可动态观察、修改设定变量(包括CPU片内寄存器、特殊寄存器及外部寄存器、内存)的值。
第33页 (共41页)
PC机与MCS-51单片机的串口通信
图7-1 串行助手
调试主要方法和技巧:
通常一个调试程序应该具备至少四种性能:跟踪、断点、查看变量、更改数值。 1.跟踪调试
调试应用程序所提供的重要性能也许就是跟踪应用程序。跟踪应用程序使用户能够在运行应用程序时,看到PC指针在应用源代码程序中的确切位置,LCA51提供以下方法对程序的执行进行跟踪。
跟踪型单步执行一条源语句程序。但是,如果调用一函数,则进入函数中,再执行函数的第一条源语句行前停止。
通过型单步仅执行下一条源语句程序,然后又停止。如果是调用一函数,运行完整个函数并停止在函数返回处。 2.断点调试
如果已知程序中某块代码实际运行正常的情况下,仍用跟踪调试方法,将大大浪费时间,而且很枯燥,因此调试中第二个重要工具是在源代码中预定处设置断点,大多数调试程序通过使用断点中止程序执行。
注意:如果用户调试高级语言,因为系统要占用2个断点,所以可设置的断点数为最大断点个数减2。
第34页 (共41页)
系统调试
LCA51调试软件还提供一次性断点:执行到光标所在行。如果用户按热键F4,调试程序继续执行程序代码,直到它到达光标行处或调试程序遇到另一个断点。 3.查看变量
显然,通过一系列指令查看应用程序,了解导致某一错误的执行也是一种非常有效的方法。LCA51软件提供了以下几种方法对变量进行查看。
通过添加观察项菜单可以将用户希望观察的变量添加到观察窗口中,长期进行观察。用户程序在单步或断点停下时,将更新变量的取值。
用户可以直接移动鼠标到相应的变量名上,点击鼠标左键,将出现一个提示窗口,显示这个变量的当前值。
用户还可以打开程序空间窗口、内部数据窗口、外部数据窗口进行数据块观察。 4. 更改数值
如果用户在调试过程中了解到变量的内容(超值、未定义等)会对程序性能产生影响或引起异常时,立即更改变量的内容是很有效的方法,以确保该值在正确范围内不会产生错误。LCA51软件提供一系列更改变量数值的方法,以便用户能检查程序对整个变量值范围的反应,而无需为设置每个值而重新加载调试。在更改对话框中用户输入要更改的取值,点击确定按钮。用户可以在输入框中输入十六进制或十进制数据。
二、PC机程序调试:我们利用VB串口助手(如图6-1)来检测PC机程序的正确与否,从而不断的修改直到两台PC机之间有线通信成功为止。
7.3 综合调试
在硬件和软件单独调试成功后进行软硬件综合调试,它可以分成以下几个步骤: (1)使PC机自发自接收通信成功;
(2)使PC机与单片机之间的有线通信成功;
(3)通过红外通信使得整个PC机与单片机之间的红外通信成功。
7.4故障分析与解决方案
一、故障出现情况
(1)PC机与单片机之间有线通信时,单片机与PC机都没有反应; (2)红外通信时调试红外线发送和接收时,接收端的电平一点都不改变;
第35页 (共41页)