PIC单片机与PC机的串行数据交换

发布者:SparkStar22最新更新时间:2012-03-15 来源: 现代电子技术 关键字:数据交换  串行通信  PIC16F877 手机看文章 扫描二维码
随时随地手机看文章

一、前言
  美国Microchip公司的PIC系列单片机是一种新型的CMOS工艺单片机,其中,有许多单片机内部带有异步通讯模块,如PIC16F877等系列芯片。单片机虽然在使用中可等同于一个CPU,但是在许多需要大量计算的运用中,还必须借助微机(PC)的强大数据处理能力,这样就必须通过通信电路实现 PIC单片机与微机间的可靠数据传输。不论PIC单片机内有没有提供串行口,在实现串行通信时都必须通过自己设计硬件电路和编写通信软件来实现,而PIC 单片机要完成较复杂的软件功能时,需利用其内部相关的特殊功能寄存器来实现。下面介绍PIC16F877与微机间进行异步串行通讯的实现方法,同时给出与微机间进行异步串行通讯的硬件接口电路、程序流程框图、单片机内通信程序等。

二、PIC16877与PC机间进行数据交换的实现
  
要实现PIC16F877与PC机间进行数据交换,在编写程序时首先要设置好USART异步通讯模块工作模式及相关寄存器,现分别介绍如下。
1PIC16F877的USART异步工作设置简介
  PIC16F877的USART与其他具有USART的PIC单片机一样,可以被设置成为与PC机进行全双工异步通讯,它是一种利用PORTC口的 RC6和RC7两个引脚作为通讯的2线制串行通讯接口。为了把PORTC口的RC6和RC7两个引脚分别设置成串行通讯接口的发送(TX)脚和接收(RX)脚,必须要把USART的接收状态和控制寄存器RCSTA的bit7(SPEN)位和TRISC寄存器的bit7置“1”,把TRISC寄存器的 bit6置“0”。为了使USART分别工作于接收或发送状态,就必须设置相应的状态寄存器和控制寄存器。在设置接收器时,要注意接收脚对接收信号的采样。接收脚RX上的数据被采样3次,通过一个三中取二逻辑检测电路来判断RX脚上的电平是高还是低,以作为采样取值。另外,要使USART工作在异步通讯方式,就必须要设置通讯的传送、接收速率即波特率,USART的波特率设置是通过控制独立的一个8位波特率发生器BRG实现的。
  
在异步工作方式下,串行通讯接口USART 采用标准的不归0(NRZ)格式(即1位起始位、8位或9位数据位及1位停止位),最常用的数据格式是8位。PIC16F877片内的8位波特率发生器 BRG可以用来驱动振荡器的时钟,产生标准的波特率频率。PIC16F877的USART发送和接收顺序是从最低位(LSB)开始。USART发送器和接收器在功能上是完全独立的,但是它们所用的数据格式和波特率必须是相同的。波特率发生器可以根据发送状态和控制寄存器TXSTA的bit2(BRGH)位设置产生2种不同的移位速度:对系统时钟16分频和64分频的波特率时钟,即设置该位在异步通讯模式为1时表示通讯为高速,为0时表示通讯为低速。要使 USART工作于异步通讯模式,可通过对发送状态和控制寄存器TXSTA的bit4(SYNC)位设置清“0”。
  
由上简述可知:PIC16F877 的USART异步工作设置主要包括对以下部件的设置:波特率发生器BRG、采样电路、异步发送器、异步接收器等。但PIC16F877的USART异步工作有2点需要说明:一是USART硬件不支持奇偶效验,但可以用软件实现(并可作为第9位数据传输);二是在CPU处于休眠工作方式时,USART不能工作在异步通讯方式。
2USART波特率发生器BRG设置
  
在异步通讯方式下,波特率发生器BRG 需要设置一个初值,以使BRG输出一个合适的波特率。在BRG设置时,其工作在高速还是低速是由发送状态寄存器和控制寄存器TXSTA的 bit2(BRCH)位进行设置的。在PIC16F877内部时钟工作模式下,设置BRG波特率寄存器SPBRG在低速和高速初值的计算公式如下:
  
BRGH=0(低速)
  
异步波特率=FOSC/(64(X+1))
  
BRGH=1(高速)
  
波特率=FOSC/(16(X+1))
  
其中,X为SPBRG寄存器的值(0~255)。
  
实际应用中,上式用于高速方式(BRGH=1)下计算波特率可以减小误差。另外,在向波特率寄存器SPBRG写入一个新值时会使BRG定时器复位(清零),由此就可保证波特率发生器BRG不需要等到定时器溢出后就可输出新的波特率。
3USART异步通讯的寄存器设置
  
