8951单片机串口通信.
- 格式:ppt
- 大小:1.01 MB
- 文档页数:70
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用来进行交互式串行通信。
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的串口通信学生姓名: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系列单片机串口通信的四种方式极其特点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端程序要求在电脑上运行串口调试助手软件,在发送框输入字符,点击发送后,在下位机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机采用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进行通信必须有一定的通信协议,本文采用简单的通信协议。
第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位异步收发)。
如何使用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”字符成功。
AT89C51串口通信编程一、前言本文档是为单片机初学者写的有关串口通讯编程的说明文档。
使用的单片机硬件是最通用的AT89C51单片机,编程语言为c语言。
本文档不是系统的介绍单片机知识的教程,而是为了使您尽快掌握串口编程方法的技术说明。
本文档前几部分大量内容摘自平凡老师的单片机教程,此教程是单片机入门的良好教材,但由于那本教程是由汇编语言描述的,对于时间不充足的同学来说,学习汇编会浪费一些时间,所以我还是整理了我们要了解的内容写到了本文档中。
对于时间比较充分,也有兴趣学习汇编语言的同学可以先阅读平凡老师的“单片机教程”,然后从本文档第六部分看起。
二、单片机的基本认识一台能够工作的计算机要有这样几个部份构成:CPU(进行运算、控制)、RAM(数据存储)、ROM(程序存储)、输入/输出设备(例如:串行口、并行输出口等)。
在个人计算机上这些部份被分成若干块芯片,安装一个称之为主板的印刷线路板上。
而在单片机中,这些部份,全部被做到一块集成电路芯片中了,所以就称为单片(单芯片)机,而且有一些单片机中除了上述部份外,还集成了其它部份如A/D,D/A等。
天!电脑中的CPU一块就要卖上千块钱,这么多东西做在一起,还不得买个天价!再说这块芯片也得非常大了。
不,价格并不高,从几元人民币到几十元人民币,体积也不大,一般用40脚封装,当然功能多一些单片机也有引脚比较多的,如68引脚,功能少的只有10多个或20多个引脚,有的甚至只8只引脚。
为什么会这样呢?功能有强弱,另外这种芯片的生产量很大,技术也很成熟,51系列的单片机已经做了十几年,所以价格就低了。
既然如此,单片机的功能肯定不强,干吗要学它呢?话不能这样说,实际工作中并不是任何需要计算机的场合都要求计算机有很高的性能,一个控制电冰箱温度的计算机难道要用P4?应用的关键是看是否够用,是否有很好的性能价格比。
实现一个发光二极管的闪烁体会对单片机的c语言编程买回来一块c51单片机,要想使用它首先要做必要的连线。
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)的电平转换。
单片机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 ;表示接收正确,程序继续发送数据。