《电子技术应用》
您所在的位置:首页 > 测试测量 > 业界动态 > 基于LabVIEW的PIC12FX与PC模拟串行通信

基于LabVIEW的PIC12FX与PC模拟串行通信

2008-07-16
作者:刘华昌, 黄振卫

    摘  要: 基于LabVIEW平台对PC机与PIC12FX小型单片机的串行通信" title="串行通信">串行通信进行了具体分析。
    关键词: PIC12FX  LabVIEW  模拟串行通信

 

    PIC系列单片机是美国Microchip公司推出的新型CMOS工艺单片机,PIC12FX单片机是 PIC中档系列中的一款小型单片机,该单片机具有实用、低价、省电、小巧、高速等特点,是一种适合在小型设备中使用的高性价比单片机,在许多领域有相关应用。
    PIC12FX的计算功能需要借助PC机的强大数据处理功能,这就需要实现PC机与单片机之间的数据通信。串行通信是比较方便的通信方式,然而该单片机内没有提供串行口,因而实现串行通信需要自己设计硬件电路" title="硬件电路">硬件电路和通信软件实现。PC机可选用LabVIEW、Delphi、VC、VB、PowerBuilder等软件来实现串行通信,不管PC机采用哪种软件,串行通信时PC机与PIC12FX的硬件连接方式是相同的,PIC单片机的程序设计也基本相同。本文基于LabVIEW分析了PIC12FX与PC机串行通信的硬件连接及软件设计" title="软件设计">软件设计方法。
1 PIC12FX单片机硬件电路和通信软件设计
1.1 PIC12FX硬件实现方法和电路设计

    PIC12FX没有专门的通信口(RXD、TXD)及波特率发生器,需要通过I/O口来模拟串行通信口进行通信。PC机的串行接口是符合EIARS232C规范的外部总线标准接口。RS-232C采用的是负逻辑,即逻辑“1”:-5V~-15V;逻辑“0”:+5V~+15V。而CMOS电平为:逻辑“1”:4.99V,逻辑“0”:0.01V;TTL电平的逻辑“1”和“0”则分别为2.4V和0.4V。因此在用RS-232C总线进行串行通信时需外接电路实现电平转换" title="电平转换">电平转换。在发送端用驱动器将TTL或CMOS电平转换为RS-232C电平,在接收端用接收器将RS-232C电平再转换为TTL或CMOS电平。这里选用了MAXIM公司的MAX232来实现电平转换。MAX232属于MAXIM公司的通用串行接收/发送驱动器芯片。其外围电路简单,只需外接4个0.1μF的电容(104)即可,如图1所示。

                             
    图1中MAX232将PIC12FX的TX(GP1)输出的TTL电平信号转换为RS-232C电平,输入到PC机,并将PC机输出的RS-232C电平转换为TTL电平,输出到PIC12FX的RX(GP2)引脚。
1.2 PIC12FX通信软件设计
    PIC12FX 硬件电路通过RS-232C串口与PC机通信,完成数据接收和发送;由PC机决定是发送还是接收数据,控制指令与数据通信情况在PC机上" title="机上">机上显示。图2和图3分别是串行发送和接收数据的子程序流程图。

                                
    发送时,数据发送端TX为低电平并保持N秒(N=1/波特率,如波特率为9600b/s,N为104μs)作为发送起始位,随后每隔N秒发送一位数据位(1bit),最后一个数据位发送完后,TX为高电平并保持N秒作为发送停止位。接收时,接收端RX要以约N/2秒(如波特率为9 600b/s,N/2为52μs)检测一次起始位,如果检测到起始位,则在约1.5ns(如波特率为9600b/s,1.5N为156μs)检测第一位数据位,随后每N秒检测一次,接收其他的数据位,直至接收到停止位。
    发送与接收子程序清单如下:
;----------------------------
LIST                P=12FX
#INCLUDE            P12FX.INC
  CBLOCK            0X20
RTX                                
RCV                 
R_CNT                               
     ENDC
;===========================引脚定义
#DEFINE      RX      GPIO,GPIO0
#DEFINE      TX      GPIO,GPIO1
     ORG      0X000
     GOTO     MAIN
;===========================
MAIN
     BCF               STATUS,RP0
     CLRF              RCV
;===========================串口初始化
     CLRF              GPIO
     MOVLW           07H
     MOVWF           CMCON  
     BSF                STATUS,RP0
     MOVLW           01H
     MOVWF           TRISIO
;===========================接收数据
RX_START
     MOVLW           .8
     MOVWF           R_CNT
START_CHECK
     BTFSC             RX
   GOTO              START_CHECK
     CALL               DELAY1
     CALL               DELAY1
RX_DATA_START
     BTFSC             RX
     BSF                 RCV,7
     BTFSS              RX
     BCF                 RCV,7
     DECFSZ            R_CNT
     GOTO              RX_NEXT
     GOTO              TX_START
RX_NTXT
     RRF                RCV
     CALL               DELAY1
   GOTO               RX_DATA_START
;===========================发送数据
TX_START
  MOVLW            .8
  MOVWF            R_CNT
  BCF                TX
  CALL               DELAY2
TX_NEXT
  RRF                RTX
  BTFSC              STATUS,C
  BSF                TX
  BTFSS              STATUS,C
  BCF                TX
  CALL               DELAY1
  DECFSZ             R_CNT
GOTO              TX_NEXT
TX_STOP
     BSF                 TX
     CALL               DELAY1
TX_OVER               GOTO  RX_START
;===========================延时子程序
DELAY1
     MOVLW            17H
     MVWF             TEMP
LOOP1
     DECFSZ            TEMP
     GOTO              LOOP1
     RETLW             0
DELAY2
     MOVLW            1EH
     MOVWF            TEMP
LOOP2
     DECFSZ            TEMP
     GOTO              LOOP2
     RETLW             0
;-------------------------------
END
;-------------------------------
2 PC机主控端通信软件设计
    要实现单片机与PC机之间的数据通信,不仅要对硬件电路及单片机进行软件设计,还要在PC机上设计通信软件,下面以LabVIEW为例介绍其在串行通信中的软件设计。
    LabVIEW是美国国家仪器公司NI(National Instruments)推出的一种基于图形方式的集成化开发环境,是目前国际上唯一的编译型图形化编程语言(G语言),在以PC机为基础的测量和控制通信软件中得到广泛应用。在编写LabVIEW通信程序时,通过在前面板(应用程序界面)和后面板(程序的代码窗口)进行编程,前面板将后面板程序的运行结果反应出来,图4所示为PC机上串行通信的程序编写流程图。

                             
    文中分析了PIC12FX小型单片机与PC机串行通信的硬件和软件设计方法,给出了演示参考程序,在实际应用中,只要按照具体需求对该程序作相应的修改就可满足实际应用需求。随着PIC单片机越来越广泛的应用,PC机与PIC单片机之间的通信成为实际设计中必须解决的问题,本文对串行通信问题的解决具有较好的参考价值。
参考文献
[1]  Microchip. PIC12FX数据手册[S]. Microchip公司.2004.
[2]  石朝林(译).PIC单片机宏汇编与集成开发环境[M].北京:清华大学出版社,2002.
[3]  王有绪,许杰,李拉成. PIC系列单片机接口技术及应用系统设计[M].北京:北京航天航空大学出版社,2003.
[4]  邓焱,王磊.LABVIEW7.1测试技术与仪器应用[M].北京:机械工业出版社,2004.

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。