实现USART异步通讯的寄存器主要有:发送状态寄存器和控制寄存器TXSTA、接收状态和控制寄存器RCSTA、波特率发生器存器SPBRG、发送数据寄存器TXREG、接收数据寄存器RCREG、外围接口中断使能寄存器PIE1和外围接口标志寄存器PIR1等。
  
1) 发送状态和控制寄存器TXSTA

  bit7  CSRC:异步方式未用;
  
bit6  TX9:发送数据长度选择位。1=选择9位数据;0=选择8位数据;
  bit5  TXEN:发送允许位。1=允许发送;0=关闭发送;
  bit4  SYNC:USART同步/异步方式选择位。1=选择同步方式;0=选择异步方式;
  bit3  此位未用;
  bit2  BRGH:高速波特率使能位。1=高速;0=低速;
  bit1  TRMT:发送移位寄存器(TSR)“空”标志位。1=TSR空;0=TSR满;
  bit0  TX9D:发送数据的第9位。[page]
  
2)接收状态和控制寄存器RCSTA

  bit6  RX9:接收数据长度选择位。1=选择接收9位数据;0=选择接收8位数据;
  bit5  SREN:单字节接收允许位。异步方式此位未用;
  Bit4  CREN:连续接收选择位。1=允许连续接收;0=禁止连续接收;
  bit3  ADDEN:地址匹配检测使能位。
    1=允许地址匹配检测,允许中断并且当RSR的D8被置1时读接收缓冲器数据;
  0=禁止地址匹配检测,接收所有字节,第9位被看作奇偶效验位;
  bit2  FERR:帧格式错标志位。
  1=帧格式错(读RCREG寄存器可对该位刷新并且准备接收下一个有效位);
  0=无帧格式错;
  bit1  OERR:越位溢出错标志位。
  
1=有溢出错,清CREN位可将此位清零;0=无溢出错;
  bit0  RX9D:接收数据的第9位,可作奇偶效验位。
  
3) 外围接口中断使能寄存器PIE1

  

bit5   RCIE:串行异步通讯接口接收中断使能位。
      1=允许USART接收中断;0=禁止USART接收中断;
   bit4   TXIE:串行异步通讯接口发送中断使能位。
       1=允许USART发送中断;0=禁止USART发送中断。
  
其余位在异步通讯中未用。
  (4)外围接口中断标志寄存器PIR1

   bit5  RCIF:异步串行通讯(USART)接口接收中断标志位;
      1= USART接收缓冲区满;0= USART接收缓冲区空;
   bit4  TXIF:异步串行通讯(USART)接口发送中断标志位;
      1= USART发送缓冲区空;0= USART发送缓冲区满。
  
其余位在异步通讯中未用。
  (5) 其他寄存器
  
波特率发生器存器SPBRG的设置请参考USRTA波特率发生器BRG的设置内容,在设置该寄存器就是根据单片机工作时钟频率确定传输数据的波特率,只要将其初值写入SPBRG寄存器即可。
  
发送数据寄存器TXREG是将单片机需要发送的数据存放的寄存器,在单片机未发送之前就必须要将备发送的数据装入该寄存器。接收数据寄存器RCREG是将单片机接收到外界数据后存放数据的寄存器,在单片机确定接收的数据无误后,将其数据存放到该寄存器中。
4PIC16F877单片机与PC机实现电平转换
  PC机的串行接口是符合EIA RS-232C规范的外部总线标准接口。RS-232C采用的是负逻辑,即逻辑"1":-5~-15 V;逻辑"0":+5~+15 V。而CMOS电平为:逻辑“1”:4.99 V,逻辑“0”:0.01 V;TTL电平的逻辑“1”和“0”则分别为2.4 V和0.4 V。因此在用RS-232C总线进行串行通信时需外接电路实现电平转换。在发送端用驱动器将TTL或CMOS电平转换为RS-232C电平,在接收端用接收器将RS-232C电平再转换为TTL或CMOS电平。这里选用了MAXIM公司的MAX232来作电平转换。MAX232属于MAXIM公司的通用串行接收/发送驱动器芯片。其外围电路简单,只需外接4个0.1 μF的电容即可,其系统硬件电路如图1所示。图中MAX232将PIC16F877的TX输出的TTL电平信号转换为RS-232C电平,输入到PC机,并将PC机输出的RS-232C电平转换为TTL电平,输出到PIC16F877单片机的RX引脚。
5PC机支持与PIC16F877进行数据交换的编程
  
本文中PC 机可与PIC16F877编程一起完成以下功能:PC机和单片机均可发送和接收数据,由PC机决定是发送还是接收;程序设定当PC机键盘输入发送指令时,PC机分别显示PC机发送的数据和单片机会送的数据;当PC机键盘输入接收指令时,PC机将接收单片机发送过来的数据,并将其数据显示。
  
