当前位置:文档之家› 第八课51单片机串行口工作原理

第八课51单片机串行口工作原理

第八课51单片机串行口工作原理
第八课51单片机串行口工作原理

第八课:51单片机串行口工作原理

MCS-51系列单片机片内有一个串行I/O端口,通过引脚RXD(P3.0)和TXD(P3.1)可与外设电路进行全双工的串行异步通信。

1.串行端口的基本特点

8031单片机的串行端口有4种基本工作方式,通过编程设置,可以使其工作在任一方式,以满足不同应用场合的需要。其中,方式0主要用于外接移位寄存器,以扩展单片机的I/O电路;方式1多用于双机之间或与外设电路的通信;方式2,3除有方式l的功能外,还可用作多机通信,以构成分布式多微机系统。

串行端口有两个控制寄存器,用来设置工作方式、发送或接收的状态、特征位、数据传送的波特率(每秒传送的位数)以及作为中断标志等。

串行端口有一个数据寄存器SBUF(在特殊功能寄存器中的字节地址为99H),该寄存器为发送和接收所共同。发送时,只写不读;接收时,只读不写。在一定条件下,向阳UF写入数据就启动了发送过程;读SBUf就启动了接收过程。

串行通信的波特率可以程控设定。在不同工作方式中,由时钟振荡频率的分频值或由定时器Tl的定时溢出时间确定,使用十分方便灵活。

2.串行端口的工作方式

①方式0

8位移位寄存器输入/输出方式。多用于外接移位寄存器以扩展I/O端口。波特率固定为fosc/12。其中,fosc为时钟频率。

在方式0中,串行端口作为输出时,只要向串行缓冲器SBUF写入一字节数据后,串行端口就把此8位数据以等的波特率,从RXD引脚逐位输出(从低位到高位);此时,TXD输出频率为fosc/12的同步移位脉冲。数据发送前,仅管不使用中断,中断标志TI还必须清零,8位数据发送完后,TI自动置1。如要再发送,必须用软件将TI清零。

串行端口作为输入时,RXD为数据输入端,TXD仍为同步信号输出端,输出频率为fosc/12的同步移位脉冲,使外部数据逐位移入RxD。当接收到8位数据(一帧)后,中断标志RI自动置。如果再接收,必须用软件先将RI清零。

串行方式0发送和接收的时序过程见下图。

②方式1

10位异步通信方式。其中,1个起始位(0),8个数据位(由低位到高位)和1个停止位(1)。波特率由定时器T1的溢出率和SMOD位的状态确定。

一条写SBUF指令就可启动数据发送过程。在发送移位时钟(由波特率确定)的同步下,从TxD 先送出起始位,然后是8位数据位,最后是停止位。这样的一帧10位数据发送完后,中断标志TI置位。

在允许接收的条件下(REN=1),当RXD出现由1到O的负跳变时,即被当成是串行发送来的一帧数据的起始位,从而启动一次接收过程。当8位数据接收完,并检测到高电乎停止位后,即把接收到的8位数据装入SBUF,置位RI,一帧数据的接收过程就完成了。

方式1的数据传送波特率可以编程设置,使用范围宽,其计算式为:

波特率=2SMOD/32×(定时器T1的溢出率)

其中,SMOD是控制寄存器PCON中的一位程控位,其取值有0和l两种状态。显然,当SMOD =0时,波特率=1/32(定时器Tl溢出率),而当SMOD=1时,波特率=1/16(定时器T1溢出率)。所谓定时器的溢出率,就是指定时器一秒钟内的溢出次数。波特率的算法,以及要求一定波特率时定时器定时初值的求法,后面将详细讨论。·

串行方式1的发送和接收过程的时序见下图。

③方式2,3

11位异步通信方式。其中,1个起始位(0),8个数据位(由低位到高位),1个附加的第9

位和1个停止住(1)。方式2和方式3除波特率不同外,其它性能完全相同。方式2,3的发送、接收时序见下图。

由图可见,方式2和方式3与方式l的操作过程基本相同,主要差别在于方式2,3有第9位数据。

发送时,发送机的这第9位数据来自该机SCON中的TB8,而接收机将接收到的这第9位数据送入本机SCON中的RB8。这个第9位数据通常用作数据的奇偶检验位,或在多机通信中作为地址/数据的特征位。

方式2和方式3的波特率计算式如下:

方式2的波特率=2SMOD/64×fosc

方式3的波特率=2SMOD/32×定时器T1的溢出率

由此可见,在晶振时钟频率一定的条件下,方式2只有两种波特率,而方式3可通过编程设

置成多种波特率,这正是这两种方式的差别所在。

