基于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.