在编程中,必须要注意设置PC 机与PIC16F877单片机在进行数据交换时的数据传输格式相同。通常采用的通讯协议如下:波特率为9 600 bps,8位数据位,1位停止位,无奇偶效验位。PC机发送命令给单片机,键盘输入发送命令时,控制单片机接收数据,当PC机键盘输入接收命令时,控制单片机发送数据给PC机。PC机与PIC16F877单片机进行数据交换的程序编制流程如图2所示。

[page]

  PIC16F877编程如下:
  
1)初始化设置部分

  (2)接收并返回数据部分

OVER BCFRCSTA,CREN;通信任务完成,关接收和发送允许
    要实现单片机与PC 机间的数据通讯,不仅是要连接硬件电路和对单片机进行编程,同时还需要在PC上编写数据收发的程序。通常,对于单片机与PC机间的数据通讯交换调试时,可以借助网上盛行的串口通讯调试工具,同时也可以自己编写调试程序。程序编写好后,再与上述PIC16F877一起进行操作,即可实现简易通讯数据交换。该程序编写流程框图如图3所示。程序为PC机发送数据,在数据发送后,单片机接收后并反发送回PC机。这里要注意的是:当PC机与单片机系统通信时,单片机数据存储区( RAM )内的数据是十六进制,在信号线上传输的是十六进制数的ASCII码的二进制形式;而Windows系统下使用的是ANSI码,ANSI码仅在前126个与ASCII码相同。即在Windows下接收到的是十六进制数的ASCII码的字符串,可先转换为ANSI码后再在Windows下还原为十六进制数。

三、结束语
  以上的软硬件在实践中均达到了较为理想的效果。通过单片机的使用,大大节省了硬件资源。在实际应用中,还需要在编程中注意数据的校验,这样才能保证数据在交换及输中减小误码,以提高系统的可靠性和稳定性。

参考文献

1]MICROCHIP.PIC16F8X数据手册[Z].MICROCHIP公司,2002.
[2]刘和平.PIC16F87X单片机实用软件与接口技术汇编语言及其应用[M].北京:北京航空航天大学出版社,2002.
[3]王有绪,许杰,李拉成.PIC系列单片机接口技术及应用系统设计[M].北京:北京航空航天大学出版社,2000.
[4]庄志洪,彭树生,赵惠昌.PIC单片机实验教程[M]北京: 机械工业出版社,2002.
[5]谭浩强.C程序设计[M].北京:清华大学出版社,1991.

关键字:数据交换  串行通信  PIC16F877 引用地址:PIC单片机与PC机的串行数据交换

上一篇:基于PIC18F6527的电磁继电器控制系统
下一篇:单片机在智能照明控制中的应用

推荐阅读最新更新时间:2024-03-16 12:55

PIC16F877定时器1的中断方式调试
PIC16F877单片机定时器1使用中断方式调试程序如下: #include pic.h #define uchar unsigned char #define uint unsigned int __CONFIG(0x3B31); void init(); uint intnum; void main() { init(); while(1) { /* if(intnum = 20) { intnum = 0; RD0 = !RD0; }*/ } } void init() { TRISD = 0; // PORTD = 0; //PORTD输出低电平 INTCON =
[单片机]
基于PIC16F877多路巡检控制仪的研制
1 多路巡检控制仪的硬件设计   硬件电路包括CPU、按键、LED显示器、发光二极管、A/D、D/A、增益可调放大电路、译码电路、RS-232、继电器控制电路、电源等,见图1。   电路的工作原理:仪表上电进入16路信号巡回检测状态,同时将检测的结果经过计算送入显示,并经过D/A转换送入模拟信号输出端;当某路信号与设定报警限比较超差时,使输出控制继电器动作;当有按键按下时,产生中断信号通知CPU进入参数设定状态;当PC机通过串行口给多路巡检控制仪发送通讯命令时, 产生中断信号,通知CPU进入解码状态,判断上位机传送的信息,进入不同的通讯程序;在执行完参数设定程序或通讯程序后进入16路信号巡回检测状态。在仪表运行过程中,看门狗一直监
[单片机]
基于<font color='red'>PIC16F877</font>多路巡检控制仪的研制
RS232异步串行通信USART电路设计
  AVR系列单片机都带有异步串行接口,而我们现在学习的ATmega64更是有两个串口。我们知道单片机的电平一般都是TTL电平(关于TTL电平与 CMOS电平等其他电平的区别,我们以后单独详解),而计算机的串口是RS-232电平,这两种电平不能互相匹配,所以如果将这两种电平互联,需要一个电平转换电路,本实例中使用常用的MAX232芯片,它实现RS-232电平和TTL电平的互换。   在MAX232的数据手册中,有这个芯片的典型连接电路,我们直接采用这种电路即可。关于MAX232的连接电路,其实非常简单,我们只要记住4电容(或 5电容)就可以了。这里的4电容指的是电路中只需要连接4个电容就可以;至于5电容,多出来的那个电容是连接VC