3.串行端口的控制寄存器

串行端口共有2个控制寄存器SCON和PCON,用以设置串行端口的工作方式、接收/发送的运行状态、接收/发送数据的特征、波特率的大小,以及作为运行的中断标志等。

关于串行口的功能及应用,在后面的串行通信实便讲解中我们还会与大家讲解。

AT89C51单片机的基本结构和工作原理

AT89C51单片机的主要工作特性: ·内含4KB的FLASH存储器,擦写次数1000次; ·内含28字节的RAM; ·具有32根可编程I/O线; ·具有2个16位可编程定时器; ·具有6个中断源、5个中断矢量、2级优先权的中断结构; ·具有1个全双工的可编程串行通信接口; ·具有一个数据指针DPTR; ·两种低功耗工作模式,即空闲模式和掉电模式; ·具有可编程的3级程序锁定定位; AT89C51的工作电源电压为5(1±0.2)V且典型值为5V,最高工作频率为24MHz. AT89C51各部分的组成及功能: 1.单片机的中央处理器(CPU)是单片机的核心,完成运算和操作控制,主要包括运算器和控制器两部分。

(1)运算器 运算器主要用来实现算术、逻辑运算和位操作。其中包括算术和逻辑运算单元ALU、累加器ACC、B寄存器、程序状态字PSW和两个暂存器等。 ALU是运算电路的核心,实质上是一个全加器,完成基本的算术和逻辑运算。算术运算包括加、减、乘、除、增量、减量、BCD码运算;逻辑运算包括“与”、“或”、“异或”、左移位、右移位和半字节交换,以及位操作中的位置位、位复位等。 暂存器1和暂存器2是ALU的两个输入,用于暂存参与运算的数据。ALU的输出也是两个:一个是累加器,数据经运算后,其结果又通过内部总线返回到累加器;另一个是程序状态字PSW,用于存储运算和操作结果的状态。 累加器是CPU使用最频繁的一个寄存器。ACC既是ALU处理数据的来源,又是ALU运算结果的存放单元。单片机与片外RAM或I/O扩展口进行数据交换必须通过ACC来进行。 B寄存器在乘法和除法指令中作为ALU的输入之一,另一个输入来自ACC。运算结果存于AB寄存器中。 (2)控制器 控制器是识别指令并根据指令性质协调计算机内各组成单元进行工作的部件,主要包括程序计数器PC、PC增量器、指令寄存器、指令译码器、定时及控制逻辑电路等,其功能是控制指令的读入、译码和执行,并对指令执行过程进行定时和逻辑控制。AT89C51单片机中,PC是一个16位的计数器,可对64KB程序存储器进行寻址。复位时PC的内容是0000H. (3)存储器 单片机内部的存储器分为程序存储器和数据存储器。AT89C51单片机的程序存储器采用4KB的快速擦写存储器Flash Memory,编程和擦除完全是电器实现。 (4)外围接口电路 AT89C51单片机的外围接口电路主要包括:4个可编程并行I/O口,1个可编程串行口,2个16位的可编程定时器以及中断系统等。 AT89C51的工作原理: 1.引脚排列及功能 AT89C51的封装形式有PDIP,TQFP,PLCC等,现以PDIP为例。 (1)I/O口线 ·P0口 8位、漏极开路的双向I/O口。 当使用片外存储器及外扩I/O口时,P0口作为低字节地址/数据复用线。在编程时,P0口可用于接收指令代码字节;程序校验时,可输出指令字节。P0口也可做通用I/O口使用,但需加上拉电阻。作为普通输入时,应输出锁存器配置1。P0口可驱动8个TTL负载。 ·P1口 8位、准双向I/O口,具有内部上拉电阻。 P1口是为用户准备的I/O双向口。在编程和校验时,可用作输入低8位地址。用作输入时,应先将输出锁存器置1。P1口可驱动4个TTL负载。 ·P2 8位、准双向I/O口,具有内部上拉电阻。 当使用外存储器或外扩I/O口时,P2口输出高8位地址。在编程和校验时,P2口接收高字节地址和某些控制信号。 ·P3 8位、准双向I/O口,具有内部上拉电阻。 P3口可作为普通I/O口。用作输入时,应先将输出锁存器置1。在编程/校验时,P3口接收某些控制信号。它可驱动4个TTL负载。 (2)控制信号线

51单片机的串行口扩展方法

