PC机与单片机之间的串行通讯、数据的发送和接收

PC机与单片机之间的串行通讯、数据的发送和接收


2024年2月3日发(作者:)

PC机与单片机之间的串行通讯、数据的发送和接收

【摘 要】

本文以MCS-51单片机为例,详细介绍了PC机与单片机之间的串行通讯、数据的发送和接收。在Windows98下利用VB的串行通讯控件可实现PC机与单片机之间的通讯。其数据的发送和接收采用红外线通信方式,其优点是:省去了有线通信信号线的直接连接,使用简单,移动方便,微机与单片机无直接连接,属完全隔离状态,两者间不会因为电平的不同而造成数据传输的失误,抗干扰能力强。

本设计主要应用AT89C51作为控制核心,并与LED数码显示管、双向可控硅、红外发射与接收相结合的系统,充分发挥了单片机的性能。其优点硬件电路简单,软件功能完善,控制系统可靠,性价比较高等特点,具有一定的使用和参考价值。

【关键字】

MSC-51(单片机),红外,RS-232,电平转换器, 串行通信

半双工

第 1 页 共 56 页

【Abstract】

This text take one-chip computer MCS-51 for example ,

introduce a serial communication, data’s sending and

receiving . Under the Windows98 we make use of a

communication control of VB to achieve the

communication of the machine of PC and one-chip computer.

Its data’s sending and receiving adopts the method of

the infrared ray communication, its advantage is that

it exclude the direct link of signal line of with-wired

communication ,and usage are simple, and move is

convenience etc. The tiny machine have no direct

conjunction with single a machine, belonging to the

complete insulation appearance, can't result in the

error that data deliver both because give or get an

electric shock even and different, the antijam ability

is strong.

This design is a system that it applies AT89C51 as

control core and combine the LED figures manifestation

tube, MAX232CPE level changer, infrared’s sending and

receiving. The system completely exerts the function of

one-chip computer. Its advantage is that the hardware

circuit is simple; the software function is perfect; the

control system is dependable; the rate of price and

function is high etc. So the system has certainly

consult value.

【Keyword】

MSC-51(One-chip computer), infrared, RS-232, Level

changer, serial communication,half duplex

第 2 页 共 56 页

目 录

前言

3

第一章 系统分析

4

1. 1 系统功能的概述 5

1. 2 系统要求及主要内容 5

1.3 系统技术指标 5

第二章 系统总体设计

6

2.1 硬件设计思路 6

2.2

软件设计思路 7

第三章 硬件电路设计

7

3.1 单片机模块设计 8

3.2 红外通信(发射与接收)电路的设计 14

3.3 PC机模块的设计 17

第四章 串行口通信技术

20

4.1 单片机串行口通信 21

4.2 PC机串口通信 24

第五章 软件设计

25

5.1 单片机通信程序设计 25

5.2 PC机通信程序设计 29

第六章 系统调试

30

6.1 硬件调试 30

6.2 软件调试 31

6.3 综合调试 33

6.4 故障分析及解决方案 33

6.5 结论与经验 34

结束语

35

附录

36

附录1 电路原理图 36

附录2 程序流程图 38

附录3 程序清单 41

附录4 元器件清单 44

附录5 英文资料 45

附录6 中文翻译 52

参考文献

56

第 3 页 共 56 页

前 言

单片机的英文名称是Micro Controller unit,缩写为MCU,又称为微控制器,它是一种面向控制的大规模集成电路芯片。它应用简单灵活,使用非常广泛,但存在无法实时保存大量的数据、实时更新数据等缺点,因此经常需要把单片机和PC机的优势相结合组成系统。PC和单片机之间的通信方式有有线和无线通信技术之分,红外线通讯方案具有廉价、近距离、无线、低功耗、保密性强等优点,通讯连接方式有多种,如利用微机的串口、并口或通过专门的I/O板进行数据传送,单片机通过共享通道的方法挂在上述总线上。应用时应根据实际需要进行选择在我们的PC机和单片机的红外通信系统中,通信数据量很小、传输距离很近,因此选择了串口通信方式。

本文首先在第一章绪论介绍了此系统的功能、技术指标以及主要内容等等;在第二章论述了总体设计过程,确定了技术指标及器件的选择;第三章着重描述了系统硬件电路设计、硬件设计框图及所使用的各种芯片功能与特性;在第四章中重点剖析了软件设计的过程;第五章主要介绍了串行口的通信技术;最后在第六章中具体论述单片机、PC机部分、电平转换电路、红外通信的处理及调试。

由于本人水平有限,加之时间仓促,论文中难免会有错误和不足之外,恳请指导老师和各位专家老师批评指正。

第 4 页 共 56 页

第一章 系统分析

设计任务:PC机与单片机之间的红外通信—单片机部分

1.1 系统功能概述

系统主要实现功能是:由PC机键盘的输入发送给MCS-51单片机,单片机接收到PC机发来的数据后,回送同一数据给PC机,并在PC机屏幕上显示出来。只要PC机屏幕上显示的字符与键入的字符相同,即表明PC机与单片机间通信正常,红外通信成功。

微机与单片机红外线通信系统,由于我们本次毕业设计采用的是红外通信方式,考虑到红外通信存在发射与接收之间的相互干扰,所以本次设计采用是半双工(Half Duplex)串口通信,微机与单片机两个部分。微机部分是通过串口RS-232的TXD口发送数据,经电平转换电路之后送红外发射电路发射出去,由单片机部分接收,并相应的处理、显示之后再经红外发射电路返回给PC机,PC机检验发送与接受是否一致,标志着设计的成与败。微机部分用Visual Basic软件编写的界面作为PC机部分与单片机进行串口之间通信,其界面的设计、电平转换电路和红外发射、接收电路以及单片机部分的电路的设计等将在以下章节作详细地设计。

从实用的角度看,评价一个系统实用价值的重要标准,就是这个系统对社会生活和科技观念有多大的贡献。随着生活节奏的加快,人们将更加钟情于个人信息终端的智能化互联。另一方面,用无线设备来代替安全隐患的工作区采集数据,更加安全。因此,红外线有其不可估量的实用价值!

1.2 系统要求及主要内容

将微机中的二进制或ASCⅡ数据通过微机的RS-232串口经红外发射器发送缎带单片机,再由单片机将接收的二进制或ASCⅡ数据通过串口经红外发射器发送给微机,在微机中检查发送的二进制或ASCⅡ数据与接收到的二进制数据是否一致。

(1) 单片机部分主要完成接收微机发送的数据和将接收的数据回送给

机;

(2) 红外发发射部分完成将微机或单片机发送的数据通过红外发送给红外接收器。

(3) 红外接收部分主要完成接收红外信号并将红外信号转换为数据送给计算机。

(4) PC机部分主要完成将数据的发送给单片机和接受单片机发送的数据。

1.3 系统技术指标

微机与单片机红外线通信的主要完成以下功能:

第 5 页 共 56 页

单片机部分:

(1) 设计并制作单片机的串口通信的硬件系统;

(2) 用汇编语言编制串口通信软件;

(3) 要求把从微机发送来的原样发送回微机;

红外发射部分:

(1)自行设计红外发送器

(2)红外发送距离大于50cm

(3)系统稳定、抗干扰能力强

红外接收部分:

(1)自行设计红外接收器

(2)红外接收器的稳定、抗干扰能力要强

PC机部分:

(1)在微机部分采用Visual Basic编制RS—232通信软件

(2)通信软件具有数据发送和数据接受编辑框

(3)通信软件要实现发送数据与接受数据一致

根据系统要实现的功能以及要求,要实现单片机和PC机之间的红外通信,主要是实现上下微机之间能够互通信息,而采用红外通信,就是利用这种非电信号传送控制信息和数据信息,省去了有线方式信号线的直接连接,属完全隔离状态,安全可靠,能有效地隔离电气干扰,同时使用简单,移动方便,实现了通信双方非接触式的数据传送。它可以应用于高压、辐射、潮湿、有毒气体、粉尘等不利于人们现场控制的环境下,这种红外通信方案也可用于其它遥控、遥测的单片机应用场合。红外通信的重点在于信号的调制与解调,完成低误码率、高速率的信息传输。目前红外通信技术和集成技术的发展已将此方面做的比较平民化了。以普通的集成红外头为核心的红外收发模块即可完成此功能。单片机可通过编程控制外围部件,能实现较高的自动化程度。以它为系统核心的控制模块可实现主从控制,完成预定的任务。系统的进一步升级是与上位机实现红外通信,实现与整个网络的连通,达到资源共享和远程控制,这在当今这个信息化的社会里是非常有价值的!

第 6 页 共 56 页

第二章 系统总体设计

2.1硬件电路设计思路

硬件设计的任务是根据总体设计要求,在选择的机型的基础上,具体确定系统中所要使用的元器件,设计出系统的原理框图、电路原理图。

89C51单片机通过普通I/O口与PC机RS-232串口实现通信的硬件接口电路如图2 所示。由于PC 系列微机串行口为RS232C 标准接口,与输入、输出均采TTL 电平的89C51 单片机在接口规范上不一致,因此TTL 电平到RS-232 接口电平的转换采用MAXIM 公司的MAX232 标准MAX232CPE接口芯片,该芯片可以用单电压(+5V)实现RS232接口逻辑“1”(-3V~-15V)和逻辑“0”(+3V~+15V)的电平转换。

(1) 单片机部分硬件设计思路:本次设计单片机部分的硬件框图如图2-1所示。

显示电路

复位电路

CPU

红外发射电路

执行

单元

时钟电路

红外接收电路

图2-1 单片机部分硬件框图

(2) PC机部分硬件设计思路:PC机与单片机之间的红外数据收发装置的结构非常简单,其结构框图如图2-2所示。PC机及其兼容机的标准串行通信接口RS-232C有一个9芯的D型插座,该红外收发装置便是通过此接口插座与计算机连接,并由计算机通信软件控制其数据的收发,并由计算机通信软件控制其数据的收发。由于数据的传输采用了38KHZ信号进行调制、解调和发射、接收,因而更加安全可靠。具体的电路原理图将在第三章中作详细地分析设计。

第 7 页 共 56 页

图2-2 PC机部分硬件框图

2.2 软件设计思路

软件需要解决的是设定PC机串口和单片机串行口的工作方式,包括串行口的通讯速率、奇偶校验位、停止位等。

软件工作流程是:PC机发送一个数据信号,通过红外通信方式传送到单片机,单片机接收数据作相应的处理后回送到PC机。经测试,此系统可以在2400kbit/s速率下稳定工作,比较理想。

(1) 单片机部分软件设计思路: AT89C51单片机的P3.0 和P3.1 口分别串行通信的接收和发送端,其接口程序主要由INPUT 发送子程序和OUTPUT接收子程序组成。通信速率2400 bit /s,帧格式为N.8.1。发送时,先发送一个起始位(低电平),接着按低位在先的顺序发送8 位数据,最后发送停止位。接收时,先判断P3. 0 接收端口是否有起始低电平出现,如有则按低位在先的顺序接收8 位数,最后判断P3.0 口是否有停止高电平出现,如有则完成一个数据接收,否则继续等待。其中软件编写要严格按照异步通信的时序进行,每bit 位传送时间间隔按通信速率2400 bit /s计算为833μs,系统要求单片机晶振为11.0592MHZ。

(2) PC机部分软件设计思路:PC机有多种支持串行通信的软件,Visual Basic通信语句、C语言等等,本次毕业设计准备采用Visual Basic语言来实现PC机部分的通信,VB具有面向对象的设计方法,友好的用户界面,简单方便的串行通讯和实用性强等优点。

第三章 硬件电路设计

硬件的功能由总体设计所规定,硬件设计的任务是根据总体设计要求,在选择的机型的基础上,具体确定系统中所要使用的元器件,设计出系统的电路原理图,必要时做一些部件实验,以难电路图的正确性,以及工艺结构的设计加工、印制板的制作、样机的组装等。

根据本次毕业设计的要求以及要实现的功能,查阅了很多有关PC机与单片机之间通信的书籍以及红外通信方面的知识,对硬件电路的设计做了很深刻的研究。

我们将整个PC机与单片机之间的红外通信系统分成三大模块:PC机模块、红外通信模块(红外发射和红外接收)以及单片机模块,各个模块都承担着各自的任务。

在设计单片机模块时,考虑到单片机本身并不具备红外通信接口,利用单片机的串行接口与单片机外的红外发射和接收电路,组成一个应用于单片机系统的红外串行通信接口;PC机通过RS-232进行数据的传输,考虑到PC微机串口的电平和单片机的输入输出的TTL电平不一致,在整个电路设计时要考虑电平转换电第 8 页 共 56 页

路,除此之外本系统的传输是采用的无线通信,因此还需要设计红外发射与接收电路,具体每一部分的设计将在以下章节中详细分析。

3.1 单片机模块

根据系统功能要求以及单片机硬件电路设计思路(如图2-1)对单片机模块进行设计,要使单片机准确的接收与发送,并且使接收到的数据能显示出来,所以整个单片机部分分为时钟电路、复位电路、执行元件以及显示电路四个部分。

3.1.1 执行元件

本次毕业设计的单片机部分的执行元件我们采用MCS-51T系列的AT89C51(其引脚图如图3-1),由于它本身带有一定的优点。AT89C51是一种带4K字节闪烁可编程可擦除只读存储器(FPEROM—Falsh Programmable and Erasable

Read Only Memory)的低电压,高性能CMOS8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器, AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。

图3-1 AT89C51引脚图

一、主要特性:

·与MCS-51 兼容

·4K字节可编程闪烁存储器

寿命:1000写/擦循环

数据保留时间:10年

·全静态工作:0Hz-24Hz

·三级程序存储器锁定

·128*8位内部RAM

第 9 页 共 56 页

·32可编程I/O线

·两个16位定时器/计数器

·5个中断源

·可编程串行通道

·低功耗的闲置和掉电模式

·片内振荡器和时钟电路

二、管脚说明:

(1)VCC:供电电压;

(2)GND:接地;

(3)P0口:P0口为一个8位漏极开路双向I/O口,每脚可吸收8TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。

(4)P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。

(5)P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。

(6)P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。

P3口也可作为AT89C51的一些特殊功能口,如下表3-1所示:

表3-1 P3口的第二功能

引 脚

P3.0

P3.1

P3.2

P3.3

P3.4

第二功能

RXD

TXD

INT0

INT1

T0

信 号 名 称

串行数据接收

串行数据发送

外部中断0请求

外部中断1请求

定时器/计数器0计数输入

第 10 页 共 56 页

P3.5

P3.6

P3.7

T1

WR

RD

定时器/计数器1计数输入

外部RAM写选通

外部RAM读选通

P3口同时为闪烁编程和编程校验接收一些控制信号。

(7)RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

(8)ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时,

ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。

(9)/PSEN:外部程序存储器的选通信号。在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。

(10)/EA/VPP:当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。

(11)XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。

(12)XTAL2:来自反向振荡器的输出。

三、振荡器特性:

XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。

四、芯片擦除:

整个PEROM阵列和三个锁定位的电擦除可通过正确的控制信号组合,并保持ALE管脚处于低电平10ms 来完成。在芯片擦操作中,代码阵列全被写“1”且在任何非空存储字节被重复编程以前,该操作必须被执行。

此外,AT89C51设有稳态逻辑,可以在低到零频率的条件下静态逻辑,支持两种软件可选的掉电模式。在闲置模式下,CPU停止工作。但RAM,定时器,计数器,串口和中断系统仍在工作。在掉电模式下,保存RAM的内容并且冻结振荡器,禁止所用其他芯片功能,直到下一个硬件复位为止。

3.1.2时钟电路

第 11 页 共 56 页

时钟电路是计算机的心脏,它控制着计算机的工作节奏。MCS-51单片机允许的时钟频率是因型号而异的典型值为12MHZ

MCS-51内部都有一个反相放大器,XTAL1、XTAL2分别为反相放大器输入和输出端,外接定时反馈元件以后就组成振荡器,产生时钟送至单片机内部的各个部件。AT89C51是属于CMOS8位微处理器,它的时钟电路在结构上有别于NMOS型的单片机。

CMOS型单片机内部(如AT89C51)有一个可控的负反馈反相放大器,外接晶振(或陶瓷谐振器)和电容组成振荡器,图3-2为CMOS型单片机时钟电路框图。振荡器工作受/PD端控制,由软件置“1”PD(即特殊功能寄存器PCON.1)使/PD=0,振荡器停止工作,整个单片机也就停止工作,以达到节电目的。清“0”PD,使振荡器工作产生时钟,单片机便正常运行。图中SYS为晶振或陶瓷谐振器,振荡器产生的时钟频率主要由SYS参数确定(晶振上标明的频率)。电容C1和C2的作用有两个:其一是使振荡器起振,其二是对振荡器的频率f起微调作用(C1、C2大,f变小),其典型值为30pF。

图3-2 CMOS型单片机时钟电路框图

3.1.3 复位电路

计算机在启动运行时都需要复位,使中央处理器CPU和系统中的其它部件都处于一个确定的初始状态,并从这个状态开始工作。

MCS-51单片机有一个复位引脚RST,它是史密特触发输入(对于CHMOS单片机,RST引脚的内部有一个拉低电阻),当振荡器起振后,该引脚上出现2个机器周期第 12 页 共 56 页

(即24个时钟周期)以上的高电平,使器件复位,只要RST保持高电平,MCS-51保持复位状态。此时ALE、PSEN、P0、P1、P2、P3口都 输出高电平。RST变为低电平后,退出复位,CPU从初始状态开始工作。

本次毕业设计采用的复位方式是自动复位方式。对于CMOS(AT89C51)单片机只要

接一个电容至VCC即可(见图3-3)。在加电瞬间,电容通过电阻充电,就在RST端出现一定时间的高电平,只要高电平时间足够长,就可以使MCS-51有效的复位。RST端在加电时应保持的高电平时间包括VCC的上升时间和振荡器起振的时间,Vss上升时间若为10ms,振荡器起振的时间和频率有关。10MHZ时约为1ms,1MHZ时约为10ms,所以一般为了可靠的复位,RST在上电进应保持20ms以上的高电平。图3-8中,RC时间常数越大,上电进RST端保持高电平的时间越长。当振荡频率为12MHZ时,典型值为C=10uf,R=8.2kΩ。

若复位电路失效,加电后CPU从一个随机的状态开始工作,系统就不能正常运转。

图3-3 上电复位电路

3.1.4 显示电路

本次毕业设计的显示电路采用LED数码管动态显示,LED(Light-Emitting

Diode)是一种外加电压从而渡过电流并发出可见光的器件。LED是属于电流控制器件,使用时必须加限流电阻。LED有单个LED和八段LED之分,也有共阴和共阳两种。

一、显示器结构

常用的七段显示器的结构如图3-4(a)所示。发光二极管的阳极连在一起的称为共阳极显示器(如图3-4(b)所示),阴极连在一起的称为共阴极显示器(如图3-4(c)所示)。1位显示器由八个发光二极管组成,其中七个发光二极管a~g控制七个笔画(段)的亮或暗,另一个控制一个小数点的亮和暗,这种笔画式的七段显示器能显示的字符较少,字符的开头有些失真,但控制简单,使用方便。

第 13 页 共 56 页

(a)外形 (b)共阳极 (C)共阴极

图3-4 七段发光显示器的结构

二、显示方式

为了节省I/O口线,我们采用的动态显示方式。

所谓动态显示,就一位一位地轮流点亮各位显示器(扫描),对于每一位显示器来说,每隔一段时间点亮一次。显示器的亮度既与导通电流有关,也与点亮时间和间隔时间的比例有关。调整电流和时间参数,可实现亮度较高较稳定的显示。若显示器的位数不大于8位,则控制显示器公共极电位只需8位口(称为扫描口),控制各位显示器所显示的字形也需一个8位口(称为段数据口)。4位共阴极显示器和AT89C51的接口逻辑如图8-7所示。AT89C51的P0口作为段数据口,经同相驱动器7407接显示器的各个段;P2口作为扫描口,经反相驱动器7406接显示器公共极。

对于图3-5中的4位显示器,在AT89C51RAM存贮器中设置四个显示缓冲器单元30H-34H,分别存放4位显示器的显示数据,AT89C51的P2口扫描输出总是只在一位为高电平,即4位显示器中仅有一位公共阴极为低电平,其它位为高电平,AT89C51的P0口相应位(阴极为低)的显示数据的段数据,使该位显示出一个字符,其它们为暗,依次地改变P2口输出为高的位,P0口输出对应的段数据,4位显示器就显示出由缓冲器中显示数据所确定的字符。

第 14 页 共 56 页

图3-5 4位动态显示电路

3.2红外通信(发射与接收)模块

红外线通讯是一种廉价、近距离、无线、低功耗、保密性强的通讯方案,主要应用于无线数据传输,有时也用于无线网络接入和近程遥控。

红外通信的基本原理:红外通信的基本原理是发送端将基带二进制信号调制为一系列的脉冲串信号,通过红外发射管发射红外信号。红外通信是利用950nm近红外波段的红外线作为传递信息的媒体,即通信信道。常用的有通过脉冲宽度来实现信号调制的脉宽调制(PWM)和通过脉冲串之间的时间间隔来实现信号调制的脉时调制(PPM)两种方法。本系统采用的为脉宽调制方法,发送端采用脉宽调制(PWM)方式,将二进制数字信号调制成某一频率的脉冲序列,并驱动红外发射管以光脉冲的形式发送出去;接收端将接收到的光脉转换成电信号,再经过放大、滤波等处理后送给解调电路进行解调,还原为二进制数字信号后输出。第 15 页 共 56 页

简而言之,红外通信的实质就是对二进制数字信号进行调制与解调,以便利用红外信道进行传输。

单片机红外通信系统(硬件原理图见图3-6)的红外发射和红外接收电路主要由单片机AT89C51、CD4011与非门、红外发射管PH30B、红外一体化接收头SM0038(见图3-7所示),以及驱动三极管8550、电阻和电容组成。我们将红外通信模块分为红外发射和接收两部分。

图3-6 单片机红外通信硬件原理图

(a) 红外发射管 (b)红外接收管

第 16 页 共 56 页

图3-7 红外发射管和红外一体化接收头

一、红外发射硬件电路

红外线发射器由于控制方式不同,很难做到一体化,大多是由分力元件组装而成。本章节将重点讲一下红外线发射器电路原理图见图3-8所示。

图3-8 红外发射电路原理图

红外发送电路的工作原理为:串行数据由单片机的串行输出端TXD(接图中IN端)送出并驱动YF1,若数位“0”使YF1输出高电平,通过YF2、YF3和电阻R2电容C组成的震荡电路,将信号调制成38kHz的载波信号,并利用红外发射管D以光脉冲的形式向外发送。若数位“1”YF1输出低电平,使YF2和YF3停止震荡,使 YF4输出高电平使驱动管8550截止,红外发射管D不发射红外光。

