当前位置:文档之家› 基于AT89S52单片机的串口通讯硬件系统设计

基于AT89S52单片机的串口通讯硬件系统设计

基于AT89S52单片机的串口通讯硬件系统设计
基于AT89S52单片机的串口通讯硬件系统设计

摘要

计算机与计算机或计算机与终端之间的数据传送可以采用串行通讯和并行通讯两种方式。由于串行通讯方式具有使用线路少、成本低,特别是在远程传输时,避免了多条线路特性的不一致而被广泛采用。在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯。RS-232-C接口(又称 EIA RS-232-C)是目前最常用的一种串行通讯接口。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。它是“数据终端设备(DTE)和数据通讯设备(DCE)之间串行二进制数据交换接口技术标准”该标准对连接器的每个引脚的信号内容加以规定,还对各种信号的电平加以规定。

随着计算机技术尤其是单片微型机技术的发展,人们已越来越多地采用单片机来对一些工业控制系统中如温度、流量和压力等参数进行检测和控制。PC 机具有强大的监控和管理功能,而单片机则具有快速及灵活的控制特点,利用MAX232转换芯片实现PC机的RS-232串行接口与外部设备进行通信,是许多测控系统中常用的一种通信解决方案。因此如何实现PC机与单片机之间的通讯具有非常重要的现实意义。

关键词:串行通讯;AT89S52;MAX232

Abstract

The computer and the computer or between computer and terminal transfer data can use serial communication and parallel communication in two ways. Because of serial communication way has less use of lines, low cost, especially in remote transmission, avoid multiple line characteristics, widely adopted inconsistent. In serial communication, communication both adopt a request, make different standard interface of equipment can be easily connected to communicate.RS - 232 - C interface (also called EIA RS - 232 - C) is the most commonly used one kind of serial communication interface. It is in 1970 by the American electronics association (EIA) joint bell system, modem manufacturer and computer terminal manufacturer of jointly formulated for serial communication standards. It is "data a DTE or DCE can send across data communication equipment serial binary data exchange interface between the standard technology standard" for each of the pin connector of signal content of codes, various signal level codes.

Along with the computer technology, especially the development of single chip, Internet technology. People have increasingly used to some industry single ship controlling system such as temperature, flow and pressure testing and control parameters such as. PC machines have powerful monitoring and management functions, and SCM has rapid and flexible control https://www.doczj.com/doc/9717649159.html,e MAX232 conversion chip realize the PC RS - 232 serial interface communication with external devices, is used in many measurement and control system of a kind of communication solutions. Therefore, how to realize the PC and the communication between SCM has very important practical significance.

Keywords: serial communication;AT89S52;MAX232

目录

1 绪论 (1)

1.1选题背景和意义 (1)

1.2国内外研究现状 (1)

1.3研究的主要内容 (2)

2 串口通讯协议 (3)

2.1串口通讯的概念及背景 (3)

2.2 串口通讯的特点 (3)

2.3 串口通讯的应用 (3)

2.4串口通讯的选择 (4)

2.5 RS-232C标准介绍 (5)

2.5.1 RS-232C引脚定义 (5)

2.5.2 RS-232C电气特性 (6)

2.6串口通讯原理 (7)

3 串口通讯硬件系统设计 (11)

3.1 AT89S52单片机的概述 (11)

3.2 AT89S52单片机存储器 (13)

3.3 定时系统 (13)

3.4中断系统 (15)

3.4.1中断的基本概念 (15)

3.4.2中断源 (15)

3.4.3中断控制 (16)

3.5 AT89S52单片机的串行口 (16)

3.6 RS-232C与TTL逻辑电平的转换 (17)

3.7单片机开发板介绍 (19)

3.8单片机与PC串口通讯的收发原理 (22)

4 串口通讯软件设计 (23)

4.1单片机C51编程介绍 (23)

4.2 Keil C开发软件及应用 (23)

4.2.1开发软件介绍 (23)

4.2.2 keil uVision2软件使用方法 (24)

4.3串口通讯软件流程图 (30)

5 系统运行调试 (32)

5.1调试助手设置 (32)

5.2通讯测试 (33)

5.3 调试注意事项 (34)

6 结论 (35)

致谢 (36)

参考文献 (37)

附录一串口通讯程序源代码 (38)

附录二程序流程图 (41)

1 绪论

1.1选题背景和意义

在实验和工业中,串口通讯是常用的计算机与外部串行设备之间的数据传输通道,同时串口通讯是工业自动化、智能终端、通信管理等领域传统且重要的通讯手段。而串口通信协议是通信设备通用的通信协议,可以用于获取远程采集设备的数据。单片机技术自发展以来已走过了近20年的发展路程。以广泛的应用领域拉动,表现出较微处理器更具个性的发展趋势。小到遥电子玩具,大到航空航天技术等电子行业都有单片机应用的影子。AT89S52单片机以其独特的串行通信功能为主、从设备之间的数据传输提供了便利,可以通过软件编程来表达到不同的效果,实现各种各样不同的功能,具有灵活性强、可靠性高、可扩展性好等优点,因此串口通讯作为设计课题很有价值。

计算机通信技术越来越成熟,在众多通信实现方案中,串行通行技术有着广泛的应用。尤其是在工业控制领域,微机与微机、微机与外设、微机与分布式下位机等都可以通过RS232串行端口互连通信,以实现控制和传输数据等目的。各种智能终端设备都可以通过通讯的方式联接起来,形成高度的自动化控制集成系统。

1.2国内外研究现状

在工业控制领域(如DCS系统),国内外不少公司开展了这方面的研制开发工作,并取得了成功,已产生出若干性能良好、应用广泛的串行接口总线。如Philips开发出的一种双向二线串行总线的I2C总线、Intel的位总线、National Semiconductor Corporation开发的一种三线同步串行接口总线的Microwire 总线,以及美国Motorola公司生产的68系列单片机内含的两种串行接口总线的SPI/SCI 总线等。在竞争和发展中,一些企业级串行接口总线可望发展形成新的通用串行接口标准。例如Philips,与DEC共同开发和制定的Access 总线就是一种以I2C总线为基础的开放式串行联接系统。

无论是通信主机发送信息至指定的RS-232串口设备或是RS-232串口设备发送信息至指定通信主机,都可以经其轻易且正确地传输。如中国波士电子创

造了许多种世界上第一的RS-232/RS-485产品,波士的USB232是专门为工业通信设计制造的,特别强调对工业通信的适用性。

1.3研究的主要内容

本文主要是利用AT89S52单片机的串口功能单元实现单片机与PC机间数据通讯。首先文中介绍了串口通讯协议,在此基础上设计了基于单片机的简易通讯板卡,通讯系统硬件和配套的软件,最后,把PC机和该板卡通过串口线连接起来,实现两者的数据通讯功能。通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。通过完成一个包括电路设计和程序开发的完整过程,了解开发单片机应用系统的全过程,为今后从事相应打下基础。

2 串口通讯协议

2.1串口通讯的概念及背景

串行接口简称串口,也称串行通信接口(通常指COM接口),是采用串行通信方式的扩展接口。

计算机与外界的信息交换称为通信,通信有并行和串行两种方法。并行通信是数据字节的各位同时发送。而串行通信是指数据一位一位的按顺序传送。

串口的出现是在1980年前后,数据传输率是115kbps~230kbps。串口出现的初期是为了实现连接计算机外设的目的,初期串口一般用来连接鼠标和外置Modem以及老式摄像头和写字板等设备。串口也可以应用于由于两台计算机(或设备)之间的互联及数据传输。由于串口不支持热插拔及传输速率较低目前部分新主板和大部分便携电脑已开始取消该接口,目前串口多用于工控和测量设备以及部分通信设备中。