51单片机的串行口扩展方法 -------------------------------------------------------------------------------- 摘要:在以单片机为核心的多级分布式系统中,常常需要扩展单片机的串行通信口,本文分别介绍了基于SP2538专用串行口扩展芯片及Intel8251的两种串行口扩展方法,并给出了实际的硬件电路原理及相应的通信程序段。 关键词:串口扩展;单片机;SP2538;Intel8251 1 引言 在研究采场瓦斯积聚模拟试验台的过程中,笔者设计了主从式多机采控系统结构。主从式多机控制系统是实时控制系统中较为普遍的结构形式,它具有可靠性高,结构灵活等优点。当选用单串口51单片机构成这种主从式多机系统时,51单片机一方面可能要和主机Computer通信,一方面又要和下位机通信,这时就需要扩展串行通道。本文具体介绍了两种串行通道的扩展方法。 2 串行口的扩展方法 常用的标准51单片机内部仅含有一个可编程的全双工串行通信接口,具有UART的全部功能。该接口电路不仅能同时进行数据的发送和接收,也可作为一个同步移位寄存器使用。当以此类型单片机构成分布式多级应用系统时,器件本身的串口资源就不够用了。笔者在实际开发中,查阅了有关资料,总结出如下两种常用而有效的串行通道扩展方法。 2.1 基于SP2538的扩展方法 SP2538是专用低功耗串行口扩展芯片,该芯片主要是为解决当前基于UART串口通信的外围智能模块及器件较多,而单片机或DSP原有的UART串口又过少的问题而推出的。利用该器件可将现有单片机或DSP的单串口扩展至5个全双工串口。使用方法简单、高效。 在应用SP2538扩展串行通道时,母串口波特率K1=2880*Fosc_in,单位是MHz,且Fosc_in 小于20.0MHz, 在SP2538输入时钟Fosc_in =20.0MHz时母串口可自适应上位机的56000bps 和57600bps两种标准波特率输入。子串口波特率K2=480*Fosc_in。 母串口和所有子串口都是TTL电平接口,可直接匹配其他单片机或TTL数字电路,如需连接PC机则必须增加电平转换芯片如MAX202 、MAX232 等。SP2538具有内置的上电复位电路和可关闭的看门狗*电路。上位机写命令字0x10可实现喂狗,写命令字0x15关闭看门狗,初次上电后看门狗处于激活状态或写命令字0x20激活看门狗*功能。上位机可通过芯片复位指令0x35在任何时候让芯片进行指令复位,也可通过芯片睡眠指令0x55在任何时候让芯片进入微功耗睡眠模式以降低系统功耗。初次上电后芯片不会自行进入睡眠模式,但只能由上位机通过母串口任意发送一个字节数据将其唤醒,其他子串口不具备这一功能。 图(1)是AT89C52单片机与SP2538的电路连接,图中,AT89C52的全双工串口与SP2538的母串口5相连,该串口同时也作为命令/数据口。SP2538的ADRI0、ADRI1、ADRI2分别与AT89C52的P2.3、P2.4、P2.5口相连,可用于选择发送数据是选择相应的串口0~4;ADRO0、ADRO1、ADRO2与P2.0、P2.1、P2.2相连,用于判断接收的数据来自哪一个串口。SP2538的时钟频率选为20.0MHZ,此时母串口5的波特率为57600bps,串口0~4的波特率为9600bps。

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单片机来实现一个主从式

第7章 AT89C51单片机的串行口

第7章 AT89C51单片机的串行口 1.帧格式为1个起始位,8个数据位和1个停止位的异步串行通信方式是方式。 答:1。 2.在串行通信中,收发双方对波特率的设定应该是的。 答:相等。 3.下列选项中,是正确的。 A.串行口通信的第9数据位的功能可由用户定义 B.发送数据的第9数据位的内容是在SCON寄存器的TB8位中预先准备好的C.串行通信帧发送时,指令把TB8位的状态送入发送SBUF中 D.串行通信接收到的第9位数据送SCON寄存器的RB8中保存 E.串行口方式1的波特率是可变的,通过定时器/计数器T1的溢出率设定 答:(A)对(B)对(C)错(D)对(E)对。 4.通过串行口发送或接收数据时,在程序中应使用。 A.MOVC指令B.MOVX指令C.MOV指令D.XCHD指令 答:(C)MOV指令。 5.串行口工作方式1的波特率是。 A.固定的,为f osc/32 B.固定的,为f osc/16 C.可变的,通过定时器/计数器T1的溢出率设定D.固定的,为f osc/64 答:(C)。 6.在异步串行通信中,接收方是如何知道发送方开始发送数据的? 答:当接收方检测到RXD引脚上的有效的负跳变时,即可知道发送方开始发送数据。 7.串行口有几种工作方式?有几种帧格式?各种工作方式的波特率如何确定?答:串行口有4种工作方式:方式0、方式1、方式2、方式3。 有3种帧格式,方式2和3具有相同的帧格式。 方式0的发送和接收都以fosc/12为固定波特率。 方式1的波特率=2SMOD/32×定时器T1的溢出率。 方式2的波特率=2SMOD/64×fosc。 方式3的波特率=2SMOD/32×定时器T1的溢出率。 8.假定串行口串行发送的字符格式为1个起始位、8个数据位、1个奇校验位、1个停止位,请画出传送字符“B”(42H)的帧格式。 答:传送的字符“B”的帧格式如图所示(先低位后高位)。 起始位0 1 0 0 0 0 1 0 校验位停止位