二、红外接收硬件电路

红外线接收器是红外线通信成败的关键所在,以前大多采用红外线接收专用芯片CA20106A 以及外围部分元器件(红外线接收管、电阻、电容等)。实际使用时常出现接收灵敏度过高或过低,工作欠稳定,加之装配焊接麻烦、调试不便、体积大、抗干扰能力较差等等,现已基本被淘汰。目前采用最多的是一种一体化的红外线接收头,体积小巧(外形类似三极管)、价格低廉、使用方便、无须调整、抗干扰能力强、工作稳定可靠。红外接收电路选用新日本株式会社公司生产的专用红外一体化接收头SM0038,集红外线接收和放大于一体,不需要任何外接元件,就能完成从红外线接收到输出与TTL电平信号兼容的所有工作,因此它适合于各种红外线数据的传输,是代替CA20106A和接收二极管等红外接收放大器的理想元件。

图3-7(b)是其正视图(半球面的红外线接收面正对我们),三个输出脚依次为: GND(地)、+(电源正端)、OUT(红外线经接收后经解调、整形的输出脚)。

第 17 页 共 56 页

图3-11 红外接收基本电路

根据SM0038的工作原理对其外围电路进行设计,具体硬件原理图见图3-11所示,其中1端为接地脚,2端接电源,3端接信号输出端,R和C组成去耦电路抑制电源干扰。由于红外一体化接收头SM0038的灵敏度高,因此在实际应用电路中要在电源和地之间外接上拉电阻来抗干扰。

3.3 PC机模块

根据系统功能要求以及PC机硬件电路设计思路(如图2-2所示)对PC机模块进行设计,要使PC机通过红外线准确的接收与发送,必须要对其外围电路进行设计。由于无线收发装置工作于TTL逻辑电平(0V和5V),而计算机RS-232总线上输入、输出数据和控制信号为+12V左右的电压,因此用IC1(MAX232CPE)进行转换。如图3-12为PC机部分的电路原理图。

第 18 页 共 56 页

图3-12 PC机收发数据电路原理图

一、数据的传输

对所设计的原理图进行分析,数据的传输分为两大部分:数据的发送和数据的接收。下面就两部分作一下介绍。

1、数据发送

当电路工作于发送数据状态时,PC机的RTS端输出高电平,经IC1电平转换打开IC3(74LS08)的与门B1,使PC机TXD端输出的数据经红外发射电路发射出去;RTS信号IC1反相后作为CTS信号送入计算机,同时还关闭与门B2;使计算机不接收其它数据信号。

2、数据接收

当电路工作于接收数据状态时,计算机的RTS端输出和CTS端输入均为低电平,使IC3的B1、B2的工作状态正好相反,发射部分被B1封锁,与门B2则打开使用权电路处于接收工作状态,从红外接收端接收过来的数据由RXD端送处计算机。该必发器的数据传输速率最好设在2400b/s为宜,以确保数据传输的可靠性。

二、器件的介绍

1、RS-232C

RS-232C是美国电气工业协会推广使用的一种串得通信总路线标准,是DCE(数据通信设备,如微机)和DTE(数据终端设备,如CRT)间传输串行数据的接口总线。

RS-232C最大传输距离为15m,最高传输速率约20kbps,信号的逻辑0电平为+3V~+15V。逻辑1电平为-3V~-15V。

电气特性:

 EIA-RS-232C对电器特性、逻辑电平和各种信号线功能都作了规定;

 在TxD和RxD上:逻辑1(MARK) =-3V~-15V

逻辑0(SPACE)=+3~+15V

 在RTS、CTS、DSR、DTR和DCD等控制线上:

信号有效(接通,ON状态,正电压)=+3V~+15V

信号无效(断开,OFF状态,负电压)=-3V~-15V

2、RS-232连接器DB-9

DB-9是RS-232信号线的连接器,其连接器的机械特性见图(3-13),表 1所示RS-232信号线名称、符号以及对应在DB-9上的针脚号。

第 19 页 共 56 页

图3-13连接器的机械特性

表3-1 RS-232信号线和DB-9引脚关系

符 号

DCD

RXD

TXD

DTR

GND

DSR

RTS

CTS

RI

名 称

接收信号载波检测

数据接收线

数据发送线

DTE装置数据就绪

公共地

DCE装置就绪

请求发送

清除发送

振铃指示

引 脚

1

2

3

4

5

6

7

8

9

3、电平转换器MAX232CPE

由于RS-232C总线上传输的信号逻辑电平与TTL逻辑电平差异很大,所以就存在这两种电平的转换问题,下面就介绍一下电平转换器MAX232CPE。

MAX232CPE能将RS-232C电平转换成TTL电平,也能将TTL电平转换成RS-232C电平,只需单+5V供电,由内部升高电路产生10V~+12V。内部有两个发送器(TTL电平转换为RS-232C电平)和两个接收器(RS-232电平转换为TTL电平)。MAX232CPE芯片引脚排列和外部元件连接线路如图3-14所示。

第 20 页 共 56 页

图 3-14 MAX232CPE 电平转换器及外接元件图

第四章 串行口通信技术

在设计单片机与PC机程序时,PC机串口和单片机串行口的设置是至关重要的一个环节,所以在软件设计前必须对串行口的通信技术作系统的研究。本章节是为软件设计服务的。

串行数据通信指数据是一位一位顺序传送的通信方式,它的突出优点是只需一对传送线(利用电话线就可作为传送线),这样就大大降低了传送成本,特别适用于远距离通信;其缺点是传送速度较低。

串行通信的主要特点:

•串行通讯:一条信息的各位数据被逐位按顺序传送的通讯方式称为串行通讯。

•串行通讯的特点是:数据位传送,传按位顺序进行,最少只需一根传输线即可完成,

•成本低但送速度慢。串行通讯的距离可以从几米到几千米。

•根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。如图4-1所示。

发送

器甲

接收器乙

第 21 页 共 56 页

(a) 单工方式

接 发送器

收器

接 发送器

收器

(b) 半双工方式

数据流

接收 发送器

收 发送器

(C) 全双工方式

图4-1 串行通信传输方式

系统设计时采用半双工方式通信,这主要是为了尽量避免红外通信存在发射与接收之间的相互干扰。

4.1 单片机串行口通信技术

MCS-51单片机内部有一个全双工的串行通信口,即串行接收和发送缓冲器(SBUF),这两个在物理上独立的接收发送器,既可以接收数据也可以发送数据。但接收缓冲器只能读出不能写入,而发送缓冲器则只能写入不能读出,它们的地址为99H。这个通信口既可以用于网络通信,亦可实现串行异步通信,还可以构成同步移位寄存器使用。如果在串行口的输入输出引脚上加上电平转换器,就可第 22 页 共 56 页

方便地构成标准的RS-232接口。

MCS-51单片机串行口寄存器结构如图4-3所示。SBUF为串行口的收发缓冲器,它是一个可寻址的专用寄存器,其中包含了接收器和发送器寄存器,可以实现全双工通信。但这两个寄存器具有同一地址(99H)。MCS-51的串行数据传输很简单,只要向发送缓冲器写入数据即可发送数据。而从接收缓冲器读出数据即可接收数据。

此外,从图4-3中可看出,接收缓冲器前还加上一级输入移位寄存器,MCS-51这种结构目的在于接收数据时避免发生数据帧重叠现象,以免出错,部分文献称这种结构为双缓冲器结构。而发送数据时就不需要这样设置,因为发送时,CPU是主动的,不可能出现这种现象。

图4-3 MCS-51串行口寄存器结构

1、波特率的设置

要实现单片机与PC机的串行通信,双方的波特率必须一致.PC机串行通信的波特率参数通常为一些标准的参数,可直接使用.因此实现MCS--51单片机和PC机的串行通信时,选择MCS—51单片机串行通信的波特率至关重要.

波特率根据串行口的工作方式不同而不同:

(1) 方式0波特率

串行口方式0的波特率由振荡器的频率所确定:

方式0波特率=振荡器频率/12

(2) 方式2波特率

串行口方式2的波特率由振荡器的频率和SMOD(PCON.7)所确定:

SMOD为0时,波特率等于振荡器频率的六十四分之一;SMOD为1时,波特率等于振荡器的三十二分之一。

(3) 方式1和方式3的波特率

串行口方式1和方式3的波特率由定时器T1或T2(8051等单片机)的溢出率和SMOD所确定。T1和T2是可编程的,可以选的波特率范围比较大,因此串串行口方式1和方式3是最常用的方式。

第 23 页 共 56 页

当定时器T1作为串行口的波特率发生器时,串行口方式1和方式3的波特率由下式确定:

SMOD方式1和方式3波特率=2*(T1溢出率)/32

SMOD为0时,波特率竽T1溢出三十分之一;SMOD为1时,波特率等于T1的六十四分之一。

定时器T1作为时,应禁止T1中断。通常T1工作于定时方式(C/T=0),计数脉冲为振荡器的十二分频信号。也可以选择外部T1(P3.5)上输入脉冲作为T1计数信号(C/T=1)。T1的溢出率又和它的工作方式有关,一般选方式2定时,此时波特率的计算公式为:

SMOD方式1和方式3波特率=2*Fosc/[32*12(256-(TH1))]

表4-1 常用波特率

波特率(b/s)

19.2K

9600

4800

2400

1200

Fosc(mhz)

11.0592

11.0592

11.0592

11.0592

11.0592

SMOD

1

0

0

0

0

C/T

0

0

0

0

0

模式

2

2

2

2

2

初值

FDH

FDH

FAH

F4H

E8H

注:定时器T1作波特率发生器,所以在程序设计时要注意到禁止T1中断

2、串行通信控制寄存器SCON

SCON控制寄存器,它是一个可寻址的专用寄存器,用于串行数据的通信控制,单元地址是98H,其结构格式如下:

表4-2 SCON寄存器结构

SCON

D7

SM0

位地址

3、电源管理寄存器PCON

PCON主要是为CHMOS型单片机的电源控制而设置的专用寄存器,单元地址是87H,其结构格式如下:

表4-3 PCON电源管理寄存器结构

PCON D7 D6 D5 D4 D3 D2 D1 D0

9FH

D6

SM1

9EH

D5

SM2

8DH

D4

REN

9CH

D3

TB8

9BH

D2

RB8

9AH

D1

TI

99H

D0

RI

98H

第 24 页 共 56 页

位符号

SMOD - - - GF1 GF0 PD IDL

在CHMOS型单片机中,除SMOD位外,其他位均为虚设的,SMOD是串行口波特率倍增位,当SMOD=1时,串行口波特率加倍。系统复位默认为SMOD=0。

4、中断允许寄存器IE

中断允许寄存器在前一节中已阐述,这里重述一下对串行口有影响的位ES。ES为串行中断允许控制位,ES=1允许串行中断,ES=0,禁止串行中断。

表4-4 IE中断允许控制寄存器结构

位符号

位地址

EA

AFH

-

AEH

-

ADH

ES

ACH

ET1

ABH

EX1

AAH

ET0

A9H

EX0

A8H

4.2 PC机串口通信技术

PC机串行通信接口设计是整个PC机部分的重点,在本章节中将详细分析串口的设计问题。

1. 通信芯片的选择

由于RS-232C的逻辑电平兼容,因此为了TTL器件连接,必须进行电平转换。MC1488和MC1489是RC-232C通信接口常用的集成电路转换芯片,但他们是两个独立的驱动器和发送芯片,而且MC1488驱动器还需要外接正负电源,很不方便。目前市场上出现了一些新型的RS-232C电平转换芯片MAXIM系列的产品,AXIM公司生产的MAX系列RS-232C收发器芯片。

2. 波特率设置

PC机的波特率必须和单片机相匹配,所以只要单片机的波特率定了,PC机只要下图4-3所示的界面中设置一下即可。

第 25 页 共 56 页

图4-3 波特率设置界面

3、串行口工作方式的选择

为了确保数据传输无误,采用软件握手的方式。即发送方给接收方传送的一个数据,接收方收到后再将这个数据发送回来,发送方将两个数据比较,若二者相同则表示传输无误,接着传送下一个数据。所以不需要奇偶校验,因此选择串行口方式一工作即传输数据的格式为1位起始位,8位数据位,1位停止位。

4、VB串口Mscomm控件

VB提供了串行端口控制Mscomm来为应用程序提供串行通讯。该控件屏蔽了通信过程中的底层操作,程序员可以设置、监视Mscomm控件的属性和事件,结合Timer控件即可完成对串行口的初始化和数据的输入输出工作。Mscomm控件的主要属性如下:

(1)Commport 设置并返回通讯端口号。端口号可以设置为1~16的任何数,如rt=2表示设置当前通讯端口为COM2。

(2)Setting 设置并返回波特率、奇偶校验、数据位、停止位。格式为g=String。String是一个包含四部分的字符串:第一部分为波特率;第二部分为奇偶校验,N表示不校验,M表示符号校验,E表示偶校验,O表示奇校验,S表示空格校验;第三部分为数据位数,其可选值为4,5,6,7,8;第四部分为停止位位数,其可选值为1,1.5,2。Setting属性的缺省值为2400,N,8,1”。

(3)Portopen 设置并返回通讯端口的状态,也可以打开和关闭端口。

(4)Input 从接收缓冲区返回和删除字符。该属性在运行时为只读。

(5)InputLen 设置并返回每次Input属性从接收缓冲区中读取的字符数。InputLen属性的缺省值为0。设置InputLen为0时,Input将读取接收缓冲区的全部字符。

(6)Output 向传送缓冲区写数据。要传送的数据可是文本数据或二进制数据。

(7)CommEvent 返回最近的通讯事件或错误。只要有通讯错误或事件发生错误时就会产生Oncomm事件。CommEvent属性中存有该错误或事件的数值代码。

第五章 软件设计

PC机与单片机间的通信,特别是PC机和多台单片机构成小型分布系统实现分级分布式控制得到了广泛的应用。本章阐述PC机与AT89C51间的双机通信的汇编语言和Visual Basic 语言通信程序设计技术。

软件需要解决的是设定PC机串口和单片机串行口的工作方式,包括串行口的通讯速率、奇偶校验位、停止位等。本次设计,以PC机为主机,单片机AT89C51第 26 页 共 56 页

作为从机,具体的通信协议如下:

· 波特率设置:2400b/s;

· 信息帧格式:1位起始位,8位数据位,1位停止位;

· 校验方式:采用无校验方式;

· 传送方式:PC机采查询方式接收和发送数据,单片机AT89C51采用中断方式接收与发送数据。

5.1 单片机通信程序设计

单片机的数据通信由串行口完成,定时器T1作为波特率发生器,其波特率要与PC机一致。数据的传送格式为1位起始位、8位数据位和1位停止位。采用中断方式发送和接收数据,定时器T1设置为工作工作模式2,串行口设置为工作方式3,由第9位判断停止。具体的程序流程图和程序清单分别见附录2和附录3。

5.1.1 单片机中断方式接收程序

当PC机不发送任何数据的时候,从机单片机始终处于等待状态(P.),直到PC机发送数据过来。由于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 ;清定时中断

第 27 页 共 56 页

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放数据存贮

MOV R0,#30H ;是开始符就置存贮区首地址30H,计数器清0并跳出中断

MOV COUNTER,#0

SJMP EXIT

GET1: CJNE A,#07FH,GET2 判断是否为结束符,不是跳GET2放数据存贮区

MOV R5,COUNTER ;是结束符,放发送缓存区开始字符

INC R5

MOV POINT,#30H

MOV SBUF,#255

SJMP EXIT

GET2: MOV @R0,A

INC R0

INC COUNTER

EXIT: POP 01H

POP ACC

RETI

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

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

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

COUNTER EQU 40H

POINT EQU 41H

ORG 0000H

LJMP MAIN

ORG 0023H

第 28 页 共 56 页

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 ;判断是否为接收,是跳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

5.1.3 单片机显示程序

单片机显示部分可以用来检测接收到的数据是否正确,单片机显示程序主要将接AT89C51从串行口收到的数据显示出来。在程序设计中,在AT89C51RAM存贮器中的四个显示缓冲器单元30H-34H,分别存放着由PC机方发送过来的数据,AT89C51的P2口扫描输出总是只有一位为高电平,即4位显示器中仅有一位公共第 29 页 共 56 页

阴极为低电平,其它位为高电平,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

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

5.2 PC机通信程序设计

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

断下一步是发送还是接收命令。对发送的命令,可能是文本方式或二进制代码。在发送二进制代码时,应特别注意发送的格式。本节介绍在Windows 98环境下如何利用VB来实现PC机与单片机之间的串行通讯。

首先根据系统要实现的功能要求设计出PC机的通信界面如图5-14所示,然后对界面各个按键进行编程,不断修改和改进程序直到出现如图5-15所示界面为止。程序清单见附录3。

图5-14 PC机界面

5-15 通信成功的PC机界面

第 31 页 共 56 页

第六章 系统调试

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

6.1 硬件调试

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

一、 上电前的调试

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

二、 上电后的调试

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

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

2、红外通信电路调试:由于SM0038固定频率是38KHZ,我们是将单片机发送端接地,红外线发射器发射红外光,将红外线接收器正对发射器,距离约0.5m,用万用表的电压档接于红外线接收器的OUT脚与地之间。当发射器的频率与接收器不相吻合时,电压输出在+3.6v左右;吻合时,输出电压约为0v。调整R1见附录(电路原理图)之值(R1用15~20kΩ),直到万用表测出的电压接近0v,在实际测试电路中发现接收端的电平最低也有几个毫伏,于是我们认为该电压时,发送频率与接受频率已经吻合。

3、PC机部分硬件电路调试:这一部分电路硬件调试主要完成任务是使得通过MAX232CPE电平转换器转换前后的电平关系。

6.2 软件调试

一、单片机程序调试:

单片机部分调试工作的完成主要应用LCA51软件来完成,这一部分工作首先将显示部分程序调试好,然后利用VB串口助手(如图6-1)来检测所编的发送与接收程序是否正确,不断调试,不断修改直到正确为止。LCA51软件是基于WINDOWS95/98操作平台的多窗口编辑、调试软件。

LCA51软件全面支持汇编语言,C51语言,PL/M51语言的编译/连接、调试。第 32 页 共 56 页

软件支持单文件方式和工程化管理两种模式。用户可自定义各种语言的关键词.软件完全支持源语句级在线调试。高级语言还支持源文件调试和汇编语言指令行对照调试。用户可同时打开多个窗体编辑、调试、变量观察.用户可在线对原文件直接编辑、编译、连接、加载和调试,软件支持编译错误源文件定位。调试时用户可动态观察、修改设定变量(包括CPU片内寄存器、特殊寄存器及外部寄存器、内存)的值。

图6-1 串行助手

调试主要方法和技巧:

通常一个调试程序应该具备至少四种性能:跟踪、断点、查看变量、更改数值。

1.跟踪调试

调试应用程序所提供的重要性能也许就是跟踪应用程序。跟踪应用程序使用户能够在运行应用程序时,看到PC指针在应用源代码程序中的确切位置,LCA51提供以下方法对程序的执行进行跟踪。

跟踪型单步执行一条源语句程序。但是,如果调用一函数,则进入函数中,再执行函数的第一条源语句行前停止。

通过型单步仅执行下一条源语句程序,然后又停止。如果是调用一函数,运行完整个函数并停止在函数返回处。

第 33 页 共 56 页

2.断点调试

如果已知程序中某块代码实际运行正常的情况下,仍用跟踪调试方法,将大大浪费时间,而且很枯燥,因此调试中第二个重要工具是在源代码中预定处设置断点,大多数调试程序通过使用断点中止程序执行。

注意:如果用户调试高级语言,因为系统要占用2个断点,所以可设置的断点数为最大断点个数减2。

LCA51调试软件还提供一次性断点:执行到光标所在行。如果用户按热键F4,调试程序继续执行程序代码,直到它到达光标行处或调试程序遇到另一个断点。

3.查看变量

显然,通过一系列指令查看应用程序,了解导致某一错误的执行也是一种非常有效的方法。LCA51软件提供了以下几种方法对变量进行查看。

通过添加观察项菜单可以将用户希望观察的变量添加到观察窗口中,长期进行观察。用户程序在单步或断点停下时,将更新变量的取值。

用户可以直接移动鼠标到相应的变量名上,点击鼠标左键,将出现一个提示窗口,显示这个变量的当前值。

用户还可以打开程序空间窗口、内部数据窗口、外部数据窗口进行数据块观察。

4. 更改数值

如果用户在调试过程中了解到变量的内容(超值、未定义等)会对程序性能产生影响或引起异常时,立即更改变量的内容是很有效的方法,以确保该值在正确范围内不会产生错误。LCA51软件提供一系列更改变量数值的方法,以便用户能检查程序对整个变量值范围的反应,而无需为设置每个值而重新加载调试。在更改对话框中用户输入要更改的取值,点击确定按钮。用户可以在输入框中输入十六进制或十进制数据。

二、PC机程序调试:我们利用VB串口助手(如图6-1)来检测PC机程序的正确与否,从而不断的修改直到两台PC机之间有线通信成功为止。

6.3 综合调试

在硬件和软件单独调试成功后进行软硬件综合调试,它可以分成以下几个步骤:

(1) 使PC机自发自接收通信成功;

(2) 使PC机与单片机之间的有线通信成功;

(3) 通过红外通信使得整个PC机与单片机之间的红外通信成功。

6.4故障分析与解决方案

一、 故障出现情况

(1)PC机与单片机之间有线通信时,单片机与PC机都没有反应;

(2)红外通信时调试红外线发送和接收时,接收端的电平一点都不改变;

第 34 页 共 56 页

(3)红外通信时不管单片机是否发送数据,PC机都会收到数据;

(4)红外通信时单片机能收到PC机发送的数据,但是PC机收到的数据总是0000;

(5)单片机显示部分无法工作,显示不稳定;

(6)红外通信时单片机无法接收,一直处于等待状态;

(7)红外通信时单片机接收显示数据不正常,PC机接收乱码,两边接收不匹配;

(8)PC机一直接收到0。

二、 解决方案(针对上述故障一 一对应的解决方案)

(1)硬件电路中存在一个与非门(7404),本想利用与非门来起屏蔽作用,但是当测试MAX232的9脚和10脚时发现,两只脚都是高电平,这样7404的作用就阻碍了电路的发送和接收;

(2)将原先的发射部分的与非7400换成CD4011,因为7400不能和RC构成振荡电路,只有CD4011才能和RC构成振荡电路;

(3)由于SM0038接收头太灵敏,需要接一个上拉电阻;

(4)由于红外通信的发送和接收电路都要经过与非门7400,出现与故障(1)相对应的情况,只有将经过MAX232CPE转换出来后直接送到红外发送和接收电路,也就将发送和接收不要经过非门7400;

(5)由于PC机模块的电源线掉了

(6)SM0038接收管的+5V脚断了

(7)由于单片机与PC机之间的波特率设置不一致

(8)PC机接收端断开了

6.5 结论与经验

一、 结论

通过各方面努力,本次毕业设计任务完成,系统各部分功能均已实现,PC机和单片机部分都能成功接收与发送;数据的红外传输也已成功。在设计的时候为了方便单片机方面的调试,在单片机部分设计了数码管显示电路,这一模块给整个调试过程带来很大的帮助。

二、 经验

1、由于本系统采用5V直流电源供电,红外发射管功率较小,其有效传播距离在2m-3m左右。为提高其有效距离,可采用发射管前外加菲涅尔透镜聚焦的办法。其原理如图6-1所示(其中:虚线代表没加凸透镜前的传播方向,实线代表加凸透镜后的传播方向)。由于凸透镜具有会聚作用,使原本发散的光线会聚,以提高有效通信距离。

第 35 页 共 56 页

图6-1

2、红外传播具有角度较小的特点,其方向性较强,带来相应的缺点是接收时必须使收发对管在一定的接收范围内,给实际操作带来一定的困难。为克服以上不足,我们对接收对管进行改进,采取“多—多’’的模式,即多发射管对应多接收管。增大红外线的接收面积,提高接收精度,以及使用价值。其基本原理如图6-2所示。

图6-2

接收管与接收管之间,发射管与发射管之间可采用并联形式连接在一起。这样经接收管产生的电信号在其输出公共端产生迭加现象,使得信号幅度加大,故接收管后的三极管要选择适当的放大倍数,以防出现输出波形的失真,影响系统的准确性以及稳定性。

3、在制作印制电路板的过程中,由于经验不足,没有考虑在高频电路中平行线之间的干扰,导致当电路上电工作时就发生串扰的现象,使得连接PC机的电路工作不稳定,在以后的设计过程中需要注意。

4、该系统不仅可以实现单片机与PC机之间的通信,而且还可以实现多个PC间的通信。实现真正意义下的“光联网”,实现计算机的无线连接,避免局域网重复建设所带来的资源的浪费,充分发挥红外通信的造价低。结构简单的优势。其实现基本框架可用图6-3来表示。

第 36 页 共 56 页

图6-3

红外接收发射装置周围安装接受管、发射管矩阵,使其朝向四方。通过对计算机行编码实现不同计算机间的身份认证。

结 束 语

本文介绍的应用于单片机系统实现与PC机之间的红外串行通信接口,具有硬件电路简单、成本低廉、编程方便、通信可靠性高的特点,实现了通信双方非接触式的数据传送。

为期三个月的毕业设计结束了,关于本次毕业设计,感受颇多。总的来说是可以的,富有成效的,尽管其中充满了艰辛与困难。但看到自己的成果时,所有的艰辛与疲倦都抛到了九霄云外。另外一方面,在自己的亲身实践中,也发现了自己的一些不足的地方,有待进一步提高与改善。此次毕业设计任务是实现PC机与单片机之间的红外通信,在实际调试中遇到的种种问题使我在设计与调试中学习到了许多知识。

在整个设计过程中,我们使用了多种硬件设备和软件工具,对它们的性能和特点有了一定的了解和认识。硬件如AT89C51单片机系统,电平转换器,数码管以及一些门电路等等;软件方面有汇编语言编程、Visual Basic语言、Protel以及Word软件等等。

整个毕业设计过程是对自己大学四年所学知识归纳总结和应用,也就是把理论知识用到实践之中去。让理论和实践相结合,以此产生实际的成果。而这正是我们学习理论知识的目的之所在。理论和实践相结合的过程,使我发现了自身一些方面的不足,比如理论知识掌握得不够精,博,深。更为重要的一点是理论和实践之间的差距很大。光有理论知识是不够的,还要有把理论知识灵活应用到实践中去的能力,这一点有待进一步提高。这也是以后工作所必须的能力。这一能力要能在实践中逐渐培养,逐步积累经验和深化,边工作边学习,做到活到老学到老。我也发觉这也是现代人所必须的一种现代的工作和学习精神,同时这也是现代高科技和信息社会的独有的特征,每个现代人都必须接受它。

第 37 页 共 56 页

另外,关于本次设计感受最深的一点,是毕业设计的时间分配问题。实际上大部分时间是花在了编程工作方面了,软件调试是软件设计的主要工作,软件调试过程也就是软件设计过程,软件调试工作的完成也就意味着软件设计工作的完成。设计过程是发现问题,解决问题的过程,进而完善软件程序的过程。对与我们总体设计来讲,还必须考虑硬件系统与软件系统相协同的问题,还有它们之间的接口问题,因为任何一个环节出了问题,整个系统将无法工作,这就要求设计的各个部分互相协同。考虑整体的协调性是否良好。这就要求设计工作时各个设计者之间要相互协调与合作。

除此之外,我们要在拥有扎实的专业知识的前提条件下,在整个设计与调试过程中要有信心和耐心,要持之以恒,坚持不懈。要知道设计工作不是一天两天的事情,最需要的就是恒心与耐力,不畏困难的精神。只要你持之以恒,多查资料设计总会成功。在调试中不断发现问题进而解决问题,其本身就是对自己的一次锻炼,培养了自己独立思考,动手解决问题的能力。从而从各个方面得到提高与完善自己,使自己的各个方面提高到一个新的台阶,同时为以后的工作打下基础。

在本次毕业设计中,特别要感谢黄阳老师给我们的热心帮助,才使得我们的毕业设计能够很好的完成。

附 录

附录1 电路原理图

第 38 页 共 56 页

第 39 页 共 56 页

附录2 程序流程图

主程序:

开始

定时器T1初始化

串行口初始化

启动定时器

开串行中断,关定时中断

调用显示子程序

N

有中断?

Y

执行中断程序

第 40 页 共 56 页

中断服务子程序:

显示子程序:

第 41 页 共 56 页

第 42 页 共 56 页

附录3 程序清单

单片机通信程序清单:

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 ;开串行口中断

MAIN1:ACALL DISP

SJMP MAIN1

;********中断服务子程序**********

SRT: PUSH ACC

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

第 43 页 共 56 页

GET: MOV A,SBUF

CJNE A,#0FFH,GET1;判断是否为开始字符,不是跳GET1放数据存贮区

MOV R0,#30H ;是开始符就置存贮区首地址30H,计数器清0并跳出中断

MOV COUNTER,#0

SJMP EXIT

GET1: CJNE A,#07FH,GET2 ;判断是否为结束符,不是跳GET2放数据存贮区

MOV R5,COUNTER ;是结束符,放发送缓存区开始字符

INC R5

MOV POINT,#30H

MOV SBUF,#255

SJMP EXIT

GET2: MOV @R0,A

INC R0

INC COUNTER

EXIT: POP 01H

POP ACC

RETI

;*********显示程序**********

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

ANL A,#0FH

MOVC A,@A+DPTR

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

MOV A,R6

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

RR A

MOV R6,A

DJNZ R7,$

INC R1

DJNZ R2,DISP1 ;判断接收位数

DISP2:MOV R1,#30H

POP ACC

第 44 页 共 56 页

RET

TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH

DB 77H,7CH,39H,5EH,79H,0F3H

END

PC机通信程序清单:

Private Sub Command1_Click()

Dim outstring As String

Dim i As Integer

Dim de As Integer

outstring =

hold = Len() + 2

= Chr(255)

For i = 1 To Len(outstring)

= Chr(Asc(Mid(outstring, i, 1)) - 48)

Next i