2.2 串口通讯的特点

串行通讯的特点是:数据按位传送,最少只需一根传输线即可完成,可大大降低硬件成本,特别适合远距离通信。但传输速度较低。串行通讯的距离可以从几米到几千米。根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。串口通信具有稳定可靠,成本低廉,软件易实现等优点。

2.3 串口通讯的应用

对于那些与计算机相距不远的人-机交换设备和串行存储的外部设备如终端、打印机、逻辑分析仪、磁盘等,采用串行方式交换数据也很普遍。在实时控制和管理方面,采用多台微机处理机组成分级分布控制系统中,各CPU 之间的通信一般都是串行方式。所以串行接口是微机应用系统常用的接口。许多外设和计算机按串行方式进行通信,这里所说的串行方式,是指外设与接口电路之间的信息传送方式,实际上, CPU 与接口之间仍按并行方式工作。

单片机系统中经常使用串口进行外部通讯,因此,串口通讯部分是单片机功能模块极为重要的一部分。早期的8位单片机,如Intel的MCS-48系列,并没有在单片机芯片中集成串行通讯模块,使用上受到很大的限制。从MSC-51系列起,串行通讯模块作为单片机的一个重要功能,被集成到了单片机内部。Atmel 的AT89S52,其内部集成了一个全双工的串行通讯接口,并提供了四种工作模式。此后在一系列的单片机设计中,都将串行通信模块作为标准配置,部分高档单片机还增加了串口的数量和功能。因此,串口仍是当前工业控制领域比较广泛的通信方式。

2.4串口通讯的选择

串行通讯的标准接口存在多种,如RS-232,RS-485,USB接口,IEEE-1394等, 它们各有特点, 应用的领域也各有侧重。RS-485在传输数据时抗噪声干扰的能力比较强,常用于工业生产领域;USB接口和IEEE-1394传输速度较快, 但有些计算机和操作系统不支持这样的接口;RS-232 是PC机与通信工业中应用最广泛的一种串行接口;RS-232 被定义为一种在速率串行通讯中增加通讯距离的单端标准。RS-232-C接口标准出现较早,难免有不足之处,如传输距离短,传输速率低、有电平偏移,抗干扰能力差等缺点。但是经过许多年来RS-232 器件以及通信技术的改进,RS-232 的通信距离已经大大增加而且综合其性能、价格和实用性, 对该系统而言, 利用RS-232 进行端口通讯最为合适。

为了实现系统的可靠实时性传输, 本系统在设计的过程中采用了三线制接法,即仅采用RS-2232 端口的地端、接收数据和发送数据三引脚与外部相连。接线如图2.1所示。

图2.1 RS-232端口连接图

2.5 RS-232C标准介绍

串口通信接口标准中,RS-232C接口是目前最常用的一种串行通讯接口。RS-232C标准的全称是EIA-RS-232C标准,EIA代表美国电子工业协会,RS代表推荐标准,232是标识号,C代表RS-232的最新一次修改。它是在1970年由美国电子工业协会(EIA)联合贝尔系统、调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准。RS-232C广泛应用于Internet,工业控制电信,金融,终端连接等应用领域。

2.5.1 RS-232C引脚定义

传统的RS-232-C接口标准有22根线,采用标准25芯D型插头座(DB25),通常插头在DCE端,插座在DTE端。后来为了简化串口的线路连接,出现了简化的9芯D型插座(DB9),现在应用中25芯插头座已很少采用。下图为DB9连接器的引脚分布。

图2.2 DB9连接器的引脚图

RS-232C的9芯连接器对应的引脚说明如下图所示。

表2.1 9针串行口的针脚功能表

针脚功能针脚功能

1 载波检测(DCD) 6 数据准备好(DSR)

2 接收数据(RXD) 7 请求发送(RTS)

3 发出数据(TXD) 8 清除发送(CTS)

4 数据终端准备好(DTR) 9 振铃指示(RI)

5 信号地线(SG)

a.联络控制信号线

DSR:数据装置准备好——有效时(ON)状态,表明MODEM处于可以使用的状态。DTR:数据终端准备好——有效时(ON)状态,表明数据终端可以使用。

这两个信号有时连到电源上,一上电就立即有效。这两个设备状态信号有效,只表示设备本身可用,并不说明通信链路可以开始进行通信了,能否开始进行通信要由下面的控制信号决定。

RTS:请求发送——用来表示DTE请求DCE发送数据,即当终端要发送数据时,使该信号有效(ON状态),向MODEM请求发送。它用来控制MODEM是否要进入发送状态。

CTS:允许发送——用来表示DCE准备好接收DTE发来的数据,是对请求发送信号RTS的响应信号。当MODEM已准备好接收终端传来的数据,并向前发送时,使该信号有效,通知终端开始沿发送数据线TxD发送数据。

DCD:载波检测——用来表示DCE已接通通信链路,告知DTE准备接收数据。当本地的MODEM收到由通信链路另一端(远地)的MODEM送来的载波信号时,使DCD信号有效,通知终端准备接收,并且由MODEM将接收下来的载波信号解调成数字两数据后,沿接收数据线RxD送到终端。

RI:振铃指示——当MODEM收到交换台送来的振铃呼叫信号时,使该信号有效(ON状态),通知终端,已被呼叫。

b.数据发送与接收线

TxD:发送数据——通过TxD终端将串行数据发送到MODEM,(DTE→DCE)。RxD:接收数据——通过RxD线终端接收从MODEM发来的串行数据,(DCE→DTE)。

c.地线

有两根线SG、PG——信号地和保护地信号线,无方向。

上述控制信号线何时有效,何时无效的顺序表示了接口信号的传送过程。例如,只有当DSR和DTR都处于有效(ON)状态时,才能在DTE和DCE之间进行传送操作。若DTE要发送数据,则预先将DTR线置成有效(ON)状态,等CTS 线上收到有效(ON)状态的回答后,才能在TxD线上发送串行数据。

2.5.2 RS-232C电气特性

在TxD和RxD上:逻辑1:-3V~-15V

逻辑0:+3~+15V

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

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

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

以上规定说明了RS-323C 标准对逻辑电平的定义。对于数据(信息码):逻辑“1”的电平低于-3V ,逻辑“0”的电平高于+3V ;对于控制信号:接通状态信号有效的电平高于+3V ,断开状态信号无效的电平低于-3V ,也就是当传输电平的绝对值大于3V 时,电路可以有效地检查出来,介于-3~+3V 之间的电压无意义,低于-15V 或高于+15V 的电压也认为无意义,因此,实际工作时,应保证电平在±(3~15)V 之间。

2.6串口通讯原理

a.通讯原理

图2.3 串口通信方框图

由于串口通讯是异步的,端口能够在一根线上发送数据同时在另一根线上接收数据。对于两个进行通讯的端口,波特率、数据位、停止位和奇偶校验这些参数都必须是匹配的。

起止式异步协议是一个字符一个字符传输,并且传送一个字符总是以起始位开始,以停止位结束,字符之间没有固定的时间间隔要求。其格式如图2.4 所示。每一个字符的前面都有一位起始位,字符本身有5~7位数据位组成,接着字符后面是一位校验位(也可以没有校验位),最后是一位停止位,后面是不定长度的空闲位。停止位和空闲位都规定为高电平,这样就保证起始位开始处一定有一个下跳沿。

图2.4 起止式异步协议图

MAX 232 电平转换器

PC 机

单 片 机

传送时,数据的低位在前,高位在后,图2.5表示了波形11110100。即ASCII 码11110100=F4H。

图2.5 传送波形图

起始位实际上是作为联络信号附加进来的,当它变为低电平时,告诉收方传送开始。它的到来,表示下面接着是数据位来了,要准备接收。而停止位标志一个字符的结束,它的出现,表示一个字符传送完毕。这样就为通信双方提供了何时开始收发,何时结束的标志。传送开始前,发收双方把所采用的起止式格式和数据传输速率作统一规定。传送开始后,接收设备不断地检测传输线,看是否有起始位到来。当收到一系列的“1”(停止位或空闲位)之后,检测到一个下跳沿,说明起始位出现,起始位经确认后,就开始接收所规定的数据位和奇偶校验位以及停止位。经过处理将停止位去掉,把数据位拼装成一个并行字节,并且经校验后,无奇偶错才算正确的接收一个字符。一个字符接收完毕,接收设备有继续测试传输线,监视“0”电平的到来和下一个字符的开始,直到全部数据传送完。

由上述工作过程可看到,异步通信是按字符传输的,每传输一个字符,就用起始位来通知收方,以此来重新核对收发双方同步。若接收设备和发送设备两者的时钟频率略有偏差,这也不会因偏差的累积而导致错位,加之字符之间的空闲位也为这种偏差提供一种缓冲,所以异步串行通信的可靠性高。但由于要在每个字符的前后加上起始位和停止位这样一些附加位,使得传输效率变低了,只有约80%。因此,起止协议一般用在数据速率较慢的场合(小于19.2kbps)。在高速传送时,一般要采用同步协议。

在PC机和单片机的通讯中,确定一个明确而合理的通讯协议是关键,包括对数据格式、通讯方式、传送速度、传送步骤、检纠错方式以及控制字符定义等问题做出统一规定。

实现PC机与单片机的串口通讯,我们采用MAX232来实现电平转换,用三线制连接串口,也就是说和计算机的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,另外,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片

机的20脚连接。电路连接如图2.6所示。

图2.6 串口通讯原理图

在此电路中要注意:

(1)VCC接电源,必须保证稳定可靠。

(2)EA管脚不可悬空,必须连到VCC,或者通过上拉电阻接到VCC。

(3)复位电路建议采用传统的RC复位,最好多带一个复位按键,以便操作。(4)晶振的频率点不是任意的,推荐使用11.0592MHZ或者22.1184MHZ。(5)PSEN管脚请悬空,不要接GND。

b.异步通信

串行通信有两种基本的通信方式,即异步通信和同步通信。同步通信使用数据块传送信息,而不是字节,每个数据块的开始使用同步字符,使接收和发送同步。常用于信息量大,速度要求高的场合。

异步传送的特点是数据在线路上的传送不连续。传送时数据以一帧信息(一个字符)为单位进行传送的。一帧信息由起始位、数据位、奇偶校验位和停止位4个部分组成,如表2.2所示。常用于信息量不大,速度较低的场合。在计算机测控系统中,由于串行接口的标准化,一般采用异步串行通信方式,以提

高其通用性。

表2.2 帧结构表

空闲位起始位数据奇偶校验位停止位空闲位

0/1 1 (111)

…1110 0/1

0/1…0/1

停止位后的空闲位用于等待传送,用高电平表示。这样接收和发送可以随时或间断进行,而不受时间的限制。

数据位:是衡量通信中实际数据位的参数。当计算机发送一个信息包,实际的数据不会是8位的,标准的值是5、7和8位。如何设置取决于想传送的信息。例如,标准的ASCII码是0~127(7位)。扩展的ASCII码是0~255(8位)。如果数据使用简单的文本(标准 ASCII码),那么每个数据包使用7位数据。每个包是指一个字节,包括开始/停止位,数据位和奇偶校验位。由于实际数据位取决于通信协议的选取,术语“包”指任何通信的情况。

停止位:用于表示单个包的最后一位。典型的值为1,1.5和2位。由于数据是在传输线上定时的,并且每一个设备有其自己的时钟,很可能在通信中两台设备间出现了小小的不同步。因此停止位不仅仅是表示传输的结束,并且提供计算机校正时钟同步的机会。适用于停止位的位数越多,不同时钟同步的容忍程度越大,但是数据传输率同时也越慢。

3 串口通讯硬件系统设计

3.1 AT89S52单片机的概述

单片机微型计算机是微型计算机的一个重要分支。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。

通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。AT89S52是一种低功耗、高性能CMOS 8位微控制器,具有8K 在系统可编程Flash 存储器。使用Atmel 公司高密度非易失性存储器技术制造,与工业80C51 产品指令和引脚完全兼容。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得AT89S52在众多嵌入式控制应用系统中得到广泛应用。如图3.1所示AT89S52单片机结构。

图3.1 AT89S52单片机结构图

引脚说明

a.电源部分

VCC:接+5V电压。

GND:接信号地。

b.I/O口部分

P0口:(P0.0~P0.7)P0口为一个8位双向I/O口,在不接片外存储器和不扩展I/O口时,可作为准双向输入/输出口。在接片外存储器或扩展I/O口时,P0口分时复用为地8位地址总线和双向数据总线。

P1口:(P1.0~P1.7)P1口是一个8位双向I/O口。

P2口:(P2.0~P2.7)P2口为8位准双向I/O口,在接有片外存储器或扩展I/O口且寻址范围超过256B时,P2口用作高8位地址总线。

P3口:(P3.0~P3.7)P3口是一个8位双向I/O口。它还有第二功能。

表3.1 P3口第二功能表

口管脚第二功能

P3.0 RXD(串行输入口)

P3.1 TXD(串行输出口)

INT(外部中断0)

P3.2 0

INT(外部中断1)

P3.3 1

P3.4 T0(定时/计数器0计数脉冲输入端)

P3.5 T1(定时/计数器1计数脉冲输入端)

P3.6 WR(外部数据存储器写选通信号输出端)

P3.7 RD(外部数据存储器读选通信号输出端)

c.控制与复位部分

RST:复位信号。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。

ALE/PROG:地址锁存允许输出。当访问外部程序存储器或数据存储器时,ALE输出脉冲用于锁存地址的低8位字节。一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。

PSEN:外部程序存储器的选通信号。当读外部ROM时,PSEN有效,实现从片外程序存储器的读操作。

:EA为片外程序存储器选用端。当EA保持低电平时,只选用片EA/V

PP

外部程序存储器。否则,单片机上电或复位后选用片内程序存储器。

d.外接晶振部分

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

XTAL2:反向振荡器的输出。

3.2 AT89S52单片机存储器

AT89S52单片机的存储结构与普通的微机系统不同,其程序存储器和数据存储器使用两个独立的地址空间,是单独编址的。从结构上看其存储空间可以分为片内,片外程序存储器与片内,片外数据存储器,特殊功能寄存器(SFR)。

a.程序存储器

单片机的程序存储器用于保存在单片机中执行的程序和表格常数等信息。AT89S52单片机执行指令是根据EA引脚的电平来决定从片内程序存储器还是片外程序存储器读取指令的。当EA=1时,先执行片内程序存储器的程序,当程序计数器PC内容超过片内程序存储器地址的最大值,将自动转向片外程序存储器。当EA=0时,CPU直接从片外程序存储器读取指令。

b.数据存储器

AT89S52单片机片内、片外数据存储器是两个独立的地址空间,应分别单独编址。片内数据存储器除RAM外还有特殊功能寄存器(SFR)。片内RAM又可分为工作寄存区、位寻址区、数据缓冲区3个部分。

(1)工作寄存区为00H~1FH,当前程序使用的工作寄存器是由程序状态字PSW 中的RS0位和RS1位来决定的,通过修改PSW寄存器中的RS0位和RS1位,可以快速的切换工作区。

(2)位寻址区为20H~2FH,这16个单元(共128位)的每一位都赋予了一个位地址,地址范围是00H~7FH。

(3)数据缓冲区为30H~7FH,也是用户RAM区,多用于堆栈的数据空间。

c.特殊功能寄存器

特殊功能寄存器(SFR)又称为专用寄存器,专用于控制、管理片内算术逻辑部件、并行I/O口、串行I/O口、定时器/计数器、中断系统等功能模块的工作。

3.3 定时系统

在AT89S52 中,定时器0 和定时器1 的操作与AT89C51 和AT89C52一样。定时器2是一个16位定时/计数器,它既可以做定时器,又可以做事件计数器。定时器0 和定时器1可编程控制4种工作模式。还包括两个定时控制寄存器TCON和TMOD。

a.定时器/计数器方式控制寄存器TMOD

TMOD的低4位用于T0,高4位用于T1。如表3.2所示。

表3.2 TMOD格式定义表

D7 D6 D5 D4 D3 D2 D1 D0

T1 T0

GATE C/T M1 M0 GATE C/T M1 M0 C/T:定时或计数功能选择位,当C/T=1时为计数方式,当C/T=0时,为定时方式。M1、M0:定时/计数器工作方式选择位如表3.3所示。

表3.3 定时器/计数器工作方式表

M1 M0 工作方式功能说明

0 0 0 13位定时器/计数器

0 1 1 16位定时器/计数器

1 0

2 自动重装初值的8位定时器/计数器

1 1 3 仅适用T0,两个8位定时器/计数器

GATE:门控位,用于控制定时器/计数器的启动是否受外部中断请求信号的影响。

定时器/计数器在工作方式2时,M1、M0分别设为1、0,此时是一个自动装入初值的8位定时器/计数器。此时计数器的计数值为:N=28-X=256-X

b.定时器/计数器控制寄存器TCON

定时器/计数器控制寄存器TCON的高4位用于定时/计数器的启动和溢出标示。如表3.4所示。

表3.4 TCON位定义格式表

TCON(88H)D7 D6 D5 D4 D3 D2 D1 D0 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TF1:定时/计数器T1溢出标志。

TF0: 定时/计数器T0溢出标志。

TR1:T1定时器/计数器的运行控制位,当TR1=1时,启动T1开始计数,当TR1=0时,T1停止计数。

TR0:T0定时器/计数器的运行控制位,当TR0=1时启动T0开始计数,当TR0=0时,T0停止计数。

3.4中断系统

3.4.1中断的基本概念

中断系统是计算机重要的组成部分。它为计算机的多任务处理提供了一种解决方法,多用于实时控制,故障自动检测人机互动等应用环境。

所谓中断是指CPU 在进行某项任务处理时响应系统中或系统外的某个事件的一种响应过程,即CPU 暂时停止现行程序的执行,而自动转去执行预先安排好的处理该事件的服务子程序。当处理结束后,再返回到被暂停程序的断点处,继续执行原来的程序。实现这种中断功能的硬件系统和软件系统统称为中断系统。

3.4.2中断源

AT89S52有6个中断源:两个外部中断源0INT ,1INT 。三个定时中断(定时器0、1、2)和一个串行中断。IE 还包括一个中断允许总控制位EA ,它能一次禁止所有中断。当系统产生中断时,6个中断源的中断请求标志分别由特殊功能寄存器TCON 和SCON 的相应位来锁存。

a .定时器/计数器控制寄存器TCON

TCON 是定时器/计数器T0、T1的控制寄存器,同时他又能锁存外部中断请求标志和定时/计数器T0,T1的溢出中断标志,如上表3.4中所示。

IE1:外部中断1INT 请求标志。IE1=1时表示外部中断向CPU 请求中断,当CPU 相应中断时由硬件清0。

IT1:外部中断1INT 触发控制位。IT1=0,则选择外部中断为电平触发方式。IT1=1,则选择外部中断为跳变触发方式。

IE0:外部中断0INT 请求标志。IE0=1表示外部中断向CPU 请求中断,当CPU 相应中断时由硬件清0。

IT0:外部中断0INT 请求标志。

b .串行口控制寄存器SCON

当AT89S52单片机内置的串行口接收到或者发送完数据时,会向CPU 发出串口中断,并根据中断产生的原因相应的置T1位和R1位。CPU 响应中断后并不自动清0。T1位和R1位分别位于寄存器SCON 的如表3.5所示。

表3.5 SCON位定义格式表

SCON(98H) D7 D6 D5 D4 D3 D2 D1 D0 SM0 SM1 SM2 REN TB8 RB8 TI RI

T1:串口发送中断标志。当串行口发送完数据时置位T1,同时向CPU发送串口中断请求,CPU相应中断后不对该位清0。

R1:串口接收中断标志。当串行口接收到一个数据时置位R1,同时向CPU发送串口中断请求,CPU相应中断后不对该位清0。

3.4.3中断控制

使用中断允许寄存器IE可以方便的对所有的中断源或对某些特定的中断源进行开启和屏蔽控制。IE的各位如表3.6所示。

表3.6 IE位定义格式表

IE(A8H) D7 D6 D5 D4 D3 D2 D1 D0 EA ES ET1 EX1 ET0 EX0 EA:CPU 中断(总)允许位。EA=1,CPU开放中断,EA=0,CPU屏蔽所有中断。ES:串行口中断开放控制位。ES=1,CPU相应串行口中断,ES=0,CPU禁止串行口中断。

EX1(EX0):CPU外部中断1(0)开放控制位。

ET1(ET0):CPU定时溢出中断1(0)开放控制位。

3.5 AT89S52单片机的串行口

a.功能与结构

AT89S52单片机内部有一个功能很强的全双工串行口,可同时接收和发送数据。对串口的访问和设置是通过访问其相关的特殊寄存器进行的,与AT89S52相关的特殊寄存器有3个:SCON、PCON和SBUF。

(1)串口控制寄存器SCON

串口控制寄存器SCON主要用于设置串口的工作模式和串口中断查询,格式如表3.5。

SM0,SM1:由软件置为或清0,用于选择串行口的工作方式。

SM2:串口多机通讯控制位。

REN:允许串行接收控制,将其置为1时允许接收。

组态王与单片机多机串口通信的设计方案

组态王与单片机多机串口通信的设计 1 引言 随着工业化要求提高,分布式系统发展以及控制设备与监控设备之间通讯需要,组态软件设计的监控系统逐步普及。现在组态软件繁多,比如KingVieW(组态王>、MCGS、W inCC等。KingView软件基于Microsoft Windows XP,NT/2000操作系统.具有友好的人机操作界面、强大的IO设备端口驱动能力,可与各种PLC、智能仪表、智能模块、板卡、变频器等实时通讯。由于在检测大量模拟量的工业现场使用PLC与组态软件通讯势必增加产品成本。而单片机接口丰富,与A/D转换模块组合可以完成相同的工作,并且系统可靠、成本低。 2 组态王与单片机的串口通讯方法 目前,组态王与单片机的通信多是通过动态数据交换(DDE>或通过自己开发通讯驱动程序完成。DDE是Windows平台上的一个完整的通信协议,组态王通过该协议与其他应用程序交换数据。但不可靠和非实时。而自己开发通讯驱动程序会带来设计困难,增加系统开发周期,可行性不高。组态王专门提供一种与单片机多机串口通信方法,可满足大多数系统需求。 3 PC机与单片机的硬件接口电路 图1为上位PC机与下位单片机80C51的连接电路。PC机与单片机本身都自带串行通讯接口,但由于在分布式系统中PC机与各单片机的分布不集中,不能利用RS-232通讯传输,只能改用RS-485。RS-485采用差分式传输信号,最大传输距离为1 219 m.最大传输速率为10 Mb/s.对同时出现的两条信号线A、B的干扰有较强的抑制能力。当两条线绞在一起时,被通信各种分布参数耦合过来的干扰信号可平均地分配到这两条线上,因此对RS-485的差分式传输线路而言,用双绞线可获得较强的抗干扰能力。RS-485采用二线与四线平衡传输方式,二线制可实现真正的多点双向通信,但需要在传输线上接电阻(约120 Ω>。

单片机串口通信C程序及应用实例

一、程序代码 #include//该头文件可到https://www.doczj.com/doc/9717649159.html,网站下载#define uint unsigned int #define uchar unsigned char uchar indata[4]; uchar outdata[4]; uchar flag; static uchar temp1,temp2,temp3,temp; static uchar R_counter,T_counter; void system_initial(void); void initial_comm(void); void delay(uchar x); void uart_send(void); void read_Instatus(void); serial_contral(void); void main() { system_initial(); initial_comm(); while(1) { if(flag==1) { ES = 0; serial_contral(); ES = 1; flag = 0; } else read_Instatus(); } } void uart_send(void) { for(T_counter=0;T_counter<4;T_counter++) { SBUF = outdata[T_counter]; while(TI == 0);

TI = 0; } T_counter = 0; } uart_receive(void) interrupt 4 { if(RI) { RI = 0; indata[R_counter] = SBUF; R_counter++; if(R_counter>=4) { R_counter = 0; flag = 1; } } } void system_initial(void) { P1M1 = 0x00; P1M0 = 0xff; P1 = 0xff; //初始化为全部关闭 temp3 = 0x3f;//初始化temp3的值与六路输出的初始值保持一致 temp = 0xf0; R_counter = 0; T_counter = 0; } void initial_comm(void) { SCON = 0x50; //设定串行口工作方式:mode 1 ; 8-bit UART,enable ucvr TMOD = 0x21; //TIMER 1;mode 2 ;8-Bit Reload PCON = 0x80; //波特率不加倍SMOD = 1 TH1 = 0xfa; //baud: 9600;fosc = 11.0596 IE = 0x90; // enable serial interrupt TR1 = 1; // timer 1 RI = 0; TI = 0; ES = 1; EA = 1; }

基于51单片机的串口通讯系统课程设计论文

引言 人类社会已经进入信息化时代,信息社会的发展离不开电子产品的进步。单片机的出现使人类实现利用编程来代替复杂的硬件搭建电路,它靠程序运行,并且可以修改。通过不同的程序实现不同的功能,尤其是特殊的独特的一些功能,这是别的器件需要费很大力气才能做到的,有些则是花大力气也很难做到的。一个不是很复杂的功能要是用美国50年代开发的74系列,或者60年代的CD4000系列这些纯硬件来搞定的话,电路一定是一块大PCB板!但是如果要是用美国70年代成功投放市场的系列单片机,结果就会有天壤之别!只因为单片机的通过你编写的程序可以实现高智能,高效率,以及高可靠性! 单片机应用的主要领域非常广,智能化家用电器、办公自动化设备商业营销设备、工业自动化控制、智能化仪表、智能化通信产品、汽车电子产品、航空航天系统和国防军事、尖端武器等领域。 单片机应用的意义不仅在于它的广阔围及所带来的经济效益,更重要的意义在于,单片机的应用从根本上改变了控制系统传统的设计思想和设计方法。以前采用硬件电路实现的大部分控制功能,正在用单片机通过软件方法来实现。以前自动控制中的PID调节,现在可以用单片机实现具有智能化的数字计算控制、模糊控制和自适应控制。这种以软件取代硬件并能提高系统性能的控制技术称为微控技术。随着单片机应用的推广,微控制技术将不断发展完善。 电路的集成化不仅对硬件电路的设计相关,与电路的布局同样相关。印刷版的出现使得电路产品更加规,体积更小。Protel99se是一款专业的绘制电路及印刷版的软件,近年来的不断升级使得其功能更加完善,出现了Altium Designer 、Protel DXP等升级版本。

51单片机与PC机通信资料

《专业综合实习报告》 专业:电子信息工程 年级:2013级 指导教师: 学生:

目录 一:实验项目名称 二:前言 三:项目内容及要求 四:串口通信原理 五:设计思路 5.1虚拟串口的设置 5.2下位机电路和程序设计 5.3串口通信仿真 六:电路原理框图 七:相关硬件及配套软件 7.1 AT89C51器件简介 7.2 COMPIN简介 7.3 MAX232器件简介 7.4友善串口调试助手 7.5 虚拟串口软件Virtual Serial Port Driver 6.9八:程序设计 九:proteus仿真调试 十:总结 十一:参考文献 一:实验项目名称:

基于51单片机的单片机与PC机通信 二:前言 在国内外,以PC机作为上位机,单片机作为下位机的控制系统中,PC机通常以软件界面进行人机交互,以串行通信方式与单片机进行积极交互,而单片机系统根据被控对象配置相应的前向,后向信息通道,工作时作为主控机测对象,作为被控机接受PC机监督,指挥,定期或受命向上位机提供对象及本身的工作状态信息。 目前,随着集成电路集成度的增加,电子计算机向微型化和超微型化方向发展,微型计算机已成为导弹,智能机器人,人类宇宙和太空和太空奥妙复杂系统不可缺少的智能部件。在一些工业控制中,经常需要以多台单片机作为下位机执行对被控对象的直接控制,以一台PC机为上位机完成复杂的数据处理,组成一种以集中管理、分散控制为特点的集散控制系统。 为了提高系统管理的先进性和安全性,计算机工业自动控制和监测系统越来越多地采用集总分算系统。较为常见的形式是由一台做管理用的上位主计算机(主机)和一台直接参与控制检测的下位机(单片机)构成的主从式系统,主机和从机之间以通讯的方式来协调工作。主机的作用一是要向从机发送各种命令及参数:二是要及时收集、整理和分析从机发回的数据,供进一步的决策和报表。从机被动地接受、执行主机发来的命令,并且根据主机的要求向主机回传相应烦人实时数据,报告其运行状态。 用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。同时,系统的更改和扩充极为容易。MCS-51系列单片机,由于内部带有一个可用于异步通讯的全双工的穿行通讯接口,阴齿可以很方便的构成一个主从式系统。 串口是计算机上一种非常通用的设备通讯协议,大多数计算机包容两个基于RS232的串口。串口同时也是仪器仪表设备通过用的通讯协议,很多GPIB兼容的设备也带有RS-232口。同时串口通讯协议也可以用于获取远程采集设备数据。所以,深入的理解学习和研究串口通信相关知识是非常必要的。此次毕业设计选题为“PC机与MCS-51单片机的串口通讯”,使用51单片机来实现一个主从式

51单片机串口通信,232通信,485通信,程序

51单片机串口通信,232通信,485通信,程序代码1:232通信 #include #define uchar unsigned char #define uint unsigned int uchar flag,a,i; uchar code table[]="i get"; void init() { TMOD=0X20; TH1=0XFD; TH0=0XFD; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1; } void main() { init();

while(1) { if(flag==1) { ES=0; for(i=0;i<6;i++) { SBUF=table[i]; while(!TI); TI=0; } SBUF=a; while(!TI); TI=0; ES=1; flag=0; } } } void ser() interrupt 4 {

RI=0; a=SBUF; flag=1; } 代码2:485通信 #include #include"1602.h" #define uchar unsigned char #define uint unsigned int unsigned char flag,a,i; uchar code table[]="i get "; void init() { TMOD=0X20; TH1=0Xfd; TL1=0Xfd; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1;

} void main() { init_1602(); init(); while(1) { if(flag==1) { display(0,a); } } } void ser() interrupt 4 { RI=0; a=SBUF; flag=1; } Love is not a maybe thing. You know when you love someone.

51单片机与PC串口通讯

目录 第1章需求分析 ............................................................................................................................ - 1 - 1.1课题名称 (1) 1.2任务 (1) 1.3要求 (1) 1.4设计思想 (1) 1.5课程设计环境 (1) 1.6设备运行环境 (2) 1.7我在本实验中完成的任务 (2) 第2章概要设计 ............................................................................................................................ - 2 - 2.1程序流程图 (2) 2.2设计方法及原理 (3) 第3章详细设计 ............................................................................................................................ - 3 - 3.1电路原理 (3) 3.1.1STC89C52芯片 ............................................................................................................. - 3 -3.2串口通信协议 (4) 3.3程序设计 (5) 3.3.1主程序模块 .................................................................................................................... - 5 - 3.3.2串口通讯模块 ................................................................................................................ - 6 - 3.3.3控制部分文件 ................................................................................................................ - 8 - 3.3.4公共部分模块 .............................................................................................................. - 11 -3.4电路搭建 (12) 3.4.1电路原理图 .................................................................................................................. - 12 -第4章上位机关键代码分析 ...................................................................................................... - 12 - 4.1打开串口操作 (12) 4.2后台线程处理串口程序 (15) 4.3程序运行界面 (18) 第5章课程设计总结与体会 ...................................................................................................... - 19 -第6章致谢 .................................................................................................................................. - 19 -参考文献........................................................................................................................................... - 19 -

基于单片机的串口通信模块设计

1 绪论 1.1 研究背景 通信是指不同的独立系统利用线路互相交换数据,它的主要目的是将数据从一端传送到另一端,实现数据的交换。在现代工业控制中,通常采用计算机作为上位机与下层的实时控制与监测设备进行通讯。现场数据必须通过一个数据收集器传给上位机,同样上位机向现场设备发命令也必须通过数据收集器。串行通信因其结构简单、执行速度快、抗干扰能力强等优点,已被广泛应用于数据采集和过程控制等领域。 计算机与外界的信息交换称为通信。基本的通信方式有并行通信和串行通信两种。串行通信是指一条信息额各位数据被逐位按顺序传送的通信方式。串行通信的特点是:数据位传送,按位顺序进行,最少只需要一根传输线即可完成,成本低但传送速度快,串行通信的距离可以从几米到几千米。 随着计算机技术尤其是单片微型机技术的发展,人们已越来越多地采用单片机来对一些工业控制系统中如温度、流量和压力等参数进行监测和控制。PC机具有强大的监控和管理能力,而单片机则具有快速及灵和的控制特点,通过PC 机的RS-232串行接口与外部设备进行通信,是许多测控系统中常用的一种通信解决方案。而随着USB接口技术的成熟和使用的普及,由于USB 接口有着 RS-232(DB-9)串口无法比拟的优点,RS-232(DB-9)串口正在逐步地为USB 接口所替代。而在现在的大多数笔记本电脑中,出于节省物理空间和用处不大等原因,RS-232(DB-9)串口已不再设置,这就约束了基于RS-232(DB-9)串口与PC 机联络的单片机设备的使用围。当前USB接口逐步取代RS-232(DB-9)串口已是大势所趋,单片机同计算机的USB通信在实际工作中的应用围也将越来越广。本文所介

汇编语言实现串口通信(PC和单片机间)教学文案

8.用C语言或汇编语言实现串口通信(PC和单片机间) 上位机和下位机的主从工作方式为工业控制及自动控制系统所采用。由于PC 机分析能力强、处理速度更快及单片机使用灵活方便等特点,所以一般都将PC 机作为上位机,单片机作为下位机,二者通过RS-232或者RS-485接收、发送数据和传送指令。单片机可单独处理数据和控制任务,同时也将数据传送给PC机,由PC机对这些数据进行处理或显示 1 硬件电路的设计 MCS-51单片机有一个全双工的串行通讯口UART,利用其RXD和TXD与外界进行通信,其内部有2个物理上完全独立的接收、发送缓冲器SBUF,可同时发送和接收数据。所以单片机和PC机之间可以方便地进行串口通讯。单片机串口有3条引线:TXD(发送数据),RXD(接收数据)和GND(信号地)。因此在通信距离较短时可采用零MODEM方式,简单三连线结构。IBM-PC机有两个标准的RS-232串行口,其电平采用的是EIA电平,而MCS-51单片机的串行通信是由TXD(发送数据)和RXD(接收数据)来进行全双工通信的,它们的电平是TTL电平;为了PC机与MCS-51 机之间能可靠地进行串行通信,需要用电平转换芯片,可以采用MAXIM公司生产的专用芯片MAX232进行转换。电路如图1所示。硬件连接时,可从MAX232中的2路发送器和接收器中任选一路,只要注意发送与接收的引脚对应关系即可。接口电路如图3.5所示。

总体设计按照整体设计思路方案绘制原理图如下所示: 2 系统软件设计 软件设计分上位机软件设计和下位机软件设计。这两部分虽然在不同的机器上编写和运行,但它们要做的工作是对应的:一个发送,另一个接收。为了保证数据通信的可靠性,要制定通信协议,然后各自根据协议分别编制程序。现约定通信协议如下:PC机和单片机都可以发送和接收。上位机和下位机均采用查询方式发送控字符和数据、中断方式接收控制字符和数据。采用RS-232串口异步通信, 1上位PC机与下位单片机异步串行通信的通信协议

第06章单片机串行通信系统习题解答

第6章单片机串行通信系统习题解答 一、填空题 1.在串行通信中,把每秒中传送的二进制数的位数叫波特率。 2.当SCON中的M0M1=10时,表示串口工作于方式 2 ,波特率为 fosc/32或fosc/64 。 3.SCON中的REN=1表示允许接收。 4.PCON 中的SMOD=1表示波特率翻倍。 5.SCON中的TI=1表示串行口发送中断请求。 6.MCS-51单片机串行通信时,先发送低位,后发送高位。 7.MCS-51单片机方式2串行通信时,一帧信息位数为 11 位。 8.设T1工作于定时方式2,作波特率发生器,时钟频率为,SMOD=0,波特率为时,T1的初值为 FAH 。 9.MCS-51单片机串行通信时,通常用指令 MOV SBUF,A 启动串行发送。 10.MCS-51单片机串行方式0通信时,数据从引脚发送/接收。 二、简答题 1.串行口设有几个控制寄存器它们的作用是什么 答:串行口设有2个控制寄存器,串行控制寄存器SCON和电源控制寄存器PCON。其中PCON中只有的SMOD与串行口的波特率有关。在SCON中各位的作用见下表: 2.MCS-51单片机串行口有几种工作方式各自的特点是什么 答:有4种工作方式。各自的特点为:

3.MCS-51单片机串行口各种工作方式的波特率如何设置,怎样计算定时器的初值 答:串行口各种工作方式的波特率设置: 工作方式O :波特率固定不变,它与系统的振荡频率fosc 的大小有关,其值为fosc/12。 工作方式1和方式3:波特率是可变的,波特率=(2SMOD/32)×定时器T1的溢出率 工作方式2:波特率有两种固定值。 当SM0D=1时,波特率=(2SM0D/64)×fosc=fosc/32 当SM0D=0时,波特率=(2SM0D/64)×fosc=fosc/64 计算定时器的初值计算: 4.若fosc = 6MHz ,波特率为2400波特,设SMOD =1,则定时/计数器T1的计数初值为多少并进行初始化编程。 答:根据公式 N=256-2SMOD ×fosc /(2400×32×12)= ≈243 =F3H TXDA: MOV TMOD,#20H ;置T1定时器工作方式2 MOV TL1,#0F3H ;置T1计数初值. MOV TH1,#0F3H B f B f N OSC SMOD OSC SMOD ??-=???-=384225612322256

单片机与PC机串口通讯设计

第一章串口通讯的系统组成与原理 1.1 系统组成及通讯原理 1.1.1 系统构成 一、MSP430F149功能简介: 本设计选用的主要芯片为MSP430F149,该单片机属于德州仪器公司MSP430F14X/16X FLASH 系列。该系列是一组工业级超低功耗的微控制器,运行环境温度为-40~+85 摄氏度工作电压范围 1.8~3.6V,MSP430 单片机之所以有超低的功耗,是因为其在降低芯片的电源电压及灵活而可控的运行时钟方面都有其独到之处。由于具有16位RISC(精简指令集)结构,16位寄存器和常数寄存器,MSP430 达到了最大的代码效率。数字控制的振荡器提供快速从所有低功耗模式苏醒到活动模式的能力时间少于6ms。MSP430F149有较高的处理速度,在8MHz 晶体驱动下指令周期为125 ns。另外它带有两个16 位定时器(带看门狗功能)、速度极快的8 通道12 位A/D 转换器(ADC)(带内部参考电压、采样保持和自动扫描功能)、一个内部比较器和两个通用同步/异步发射接收器、48个I/O口(均可独立控制)的微处理器结构。硬件乘法器提高了单片机的性能并使单片机在编码和硬件上可兼容[3]。这些特点保证了可编制出高效率的源程序。 二、系统构成 1、系统框图 系统构成如图1-1所示,由上位机(即工业控制计算机)、通讯接口和下位机3部分组成。上位机选用的是工控机,智能终端由单片机MSP430F149和外围传感器放大电路等构成(本设计部涉及该部分的设计)。单片机与PC 机之间通信方式为串行异步方式(UART),下位机采用中断方式进行与上位机的数据交换,上位机采用按时查询方式对各串口进行读写操作。单片机MSP430要想与PC 串口连接或者其它带有串口的终端设备连接,接口电路部分必须要进行EIA-RS-232-C 与MSP430 电平和逻辑关系的转换[4]。本设计将采用MAX3221芯片,完成3V~5V 电平与串口电平的双向转换。

51单片机实现的485通讯程序

51单片机实现的485通讯程序 #ifndef __485_C__ #define __485_C__ #include #include #define unsigned char uchar #define unsigned int uint /* 通信命令*/ #define __ACTIVE_ 0x01 // 主机询问从机是否存在 #define __GETDATA_ 0x02 // 主机发送读设备请求 #define __OK_ 0x03 // 从机应答 #define __STATUS_ 0x04 // 从机发送设备状态信息 #define __MAXSIZE 0x08 // 缓冲区长度 #define __ERRLEN 12 // 任何通信帧长度超过12则表示出错uchar dbuf[__MAXSIZE]; // 该缓冲区用于保存设备状态信息uchar dev; // 该字节用于保存本机设备号 sbit M_DE = P1^0; // 驱动器使能,1有效 sbit M_RE = P1^1; // 接收器使能,0有效

void get_status(); // 调用该函数获得设备状态信息,函数代码未给出 void send_data(uchar type, uchar len, uchar *buf); // 发送数据帧 bit recv_cmd(uchar *type); // 接收主机命令,主机请求仅包含命令信息 void send_byte(uchar da); // 该函数发送一帧数据中的一个字节,由send_data()函数调用void main() { uchar type; uchar len; /* 系统初始化*/ P1 = 0xff; // 读取本机设备号 dev = (P1>>2); TMOD = 0x20; // 定时器T1使用工作方式2 TH1 = 250; // 设置初值 TL1 = 250; TR1 = 1; // 开始计时 PCON = 0x80; // SMOD = 1 SCON = 0x50; // 工作方式1,波特率9600bps,允许接收 ES = 0; // 关闭串口中断 IT0 = 0; // 外部中断0使用电平触发模式 EX0 = 1; // 开启外部中断0

51单片机usart通信程序(有CRC校验)

#include #include #include #define uchar unsigned char #define uint unsigned int //uchar const table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; uchar p[]={0x01,0x03,0x25,0x23,0x00,0x01}; /* CRC 高位字节值表*/ uchar const crchi[] = { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0/**/, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40 } ; /* CRC低位字节值表*/ uchar const crclo[] = { 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6, 0x06/**/, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04, 0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B, 0xC9, 0x09, 0x08, 0xC8, 0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F, 0xDD, 0x1D, 0x1C, 0xDC, 0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,

基于51单片机串行通信的无线发射极和接收机设计

基于51单片机串行通信的无线发射极和接收机设计---- 1 概述 1.1 课题的目的、背景和意义 最近几年来,由于无线接入技术需求日益增大,以及数据交换业务(如因特 网、电子邮件、数据文件传输等)不断增加,无线通信和无线网络均呈现出指数增 加的趋势。有力的推动力无线通信向高速通信方向发展。然而,工业、农业、车载 电子系统、家用网络、医疗传感器和伺服执行机构等无线通信还未涉足或者刚刚涉 足的领域,这些领域对数据吞吐量的要求很低,功率消耗也比现有标准提供的功率 消耗低。此外,为了促使简单方便的,可以随意使用的无线装置大量涌现,需要在 未来个人活动空间内布置大量的无线接入点,因而低廉的价格将起到关键作用。为 降低元件的价格,以便这些装置批量生产,所以发展了一个关于这种网络的标准方案。Zigbee就是在这一标准下一种新兴的短距离、低功耗、低数据传输的无线网 络技术,它是一种介于无线标记技术和蓝牙之间的技术方案。 对于这种短距离、低功耗、低数据传输无线技术,它不仅在工业、农业、军 事、环境、医疗等传统领域有着巨大的应用价值,未来应用中还可以涉及人类日常 生活和社会生产活动的所有领域。由于各方面的制约,这种技术的大规模商业应用 还有待时日,但已经显示出了非凡的应用价值,相信随着相关技术的发展和推进, 一定会得到更广泛应用。 1.2国内外无线技术相关现状及Zigbee现状 无线通信从固定方式发展为移动方式,移动通信发展至今大约经历了五个阶段: 第一阶段为20年代初至50年代初,主要用于舰船及军有,采用短波频及电子 管技术,至该阶段末期出现才出现150MHVHF单工汽车公用移动电话系统MTS。

【最新编排】基于51单片机的DHT11串口通讯