C51单片机和电脑串口通信电路图

C51单片机和电脑串口通信电路图与源码 51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。 串口通讯的硬件电路如上图所示 在制作电路前我们先来看看要用的MAX232,这里我们不去具体讨论它,只要知道它是TTL和RS232电平相互转换的芯片和基本的引脚接线功能就行了。通常我会用两个小功率晶体管加少量的电路去替换MAX232,可以省一点,效果也不错,下图就是MAX232的基本接线图。

按图7-3加上MAX232就可以了。这大热天的拿烙铁焊焊,还真的是热气迫人来呀:P串口座用DB9的母头,这样就可以用买来的PC串口延长线进行和电脑相连接,也可以直接接到电脑com口上。

为了能够在电脑端看到单片机发出的数据,我们必须借助一个WINDOWS软件进行观察,这里我们利用一个免费的电脑串口调试软件。本串口软件在本网站https://www.doczj.com/doc/d58841953.html,可以找到 软件界面如上图,我们先要设置一下串口通讯的参数,将波特率调整为4800,勾选十六进制显示。串口选择为COM1,当然将网站提供的51单片机实验板的串口也要和电脑的COM1连接,将烧写有以下程序的单片机插入单片机实验板的万能插座中,并接通51单片机实验板的电源。

51单片机课后答案(张毅刚)第7章部分习题答案

第7章MCS-51的串行口 1.串行数据传送的主要优点和用途是什么? 答:串行数据传送的主要优点是硬件接口简单,接口端口少(2个)。主要用于多个单片机系统之间的数据通信。 2.简述串行口接收和发送数据的过程。 答:以方式一为例。发送:数据位由TXT端输出,发送1帧信息为10为,当CPU执行1条数据写发送缓冲器SBUF的指令,就启动发送。发送开始时,内部发送控制信号/SEND 变为有效,将起始位想TXD输出,此后,每经过1个TX时钟周期,便产生1个移位脉冲,并由TXD输出1个数据位。8位数据位全部完毕后,置1中断标志位TI,然后/SEND信号失效。接收:当检测到起始位的负跳变时,则开始接收。接受时,定时控制信号有2种,一种是位检测器采样脉冲,它的频率是RX时钟的16倍。也就是在1位数据期间,有16个采样脉冲,以波特率的16倍的速率采样RXD引脚状态,当采样到RXD端从1到0的跳变时就启动检测器,接收的值是3次连续采样,取其中2次相同的值,以确认是否是真正的起始位的开始,这样能较好地消除干扰引起的影响,以保证可靠无误的开始接受数据。 3.帧格式为1个起始位,8个数据位和1个停止位的异步串行通信方式是方式(1 )。 4.串行口有几种工作方式?有几种帧格式?各种工作方式的波特率如何确定? 答:串行口有3种工作方式:方式0、方式1、方式2、方式3;有3种帧格式:方式0为8位数据,方式1为8位数据、起始位、终止位,方式2和3具有相同的帧格式,为9位数据、起始位、终止位;方式0的发送和接收都以fosc/12为固定波特率,方式1的波特率=2SMOD/32×定时器T1的溢出率,方式2的波特率=2SMOD/64×fosc,方式3的波特率=2SMOD/32×定时器T1的溢出率。 5.假定串行口串行发送的字符格式为1个起始位,8个数据位,1个奇校验位,1个停止位,请画出传送字符“A”的帧格式。 答:“A”的AS CⅡ码为“01000001” 从左向右:0,1,0,0,0,0,0,1,0,0, 1 起始位低位高位奇偶位终止位 6.判断下列说法是否正确: 答:(A)串行口通讯的第9数据位的功能可由用户定义。(对) (B)发送数据的第9数据位的内容在SCON寄存器的TB8位中预先准备好的。(对)(C)串行通讯帧发送时,指令把TB8位的状态送入发送SBUF中。(错) (D)串行通讯接收到的第9位数据送SCON寄存器的RB8中保存。(对) (E)串行口方式1的波特率是可变的,通过定时器/计数器T1的溢出率设定。(对) 7.通过串行口发送或接收数据时,在程序中应使用:

MCS-51单片机串行接口

第七章MCS-51单片机串行接口 第一节串行通信的基本概念 (一)学习要求 1.掌握串行通信的基本概念。 2. 掌握异步通信和同步通信的区别。 (二)内容提要 一:基本概念及分类 串行通信是将数据的各位一位一位地依次传送。适合于计算机之间、计算机与外部设备之间的远距离通信。 串行通信从传输方式分为: 单工方式、半双工方式、全双工方式。 从接收方式来说,串行通信有两种方式: 异步通信方式、同步通信方式。 二:串行口的功能 MCS-51单片机中的异步通信串行接口能方便地与其他计算机或传送信息的外围设备(如串行打印机、CPU终端等)实现双机、多机通信。 串行口有4种工作方式,见表7-1。方式0并不用于通信,而是通过外接移位寄存器芯片实现扩展并行I/O接口的功能。该方式又称为移位寄存器方式。方式1、方式2、方式3都是异步通信方式。方式1是8位异步通信接口。一帧信息由10位组成,其格式见图7-2a。方式1用于双机串行通信。方式2、方式3都是9位异步通信接口、一帧信息中包括9位数据,1位起始位,1位停止位,其格式见图7-2b。方式2、方式3的区别在于波特率不同,方式2、方式3主要用于多机通信,也可用于双机通信。 表7-1 (三)习题与思考题 1、什么是并行通信?什么是串行通信?各有何优缺点? 答:并行通信指数据的各位同时传输的通信方式,串行通信是指各位数据逐位顺序传输的通信方式。 2、什么是异步通信?什么是同步通信?各有何优缺点? 3、什么是波特率?某异步串行通信接口每分钟传送1800个字符,每个字符由11位组成,请计算出传送波特率。 第二节MCS-51串行接口的组成 (一)学习要求

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 -

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; }

CD4052 单片机串行口扩展技术应用

CD4052 单片机串行口扩展技术应用 CD4052 是一种数字控制的模拟数据选择/ 分配器,本文将它用于UART串口扩展,解决了普通单片机UART串口太少的问题。文中给出该器件的主要特性、引脚说明及电气特性,并以A T89C51 单片机为例给出多串口扩展应用电路。 1 概述 当前,以单片机为核心构成的智能化测控系统及电子产品不断涌现,为了满足数字化及智能化要求,许多外围电路功能模块、部件、器件及传感器也具备了UART 串口通信功能,而现阶段的8 位、16 位、32位单片机却大部分仅提供一个UART 串口,这样就很难满足系统中一方面要与具有UART 功能的串口部件通信,另一方面又要与上位机通信的要求。利用CD4052 做多串口扩展器,可很好地解决此问题。 2 封装及引脚功能 该器件具有SOP、SOIC、TSSOP和PDIP四种封装形式,皆是16 个引脚。图1 所示为其PDIP封装引脚分布图,图2 是CD4052 的逻辑图,数字控制真值表见表1。 图1 CD4052PDIP引脚分布图 3 工作特性 CD4052 模拟数据选择/ 分配器是数字控制的模拟开关,具有低导通阻抗和非常低的关断泄漏电流。315V 的数字信号可以控制15VP- P 的模拟信号。例如,若VDD = 5V , VSS = 0V , VEE = - 5V ,则的数字信号可以控制- 5V + 5V 的模拟信号输入输出。数据选择器在整个VDDVSS 和VDDVEE 范围具有非常低的静态功耗,而且与控制信号的逻辑状态无关。 图2 CD4052 的逻辑图

表1 真值表 CD4052 是一个独立的4 通道数据选择器,具有二进制控制输入端A、B 和一个禁止输入INH。A、B的四种二进制组合状态用来在四对通道中选择其中的一对,当逻辑“1”加到INH 输入端时,所有的通道都关闭。CD4052 的器件特性为: 1) 宽范围的数字和模拟信号电平:数字315V ,模拟可达15VP- P。 2) 低导通阻抗:在VDD - VEE = 15V 的条件下,整个15V P - P信号输入范围的典型值为80Ω。

51单片机与串口通信代码