[电源管理]
RS232异步<font color='red'>串行通信</font>USART电路设计
串行通信的基础知识
  1.串行通信和并行通信   计算机与外界的信息交换称为通信。基本的通信方法有并行通信和串行通信两种。一组信息的各位数据被逐位顺序传送的通信方式称为串行通信。串行通信可通过串行接口来实现。串行通信速度慢,但传输线少,适宜长距离通信。   一组信息(通常是字节)的各位数据被同时传送的通信方法称为并行通信。并行通信依靠并行I/O接口实现。并行通信速度快,但传输线根数多,只适用于近距离(相距数公尺)的通信。   2.信息传送方向   根据信息的传送方向,串行通信可以进一步分为单工、半双工和全双工3种。信息只能单方向传送称为单工;信息能双向传送,但不能同时双向传送称为半双工;能够同时双向传送则称为全双工。 MCS-5l单片机有一
[单片机]
Windows CE.NET 4.2中PC与单片机的串行通信
在工业控制中,常需要将单片机采集到的数据传送给PC机处理、显示,并且根据处理结果给单片机发送控制命令。串行通信虽然传送速度相对较慢,但是传送成本低,对实现监视和控制,具有足够的带宽,并且没有过于复杂的编解码,实现自定义的协议也不复杂,因而在工业自动化、通信和军事等领域的应用十分广泛。随着Windows CE嵌入式操作系统在工业控制中的广泛应用,设计和实现Windows CE下PC与单片机的串行通信具有重要的意义。 1Windows CE.NET 4.2简介 Windows CE 是一个面向移动计算和嵌入式应用的操作系统,其突出优点是模块化、可定制性、完备性、实时性、通信能力强大和基于Win32应用程序编程接口。 Windows
[单片机]
Windows CE.NET 4.2中PC与单片机的<font color='red'>串行通信</font>
双机串行通信软件编程
  串行口的4种工作方式中的方式0是移位寄存器工作方式,主要用于扩展并行I/O用,并不用于串行通信。串行口的方式1~3是用于串行通信的,下面介绍串行口的方式1~3的双机串行通信软件编程。应当说明的是,下面介绍的双机串行通信的编程实际上与各种串行标准的硬件接口 电路 无关,因为采用不同的标准串行通信接口仅仅是由双机串行通信距离、传输速率以及抗干扰性能来决定的。      1.串行口方式1应用编程      例如:采用方式1进行双机串行通信,收、发双方均采用6 M Hz 晶振 ,波特率为2400 bit/s,一帧信息为10位,第0位为起始位,第1~8位为数据位,最后1位为停止位。发送方以78H、77H单元的内容为首地址,以76H、75
[单片机]
双机<font color='red'>串行通信</font>软件编程
利用OPC实现VC应用程序与PLC的数据交换
1 引言 VC(Visual C++)是功能强大的一种Windows应用程序可视化软件开发工具。VC支持面向对象的设计方法,并可以使用功能强大的微软基础类库MFC(Micro - soft foundation class)。并且由于Microsoft公司在操作市场上的垄断地位,用VC开发出来的软件稳定性好、可移植性强,而且软件与硬件相互独立 ,可以用来开发控制系统的上层管理系统。RSView32是作为一种专门用于工业控制的组态软件,不仅包含了大量图形开发工具和现成图形库,使用户能够方便的进行系统开发,而且还可以对报警、活动记录、事件、历史趋势等进行组态,是一个功能强大的工业自动化产品 ,因此可以很方便地对下层设备进行组态。在实际
[工业控制]
利用OPC实现VC应用程序与PLC的<font color='red'>数据交换</font>
RS-232接口与单片机串行通信程序
单片机的串行口是非常有用的,通过他我们可以把单片机系统的数据传回电脑处理或者接受电脑传过来的数据而进行相应的动作,下面我就给大家介绍上一下电脑的RS-232接口与单片机串行通信程序设计方法,www.51hei.com上还有很多这样的文章大家去搜索下。 RS-232简介: 在串行通讯时,要求通讯双方都采用一个标准接口,使不同的设备可以方便地连接起来进行通讯.RS-232-C接口(又称EIA RS-232-C)是目前最常用的一种串行通讯接口. ("RS-232-C"中的"-C"只不过表示RS-232的版本,所以与"RS-232"简称是一样的)它是在1970年由美国电子工业协会(EIA)联合贝尔系统,调制解调器厂家及计算机终
[单片机]
RS-232接口与单片机<font color='red'>串行通信</font>程序
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved