8951单片机串口通信.
PC机与单片机AT89C51的串行通信
PC机与单片机AT89C51的串行通信摘要:在Windows95下使用串口API函数实现PC机与单片机AT89C51的串口通信,重点介绍计算机采用事件驱动I/O方式的函数编程及单片机串口中断发送、接收程序的实现。
关键词:Windows95单片机AT89C51RS-232接口RS-485接口串行通信在以单片机为基础的数据采集和实时控制系统中,通过计算机中的RS-232接口进行计算机与单片机之间的命令和数据传送,就可以利用计算机对生产现场进行监测和控制。
由于计算机上的RS-232所传送的距离不超过30m,所以,在远距离的数据传送和控制时,可以用MAX485的接口转换芯片将RS-232转换成RS-485协议进行远距离传送。
在发送和接收端都进行协议转换后,RS-485协议对数据传送来说是相对透明的,所以依然可以使用计算机中的RS-232进行远距离的数据传送和控制。
在最简单的RS-232直接传送通信系统中,只要发送和接收双方同时准备好,仅用信号发送端(TXD),信号接收端(RXD)和信号地(GND)3根线即可进行通信;若以应答方式进行数据通信,可使用请求发送(RTS)、清除发送(CTS)或数据终端准备(DTR)、数据装置准备(DSR)进行硬件握手。
在Windows95下,可以很方便地使用Win32通信API函数来实现这些硬件的握手以及数据的传送。
在89C51单片机系统中,分别从P3.0和P3.1引出串口线RXD和TXD通过专用的电平转换芯片转换成RS-232接口标准的电平,这样,二者之间就可以通过RS-232接口进行数字信号的传送。
单片机也可以以直接传送或应答握手的方式进行数据通信,但由于握手方式占用其他的端口,而单片机的端口数量有限,所以,计算机与单片机的通信常采用直接传送的方式,本文将重点介绍。
1Windows95下的通信编程Windows95通信体系提供了1个改进的串行应用程序接口SAPI用来进行交互式串行通信。
(单片机原理及应用)第8章AT89C51串行通信及其应用
目录
• at89c51简介 • at89c51串行通信原理 • at89c51串行通信应用实例 • at89c51串行通信编程 • at89c51串行通信常见问题及解决方案
01 at89c51简介
at89c51单片机简介
at89c51是一种基于CMOS技术 的8位微控制器,由Atmel公司
解决方案
针对信号干扰问题,可以采取增加信 号线屏蔽、优化电源滤波等措施;针 对通信协议不匹配问题,需要统一发 送和接收设备的通信协议;针对数据 校验不通过问题,可以在数据传输过 程中加入校验码,并在接收端进行校 验。
串行通信接口电路设计问题
总结词
接口电路设计不合理可能导致串行通信性能下降或通信失败。
波特率设置
波特率是数据传输的速率, 需要根据实际情况进行合理 设置,以保证数据传输的稳
定性和正确性。
数据校验
为了防止数据传输过程中出 现错误,需要进行数据校验 ,常用的校验方法有奇偶校
验和CRC校验等。
硬件流控制
当数据传输速率较高时,可 以采用硬件流控制来保证数 据传输的稳定性,常用的硬 件流控制方式有RTS/CTS流 控制和XON/XOFF流控制。
串行通信的基本概念
串行通信是一种数据传输方式,数据在单条线路上按顺序一位一位 地传输,具有线路简单、成本低等优点。
at89c51的串行通信接口
at89c51单片机内置一个全双工的串行通信接口,可以同时进行数 据的发送和接收。
串行通信协议
包括起始位、数据位、奇偶校验位和停止位等,用于规定数据的传 输格式和顺序。
一个6向量两级中断结构。
片内振荡器和时钟电路。
89C51串口通信的四种方式及特点
1、89C51串口通信的四种方式及特点通过设置SCON可以设置串行口的工作方式,相应设置位是SM0,SM1,共有四种方式方式0:为同步移位寄存器的输入输出方式,一般用于扩展I/O口,数据位为8位,无起始停止位方式1:波特率可调的异步通信方式,数据位为10位,1位起始位,8位数据位,1位停止位方式2:波特率固定的11位异步通信方式,数据位为11位,1位起始位,8位数据位,1位停止位,1位可编程的第9位,一般用于多机通讯。
方式3:与方式2功能相同,只是波特率可调。
2、51单片机的时钟周期,状态周期,机器周期如何定义的时钟周期也叫振荡周期或晶振周期,即晶振的单位时间发出的脉冲数,一般有外部的振晶产生,发出一个脉冲的时间就是时钟周期,也就是1/12微秒。
通常也叫做系统时钟周期。
是计算机中最基本的、最小的时间单位。
在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。
例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。
完成一个基本操作所需要的时间称为机器周期。
8051系列单片机的一个机器周期同6个S周期(状态周期)组成。
3、程序状态字寄存器PSW的格式及各位功能1. CY(Carry):CY表示加法运算中的进位和减法运算中的借位,加法运算中有进位或减法运算中有借位则CY位置1,否则为0。
2. AC(Auxiliary Carry):与CY基本相同,不同的是AC表示的是低4位向高4位的进、借位。
3.F0:该位是用户自己管理的标志位,用户可以根据自己的需要来设定。
4. RS1、RS0:这两位用于选择当前工作寄存器区。
8051有8个8位寄存器R0~R7,它们在RAM中的地址可以根据用户需要来确定。
RS1 RS0:R0~R7的地址0 0:00H~07H 0 1:08H~0FH 1 0:10H~17H 1 1:18H~1FH5.OV:该位表示运算是否发生了溢出。
at89c51双机串口通信课程设计
课程设计报告书设计名称:计算机控制技术题目:AT89C51的串口通信学生姓名:XXX专业:计算机科学与技术班别:计科本XXX班学号:XXXXXXXX指导老师:XXX日期:2012 年 7月 12 日一、主要内容:本课程设计利用两片AT89C51实现双机串口通信;主机发送并显示 10 以下的随机数,从机显示该数的阶乘值,通过开关改变主机输出的数值。
设计电路并编写一个串行口方式1收发程序,实现两片AT89C51之间的通信,甲机将数据发送到乙机并显示出来,同样,乙机也可将数据发送到甲机显示出来。
二、硬件电路设计及描述1、方案选择及设计思想2、工作原理在串行通信中,数据是在两个站之间传送的。
按照数据传送方向,串行通信可分为三种制式。
1). 单工制式(Simplex)单工制式是指甲乙双方通信只能单向传送数据。
单工制式如图1所示。
发送器A接收器B图1 单工制式2). 半双工制式(Half duplex)半双工制式是指通信双方都具有发送器和接收器,双方既可发送也可接收,但接收和发送不能同时进行,即发送时就不能接收,接收时就不能发送。
半双工制式如图2所示。
发送接收发送接收A 端B端图2半双工制式单片机(主机)单片机(从机)显示发的数显示阶乘值3). 全双工制式(Full duplex)全双工制式是指通信双方均设有发送器和接收器,并且将信道划分为发送信道和接收信道,两端数据允许同时收发,因此通信效率比前两种高。
全双工制式如图3所示。
发送接收接收发送A 端B端图3 全双工制式AT89C51内部有一个可编程全双工串行通信接口。
该部件不仅能同时进行数据的发送和接收,也可作为一个同步移位寄存器使用。
下面将对其内部结构、工作方式以及波特率进行介绍。
图4 AT89C51串行口结构框图串口通信方式1 1).方式1发送方式1输出时,数据由TXD 输出,一帧信息为10位,1位起始位0,8位数据位(先低位)和1位停止位1。
当执行一条数据写发送缓冲器SBUF 的指令,就启动发送。
89C51系列单片机串口通信的四种方式极其特点
89C51系列单片机串口通信的四种方式极其特点89C51系列单片机串口通信的四种方式极其特点80C51串行通信共有4种工作方式,由串行控制寄存器SCON中SM0SM1决定.方式0是同步移位寄存器方式,帧格式8位,波特率固定:fosc/12;方式1是8位异步通信方式,帧格式10位,波特率可变:T1溢出率/n(n=32或16);方式2是9位异步通信方式,帧格式样11位,波特率固定:fosc/n(n=64或32);方式3是9位异步通信方式,帧格式11位,波特率可变:T1溢出率/n(n=32或16);方式1,2,3的区别方要表现在帧格式及波特率两个方面.方式1与方式2帧格式相同波特率不同:方式1波特率可变与T1溢出率有关;方式2波特率固定.方式1与方式3波特率相同帧格式不同:方式1帧格式10位;方式3帧格式11位.方式1,2,3通信过程完全相同,均为异步通信方式.简述8051单片机串口通信的四种方式极其特点?方式0 移位寄存器作同步传输方式,波特率固定,方式1、2 异步通信,波特率可变,应用范围广方式3 应用于多机通信89C51单片机串口通信串行窗口,是看不见敲进去的字符的。
要想看见,须再用一个串行窗口。
简述MCS-51单片机串口通信的四种方式及其特点方式0 :这种工作方式比较特殊,与常见的微型计算机的串行口不同,它又叫同步移位寄存器输出方式。
在这种方式下,数据从RXD 端串行输出或输入,同步信号从 TXD 端输出,波特率固定不变,为振荡率的 1/12 。
该方式是以 8 位数据为一帧,没有起始位和停止位,先发送或接收最低位。
方式 2 :采用这种方式可接收或发送 11 位数据,以 11 位为一帧,比方式 1 增加了一个数据位,其余相同。
第 9 个数据即 D8 位具有特别的用途,可以通过软件搂控制它,再加特殊功能寄存器SCON 中的SM2 位的配合,可使 MCS-51 单片机串行口适用于多机通信。
方式 2 的波特率固定,只有两种选择,为振荡率的1/64 或1/32 ,可由PCON 的最高位选择。
电脑与AT89S51单片机串口通信的51端程序 LCD显示
电脑与AT89S51单片机串口通信的51端程序要求在电脑上运行串口调试助手软件,在发送框输入字符,点击发送后,在下位机51系列单片机上接受并送到液晶1602上显示,求下位机的编程,实现接收PC发来的数据并在让它在1602液晶上显示.#include <reg52.h>#include <intrins.h>#define uchar unsigned char#define uint unsigned intsbit LCD_RS = P2^0;sbit LCD_RW = P2^1;sbit LCD_EN = P2^2;#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();};uchar data RXDdata[ ] = {0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20 };uchar temp,buf,m,count;bit playflag=0;uchar code cdis1[ ] = {" SERILA TRANFER "};uchar code cdis2[ ] = {" "};/**********************************************************延时子程序**********************************************************/void delay1(uint ms){uchar k;while(ms--){for(k = 0; k < 120; k++);}}/******************************************************************//*检查LCD忙状态*//*lcd_busy为1时,忙,等待。
AT89C51单片机与PC机串行通信的接口实现
AT89C51单片机与PC机串行通信的接口实现[摘要] 本文介绍了AT89C51单片机与PC机采用RS232C标准进行串行通信的接口实现。
在接口中采用MAX232作电平转换电路,简单的通信协议,PC 机用VB编程,AT89C51单片机采用中断收发方式。
文章给出了相应通信接口电路与程序。
[关键词] 通信协议RS232C 通信接口电路通信接口程序AT89C51是一种带4K字节可编程可擦除只读存储器(FLASH FPEROM)和128字节的存取数据存储器(RAM)的低电压,高性能CMOS8位微处理器。
采用了ATMEL公司的高密度、不容易丢失存储技术,与MCS-51系列的单片机兼容。
具有集成程度高、系统结构简单、价格低廉等优点被广泛应用到控制领域中。
但是在复杂的数据处理、良好的人机交互等方面不能满足需要,常采用PC 机与AT89C51单片机进行通信,AT89C51单片机(下位机)实时采集数据传送给PC机(上位机)处理,然后接收PC机处理的结果,并进行相应的控制的方式来弥补。
本文介绍单片机与PC机进行串行通信的一种接口实现。
一、接口电路的设计(一)接口逻辑电平的转换在PC机系统大都装有异步通信适配器,为标准的RS-232C接口。
RS-232C 为负逻辑,用+3V~+15V表示逻辑“0”, 用-3V~-15V表示逻辑“1”。
AT89C51单片机采用正逻辑TTL电平0和+5V.所以AT89C51与PC机通信时必须进行电平转换。
转换的方法有多种。
常采用MAXIM公司生产的专用的双向电平转换集成电路MAX232。
MAX232引脚排列与外围电路如图1所示。
图1MAX引脚及外围接口图(二)通信接口电路本文采用可靠性高的MAX232作电平转换芯片,选择其中一对发送器与接收器,PC机的串行口与MAX232的电平端口相连,MAX232的逻辑电平端口与单片机的串行口相连,接口电路如图2所示。
图2PC机与AT89C51通信接口图二、通信接口程序(一)通信协议PC机与AT89C51进行通信必须有一定的通信协议,本文采用简单的通信协议。
89C51串行口及串行通信技术
从本质上说,所有的串行接口电路都是以并行数据形式与
CPU连接,以串行数据形式与外部逻辑设备连接。它们的基 本功能是从外部逻辑设备接收串行数据,转换成并行数据后
传送给CPU,或从CPU接收并行数据,转换成串行数据后输
出到外部逻辑设备。
19
89C51具有一个全双工串行通信接口。
作用:
●作为UART使用。
也可以用作地址/数据帧的标识位,D8=1表示该帧信息传 送的是地址,D8=0表示传送的是数据。两帧信息之间可以
无间隔,也可以有间隔,且间隔时间可任意改变,间隔用
空闲位“1”来填充。
6
异步通信
图
异步通信数据格式
7
奇偶校验
是一种校验代码传输正确性的方法。根据被传
输的一组二进制代码的数位中“1”的个数是奇数或
0 1 1
1 0 1
1 2 3
9位UART,波特率可变(由T1或T2溢出率
决定)
28
(3)串行通信工作方式
方式0
方式0时,串行口为同步移位寄存器的输入输出方式。
主要用于扩展并行输入或输出口。数据由RXD(P3.0)引脚
输入或输出,同步移位脉冲由TXD(P3.1)引脚输出。发送 和接收均为8位数据,低位在先,高位在后。波特率固定为
23
●SM2,多机通信控制位,主要用于方式2和方式3。当接收机
的SM2=1时可以利用收到的RB8来控制是否激活RI(RB8=0时不
激活RI,收到的信息丢弃;RB8=1时收到的数据进入SBUF,并 激活RI,进而在中断服务中将数据从SBUF读走)。当SM2=0时,
不论收到的RB8为0和1,均可以使收到的数据进入SBUF,并激
从低位开始串行输出,数据的低位在右高位在左,在具体应用
单片机第7章89C51串行口和串行通信PPT课件
4
7.1 串行通信的概念
• 在实际工作中,计算机的CPU与外部设备之间常常要进 行信息交换,一台计算机与其他计算机之间也往往要交 换信息,所有这些信息交换均可称为通信。
• 通信方式有两种,即并行通信和串行通信。
• 通常根据信息传送的距离决定采用哪种通信方式。
• 例如,在IBM-PC机与外部设备(如打印机等)通信时, 如果距离小于30m,可采用并行通信方式;当距离大于 30m时,则要采用串行通信方式。89C51单片机具有并 行和串行二种基本通信方式。
字 同 符 步 1 字 同 符 步 2 数 据 块 ( 若 干 字 节 )校 符 验 1 校 符 验 2
起 始
结 束
➢ 在这种通信方式中,数据块内的各位数据之间没有间 隔,传输效率高;
➢ 发送、接收双方必须保持同步(使用同一时钟信号), 且数据块长度越大,对同步要求就越高。
➢ 同步通信设备复杂,成本高,一般只用在高速数字通 信系统中。
• 在同步传送时,要求用时钟来实现发送端与接收端之间的同步。为了保 证接收正确无误,发送方除了传送数据外,还要同时传送时钟信号。
• 同步传送可以提高传输速率(达56kb/s或更高),但硬件比较复杂。
返回
28.09.2020
14
2、异步通信
• 起始位(0)信号只占用一位,用来通知接收设备一个待接收的字符开始到达。线路上在不 传送字符时应保持为1。接收端不断检测线路的状态,若连续为1以后又测到一个0,就知道 发来一个新字符, 应马上准备接收。字符的起始位还被用作同步接收端的时钟,以保证以 后的接收能正确进行。
28.09.2020
1
第七章 89C51串行口及串行通信技术
• 串行通信只用一位数据线传送数据的位信号,即使加上几 条通信联络控制线,也用不了很多电缆线。因此,串行通 信适合远距离数据传送,如大型主机与其远程终端之间、 处于两地的计算机之间采用串行通信就非常经济。当然, 串行通信要求有转换数据格式、时间控制等逻辑电路,这 些电路目前已被集成在大规模集成电路中(称为可编程串 行通信控制器),使用很方便。
第5部分89C51串行口及串行通讯技术
第5部分89C51串行口及串行通讯技术第5部分 89C51串行口及串行通讯技术1、什么是串行异步通信,它有哪些作用?答:在异步通信中,数据和字符是一帧一帧地传送。
在帧格式中,一个字符由4个部分组成:起始位、数据位、奇偶校验位和停止位。
首先起始位(0)信号只占一位,用来通知接收设备一个待接收的字符开始到达;然后是5位~8位数据(规定低位在前,高位在后);下来是奇偶校验位(可省略),也可用这一位(1/0)来确定这一帧中的字符所代表信息的性质(地址/数据等);最后是停止位(1),用来表征字符的结束,是一位高电位,可以是1位、1.5位、2位。
通讯采用帧格式,无需同步字符;存在空闲位也是异步通讯的特征之一。
2、89C51单片记得串行口由哪些功能部件组成?各有什么作用?答:89C51单片机的串行接口由发送缓冲器SBUF、接收缓冲器SBUF、输入移位寄存器、串行接口控制寄存器SCON、定时器T1构成的波特率发生器等部件组成。
由发送缓冲器SBUF发送数据,接收缓冲器SBUF接收数据,串行接口通讯的工作方式选择、接收和发送控制及状态标志等均由串行接口控制寄存器SCON控制和指示,定时器T1产生串行通讯所需的波特率。
3、简述串行口接收和发送数据的过程。
答:串行接口的接收和发送是对同一地址(99H)两个物理空间的特殊功能寄存器SBUF进行读或写的。
当向SBUF发“写”命令时(执行“MOV SBUF,A”指令),即向发送缓冲器SBUF 装载并开始由TXD 引脚向外发送一数据,发送完便使发送中断标志位TI=1。
在满足串行接口接收中断标志位RI(SCON.0)=0的条件下,置允许接收位REN(SCON.4)= 1,就会接收一帧数据进入移位寄存器,并装载到接收SBUF中,同时使RI=1,当发读SBUF命令时(执行“MOV A,SBUF”指令),便由接收缓冲器SBUF取出信息通过8051内部总线送CPU。
4、89C51串行口有几种工作方式?有几种帧格式?各工作方式的波特率如何确定?答:串行接口的工作方式有4种工作方式:方式0(8位同步移位寄存器),方式1(10位异步收发),方式2(11位异步收发),方式3(11位异步收发)。
如何使用AT89C51的串口和电脑的串口进行通信原理与实验
如何使用A T89C51的串口和电脑的串口进行通信原理与实验串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到电脑端,而且也能实现电脑对单片机的控制,比如你可以把写入单片机的数据码显示在电脑上,如可以使用一个按键,当按下它时使某一个字母如:AA,通过单片机的串口将它发送到电脑上显示,起到仿真器的某些功效,站长在开发数据采集设备时就是通过串口来检查数据正确与否的。
51单片机有一个全双工的串行通讯口,所以单片机和电脑之间可以方便地进行串口通讯。
进行串行通讯时要满足一定的条件,比如电脑的串口是RS232电平的,而单片机的串口是TTL电平的,两者之间必须有一个电平转换电路,我们采用了专用芯片MAX232进行转换,虽然也可以用几个三极管进行模拟转换,但是还是用专用芯片更简单可靠。
我们采用了三线制连接串口,也就是说和电脑的9针串口只连接其中的3根线:第5脚的GND、第2脚的RXD、第3脚的TXD。
这是最简单的连接方法,但是对我们来说已经足够使用了,电路如下图所示,MAX232的第10脚和单片机的11脚连接,第9脚和单片机的10脚连接,第15脚和单片机的20脚连接。
本网站的提供的实验板上已经装配好了全部硬件。
串口通讯的硬件电路如上图所示为了能够在电脑端看到单片机发出的数据,我们必须借助一个WINDOWS软件进行观察,这里我们利用一个免费的电脑串口调试软件。
点击这里可以下载并运行这个串口调试软件这是一个绿色的软件,无需安装,可以直接在当前位置运行这个软件。
软件界面如上图,我们先要设置一下串口通讯的参数,将波特率调整为4800,勾选十六进制显示。
串口选择为COM1,当然将网站提供的51单片机实验板的串口也要和电脑的COM1连接,将烧写有以下程序的单片机插入单片机实验板的万能插座中,并接通51单片机实验板的电源,这时只要按下K1一次,在串口调试助手软件的接收区界面中就会增加一个“AF”字符,表示单片机向电脑发送“AF”字符成功。
第7章AT89S51单片机的串行口
PCONSMOD — — — GF1 GF0 PD IDL
GF1,GF0:用户可自行定义使用的通用标志位 GF1: General purpose Flag bit. GF0 :General purpose Fபைடு நூலகம்ag bit.
PD:掉电方式控制位 Power Down bit. =0:常规工作方式. =1:进入掉电方式:振荡器停振片内RAM和SRF的
例如:120字符/秒,1个字符10位, 波特率为:120×10=1200bps 平均每一位传送占用时间:Td=1/1200=0.833ms
常用的波特率有:(离散) 19200/9600/4800/2400/1200/600/300/150/100
/50, 还有10M/100M
7.1.1 与串行通信有关的寄存器
TB8:在串行工作方式2和方式3中,是要发送的第9位数据。 The 9th bit that will be transmitted in modes 2&3. Set/Cleared
by software 多机通信中: TB8=0 表示发送的是数据;
TB8=1 表示发送的是地址.
RB8:在串行工作方式2和方式3中,是收到的第9位数据.该数据来自发
REN:串行口接收允许控制位 Set/Cleared by software to Enable/Disable reception
=1 允许接收; (SETB REN) =0 禁止接收.
系统复位后,REN=0,不允许接受
SM0 SM1 SM2 REN TB8 RB8 TI RI
模式选择 多机通讯位 允许接收位 发送、接收第9位 发送、接收标志
1
1
3 Split timer mode (Timer 0) TL0 is an 8-bit Timer/Counter controlled by the
AT89C51串口通讯教程
AT89C51串口通信编程一、前言本文档是为单片机初学者写的有关串口通讯编程的说明文档。
使用的单片机硬件是最通用的AT89C51单片机,编程语言为c语言。
本文档不是系统的介绍单片机知识的教程,而是为了使您尽快掌握串口编程方法的技术说明。
本文档前几部分大量内容摘自平凡老师的单片机教程,此教程是单片机入门的良好教材,但由于那本教程是由汇编语言描述的,对于时间不充足的同学来说,学习汇编会浪费一些时间,所以我还是整理了我们要了解的内容写到了本文档中。
对于时间比较充分,也有兴趣学习汇编语言的同学可以先阅读平凡老师的“单片机教程”,然后从本文档第六部分看起。
二、单片机的基本认识一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。
在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。
而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如A/D,D/A等。
天!电脑中的CPU一块就要卖上千块钱,这么多东西做在一起,还不得买个天价!再说这块芯片也得非常大了。
不,价格并不高,从几元人民币到几十元人民币,体积也不大,一般用40脚封装,当然功能多一些单片机也有引脚比较多的,如68引脚,功能少的只有10多个或20多个引脚,有的甚至只8只引脚。
为什么会这样呢?功能有强弱,另外这种芯片的生产量很大,技术也很成熟,51系列的单片机已经做了十几年,所以价格就低了。
既然如此,单片机的功能肯定不强,干吗要学它呢?话不能这样说,实际工作中并不是任何需要计算机的场合都要求计算机有很高的性能,一个控制电冰箱温度的计算机难道要用P4?应用的关键是看是否够用,是否有很好的性能价格比。
实现一个发光二极管的闪烁体会对单片机的c语言编程买回来一块c51单片机,要想使用它首先要做必要的连线。
89C51 单片机O 口模拟串行通信的实现方法
89C51 单片机I/O 口模拟串行通信的实现方法·严天峰·目前普遍采用的MCS51 和PIC 系列单片机通常只有一个(或没有)UART异步串行通信接口,在应用系统中若需要多个串行接口(例如在多机通信系统中,主机既要和从机通信又要和终端通信)的情况下,通常的方法是扩展一片8251 或8250 通用同步/异步接收发送芯片(USART),需额外占用单片机I/O 资源。
本文介绍一种用单片机普通I/O 口实现串行通信的方法,可在单片机的最小应用系统中实现与两个以上串行接口设备的多机通信。
1.串行接口的基本通信方式.串行接口的有异步和同步两种基本通信方式。
异步通信采用用异步传送格式,如图1 所示。
数据发送和接收均将起始位和停止位作为开始和结束的标志。
在异步通信中,起始位占用一位(低电平),用来表示字符开始。
其后为7 或8 位的数据编码,第8 位通常做为奇偶校验位。
最后为停止位(高电平)用来表示字符传送结束。
上述字符格式通常作为一个串行帧,如无奇偶校验位,即为常见的N.8.1帧格式。
串行通信中,每秒传送的数据位称为波特率。
如数据传送的波特率为1200 波特,采用N.8.1 帧格式(10 位),则每秒传送字节为120 个,而字节中每一位传送时间即为波特率的倒数:T=I/1200=0.833ms。
同样,如数据传送的波特率为9600 波特,则字节中每一位传送时间为T=1/9600=0.104 ms。
根据数据传送的波特率即字节中每一位的传送时间,我们便可用普通I/O 口来模拟实现串行通信的时序。
2.硬件电路89C51 单片机通过普通I/O 口与PC 机RS232 串口实现通信的硬件接口电路如图2 所示。
由于PC 系列微机串行口为RS232C 标准接口,与输入、输出均采用TTL 电平的89C51 单片机在接口规范上不一致,因此TTL电平到RS232 接口电平的转换采用MAXIM 公司的MAX232 标准RS232接口芯片,该芯片可以用单电压(+5V)实现RS232接口逻辑“1”(-3V~15V)和逻辑“0”(+3V~15V)的电平转换。
第8章 AT89S51单片机的串行口
}
main( )
{
SCON=0x00;
EA=1;
ES=1;
nSendByte=1;
SBUF=nSendByte;
P1_0=0;
while(1);
}
/* 设置串行口为方式0*/ /* 全局中断允许 */ /* 允许串行口中断 */
//启动串口发送 // 允许串口向164串行发送数据
17
void Serial_Port( ) interrupt 4 using 0
{
TI=0;
P1_0=1;
nSendByte<<=1;
if(nSendByte==0) nSendByte =1;
SBUF=nSendByte;
delay(500);
P1_0=0;
}
18
2.方式0输入 (1)方式0输入工作原理 方式0接收,REN为允许接收控制位,REN=0,禁止接收; REN = 1,允许接收。 当向SCON寄存器写入控制字(设置为方式0,并使REN位置 “1”,同时RI = 0)时,产生一个正脉冲,串行口开始接收 数据。 引脚RXD为数据输入端,TXD为移位脉冲信号输出端,接收
RB8 = 1(控制激活RI的功能), SM2=1(只有接收到有效的停止位,RI才被 置“1”。
若不满足任何一个条件,收的数据不能被CPU读, 该帧数据将丢弃。
28
8.2.3 方式2 方式2和方式3,9位异步通信接口。每帧数据为11位,1
位起始位0,8位数据位(先低位),1位可程控为1或0的第9 位数据和1位停止位。方式2、方式3帧格式如图8-13。
表8-2 用定时器T1产生的常用波特率
fosc 12 MHz 11.0592 MHz 11.0592 MHz 11.0592 MHz 11.0592 MHz 11.0592 MHz
单片机89C51全双工串行通信汇编
单片机89C51全双工串行通信汇编有甲、乙两台单片机,以工作方式2全双工串行通信,第9位作为奇偶校验位。
编出实现以下功能的程序:甲机:将0到F的十六进制数,总共16个数存放到片内RAM中的30H~3FH,然后再将30H~3FH 中的数据发送到乙机,乙机对接收的数据进行奇偶校验,若校验正确则乙机向甲机发出“数据发送正确”的信息(现取00H作为回答信号),甲机接收到乙机的此信息再发送下一个字节。
若奇偶校验错,则乙机发出“数据发送不正确”的信息(现取FFH作为回答信号)给甲机要求甲机再次发送原数据,直到数据发送正确。
乙机:将甲机发送的数据存入乙机片内RAM的50H~5FH单元中,进行奇偶校验,并发出相应的回答信息(即00H或FFH)给甲机。
接收完了16个数据后,通过P0依次从0到F开始显示,看看是否接收到的数据是否正确。
甲机程序:ORG 0000HLJMP MAINORG 0023H ;中断入口地址LJMP SECORG 0100H ;程序开始地址MAIN: MOV SCON,#80H ;串行口工作方式2,PCON未设置,波特率不加倍MOV IE,#90H ;打开总中断和串口中断;下面绿色字体程序是将数据写入RAM中的30H~3FH单元中,如果地址单元中已经有数据,可以将这段绿色程序删掉MOV R0,#00H ;给R0赋初值(0~F)MOV R1,#30H ;给地址指针R1赋数据存放的初始地址MOV R2,#10H ;存放16个数据LOOP: MOV A,R0 ;将R0中的值赋给AACALL TAB ; 调用子程序TABMOV @R1,A ;将A中的值送R1中地址INC R0 ;R0加1取下一个数INC R1 ;R1加1取下一个数据存放地址DJNZ R2,LOOP ;是否将16个数据存放完毕,否继续跳转到LOOP存放MOV R1,#30H ;给地址指针R1赋提取数据的初始地址MOV R2,#00H ;要提取数据个数的初值MOV A,@R1 ;将R1中的内容作为地址,把该地址的内容送AMOV C,P ;取奇偶位送CMOV TB8,C ;将C送TB8MOV SBUF,A ;发送数据LJMP $ ;等待中断SEC: JBC TI,D1 ;中断响应如果是TI=1,引起的清TI跳转到D1,否则向下执行CLR RI ;中断是由RI引起的,清RIMOV A,SBUF ;将接到的数据送ACJNE A,#00H,ERR ;将A中的数据与00H比较,不相等跳转到ERR,否则向下执行D1: INC R1 ;表示接收正确,程序继续发送数据。
89c51串口通信
B=1MHz,每位数据占1s。
4. 发送过程:写入SBUF,启动发送,一帧发送结束,TI=1。 接收过程:REN=1且RI=0,启动接收,一帧接收完毕,RI=1。
TXD 发 写入 (a) 送 SBUF 时 序 RXD输出
D0
D1
D2
D3
D4
D5
D6
D7
TI 接 (b) 收 写REN=1 时 RI=0 序 RXD输入 RI
3.节电控制寄存器PCON
SMOD(PCON.7):波特率加倍控制位。 SMOD=1,波特率加倍, SMOD=0,则不加倍。
1.3 串行接口的工作方式
SM0,SM1选择四种工作方式。
一、方式0:同步移位寄存器方式。用于扩展并行I/O接口。
1. 一帧8位,无起始位和停止位。
2. RXD:数据输入/输出端。 TXD:同步脉冲输出端,每个脉冲对应一个数据位。 3. 波特率B = fosc/12 如: fosc=12MHz,
5. 移位寄存器方式举例
数据从RXD(P3.0)引脚串行输出,低位在先,高位
在后;TXD(P3.1)引脚输出移位脉冲,其频率为foc/12;
发送完毕后,中断标志位TI为1。如要发送数据,如下所示: MOV SCON,#00H ;串行口方式0 MOV SBUF,A JNB TI,$ ;将数据送出 ;等待数据发送完毕
四 串行数据传送方向
单工通讯:数据单向传送。 半双工通讯:数据可分时双向传送。 全双工通讯:可同时进行发送和接收。
发送2 串行口控制寄存器
一、1个全双工串行接口,可同时进行发送和接收。 串行接口输入/输出引脚:TXD(P3.1)、RXD(P3.0) 数据格式(P.237图):按不同方式,一帧位数 8/10/11 发送/接收时,数据皆低位在前。
AT89C51单片机的串行口
图7-3 (1)SMOD—波特率选择位
例如:方式1的波特率的计算公式为:
方式1波特率=(2SMOD/32)×定时器T1的溢出率
也称SMOD位为波特率倍增位。
(2)GF1、GF0—通用标志位 这两个标志位可供用户使用,可用软件置1或清0。两个标志位
用户应充分利用。 (3)PD—掉电方式位 若PD=1,单片机进入掉电工作方式。
(4)IDL—待机方式位 IDL=1,单片机进入待机工作方式。
7.2 串行口的4种工作方式 7.2.1 方式0 同步移位寄存器方式,常用于外接移位寄存器,以扩展并行I/O
口。 8位数据为一帧,不设起始位和停止位,先发送或接收最低位。
波特率固定为fosc/12。
帧格式如下:
1.方式0发送 当CPU执行一条将数据写入发送缓冲器SBUF的指令时,产生一个
响。若fosc=12MHz,波特率为fosc/12即1Mb/s。 (2)方式2波特率=(2SMOD/64)×fosc
若fosc=12MHz: SMOD=0 波特率=187.5kb/s; SMOD=1 波特率=375kb/s
(3)方式1或方式3时,波特率为: 波特率=(2SMOD/64)×T1的溢出率
图7-1 控制寄存器共两个:特殊功能寄存器SCON和PCON。 7.1.1 串行口控制寄存器SCON 字节地址98H,可位寻址,格式如图7-2所示。
图7-2
(1)SM0、SM1——串行口4种工作方式的选择位
表7-1 串行口的4种工作方式
SM0 SM1 方式
功能说明
0 0 0 同步移位寄存器方式(用于扩展I/O口)
RETI
;中断返回
2.方式2接收
SM0、SM1=10,且REN=1。数据由RXD端输入,接收11位信息。当 位检测到RXD从1到0的负跳变,并判断起始位有效后,开始收 一帧信息。在接收器完第9位数据后,需满足两个条件,才能 将接收到的数据送入SBUF。
89C51单片机的串口通信编程1
89C51单片机的串口通信编程1一、pc机上的串口通信编程过程如下:1.建立项目打开VC++6.0,建立一个基于对话框的MFC应用程序SCommTest(与我源代码一致,等会你会方便一点);2.在项目中插入MSComm控件选择Project菜单下Add To Project子菜单中的Components and Controls…选项,在弹出的对话框中双击Registered ActiveX Controls项(稍等一会,这个过程较慢),则所有注册过的ActiveX 控件出现在列表框中。
选择Microsoft Communications Control, version 6.0,,单击Insert按钮将它插入到我们的Project中来,接受缺省的选项。
(如果你在控件列表中看不到Microsoft Communications Control, version 6.0,那可能是你在安装VC6时没有把ActiveX一项选上,重新安装VC6,选上ActiveX 就可以了),这时在ClassView视窗中就可以看到CMSComm类了,(注意:此类在ClassWizard中看不到,重构clw文件也一样),并且在控件工具栏Controls中出现了电话图标(如图1所示),现在要做的是用鼠标将此图标拖到对话框中,程序运行后,这个图标是看不到的。
3.利用ClassWizard定义CMSComm类控制对象打开ClassWizard->Member Viariables选项卡,选择CSCommTestDlg类,为IDC_MSCOMM1添加控制变量:m_ctrlComm,这时你可以看一看,在对话框头文件中自动加入了//{{AFX_INCLUDES() #include "mscomm.h" //}}AFX_INCLUDES (这时运行程序,如果有错,那就再从头开始)。
4.在对话框中添加控件向主对话框中添加两个编辑框,一个用于接收显示数据ID为IDC_EDIT_RXDATA,另一个用于输入发送数据,ID为IDC_EDIT_TXDATA,再添加一个按钮,功能是按一次就把发送编辑框中的内容发送一次,将其ID设为IDC_BUTTON_MANUALSEND。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
RX CLOCK
RXD
起始位
D0
位检测器采样时间
D1
D2
D3
D4
D5
D6
D7
停止位
SHIFT
RI
置REN为1时,接收方器式1接检收时测序 到RXD引脚输入电平发生 负跳变时,则说明起始位有效,将其移入输入移位寄 存器,并开始接收这一帧信息的其余位。
当RI=0,且SM2=0(或接收到的停止位为1)时,将
RCV2: DJNZ R7,RCV0 ; 判断是否已读入预定的字节数
…………
; 对读入数据进行处理
2019/5/10
36
例2 用两片8位串入并出移位寄存器74HC164扩展16 位输出接口。
T1 溢出率 = fosc /{12×[256 -(TH1)]}
T1方式2,TR1=1(以启动定时器)
2019/5/10
31
2019/5/10
32
串行口初始化具体步骤:
确定T1的工作方式(编程TMOD寄存器); 计算T1的初值,装载TH1、TL1; 启动T1(编程TCON中的TR1位); 确定串行口控制(编程SCON寄存器);
T X CLOCK
写入SBUF
SEND DAT A
S1 P 1
SHIFT T XD
起始位
D0
D1
D2
D3
D4
D5
D6
D7
T B8 停止位
TI ST OP BIT GEN
先把起始位0输出到方式2T发送X时序D,然后发送移位寄存器的 输出位(D0)。每一移位脉冲都使输出移位寄存器 的各位移动一位,并由TXD引脚输出。
RCV1: MOV SCON,#10H ; 设串行口方式0并启动接收
JNB RI,$
; 等待接收一帧数据
CLR RI
; 清除接收中断标志
MOV A,SBUF
; 取缓冲器数据
INC R0
CPL F0
JB F0,RCV2
; 判断是否接收完偶数帧, 接收完则重新并行置入
DEC R7
SJMP RCV1
; 否则再接收一帧
收到的9位数据的前8位装入SBUF,Title第9位(停止位)
进入RB8,并置RI=1,向CPU请求S中iBze 断Num。ber
Date: File:
16-Mar-2009
E:\教材参编\第七章图\ch7gzsx.ddb
4
5
Revision
Sheet of Drawn By :
6
2019/5/10
D0 D1 D2 D3 D4 D5 D6 D7
D0 D1 D2 D3 D4 D5 D6 D7
P3.0 89S51
数据输入
+5V
65 9 QH 16 VCC 8 GND
移位脉冲
P3.1 P1.0
4 3 14 13 12 11 SIN
74HC165(1)
CK
S/ L
2
1
65 9 QH +5V 16 VCC 8 GND
解调器把从通信线路上收到的模拟信号转 换成数字信号。
RS-232C
DCE DTE
2019/5/10
电话网
12
RS-232C
DCE DTE
串行通信的错误校验
奇偶校验 代码和校验 循环冗余校验
传输速率与传输距离 传输速率
比特率:每秒钟传输二进制代码的位数 波特率:每秒钟调制信号变化的次数,单位是:波特 (Baud)。
写入SBUF
S6 P 2
D
SEND
SHIFT
RXD(DAT A OUT )
D0
D1
D2
D3
D4
D5
D6
D7
T XD(SHIFT CLOCK) S3P1 S6P1
TI
2019/5/10
方式0发送时序
24
方式0接收
清除SCON中的RI位
RI RECEIVE
B
SHIFT
RXD(DAT A IN)
D0
D1
RI,接收中断标志位。
方式0时,串行接收第8位数据结束时 其它方式,串行接收停止位的中间时 硬件使RI置1,发中断申请。必须在中断服务程序中 用软件将其清0。
2019/5/10
20
2、电源功能寄存器PCON (87H)
PCON (87H) SMOD
SMOD, 波特率倍增位。 在方式1、2、3时,波特率与SMOD有关: SMOD=1时,波特率提高一倍。复位时, SMOD=0。
Fosc/64或fosc/32
11位UART
可变,由定时器 控制
其中fosc为晶振频率。
2019/5/10
23
7.2.1 工作方式0
方式0
同步移位寄存器的输入输出方式。用于扩展并行输入或
输出口。数据由RXD引脚输入或输出,移位脉冲由TXD引
脚输出。8位数据。波特率为fosc/12。
方式0发1送
2
3
27
7.2.3 工作方式2、3
方式2和方式3
11位数据的异步通信。
1帧共11位
起 空始 闲位
数据位9位
停 止空 位闲
D0
D7
RB8/TB8
LSB
MSB
起始位1位,数据9位,停止位1位 方式2的波特率固定为晶振频率的1/64或1/32 方式3的波特率由定时器T1的溢出率决定
2019/5/10
28
方式2和方式3发送
2019/5/10
21
7.2 串行口的工作方式
工作方式0 工作方式1 工作方式2 工作方式3
2019/5/10
22
串行口工作方式
SM0、SM1 工作方式
00
方式0
01
方式1
10
方式2
11
方式3
功能描述
波特率
8位同步移位寄 Fosc/12 存器
10位UART
可变,由定时器 控制
11位UART
2
3
4
10位数据的异步通信。帧格式如图所示。
D
起 空始 闲位
1帧共10位 数据位8位
停 止空 位闲
D0
D7
LSB
MSB
C
方式1发送
T X CLOCK
写入SBUF
SEND DAT A
S1 P 1
B
SHIFT
T XD
起始位
D0
D1
D2
D3
D4
D5
D6
D7
停止位
TI
2019/5/10
方式1发送时序 26
方式1接收
4 3 14 13 12 11 SIN
74HC165(2)
CK
S/ L
2
1
2019/5/10
35
MOV R7,#20
; 设置读入字节数
MOV R0,#50H
; 设片内RAM指针
SETB F0
; 设置读入字节奇偶数标志
RCV0: CLR P1.0
; 允许并行置入数据
SETB P1.0
; 允许串行移位
2019/5/10
13
波特率和比特率不总是相同的,但对于基带传输, 比特率和波特率是相同的。
传输距离与传输速率的关系 传输距离随传输速率的增加而减小。
2019/5/10
14
7.1 串行口UART
串行口的结构 串行口的控制
2019/5/10
15
7.1.1 串行口的结构
内
波
部
特
总
率
线
发
生
器
方式:
并行通信 串行通信
2019/5/10
3
并行通信:数据多位同时传送
8位同时传送 1
0
接
1
发
0
收 设
1
送
1 0
设
备
0
备
询问
应答
控制简单,传输速度快,传输线较多
2019/5/10
4
串行通信:数据字节一位一位在一条传输 线上逐个传送。
接
发
收
D0
D7
送
设 备
8位顺次传送
设 备
传输线少,可利用电话网,但传送控制复杂。
SBUF 发送(99H)
逻辑门电路
发送控制器
TI
串行口中断
≥1
RI
接收控制器
SBUF 接收(99H)
移位寄存器
串 行 口 控 制 寄 存 器 SCON
TXD(P3.1)
RXD(P3.0)
2个物理上独立的接收、发送缓冲器SBUF,占用同一地 址99H ;接收器是双缓冲结构 。
2019/5/10
16
7.1.2 串行口的控制
1、串行口控制寄存器SCON (98H)
设定工作方式、接收/发送控制以及设置状态标志 SCON (98H) SM0 SM1 SM2 REN TB8 RB8 TI RI
SM0、SM1:工作方式设置位
2019/5/10
17
SM2,多机通信控制位。
主要用于方式2和方式3。对于接收机
SM2=0,收到RB8(0或1)既可使收到的数据进入SBUF,并 激活RI。
起 空始 闲位
一个字符帧 数据位
校停 验止 位位
空 下一字符 闲 起始位
LSB
2019/5/10
MSB
7
同步通信
发送方时钟与接收方时钟同步。既保持位同 步,也保持字符同步。同步方法:Βιβλιοθήκη 01101计 数据
计
算