51单片机与串口通信代码 2011年04月22日 17:18 本站整理作者:佚名用户评论(0) 关键字:串口通信(35) 串口调试 1. 发送:向总线上发命令 2. 接收:从总线接收命令,并分析是地址还是数据。 3. 定时发送:从内存中取数并向主机发送. 经过调试,以上功能基本实现,目前可以通过上位机对单片机进行实时控制。 程序如下: //这是一个单片机C51串口接收(中断)和发送例程,可以用来测试51单片机的中断接收 //和查询发送,另外我觉得发送没有必要用中断,因为程序的开销是一样的 #i nclude #i nclude #i nclude #define INBUF_LEN 4 //数据长度 unsigned char inbuf1[INBUF_LEN]; unsigned char checksum,count3 , flag,temp,ch; bit read_flag=0; sbit cp=P1^1; sbit DIR=P1^2; int i; unsigned int xdata *RAMDATA; /*定义RAM地址指针*/ unsigned char a[6] ={0x11,0x22,0x33,0x44,0x55,0x66} ; void init_serialcomm(void) { SCON=0x50; //在11.0592MHz下,设置串行口波特率为9600,方式1,并允许接收

PCON=0x00; ES=1; TMOD=0x21; //定时器工作于方式2,自动装载方式 TH0=(65536-1000)%256; TL0=(65536-1000)/256; TL1=0xfd; TH1=0xfd; ET0=1; TR0=1; TR1=1; // TI=0; EA=1; // TI=1; RAMDATA=0x1F45; } void serial () interrupt 4 using 3 { if(RI) { RI=0; ch=SBUF; TI=1; //置SBUF空 switch(ch) { case 0x01 :printf("A"); TI=0;break; case 0x02 :printf("B"); TI=0;break; case 0x03 :printf("C"); TI=0;break;

AT89C51单片机串行输出

来源:《单片机与嵌入式系统应用》 摘要:介绍使用AT89C51单片机扩展高速串行同步移位输出口的方法,给出基于分立TTL 元器件和可编程逻辑器件PLD两种电路的实现方案,在LED点阵显示屏系统中已得到应用。 关键词:串行口 单片机可编程逻辑器件 AT89C51(与MCS-51兼容)单片机的串行口在方式0工作状态下,使用移位寄存器芯片可以扩展多个8位并行I/O口。在LED点阵显示屏应用系统中,一般都采用数据同步移位输出方式,并使用移位寄存器芯片(如74LS595)扩展并行I/O口驱动LED点阵显示。 LED点阵显示采用扫描方式,为不产生闪烁感,每秒需要传送50屏点阵显示数据,因此有大量的数据要通过同步移位的方式送到显示驱动电路部分,这就要求单片机能够快速地输出数据。AT89C51单片机的串行口在方式0工作状态下,数据以fosc/12的波特率输出,1个字节数据写入SBUF后,需检查中断标志位TI是否为“1”并清“0”TI或延时几个机器周期后才能继续写入了一个数据,输出速度慢。在LED点阵显示屏应用系统中,系统与PC机之间的通讯需要使用单片机的串行口,显示数据的同步移位输出口只有另外扩展。本文介绍的高速串行同步移位输出口(以下简称扩展串行口)电路,采用模块化设计,给出基于TTL和PLD两种电路的实现方案,波特率提高到fosc,数据输出不需要等待或延时。 一、扩展串行口与单片机的连接 扩展串行口电路框图如图1所示。与并行存储器芯片类似,扩展串行口被视为一个外部RAM地址单元,直接挂接在AT89C51的外部数据总线上,D0~D7为数据线,CE为片选信号,WE为写脉冲信号,也是扩展串行口的输出控制信号。AT89C51外接晶体振荡器的振荡信号经二个与非门整形后为扩展串行口提供时钟脉冲XTAL2。DAT和CLK分别是扩展串行口的数据输出端和同步移位脉冲输出端。

51单片机和计算机之间实现串口通信的电路图

51单片机和计算机之间实现串口通信的电路图 串口通讯参考程序如下: 来源:深入浅出AVR单片机 #include unsigned char UART_RX; //定义串口接收数据变量 unsigned char RX_flag; //定义穿行接收标记 /**************************************************************************************** ***** 函数名:UART串口初始化函数 调用:UART_init(); 参数:无 返回值:无 结果:启动UART串口接收中断,允许串口接收,启动T/C1产生波特率(占用) 备注:振荡晶体为12MHz,PC串口端设置[ 4800,8,无,1,无] /**************************************************************************************** ******/ void UART_init (void){ EA = 1; //允许总中断(如不使用中断,可用//屏蔽) ES = 1; //允许UART串口的中断 TMOD = 0x20; //定时器T/C1工作方式2 SCON = 0x50; //串口工作方式1,允许串口接收(SCON = 0x40 时禁止串口接收) TH1 = 0xF3; //定时器初值高8位设置 TL1 = 0xF3; //定时器初值低8位设置 PCON = 0x80; //波特率倍频(屏蔽本句波特率为2400) TR1 = 1; //定时器启动 } /**************************************************************************************** ******/ /**************************************************************************************** ***** 函数名:UART串口接收中断处理函数 调用:[SBUF收到数据后中断处理] 参数:无 返回值:无 结果:UART串口接收到数据时产生中断,用户对数据进行处理(并发送回去)备注:过长的处理程序会影响后面数据的接收

基于单片机的双机串行通信

河南机电高等专科学校2015-2016学年第1学期通信实训报告 系别:电子通信工程系 班级: xxxxxx 学号: 13xxxxxxxxx 姓名: xxxxxxx 2015年12月

基于51单片机的双机串行通信 摘要:串行通信是单片机的一个重要应用,本次课程设计就是要利用单片机来完成一个系统,实现爽片单片机床航通信,通信的结果使用数码管进行显示,数码管采用查表方式显示,两个单片机之间采用RS-232进行双击通信。在通信过程中,使用通信协议进行通信。 关键字:通信双机 一、总体设计 1设计目的 1.通过设计相关模块充分熟悉51单片机的最小系统的组成和原理; 2.通过软件仿真熟悉keil和proteus的配合使用; 3.通过软件编程熟悉51的C51编程规范; 4.通过实际的硬件电路搭设提高实际动手能力。 2.设计要求: 两片单片机之间进行串行通信,A机将0x06发送给B机,在B机的数码管上静态显示1,B机将0~f动态循环发送到A机,并在其数码管上显示。 3.设计方案: 软件部分,通过通信协议进行发送接收,A机先送0x06(B机数码管显示1)给B机(B机静态显示),当从机接收到后,向B机发送代表0-f的数码管编码数组。B收到0x06后就把数码表TAB[16]中的数据送给从机。 二、硬件设计 单片机串行通信功能 计算机与外界的信息交换称为通信,常用的通信方式有两种:并行通信和串行通信。51单片机用4个接口与外界进行数据输入与数据输出就是并行通信,并行通信的特点是传输信号的速度快,但所用的信号线较多,成本高,传输的距离较近。串行通信的特点是只用两条信号线(一条信号线,再加一条地线作为信号回路)即可完成通信,成本低,传输的距离较远。 51单片机的串行接口是一个全双工的接口,它可以作为UART(通用异步接受和发送器)用,也可以作为同步移位寄存器用。51单片机串行接口的结构如下:

51单片机原理期末考试题

广西工学201 2011学年 2学期课程考核试 考核课单片机技卷)考核班通08082 考核类闭学生人 8 打印份 8 一、填空题(每小分,2分 1.若累加器A中的数据为67H,则PSW中的P=_1__。 2. 一个机器周期= _6_个状态周期=12个振荡周期。 3.89C51的堆栈是按照先进后出的原则进行存取的RAM区。 4. 用一条指令实现以下功能: 若A中数据不等于200,则程序转至PROM_ CJNZ A,#200H,PROM__。 5. 为了使10H—17H作工作寄存器使用RS1, RS0的取值为__1,0。 6. 89C51中21个特殊功能寄存器,其地址凡是能被8整除的都有位寻址功能。 7. 89C51单片机有片内ROM容量_4KB , RAM容量128。 8. 某串行通信中有1个起始位,8个数据位和1个停止位,应选择的异步串行通信方式为方式1。 9. 在89C51单片机初始化时,SP存放的是07H。 10. 当89C51引脚ALE信号有效时,表示从P0口稳定地送出了_数据和地信息。 四、判断题(每小题2分,共20分) 1.如果发生除法溢出错误,则PSW标志位P置1。(∨) 5.对于89C51单片机,当CPU对内部程序存储器寻址超过4K时,系统会自动在外部程序存储器中寻址(∨)。 6.外加晶振频率越高,系统运算速度也就越快,系统性能也就越好(∨)。 7. 位TF0是定时器T1的溢出中断标志位。(∨) 8.在定时器T0和外部中断1都设为高优先级时,外部中断1优先级高于定时器T0。(×) 9.子程序的返回指令是RETI ,中断程序的返回指令是RET。(×) 10.波特率是数据传输的速率,指每秒传送的字节数。(∨) 3、51有 5个中断源,有2个中断优先级,优先级由软件填写特殊功能寄存器 IP 加以选择 4、中断请求信号有电平触发和脉冲触发两种触发方式。 6、74LS273通常用来作简单输出接口扩展;而74LS244则常用来作简单输入接口扩展。 7、A/D转换器的三个重要指标是转换速度、分辨率和转换精度。 二、选择题(从备选答案中选择一个正确答案,并将代号写在括号内。每题2分,共10分) 1、MCS-51单片机外扩存储器芯片时,4个I/O口中用作数据总线的是( B )。 (A)P0和P2口(B)P0口(C)P2和P3口(D)P2口 2、访问外部数据存储器时,不起作用的信号是( C )。 WRPSENRD(D)(CA))(B)ALE (3、使用定时器T1时,有几种工作模式( C )。 (A)1种(B)2种(C)3种(D)4种 4、MCS-51响应中断时,下面哪一个条件不是必须的( C )。 A、当前指令执行完毕 B、中断是开放的 C、没有同级或高级中断服务 D、必须有RETI指令 5、当MCS-51进行多机通讯时,串行接口的工作方式应选为( C )。 (A)方式0 (B)方式1 (C)方式2 (D)方式0或方式2 三、简答题(每题15分,共30分) 1、MCS-51单片机内部有几个定时/计数器?它们由哪些寄存器组成? 答:MCS-51单片机内部有两个16位可编程的定时/计数器,简称定时器0(T0)和定时器1(T1)。它们分别由方式寄存器TMOD、控制寄存组成。TL1、TH1,TL0、TH0和数据寄存器TCON器. 一、填空题(每空1分,共20分) 1、计算机的系统总线有地址总线、控制总线和数据总线。 2、通常、单片机上电复位时PC= 0000H ,SP= 07H ;而工作寄存器则缺省采用第 00 组,这组寄存器的地址范围是从000H~007H 。 3、JZ e 的操作码地址为1000H,e=20H,它转移的目标地址为 1022H 。 4、汇编语言中可以使用伪指令,它们不是真正的指令,只是用来对汇编过程进行 某种控制进行某种控制。

51单片机串口通信的原理与应用流程解析

51单片机串口通信的原理与应用流程解析 一、原理简介 51 单片机内部有一个全双工串行接口。什么叫全双工串口呢?一般来说,只能接受或只能发送的称为单工串行;既可接收又可发送,但不能同时进行的称为半双工;能同时接收和发送的串行口称为全双工串行口。串行通信是指数据一位一位地按顺序传送的通信方式,其突出优点是只需一根传输线,可大大降低硬件成本,适合远距离通信。其缺点是传输速度较低。 与之前一样,首先我们来了解单片机串口相关的寄存器。 SBUF 寄存器:它是两个在物理上独立的接收、发送缓冲器,可同时发送、接收数据,可通过指令对SBUF 的读写来区别是对接收缓冲器的操作还是对发送缓冲器的操作。从而控制外部两条独立的收发信号线RXD(P3.0)、TXD(P3.1),同时发送、接收数据,实现全双工。 串行口控制寄存器SCON(见表1)。 表1 SCON寄存器 表中各位(从左至右为从高位到低位)含义如下。 SM0 和SM1 :串行口工作方式控制位,其定义如表2 所示。 表2 串行口工作方式控制位 其中,fOSC 为单片机的时钟频率;波特率指串行口每秒钟发送(或接收)的位数。 SM2 :多机通信控制位。该仅用于方式2 和方式3 的多机通信。其中发送机SM2 = 1(需要程序控制设置)。接收机的串行口工作于方式2 或3,SM2=1 时,只有当接收到第9 位数据(RB8)为1 时,才把接收到的前8 位数据送入SBUF,且置位RI 发出中断申请引发串行接收中断,否则会将接受到的数据放弃。当SM2=0 时,就不管第位数据是0 还是1,都将数据送入SBUF,并置位RI 发出中断申请。工作于方式0 时,SM2 必须为0。

51单片机的电子钟以及lcd1602显示器的工作原理

51单片机的电子钟以及lcd1602显示器的工作原理 基于51单片机的电子钟C语言程序 #include #include #define uchar unsigned char #define uint unsigned int /*七段共阴管显示定义*/ uchar code dispcode[ ]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F, 0xBF,0x86,0xCB,0xCF,0xEF,0xED,0xFD,0x87,0xFF, 0xDF}; /*定义并初始化变量*/ uchar seconde=0; uchar minite=0; uchar hour=12; uchar mstcnt=0; sbit P1_0=P1^0; // second 调整定义 sbit P1_1=P1^1; //minite调整定义 sbit P1_2=P1^2; //hour调整定义 /*函数声明*/ void delay(uchar k ); //延时子程序 void time_pro( ); //时间处理子程序 void display( ); //显示子程序 void keyscan( ); //键盘扫描子程序 /*****************************/ /*延时子程序*/ /****************************/ void delay (uchar k) { uchar j; while((k--)!=0) { for(j=0;j<125;j++) {;} } } /**************************/ /*时间处理子程序*/ /**************************/ void time_pro( void) {

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