//****************************************************************// // DHT 使用范例 //单片机 AT89S5 或 STC89C5 RC // 功能 串口发送温湿度数据波特率 9600 //硬件连接 P .0口为通讯口连接DHT ,DHT 地电源和地连接单片机地 电源和地 单片机串口加MAX 3 连接电脑 // 公司 济南联诚创发科技有限公司 //****************************************************************// #include #include // typedef unsigned char U8; /* defined for unsigned 8-bits integer variable 无符号8位整型变量 */ typedef signed char S8; /* defined for signed 8-bits integer variable 有符号8位整型变量 */ typedef unsigned int U 6; /* defined for unsigned 6-bits integer variable 无符号 6位整型变量 */ typedef signed int S 6; /* defined for signed 6-bits integer variable 有符号 6位整型变量 */ typedef unsigned long U3 ; /* defined for unsigned 3 -bits integer variable 无符号3 位整型变量 */ typedef signed long S3 ; /* defined for signed 3 -bits integer variable 有符号3 位整型变量 */ typedef float F3 ; /* single precision floating point variable (3 bits) 单精度浮点数 3 位长度 */ typedef double F64; /* double precision floating point variable (64bits) 双精度浮点数 64位长度 */ // #define uchar unsigned char #define uint unsigned int #define Data_0_time 4 //----------------------------------------------// //----------------IO口定义区--------------------// //----------------------------------------------// sbit P _0 = P ^0 ; sbit P _ = P ^ ; sbit P _ = P ^ ; sbit P _3 = P ^3 ;

两个单片机之间的串行通信

两个单片机之间的串行通信 一、设计要求 在某个控制系统中有U1、U2这两个单片机,U1单片机首先将P1端口指拨开关数据载入SBUF,然后经由TXD将数据传送给U2单片机,U2单片机将接收数据存入SBUF,再由SBUF载入累加器,并输出至P1端口,点亮相应端口的LED。 二、实验所需元器件 三、电路原理图: 两个单片机之间的串行通信电路图

四、程序设计 这两个单片机均工作在半工状态,U1将P1端口的状态通过TXD发半空给U2,而U2接收U1的数据,然后控制P1端口的LED显示。因此,需编写两个不同的程序,其程序流程图如下所示:

五、C语言程序: U1的C语言程序: #include "reg51.h" #define uint unsigned int #define uchar unsigned char void send(uchar state) { SBUF=state; while(TI==0); TI=0; } void SCON_init(void) { SCON=0x50; TMOD=0x20; PCON=0x00; TH1=0xfd; TL1=0xfd; TI=0; TR1=1; ES=1; } void main() { P1=0xff; SCON_init(); while(1) { send(P1); } } U2的C语言程序: #include "reg51.h" #define uint unsigned int #define uchar unsigned char uchar state; void receive() { while(RI==0) state=SBUF; RI=0; } void SCON_init(void) { SCON=0x50; TMOD=0x20; PCON=0x00; TH1=0xfd; TL1=0xfd; RI=0; TR1=1; } void main() { SCON_init(); while(1) { receive(); P1=state; } } 六、调试与仿真:

51单片机串口通信

一、串口通信原理 串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到计算机端,而且也能实现计算机对单片机的控制。由于其所需电缆线少,接线简单,所以在较远距离传输中,得到了广泛的运用。串口通信的工作原理请同学们参看教科书。 以下对串口通信中一些需要同学们注意的地方作一点说明: 1、波特率选择 波特率(Boud Rate)就是在串口通信中每秒能够发送的位数(bits/second)。MSC-51串行端口在四种工作模式下有不同的波特率计算方法。其中,模式0和模式2波特率计算很简单,请同学们参看教科书;模式1和模式3的波特率选择相同,故在此仅以工作模式1为例来说明串口通信波特率的选择。 在串行端口工作于模式1,其波特率将由计时/计数器1来产生,通常设置定时器工作于模式2(自动再加模式)。在此模式下波特率计算公式为:波特率=(1+SMOD)*晶振频率/(384*(256-TH1)) 其中,SMOD——寄存器PCON的第7位,称为波特率倍增位; TH1——定时器的重载值。 在选择波特率的时候需要考虑两点:首先,系统需要的通信速率。这要根据系统的运作特点,确定通信的频率范围。然后考虑通信时钟误差。使用同一晶振频率在选择不同的通信速率时通信时钟误差会有很大差别。为了通信的稳定,我们应该尽量选择时钟误差最小的频率进行通信。 下面举例说明波特率选择过程:假设系统要求的通信频率在20000bit/s以下,晶振频率为12MHz,设置SMOD=1(即波特率倍增)。则TH1=256-62500/波特率 根据波特率取值表,我们知道可以选取的波特率有:1200,2400,4800,9600,19200。列计数器重载值,通信误差如下表: 因此,在通信中,最好选用波特率为1200,2400,4800中的一个。 2、通信协议的使用 通信协议是通信设备在通信前的约定。单片机、计算机有了协议这种约定,通信双方才能明白对方的意图,以进行下一步动作。假定我们需要在PC机与单片机之间进行通信,在双方程式设计过程中,有如下约定:0xA1:单片机读取P0端口数据,并将读取数据返回PC机;0xA2:单片机从PC机接收一段控制数据;0xA3:单片机操作成功信息。 在系统工作过程中,单片机接收到PC机数据信息后,便查找协议,完成相应的操作。当单片机接收到0xA1时,读取P0端口数据,并将读取数据返回PC机;当单片机接收到0xA2时,单片机等待从PC机接收一段控制数据;当PC机接收到0xA3时,就表明单片机操作已经成功。 3、硬件连接 51单片机有一个全双工的串行通讯口,所以单片机和计算机之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如计算机的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和计算机的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。

基于51单片机的双机串行通信课程设计 1000110061

基于AT89C51单片机的双机串行通信设计 姓名:杨应伟 学号:100110061 专业:机械设计制造及其制动化 班级:机电二班

前言 单片机广泛应用于仪器仪表、家用电器、医用设备、航空航天、专用设备的智能化管理及过程控制等领域随着计算机技术的发展及工业自动化水平的提高, 在许多场合采用单机控制已不能满足现场要求,因而必须采用多机控制的形式,而多机控制主要通过多个单片机之间的串行通信实现。串行通信作为单片机之间常用的通信方法之一, 由于其通信编程灵活、硬件简洁并遵循统一的标准, 因此其在工业控制领域得到了广泛的应用。 在测控系统和工程应用中,常遇到多项任务需同时执行的情况,因而主从式多机分布式系统成为现代工业广泛应用的模式。单片机功能强、体积小、价格低廉、开发应用方便,尤其具有全双工串行通讯的特点,在工业控制、数据采集、智能仪器仪表、家用电器方面都有广泛的应用。同时,IBM-PC机正好补充单片机人机对话和外围设备薄弱的缺陷。各单片机独立完成数据采集处理和控制任务,同时通过通信接口将数据传给PC机,PC机将这些数据进行处理、显示或打印,把各种控制命令传给单片机,以实现集中管理和最优控制。串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双击通信。 在通信过程中,使用通信协议进行通信。在测控系统和工程应用中,常遇到多项任务需同时执行的情况,因而主从式多机分布式系统成为现代工业广泛应用的模式。单片机功能强、体积小、价格低廉、开发应用方便,尤其具有全双工串行通讯的特点,在工业控制、数据采集、智能仪器仪表、家用电器方面都有广泛的应用。同时,IBM-PC机正好补充单片机人机对话和外围设备薄弱的缺陷。各单片机独立完成数据采集处理和控制任务,同时通过通信接口将数据传给PC机,PC机将这些数据进行处理、显示或打印,把各种控制命令传给单片机,以实现集中管理和最优控制。 串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双击通信。在通信过程中,使用通信协议进行通信。

相关主题
文本预览
相关文档 最新文档