发布企业信息

基于PIC单片机的直流电压测量计

作者:  信息来源:电子市场  2007-6-6

字体大小:  网友评论  进入论坛  

摘要:介绍了利用PIC单片机制作的直流电压测量计的基本原理,通过串行口与上位机通信,并采用VB的可视化编程技术在计算机上实时显示测量的电压值。 关键词:PIC单片机。实时显示Microchip公司推出的PIC单片机在中国的应用越来越广泛,已形成3个层次、50多个型号,并且朝着SOC(系统单片化)的方向发展。在PIC系列单片机家族...

   :介绍了利用PIC单片机制作的直流电压测量计的基本原理,通过串行口与上位机通信,并采用VB的可视化编程技术在计算机上实时显示测量的电压值。
    关键词:PIC单片机;电压测量;VB;实时显示

  Microchip公司推出的PIC单片机在中国的应用越来越广泛,已形成3个层次、50多个型号,并且朝着SOC(系统单片化)的方向发展。在PIC系列单片机家族中,具备片内ADC模块的型号很多,大多数是8位或10位的。PIC16F87X是一款比较有特色的产品,他可以实现在线调试和在线编程。28脚封装的部分型号,其内部的ADC具有5个模拟通道;40脚封装的部分型号,其内部的ADC具有8个模拟通道。利用其自带的A/D转换功能,本文设计了一种电压测量计,在一定程度上简化了外围电路的设计,使系统工作更加可靠。


1 电路设计
  如图1所示,电路的原理比较简单,系统接4 MHz晶振,被测的模拟电压信号从RA0/AN0输入;RC6/TX通过MAX232接RS232C串行口的第2脚(在9针RS232C的信号定义中,第2脚RXD是接收数据端),A/D转换后的数据通过串行口发送给计算机。由于PIC单片机的输入、输出电平为TTL电平,而PC机配置的是RS232C标准串行接口,两者电气规范不一致,为此采用电平转换专用芯片MAX232连接PC机。在测量电压的过程中只需从单片机接收数据,所以串口工作在单工传送方式。
2 单片机软件设计
  软件部分设计要实现2个功能,一个是A/D转换,另一个是把转换的数据通过串口发送给PC机。
2.1 A/D转换
  ADC模块专用的有4个完整的寄存器:ADC结果高字节寄存器ADRESH,ADC结果低字节寄存器ADRESL,0号ADC控制寄存器ADCON0和1号ADC 控制寄存器ADCON1。
    ADCON0的格式如下:


其中:ADCS1~ADCS0为A/D转换时钟及其频率选择位;
  CHS2~CHS0为A/D转换模拟通道选择位;
    转换启动控制位兼做状态位;
    ADON为A/D转换器开关位。
    ADCON1的格式如下:

其中:ADFM为A/D转换转换结果格式选择位;PCFG3~PCFG0为A/D转换引脚功能选择位。
    A/D转换流程:
  ②如果需要A/D中断功能,开放相应的中断使能位。
    ③等待所需要的采样时间。
    ④将启动控制兼状态位置1,启动A/D转换过程。
  ⑤等待A/D转换完成,可以通过查询或中断的方法来判断。
    ⑥读取A/D转换结果寄存器对ADRESH:ADRESL,如果需要,对转换中断标志清零。
2.2 串口发送数据
  与串口有关的寄存器除了和中断有关的寄存器外,我们编写程序时主要有4个:发送状态兼控制寄存器TXSTA、接收状态兼控制寄存器RCSTA、发送寄存器TXREG、波特率寄存器SPBRG。
  发送状态兼控制寄存器TXSTA格式如下:


其中:TX9D为发送数据的第9位(如果使用9位数据帧结构);
    TRMT为发送移位寄存器“空”标志;
    BRGH为高波特率选择位(异步方式下使用);
    SYNC为USART同步/异步模式选择位;
    TXEN为发送使能位;
    TX9为发送数据长度选择位;
    CSRC为时钟源选择位(异步方式下未用)。
  接收状态兼控制寄存器RCSTA格式如下:



    我们只使用了最高位SPEN(串行口使能端)。
    发送寄存器TXREG:

  TXREG是一个用户可读写的寄存器,每次用户发送的数据都是通过写入该缓冲器来实现的。
    波特率寄存器SPBRG:

    发送流程:
    ①选择合适的波特率。
  ②置SYNC=0及SPEN=1,使USART工作于异步模式。
    ③如果需要中断处理功能,置TXIE=1。
    ④如果要传送9位数据,置TX9=1。
    ⑤置TXEN=1,使USART工作于发送器方式。
  ⑥如果选择传送第9位数据,把第9位数据置入TX9D。
  ⑦把即将发送的8位数据送入TXREG并启动发送。
2.3 软件设计
  这里给出了设计流程,如图2所示。A/D转换和由串口发送数据我们都是采用了查询的方法进行设计。在程序设计中对转换结果采用了左对齐方式,忽略最低2位,也就是将10位ADC当作8位来用,降低了分辨率,但已经能够满足电压测量的需要。
  利用VB6.0中的控件MSComm,编写了一个简01单的图形界面的接收与显示程序,主代码如下:



  图形界面如图3所示,程序中使用的控件为MSComm、定时器、文本框和一个用于退出程序的按钮,可以修改程序使用其他的串行端口。代码行Text1.Text=Asc(DataIn)*0.02&"Volts DC"的作用是把从单片机得到的数据转化成可以在文本框中显示的数据,由程序控制进行实时的显示。
  从电路图中看出,测量的电压最大值可以达到5 V(电源电压),而使用8位的ADC模块得到的组合有256种(0~255),电压的最小增量为5/256=0.0195 V,所以转换后的数字量若为250,则测得的电压值为250×0.019 5=4.87 V,若数字量为255,则电压值为255×0.019 5=4.972 5 V,接近5 V,所以可以采用0.02 V的增量,对大多数应用场合已经足够了。
  此电压测量计不论在硬件还是软件上都有很大的扩展余地,可以在前面设计的基础上增加新的功能。

参考文献
[1] 李学海.PIC单片机实用教程——提高篇[M].北京:北京航空航天大学出版社,2002.
[2] 范逸之,陈立元,等.利用VisualBasic实现串并行通信技术[M].北京:清华大学出版社,2001.
分页:
Google


推荐图文

广告

电子热点图文

  • 新型太阳能充电器的研究与设计
  • 基于EDA的交通灯控制系统
  • 电子元件基础知识--半导体三极管
  • PID控制中如何整定PID参数

电子风云人物

Copyright © 2004 51base.com Inc. All rights reserved.

无忧基地 版权所有│粤ICP备06098418号│XHTML | CSS

客服:+86-755-2212 2202 工作时间:周1~5 10点~16点

感谢中国网络提供带宽支持

《网络营销技巧》