= Chr(127)

End Sub

Private Sub Command2_Click()

= ""

End Sub

Private Sub Command3_Click()

If en = False Then

en = True

n = "关闭端口"

Else

en = False

n = "打开端口"

End If

End Sub

Private Sub Form_Load()

rt = 1 '定义用端口COM1

gs = "2400,n,8,1" '波特率,无奇偶校验,8位数据,1位停止位

en = True '打开端口

n = "关闭端口"

End Sub

Private Sub MSComm1_OnComm()

Dim lenth As Integer, i As Integer

第 45 页 共 56 页

lenth = Len() + 2

ReDim instring(1 To lenth) As Integer

Select Case ent

Case comEvReceive

For i = 1 To lenth

instring(i) = (0)

Next i

End Select

= ""

For i = 1 To lenth

If instring(i) <> 255 And instring(i) <> 127

Then

= & instring(i)

End If

Next i

End Sub

Private Sub Timer1_Timer()

= Date

= Time()

End Sub

Private Sub Timer2_Timer()

Text1 = Text1 + 1

If Text1 > 9999 Then Text1 = 1000

Command1_Click7

End Sub

附录4 元器件清单

钽电容: 10uf 四只 (C1、C2、C3、C4)

瓷片电容: 1000pf 二只 (C6、C7)

30pf 二只 (C10、C11)

电解电容: 10uf 一只 (C9)

电阻: 100K 二只 (R3、R8)

1K 二只 (R2、R7)

20Ω 二只(R5、R6)

100Ω 二只(R1、R10)

2KΩ 一只(R12)

排阻: 330Ω 一只(R)

可调电阻: 5K 二只(R4、R9)

第 46 页 共 56 页

三极管: 8550 二只

红外二极管: PH30B 二只

红外一体化接收头:SM0038 二只

数码管: LED 四只

RS-232接口线: DB-9 一对

集成块:74LS08 一只

MAX232CPE 一只

74LS06 一只

CD4011 二只

AT89C51 一只

电源接线柱: 二对

附录5 英文资料

Memory Devices And Microprocessor

一、Memory Devices

Memory Devices :Memories can be made in mechanical,magnetic,optical,biological and electronic technologies. Examples of magnetic memories are

tapes,floppy disks,hard drives and ferroelectric RAMs. Examples of

optical memories are CD-ROMs,rewrittable CDs. Electronic memory is used,

extensively in computer equipment since it is the fastest available. For

applications where speed is less important,magnetic and optical

technologies are often used.

The flip-flop: A flip-flop is basically a bi-state circuit in which

either a 0 or 1 state can resides. Because of its simplicity,the flip-flop

is extremely fast. As a basic element,the flip-flop is used in digital

circuits and ICs. A flip-flop will lose its state when the supply voltage

is removed. Therefore,it is volatile.

The register:A register is a set of flip-flops in parallel. Typically

a register is 8,16,32 or 64 bits wide. Often a register is used to hold

data,address pointers,etc. A register is volatile and very fast just

like the flip-flop.

SRAM(Static Random Access Memory): An SRAM is an array of addressable

flip-flops. The-array can be configured as such that the data comes out

in single bit,4-bit,8bit,and etc. format. SRAM is simple,fast and volatile

just like the flip-flop,its basic memory cell. SRAM can be found on

microcontroller boards(either on or off the CPU chip),where the amount

of memory required is small and it will not pay off to build the extra

第 47 页 共 56 页

interface circuitry for DRAMS. In addition,SRAM is often used as cache

because of its high speed.

SRAM comes in many speed classes,ranging from several ns for cache

applications to 200ns for low power applications. SRAM exists in both

bipolar and MOS technology. CMOS technology boasts the highest density

and the lowest power consumption: Fast cache memory can be constructed

in BiCMOS technology,a hybrid technology that uses bipolar transistors

for extra drive. The fastest SRAM memories are available in ECL(Emitter

Coupled Logic)bipolar technology. Because of the high power consumption,the memory size is limited in this technology.

A special case of SRAM memory is Content Addressable Memory(CAM).In

this technology,the memory consists of an array of flip-flops,in which

each row is connected to a data comparator. The memory is addressed by

presenting data to it(not an address!).All comparators will then check

simultaneously if their corresponding RAM register holds the same data.

The CAM will respond with the address of the row (register) corresponding

to the original data. The main application for this technology is fast

lookup tables. These are often used in network routers.

DRAM( Dynamic Random Access Memory): The word“dynamic”indicates

that the data is not held in a flip-flop but rather in a storage cell.

The data in a storage cell must be refreshed(read out and re-written)regularly because of leakage. The refresh time interval is usually 4 to

64 ms. The storage cell only requires one capacitor and one transistor,whereas a flip-flop connected in ari array requires 6 transistors. In

trench capacitor memory technology,which is used in all modern DRAMs,the transistor is constructed above the capacitor so that the space on

chip is ultimately minimized. For this reason,DRAM technology has a lower

cost per bit than SRAM technology. The disadvantage of the extra circuitry

required for refreshing is easily offset by the lower price per bit when

using large memory sizes.

DRAM memory is,just like SRAM memory constructed as an array of memory

cells. A major difference between SRAM and DRAM,however,lies in the

addressing technique. With an SRAM,an address needs to be presented and

the chip will respond with presenting the data of the memory cell at the

output,or accepting the data at the input and write it into the addressed

cell. With DRAM technology,this simple approach is impossible since

addressing a row of data without rewriting it will destruct all data in

the row because of the dynamic nature.

第 48 页 共 56 页

ROM(Read Only Memory):ROMs are also called masks-ROMs or mask

programmed ROMs. This is because a ROM needs to be programmed by setting

its cells to either 0 or 1 at the time of manufacture. Usually the 0 or

1 is formed by the presence or absence of an aluminium line. This aluminium

pattern is defined by a lithographic mask used in one of the last steps

of manufacture. Therefore these devices are often called mask-ROMs.

The advantage of ROM is that it can be manufactured at the lowest price

in high volumes. Another advantage in some applications is that it is

impossible to alter the data once the chips are made,and that no further

programming and testing are required. On the other hand,if the data or

code must be changed this can be a small disaster. The rest of the chips

will end in the dustbin and new chips will have to be made.

EEPROM(Electrically Erasable Programmable ROM:This means that the

chip can be programmed like an EPROM,but can be erased electrically. As

a result,no UV source is required. EEPROMs can be erased on a byte-by-byte

basis.

二、Microprocessor

Microprocessors: A microprocessor is a complete computation engine

that is fabricated on a single chip. The first microprocessor was the Intel

4004,introduced in 1971.The 4004 was not very powerful一all it could

do was add and subtract,and it could only do that 4 bits at a time. But

it was amazing that everything was on one chip. Prior to the 4004,engineers

built computers either from collections of chips or from discrete

components. The 4004 powered one of the first portable electronic

calculators.

The first microprocessor to make it into a home computer was the Intel

8080,a complete 8-bit computer on one chip,introduced in 1974.The first

microprocessor to make a real splash in the market was the Intel 8088,introduced in 1979 and incorporated into the IBM PC. The PC market moved

from the 8088 to the 80286 to the 80386 to the 80486 to the Pentium to

the Pentium II to the Pentium III to the Pentium 4.All of these

microprocessors are made by Intel and all of them are improvements on the

basic design of the 8088.The Pentium 4 can execute any piece of code that

ran on the original 8088,but it does it about 5,000 times faster!

The following table shows the differences between the different

processors that Intel has introduced over the years.

From this table you can see that,in general,there is a relationship between

clock speed and MIPS. The maximum clock speed is a function of the

第 49 页 共 56 页


发布者:admin,转转请注明出处:http://www.yc00.com/news/1706955880a1470085.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信